diff --git a/decoder/ih264d.h b/decoder/ih264d.h
index 63a5ce1..7c76296 100644
--- a/decoder/ih264d.h
+++ b/decoder/ih264d.h
@@ -429,6 +429,45 @@
     UWORD32                                     u4_buffer_ht[3];
 }ih264d_ctl_get_frame_dimensions_op_t;
 
+typedef struct
+{
+    UWORD32                                     u4_size;
+    IVD_API_COMMAND_TYPE_T                      e_cmd;
+    IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
+}ih264d_ctl_get_vui_params_ip_t;
+
+typedef struct
+{
+    UWORD32                                     u4_size;
+    UWORD32                                     u4_error_code;
+    UWORD8                                      u1_aspect_ratio_idc;
+    UWORD16                                     u2_sar_width;
+    UWORD16                                     u2_sar_height;
+    UWORD8                                      u1_overscan_appropriate_flag;
+    UWORD8                                      u1_video_format;
+    UWORD8                                      u1_video_full_range_flag;
+    UWORD8                                      u1_colour_primaries;
+    UWORD8                                      u1_tfr_chars;
+    UWORD8                                      u1_matrix_coeffs;
+    UWORD8                                      u1_cr_top_field;
+    UWORD8                                      u1_cr_bottom_field;
+    UWORD32                                     u4_num_units_in_tick;
+    UWORD32                                     u4_time_scale;
+    UWORD8                                      u1_fixed_frame_rate_flag;
+    UWORD8                                      u1_nal_hrd_params_present;
+    UWORD8                                      u1_vcl_hrd_params_present;
+    UWORD8                                      u1_low_delay_hrd_flag;
+    UWORD8                                      u1_pic_struct_present_flag;
+    UWORD8                                      u1_bitstream_restriction_flag;
+    UWORD8                                      u1_mv_over_pic_boundaries_flag;
+    UWORD32                                     u4_max_bytes_per_pic_denom;
+    UWORD32                                     u4_max_bits_per_mb_denom;
+    UWORD32                                     u4_log2_max_mv_length_horz;
+    UWORD32                                     u4_log2_max_mv_length_vert;
+    UWORD32                                     u4_num_reorder_frames;
+    UWORD32                                     u4_max_dec_frame_buffering;
+}ih264d_ctl_get_vui_params_op_t;
+
 #ifdef __cplusplus
 } /* closing brace for extern "C" */
 #endif
diff --git a/decoder/ih264d_api.c b/decoder/ih264d_api.c
index f65094c..3ace427 100644
--- a/decoder/ih264d_api.c
+++ b/decoder/ih264d_api.c
@@ -135,6 +135,10 @@
 WORD32 ih264d_get_frame_dimensions(iv_obj_t *dec_hdl,
                                    void *pv_api_ip,
                                    void *pv_api_op);
+WORD32 ih264d_get_vui_params(iv_obj_t *dec_hdl,
+                             void *pv_api_ip,
+                             void *pv_api_op);
+
 WORD32 ih264d_set_num_cores(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op);
 
 WORD32 ih264d_deblock_display(dec_struct_t *ps_dec);
@@ -743,7 +747,36 @@
 
                     break;
                 }
+                case IH264D_CMD_CTL_GET_VUI_PARAMS:
+                {
+                    ih264d_ctl_get_vui_params_ip_t *ps_ip;
+                    ih264d_ctl_get_vui_params_op_t *ps_op;
 
+                    ps_ip =
+                                    (ih264d_ctl_get_vui_params_ip_t *)pv_api_ip;
+                    ps_op =
+                                    (ih264d_ctl_get_vui_params_op_t *)pv_api_op;
+
+                    if(ps_ip->u4_size
+                                    != sizeof(ih264d_ctl_get_vui_params_ip_t))
+                    {
+                        ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM;
+                        ps_op->u4_error_code |=
+                                        IVD_IP_API_STRUCT_SIZE_INCORRECT;
+                        return IV_FAIL;
+                    }
+
+                    if(ps_op->u4_size
+                                    != sizeof(ih264d_ctl_get_vui_params_op_t))
+                    {
+                        ps_op->u4_error_code |= 1 << IVD_UNSUPPORTEDPARAM;
+                        ps_op->u4_error_code |=
+                                        IVD_OP_API_STRUCT_SIZE_INCORRECT;
+                        return IV_FAIL;
+                    }
+
+                    break;
+                }
                 case IH264D_CMD_CTL_SET_NUM_CORES:
                 {
                     ih264d_ctl_set_num_cores_ip_t *ps_ip;
@@ -3382,6 +3415,11 @@
             ret = ih264d_get_frame_dimensions(dec_hdl, (void *)pv_api_ip,
                                               (void *)pv_api_op);
             break;
+        case IH264D_CMD_CTL_GET_VUI_PARAMS:
+            ret = ih264d_get_vui_params(dec_hdl, (void *)pv_api_ip,
+                                        (void *)pv_api_op);
+            break;
+
         case IH264D_CMD_CTL_SET_PROCESSOR:
             ret = ih264d_set_processor(dec_hdl, (void *)pv_api_ip,
                                        (void *)pv_api_op);
@@ -3609,6 +3647,72 @@
 
 }
 
