sound stream info includes string and integer types.
They have each attribute and can be set at the same time,
but string type attribute uses write lock and it causes deadlock.
So, this commit avoids it by changing attribute sequence.
[Version] 0.10.88
[Profile] Common
[Issue Type] Bug fix
[Dependency module] N/A
[Test] [M(T) - Boot=(OK), sdb=(OK), Home=(OK), Touch=(OK), Version=tizen-mobile_20161027.1]
Change-Id: I4b39b2638a46abee7a3a9a64dd3ad48129554763
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
Name: libmm-camcorder
Summary: Camera and recorder library
Name: libmm-camcorder
Summary: Camera and recorder library
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
MM_CAM_DISPLAY_SOCKET_PATH,
MM_CAM_PID_FOR_SOUND_FOCUS,
MM_CAM_ROOT_DIRECTORY,
MM_CAM_DISPLAY_SOCKET_PATH,
MM_CAM_PID_FOR_SOUND_FOCUS,
MM_CAM_ROOT_DIRECTORY,
- MM_CAM_SOUND_STREAM_TYPE,
MM_CAM_SOUND_STREAM_INDEX,
MM_CAM_SOUND_STREAM_INDEX,
+ MM_CAM_SOUND_STREAM_TYPE,
MM_CAM_DISPLAY_REUSE_HINT,
MM_CAM_DISPLAY_REUSE_ELEMENT,
MM_CAM_GDBUS_CONNECTION, /* 130 */
MM_CAM_DISPLAY_REUSE_HINT,
MM_CAM_DISPLAY_REUSE_ELEMENT,
MM_CAM_GDBUS_CONNECTION, /* 130 */
- MM_CAM_SOUND_STREAM_TYPE,
- "sound-stream-type",
- MMF_VALUE_TYPE_STRING,
- MM_ATTRS_FLAG_RW,
- {(void*)NULL},
- MM_ATTRS_VALID_TYPE_NONE,
- {0},
- {0},
- NULL,
- },
- {
MM_CAM_SOUND_STREAM_INDEX,
"sound-stream-index",
MMF_VALUE_TYPE_INT,
MM_CAM_SOUND_STREAM_INDEX,
"sound-stream-index",
MMF_VALUE_TYPE_INT,
MM_ATTRS_VALID_TYPE_INT_RANGE,
{.int_min = -1},
{.int_max = _MMCAMCORDER_MAX_INT},
MM_ATTRS_VALID_TYPE_INT_RANGE,
{.int_min = -1},
{.int_max = _MMCAMCORDER_MAX_INT},
+ NULL,
+ },
+ {
+ MM_CAM_SOUND_STREAM_TYPE,
+ "sound-stream-type",
+ MMF_VALUE_TYPE_STRING,
+ MM_ATTRS_FLAG_RW,
+ {(void*)NULL},
+ MM_ATTRS_VALID_TYPE_NONE,
+ {0},
+ {0},
_mmcamcorder_commit_sound_stream_info,
},
{
_mmcamcorder_commit_sound_stream_info,
},
{
bool _mmcamcorder_commit_sound_stream_info(MMHandleType handle, int attr_idx, const mmf_value_t *value)
{
bool _mmcamcorder_commit_sound_stream_info(MMHandleType handle, int attr_idx, const mmf_value_t *value)
{
char *stream_type = NULL;
char *stream_type = NULL;
- int stream_type_len = 0;
_MMCamcorderSubContext *sc = NULL;
mmf_return_val_if_fail(handle && value, FALSE);
_MMCamcorderSubContext *sc = NULL;
mmf_return_val_if_fail(handle && value, FALSE);
+ stream_type = value->value.s_val;
+ if (!stream_type) {
+ _mmcam_dbg_err("NULL string");
+ return FALSE;
+ }
+
sc = MMF_CAMCORDER_SUBCONTEXT(handle);
if (!sc || !sc->encode_element ||
!sc->encode_element[_MMCAMCORDER_AUDIOSRC_SRC].gst) {
sc = MMF_CAMCORDER_SUBCONTEXT(handle);
if (!sc || !sc->encode_element ||
!sc->encode_element[_MMCAMCORDER_AUDIOSRC_SRC].gst) {
}
mm_camcorder_get_attributes(handle, NULL,
}
mm_camcorder_get_attributes(handle, NULL,
- MMCAM_SOUND_STREAM_TYPE, &stream_type, &stream_type_len,
+ MMCAM_SOUND_STREAM_INDEX, &stream_index,
-
- if (stream_type == NULL) {
- _mmcam_dbg_err("stream type is not set");
+ if (stream_index < 0) {
+ _mmcam_dbg_err("invalid stream index %d", stream_index);
- _mmcam_dbg_log("Commit : sound stream info - type %s", stream_type);
+ _mmcam_dbg_log("Commit : sound stream info - type %s, index %d", stream_type, stream_index);
- return _mmcamcorder_set_sound_stream_info(sc->encode_element[_MMCAMCORDER_AUDIOSRC_SRC].gst, stream_type, value->value.i_val);
+ return _mmcamcorder_set_sound_stream_info(sc->encode_element[_MMCAMCORDER_AUDIOSRC_SRC].gst, stream_type, stream_index);