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 260081e..ab2bbc4 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -7181,8 +7181,7 @@
             return OMX_ErrorHardware;
         }
         drv_ctx.ip_buf.mincount = control.value;
-        if (drv_ctx.ip_buf.actualcount < control.value)
-            drv_ctx.ip_buf.actualcount = control.value;
+        drv_ctx.ip_buf.actualcount = control.value;
 
         portDefn->eDir =  OMX_DirInput;
         portDefn->nBufferCountActual = drv_ctx.ip_buf.actualcount;
diff --git a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
index 906a0be..56aa24f 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
@@ -2235,9 +2235,49 @@
                         pParam->sAspects.mTransfer = ColorAspects::TransferSMPTE170M;
                         pParam->sAspects.mMatrixCoeffs = ColorAspects::MatrixBT601_6;
                     } else {
-                        // For IMPLEMENTATION_DEFINED (or anything else), stick to client's defaults.
-                        DEBUG_PRINT_INFO("get_config (dataspace changed): ColorSpace: use client-default for format=%x",
-                                pParam->nPixelFormat);
+                         DEBUG_PRINT_INFO("get_config (dataspace changed): dataspace=0x%x", pParam->nDataSpace);
+                         if (pParam->nDataSpace == HAL_DATASPACE_JFIF || pParam->nDataSpace == HAL_DATASPACE_V0_JFIF) {
+                             DEBUG_PRINT_INFO("get_config (dataspace changed): ColorSpace: for HAL_DATASPACE_JFIF");
+                             pParam->sAspects.mPrimaries = ColorAspects::PrimariesBT601_6_625;
+                             pParam->sAspects.mRange = ColorAspects::RangeFull;
+                             pParam->sAspects.mTransfer = ColorAspects::TransferSMPTE170M;
+                             pParam->sAspects.mMatrixCoeffs = ColorAspects::MatrixBT601_6;
+                         } else if (pParam->nDataSpace == HAL_DATASPACE_BT601_525 || pParam->nDataSpace == HAL_DATASPACE_V0_BT601_525) {
+                             DEBUG_PRINT_INFO("get_config (dataspace changed): ColorSpace: for HAL_DATASPACE_BT601_525");
+                             pParam->sAspects.mPrimaries = ColorAspects::PrimariesBT601_6_525;
+                             pParam->sAspects.mRange = ColorAspects::RangeLimited;
+                             pParam->sAspects.mTransfer = ColorAspects::TransferSMPTE170M;
+                             pParam->sAspects.mMatrixCoeffs = ColorAspects::MatrixBT601_6;
+                         } else if (pParam->nDataSpace == HAL_DATASPACE_BT601_625 || pParam->nDataSpace == HAL_DATASPACE_V0_BT601_625) {
+                             DEBUG_PRINT_INFO("get_config (dataspace changed): ColorSpace: for HAL_DATASPACE_BT601_625");
+                             pParam->sAspects.mPrimaries = ColorAspects::PrimariesBT601_6_625;
+                             pParam->sAspects.mRange = ColorAspects::RangeLimited;
+                             pParam->sAspects.mTransfer = ColorAspects::TransferSMPTE170M;
+                             pParam->sAspects.mMatrixCoeffs = ColorAspects::MatrixBT601_6;
+                         } else if (pParam->nDataSpace == HAL_DATASPACE_BT709 || pParam->nDataSpace == HAL_DATASPACE_V0_BT709) {
+                             DEBUG_PRINT_INFO("get_config (dataspace changed): ColorSpace: for HAL_DATASPACE_BT709");
+                             pParam->sAspects.mPrimaries = ColorAspects::PrimariesBT709_5;
+                             pParam->sAspects.mRange = ColorAspects::RangeLimited;
+                             pParam->sAspects.mTransfer = ColorAspects::TransferSMPTE170M;
+                             pParam->sAspects.mMatrixCoeffs = ColorAspects::MatrixBT709_5;
+                         } else if (pParam->nDataSpace == HAL_DATASPACE_BT2020) {
+                             DEBUG_PRINT_INFO("get_config (dataspace changed): ColorSpace: for HAL_DATASPACE_BT2020");
+                             pParam->sAspects.mPrimaries = ColorAspects::PrimariesBT2020;
+                             pParam->sAspects.mRange = ColorAspects::RangeFull;
+                             pParam->sAspects.mTransfer = ColorAspects::TransferSMPTE170M;
+                             pParam->sAspects.mMatrixCoeffs = ColorAspects::MatrixBT2020;
+                         } else if (pParam->nDataSpace == (HAL_DATASPACE_STANDARD_BT2020|HAL_DATASPACE_TRANSFER_HLG|HAL_DATASPACE_RANGE_LIMITED)) {
+                             //For SONY HDR
+                             DEBUG_PRINT_INFO("get_config (dataspace changed): ColorSpace: for HAL_DATASPACE_STANDARD_BT2020|HAL_DATASPACE_TRANSFER_HLG|HAL_DATASPACE_RANGE_LIMITED");
+                             pParam->sAspects.mPrimaries = ColorAspects::PrimariesBT2020;
+                             pParam->sAspects.mRange = ColorAspects::RangeLimited;
+                             pParam->sAspects.mTransfer = ColorAspects::TransferHLG;
+                             pParam->sAspects.mMatrixCoeffs = ColorAspects::MatrixBT2020;
+                         } else {
+                             // Stick to client's defaults.
+                             DEBUG_PRINT_INFO("get_config (dataspace changed): ColorSpace: use client-default for format=%x",
+                             pParam->nPixelFormat);
+                         }
                     }
                     print_debug_color_aspects(&(pParam->sAspects), "get_config (dataspace changed) recommended");
                 } else {
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 2cbfa43..0e080ba 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
@@ -4272,6 +4272,10 @@
 bool venc_dev::venc_cvp_enable(private_handle_t *handle)
 {
     cvpMetadata.size = 0;
+    if (temporal_layers_config.nMaxLayers > 1) {
+        DEBUG_PRINT_INFO("venc_cvp_enable: disabling CVP as max layers %u", temporal_layers_config.nMaxLayers);
+        return true;
+    }
     if (getMetaData(handle, GET_CVP_METADATA, &cvpMetadata) == 0) {
         if (cvpMetadata.size == CVP_METADATA_SIZE) {
             struct v4l2_control control;
