summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf_files/sm6150/media_codecs_vendor_sdmmagpie_v0.xml2
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp14
-rw-r--r--mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp21
-rw-r--r--mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp6
4 files changed, 36 insertions, 7 deletions
diff --git a/conf_files/sm6150/media_codecs_vendor_sdmmagpie_v0.xml b/conf_files/sm6150/media_codecs_vendor_sdmmagpie_v0.xml
index 1901a2e9..1f8b65e6 100644
--- a/conf_files/sm6150/media_codecs_vendor_sdmmagpie_v0.xml
+++ b/conf_files/sm6150/media_codecs_vendor_sdmmagpie_v0.xml
@@ -203,7 +203,7 @@ Only the three quirks included above are recognized at this point:
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
- <Limit name="size" min="512x512" max="4096x2160" />
+ <Limit name="size" min="512x512" max="8192x8192" />
<Limit name="frame-rate" range="1-20" />
<Limit name="concurrent-instances" max="6" />
<Limit name="quality" range="0-100" default="80" />
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
index 5db344ad..b28d44ff 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -12733,8 +12733,13 @@ OMX_BUFFERHEADERTYPE* omx_vdec::allocate_color_convert_buf::get_il_buf_hdr
{
bool status = true;
pthread_mutex_lock(&omx->c_lock);
+ /* Whenever port mode is set to kPortModeDynamicANWBuffer, Video Frameworks
+ always uses VideoNativeMetadata and OMX recives buffer type as
+ grallocsource via storeMetaDataInBuffers_l API. The buffer_size
+ will be communicated to frameworks via IndexParamPortdefinition. */
if (!enabled)
- buffer_size = omx->drv_ctx.op_buf.buffer_size;
+ buffer_size = omx->dynamic_buf_mode ? sizeof(struct VideoNativeMetadata) :
+ omx->drv_ctx.op_buf.buffer_size;
else {
buffer_size = c2dcc.getBuffSize(C2D_OUTPUT);
}
@@ -12743,9 +12748,10 @@ OMX_BUFFERHEADERTYPE* omx_vdec::allocate_color_convert_buf::get_il_buf_hdr
}
OMX_ERRORTYPE omx_vdec::allocate_color_convert_buf::set_buffer_req(
- OMX_U32 buffer_size, OMX_U32 actual_count) {
- OMX_U32 expectedSize = enabled ? buffer_size_req : omx->drv_ctx.op_buf.buffer_size;
-
+ OMX_U32 buffer_size, OMX_U32 actual_count)
+{
+ OMX_U32 expectedSize = enabled ? buffer_size_req : omx->dynamic_buf_mode ?
+ sizeof(struct VideoDecoderOutputMetaData) : omx->drv_ctx.op_buf.buffer_size;
if (buffer_size < expectedSize) {
DEBUG_PRINT_ERROR("OP Requirements: Client size(%u) insufficient v/s requested(%u)",
buffer_size, expectedSize);
diff --git a/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp b/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
index 8f0868b7..346f017f 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
@@ -248,8 +248,25 @@ OMX_ERRORTYPE omx_venc::component_init(OMX_STRING role)
codec_type = OMX_VIDEO_CodingHEVC;
} else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.heic", \
OMX_MAX_STRINGNAME_SIZE)) {
- strlcpy((char *)m_cRole, "video_encoder.hevc", OMX_MAX_STRINGNAME_SIZE);
- codec_type = OMX_VIDEO_CodingImageHEIC;
+ char platform_name[PROP_VALUE_MAX] = {0};
+ char version[PROP_VALUE_MAX] = {0};
+ property_get("ro.board.platform", platform_name, "0"); //HW ID
+ if (!strcmp(platform_name, "sm6150"))
+ {
+ if (property_get("vendor.media.target.version", version, "0") &&
+ (atoi(version) == 0))
+ {
+ //Sku version, HEIC is disabled on this target
+ DEBUG_PRINT_ERROR("heic encoder not supported on this target");
+ eRet = OMX_ErrorInvalidComponentName;
+ } else {
+ strlcpy((char *)m_cRole, "video_encoder.hevc", OMX_MAX_STRINGNAME_SIZE);
+ codec_type = OMX_VIDEO_CodingImageHEIC;
+ }
+ } else {
+ strlcpy((char *)m_cRole, "video_encoder.hevc", OMX_MAX_STRINGNAME_SIZE);
+ codec_type = OMX_VIDEO_CodingImageHEIC;
+ }
} else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.hevc.secure", \
OMX_MAX_STRINGNAME_SIZE)) {
strlcpy((char *)m_cRole, "video_encoder.hevc", OMX_MAX_STRINGNAME_SIZE);
diff --git a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
index 3db5fc48..5ae8aa78 100644
--- a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
+++ b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
@@ -2120,6 +2120,12 @@ bool venc_dev::venc_get_buf_req(OMX_U32 *min_buff_count,
DEBUG_PRINT_LOW("Set buffer count = %d as metadata mode and batchmode enabled", minCount);
}
+ // reset min count to 4 for HEIC cases
+ if (mIsGridset) {
+ minCount = 4;
+ DEBUG_PRINT_LOW("Set buffer count = %d for HEIC", minCount);
+ }
+
minCount = MAX((unsigned int)control.value, minCount);
m_sInput_buff_property.mincount = minCount;