MM_PLAYER_URI_TYPE_FILE, /**< Player URI type File */
MM_PLAYER_URI_TYPE_URL, /**< Player URI type URL */
MM_PLAYER_URI_TYPE_BUFF, /**< Player URI type Buffer */
- MM_PLAYER_URI_TYPE_HLS, /**< Player URI type http live streaming */
+ MM_PLAYER_URI_TYPE_HLS, /**< Player URI type http live streaming */
MM_PLAYER_URI_TYPE_TEMP, /**< Player URI type Temp */
};
MMPLAYER_M_SRC_2ND_FAKESINK,
/* streaming plugin */
- MMPLAYER_M_S_BUFFER,
- MMPLAYER_M_S_ADEC,
- MMPLAYER_M_S_VDEC,
-
+ MMPLAYER_M_S_BUFFER,
+ MMPLAYER_M_S_ADEC,
+ MMPLAYER_M_S_VDEC,
+
/* FIXIT : if there's really no usage for following IDs. remove it */
MMPLAYER_M_DEC1,
MMPLAYER_M_DEC2,
int _mmplayer_set_videoframe_render_error_cb(MMHandleType hplayer, mm_player_video_frame_render_error_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_get_track_count(MMHandleType hplayer, MMPlayerTrackType track_type, int *count);
int _mmplayer_get_buffer_position(MMHandleType hplayer, int format, unsigned long* start_pos, unsigned long* stop_pos);
/* test API for tuning audio gain. this API should be
* deprecated before the day of final release
| LOCAL FUNCTION PROTOTYPES: |
---------------------------------------------------------------------------*/
/* mm_player_priv.c */
-gboolean __mmplayer_eos_timer_cb(gpointer u_data);
+gboolean __mmplayer_set_state(mm_player_t* player, int state);
void __mmplayer_typefind_have_type( GstElement *tf, guint probability, GstCaps *caps, gpointer data);
-GstBusSyncReply __mmplayer_bus_sync_callback (GstBus * bus, GstMessage * message, gpointer data);
+gboolean __mmplayer_try_to_plug(mm_player_t* player, GstPad *pad, const GstCaps *caps);
+void __mmplayer_pipeline_complete(GstElement *decodebin, gpointer data);
gboolean __mmplayer_update_subtitle( GstElement* object, GstBuffer *buffer, GstPad *pad, gpointer data);
-void __mmplayer_videoframe_render_error_cb(GstElement *element, void *error_id, gpointer data);
+void __mmplayer_release_misc(mm_player_t* player);
+gboolean __mmplayer_configure_audio_callback(mm_player_t* player);
+void __mmplayer_set_antishock( mm_player_t* player, gboolean disable_by_force);
+gboolean _mmplayer_update_content_attrs(mm_player_t* player, enum content_attr_flag flag);
void __mmplayer_videostream_cb(GstElement *element, void *stream, int width, int height, gpointer data);
+void __mmplayer_videoframe_render_error_cb(GstElement *element, void *error_id, gpointer data);
+void __mmplayer_handle_buffering_message ( mm_player_t* player );
+int __mmplayer_set_pcm_extraction(mm_player_t* player);
+gboolean __mmplayer_can_extract_pcm( mm_player_t* player );
+void __mmplayer_do_sound_fadedown(mm_player_t* player, unsigned int time);
+void __mmplayer_undo_sound_fadedown(mm_player_t* player);
+const gchar * __get_state_name ( int state );
+GstBusSyncReply __mmplayer_bus_sync_callback (GstBus * bus, GstMessage * message, gpointer data);
+void __mmplayer_post_delayed_eos( mm_player_t* player, int delay_in_ms );
+void __gst_set_async_state_change(mm_player_t* player, gboolean async);
+gboolean __mmplayer_post_message(mm_player_t* player, enum MMMessageType msgtype, MMMessageParamType* param);
/* mm_player_priv_wrapper.c */
gboolean __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data);
/*---------------------------------------------------------------------------
| LOCAL FUNCTION PROTOTYPES: |
---------------------------------------------------------------------------*/
-static gboolean __mmplayer_set_state(mm_player_t* player, int state);
static int __mmplayer_get_state(mm_player_t* player);
-static gboolean __mmplayer_try_to_plug(mm_player_t* player, GstPad *pad, const GstCaps *caps);
-static void __mmplayer_pipeline_complete(GstElement *decodebin, gpointer data);
static gboolean __mmplayer_is_midi_type(gchar* str_caps);
static gboolean __mmplayer_is_amr_type (gchar *str_caps);
static gboolean __mmplayer_is_only_mp3_type (gchar *str_caps);
static gboolean __mmplayer_get_stream_service_type( mm_player_t* player );
static void __mmplayer_init_factories(mm_player_t* player);
static void __mmplayer_release_factories(mm_player_t* player);
-static void __mmplayer_release_misc(mm_player_t* player);
static gboolean __mmplayer_gstreamer_init(void);
gboolean __mmplayer_post_message(mm_player_t* player, enum MMMessageType msgtype, MMMessageParamType* param);
int __mmplayer_switch_audio_sink (mm_player_t* player);
static int __mmplayer_check_state(mm_player_t* player, enum PlayerCommandState command);
static gboolean __mmplayer_audio_stream_probe (GstPad *pad, GstBuffer *buffer, gpointer u_data);
-static void __mmplayer_post_delayed_eos( mm_player_t* player, int delay_in_ms );
-static void __mmplayer_cancel_delayed_eos( mm_player_t* player );
+static gboolean __mmplayer_eos_timer_cb(gpointer u_data);
static int __mmplayer_check_not_supported_codec(mm_player_t* player, gchar* mime);
-static gboolean __mmplayer_configure_audio_callback(mm_player_t* player);
-static void __mmplayer_set_antishock( mm_player_t* player, gboolean disable_by_force);
static gpointer __mmplayer_repeat_thread(gpointer data);
-int _mmplayer_get_track_count(MMHandleType hplayer, MMPlayerTrackType track_type, int *count);
-static gboolean _mmplayer_update_content_attrs(mm_player_t* player, enum content_attr_flag flag);
-static void __gst_set_async_state_change(mm_player_t* player, gboolean async);
-static int __mmplayer_set_pcm_extraction(mm_player_t* player);
-static gboolean __mmplayer_can_extract_pcm( mm_player_t* player );
-
-/*fadeout */
-static void __mmplayer_do_sound_fadedown(mm_player_t* player, unsigned int time);
-static void __mmplayer_undo_sound_fadedown(mm_player_t* player);
-
static void __mmplayer_add_new_caps(GstPad* pad, GParamSpec* unused, gpointer data);
static void __mmplayer_set_unlinked_mime_type(mm_player_t* player, GstCaps *caps);
return TRUE;
}
-gint __mmplayer_get_stream_service_type( mm_player_t* player )
+static gint __mmplayer_get_stream_service_type( mm_player_t* player )
{
gint streaming_type = STREAMING_SERVICE_NONE;
/* this function sets the player state and also report
* it to applicaton by calling callback function
*/
-static gboolean
+gboolean
__mmplayer_set_state(mm_player_t* player, int state) // @
{
MMMessageParamType msg = {0, };
return state;
}
-static void
+void
__gst_set_async_state_change(mm_player_t* player, gboolean async)
{
//debug_fenter();
return NULL;
}
-static void
+void
__mmplayer_handle_buffering_message ( mm_player_t* player )
{
MMPlayerStateType prev_state = MM_PLAYER_STATE_NONE;
return GST_BUS_DROP;
}
-static void __mmplayer_do_sound_fadedown(mm_player_t* player, unsigned int time)
+void __mmplayer_do_sound_fadedown(mm_player_t* player, unsigned int time)
{
debug_fenter();
debug_fleave();
}
-static void __mmplayer_undo_sound_fadedown(mm_player_t* player)
+void __mmplayer_undo_sound_fadedown(mm_player_t* player)
{
debug_fenter();
return MM_ERROR_NONE;
}
-static int
+int
__mmplayer_set_pcm_extraction(mm_player_t* player)
{
guint64 start_nsec = 0;
}
/* it will return first created element */
-static gboolean
+gboolean
__mmplayer_try_to_plug(mm_player_t* player, GstPad *pad, const GstCaps *caps) // @
{
MMPlayerGstElement* mainbin = NULL;
}
-static void __mmplayer_pipeline_complete(GstElement *decodebin, gpointer data) // @
+void __mmplayer_pipeline_complete(GstElement *decodebin, gpointer data) // @
{
mm_player_t* player = (mm_player_t*)data;
MMPLAYER_GENERATE_DOT_IF_ENABLED ( player, "pipeline-status-complete" );
}
-static gboolean __mmplayer_configure_audio_callback(mm_player_t* player)
+gboolean __mmplayer_configure_audio_callback(mm_player_t* player)
{
debug_fenter();
debug_fleave();
}
-static void
+void
__mmplayer_release_misc(mm_player_t* player)
{
int i;
return error;
}
-static gboolean
+gboolean
__mmplayer_can_extract_pcm( mm_player_t* player )
{
MMHandleType attrs = 0;
return TRUE;
}
-static void
-__mmplayer_cancel_delayed_eos( mm_player_t* player )
+void
+__mmplayer_post_delayed_eos( mm_player_t* player, int delay_in_ms )
{
debug_fenter();
return_if_fail( player );
- if ( player->eos_timer )
+ /* cancel if existing */
+ __mmplayer_cancel_delayed_eos( player );
+
+
+ /* post now if delay is zero */
+ if ( delay_in_ms == 0 || player->is_sound_extraction)
{
- g_source_remove( player->eos_timer );
+ debug_log("eos delay is zero. posting EOS now\n");
+ MMPLAYER_POST_MSG( player, MM_MESSAGE_END_OF_STREAM, NULL );
+
+ if ( player->is_sound_extraction )
+ __mmplayer_cancel_delayed_eos(player);
+
+ return;
}
- player->eos_timer = 0;
+ /* init new timeout */
+ /* NOTE : consider give high priority to this timer */
- debug_fleave();
+ debug_log("posting EOS message after [%d] msec\n", delay_in_ms);
+ player->eos_timer = g_timeout_add( delay_in_ms,
+ __mmplayer_eos_timer_cb, player );
- return;
+
+ /* check timer is valid. if not, send EOS now */
+ if ( player->eos_timer == 0 )
+ {
+ debug_warning("creating timer for delayed EOS has failed. sending EOS now\n");
+ MMPLAYER_POST_MSG( player, MM_MESSAGE_END_OF_STREAM, NULL );
+ }
+
+ debug_fleave();
}
-gboolean
+
+static gboolean
__mmplayer_eos_timer_cb(gpointer u_data)
{
mm_player_t* player = NULL;
return FALSE;
}
-static void __mmplayer_set_antishock( mm_player_t* player, gboolean disable_by_force)
+void __mmplayer_set_antishock( mm_player_t* player, gboolean disable_by_force)
{
gint antishock = FALSE;
MMHandleType attrs = 0;
return MM_ERROR_NONE;
}
+void
+__mmplayer_cancel_delayed_eos( mm_player_t* player )
+{
+ debug_fenter();
+
+ return_if_fail( player );
+
+ if ( player->eos_timer )
+ {
+ g_source_remove( player->eos_timer );
+ }
+
+ player->eos_timer = 0;
+
+ debug_fleave();
+
+ return;
+}
+
gboolean
__mmplayer_check_subtitle( mm_player_t* player )
{
return MM_ERROR_PLAYER_CODEC_NOT_FOUND;
}
-static void
-__mmplayer_post_delayed_eos( mm_player_t* player, int delay_in_ms )
-{
- debug_fenter();
-
- return_if_fail( player );
-
- /* cancel if existing */
- __mmplayer_cancel_delayed_eos( player );
-
-
- /* post now if delay is zero */
- if ( delay_in_ms == 0 || player->is_sound_extraction)
- {
- debug_log("eos delay is zero. posting EOS now\n");
- MMPLAYER_POST_MSG( player, MM_MESSAGE_END_OF_STREAM, NULL );
-
- if ( player->is_sound_extraction )
- __mmplayer_cancel_delayed_eos(player);
-
- return;
- }
-
- /* init new timeout */
- /* NOTE : consider give high priority to this timer */
-
- debug_log("posting EOS message after [%d] msec\n", delay_in_ms);
- player->eos_timer = g_timeout_add( delay_in_ms,
- __mmplayer_eos_timer_cb, player );
-
-
- /* check timer is valid. if not, send EOS now */
- if ( player->eos_timer == 0 )
- {
- debug_warning("creating timer for delayed EOS has failed. sending EOS now\n");
- MMPLAYER_POST_MSG( player, MM_MESSAGE_END_OF_STREAM, NULL );
- }
-
- debug_fleave();
-}
-
gboolean
__mmplayer_handle_gst_error ( mm_player_t* player, GstMessage * message, GError* error )
{