+WORD32 ih264d_get_vui_params(iv_obj_t *dec_hdl,
+                             void *pv_api_ip,
+                             void *pv_api_op)
+{
+    ih264d_ctl_get_vui_params_ip_t *ps_ip;
+    ih264d_ctl_get_vui_params_op_t *ps_op;
+    dec_struct_t *ps_dec = dec_hdl->pv_codec_handle;
+    dec_seq_params_t *ps_sps;
+    vui_t *ps_vui;
+    WORD32 i;
+    UWORD32 u4_size;
+
+    ps_ip = (ih264d_ctl_get_vui_params_ip_t *)pv_api_ip;
+    ps_op = (ih264d_ctl_get_vui_params_op_t *)pv_api_op;
+    UNUSED(ps_ip);
+
+    u4_size = ps_op->u4_size;
+    memset(ps_op, 0, sizeof(ih264d_ctl_get_vui_params_op_t));
+    ps_op->u4_size = u4_size;
+
+    if(NULL == ps_dec->ps_cur_sps)
+    {
+        ps_op->u4_error_code = ERROR_VUI_PARAMS_NOT_FOUND;
+        return IV_FAIL;
+    }
+
+    ps_sps = ps_dec->ps_cur_sps;
+    if((0 == ps_sps->u1_is_valid)
+                    || (0 == ps_sps->u1_vui_parameters_present_flag))
+    {
+        ps_op->u4_error_code = ERROR_VUI_PARAMS_NOT_FOUND;
+        return IV_FAIL;
+    }
+
+    ps_vui = &ps_sps->s_vui;
+
+    ps_op->u1_aspect_ratio_idc              = ps_vui->u1_aspect_ratio_idc;
+    ps_op->u2_sar_width                     = ps_vui->u2_sar_width;
+    ps_op->u2_sar_height                    = ps_vui->u2_sar_height;
+    ps_op->u1_overscan_appropriate_flag     = ps_vui->u1_overscan_appropriate_flag;
+    ps_op->u1_video_format                  = ps_vui->u1_video_format;
+    ps_op->u1_video_full_range_flag         = ps_vui->u1_video_full_range_flag;
+    ps_op->u1_colour_primaries              = ps_vui->u1_colour_primaries;
+    ps_op->u1_tfr_chars                     = ps_vui->u1_tfr_chars;
+    ps_op->u1_matrix_coeffs                 = ps_vui->u1_matrix_coeffs;
+    ps_op->u1_cr_top_field                  = ps_vui->u1_cr_top_field;
+    ps_op->u1_cr_bottom_field               = ps_vui->u1_cr_bottom_field;
+    ps_op->u4_num_units_in_tick             = ps_vui->u4_num_units_in_tick;
+    ps_op->u4_time_scale                    = ps_vui->u4_time_scale;
+    ps_op->u1_fixed_frame_rate_flag         = ps_vui->u1_fixed_frame_rate_flag;
+    ps_op->u1_nal_hrd_params_present        = ps_vui->u1_nal_hrd_params_present;
+    ps_op->u1_vcl_hrd_params_present        = ps_vui->u1_vcl_hrd_params_present;
+    ps_op->u1_low_delay_hrd_flag            = ps_vui->u1_low_delay_hrd_flag;
+    ps_op->u1_pic_struct_present_flag       = ps_vui->u1_pic_struct_present_flag;
+    ps_op->u1_bitstream_restriction_flag    = ps_vui->u1_bitstream_restriction_flag;
+    ps_op->u1_mv_over_pic_boundaries_flag   = ps_vui->u1_mv_over_pic_boundaries_flag;
+    ps_op->u4_max_bytes_per_pic_denom       = ps_vui->u4_max_bytes_per_pic_denom;
+    ps_op->u4_max_bits_per_mb_denom         = ps_vui->u4_max_bits_per_mb_denom;
+    ps_op->u4_log2_max_mv_length_horz       = ps_vui->u4_log2_max_mv_length_horz;
+    ps_op->u4_log2_max_mv_length_vert       = ps_vui->u4_log2_max_mv_length_vert;
+    ps_op->u4_num_reorder_frames            = ps_vui->u4_num_reorder_frames;
+    ps_op->u4_max_dec_frame_buffering       = ps_vui->u4_max_dec_frame_buffering;
+
+    return IV_SUCCESS;
+}
+
 WORD32 ih264d_set_num_cores(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op)
 {
     ih264d_ctl_set_num_cores_ip_t *ps_ip;
diff --git a/decoder/ih264d_error_handler.h b/decoder/ih264d_error_handler.h
index 5b1bc84..586fe8a 100644
--- a/decoder/ih264d_error_handler.h
+++ b/decoder/ih264d_error_handler.h
@@ -112,7 +112,8 @@
     ERROR_PIC_NUM_IS_REPEATED = 0x92,
     ERROR_IN_LAST_SLICE_OF_PIC = 0x93,
     ERROR_NEW_FRAME_EXPECTED = 0x94,
-    ERROR_INCOMPLETE_FRAME = 0x95
+    ERROR_INCOMPLETE_FRAME = 0x95,
+    ERROR_VUI_PARAMS_NOT_FOUND = 0x96
 
 } h264_decoder_error_code_t;
 
diff --git a/decoder/ih264d_vui.c b/decoder/ih264d_vui.c
index 97b40c2..15bc37d 100644
--- a/decoder/ih264d_vui.c
+++ b/decoder/ih264d_vui.c
@@ -149,6 +149,14 @@
                         ps_bitstrm, 1);
     }
     u4_bits = ih264d_get_bits_h264(ps_bitstrm, 1);
+    /* Initialize to unspecified (5 for video_format and
+       2 for colour_primaries, tfr_chars, matrix_coeffs  */
+    ps_vu4->u1_video_format = 5;
+    ps_vu4->u1_video_full_range_flag = 0;
+    ps_vu4->u1_colour_primaries = 2;
+    ps_vu4->u1_tfr_chars = 2;
+    ps_vu4->u1_matrix_coeffs = 2;
+
     if(u4_bits)
     {
         ps_vu4->u1_video_format = ih264d_get_bits_h264(ps_bitstrm, 3);
diff --git a/encoder/ih264e.h b/encoder/ih264e.h
index 15a9d8f..4de0b17 100644
--- a/encoder/ih264e.h
+++ b/encoder/ih264e.h
@@ -484,6 +484,137 @@
 }ih264e_video_encode_op_t;
 
 
