Merge "Revert "Kona: Update camcorder high-speed profiles""
diff --git a/conf_files/kona/media_codecs.xml b/conf_files/kona/media_codecs.xml
index b9bce77..dcffeb3 100644
--- a/conf_files/kona/media_codecs.xml
+++ b/conf_files/kona/media_codecs.xml
@@ -268,12 +268,7 @@
             <Limit name="quality" range="0-100" default="80" />
             <Feature name="bitrate-modes" value="CQ" />
             <Limit name="performance-point-16384x8192" value="3" />
-            <Limit name="performance-point-8192x4320" value="3" />
-            <Limit name="performance-point-4096x2304" value="3" />
             <Limit name="performance-point-1920x1080" value="6" />
-            <Limit name="performance-point-1920x1080" value="6" />
-            <Limit name="performance-point-1280x720" value="6" />
-            <Limit name="performance-point-1280x720" value="6" />
         </MediaCodec>
         <!-- Video Software -->
         <MediaCodec name="OMX.qcom.video.encoder.h263sw" type="video/3gpp" >
diff --git a/conf_files/kona/media_codecs_performance.xml b/conf_files/kona/media_codecs_performance.xml
index 4766953..795dd6f 100644
--- a/conf_files/kona/media_codecs_performance.xml
+++ b/conf_files/kona/media_codecs_performance.xml
@@ -183,7 +183,7 @@
             <Limit name="measured-frame-rate-1920x1080" range="36-49" />
         </MediaCodec>
         <MediaCodec name="c2.android.mpeg4.decoder" type="video/mp4v-es" update="true">
-            <Limit name="measured-frame-rate-176x144" range="401-545" />
+            <Limit name="measured-frame-rate-176x144" range="550-1200" />
         </MediaCodec>
         <MediaCodec name="c2.android.h263.decoder" type="video/3gpp" update="true">
             <Limit name="measured-frame-rate-176x144" range="483-663" />
diff --git a/conf_files/kona/media_codecs_vendor.xml b/conf_files/kona/media_codecs_vendor.xml
index a7964dc..01471e0 100644
--- a/conf_files/kona/media_codecs_vendor.xml
+++ b/conf_files/kona/media_codecs_vendor.xml
@@ -269,12 +269,7 @@
             <Limit name="quality" range="0-100" default="80" />
             <Feature name="bitrate-modes" value="CQ" />
             <Limit name="performance-point-16384x8192" value="3" />
-            <Limit name="performance-point-8192x4320" value="3" />
-            <Limit name="performance-point-4096x2304" value="3" />
             <Limit name="performance-point-1920x1080" value="6" />
-            <Limit name="performance-point-1920x1080" value="6" />
-            <Limit name="performance-point-1280x720" value="6" />
-            <Limit name="performance-point-1280x720" value="6" />
         </MediaCodec>
         <!-- Video Software -->
         <MediaCodec name="OMX.qcom.video.encoder.h263sw" type="video/3gpp" >
diff --git a/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h b/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
index ada2b7c..122d22e 100644
--- a/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
+++ b/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
@@ -475,6 +475,7 @@
         bool m_hdr10meta_enabled;
         ColorMetaData colorData= {};
 
+        bool m_cvp_first_metadata;
         bool m_cvp_meta_enabled;
         CVPMetadata cvpMetadata;
         pthread_mutex_t pause_resume_mlock;
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 b4233d8..a2b00f2 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
@@ -120,6 +120,7 @@
     mBatchSize = 0;
     m_roi_enabled = false;
     m_cvp_meta_enabled = false;
+    m_cvp_first_metadata = false;
     low_latency_mode = false;
     pthread_mutex_init(&m_roilock, NULL);
     pthread_mutex_init(&m_configlock, NULL);
@@ -680,7 +681,7 @@
     data = (struct OMX_OTHER_EXTRADATATYPE *)p_extradata;
     memset((void *)(data), 0, (input_extradata_info.buffer_size)); // clear stale data in current buffer
 
-    if (m_cvp_meta_enabled && cvpMetadata.size == CVP_METADATA_SIZE) {
+    if (m_cvp_meta_enabled && !(buf.flags & V4L2_BUF_FLAG_CVPMETADATA_SKIP)) {
         packet_size = sizeof(struct msm_vidc_extradata_header) - sizeof(unsigned int)
                            + cvpMetadata.size;
 
@@ -4285,6 +4286,7 @@
                 return false;
             }
             m_cvp_meta_enabled = true;
+            m_cvp_first_metadata = true;
             DEBUG_PRINT_HIGH("CVP metadata enabled");
             if (!venc_set_cvp_skipratio_controls())
                 return false;
@@ -4292,6 +4294,8 @@
             DEBUG_PRINT_ERROR("ERROR: External CVP mode disabled for this session and continue!");
             clearMetaData(handle, SET_CVP_METADATA);
         }
+    } else {
+        DEBUG_PRINT_INFO("venc_cvp_enable: cvp metadata not available");
     }
     return true;
 }
@@ -4301,9 +4305,10 @@
     struct v4l2_control ctrl;
 
     if (!cvpMetadata.cvp_frame_rate || !cvpMetadata.capture_frame_rate) {
-        DEBUG_PRINT_LOW("ERROR: Invalid cvp frame rate received");
+        DEBUG_PRINT_ERROR("ERROR: Invalid cvp frame rate received");
         return true;
     }
+    DEBUG_PRINT_HIGH("cvpMetadata: frame_rate %u capture rate %u", cvpMetadata.cvp_frame_rate, cvpMetadata.capture_frame_rate);
 
     ctrl.id = V4L2_CID_MPEG_VIDC_CAPTURE_FRAME_RATE;
     ctrl.value = cvpMetadata.capture_frame_rate;
@@ -4315,7 +4320,7 @@
     ctrl.id = V4L2_CID_MPEG_VIDC_CVP_FRAME_RATE;
     ctrl.value = cvpMetadata.cvp_frame_rate;
     if (ioctl(m_nDriver_fd, VIDIOC_S_CTRL, &ctrl)) {
-        DEBUG_PRINT_LOW("ERROR: Setting cvp frame rate control failed");
+        DEBUG_PRINT_ERROR("ERROR: Setting cvp frame rate control failed");
         return false;
     }
     return true;
@@ -4343,10 +4348,17 @@
         }
         DEBUG_PRINT_LOW("CVP metadata size %d", cvpMetadata.size);
     } else {
+        DEBUG_PRINT_ERROR("ERROR: CVP metadata not available");
+        return false;
+    }
+
+    if (m_cvp_first_metadata) {
+        m_cvp_first_metadata = false;
+    } else if (cvpMetadata.flags & CVP_METADATA_FLAG_REPEAT) {
         buf->flags |= V4L2_BUF_FLAG_CVPMETADATA_SKIP;
         DEBUG_PRINT_LOW("venc_empty_buf: V4L2_BUF_FLAG_CVPMETADATA_SKIP is set");
-        DEBUG_PRINT_LOW("CVP metadata not available");
     }
+
     if ((cvpMetadata.capture_frame_rate != capture_rate) ||
         (cvpMetadata.cvp_frame_rate != cvp_rate)) {
         if(!venc_set_cvp_skipratio_controls())