summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--hwc2/common/base/HwcFenceControl.cpp22
-rw-r--r--hwc2/common/base/HwcLayer.cpp61
-rw-r--r--hwc2/common/base/HwcLayer.h7
-rw-r--r--hwc2/common/base/Hwcomposer.cpp3
-rw-r--r--hwc2/common/composers/Composers.cpp16
-rw-r--r--hwc2/common/composers/Composers.h15
-rw-r--r--hwc2/common/composers/GE2DComposer.cpp33
-rw-r--r--hwc2/common/composers/GE2DComposer.h22
-rw-r--r--hwc2/common/devices/PhysicalDevice.cpp598
-rw-r--r--hwc2/common/devices/PrimaryDevice.cpp13
-rw-r--r--hwc2/common/devices/VirtualDevice.cpp14
-rw-r--r--hwc2/common/hdmi/DisplayHdmi.cpp853
-rw-r--r--hwc2/common/hdmi/DisplayHdmi.h202
-rw-r--r--hwc2/common/observers/SoftVsyncObserver.cpp18
-rw-r--r--hwc2/common/observers/SoftVsyncObserver.h3
-rw-r--r--hwc2/common/observers/UeventObserver.cpp2
-rw-r--r--hwc2/common/utils/AmVideo.cpp109
-rw-r--r--hwc2/common/utils/AmVinfo.cpp928
-rw-r--r--hwc2/common/utils/Utils.cpp89
-rw-r--r--hwc2/common/utils/Utils.h30
-rw-r--r--hwc2/include/AmVideo.h45
-rw-r--r--hwc2/include/AmVinfo.h221
-rw-r--r--hwc2/include/HwcFenceControl.h15
-rw-r--r--hwc2/include/IComposer.h16
-rw-r--r--hwc2/include/IComposerFactory.h16
-rw-r--r--hwc2/include/IDisplayDevice.h16
-rw-r--r--hwc2/include/PhysicalDevice.h33
-rw-r--r--hwc2/include/VirtualDevice.h1
-rw-r--r--hwc2/platforms/Android.mk6
-rw-r--r--tvp/LICENSE23
-rw-r--r--tvp/OmxUtil.cpp48
-rw-r--r--tvp/OmxUtil.h13
32 files changed, 2617 insertions, 874 deletions
diff --git a/hwc2/include/AmVinfo.h b/hwc2/include/AmVinfo.h
new file mode 100644
index 0000000..3f25184
--- a/dev/null
+++ b/hwc2/include/AmVinfo.h
@@ -0,0 +1,221 @@
+/*
+// Copyright (c) 2017 Amlogic
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+*/
+
+#ifndef AM_VINFO_H_
+#define AM_VINFO_H_
+#include <sys/types.h>
+
+/*
+ * !!!ATTENTATION:
+ * MOST COPY FROM KERNEL, DONT MODIFY.
+ */
+
+/*
+ * from kernel/include/driver/vout/vinfo.h
+ */
+enum vmode_e {
+ VMODE_480I = 0,
+ VMODE_480I_RPT,
+ VMODE_480CVBS,
+ VMODE_480P,
+ VMODE_480P_RPT,
+ VMODE_576I,
+ VMODE_576I_RPT,
+ VMODE_576CVBS,
+ VMODE_576P,
+ VMODE_576P_RPT,
+ VMODE_720P,
+ VMODE_720P_50HZ,
+ VMODE_768P,
+ VMODE_768P_50HZ,
+ VMODE_1080I,
+ VMODE_1080I_50HZ,
+ VMODE_1080P,
+ VMODE_1080P_30HZ,
+ VMODE_1080P_50HZ,
+ VMODE_1080P_25HZ,
+ VMODE_1080P_24HZ,
+ VMODE_4K2K_30HZ,
+ VMODE_4K2K_25HZ,
+ VMODE_4K2K_24HZ,
+ VMODE_4K2K_SMPTE,
+ VMODE_4K2K_SMPTE_25HZ,
+ VMODE_4K2K_SMPTE_30HZ,
+ VMODE_4K2K_SMPTE_50HZ,
+ VMODE_4K2K_SMPTE_50HZ_Y420,
+ VMODE_4K2K_SMPTE_60HZ,
+ VMODE_4K2K_SMPTE_60HZ_Y420,
+ VMODE_4K2K_FAKE_5G,
+ VMODE_4K2K_60HZ,
+ VMODE_4K2K_60HZ_Y420,
+ VMODE_4K2K_50HZ,
+ VMODE_4K2K_50HZ_Y420,
+ VMODE_4K2K_5G,
+ VMODE_4K1K_120HZ,
+ VMODE_4K1K_120HZ_Y420,
+ VMODE_4K1K_100HZ,
+ VMODE_4K1K_100HZ_Y420,
+ VMODE_4K05K_240HZ,
+ VMODE_4K05K_240HZ_Y420,
+ VMODE_4K05K_200HZ,
+ VMODE_4K05K_200HZ_Y420,
+ VMODE_VGA,
+ VMODE_SVGA,
+ VMODE_XGA,
+ VMODE_SXGA,
+ VMODE_WSXGA,
+ VMODE_FHDVGA,
+ VMODE_720FP50HZ, /* Extra VMODE for 3D Frame Packing */
+ VMODE_720FP60HZ,
+ VMODE_1080FP24HZ,
+ VMODE_1080FP25HZ,
+ VMODE_1080FP30HZ,
+ VMODE_1080FP50HZ,
+ VMODE_1080FP60HZ,
+ VMODE_LCD,
+ VMODE_NULL, /* null mode is used as temporary witch mode state */
+ VMODE_MAX,
+ VMODE_INIT_NULL,
+ VMODE_MASK = 0xFF,
+};
+
+enum tvmode_e {
+ TVMODE_480I = 0,
+ TVMODE_480I_RPT,
+ TVMODE_480CVBS,
+ TVMODE_480P,
+ TVMODE_480P_RPT,
+ TVMODE_576I,
+ TVMODE_576I_RPT,
+ TVMODE_576CVBS,
+ TVMODE_576P,
+ TVMODE_576P_RPT,
+ TVMODE_720P,
+ TVMODE_720P_50HZ,
+ TVMODE_768P,
+ TVMODE_768P_50HZ,
+ TVMODE_1080I,
+ TVMODE_1080I_50HZ,
+ TVMODE_1080P,
+ TVMODE_1080P_30HZ,
+ TVMODE_1080P_50HZ,
+ TVMODE_1080P_25HZ,
+ TVMODE_1080P_24HZ,
+ TVMODE_4K2K_30HZ,
+ TVMODE_4K2K_25HZ,
+ TVMODE_4K2K_24HZ,
+ TVMODE_4K2K_SMPTE,
+ TVMODE_4K2K_SMPTE_25HZ,
+ TVMODE_4K2K_SMPTE_30HZ,
+ TVMODE_4K2K_SMPTE_50HZ,
+ TVMODE_4K2K_SMPTE_50HZ_Y420,
+ TVMODE_4K2K_SMPTE_60HZ,
+ TVMODE_4K2K_SMPTE_60HZ_Y420,
+ TVMODE_4K2K_FAKE_5G,
+ TVMODE_4K2K_60HZ,
+ TVMODE_4K2K_60HZ_Y420,
+ TVMODE_4K2K_50HZ,
+ TVMODE_4K2K_50HZ_Y420,
+ TVMODE_4K2K_5G,
+ TVMODE_4K1K_120HZ,
+ TVMODE_4K1K_120HZ_Y420,
+ TVMODE_4K1K_100HZ,
+ TVMODE_4K1K_100HZ_Y420,
+ TVMODE_4K05K_240HZ,
+ TVMODE_4K05K_240HZ_Y420,
+ TVMODE_4K05K_200HZ,
+ TVMODE_4K05K_200HZ_Y420,
+ TVMODE_VGA ,
+ TVMODE_SVGA,
+ TVMODE_XGA,
+ TVMODE_SXGA,
+ TVMODE_WSXGA,
+ TVMODE_FHDVGA,
+ TVMODE_720FP50HZ, /* Extra TVMODE for 3D Frame Packing */
+ TVMODE_720FP60HZ,
+ TVMODE_1080FP24HZ,
+ TVMODE_1080FP25HZ,
+ TVMODE_1080FP30HZ,
+ TVMODE_1080FP50HZ,
+ TVMODE_1080FP60HZ,
+ TVMODE_NULL, /* null mode is used as temporary witch mode state */
+ TVMODE_MAX,
+};
+
+enum tvin_color_fmt_e {
+ TVIN_RGB444 = 0,
+ TVIN_YUV422, /* 1 */
+ TVIN_YUV444, /* 2 */
+ TVIN_YUYV422, /* 3 */
+ TVIN_YVYU422, /* 4 */
+ TVIN_UYVY422, /* 5 */
+ TVIN_VYUY422, /* 6 */
+ TVIN_NV12, /* 7 */
+ TVIN_NV21, /* 8 */
+ TVIN_BGGR, /* 9 raw data */
+ TVIN_RGGB, /* 10 raw data */
+ TVIN_GBRG, /* 11 raw data */
+ TVIN_GRBG, /* 12 raw data */
+ TVIN_COLOR_FMT_MAX,
+};
+
+enum tvin_color_fmt_range_e {
+ TVIN_FMT_RANGE_NULL = 0, /* depend on vedio fromat */
+ TVIN_RGB_FULL, /* 1 */
+ TVIN_RGB_LIMIT, /* 2 */
+ TVIN_YUV_FULL, /* 3 */
+ TVIN_YUV_LIMIT, /* 4 */
+ TVIN_COLOR_FMT_RANGE_MAX,
+};
+
+typedef uint32_t u32;
+
+/*
+* The commented memebers are not need now.
+*/
+struct vinfo_s {
+ char *name;
+ enum vmode_e mode;
+ u32 width;
+ u32 height;
+ u32 field_height;
+ u32 aspect_ratio_num;
+ u32 aspect_ratio_den;
+ u32 sync_duration_num;
+ u32 sync_duration_den;
+// u32 screen_real_width;
+// u32 screen_real_height;
+ u32 video_clk;
+ enum tvin_color_fmt_e viu_color_fmt;
+
+// struct hdr_info hdr_info;
+// struct master_display_info_s
+// master_display_info;
+// const struct dv_info *dv_info;
+ /* update hdmitx hdr packet, if data is NULL, disalbe packet */
+// void (*fresh_tx_hdr_pkt)(struct master_display_info_s *data);
+ /* tunnel_mode: 1: tunneling mode, RGB 8bit 0: YCbCr422 12bit mode */
+// void (*fresh_tx_vsif_pkt)(enum eotf_type type, uint8_t tunnel_mode);
+};
+
+
+enum vmode_e vmode_name_to_mode(const char *str);
+const struct vinfo_s *get_tv_info(enum vmode_e mode);
+int want_hdmi_mode(enum vmode_e mode);
+const struct vinfo_s * findMatchedMode(u32 width, u32 height, u32 refreshrate);
+
+#endif //AML_VOUT_H_