X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmm_player_attrs.c;h=6f43df6e7acdcc9138cf0d0957fc170787ce5b41;hb=3b13dd08c8e2b30a9d6b26d483323ea094633a2b;hp=7e7d3557cc013a07da8ecba37507b2b1eecebbc6;hpb=3e511cb1950664baaca43054eb00318bb503e4d8;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git diff --git a/src/mm_player_attrs.c b/src/mm_player_attrs.c index 7e7d355..6f43df6 100644 --- a/src/mm_player_attrs.c +++ b/src/mm_player_attrs.c @@ -26,7 +26,6 @@ | | ========================================================================================== */ #include -#include #include #include "mm_player_utils.h" #include "mm_player_priv.h" @@ -65,8 +64,8 @@ _mmplayer_get_attribute(MMHandleType handle, char **err_attr_name, const char * result = mm_attrs_get_valist(attrs, err_attr_name, attribute_name, args_list); - if ( result != MM_ERROR_NONE) - LOGE("failed to get %s attribute\n", attribute_name); + if (result != MM_ERROR_NONE) + LOGE("failed to get %s attribute", attribute_name); return result; } @@ -87,16 +86,14 @@ _mmplayer_set_attribute(MMHandleType handle, char **err_attr_name, const char * /* set attributes and commit them */ result = mm_attrs_set_valist(attrs, err_attr_name, attribute_name, args_list); - if (result != MM_ERROR_NONE) - { - LOGE("failed to set %s attribute\n", attribute_name); + if (result != MM_ERROR_NONE) { + LOGE("failed to set %s attribute", attribute_name); return result; } result = __mmplayer_apply_attribute(handle, attribute_name); - if (result != MM_ERROR_NONE) - { - LOGE("failed to apply attributes\n"); + if (result != MM_ERROR_NONE) { + LOGE("failed to apply attributes"); return result; } @@ -104,7 +101,7 @@ _mmplayer_set_attribute(MMHandleType handle, char **err_attr_name, const char * } int -_mmplayer_get_attributes_info(MMHandleType handle, const char *attribute_name, MMPlayerAttrsInfo *dst_info) +_mmplayer_get_attributes_info(MMHandleType handle, const char *attribute_name, mmplayer_attrs_info_t *dst_info) { int result = MM_ERROR_NONE; MMHandleType attrs = 0; @@ -118,45 +115,43 @@ _mmplayer_get_attributes_info(MMHandleType handle, const char *attribute_name, result = mm_attrs_get_info_by_name(attrs, attribute_name, &src_info); - if ( result != MM_ERROR_NONE) - { - LOGE("failed to get attribute info\n"); + if (result != MM_ERROR_NONE) { + LOGE("failed to get attribute info"); return result; } - memset(dst_info, 0x00, sizeof(MMPlayerAttrsInfo)); + memset(dst_info, 0x00, sizeof(mmplayer_attrs_info_t)); dst_info->type = src_info.type; dst_info->flag = src_info.flag; - dst_info->validity_type= src_info.validity_type; + dst_info->validity_type = src_info.validity_type; - switch(src_info.validity_type) - { - case MM_ATTRS_VALID_TYPE_INT_ARRAY: - dst_info->int_array.array = src_info.int_array.array; - dst_info->int_array.count = src_info.int_array.count; - dst_info->int_array.d_val = src_info.int_array.dval; + switch (src_info.validity_type) { + case MM_ATTRS_VALID_TYPE_INT_ARRAY: + dst_info->int_array.array = src_info.int_array.array; + dst_info->int_array.count = src_info.int_array.count; + dst_info->int_array.d_val = src_info.int_array.dval; break; - case MM_ATTRS_VALID_TYPE_INT_RANGE: - dst_info->int_range.min = src_info.int_range.min; - dst_info->int_range.max = src_info.int_range.max; - dst_info->int_range.d_val = src_info.int_range.dval; + case MM_ATTRS_VALID_TYPE_INT_RANGE: + dst_info->int_range.min = src_info.int_range.min; + dst_info->int_range.max = src_info.int_range.max; + dst_info->int_range.d_val = src_info.int_range.dval; break; - case MM_ATTRS_VALID_TYPE_DOUBLE_ARRAY: - dst_info->double_array.array = src_info.double_array.array; - dst_info->double_array.count = src_info.double_array.count; - dst_info->double_array.d_val = src_info.double_array.dval; + case MM_ATTRS_VALID_TYPE_DOUBLE_ARRAY: + dst_info->double_array.array = src_info.double_array.array; + dst_info->double_array.count = src_info.double_array.count; + dst_info->double_array.d_val = src_info.double_array.dval; break; - case MM_ATTRS_VALID_TYPE_DOUBLE_RANGE: - dst_info->double_range.min = src_info.double_range.min; - dst_info->double_range.max = src_info.double_range.max; - dst_info->double_range.d_val = src_info.double_range.dval; + case MM_ATTRS_VALID_TYPE_DOUBLE_RANGE: + dst_info->double_range.min = src_info.double_range.min; + dst_info->double_range.max = src_info.double_range.max; + dst_info->double_range.d_val = src_info.double_range.dval; break; - default: + default: break; } @@ -166,35 +161,81 @@ _mmplayer_get_attributes_info(MMHandleType handle, const char *attribute_name, int __mmplayer_apply_attribute(MMHandleType handle, const char *attribute_name) { - mm_player_t* player = 0; + mmplayer_t *player = 0; MMPLAYER_RETURN_VAL_IF_FAIL(handle, MM_ERROR_COMMON_INVALID_ARGUMENT); MMPLAYER_RETURN_VAL_IF_FAIL(attribute_name, MM_ERROR_COMMON_INVALID_ARGUMENT); player = MM_PLAYER_CAST(handle); + mmplayer_pipeline_info_t *pipeline = player->pipeline; - if ( g_strrstr(attribute_name, "display") ) - { - int pipeline_type = 0; - MMPlayerGstPipelineInfo *pipeline = player->pipeline; + /* before preparing, just keep the attr value */ + MMPLAYER_RETURN_VAL_IF_FAIL(pipeline && pipeline->mainbin, MM_ERROR_NONE); - /* check videosink element is created */ - if(!pipeline) - return MM_ERROR_NONE; - mm_attrs_get_int_by_name(player->attrs, "pipeline_type", &pipeline_type); - if (pipeline_type == MM_PLAYER_PIPELINE_CLIENT) { - if(!pipeline->mainbin || !pipeline->mainbin[MMPLAYER_M_V_SINK].gst) - return MM_ERROR_NONE; - } else { - if(!pipeline->videobin || !pipeline->videobin[MMPLAYER_V_SINK].gst) - return MM_ERROR_NONE; - } + if (g_strrstr(attribute_name, MM_PLAYER_PITCH_VALUE)) { + int pitch_control = 0; + double pitch_value = 0; - if ( MM_ERROR_NONE != _mmplayer_update_video_param( player ) ) - { + mm_attrs_multiple_get(player->attrs, NULL, + MM_PLAYER_PITCH_CONTROL, &pitch_control, + MM_PLAYER_PITCH_VALUE, &pitch_value, + NULL); + + if (!pitch_control || !pipeline->audiobin[MMPLAYER_A_PITCH].gst) + return MM_ERROR_PLAYER_NO_OP; + + LOGD("set pitch value to %1.3f", pitch_value); + g_object_set(pipeline->audiobin[MMPLAYER_A_PITCH].gst, "pitch", (gdouble)pitch_value, NULL); + } + + /* Currently, there are only display related implementation at below */ + if (!pipeline->videobin || + !pipeline->videobin[MMPLAYER_V_SINK].gst) { + /* + * The attribute should be committed even though videobin is not created yet. + * So, true should be returned here. + * Otherwise, video can be diaplayed abnormal. + */ + return MM_ERROR_NONE; + } + + if (g_strrstr(attribute_name, "display")) { + char *param_name = NULL; + int str_len = strlen(attribute_name); + param_name = g_malloc0(str_len + 1); + if (!param_name) { + LOGE("failed to alloc param_name"); + return MM_ERROR_PLAYER_INTERNAL; + } + strncpy(param_name, attribute_name, str_len); + param_name[str_len] = '\0'; + LOGD(" param_name: %s", param_name); + if (MM_ERROR_NONE != _mmplayer_update_video_param(player, param_name)) { + MMPLAYER_FREEIF(param_name); LOGE("failed to update video param"); return MM_ERROR_PLAYER_INTERNAL; } + MMPLAYER_FREEIF(param_name); + } + + if (g_strrstr(attribute_name, MM_PLAYER_GAPLESS_MODE)) { + int gapless = 0; + + mm_attrs_get_int_by_name(player->attrs, MM_PLAYER_GAPLESS_MODE, &gapless); + if (gapless > 0) { + LOGD("disable last-sample at videosink"); + g_object_set(player->pipeline->videobin[MMPLAYER_V_SINK].gst, "enable-last-sample", FALSE, NULL); + } + } + + if (g_strrstr(attribute_name, MM_PLAYER_ENABLE_VIDEO_DECODED_CB)) { + if (!player->set_mode.video_export) { + LOGE("there is no callback to export video"); + return MM_ERROR_PLAYER_INTERNAL; + } + int enable = 0; + mm_attrs_get_int_by_name(player->attrs, "enable_video_decoded_cb", &enable); + g_object_set(player->pipeline->videobin[MMPLAYER_V_SINK].gst, "signal-handoffs", enable ? TRUE : FALSE, NULL); } return MM_ERROR_NONE; @@ -203,23 +244,20 @@ __mmplayer_apply_attribute(MMHandleType handle, const char *attribute_name) MMHandleType _mmplayer_construct_attribute(MMHandleType handle) { - mm_player_t *player = NULL; + int result = MM_ERROR_NONE; int idx = 0; MMHandleType attrs = 0; int num_of_attrs = 0; - mmf_attrs_construct_info_t *base = NULL; - - MMPLAYER_RETURN_VAL_IF_FAIL (handle, 0); + MMAttrsConstructInfo *base = NULL; - player = MM_PLAYER_CAST(handle); + MMPLAYER_RETURN_VAL_IF_FAIL(handle, 0); - MMPlayerAttrsSpec player_attrs[] = - { + mmplayer_attrs_spec_t player_attrs[] = { { "profile_uri", // name MM_ATTRS_TYPE_STRING, // type MM_ATTRS_FLAG_RW, // flag - (void *) NULL, // default value + (void *)NULL, // default value MM_ATTRS_VALID_TYPE_NONE, // validity type 0, // validity min value 0 // validity max value @@ -228,7 +266,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "profile_user_param", MM_ATTRS_TYPE_DATA, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 @@ -237,124 +275,52 @@ _mmplayer_construct_attribute(MMHandleType handle) "profile_play_count", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 1, // -1 : repeat continually + (void *)1, /* -1 : repeat continually */ MM_ATTRS_VALID_TYPE_INT_RANGE, -1, - MMPLAYER_MAX_INT + 1 }, { "profile_prepare_async", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - 1 - }, - { /* update registry for downloadable codec */ - "profile_update_registry", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, 1 }, { - "streaming_type", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) STREAMING_SERVICE_NONE, - MM_ATTRS_VALID_TYPE_INT_RANGE, - STREAMING_SERVICE_VOD, - STREAMING_SERVICE_NUM - }, - { - "streaming_udp_timeout", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 10000, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { "streaming_user_agent", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, - MM_ATTRS_VALID_TYPE_NONE, - 0, - 0 - }, - { - "streaming_wap_profile", - MM_ATTRS_TYPE_STRING, - MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 }, { - "streaming_network_bandwidth", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 128000, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { "streaming_cookie", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 }, { - "streaming_proxy", - MM_ATTRS_TYPE_STRING, - MM_ATTRS_FLAG_RW, - (void *) NULL, - MM_ATTRS_VALID_TYPE_NONE, - 0, - 0 - }, - { - "streaming_timeout", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) -1, // DEFAULT_HTTP_TIMEOUT - MM_ATTRS_VALID_TYPE_INT_RANGE, - -1, - MMPLAYER_MAX_INT - }, - { "subtitle_uri", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 }, { - "content_duration", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { "content_bitrate", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT @@ -363,7 +329,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "content_max_bitrate", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT @@ -372,7 +338,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "content_video_found", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, 1 @@ -381,7 +347,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "content_video_codec", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 @@ -390,7 +356,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "content_video_bitrate", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT @@ -399,7 +365,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "content_video_fps", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT @@ -408,7 +374,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "content_video_width", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT @@ -417,34 +383,16 @@ _mmplayer_construct_attribute(MMHandleType handle) "content_video_height", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT }, { - "content_video_track_num", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "content_audio_found", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - 1 - }, - { "content_audio_codec", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 @@ -453,7 +401,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "content_audio_bitrate", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT @@ -462,7 +410,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "content_audio_channels", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT @@ -471,43 +419,43 @@ _mmplayer_construct_attribute(MMHandleType handle) "content_audio_samplerate", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT }, { - "content_audio_track_num", - MM_ATTRS_TYPE_INT, + "content_audio_format", + MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, + (void *)NULL, + MM_ATTRS_VALID_TYPE_NONE, 0, - MMPLAYER_MAX_INT + 0 }, { - "content_audio_format", + "content_text_track_num", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT }, { - "content_text_track_num", + "current_text_track_index", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)-1, MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, + -1, MMPLAYER_MAX_INT }, { "tag_artist", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 @@ -516,7 +464,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "tag_title", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 @@ -525,13 +473,13 @@ _mmplayer_construct_attribute(MMHandleType handle) "tag_album", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL + (void *)NULL }, { "tag_genre", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 @@ -540,7 +488,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "tag_author", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 @@ -549,7 +497,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "tag_copyright", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 @@ -558,7 +506,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "tag_date", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 @@ -567,7 +515,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "tag_description", MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 @@ -576,7 +524,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "tag_track_num", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT @@ -585,97 +533,16 @@ _mmplayer_construct_attribute(MMHandleType handle) "tag_album_cover", MM_ATTRS_TYPE_DATA, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 }, { - "display_src_crop_x", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "display_src_crop_y", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "display_src_crop_width", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "display_src_crop_height", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "display_roi_x", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "display_roi_y", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "display_roi_width", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 480, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "display_roi_height", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 800, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "display_roi_mode", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) MM_DISPLAY_METHOD_CUSTOM_ROI_FULL_SCREEN, - MM_ATTRS_VALID_TYPE_INT_RANGE, - MM_DISPLAY_METHOD_CUSTOM_ROI_FULL_SCREEN, - MM_DISPLAY_METHOD_CUSTOM_ROI_LETER_BOX - }, - { "display_rotation", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) MM_DISPLAY_ROTATION_NONE, + (void *)MM_DISPLAY_ROTATION_NONE, MM_ATTRS_VALID_TYPE_INT_RANGE, MM_DISPLAY_ROTATION_NONE, MM_DISPLAY_ROTATION_270 @@ -684,7 +551,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "display_visible", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) FALSE, + (void *)FALSE, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, 1 @@ -693,7 +560,7 @@ _mmplayer_construct_attribute(MMHandleType handle) "display_method", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) MM_DISPLAY_METHOD_LETTER_BOX, + (void *)MM_DISPLAY_METHOD_LETTER_BOX, MM_ATTRS_VALID_TYPE_INT_RANGE, MM_DISPLAY_METHOD_LETTER_BOX, MM_DISPLAY_METHOD_CUSTOM_ROI @@ -702,472 +569,301 @@ _mmplayer_construct_attribute(MMHandleType handle) "display_overlay", MM_ATTRS_TYPE_DATA, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 }, -#ifdef HAVE_WAYLAND { - "wl_display", - MM_ATTRS_TYPE_DATA, - MM_ATTRS_FLAG_RW, - (void *) NULL, - MM_ATTRS_VALID_TYPE_NONE, - 0, - 0 - }, - { - "wl_window_render_x", + "display_win_roi_x", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, + MMPLAYER_MIN_INT, MMPLAYER_MAX_INT }, { - "wl_window_render_y", + "display_win_roi_y", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, + MMPLAYER_MIN_INT, MMPLAYER_MAX_INT }, { - "wl_window_render_width", + "display_win_roi_width", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT }, { - "wl_window_render_height", + "display_win_roi_height", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT }, { - "use_wl_surface", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) FALSE, - MM_ATTRS_VALID_TYPE_INT_RANGE, - FALSE, - TRUE - }, - -#endif - { - "display_overlay_user_data", - MM_ATTRS_TYPE_DATA, - MM_ATTRS_FLAG_RW, - (void *) NULL, - MM_ATTRS_VALID_TYPE_NONE, - 0, - 0 - }, - { "display_surface_type", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) MM_DISPLAY_SURFACE_NULL, + (void *)MM_DISPLAY_SURFACE_NULL, MM_ATTRS_VALID_TYPE_INT_RANGE, MM_DISPLAY_SURFACE_OVERLAY, MM_DISPLAY_SURFACE_NUM - 1 }, { - "display_evas_surface_sink", + "sound_stream_type", MM_ATTRS_TYPE_STRING, - MM_ATTRS_FLAG_READABLE, - (void *) player->ini.videosink_element_evas, + MM_ATTRS_FLAG_RW, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 }, { - "display_force_aspect_ration", + "sound_stream_index", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 1, - MM_ATTRS_VALID_TYPE_INT_RANGE, 0, + MM_ATTRS_VALID_TYPE_INT_RANGE, + -1, MMPLAYER_MAX_INT }, { - "display_width", // dest width of fimcconvert ouput + "sound_latency_mode", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)1, // 0: low latency, 1: middle latency 2: high latency MM_ATTRS_VALID_TYPE_INT_RANGE, 0, - MMPLAYER_MAX_INT + 2 }, { - "display_height", // dest height of fimcconvert ouput + "pcm_extraction_samplerate", // set samplerate for pcm extraction MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)44100, // hz MM_ATTRS_VALID_TYPE_INT_RANGE, 0, MMPLAYER_MAX_INT }, { - "display_evas_do_scaling", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) TRUE, - MM_ATTRS_VALID_TYPE_INT_RANGE, - FALSE, - TRUE - }, - { - "sound_fadeup", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) FALSE, - MM_ATTRS_VALID_TYPE_INT_RANGE, - FALSE, - TRUE - }, - { - "sound_fadedown", + "pcm_extraction_channels", // set channels for pcm extraction MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) FALSE, + (void *)1, MM_ATTRS_VALID_TYPE_INT_RANGE, - FALSE, - TRUE + 0, + MMPLAYER_MAX_INT }, { - "sound_volume_type", + "accurate_seek", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) MM_SOUND_VOLUME_TYPE_MEDIA, + (void *)0, MM_ATTRS_VALID_TYPE_INT_RANGE, 0, - MMPLAYER_MAX_INT + 1 }, { - "sound_stream_type", + "content_video_orientation", // orientation of video content MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, - (void *) NULL, + (void *)NULL, MM_ATTRS_VALID_TYPE_NONE, 0, 0 }, { - "sound_stream_index", - MM_ATTRS_TYPE_INT, + "pcm_extraction_format", + MM_ATTRS_TYPE_STRING, MM_ATTRS_FLAG_RW, + (void *)NULL, + MM_ATTRS_VALID_TYPE_NONE, 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - -1, - MMPLAYER_MAX_INT - }, - { - "sound_route", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) MM_AUDIOROUTE_USE_EXTERNAL_SETTING, - MM_ATTRS_VALID_TYPE_INT_RANGE, - MM_AUDIOROUTE_USE_EXTERNAL_SETTING, - MM_AUDIOROUTE_CAPTURE_STEREOMIC_ONLY + 0 }, { - "sound_stop_when_unplugged", + "drc_mode", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) TRUE, + (void *)FALSE, MM_ATTRS_VALID_TYPE_INT_RANGE, FALSE, TRUE }, { - "sound_application_pid", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "sound_spk_out_only", + "gapless_mode", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) FALSE, + (void *)FALSE, MM_ATTRS_VALID_TYPE_INT_RANGE, FALSE, TRUE }, { - "sound_priority", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, // 0: normal, 1: high 2: high with sound transition 3: mix with others regardless of priority - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - 3 - }, - { - "sound_close_resource", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - 1 - }, - { - "sound_latency_mode", + "enable_video_decoded_cb", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 1, // 0: low latency, 1: middle latency 2: high latency - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - 2 - }, - { - "pcm_extraction", // enable pcm extraction - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) FALSE, + (void *)FALSE, MM_ATTRS_VALID_TYPE_INT_RANGE, FALSE, TRUE }, { - "pcm_extraction_samplerate", // set samplerate for pcm extraction + "content_video_is_spherical", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 44100, // hz + (void *)-1, MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, + -1, MMPLAYER_MAX_INT }, { - "pcm_extraction_depth", // set depth for pcm extraction + "video_codec_type", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 16, // bits + (void *)MM_PLAYER_CODEC_TYPE_DEFAULT, MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT + MM_PLAYER_CODEC_TYPE_DEFAULT, + MM_PLAYER_CODEC_TYPE_SW }, { - "pcm_extraction_channels", // set channels for pcm extraction + "audio_codec_type", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 1, + (void *)MM_PLAYER_CODEC_TYPE_DEFAULT, MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT + MM_PLAYER_CODEC_TYPE_DEFAULT, + MM_PLAYER_CODEC_TYPE_SW }, { - "pcm_extraction_start_msec", // set start position to extract pcm + "video_buffer_total_size", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)DEFAULT_NUM_OF_V_OUT_BUFFER, MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, + MMPLAYER_MIN_INT, MMPLAYER_MAX_INT }, { - "pcm_extraction_end_msec", // set end position to extract pcm + "video_buffer_extra_size", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 0, + (void *)DEFAULT_NUM_OF_V_OUT_BUFFER, MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, + MMPLAYER_MIN_INT, MMPLAYER_MAX_INT }, { - "profile_smooth_repeat", + "prebuffer_ms", /* user setting */ MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) FALSE, + (void *) MIN_BUFFERING_TIME, MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, + MIN_BUFFERING_TIME, MMPLAYER_MAX_INT }, { - "profile_progress_interval", // will be deprecated + "rebuffer_ms", /* user setting */ MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) 500, + (void *) MIN_BUFFERING_TIME, MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, + MIN_BUFFERING_TIME, MMPLAYER_MAX_INT }, { - "display_x", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "display_y", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, - { - "pd_mode", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) MM_PLAYER_PD_MODE_NONE, - MM_ATTRS_VALID_TYPE_INT_RANGE, - MM_PLAYER_PD_MODE_NONE, - MM_PLAYER_PD_MODE_URI // not tested yet, because of no fixed scenario - }, - { - "pd_location", // location of the file to write - MM_ATTRS_TYPE_STRING, - MM_ATTRS_FLAG_RW, - (void *) NULL, - MM_ATTRS_VALID_TYPE_NONE, - 0, - 0 - }, - { - "accurate_seek", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 0, - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - 1 - }, - { - "content_video_orientation", // orientation of video content - MM_ATTRS_TYPE_STRING, - MM_ATTRS_FLAG_RW, - (void *) NULL, - MM_ATTRS_VALID_TYPE_NONE, - 0, - 0 - }, - { - "pcm_audioformat", - MM_ATTRS_TYPE_STRING, - MM_ATTRS_FLAG_RW, - (void *) NULL, - MM_ATTRS_VALID_TYPE_NONE, - 0, - 0 - }, - { - "display_surface_client_type", + "audio_offload", /* MM_PLAYER_AUDIO_OFFLOAD */ MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) MM_DISPLAY_SURFACE_NULL, + (void *)FALSE, MM_ATTRS_VALID_TYPE_INT_RANGE, - MM_DISPLAY_SURFACE_OVERLAY, - MM_DISPLAY_SURFACE_NUM - 1 - }, - { - "pipeline_type", - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) MM_PLAYER_PIPELINE_LEGACY, - MM_ATTRS_VALID_TYPE_INT_RANGE, - MM_PLAYER_PIPELINE_LEGACY, - MM_PLAYER_PIPELINE_MAX - 1 + FALSE, + TRUE }, { - "drc_mode", + "pitch_control", /* MM_PLAYER_PITCH_CONTROL */ MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - (void *) FALSE, + (void *)FALSE, MM_ATTRS_VALID_TYPE_INT_RANGE, FALSE, TRUE }, { - "gapless_mode", - MM_ATTRS_TYPE_INT, + "pitch_value", /* MM_PLAYER_PITCH_VALUE */ + MM_ATTRS_TYPE_DOUBLE, MM_ATTRS_FLAG_RW, - (void *) FALSE, - MM_ATTRS_VALID_TYPE_INT_RANGE, - FALSE, - TRUE - } + (void *)1, + MM_ATTRS_VALID_TYPE_DOUBLE_RANGE, + 0.5, + 2 + }, }; num_of_attrs = ARRAY_SIZE(player_attrs); - base = (mmf_attrs_construct_info_t* )malloc(num_of_attrs * sizeof(mmf_attrs_construct_info_t)); - - if ( !base ) - { + base = g_try_new(MMAttrsConstructInfo, num_of_attrs); + if (!base) { LOGE("failed to alloc attrs constructor"); return 0; } /* initialize values of attributes */ - for ( idx = 0; idx < num_of_attrs; idx++ ) - { + for (idx = 0; idx < num_of_attrs; idx++) { base[idx].name = player_attrs[idx].name; base[idx].value_type = player_attrs[idx].value_type; base[idx].flags = player_attrs[idx].flags; base[idx].default_value = player_attrs[idx].default_value; } - attrs = mmf_attrs_new_from_data( - "mmplayer_attrs", - base, - num_of_attrs, - NULL, - NULL); + result = mm_attrs_new(base, num_of_attrs, "mmplayer_attrs", + NULL, NULL, &attrs); /* clean */ MMPLAYER_FREEIF(base); - if ( !attrs ) - { + if (result) { LOGE("failed to create player attrs"); return 0; } /* set validity type and range */ - for ( idx = 0; idx < num_of_attrs; idx++ ) - { - switch ( player_attrs[idx].valid_type) + for (idx = 0; idx < num_of_attrs; idx++) { + switch (player_attrs[idx].valid_type) { + case MM_ATTRS_VALID_TYPE_INT_RANGE: { - case MM_ATTRS_VALID_TYPE_INT_RANGE: - { - mmf_attrs_set_valid_type (attrs, idx, MM_ATTRS_VALID_TYPE_INT_RANGE); - mmf_attrs_set_valid_range (attrs, idx, - player_attrs[idx].value_min, - player_attrs[idx].value_max, - (int)(intptr_t)(player_attrs[idx].default_value)); - } + mm_attrs_set_valid_type(attrs, idx, MM_ATTRS_VALID_TYPE_INT_RANGE); + mm_attrs_set_valid_range(attrs, idx, + player_attrs[idx].value_min, + player_attrs[idx].value_max, + (int)(intptr_t)(player_attrs[idx].default_value)); + } break; - case MM_ATTRS_VALID_TYPE_INT_ARRAY: - case MM_ATTRS_VALID_TYPE_DOUBLE_ARRAY: - case MM_ATTRS_VALID_TYPE_DOUBLE_RANGE: - default: + case MM_ATTRS_VALID_TYPE_INT_ARRAY: + case MM_ATTRS_VALID_TYPE_DOUBLE_ARRAY: + case MM_ATTRS_VALID_TYPE_DOUBLE_RANGE: + default: break; } } /* commit */ - mmf_attrs_commit(attrs); + if (mm_attrs_commit_all(attrs)) { + LOGE("failed to update attributes"); + mm_attrs_free(attrs); + return 0; + } return attrs; } @@ -1175,13 +871,12 @@ _mmplayer_construct_attribute(MMHandleType handle) bool _mmplayer_deconstruct_attribute(MMHandleType handle) // @ { - mm_player_t *player = MM_PLAYER_CAST(handle); + mmplayer_t *player = MM_PLAYER_CAST(handle); - MMPLAYER_RETURN_VAL_IF_FAIL ( player, FALSE ); + MMPLAYER_RETURN_VAL_IF_FAIL(player, FALSE); - if (player->attrs) - { - mmf_attrs_free (player->attrs); + if (player->attrs) { + mm_attrs_free(player->attrs); player->attrs = 0; }