/* 0 */
{
MM_STR_VIDEO_BUFFER_TYPE, /* ID */
- "videobuffer-type", /* Name */
+ (char *)"videobuffer-type", /* Name */
MMF_VALUE_TYPE_INT, /* Type */
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 */
{MM_STR_VIDEO_FORMAT,
- "videosource-format",
+ (char *)"videosource-format",
MMF_VALUE_TYPE_INT,
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 */
{
MM_STR_VIDEO_FRAMERATE,
- "video-framerate",
+ (char *)"video-framerate",
MMF_VALUE_TYPE_INT,
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 */
{
MM_STR_VIDEO_ENCODER_BITRATE,
- "video-bitrate",
+ (char *)"video-bitrate",
MMF_VALUE_TYPE_INT,
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 */
{
MM_STR_VIDEO_RESOLUTION_WIDTH,
- "video-resolution-width",
+ (char *)"video-resolution-width",
MMF_VALUE_TYPE_INT,
MM_ATTRS_FLAG_RW,
{(void *)0},
MM_ATTRS_VALID_TYPE_INT_ARRAY,
- 0,
- 0,
+ {.int_array = NULL},
+ {.count = 0},
NULL,
},
/* 5 */
{
MM_STR_VIDEO_RESOLUTION_HEIGHT,
- "video-resolution-height",
+ (char *)"video-resolution-height",
MMF_VALUE_TYPE_INT,
MM_ATTRS_FLAG_RW,
{(void *)0},
MM_ATTRS_VALID_TYPE_INT_ARRAY,
- 0,
- 0,
+ {.int_array = NULL},
+ {.count = 0},
NULL,
},
/* 6 */
{
MM_STR_AUDIO_FORMAT,
- "audio-source-format",
+ (char *)"audio-source-format",
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 */
{
MM_STR_AUDIO_ENCODER_BITRATE,
- "audio-bitrate",
+ (char *)"audio-bitrate",
MMF_VALUE_TYPE_INT,
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 */
{
MM_STR_AUDIO_SAMPLERATE,
- "audio-samplerate",
+ (char *)"audio-samplerate",
MMF_VALUE_TYPE_INT,
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 */
{
MM_STR_VIDEO_ENCODER,
- "video-encoder",
+ (char *)"video-encoder",
MMF_VALUE_TYPE_INT,
MM_ATTRS_FLAG_RW,
{(void *)0},
MM_ATTRS_VALID_TYPE_INT_ARRAY,
- 0,
- 0,
+ {.int_array = NULL},
+ {.count = 0},
_mmstreamrecorder_commit_video_encoder,
},
/* 10 */
{
MM_STR_AUDIO_ENCODER,
- "audio-encoder",
+ (char *)"audio-encoder",
MMF_VALUE_TYPE_INT,
MM_ATTRS_FLAG_RW,
{(void *)0},
MM_ATTRS_VALID_TYPE_INT_ARRAY,
- 0,
- 0,
+ {.int_array = NULL},
+ {.count = 0},
_mmstreamrecorder_commit_audio_encoder,
},
/* 11 */
{
MM_STR_AUDIO_CHENNEL_COUNT,
- "audio-channel-count",
+ (char *)"audio-channel-count",
MMF_VALUE_TYPE_INT,
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 */
{
MM_STR_FILE_FORMAT,
- "file-format",
+ (char *)"file-format",
MMF_VALUE_TYPE_INT,
MM_ATTRS_FLAG_RW,
{(void *)0},
MM_ATTRS_VALID_TYPE_INT_ARRAY,
- 0,
- 0,
+ {.int_array = NULL},
+ {.count = 0},
NULL,
},
/* 13 */
{
MM_STR_TARGET_FILE_NAME,
- "filename",
+ (char *)"filename",
MMF_VALUE_TYPE_STRING,
MM_ATTRS_FLAG_RW,
{NULL},
MM_ATTRS_VALID_TYPE_NONE,
- 0,
- 0,
+ {0},
+ {0},
NULL,
},
/* 14 */
{
MM_STR_VIDEO_ENABLE,
- "video-enable",
+ (char *)"video-enable",
MMF_VALUE_TYPE_INT,
MM_ATTRS_FLAG_RW,
{(void *)FALSE},
MM_ATTRS_VALID_TYPE_NONE,
- 0,
- _MMSTREAMRECORDER_MAX_INT,
+ {0},
+ {_MMSTREAMRECORDER_MAX_INT},
_mmstreamrecorder_commit_video_enable,
},
/* 15 */
{
MM_STR_AUDIO_ENABLE,
- "audio-enable",
+ (char *)"audio-enable",
MMF_VALUE_TYPE_INT,
MM_ATTRS_FLAG_RW,
{(void *)FALSE},
MM_ATTRS_VALID_TYPE_NONE,
- 0,
- _MMSTREAMRECORDER_MAX_INT,
+ {0},
+ {_MMSTREAMRECORDER_MAX_INT},
_mmstreamrecorder_commit_audio_enable,
},
/* 16 */
{
MM_STR_MODE,
- "recorder-mode",
+ (char *)"recorder-mode",
MMF_VALUE_TYPE_INT,
MM_ATTRS_FLAG_RW,
{(void *)MM_STREAMRECORDER_MODE_MEDIABUFFER},
MM_ATTRS_VALID_TYPE_NONE,
- 0,
- _MMSTREAMRECORDER_MAX_INT,
+ {0},
+ {_MMSTREAMRECORDER_MAX_INT},
NULL,
},
/*17*/
{
MM_STR_TARGET_MAX_SIZE,
- "target-max-size",
+ (char *)"target-max-size",
MMF_VALUE_TYPE_INT,
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*/
{
MM_STR_TARGET_TIME_LIMIT,
- "target-time-limit",
+ (char *)"target-time-limit",
MMF_VALUE_TYPE_INT,
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,
},
/* 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;
}
_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");
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;
{
MMHandleType attrs = 0;
int ret = MM_ERROR_NONE;
+ va_list var_args_copy;
mmf_return_val_if_fail(handle, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
+ /* copy var_args to keep original var_args */
+ va_copy(var_args_copy, var_args);
+
attrs = MMF_STREAMRECORDER_ATTRS(handle);
if (!attrs) {
_mmstreamrec_dbg_err("handle 0x%x, attrs is NULL, attr name [%s]", handle, attribute_name);
_mmstreamrec_dbg_err("__mmstreamrecorder_check_valid_pair handle 0x%x, attr name [%s] , ret = %d", handle, attribute_name, ret);
- if (ret == MM_ERROR_NONE)
- ret = mm_attrs_set_valist(attrs, err_attr_name, attribute_name, var_args);
+ if (ret == MM_ERROR_NONE) {
+ /* In 64bit environment, unexpected result is returned if var_args is used again. */
+ ret = mm_attrs_set_valist(attrs, err_attr_name, attribute_name, var_args_copy);
+ }
+ va_end(var_args_copy);
_mmstreamrec_dbg_err("mm_attrs_set_valist handle 0x%x, attr name [%s] , ret = %d", handle, attribute_name, ret);
return ret;
return TRUE;
}
-
-int mm_streamrecorder_get_attribute_info(MMHandleType streamrecorder, const char *attribute_name, MMStreamRecorderAttrsInfo * info)
-{
- return _mmstreamrecorder_get_attribute_info(streamrecorder, attribute_name, info);
-}