Change mm_attr structure
[platform/core/multimedia/libmm-streamrecorder.git] / src / mm_streamrecorder_attribute.c
index ce9a771..6db79d1 100644 (file)
@@ -48,8 +48,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,                      /* Flag */
         {(void *)MM_STREAMRECORDER_VIDEO_TYPE_TBM_BO}, /* Default value */
         MM_ATTRS_VALID_TYPE_INT_RANGE, /* Validity type */
-        MM_STREAMRECORDER_VIDEO_TYPE_TBM_BO,   /* Validity val1 (min, *array,...) */
-        MM_STREAMRECORDER_VIDEO_TYPE_NORMAL_BUFFER,    /* Validity val2 (max, count, ...) */
+        {.int_min = MM_STREAMRECORDER_VIDEO_TYPE_TBM_BO},      /* Validity val1 (min, *array,...) */
+        {.int_max = MM_STREAMRECORDER_VIDEO_TYPE_NORMAL_BUFFER},       /* Validity val2 (max, count, ...) */
         NULL,                                          /* Runtime setting function of the attribute */
         },
        /* 1  */
@@ -59,8 +59,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)MM_STREAMRECORDER_INPUT_FORMAT_NV12},
         MM_ATTRS_VALID_TYPE_INT_RANGE,
-        MM_STREAMRECORDER_INPUT_FORMAT_INVALID,
-        MM_STREAMRECORDER_INPUT_FORMAT_NUM,
+        {.int_min = MM_STREAMRECORDER_INPUT_FORMAT_INVALID},
+        {.int_max = MM_STREAMRECORDER_INPUT_FORMAT_NUM},
         NULL,
         },
        /* 2  */
@@ -71,8 +71,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)0},
         MM_ATTRS_VALID_TYPE_INT_RANGE,
-        0,
-        _MMSTREAMRECORDER_MAX_INT,
+        {.int_min = 0},
+        {.int_max = _MMSTREAMRECORDER_MAX_INT},
         NULL,
         },
        /* 3  */
@@ -83,8 +83,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)0},
         MM_ATTRS_VALID_TYPE_INT_RANGE,
-        0,
-        _MMSTREAMRECORDER_MAX_INT,
+        {.int_min = 0},
+        {.int_max = _MMSTREAMRECORDER_MAX_INT},
         NULL,    /*_mmstreamrecorder_commit_video_bitrate, */
         },
        /* 4  */
@@ -95,8 +95,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)0},
         MM_ATTRS_VALID_TYPE_INT_ARRAY,
-        0,
-        0,
+        {.int_array = NULL},
+        {.count = 0},
         NULL,
         },
        /* 5  */
@@ -107,8 +107,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)0},
         MM_ATTRS_VALID_TYPE_INT_ARRAY,
-        0,
-        0,
+        {.int_array = NULL},
+        {.count = 0},
         NULL,
         },
        /* 6  */
@@ -118,9 +118,9 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MMF_VALUE_TYPE_INT,
         MM_ATTRS_FLAG_RW,
         {(void *)MM_STREAMRECORDER_AUDIO_FORMAT_PCM_S16_LE},
-        MMF_VALUE_TYPE_INT,
-        MM_STREAMRECORDER_AUDIO_FORMAT_PCM_U8,
-        MM_STREAMRECORDER_AUDIO_FORMAT_PCM_S16_LE,
+        MM_ATTRS_VALID_TYPE_INT_RANGE,
+        {.int_min = MM_STREAMRECORDER_AUDIO_FORMAT_PCM_U8},
+        {.int_max = MM_STREAMRECORDER_AUDIO_FORMAT_PCM_S16_LE},
         _mmstreamrecorder_commit_audio_bitformat,
         },
        /* 7  */
@@ -131,8 +131,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)128000},
         MM_ATTRS_VALID_TYPE_INT_RANGE,
-        0,
-        _MMSTREAMRECORDER_MAX_INT,
+        {.int_min = 0},
+        {.int_max = _MMSTREAMRECORDER_MAX_INT},
         _mmstreamrecorder_commit_audio_bitrate,
         },
        /* 8  */
@@ -143,8 +143,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)0},
         MM_ATTRS_VALID_TYPE_INT_RANGE,
-        0,
-        _MMSTREAMRECORDER_MAX_INT,
+        {.int_min = 0},
+        {.int_max = _MMSTREAMRECORDER_MAX_INT},
         _mmstreamrecorder_commit_audio_samplingrate,
         },
        /* 9  */