+/*****************************************************************************/
+/*   Video usability information                                             */
+/*****************************************************************************/
+typedef struct
+{
+    /** size of the structure  */
+    UWORD32                                     u4_size;
+
+    /** Command type : IVE_CMD_VIDEO_CTL  */
+    IVE_API_COMMAND_TYPE_T                      e_cmd;
+
+    /** Sub command type : IVE_CMD_CTL_SET_GOP_PARAMS */
+    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
+
+    /** indicates the presence of aspect_ratio */
+    UWORD8                                      u1_aspect_ratio_info_present_flag;
+
+    /** specifies the aspect ratio of the luma samples */
+    UWORD8                                      u1_aspect_ratio_idc;
+
+    /** width of the luma samples. user dependent */
+    UWORD16                                     u2_sar_width;
+
+    /** Height of the luma samples. user dependent */
+    UWORD16                                     u2_sar_height;
+
+    /** if 1, specifies that the overscan_appropriate_flag is present
+     * if 0, the preferred display method for the video signal is unspecified */
+    UWORD8                                      u1_overscan_info_present_flag;
+
+    /** if 1,indicates that the cropped decoded pictures output
+     * are suitable for display using overscan */
+    UWORD8                                      u1_overscan_appropriate_flag;
+
+    /** if 1 specifies that video_format, video_full_range_flag and
+     * colour_description_present_flag are present */
+    UWORD8                                      u1_video_signal_type_present_flag;
+
+    /** pal, secam, ntsc, ...  */
+    UWORD8                                      u1_video_format;
+
+    /** indicates the black level and range of the luma and chroma signals */
+    UWORD8                                      u1_video_full_range_flag;
+
+    /** if 1,specifies that colour_primaries, transfer_characteristics
+     * and matrix_coefficients are present */
+    UWORD8                                      u1_colour_description_present_flag;
+
+    /** indicates the chromaticity coordinates of the source primaries  */
+    UWORD8                                      u1_colour_primaries;
+
+    /** indicates the opto-electronic transfer characteristic of the source picture */
+    UWORD8                                      u1_transfer_characteristics;
+
+    /** the matrix coefficients used in deriving luma and chroma signals
+     * from the green, blue, and red primaries */
+    UWORD8                                      u1_matrix_coefficients;
+
+    /** if 1, specifies that chroma_sample_loc_type_top_field and
+     * chroma_sample_loc_type_bottom_field are present */
+    UWORD8                                      u1_chroma_loc_info_present_flag;
+
+    /** location of chroma samples */
+    UWORD8                                      u1_chroma_sample_loc_type_top_field;
+    UWORD8                                      u1_chroma_sample_loc_type_bottom_field;
+
+    /**  Indicates the presence of the num_units_in_ticks, time_scale flag */
+    UWORD8                                      u1_vui_timing_info_present_flag;
+
+    /**  Number of units that correspond to one increment of the
+    *   clock. Indicates the  resolution */
+    UWORD32                                     u4_vui_num_units_in_tick;
+
+    /**  The number of time units that pass in one second */
+    UWORD32                                     u4_vui_time_scale;
+
+    /** Flag indicating that time difference between two frames is a constant */
+    UWORD8                                      u1_fixed_frame_rate_flag;
+
+    /** Indicates the presence of NAL HRD parameters */
+    UWORD8                                      u1_nal_hrd_parameters_present_flag;
+
+    /** Indicates the presence of VCL HRD parameters */
+    UWORD8                                      u1_vcl_hrd_parameters_present_flag;
+
+    /** Specifies the HRD operational mode */
+    UWORD8                                      u1_low_delay_hrd_flag;
+
+    /** Indicates presence of SEI messages which include pic_struct syntax element */
+    UWORD8                                      u1_pic_struct_present_flag;
+
+    /** 1, specifies that the following cvs bitstream restriction parameters are present */
+    UWORD8                                      u1_bitstream_restriction_flag;
+
+    /** if 0, indicates that no pel outside the pic boundaries and
+     * no sub-pels derived using pels outside the pic boundaries is used for inter prediction */
+    UWORD8                                      u1_motion_vectors_over_pic_boundaries_flag;
+
+    /** Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units
+     * associated with any coded picture */
+    UWORD8                                      u1_max_bytes_per_pic_denom;
+
+    /** Indicates an upper bound for the number of bits of coding_unit() data */
+    UWORD8                                      u1_max_bits_per_mb_denom;
+
+    /** Indicate the maximum absolute value of a decoded horizontal MV component
+     * in quarter-pel luma units */
+    UWORD8                                      u1_log2_max_mv_length_horizontal;
+
+    /** Indicate the maximum absolute value of a decoded vertical MV component
+     * in quarter-pel luma units */
+    UWORD8                                      u1_log2_max_mv_length_vertical;
+
+    /** Max number of frames that are not synchronized in display and decode order */
+    UWORD8                                      u1_num_reorder_frames;
+
+    /** specifies required size of the HRD DPB in units of frame buffers */
+    UWORD8                                      u1_max_dec_frame_buffering;
+
+}ih264e_vui_ip_t;
+
+typedef struct
+{
+    /** size of the structure                                           */
+    UWORD32                                     u4_size;
+
+    /** Return error code                                               */
+    UWORD32                                     u4_error_code;
+}ih264e_vui_op_t;
+
+
 /* The enum values should not have greater than 8 bits as this is assigned to WORD8 */
 typedef enum
 {
diff --git a/encoder/ih264e_api.c b/encoder/ih264e_api.c
index 5217e36..4091fc2 100644
--- a/encoder/ih264e_api.c
+++ b/encoder/ih264e_api.c
@@ -1627,6 +1627,30 @@
                     break;
                 }
 
