[0.6.196] support offload looping with seeking
[platform/core/multimedia/libmm-player.git] / src / mm_player_attrs.c
index 7e7d355..6f43df6 100644 (file)
@@ -26,7 +26,6 @@
 |                                                                                                                                                                                      |
 ========================================================================================== */
 #include <dlog.h>
-#include <mm_attrs_private.h>
 #include <mm_attrs.h>
 #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;
        }