From: Eunhae Choi Date: Tue, 6 Nov 2018 06:00:53 +0000 (+0900) Subject: [0.6.141] remove not used pcm extract source code X-Git-Tag: submit/tizen/20181109.060212~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=20faab669b8da03a2d43acc90f1a5dce13f1a30b;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git [0.6.141] remove not used pcm extract source code - there are two pcm extract path 1. for each audio channel output 2. for merged audio output - remove (2) pcm extract path which is not used. Change-Id: I764da3cf5226bfb5bf84507b3ce1ac531b1e60a1 --- diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index f7223d8..c044836 100644 --- a/packaging/libmm-player.spec +++ b/packaging/libmm-player.spec @@ -1,6 +1,6 @@ Name: libmm-player Summary: Multimedia Framework Player Library -Version: 0.6.140 +Version: 0.6.141 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include/mm_player.h b/src/include/mm_player.h index 4f5d32c..11aac27 100644 --- a/src/include/mm_player.h +++ b/src/include/mm_player.h @@ -928,33 +928,6 @@ mm_player_set_message_callback(g_player, msg_callback, (void*)g_player); */ int mm_player_set_message_callback(MMHandleType player, MMMessageCallback callback, void *user_param); -/** - * This function set callback function for receiving audio stream from player. \n - * So, application can get raw audio data and modify it. \n - * But, if callback don't return or holds it for long time, performance can be deteriorated. \n - * It's only supported when audio stream is included in file. \n - * So, if there is video stream or DRM content, it can't be used. - * - * @param player [in] Handle of player. - * @param callback [in] Audio stream callback function. - * @param user_param [in] User parameter. - * - * @return This function returns zero on success, or negative value with error - * code. - * @see mm_player_audio_stream_callback - * @remark It can be used for audio playback only. - * @par Example - * @code -bool audio_callback(void *stream, int stream_size, void *user_param) -{ - LOGD("audio stream callback\n"); - return TRUE; -} -mm_player_set_audio_stream_callback(g_player, audio_callback, NULL); - * @endcode - */ -int mm_player_set_audio_stream_callback(MMHandleType player, mm_player_audio_stream_callback callback, void *user_param); - /** * This function is to mute volume of player * diff --git a/src/include/mm_player_internal.h b/src/include/mm_player_internal.h old mode 100755 new mode 100644 index 0d4d034..a660756 --- a/src/include/mm_player_internal.h +++ b/src/include/mm_player_internal.h @@ -133,7 +133,6 @@ int mm_player_set_play_speed(MMHandleType player, float rate, bool streaming); * @return This function returns zero on success, or negative value with error * code. * @remark - * @see mm_player_video_stream_callback mm_player_set_audio_stream_callback * @since */ int mm_player_set_video_stream_callback(MMHandleType player, mm_player_video_stream_callback callback, void *user_param); @@ -184,19 +183,6 @@ int mm_player_do_video_capture(MMHandleType player); */ int mm_player_change_videosink(MMHandleType player, MMDisplaySurfaceType display_surface_type, void *display_overlay); -/** - * This function is to set pcm spec. - * - * @param player [in] Handle of player. - * @param samplerate [in] Samplerate. - * @param channel [in] Channel. - * - * @return This function returns zero on success, or negative value with error - * @see - * @since - */ -int mm_player_set_pcm_spec(MMHandleType player, int samplerate, int channel); - /** @} */ diff --git a/src/include/mm_player_priv.h b/src/include/mm_player_priv.h index bfd00b9..dca8cf8 100644 --- a/src/include/mm_player_priv.h +++ b/src/include/mm_player_priv.h @@ -445,7 +445,6 @@ typedef struct { typedef struct { bool rich_audio; bool safety_volume; - bool pcm_extraction; bool video_zc; // video zero-copy bool subtitle_off; bool media_packet_video_stream; @@ -640,7 +639,6 @@ typedef struct { bool video_stream_prerolled; /* audio stram callback */ - mm_player_audio_stream_callback audio_stream_cb; void* audio_stream_cb_user_param; bool audio_stream_sink_sync; GList* audio_stream_buff_list; /* mm_player_audio_stream_buff_t, buff list of extract pcm data */ @@ -664,8 +662,6 @@ typedef struct { MMAudioEffectInfo audio_effect_info; gboolean bypass_audio_effect; - gulong audio_cb_probe_id; - /* content profile */ MMPlayerParseProfile profile; MMPlayerStorageInfo storage_info[MMPLAYER_PATH_MAX]; @@ -832,9 +828,6 @@ typedef struct { /* tmb buffer manager for s/w codec tmb_bo */ tbm_bufmgr bufmgr; - int pcm_samplerate; - int pcm_channel; - MMAdaptiveVariantInfo adaptive_info; /* Video360 related stuff @@ -909,7 +902,6 @@ int _mmplayer_set_message_callback(MMHandleType hplayer, MMMessageCallback callb int _mmplayer_set_videostream_changed_cb(MMHandleType hplayer, mm_player_stream_changed_callback callback, void *user_param); int _mmplayer_set_audiostream_changed_cb(MMHandleType hplayer, mm_player_stream_changed_callback callback, void *user_param); int _mmplayer_set_videostream_cb(MMHandleType hplayer, mm_player_video_stream_callback callback, void *user_param); -int _mmplayer_set_audiostream_cb(MMHandleType hplayer, mm_player_audio_stream_callback callback, void *user_param); int _mmplayer_set_subtitle_silent(MMHandleType hplayer, int silent); int _mmplayer_get_subtitle_silent(MMHandleType hplayer, int* silent); int _mmplayer_set_external_subtitle_path(MMHandleType hplayer, const char* filepath); @@ -932,7 +924,6 @@ int _mmplayer_set_next_uri(MMHandleType hplayer, const char* uri, bool is_first_ int _mmplayer_get_next_uri(MMHandleType hplayer, char** uri); int _mmplayer_has_closed_caption(MMHandleType hplayer, bool* exist); void _mm_player_video_stream_internal_buffer_unref(void *buffer); -int _mmplayer_set_pcm_spec(MMHandleType hplayer, int samplerate, int channel); int _mmplayer_get_timeout(MMHandleType hplayer, int *timeout); int _mmplayer_get_num_of_video_out_buffers(MMHandleType hplayer, int *num, int *extra_num); int _mmplayer_manage_external_storage_state(MMHandleType hplayer, int id, int state); @@ -958,7 +949,6 @@ int __mmplayer_check_state(mm_player_t* player, enum PlayerCommandState command) gboolean __mmplayer_update_content_attrs(mm_player_t* player, enum content_attr_flag flag); void __mmplayer_cancel_eos_timer(mm_player_t* player); void __mmplayer_audio_stream_clear_buffer(mm_player_t* player, gboolean send_all); -gboolean __mmplayer_configure_audio_callback(mm_player_t* player); MMStreamingType __mmplayer_get_stream_service_type(mm_player_t* player); int __mmplayer_get_video_angle(mm_player_t* player, int *display_angle, int *orientations); gboolean __mmplayer_gst_remove_fakesink(mm_player_t* player, MMPlayerGstElement* fakesink); diff --git a/src/mm_player.c b/src/mm_player.c index f06bc4c..33c02f8 100644 --- a/src/mm_player.c +++ b/src/mm_player.c @@ -195,21 +195,6 @@ int mm_player_set_pd_message_callback(MMHandleType player, MMMessageCallback cal return result; } -int mm_player_set_audio_stream_callback(MMHandleType player, mm_player_audio_stream_callback callback, void *user_param) -{ - int result = MM_ERROR_NONE; - - MMPLAYER_RETURN_VAL_IF_FAIL(player, MM_ERROR_PLAYER_NOT_INITIALIZED); - - MMPLAYER_CMD_LOCK(player); - - result = _mmplayer_set_audiostream_cb(player, callback, user_param); - - MMPLAYER_CMD_UNLOCK(player); - - return result; -} - int mm_player_set_audio_stream_callback_ex(MMHandleType player, bool sync, mm_player_audio_stream_callback_ex callback, void *user_param) { int result = MM_ERROR_NONE; @@ -1055,21 +1040,6 @@ int mm_player_set_video_stream_changed_callback(MMHandleType player, mm_player_s return result; } -int mm_player_set_pcm_spec(MMHandleType player, int samplerate, int channel) -{ - int result = MM_ERROR_NONE; - - MMPLAYER_RETURN_VAL_IF_FAIL(player, MM_ERROR_PLAYER_NOT_INITIALIZED); - - MMPLAYER_CMD_LOCK(player); - - result = _mmplayer_set_pcm_spec(player, samplerate, channel); - - MMPLAYER_CMD_UNLOCK(player); - - return result; -} - int mm_player_get_timeout(MMHandleType player, int *timeout) { int result = MM_ERROR_NONE; diff --git a/src/mm_player_attrs.c b/src/mm_player_attrs.c index dc7e95c..3eb51a3 100644 --- a/src/mm_player_attrs.c +++ b/src/mm_player_attrs.c @@ -620,15 +620,6 @@ _mmplayer_construct_attribute(MMHandleType handle) 0, 2 }, - { - "pcm_extraction", // enable pcm extraction - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) FALSE, - MM_ATTRS_VALID_TYPE_INT_RANGE, - FALSE, - TRUE - }, { "pcm_extraction_samplerate", // set samplerate for pcm extraction MM_ATTRS_TYPE_INT, @@ -638,15 +629,6 @@ _mmplayer_construct_attribute(MMHandleType handle) 0, MMPLAYER_MAX_INT }, - { - "pcm_extraction_depth", // set depth for pcm extraction - MM_ATTRS_TYPE_INT, - MM_ATTRS_FLAG_RW, - (void *) 16, // bits - MM_ATTRS_VALID_TYPE_INT_RANGE, - 0, - MMPLAYER_MAX_INT - }, { "pcm_extraction_channels", // set channels for pcm extraction MM_ATTRS_TYPE_INT, diff --git a/src/mm_player_gst.c b/src/mm_player_gst.c index 97e6dd8..d737d95 100644 --- a/src/mm_player_gst.c +++ b/src/mm_player_gst.c @@ -1254,11 +1254,11 @@ __mmplayer_handle_eos_delay(mm_player_t* player, int delay_in_ms) MMPLAYER_RETURN_IF_FAIL(player); /* post now if delay is zero */ - if (delay_in_ms == 0 || player->set_mode.pcm_extraction) { + if (delay_in_ms == 0 || player->audio_stream_render_cb_ex) { LOGD("eos delay is zero. posting EOS now\n"); MMPLAYER_POST_MSG(player, MM_MESSAGE_END_OF_STREAM, NULL); - if (player->set_mode.pcm_extraction) + if (player->audio_stream_render_cb_ex) __mmplayer_cancel_eos_timer(player); return; @@ -1396,26 +1396,9 @@ __mmplayer_gst_handle_eos_message(mm_player_t* player, GstMessage *msg) return; } - if (player->pipeline) { - if (player->pipeline->textbin) - __mmplayer_drop_subtitle(player, TRUE); - - if ((player->audio_stream_cb) && (player->set_mode.pcm_extraction) && (!player->audio_stream_render_cb_ex)) { - GstPad *pad = NULL; - - pad = gst_element_get_static_pad(player->pipeline->audiobin[MMPLAYER_A_SINK].gst, "sink"); - - LOGD("release audio callback"); - - /* release audio callback */ - gst_pad_remove_probe(pad, player->audio_cb_probe_id); - player->audio_cb_probe_id = 0; - /* audio callback should be free because it can be called even though probe remove.*/ - player->audio_stream_cb = NULL; - player->audio_stream_cb_user_param = NULL; + if (player->pipeline && player->pipeline->textbin) + __mmplayer_drop_subtitle(player, TRUE); - } - } if ((player->audio_stream_render_cb_ex) && (!player->audio_stream_sink_sync)) __mmplayer_audio_stream_clear_buffer(player, TRUE); @@ -1698,9 +1681,6 @@ __mmplayer_gst_handle_state_message(mm_player_t* player, GstMessage *msg) { gboolean prepare_async = FALSE; - if (!player->audio_cb_probe_id && player->set_mode.pcm_extraction && !player->audio_stream_render_cb_ex) - __mmplayer_configure_audio_callback(player); - if (!player->sent_bos && oldstate == GST_STATE_READY) { // managed prepare async case mm_attrs_get_int_by_name(player->attrs, "profile_prepare_async", &prepare_async); diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index 9f55658..864bec4 100755 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -157,7 +157,6 @@ static gboolean __mmplayer_update_subtitle(GstElement* object, GstBuffer *buffer static void __mmplayer_release_misc(mm_player_t* player); static void __mmplayer_release_misc_post(mm_player_t* player); static gboolean __mmplayer_init_gstreamer(mm_player_t* player); -static GstPadProbeReturn __mmplayer_audio_stream_probe(GstPad *pad, GstPadProbeInfo *info, gpointer u_data); static void __mmplayer_video_stream_decoded_preroll_cb(GstElement* object, GstBuffer *buffer, GstPad *pad, gpointer data); static void __mmplayer_video_stream_decoded_render_cb(GstElement* object, GstBuffer *buffer, GstPad *pad, gpointer data); static GstPadProbeReturn __mmplayer_subtitle_adjust_position_probe(GstPad *pad, GstPadProbeInfo *info, gpointer u_data); @@ -177,7 +176,6 @@ static int __mmplayer_gst_realize(mm_player_t* player); static int __mmplayer_gst_unrealize(mm_player_t* player); static int __mmplayer_gst_adjust_subtitle_position(mm_player_t* player, int format, int position); static int __mmplayer_gst_set_message_callback(mm_player_t* player, MMMessageCallback callback, gpointer user_param); -static gboolean __mmplayer_can_extract_pcm(mm_player_t* player); /* util */ static int __mmplayer_realize_streaming_ext(mm_player_t* player); @@ -398,12 +396,6 @@ __mmplayer_set_state(mm_player_t* player, int state) __mmplayer_update_content_attrs(player, ATTR_ALL); } } - - /* add audio callback probe if condition is satisfied */ - if (!player->audio_cb_probe_id && player->set_mode.pcm_extraction && !player->audio_stream_render_cb_ex) - __mmplayer_configure_audio_callback(player); - - /* FIXIT : handle return value */ } break; @@ -1903,17 +1895,16 @@ __mmplayer_gst_decode_callback(GstElement *elem, GstPad *pad, gpointer data) goto ERROR; } - //LOGD("detected mimetype : %s\n", name); - + /* LOGD("detected mimetype : %s", name); */ if (strstr(name, "audio")) { if (player->pipeline->audiobin == NULL) { - if (MM_ERROR_NONE != __mmplayer_gst_create_audio_pipeline(player)) { + if (__mmplayer_gst_create_audio_pipeline(player) != MM_ERROR_NONE) { LOGE("failed to create audiobin. continuing without audio\n"); goto ERROR; } sinkbin = player->pipeline->audiobin[MMPLAYER_A_BIN].gst; - LOGD("creating audiosink bin success\n"); + LOGD("creating audiosink bin success"); } else { reusing = TRUE; sinkbin = player->pipeline->audiobin[MMPLAYER_A_BIN].gst; @@ -3046,13 +3037,12 @@ void __mmplayer_gst_set_audiosink_property(mm_player_t* player, MMHandleType att static int __mmplayer_gst_create_audio_pipeline(mm_player_t* player) { - MMPlayerGstElement* first_element = NULL; - MMPlayerGstElement* audiobin = NULL; + MMPlayerGstElement *first_element = NULL; + MMPlayerGstElement *audiobin = NULL; MMHandleType attrs = 0; GstPad *pad = NULL; GstPad *ghostpad = NULL; - GList* element_bucket = NULL; - gboolean link_audio_sink_now = TRUE; + GList *element_bucket = NULL; int i = 0; GstCaps *acaps; @@ -3080,11 +3070,6 @@ __mmplayer_gst_create_audio_pipeline(mm_player_t* player) /* take it */ player->pipeline->audiobin = audiobin; - player->set_mode.pcm_extraction = __mmplayer_can_extract_pcm(player); - - /* Adding audiotp plugin for reverse trickplay feature */ -// MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_TP, "audiotp", "audio trickplay", TRUE, player); - /* converter */ MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_CONV, "audioconvert", "audio converter", TRUE, player); @@ -3098,80 +3083,51 @@ __mmplayer_gst_create_audio_pipeline(mm_player_t* player) /* resampler */ MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_RESAMPLER, player->ini.audioresampler_element, "audio resampler", TRUE, player); - if (player->set_mode.pcm_extraction) { - // pcm extraction only and no sound output - if (player->audio_stream_render_cb_ex) { - char *caps_str = NULL; - GstCaps* caps = NULL; - gchar *format = NULL; - - /* capsfilter */ - MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_CAPS_DEFAULT, "capsfilter", "audio capsfilter", TRUE, player); - - mm_attrs_get_string_by_name(player->attrs, "pcm_audioformat", &format); - - LOGD("contents : format: %s samplerate : %d pcm_channel: %d", format, player->pcm_samplerate, player->pcm_channel); - - caps = gst_caps_new_simple("audio/x-raw", - "format", G_TYPE_STRING, format, - "rate", G_TYPE_INT, player->pcm_samplerate, - "channels", G_TYPE_INT, player->pcm_channel, + if (player->audio_stream_render_cb_ex) { /* pcm extraction only, no sound output */ + gchar *dst_format = NULL; + int dst_len = 0; + int dst_samplerate = 0; + int dst_channels = 0; + GstCaps *caps = NULL; + char *caps_str = NULL; + + /* get conf. values */ + mm_attrs_multiple_get(player->attrs, NULL, + "pcm_audioformat", &dst_format, &dst_len, + "pcm_extraction_samplerate", &dst_samplerate, + "pcm_extraction_channels", &dst_channels, NULL); - caps_str = gst_caps_to_string(caps); - LOGD("new caps : %s\n", caps_str); - g_object_set(GST_ELEMENT(audiobin[MMPLAYER_A_CAPS_DEFAULT].gst), "caps", caps, NULL); + LOGD("pcm info - format: %s(%d), samplerate : %d, channel: %d", dst_format, dst_len, dst_samplerate, dst_channels); - /* clean */ - gst_caps_unref(caps); - MMPLAYER_FREEIF(caps_str); + /* capsfilter */ + MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_CAPS_DEFAULT, "capsfilter", "audio capsfilter", TRUE, player); + caps = gst_caps_new_simple("audio/x-raw", + "format", G_TYPE_STRING, dst_format, + "rate", G_TYPE_INT, dst_samplerate, + "channels", G_TYPE_INT, dst_channels, + NULL); - MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_DEINTERLEAVE, "deinterleave", "deinterleave", TRUE, player); + caps_str = gst_caps_to_string(caps); + LOGD("new caps : %s", caps_str); - g_object_set(G_OBJECT(audiobin[MMPLAYER_A_DEINTERLEAVE].gst), "keep-positions", TRUE, NULL); - /* raw pad handling signal */ - __mmplayer_add_signal_connection(player, G_OBJECT(audiobin[MMPLAYER_A_DEINTERLEAVE].gst), - MM_PLAYER_SIGNAL_TYPE_AUTOPLUG, "pad-added", G_CALLBACK(__mmplayer_gst_audio_deinterleave_pad_added), (gpointer)player); - } else { - int dst_samplerate = 0; - int dst_channels = 0; - int dst_depth = 0; - char *caps_str = NULL; - GstCaps* caps = NULL; - - /* get conf. values */ - mm_attrs_multiple_get(player->attrs, - NULL, - "pcm_extraction_samplerate", &dst_samplerate, - "pcm_extraction_channels", &dst_channels, - "pcm_extraction_depth", &dst_depth, - NULL); - - /* capsfilter */ - MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_CAPS_DEFAULT, "capsfilter", "audio capsfilter", TRUE, player); - caps = gst_caps_new_simple("audio/x-raw", - "rate", G_TYPE_INT, dst_samplerate, - "channels", G_TYPE_INT, dst_channels, - "depth", G_TYPE_INT, dst_depth, - NULL); - caps_str = gst_caps_to_string(caps); - LOGD("new caps : %s\n", caps_str); + g_object_set(GST_ELEMENT(audiobin[MMPLAYER_A_CAPS_DEFAULT].gst), "caps", caps, NULL); + + /* clean */ + gst_caps_unref(caps); + MMPLAYER_FREEIF(caps_str); - g_object_set(GST_ELEMENT(audiobin[MMPLAYER_A_CAPS_DEFAULT].gst), "caps", caps, NULL); + MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_DEINTERLEAVE, "deinterleave", "deinterleave", TRUE, player); - /* clean */ - gst_caps_unref(caps); - MMPLAYER_FREEIF(caps_str); + g_object_set(G_OBJECT(audiobin[MMPLAYER_A_DEINTERLEAVE].gst), "keep-positions", TRUE, NULL); - /* fake sink */ - MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_SINK, "fakesink", "fakesink", TRUE, player); + /* raw pad handling signal */ + __mmplayer_add_signal_connection(player, G_OBJECT(audiobin[MMPLAYER_A_DEINTERLEAVE].gst), + MM_PLAYER_SIGNAL_TYPE_AUTOPLUG, "pad-added", G_CALLBACK(__mmplayer_gst_audio_deinterleave_pad_added), (gpointer)player); - /* set sync */ - g_object_set(G_OBJECT(audiobin[MMPLAYER_A_SINK].gst), "sync", FALSE, NULL); - } } else { - // normal playback - //GstCaps* caps = NULL; + + /* normal playback */ gint channels = 0; /* for logical volume control */ @@ -3183,18 +3139,6 @@ __mmplayer_gst_create_audio_pipeline(mm_player_t* player) g_object_set(G_OBJECT(audiobin[MMPLAYER_A_VOL].gst), "mute", player->sound.mute, NULL); } -#if 0 - /*capsfilter */ - MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_CAPS_DEFAULT, "capsfilter", "audiocapsfilter", TRUE, player); - caps = gst_caps_from_string("audio/x-raw-int, " - "endianness = (int) LITTLE_ENDIAN, " - "signed = (boolean) true, " - "width = (int) 16, " - "depth = (int) 16"); - g_object_set(GST_ELEMENT(audiobin[MMPLAYER_A_CAPS_DEFAULT].gst), "caps", caps, NULL); - gst_caps_unref(caps); -#endif - /* check if multi-channels */ if (player->pipeline->mainbin && player->pipeline->mainbin[MMPLAYER_M_DEMUX].gst) { GstPad *srcpad = NULL; @@ -3248,14 +3192,14 @@ __mmplayer_gst_create_audio_pipeline(mm_player_t* player) strncpy(player->ini.audiosink_element, "openalsink", PLAYER_INI_MAX_STRLEN - 1); - MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_CONV_BFORMAT, "audioconvert", "audio-converter-bformat", link_audio_sink_now, player); + MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_CONV_BFORMAT, "audioconvert", "audio-converter-bformat", TRUE, player); - MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_CAPS_360, "capsfilter", "audio-caps-filter", link_audio_sink_now, player); + MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_CAPS_360, "capsfilter", "audio-caps-filter", TRUE, player); acaps = gst_caps_from_string(SPATIAL_AUDIO_CAPS); g_object_set(G_OBJECT(audiobin[MMPLAYER_A_CAPS_360].gst), "caps", acaps, NULL); gst_caps_unref(acaps); - MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_SINK, "openalsink", "audiosink", link_audio_sink_now, player); + MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_SINK, "openalsink", "audiosink", TRUE, player); g_object_set(G_OBJECT(audiobin[MMPLAYER_A_SINK].gst), "source-ambisonics-type", 1, NULL); sound_manager_create_stream_information(SOUND_STREAM_TYPE_MEDIA, NULL, NULL, &stream_info); g_object_set(G_OBJECT(audiobin[MMPLAYER_A_SINK].gst), "stream-info", stream_info, NULL); @@ -3277,7 +3221,7 @@ __mmplayer_gst_create_audio_pipeline(mm_player_t* player) } else { if (player->is_360_feature_enabled && player->is_content_spherical) LOGW("Audio track isn't of the ambisonic type and can't be played back as a spatial sound.\n"); - MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_SINK, player->ini.audiosink_element, "audiosink", link_audio_sink_now, player); + MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_SINK, player->ini.audiosink_element, "audiosink", TRUE, player); } /* qos on */ @@ -3389,21 +3333,6 @@ ERROR: return MM_ERROR_PLAYER_INTERNAL; } -static GstPadProbeReturn -__mmplayer_audio_stream_probe(GstPad *pad, GstPadProbeInfo *info, gpointer u_data) -{ - mm_player_t* player = (mm_player_t*) u_data; - GstBuffer *pad_buffer = gst_pad_probe_info_get_buffer(info); - GstMapInfo probe_info = GST_MAP_INFO_INIT; - - gst_buffer_map(pad_buffer, &probe_info, GST_MAP_READ); - - if (player->audio_stream_cb && probe_info.size && probe_info.data) - player->audio_stream_cb((void *)probe_info.data, probe_info.size, player->audio_stream_cb_user_param); - - return GST_PAD_PROBE_OK; -} - static guint32 _mmplayer_convert_fourcc_string_to_value(const gchar* format_name) { return format_name[0] | (format_name[1] << 8) | (format_name[2] << 16) | (format_name[3] << 24); @@ -4810,8 +4739,8 @@ __mmplayer_can_do_interrupt(mm_player_t *player) goto FAILED; } - if (player->set_mode.pcm_extraction) { - LOGW("leave right now, %d", player->set_mode.pcm_extraction); + if (player->audio_stream_render_cb_ex) { + LOGW("not support in pcm extraction mode"); goto FAILED; } @@ -5770,24 +5699,6 @@ _mmplayer_set_videostream_cb(MMHandleType hplayer, mm_player_video_stream_callba return MM_ERROR_NONE; } -int -_mmplayer_set_audiostream_cb(MMHandleType hplayer, mm_player_audio_stream_callback callback, void *user_param) -{ - mm_player_t* player = (mm_player_t*) hplayer; - - MMPLAYER_FENTER(); - - MMPLAYER_RETURN_VAL_IF_FAIL(player, MM_ERROR_PLAYER_NOT_INITIALIZED); - - player->audio_stream_cb = callback; - player->audio_stream_cb_user_param = user_param; - LOGD("Audio Stream cb Handle value is %p : %p\n", player, player->audio_stream_cb); - - MMPLAYER_FLEAVE(); - - return MM_ERROR_NONE; -} - static int __mmplayer_start_streaming_ext(mm_player_t *player) { @@ -7937,45 +7848,6 @@ __mmplayer_gst_element_added(GstElement *bin, GstElement *element, gpointer data return; } -gboolean __mmplayer_configure_audio_callback(mm_player_t* player) -{ - MMPLAYER_FENTER(); - MMPLAYER_RETURN_VAL_IF_FAIL(player, FALSE); - - if (MMPLAYER_IS_STREAMING(player)) - return FALSE; - - /* This callback can be set to music player only. */ - if ((player->can_support_codec & 0x02) == FOUND_PLUGIN_VIDEO) { - LOGW("audio callback is not supported for video"); - return FALSE; - } - - if (player->audio_stream_cb) { - GstPad *pad = NULL; - - pad = gst_element_get_static_pad(player->pipeline->audiobin[MMPLAYER_A_SINK].gst, "sink"); - - if (!pad) { - LOGE("failed to get sink pad from audiosink to probe data\n"); - return FALSE; - } - player->audio_cb_probe_id = gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_BUFFER, - __mmplayer_audio_stream_probe, player, NULL); - - gst_object_unref(pad); - - pad = NULL; - } else { - LOGE("There is no audio callback to configure.\n"); - return FALSE; - } - - MMPLAYER_FLEAVE(); - - return TRUE; -} - static void __mmplayer_release_misc(mm_player_t* player) { @@ -7989,7 +7861,6 @@ __mmplayer_release_misc(mm_player_t* player) player->video_stream_cb_user_param = NULL; player->video_stream_prerolled = FALSE; - player->audio_stream_cb = NULL; player->audio_stream_render_cb_ex = NULL; player->audio_stream_cb_user_param = NULL; player->audio_stream_sink_sync = false; @@ -8224,31 +8095,6 @@ __mmplayer_check_subtitle(mm_player_t* player) return TRUE; } -static gboolean -__mmplayer_can_extract_pcm(mm_player_t* player) -{ - MMHandleType attrs = 0; - gboolean sound_extraction = FALSE; - - MMPLAYER_RETURN_VAL_IF_FAIL(player, FALSE); - - attrs = MMPLAYER_GET_ATTRS(player); - if (!attrs) { - LOGE("fail to get attributes."); - return FALSE; - } - - /* get sound_extraction property */ - mm_attrs_get_int_by_name(attrs, "pcm_extraction", &sound_extraction); - - if (!sound_extraction) { - LOGD("checking pcm extraction mode : %d ", sound_extraction); - return FALSE; - } - - return TRUE; -} - void __mmplayer_cancel_eos_timer(mm_player_t* player) { @@ -9227,22 +9073,6 @@ void _mm_player_video_stream_internal_buffer_unref(void *buffer) MMPLAYER_FLEAVE(); } -int -_mmplayer_set_pcm_spec(MMHandleType hplayer, int samplerate, int channel) -{ - mm_player_t* player = (mm_player_t*) hplayer; - - MMPLAYER_FENTER(); - - MMPLAYER_RETURN_VAL_IF_FAIL(player, MM_ERROR_PLAYER_NOT_INITIALIZED); - - player->pcm_samplerate = samplerate; - player->pcm_channel = channel; - - MMPLAYER_FLEAVE(); - return MM_ERROR_NONE; -} - int _mmplayer_get_timeout(MMHandleType hplayer, int *timeout) { mm_player_t* player = (mm_player_t*) hplayer;