+                case IVE_CMD_CTL_SET_VUI_PARAMS:
+                {
+                    ih264e_vui_ip_t *ps_ip = pv_api_ip;
+                    ih264e_vui_op_t *ps_op = pv_api_op;
+
+                    if(ps_ip->u4_size != sizeof(ih264e_vui_ip_t))
+                    {
+                        ps_op->u4_error_code |= 1 << IVE_UNSUPPORTEDPARAM;
+                        ps_op->u4_error_code |=
+                                        IVE_ERR_IP_CTL_SET_VUI_STRUCT_SIZE_INCORRECT;
+                        return IV_FAIL;
+                    }
+
+                    if(ps_op->u4_size != sizeof(ih264e_vui_op_t))
+                    {
+                        ps_op->u4_error_code |= 1 << IVE_UNSUPPORTEDPARAM;
+                        ps_op->u4_error_code |=
+                                        IVE_ERR_OP_CTL_SET_VUI_STRUCT_SIZE_INCORRECT;
+                        return IV_FAIL;
+                    }
+
+                    break;
+                }
+
                 case IVE_CMD_CTL_SET_ENC_MODE:
                 {
                     ih264e_ctl_set_enc_mode_ip_t *ps_ip = pv_api_ip;
@@ -2228,7 +2252,10 @@
     {
         ps_codec->s_cfg.u4_num_cores = ps_cfg->u4_num_cores;
     }
-
+    else if (ps_cfg->e_cmd == IVE_CMD_CTL_SET_VUI_PARAMS)
+    {
+        ps_codec->s_cfg.s_vui = ps_cfg->s_vui;
+    }
     /* reset RC model */
     if (u4_init_rc)
     {
@@ -5235,7 +5262,90 @@
 
     return IV_SUCCESS;
 }
+/**
+ *******************************************************************************
+ *
+ * @brief
+ *  Sets vui params
+ *
+ * @par Description:
+ *  Video usability information
+ *
+ * @param[in] pv_api_ip
+ *  Pointer to input argument structure
+ *
+ * @param[out] pv_api_op
+ *  Pointer to output argument structure
+ *
+ * @param[out] ps_cfg
+ *  Pointer to config structure to be updated
+ *
+ * @returns error status
+ *
+ * @remarks none
+ *
+ *******************************************************************************
+ */
+static WORD32 ih264e_set_vui_params(void *pv_api_ip,
+                                    void *pv_api_op,
+                                    cfg_params_t *ps_cfg)
+{
+    /* ctrl call I/O structures */
+    ih264e_vui_ip_t *ps_ip = pv_api_ip;
+    ih264e_vui_op_t *ps_op = pv_api_op;
+    vui_t *ps_vui = &ps_cfg->s_vui;
 
+    ps_op->u4_error_code = 0;
+
+    ps_vui->u1_aspect_ratio_info_present_flag =
+                    ps_ip->u1_aspect_ratio_info_present_flag;
+    ps_vui->u1_aspect_ratio_idc = ps_ip->u1_aspect_ratio_idc;
+    ps_vui->u2_sar_width = ps_ip->u2_sar_width;
+    ps_vui->u2_sar_height = ps_ip->u2_sar_height;
+    ps_vui->u1_overscan_info_present_flag =
+                    ps_ip->u1_overscan_info_present_flag;
+    ps_vui->u1_overscan_appropriate_flag = ps_ip->u1_overscan_appropriate_flag;
+    ps_vui->u1_video_signal_type_present_flag =
+                    ps_ip->u1_video_signal_type_present_flag;
+    ps_vui->u1_video_format = ps_ip->u1_video_format;
+    ps_vui->u1_video_full_range_flag = ps_ip->u1_video_full_range_flag;
+    ps_vui->u1_colour_description_present_flag =
+                    ps_ip->u1_colour_description_present_flag;
+    ps_vui->u1_colour_primaries = ps_ip->u1_colour_primaries;
+    ps_vui->u1_transfer_characteristics = ps_ip->u1_transfer_characteristics;
+    ps_vui->u1_matrix_coefficients = ps_ip->u1_matrix_coefficients;
+    ps_vui->u1_chroma_loc_info_present_flag =
+                    ps_ip->u1_chroma_loc_info_present_flag;
+    ps_vui->u1_chroma_sample_loc_type_top_field =
+                    ps_ip->u1_chroma_sample_loc_type_top_field;
+    ps_vui->u1_chroma_sample_loc_type_bottom_field =
+                    ps_ip->u1_chroma_sample_loc_type_bottom_field;
+    ps_vui->u1_vui_timing_info_present_flag =
+                    ps_ip->u1_vui_timing_info_present_flag;
+    ps_vui->u4_vui_num_units_in_tick = ps_ip->u4_vui_num_units_in_tick;
+    ps_vui->u4_vui_time_scale = ps_ip->u4_vui_time_scale;
+    ps_vui->u1_fixed_frame_rate_flag = ps_ip->u1_fixed_frame_rate_flag;
+    ps_vui->u1_nal_hrd_parameters_present_flag =
+                    ps_ip->u1_nal_hrd_parameters_present_flag;
+    ps_vui->u1_vcl_hrd_parameters_present_flag =
+                    ps_ip->u1_vcl_hrd_parameters_present_flag;
+    ps_vui->u1_low_delay_hrd_flag = ps_ip->u1_low_delay_hrd_flag;
+    ps_vui->u1_pic_struct_present_flag = ps_ip->u1_pic_struct_present_flag;
+    ps_vui->u1_bitstream_restriction_flag =
+                    ps_ip->u1_bitstream_restriction_flag;
+    ps_vui->u1_motion_vectors_over_pic_boundaries_flag =
+                    ps_ip->u1_motion_vectors_over_pic_boundaries_flag;
+    ps_vui->u1_max_bytes_per_pic_denom = ps_ip->u1_max_bytes_per_pic_denom;
+    ps_vui->u1_max_bits_per_mb_denom = ps_ip->u1_max_bits_per_mb_denom;
+    ps_vui->u1_log2_max_mv_length_horizontal =
+                    ps_ip->u1_log2_max_mv_length_horizontal;
+    ps_vui->u1_log2_max_mv_length_vertical =
+                    ps_ip->u1_log2_max_mv_length_vertical;
+    ps_vui->u1_num_reorder_frames = ps_ip->u1_num_reorder_frames;
+    ps_vui->u1_max_dec_frame_buffering = ps_ip->u1_max_dec_frame_buffering;
+
+    return IV_SUCCESS;
+}
 /**
 *******************************************************************************
 *
@@ -5459,6 +5569,10 @@
             ret = ih264_set_deblock_params(pv_api_ip, pv_api_op, ps_cfg);
             break;
 
+        case IVE_CMD_CTL_SET_VUI_PARAMS:
+            ret = ih264e_set_vui_params(pv_api_ip, pv_api_op, ps_cfg);
+            break;
+
         case IVE_CMD_CTL_RESET:
 
             /* invalidate config param struct as it is being served right away */
diff --git a/encoder/ih264e_encode_header.c b/encoder/ih264e_encode_header.c
index ac025d6..04bdc14 100644
--- a/encoder/ih264e_encode_header.c
+++ b/encoder/ih264e_encode_header.c
@@ -160,54 +160,255 @@
     WORD32 return_status = IH264E_SUCCESS;
 
     /* aspect_ratio_info_present_flag */
-    PUT_BITS(ps_bitstrm, ps_vui->u1_aspect_ratio_info_present_flag, 1, return_status, "aspect_ratio_info_present_flag");
+    PUT_BITS(ps_bitstrm, ps_vui->u1_aspect_ratio_info_present_flag, 1,
+             return_status, "aspect_ratio_info_present_flag");
 
+    if(ps_vui->u1_aspect_ratio_info_present_flag)
+    { /* aspect_ratio_idc */
+        PUT_BITS(ps_bitstrm, ps_vui->u1_aspect_ratio_idc, 8, return_status,
+                 "aspect_ratio_idc");
+        if(255 == ps_vui->u1_aspect_ratio_idc) /* Extended_SAR */
+        { /* sar_width */
+            PUT_BITS(ps_bitstrm, ps_vui->u2_sar_width, 16, return_status,
+                     "sar_width");
+            /* sar_height */
+            PUT_BITS(ps_bitstrm, ps_vui->u2_sar_height, 16, return_status,
+                     "sar_height");
+        }
+
+    }
     /* overscan_info_present_flag */
-    PUT_BITS(ps_bitstrm, ps_vui->u1_overscan_info_present_flag, 1, return_status, "overscan_info_present_flag");
+    PUT_BITS(ps_bitstrm, ps_vui->u1_overscan_info_present_flag, 1,
+             return_status, "overscan_info_present_flag");
 
+    if(ps_vui->u1_overscan_info_present_flag)
+    {
+        /* overscan_appropriate_flag */
+        PUT_BITS(ps_bitstrm, ps_vui->u1_overscan_appropriate_flag, 1,
+                 return_status, "overscan_appropriate_flag");
+
+    }
     /* video_signal_type_present_flag */
-    PUT_BITS(ps_bitstrm, ps_vui->u1_video_signal_type_present_flag, 1, return_status, "video_signal_type_present_flag");
+    PUT_BITS(ps_bitstrm, ps_vui->u1_video_signal_type_present_flag, 1,
+             return_status, "video_signal_type_present_flag");
+
+    if(ps_vui->u1_video_signal_type_present_flag)
+    { /* video_format */
+        PUT_BITS(ps_bitstrm, ps_vui->u1_video_format, 3, return_status,
+                 "video_format");
+
+        /* video_full_range_flag */
+        PUT_BITS(ps_bitstrm, ps_vui->u1_video_full_range_flag, 1, return_status,
+                 "video_full_range_flag");
+
+        /* colour_description_present_flag */
+        PUT_BITS(ps_bitstrm, ps_vui->u1_colour_description_present_flag, 1,
+                 return_status, "colour_description_present_flag");
+
+        if(ps_vui->u1_colour_description_present_flag)
+        {
+            /* colour_primaries */
+            PUT_BITS(ps_bitstrm, ps_vui->u1_colour_primaries, 8, return_status,
+                     "colour_primaries");
+
+            /* transfer_characteristics */
+            PUT_BITS(ps_bitstrm, ps_vui->u1_transfer_characteristics, 8,
+                     return_status, "transfer_characteristics");
+
+            /* matrix_coefficients */
+            PUT_BITS(ps_bitstrm, ps_vui->u1_matrix_coefficients, 8,
+                     return_status, "matrix_coefficients");
+        }
+
+    }
 
     /* chroma_loc_info_present_flag */
-    PUT_BITS(ps_bitstrm, ps_vui->u1_chroma_loc_info_present_flag, 1, return_status, "chroma_loc_info_present_flag");
+    PUT_BITS(ps_bitstrm, ps_vui->u1_chroma_loc_info_present_flag, 1,
+             return_status, "chroma_loc_info_present_flag");
+
+    if(ps_vui->u1_chroma_loc_info_present_flag)
+    {
+        /* chroma_sample_loc_type_top_field */
+        PUT_BITS_UEV(ps_bitstrm, ps_vui->u1_chroma_sample_loc_type_top_field,
+                     return_status, "chroma_sample_loc_type_top_field");
+
+        /* chroma_sample_loc_type_bottom_field */
+        PUT_BITS_UEV(ps_bitstrm, ps_vui->u1_chroma_sample_loc_type_bottom_field,
+                     return_status, "chroma_sample_loc_type_bottom_field");
+    }
 
     /* timing_info_present_flag */
-    PUT_BITS(ps_bitstrm, ps_vui->u1_vui_timing_info_present_flag, 1, return_status, "timing_info_present_flag");
+    PUT_BITS(ps_bitstrm, ps_vui->u1_vui_timing_info_present_flag, 1,
+             return_status, "timing_info_present_flag");
+
+    if(ps_vui->u1_vui_timing_info_present_flag)
+    {
+        /* num_units_in_tick */
+        PUT_BITS(ps_bitstrm, ps_vui->u4_vui_num_units_in_tick, 32,
+                 return_status, "num_units_in_tick");
+
+        /* time_scale */
+        PUT_BITS(ps_bitstrm, ps_vui->u4_vui_time_scale, 32, return_status,
+                 "time_scale");
+
+        /* fixed_frame_rate_flag */
+        PUT_BITS(ps_bitstrm, ps_vui->u1_fixed_frame_rate_flag, 1, return_status,
+                 "fixed_frame_rate_flag");
+
+    }
 
     /* nal_hrd_parameters_present_flag */
-    PUT_BITS(ps_bitstrm, ps_vui->u1_nal_hrd_parameters_present_flag, 1, return_status, "nal_hrd_parameters_present_flag");
+    PUT_BITS(ps_bitstrm, ps_vui->u1_nal_hrd_parameters_present_flag, 1,
+             return_status, "nal_hrd_parameters_present_flag");
+
+    if(ps_vui->u1_nal_hrd_parameters_present_flag)
+    {
+        hrd_params_t * ps_hrd_params = &ps_vui->s_nal_hrd_parameters;
+        WORD32 i;
+        /* cpb_cnt_minus1 */
+        PUT_BITS_UEV(ps_bitstrm, ps_hrd_params->u1_cpb_cnt_minus1,
+                     return_status, "cpb_cnt_minus1");
+
+        /* bit_rate_scale */
+        PUT_BITS(ps_bitstrm, ps_hrd_params->u4_bit_rate_scale, 4, return_status,
+                 "bit_rate_scale");
+
+        /* cpb_size_scale */
+        PUT_BITS(ps_bitstrm, ps_hrd_params->u4_cpb_size_scale, 4, return_status,
+                 "cpb_size_scale");
+        for(i = 0; i < ps_hrd_params->u1_cpb_cnt_minus1; i++)
+        {
+            /* bit_rate_value_minus1[SchedSelIdx] */
+            PUT_BITS_UEV(ps_bitstrm,
+                         ps_hrd_params->au4_bit_rate_value_minus1[i],
+                         return_status, "bit_rate_value_minus1[SchedSelIdx]");
+
+            /* cpb_size_value_minus1[SchedSelIdx] */
+            PUT_BITS_UEV(ps_bitstrm,
+                         ps_hrd_params->au4_cpb_size_value_minus1[i],
+                         return_status, "cpb_size_value_minus1[SchedSelIdx]");
+
+            /* cbr_flag[SchedSelIdx] */
+            PUT_BITS(ps_bitstrm, ps_hrd_params->au1_cbr_flag[i], 1,
+                     return_status, "cbr_flag[SchedSelIdx]");
+        }
+
+        /* initial_cpb_removal_delay_length_minus1 */
+        PUT_BITS(ps_bitstrm,
+                 ps_hrd_params->u1_initial_cpb_removal_delay_length_minus1, 5,
+                 return_status, "initial_cpb_removal_delay_length_minus1");
+
+        /* cpb_removal_delay_length_minus1 */
+        PUT_BITS(ps_bitstrm, ps_hrd_params->u1_cpb_removal_delay_length_minus1,
+                 5, return_status, "cpb_removal_delay_length_minus1");
+
+        /* dpb_output_delay_length_minus1 */
+        PUT_BITS(ps_bitstrm, ps_hrd_params->u1_dpb_output_delay_length_minus1,
+                 5, return_status, "dpb_output_delay_length_minus1");
+
+        /* time_offset_length */
+        PUT_BITS(ps_bitstrm, ps_hrd_params->u1_time_offset_length, 5,
+                 return_status, "time_offset_length");
+    }
 
     /* vcl_hrd_parameters_present_flag */
-    PUT_BITS(ps_bitstrm, ps_vui->u1_vcl_hrd_parameters_present_flag, 1, return_status, "vcl_hrd_parameters_present_flag");
+    PUT_BITS(ps_bitstrm, ps_vui->u1_vcl_hrd_parameters_present_flag, 1,
+             return_status, "vcl_hrd_parameters_present_flag");
 
+    if(ps_vui->u1_vcl_hrd_parameters_present_flag)
+    {
+        hrd_params_t * ps_hrd_params = &ps_vui->s_vcl_hrd_parameters;
+        WORD32 i;
+        /* cpb_cnt_minus1 */
+        PUT_BITS_UEV(ps_bitstrm, ps_hrd_params->u1_cpb_cnt_minus1,
+                     return_status, "cpb_cnt_minus1");
+
+        /* bit_rate_scale */
+        PUT_BITS(ps_bitstrm, ps_hrd_params->u4_bit_rate_scale, 4, return_status,
+                 "bit_rate_scale");
+
+        /* cpb_size_scale */
+        PUT_BITS(ps_bitstrm, ps_hrd_params->u4_cpb_size_scale, 4, return_status,
+                 "cpb_size_scale");
+        for(i = 0; i < ps_hrd_params->u1_cpb_cnt_minus1; i++)
+        {
+            /* bit_rate_value_minus1[SchedSelIdx] */
+            PUT_BITS_UEV(ps_bitstrm,
+                         ps_hrd_params->au4_bit_rate_value_minus1[i],
+                         return_status, "bit_rate_value_minus1[SchedSelIdx]");
+
+            /* cpb_size_value_minus1[SchedSelIdx] */
+            PUT_BITS_UEV(ps_bitstrm,
+                         ps_hrd_params->au4_cpb_size_value_minus1[i],
+                         return_status, "cpb_size_value_minus1[SchedSelIdx]");
+
+            /* cbr_flag[SchedSelIdx] */
+            PUT_BITS(ps_bitstrm, ps_hrd_params->au1_cbr_flag[i], 1,
+                     return_status, "cbr_flag[SchedSelIdx]");
+        }
+
+        /* initial_cpb_removal_delay_length_minus1 */
+        PUT_BITS(ps_bitstrm,
+                 ps_hrd_params->u1_initial_cpb_removal_delay_length_minus1, 5,
+                 return_status, "initial_cpb_removal_delay_length_minus1");
+
+        /* cpb_removal_delay_length_minus1 */
+        PUT_BITS(ps_bitstrm, ps_hrd_params->u1_cpb_removal_delay_length_minus1,
+                 5, return_status, "cpb_removal_delay_length_minus1");
+
+        /* dpb_output_delay_length_minus1 */
+        PUT_BITS(ps_bitstrm, ps_hrd_params->u1_dpb_output_delay_length_minus1,
+                 5, return_status, "dpb_output_delay_length_minus1");
+
+        /* time_offset_length */
+        PUT_BITS(ps_bitstrm, ps_hrd_params->u1_time_offset_length, 5,
+                 return_status, "time_offset_length");
+    }
+
+    if(ps_vui->u1_nal_hrd_parameters_present_flag
+                    || ps_vui->u1_vcl_hrd_parameters_present_flag)
+    {
+        /* low_delay_hrd_flag */
+        PUT_BITS(ps_bitstrm, ps_vui->u1_low_delay_hrd_flag, 1, return_status,
+                 "low_delay_hrd_flag");
+    }
     /* pic_struct_present_flag */
-    PUT_BITS(ps_bitstrm, ps_vui->u1_pic_struct_present_flag, 1, return_status, "pic_struct_present_flag");
+    PUT_BITS(ps_bitstrm, ps_vui->u1_pic_struct_present_flag, 1, return_status,
+             "pic_struct_present_flag");
 
     /* bitstream_restriction_flag */
-    PUT_BITS(ps_bitstrm, ps_vui->u1_bitstream_restriction_flag, 1, return_status, "bitstream_restriction_flag");
+    PUT_BITS(ps_bitstrm, ps_vui->u1_bitstream_restriction_flag, 1,
+             return_status, "bitstream_restriction_flag");
 
     if(ps_vui->u1_bitstream_restriction_flag == 1)
     {
         /* motion_vectors_over_pic_boundaries_flag */
-        PUT_BITS(ps_bitstrm, ps_vui->u1_motion_vectors_over_pic_boundaries_flag, 1, return_status, "motion_vectors_over_pic_boundaries_flag");
+        PUT_BITS(ps_bitstrm, ps_vui->u1_motion_vectors_over_pic_boundaries_flag,
+                 1, return_status, "motion_vectors_over_pic_boundaries_flag");
 
         /* max_bytes_per_pic_denom */
-        PUT_BITS_UEV(ps_bitstrm,ps_vui->u1_max_bytes_per_pic_denom,return_status,"max_bytes_per_pic_denom");
+        PUT_BITS_UEV(ps_bitstrm, ps_vui->u1_max_bytes_per_pic_denom,
+                     return_status, "max_bytes_per_pic_denom");
 
         /* max_bits_per_mb_denom */
-        PUT_BITS_UEV(ps_bitstrm,ps_vui->u1_max_bits_per_mb_denom,return_status,"max_bits_per_mb_denom");
+        PUT_BITS_UEV(ps_bitstrm, ps_vui->u1_max_bits_per_mb_denom,
+                     return_status, "max_bits_per_mb_denom");
 
         /* log2_max_mv_length_horizontal */
-        PUT_BITS_UEV(ps_bitstrm,ps_vui->u1_log2_max_mv_length_horizontal,return_status,"log2_max_mv_length_horizontal");
+        PUT_BITS_UEV(ps_bitstrm, ps_vui->u1_log2_max_mv_length_horizontal,
+                     return_status, "log2_max_mv_length_horizontal");
 
         /* log2_max_mv_length_vertical */
-        PUT_BITS_UEV(ps_bitstrm,ps_vui->u1_log2_max_mv_length_vertical,return_status,"log2_max_mv_length_vertical");
+        PUT_BITS_UEV(ps_bitstrm, ps_vui->u1_log2_max_mv_length_vertical,
+                     return_status, "log2_max_mv_length_vertical");
 
         /* max_num_reorder_frames */
-        PUT_BITS_UEV(ps_bitstrm,ps_vui->u1_num_reorder_frames,return_status,"max_num_reorder_frames");
+        PUT_BITS_UEV(ps_bitstrm, ps_vui->u1_num_reorder_frames, return_status,
+                     "max_num_reorder_frames");
 
         /* max_dec_frame_buffering */
-        PUT_BITS_UEV(ps_bitstrm,ps_vui->u1_max_dec_frame_buffering,return_status,"max_dec_frame_buffering");
+        PUT_BITS_UEV(ps_bitstrm, ps_vui->u1_max_dec_frame_buffering,
+                     return_status, "max_dec_frame_buffering");
     }
 
     return return_status;
@@ -728,26 +929,20 @@
 * @param[in]   ps_codec
 *  pointer to encoder context
 *
-* @param[out]  ps_vui
-*  pointer to vui params that needs to be populated
-*
 * @return      success or failure error code
 *
 ******************************************************************************
 */
-IH264E_ERROR_T ih264e_populate_vui(codec_t *ps_codec, vui_t *ps_vui)
+IH264E_ERROR_T ih264e_populate_vui(codec_t *ps_codec)
 {
-    sps_t *ps_sps;
 
-    ps_sps = ps_codec->ps_sps_base + ps_codec->i4_sps_id;
-    ps_vui->u1_aspect_ratio_info_present_flag = 0;
-    ps_vui->u1_overscan_info_present_flag = 0;
-    ps_vui->u1_video_signal_type_present_flag = 0;
-    ps_vui->u1_chroma_loc_info_present_flag = 0;
-    ps_vui->u1_vui_timing_info_present_flag = 0;
+    vui_t *ps_vui = &ps_codec->s_cfg.s_vui;
+    sps_t *ps_sps = ps_codec->ps_sps_base + ps_codec->i4_sps_id;
+
+
     ps_vui->u1_nal_hrd_parameters_present_flag = 0;
     ps_vui->u1_vcl_hrd_parameters_present_flag = 0;
-    ps_vui->u1_pic_struct_present_flag = 0;
+
     ps_vui->u1_bitstream_restriction_flag = 1;
     ps_vui->u1_motion_vectors_over_pic_boundaries_flag = 1;
     ps_vui->u1_max_bytes_per_pic_denom = 0;
@@ -766,6 +961,7 @@
 
     ps_vui->u1_max_dec_frame_buffering = ps_sps->u1_max_num_ref_frames;
 
+
     return 0;
 }
 
@@ -961,7 +1157,7 @@
     if (ps_sps->i1_vui_parameters_present_flag)
     {
         /* populate vui params */
-        ih264e_populate_vui(ps_codec,&(ps_codec->s_vui));
+        ih264e_populate_vui(ps_codec);
     }
 
     return i4_err_code;
diff --git a/encoder/ih264e_process.c b/encoder/ih264e_process.c
index fce7e35..796c983 100644
--- a/encoder/ih264e_process.c
+++ b/encoder/ih264e_process.c
@@ -181,7 +181,8 @@
     ps_entropy->i4_error_code = IH264E_SUCCESS;
 
     /* generate sps */
-    ps_entropy->i4_error_code |= ih264e_generate_sps(ps_bitstrm, ps_sps, &ps_codec->s_vui);
+    ps_entropy->i4_error_code |= ih264e_generate_sps(ps_bitstrm, ps_sps,
+                                                     &ps_codec->s_cfg.s_vui);
 
     /* generate pps */
     ps_entropy->i4_error_code |= ih264e_generate_pps(ps_bitstrm, ps_pps, ps_sps);
@@ -371,8 +372,8 @@
         if (1 == ps_entropy->i4_gen_header)
         {
             /* generate sps */
-            ps_entropy->i4_error_code |= ih264e_generate_sps(ps_bitstrm, ps_sps, &ps_codec->s_vui);
-
+            ps_entropy->i4_error_code |= ih264e_generate_sps(ps_bitstrm, ps_sps,
+                                                             &ps_codec->s_cfg.s_vui);
             /* generate pps */
             ps_entropy->i4_error_code |= ih264e_generate_pps(ps_bitstrm, ps_pps, ps_sps);
 
diff --git a/encoder/ih264e_structs.h b/encoder/ih264e_structs.h
index 074731e..6cbce7c 100644
--- a/encoder/ih264e_structs.h
+++ b/encoder/ih264e_structs.h
@@ -563,6 +563,9 @@
      */
     UWORD32                                     u4_mb_info_type;
 
+    /** VUI structure                                                         */
+    vui_t                                       s_vui;
+
 }cfg_params_t;
 
 
@@ -2618,11 +2621,6 @@
     rate_control_ctxt_t s_rate_control;
 
     /**
-     * VUI structure
-     */
-    vui_t s_vui;
-
-    /**
      * input buffer queue
      */
     inp_buf_t as_inp_list[MAX_NUM_BFRAMES];
diff --git a/encoder/ive2.h b/encoder/ive2.h
index 411f376..b2c00d5 100644
--- a/encoder/ive2.h
+++ b/encoder/ive2.h
@@ -139,6 +139,7 @@
     IVE_CMD_CTL_SET_PROFILE_PARAMS          = 0XB,
     IVE_CMD_CTL_SET_DEBLOCK_PARAMS          = 0XC,
     IVE_CMD_CTL_SET_IPE_PARAMS              = 0XD,
+    IVE_CMD_CTL_SET_VUI_PARAMS              = 0XE,
     IVE_CMD_CTL_SET_NUM_CORES               = 0x30,
     IVE_CMD_CTL_RESET                       = 0xA0,
     IVE_CMD_CTL_FLUSH                       = 0xB0,
@@ -235,7 +236,8 @@
     IVE_ERR_OP_CTL_SETVBVPARAMS_API_STRUCT_SIZE_INCORRECT       = 0x3D,
     IVE_ERR_IP_CTL_SETPROFILE_API_STRUCT_SIZE_INCORRECT         = 0x3E,
     IVE_ERR_OP_CTL_SETPROFILE_API_STRUCT_SIZE_INCORRECT         = 0x3F,
-
+    IVE_ERR_IP_CTL_SET_VUI_STRUCT_SIZE_INCORRECT                = 0x40,
+    IVE_ERR_OP_CTL_SET_VUI_STRUCT_SIZE_INCORRECT                = 0x41,
 }IVE_ERROR_CODES_T;
 
 