@@ -155,8 +155,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)0},
         MM_ATTRS_VALID_TYPE_INT_ARRAY,
-        0,
-        0,
+        {.int_array = NULL},
+        {.count = 0},
         _mmstreamrecorder_commit_video_encoder,
         },
        /* 10  */
@@ -167,8 +167,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)0},
         MM_ATTRS_VALID_TYPE_INT_ARRAY,
-        0,
-        0,
+        {.int_array = NULL},
+        {.count = 0},
         _mmstreamrecorder_commit_audio_encoder,
         },
        /* 11  */
@@ -179,8 +179,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)2},
         MM_ATTRS_VALID_TYPE_INT_RANGE,
-        0,
-        _MMSTREAMRECORDER_MAX_INT,
+        {.int_min = 0},
+        {.int_max = _MMSTREAMRECORDER_MAX_INT},
         _mmstreamrecorder_commit_audio_channel,
         },
        /* 12  */
@@ -191,8 +191,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)0},
         MM_ATTRS_VALID_TYPE_INT_ARRAY,
-        0,
-        0,
+        {.int_array = NULL},
+        {.count = 0},
         NULL,
         },
        /* 13  */
@@ -203,8 +203,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {NULL},
         MM_ATTRS_VALID_TYPE_NONE,
-        0,
-        0,
+        {0},
+        {0},
         NULL,
         },
        /* 14  */
@@ -215,8 +215,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)FALSE},
         MM_ATTRS_VALID_TYPE_NONE,
-        0,
-        _MMSTREAMRECORDER_MAX_INT,
+        {0},
+        {_MMSTREAMRECORDER_MAX_INT},
         _mmstreamrecorder_commit_video_enable,
         },
        /* 15  */
@@ -227,8 +227,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)FALSE},
         MM_ATTRS_VALID_TYPE_NONE,
-        0,
-        _MMSTREAMRECORDER_MAX_INT,
+        {0},
+        {_MMSTREAMRECORDER_MAX_INT},
         _mmstreamrecorder_commit_audio_enable,
         },
        /* 16 */
@@ -239,8 +239,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)MM_STREAMRECORDER_MODE_MEDIABUFFER},
         MM_ATTRS_VALID_TYPE_NONE,
-        0,
-        _MMSTREAMRECORDER_MAX_INT,
+        {0},
+        {_MMSTREAMRECORDER_MAX_INT},
         NULL,
         },
        /*17*/
@@ -251,8 +251,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)0},
         MM_ATTRS_VALID_TYPE_INT_RANGE,
-        0,
-        _MMSTREAMRECORDER_MAX_INT,
+        {.int_min = 0},
+        {.int_max = _MMSTREAMRECORDER_MAX_INT},
         NULL,
        },
        /*18*/
@@ -263,8 +263,8 @@ mm_streamrecorder_attr_construct_info stream_attrs_const_info[] = {
         MM_ATTRS_FLAG_RW,
         {(void *)0},
         MM_ATTRS_VALID_TYPE_INT_RANGE,
-        0,
-        _MMSTREAMRECORDER_MAX_INT,
+        {.int_min = 0},
+        {.int_max = _MMSTREAMRECORDER_MAX_INT},
         NULL,
        },
 
@@ -288,28 +288,28 @@ static int __mmstreamrecorder_set_conf_to_valid_info(MMHandleType handle)
 
        /* Video width */
        total_count = _mmstreamrecorder_get_available_format(handle, KEYWORD_VIDEO_WIDTH, &format);
-       stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_WIDTH].validity_value1 = (int)format;
-       stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_WIDTH].validity_value2 = (int)total_count;
+       stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_WIDTH].validity_value_1.int_array = format;
+       stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_WIDTH].validity_value_2.count = total_count;
 
        /* Video height */
        total_count = _mmstreamrecorder_get_available_format(handle, KEYWORD_VIDEO_HEIGHT,  &format);
-       stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_HEIGHT].validity_value1 = (int)format;
-       stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_HEIGHT].validity_value2 = (int)total_count;
+       stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_HEIGHT].validity_value_1.int_array = format;
+       stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_HEIGHT].validity_value_2.count = total_count;
 
        /* Audio encoder */
        total_count = _mmstreamrecorder_get_available_format(handle, KEYWORD_AUDIO_ENCODERS, &format);
