summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Strudel <tstrudel@google.com>2017-05-15 09:16:18 -0700
committerThierry Strudel <tstrudel@google.com>2017-05-18 12:39:34 -0700
commita7f8a093e621f2db826862e04643a821248f38bf (patch)
tree4d0d008ce9ed1728995f5a471ef3648d8960c1a8
parent240fc6e79b5c531171a420124ca6c78bff821a7b (diff)
downloadmedia-a7f8a093e621f2db826862e04643a821248f38bf.tar.gz
msm8998: Update to 07.00.00.279.143
msm8998: from hardware/qcom/media a24e220f Merge "mm-video-v4l2: venc: Update level when RC-mode is changed" ea0fd094 mm-video-v4l2: venc: Update level when RC-mode is changed fd691c96 Merge "media: Remove linkage to non-VNDK libs" f60f0cb7 Merge "mm-video: Add MPEG-4,H.263,DIVX software codec entry for 8909." 4c4fb2f5 media: Remove linkage to non-VNDK libs 9cb2f5b5 Merge "mm-video-v4l2:vdec: Pass bit_depth, color_space and dither_config" 104d3656 mm-video-v4l2:vdec: Pass bit_depth, color_space and dither_config e0a19328 mm-video-v4l2: vdec: disable down-scalar for 8909 28523d90 mm-video: Add MPEG-4,H.263,DIVX software codec entry for 8909. 0b54adca media: Compilation fix Test: build, boot, sanity checks Bug: 38282057 Change-Id: I2ec7e5b0fe30cdb17e26a9eb97dcacec4cce308a Signed-off-by: Thierry Strudel <tstrudel@google.com>
-rw-r--r--msm8998/mm-core/src/8909/registry_table.c78
-rw-r--r--msm8998/mm-core/src/8909/registry_table_android.c67
-rw-r--r--msm8998/mm-video-v4l2/vidc/common/Android.mk3
-rw-r--r--msm8998/mm-video-v4l2/vidc/vdec/Android.mk8
-rw-r--r--msm8998/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp9
-rw-r--r--msm8998/mm-video-v4l2/vidc/venc/Android.mk8
-rw-r--r--msm8998/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp3
-rw-r--r--msm8998/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp10
8 files changed, 154 insertions, 32 deletions
diff --git a/msm8998/mm-core/src/8909/registry_table.c b/msm8998/mm-core/src/8909/registry_table.c
index c8b6ad9..1b26a77 100644
--- a/msm8998/mm-core/src/8909/registry_table.c
+++ b/msm8998/mm-core/src/8909/registry_table.c
@@ -105,6 +105,84 @@ omx_core_cb_type core[] =
"video_encoder.avc"
}
},
+ {
+ "OMX.qti.video.decoder.mpeg4sw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxSwVdec.so",
+ {
+ "video_decoder.mpeg4"
+ }
+ },
+ {
+ "OMX.qti.video.decoder.h263sw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxSwVdec.so",
+ {
+ "video_decoder.h263"
+ }
+ },
+ {
+ "OMX.qti.video.decoder.divxsw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxSwVdec.so",
+ {
+ "video_decoder.divx"
+ }
+ },
+ {
+ "OMX.qti.video.decoder.divx4sw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxSwVdec.so",
+ {
+ "video_decoder.divx"
+ }
+ },
+ {
+ "OMX.qcom.video.encoder.mpeg4sw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxSwVencMpeg4.so",
+ {
+ "video_encoder.mpeg4"
+ }
+ },
+ {
+ "OMX.qcom.video.encoder.h263sw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxSwVencMpeg4.so",
+ {
+ "video_encoder.h263"
+ }
+ },
{
"OMX.qcom.audio.decoder.Qcelp13",
NULL, // Create instance function
diff --git a/msm8998/mm-core/src/8909/registry_table_android.c b/msm8998/mm-core/src/8909/registry_table_android.c
index 608bd2a..3700b78 100644
--- a/msm8998/mm-core/src/8909/registry_table_android.c
+++ b/msm8998/mm-core/src/8909/registry_table_android.c
@@ -41,19 +41,6 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
omx_core_cb_type core[] =
{
{
- "OMX.ittiam.video.decoder.mpeg4",
- NULL, // Create instance function
- // Unique instance handle
- {
- NULL
- },
- NULL, // Shared object library handle
- "libOmxIttiamVdec.so",
- {
- "video_decoder.mpeg4"
- }
- },
- {
"OMX.qcom.video.decoder.avc",
NULL, // Create instance function
// Unique instance handle
@@ -105,7 +92,59 @@ omx_core_cb_type core[] =
"video_encoder.avc"
}
},
- {
+ {
+ "OMX.qti.video.decoder.mpeg4sw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxSwVdec.so",
+ {
+ "video_decoder.mpeg4"
+ }
+ },
+ {
+ "OMX.qti.video.decoder.h263sw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxSwVdec.so",
+ {
+ "video_decoder.h263"
+ }
+ },
+ {
+ "OMX.qti.video.decoder.divxsw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxSwVdec.so",
+ {
+ "video_decoder.divx"
+ }
+ },
+ {
+ "OMX.qti.video.decoder.divx4sw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxSwVdec.so",
+ {
+ "video_decoder.divx"
+ }
+ },
+ {
"OMX.qcom.video.encoder.mpeg4sw",
NULL, // Create instance function
// Unique instance handle
diff --git a/msm8998/mm-video-v4l2/vidc/common/Android.mk b/msm8998/mm-video-v4l2/vidc/common/Android.mk
index fe7b875..be7989a 100644
--- a/msm8998/mm-video-v4l2/vidc/common/Android.mk
+++ b/msm8998/mm-video-v4l2/vidc/common/Android.mk
@@ -24,7 +24,6 @@ libmm-vidc-inc := $(LOCAL_PATH)/inc
libmm-vidc-inc += $(QCOM_MEDIA_ROOT)/mm-core/inc
libmm-vidc-inc += $(TARGET_OUT_HEADERS)/qcom/display
libmm-vidc-inc += $(QCOM_MEDIA_ROOT)/libc2dcolorconvert
-libmm-vidc-inc += $(TOP)/frameworks/av/include/media/stagefright
ifeq ($(TARGET_COMPILE_WITH_MSM_KERNEL),true)
libmm-vidc-inc += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
endif
@@ -35,7 +34,7 @@ LOCAL_CFLAGS := $(libmm-vidc-def)
LOCAL_C_INCLUDES := $(libmm-vidc-inc)
LOCAL_PRELINK_MODULE := false
-LOCAL_SHARED_LIBRARIES := liblog libutils libcutils libdl
+LOCAL_SHARED_LIBRARIES := liblog libcutils libdl
LOCAL_SRC_FILES := src/extra_data_handler.cpp
LOCAL_SRC_FILES += src/vidc_color_converter.cpp
diff --git a/msm8998/mm-video-v4l2/vidc/vdec/Android.mk b/msm8998/mm-video-v4l2/vidc/vdec/Android.mk
index df2dbde..9f51eab 100644
--- a/msm8998/mm-video-v4l2/vidc/vdec/Android.mk
+++ b/msm8998/mm-video-v4l2/vidc/vdec/Android.mk
@@ -29,7 +29,7 @@ libmm-vdec-def += -DMAX_RES_1080P_EBI
TARGETS_THAT_USE_HEVC_ADSP_HEAP := msm8226 msm8974
TARGETS_THAT_HAVE_VENUS_HEVC := apq8084 msm8994 msm8996
TARGETS_THAT_SUPPORT_UBWC := msm8996 msm8953 msm8998 sdm660
-TARGETS_THAT_NEED_SW_VDEC := msm8937
+TARGETS_THAT_NEED_SW_VDEC := msm8937 msm8909
ifeq ($(call is-board-platform-in-list, $(TARGETS_THAT_USE_HEVC_ADSP_HEAP)),true)
libmm-vdec-def += -D_HEVC_USE_ADSP_HEAP_
@@ -60,8 +60,6 @@ ifeq ($(call is-board-platform-in-list, $(MASTER_SIDE_CP_TARGET_LIST)),true)
libmm-vdec-def += -DMASTER_SIDE_CP
endif
-libmm-vdec-def += -D_QUERY_DISP_RES_
-
include $(CLEAR_VARS)
# Common Includes
@@ -73,7 +71,6 @@ libmm-vdec-inc += $(TARGET_OUT_HEADERS)/adreno
libmm-vdec-inc += $(TOP)/frameworks/native/include/media/openmax
libmm-vdec-inc += $(TOP)/frameworks/native/include/media/hardware
libmm-vdec-inc += $(QCOM_MEDIA_ROOT)/libc2dcolorconvert
-libmm-vdec-inc += $(TOP)/frameworks/av/include/media/stagefright
libmm-vdec-inc += $(TARGET_OUT_HEADERS)/mm-video/SwVdec
libmm-vdec-inc += $(TARGET_OUT_HEADERS)/mm-video/swvdec
ifeq ($(TARGET_COMPILE_WITH_MSM_KERNEL),true)
@@ -116,9 +113,10 @@ LOCAL_VENDOR_MODULE := true
LOCAL_CFLAGS := $(libmm-vdec-def) -Werror
LOCAL_C_INCLUDES += $(libmm-vdec-inc)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libmm-vdec-add-dep)
+LOCAL_HEADER_LIBRARIES := libnativebase_headers
LOCAL_PRELINK_MODULE := false
-LOCAL_SHARED_LIBRARIES := liblog libutils libcutils libui libdl libqdutils
+LOCAL_SHARED_LIBRARIES := liblog libcutils libdl
LOCAL_SHARED_LIBRARIES += libqdMetaData
diff --git a/msm8998/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/msm8998/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
index f7a0454..da9fd7e 100644
--- a/msm8998/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/msm8998/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -1039,7 +1039,7 @@ OMX_ERRORTYPE omx_vdec::decide_dpb_buffer_mode(bool split_opb_dpb_with_same_colo
int rc = 0;
bool cpu_access = (capture_capability != V4L2_PIX_FMT_NV12_UBWC) &&
capture_capability != V4L2_PIX_FMT_NV12_TP10_UBWC;
- bool tp10_enable = !cpu_access &&
+ bool tp10_enable = !drv_ctx.idr_only_decoding &&
dpb_bit_depth == MSM_VIDC_BIT_DEPTH_10;
bool dither_enable = true;
@@ -1060,6 +1060,7 @@ OMX_ERRORTYPE omx_vdec::decide_dpb_buffer_mode(bool split_opb_dpb_with_same_colo
if (tp10_enable && !dither_enable) {
drv_ctx.output_format = VDEC_YUV_FORMAT_NV12_TP10_UBWC;
capture_capability = V4L2_PIX_FMT_NV12_TP10_UBWC;
+ cpu_access = false;
memset(&fmt, 0x0, sizeof(struct v4l2_format));
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
@@ -1074,7 +1075,6 @@ OMX_ERRORTYPE omx_vdec::decide_dpb_buffer_mode(bool split_opb_dpb_with_same_colo
DEBUG_PRINT_ERROR("%s: Failed set format on capture mplane", __func__);
return OMX_ErrorUnsupportedSetting;
}
-
}
@@ -1878,7 +1878,7 @@ void omx_vdec::process_event_cb(void *ctxt, unsigned char id)
}
if (pThis->m_cb.EventHandler) {
- uint32_t frame_data[4];
+ uint32_t frame_data[7];
frame_data[0] = (p2 == OMX_IndexParamPortDefinition) ?
pThis->m_reconfig_height : pThis->rectangle.nHeight;
frame_data[1] = (p2 == OMX_IndexParamPortDefinition) ?
@@ -1889,6 +1889,9 @@ void omx_vdec::process_event_cb(void *ctxt, unsigned char id)
frame_data[3] = (p2 == OMX_IndexParamPortDefinition) ?
frame_data[1] : pThis->drv_ctx.video_resolution.frame_width;
+ frame_data[4] = pThis->dpb_bit_depth;
+ frame_data[5] = pThis->m_color_space;
+ frame_data[6] = pThis->m_dither_config;
pThis->m_cb.EventHandler(&pThis->m_cmp, pThis->m_app_data,
OMX_EventPortSettingsChanged, p1, p2, (void*) frame_data );
diff --git a/msm8998/mm-video-v4l2/vidc/venc/Android.mk b/msm8998/mm-video-v4l2/vidc/venc/Android.mk
index eb1587f..040c6b5 100644
--- a/msm8998/mm-video-v4l2/vidc/venc/Android.mk
+++ b/msm8998/mm-video-v4l2/vidc/venc/Android.mk
@@ -90,7 +90,6 @@ libmm-venc-inc += frameworks/native/include/media/hardware
libmm-venc-inc += frameworks/native/include/media/openmax
libmm-venc-inc += $(QCOM_MEDIA_ROOT)/libc2dcolorconvert
libmm-venc-inc += $(TARGET_OUT_HEADERS)/libvqzip
-libmm-venc-inc += frameworks/av/include/media/stagefright
libmm-venc-inc += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
ifeq ($(call is-board-platform-in-list, $(TARGETS_THAT_SUPPORT_PQ)),true)
libmm-venc-inc += $(TARGET_OUT_HEADERS)/libgpustats
@@ -115,8 +114,8 @@ LOCAL_C_INCLUDES := $(libmm-venc-inc)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libmm-venc-add-dep)
LOCAL_PRELINK_MODULE := false
-LOCAL_SHARED_LIBRARIES := liblog libutils libcutils \
- libdl libgui
+LOCAL_SHARED_LIBRARIES := liblog libcutils libdl
+
ifeq ($(BOARD_USES_ADRENO), true)
LOCAL_SHARED_LIBRARIES += libc2dcolorconvert
endif # ($(BOARD_USES_ADRENO), true)
@@ -147,8 +146,7 @@ LOCAL_C_INCLUDES := $(libmm-venc-inc)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libmm-venc-add-dep)
LOCAL_PRELINK_MODULE := false
-LOCAL_SHARED_LIBRARIES := liblog libutils libcutils \
- libdl libgui
+LOCAL_SHARED_LIBRARIES := liblog libcutils libdl
LOCAL_SHARED_LIBRARIES += libMpeg4SwEncoder
ifeq ($(BOARD_USES_ADRENO), true)
LOCAL_SHARED_LIBRARIES += libc2dcolorconvert
diff --git a/msm8998/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp b/msm8998/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
index c2ac288..816b606 100644
--- a/msm8998/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
+++ b/msm8998/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
@@ -1655,9 +1655,6 @@ OMX_ERRORTYPE omx_venc::component_deinit(OMX_IN OMX_HANDLETYPE hComp)
m_etb_q.m_read = m_etb_q.m_write =0;
/* Clear the strong reference */
- DEBUG_PRINT_HIGH("Calling m_heap_ptr.clear()");
- m_heap_ptr.clear();
-
DEBUG_PRINT_HIGH("Calling swvenc_deinit()");
swvenc_deinit(m_hSwVenc);
diff --git a/msm8998/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp b/msm8998/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
index 3dac085..9e9ab72 100644
--- a/msm8998/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
+++ b/msm8998/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
@@ -198,6 +198,7 @@ venc_dev::venc_dev(class omx_venc *venc_class)
memset (&slice_mode, 0 , sizeof(slice_mode));
memset(&m_sVenc_cfg, 0, sizeof(m_sVenc_cfg));
memset(&rate_ctrl, 0, sizeof(rate_ctrl));
+ rate_ctrl.rcmode = V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_VBR_CFR;
memset(&bitrate, 0, sizeof(bitrate));
memset(&intra_period, 0, sizeof(intra_period));
memset(&codec_profile, 0, sizeof(codec_profile));
@@ -6586,6 +6587,15 @@ bool venc_dev::venc_set_ratectrl_cfg(OMX_VIDEO_CONTROLRATETYPE eControlRate)
}
#endif
+ // force re-calculation of level since RC is updated
+ {
+ m_level_set = false;
+ if (venc_set_profile_level(codec_profile.profile, 0)) {
+ DEBUG_PRINT_HIGH("updated level=%lu after setting RC mode",
+ profile_level.level);
+ }
+ }
+
return status;
}