diff --git a/test/decoder/main.c b/test/decoder/main.c
index 875ed3d..ea7fca3 100644
--- a/test/decoder/main.c
+++ b/test/decoder/main.c
@@ -2607,7 +2607,30 @@
 */
     }
 
+    /*************************************************************************/
+    /* Get VUI parameters                                                    */
+    /*************************************************************************/
+    {
 
+        ih264d_ctl_get_vui_params_ip_t s_ctl_get_vui_params_ip;
+        ih264d_ctl_get_vui_params_op_t s_ctl_get_vui_params_op;
+
+        s_ctl_get_vui_params_ip.e_cmd = IVD_CMD_VIDEO_CTL;
+        s_ctl_get_vui_params_ip.e_sub_cmd =
+                        (IVD_CONTROL_API_COMMAND_TYPE_T)IH264D_CMD_CTL_GET_VUI_PARAMS;
+        s_ctl_get_vui_params_ip.u4_size =
+                        sizeof(ih264d_ctl_get_vui_params_ip_t);
+        s_ctl_get_vui_params_op.u4_size =
+                        sizeof(ih264d_ctl_get_vui_params_op_t);
+
+        ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_get_vui_params_ip,
+                             (void *)&s_ctl_get_vui_params_op);
+        if(IV_SUCCESS != ret)
+        {
+            sprintf(ac_error_str, "Error in Get VUI params");
+            //codec_exit(ac_error_str);
+        }
+    }
 
     /*************************************************************************/
     /* Set the decoder in frame decode mode. It was set in header decode     */
