diff --git a/libqdmetadata/qdMetaData.cpp b/libqdmetadata/qdMetaData.cpp
index 33ce28b..91dbc7a 100644
--- a/libqdmetadata/qdMetaData.cpp
+++ b/libqdmetadata/qdMetaData.cpp
@@ -161,7 +161,26 @@
              }
              break;
         }
-        default:
+        case SET_VIDEO_HISTOGRAM_STATS: {
+            struct VideoHistogramMetadata *vidstats = (struct VideoHistogramMetadata *)param;
+            if (vidstats->stat_len <= VIDEO_HISTOGRAM_STATS_SIZE) {
+                memcpy(data->video_histogram_stats.stats_info,
+                    vidstats->stats_info, VIDEO_HISTOGRAM_STATS_SIZE);
+                data->video_histogram_stats.stat_len = vidstats->stat_len;
+                data->video_histogram_stats.frame_type = vidstats->frame_type;
+                data->video_histogram_stats.display_width = vidstats->display_width;
+                data->video_histogram_stats.display_height = vidstats->display_height;
+                data->video_histogram_stats.decode_width = vidstats->decode_width;
+                data->video_histogram_stats.decode_height = vidstats->decode_height;
+            } else {
+                 data->operation &= ~(paramType);
+                 ALOGE("%s: video stats length %u is more than max size %u",
+                     __func__, vidstats->stat_len, VIDEO_HISTOGRAM_STATS_SIZE);
+                 return -EINVAL;
+            }
+            break;
+         }
+         default:
             ALOGE("Unknown paramType %d", paramType);
             break;
     }
@@ -191,6 +210,9 @@
         case SET_CVP_METADATA:
             data->cvpMetadata.size = 0;
             break;
+        case SET_VIDEO_HISTOGRAM_STATS:
+            data->video_histogram_stats.stat_len = 0;
+            break;
         default:
             ALOGE("Unknown paramType %d", paramType);
             break;
@@ -323,6 +345,23 @@
                 }
             }
             break;
+        case GET_VIDEO_HISTOGRAM_STATS:
+            if (data->operation & SET_VIDEO_HISTOGRAM_STATS) {
+                struct VideoHistogramMetadata *vidstats = (struct VideoHistogramMetadata *)param;
+                vidstats->stat_len = 0;
+                if (data->video_histogram_stats.stat_len <= VIDEO_HISTOGRAM_STATS_SIZE) {
+                    memcpy(vidstats->stats_info,
+                        data->video_histogram_stats.stats_info, VIDEO_HISTOGRAM_STATS_SIZE);
+                    vidstats->stat_len = data->video_histogram_stats.stat_len;
+                    vidstats->frame_type = data->video_histogram_stats.frame_type;
+                    vidstats->display_width = data->video_histogram_stats.display_width;
+                    vidstats->display_height = data->video_histogram_stats.display_height;
+                    vidstats->decode_width = data->video_histogram_stats.decode_width;
+                    vidstats->decode_height = data->video_histogram_stats.decode_height;
+                    ret = 0;
+                }
+            }
+            break;
         default:
             ALOGE("Unknown paramType %d", paramType);
             break;
diff --git a/libqdmetadata/qdMetaData.h b/libqdmetadata/qdMetaData.h
index c106c8a..1cc3712 100644
--- a/libqdmetadata/qdMetaData.h
+++ b/libqdmetadata/qdMetaData.h
@@ -106,6 +106,20 @@
     uint32_t data[GRAPHICS_METADATA_SIZE];
 } GraphicsMetadata;
 
+#define VIDEO_HISTOGRAM_STATS_SIZE (4 * 1024)
+/* Frame type bit mask */
+#define QD_SYNC_FRAME (0x1 << 0)
+struct VideoHistogramMetadata {
+    uint32_t stats_info[1024]; /* video stats payload */
+    uint32_t stat_len; /* Payload size in bytes */
+    uint32_t frame_type; /* bit mask to indicate frame type */
+    uint32_t display_width;
+    uint32_t display_height;
+    uint32_t decode_width;
+    uint32_t decode_height;
+    uint32_t reserved[12];
+};
+
 typedef struct CVPMetadata {
     uint32_t size; /* payload size in bytes */
     uint8_t payload[CVP_METADATA_SIZE];
@@ -154,6 +168,8 @@
     /* Populated and used by adreno during buffer size calculation.
      * Set only for RGB formats. */
     GraphicsMetadata graphics_metadata;
+    /* Video hisogram stats populated by video decoder */
+    struct VideoHistogramMetadata video_histogram_stats;
     /*
      * Producer (camera) will set cvp metadata and consumer (video) will
      * use it. The format of metadata is known to producer and consumer.
@@ -179,6 +195,7 @@
     SET_SINGLE_BUFFER_MODE     = 0x4000,
     SET_S3D_COMP               = 0x8000,
     SET_CVP_METADATA           = 0x00010000,
+    SET_VIDEO_HISTOGRAM_STATS  = 0x00020000
 };
 
 enum DispFetchParamType {
@@ -199,6 +216,7 @@
     GET_SINGLE_BUFFER_MODE    = 0x4000,
     GET_S3D_COMP              = 0x8000,
     GET_CVP_METADATA          = 0x00010000,
+    GET_VIDEO_HISTOGRAM_STATS = 0x00020000
 };
 
 struct private_handle_t;