-       stream_attrs_const_info[MM_STR_AUDIO_ENCODER].validity_value1 = (int)format;
-       stream_attrs_const_info[MM_STR_AUDIO_ENCODER].validity_value2 = (int)total_count;
+       stream_attrs_const_info[MM_STR_AUDIO_ENCODER].validity_value_1.int_array = format;
+       stream_attrs_const_info[MM_STR_AUDIO_ENCODER].validity_value_2.count = total_count;
 
        /*Video encoder*/
        total_count = _mmstreamrecorder_get_available_format(handle, KEYWORD_VIDEO_ENCODERS, &format);
-       stream_attrs_const_info[MM_STR_VIDEO_ENCODER].validity_value1 = (int)format;
-       stream_attrs_const_info[MM_STR_VIDEO_ENCODER].validity_value2 = (int)total_count;
+       stream_attrs_const_info[MM_STR_VIDEO_ENCODER].validity_value_1.int_array = format;
+       stream_attrs_const_info[MM_STR_VIDEO_ENCODER].validity_value_2.count = total_count;
 
        /* File Format */
        total_count = _mmstreamrecorder_get_available_format(handle, KEYWORD_FILE_FORMATS, &format);
-       stream_attrs_const_info[MM_STR_FILE_FORMAT].validity_value1 = (int)format;
-       stream_attrs_const_info[MM_STR_FILE_FORMAT].validity_value2 = (int)total_count;
+       stream_attrs_const_info[MM_STR_FILE_FORMAT].validity_value_1.int_array = format;
+       stream_attrs_const_info[MM_STR_FILE_FORMAT].validity_value_2.count = total_count;
 
        return MM_ERROR_NONE;
 }
@@ -320,39 +320,39 @@ static int __mmstreamrecorder_release_conf_valid_info(MMHandleType handle)
 
        _mmstreamrec_dbg_log("START");
 
-       allocated_memory = (int *)(stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_WIDTH].validity_value1);
+       allocated_memory = (int *)(stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_WIDTH].validity_value_1.int_array);
        if (allocated_memory) {
                free(allocated_memory);
-               stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_WIDTH].validity_value1 = (int)NULL;
-               stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_WIDTH].validity_value2 = (int)0;
+               stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_WIDTH].validity_value_1.int_array = NULL;
+               stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_WIDTH].validity_value_2.count = 0;
        }
 
-       allocated_memory = (int *)(stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_HEIGHT].validity_value1);
+       allocated_memory = (int *)(stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_HEIGHT].validity_value_1.int_array);
        if (allocated_memory) {
                free(allocated_memory);
-               stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_HEIGHT].validity_value1 = (int)NULL;
-               stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_HEIGHT].validity_value2 = (int)0;
+               stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_HEIGHT].validity_value_1.int_array = NULL;
+               stream_attrs_const_info[MM_STR_VIDEO_RESOLUTION_HEIGHT].validity_value_2.count = 0;
        }
 
-       allocated_memory = (int *)(stream_attrs_const_info[MM_STR_AUDIO_ENCODER].validity_value1);
+       allocated_memory = (int *)(stream_attrs_const_info[MM_STR_AUDIO_ENCODER].validity_value_1.int_array);
        if (allocated_memory) {
                free(allocated_memory);
-               stream_attrs_const_info[MM_STR_AUDIO_ENCODER].validity_value1 = (int)NULL;
-               stream_attrs_const_info[MM_STR_AUDIO_ENCODER].validity_value2 = (int)0;
+               stream_attrs_const_info[MM_STR_AUDIO_ENCODER].validity_value_1.int_array = NULL;
+               stream_attrs_const_info[MM_STR_AUDIO_ENCODER].validity_value_2.count = 0;
        }
 
-       allocated_memory = (int *)(stream_attrs_const_info[MM_STR_VIDEO_ENCODER].validity_value1);
+       allocated_memory = (int *)(stream_attrs_const_info[MM_STR_VIDEO_ENCODER].validity_value_1.int_array);
        if (allocated_memory) {
                free(allocated_memory);
-               stream_attrs_const_info[MM_STR_VIDEO_ENCODER].validity_value1 = (int)NULL;
-               stream_attrs_const_info[MM_STR_VIDEO_ENCODER].validity_value2 = (int)0;
+               stream_attrs_const_info[MM_STR_VIDEO_ENCODER].validity_value_1.int_array = NULL;
+               stream_attrs_const_info[MM_STR_VIDEO_ENCODER].validity_value_2.count = 0;
        }
 