diff --git a/test/encoder/main.c b/test/encoder/main.c
index 0c7d4f0..bc25e8d 100644
--- a/test/encoder/main.c
+++ b/test/encoder/main.c
@@ -1445,6 +1445,65 @@
     return;
 }
 
+
+void set_vui_params(app_ctxt_t *ps_app_ctxt)
+{
+    IV_STATUS_T status;
+
+    ih264e_vui_ip_t s_vui_params_ip;
+    ih264e_vui_op_t s_vui_params_op;
+
+    s_vui_params_ip.e_cmd = IVE_CMD_VIDEO_CTL;
+    s_vui_params_ip.e_sub_cmd = IVE_CMD_CTL_SET_VUI_PARAMS;
+
+    s_vui_params_ip.u1_aspect_ratio_info_present_flag = 0;
+    s_vui_params_ip.u1_aspect_ratio_idc = 0;
+    s_vui_params_ip.u2_sar_width = 0;
+    s_vui_params_ip.u2_sar_height = 0;
+    s_vui_params_ip.u1_overscan_info_present_flag = 0;
+    s_vui_params_ip.u1_overscan_appropriate_flag = 0;
+    s_vui_params_ip.u1_video_signal_type_present_flag = 0;
+    s_vui_params_ip.u1_video_format = 0;
+    s_vui_params_ip.u1_video_full_range_flag = 0;
+    s_vui_params_ip.u1_colour_description_present_flag = 0;
+    s_vui_params_ip.u1_colour_primaries = 0;
+    s_vui_params_ip.u1_transfer_characteristics = 0;
+    s_vui_params_ip.u1_matrix_coefficients = 0;
+    s_vui_params_ip.u1_chroma_loc_info_present_flag = 0;
+    s_vui_params_ip.u1_chroma_sample_loc_type_top_field = 0;
+    s_vui_params_ip.u1_chroma_sample_loc_type_bottom_field = 0;
+    s_vui_params_ip.u1_vui_timing_info_present_flag = 0;
+    s_vui_params_ip.u4_vui_num_units_in_tick = 0;
+    s_vui_params_ip.u4_vui_time_scale = 0;
+    s_vui_params_ip.u1_fixed_frame_rate_flag = 0;
+    s_vui_params_ip.u1_nal_hrd_parameters_present_flag = 0;
+    s_vui_params_ip.u1_vcl_hrd_parameters_present_flag = 0;
+    s_vui_params_ip.u1_low_delay_hrd_flag = 0;
+    s_vui_params_ip.u1_pic_struct_present_flag = 0;
+    s_vui_params_ip.u1_bitstream_restriction_flag = 0;
+    s_vui_params_ip.u1_motion_vectors_over_pic_boundaries_flag = 0;
+    s_vui_params_ip.u1_max_bytes_per_pic_denom = 0;
+    s_vui_params_ip.u1_max_bits_per_mb_denom = 0;
+    s_vui_params_ip.u1_log2_max_mv_length_horizontal = 0;
+    s_vui_params_ip.u1_log2_max_mv_length_vertical = 0;
+    s_vui_params_ip.u1_num_reorder_frames = 0;
+    s_vui_params_ip.u1_max_dec_frame_buffering = 0;
+
+
+    s_vui_params_ip.u4_size = sizeof(ih264e_vui_ip_t);
+    s_vui_params_op.u4_size = sizeof(ih264e_vui_op_t);
+
+    status = ih264e_api_function(ps_app_ctxt->ps_enc, &s_vui_params_ip,
+                                      &s_vui_params_op);
+    if(status != IV_SUCCESS)
+    {
+        CHAR ac_error[STRLENGTH];
+        sprintf(ac_error, "Unable to set vui params = 0x%x\n",
+                s_vui_params_op.u4_error_code);
+        codec_exit(ac_error);
+    }
+    return;
+}
 #define PEAK_WINDOW_SIZE    8
 
 void synchronous_encode(iv_obj_t *ps_enc, app_ctxt_t *ps_app_ctxt)
@@ -2477,6 +2536,11 @@
     /*****************************************************************************/
     set_enc_mode(&s_app_ctxt, 0, 0, IVE_ENC_MODE_PICTURE);
 
+    /*****************************************************************************/
+    /*   Video usability information                                             */
+    /*****************************************************************************/
+    set_vui_params(&s_app_ctxt);
+
 #ifdef IOS
     /* Correct file paths */
     sprintf(filename_with_path, "%s/%s", documentdir, s_app_ctxt.ac_ip_fname);
