+ 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);