-       allocated_memory = (int *)(stream_attrs_const_info[MM_STR_FILE_FORMAT].validity_value1);
+       allocated_memory = (int *)(stream_attrs_const_info[MM_STR_FILE_FORMAT].validity_value_1.int_array);
        if (allocated_memory) {
                free(allocated_memory);
-               stream_attrs_const_info[MM_STR_FILE_FORMAT].validity_value1 = (int)NULL;
-               stream_attrs_const_info[MM_STR_FILE_FORMAT].validity_value2 = (int)0;
+               stream_attrs_const_info[MM_STR_FILE_FORMAT].validity_value_1.int_array = NULL;
+               stream_attrs_const_info[MM_STR_FILE_FORMAT].validity_value_2.count = 0;
        }
        _mmstreamrec_dbg_log("DONE");
 
@@ -789,18 +789,32 @@ MMHandleType _mmstreamrecorder_alloc_attribute(MMHandleType handle)
 
                switch (stream_attrs_const_info[idx].validity_type) {
                case MM_ATTRS_VALID_TYPE_INT_ARRAY:
-                       if (stream_attrs_const_info[idx].validity_value1 && stream_attrs_const_info[idx].validity_value2 > 0)
-                               mmf_attrs_set_valid_array(attrs, idx, (const int *)(stream_attrs_const_info[idx].validity_value1), stream_attrs_const_info[idx].validity_value2, (int)(stream_attrs_const_info[idx].default_value.value_int));
+                       if (stream_attrs_const_info[idx].validity_value_1.int_array &&
+                                       stream_attrs_const_info[idx].validity_value_2.count > 0)
+                               mmf_attrs_set_valid_array(attrs, idx,
+                                               (const int *)(stream_attrs_const_info[idx].validity_value_1.int_array),
+                                               stream_attrs_const_info[idx].validity_value_2.count,
+                                               stream_attrs_const_info[idx].default_value.value_int);
                        break;
                case MM_ATTRS_VALID_TYPE_INT_RANGE:
-                       mmf_attrs_set_valid_range(attrs, idx, stream_attrs_const_info[idx].validity_value1, stream_attrs_const_info[idx].validity_value2, (int)(stream_attrs_const_info[idx].default_value.value_int));
+                       mmf_attrs_set_valid_range(attrs, idx,
+                                       stream_attrs_const_info[idx].validity_value_1.int_min,
+                                       stream_attrs_const_info[idx].validity_value_2.int_max,
+                                       stream_attrs_const_info[idx].default_value.value_int);
                        break;
                case MM_ATTRS_VALID_TYPE_DOUBLE_ARRAY:
-                       if (stream_attrs_const_info[idx].validity_value1 && stream_attrs_const_info[idx].validity_value2 > 0)
-                               mmf_attrs_set_valid_double_array(attrs, idx, (const double *)(stream_attrs_const_info[idx].validity_value1), stream_attrs_const_info[idx].validity_value2, (double)(stream_attrs_const_info[idx].default_value.value_double));
+                       if (stream_attrs_const_info[idx].validity_value_1.double_array &&
+                                       stream_attrs_const_info[idx].validity_value_2.count > 0)
+                               mmf_attrs_set_valid_double_array(attrs, idx,
+                                               (const double *)(stream_attrs_const_info[idx].validity_value_1.double_array),
+                                               stream_attrs_const_info[idx].validity_value_2.count,
+                                               stream_attrs_const_info[idx].default_value.value_double);
                        break;
                case MM_ATTRS_VALID_TYPE_DOUBLE_RANGE:
-                       mmf_attrs_set_valid_double_range(attrs, idx, (double)(stream_attrs_const_info[idx].validity_value1), (double)(stream_attrs_const_info[idx].validity_value2), (double)(stream_attrs_const_info[idx].default_value.value_double));
+                       mmf_attrs_set_valid_double_range(attrs, idx,
+                                       stream_attrs_const_info[idx].validity_value_1.double_min,
+                                       stream_attrs_const_info[idx].validity_value_2.double_max,
+                                       stream_attrs_const_info[idx].default_value.value_double);
                        break;
                case MM_ATTRS_VALID_TYPE_NONE:
                        break;