static void __mmplayer_add_sink(mm_player_t* player, GstElement* sink);
static void __mmplayer_del_sink(mm_player_t* player, GstElement* sink);
static void __mmplayer_release_signal_connection(mm_player_t* player, MMPlayerSignalType type);
-static gpointer __mmplayer_next_play_thread(gpointer data);
+static gpointer __mmplayer_gapless_play_thread(gpointer data);
static gboolean __mmplayer_add_dump_buffer_probe(mm_player_t *player, GstElement *element);
static GstPadProbeReturn __mmplayer_dump_buffer_probe_cb(GstPad *pad, GstPadProbeInfo *info, gpointer u_data);
static void __mmplayer_release_dump_list(GList *dump_list);
static int __mmplayer_unrealize_streaming_ext(mm_player_t *player);
static int __mmplayer_start_streaming_ext(mm_player_t *player);
static int __mmplayer_destroy_streaming_ext(mm_player_t* player);
-static gboolean __mmplayer_verify_next_play_path(mm_player_t *player);
+static gboolean __mmplayer_verify_gapless_play_path(mm_player_t *player);
static void __mmplayer_activate_next_source(mm_player_t *player, GstState target);
static void __mmplayer_check_pipeline(mm_player_t* player);
static gboolean __mmplayer_deactivate_selector(mm_player_t *player, MMPlayerTrackType type);
return MM_ERROR_PLAYER_NO_OP;
}
-static gpointer __mmplayer_next_play_thread(gpointer data)
+static gpointer __mmplayer_gapless_play_thread(gpointer data)
{
mm_player_t* player = (mm_player_t*) data;
MMPlayerGstElement *mainbin = NULL;
MMPLAYER_RETURN_VAL_IF_FAIL(player, NULL);
- MMPLAYER_NEXT_PLAY_THREAD_LOCK(player);
- while (!player->next_play_thread_exit) {
- LOGD("next play thread started. waiting for signal.\n");
- MMPLAYER_NEXT_PLAY_THREAD_WAIT(player);
+ MMPLAYER_GAPLESS_PLAY_THREAD_LOCK(player);
+ while (!player->gapless_play_thread_exit) {
+ LOGD("gapless play thread started. waiting for signal.\n");
+ MMPLAYER_GAPLESS_PLAY_THREAD_WAIT(player);
LOGD("reconfigure pipeline for gapless play.\n");
- if (player->next_play_thread_exit) {
+ if (player->gapless_play_thread_exit) {
if (player->gapless.reconfigure) {
player->gapless.reconfigure = false;
MMPLAYER_PLAYBACK_UNLOCK(player);
__mmplayer_activate_next_source(player, GST_STATE_PLAYING);
}
- MMPLAYER_NEXT_PLAY_THREAD_UNLOCK(player);
+ MMPLAYER_GAPLESS_PLAY_THREAD_UNLOCK(player);
return NULL;
}
/* create update tag lock */
g_mutex_init(&player->update_tag_lock);
- /* create next play mutex */
- g_mutex_init(&player->next_play_thread_mutex);
+ /* create gapless play mutex */
+ g_mutex_init(&player->gapless_play_thread_mutex);
- /* create next play cond */
- g_cond_init(&player->next_play_thread_cond);
+ /* create gapless play cond */
+ g_cond_init(&player->gapless_play_thread_cond);
- /* create next play thread */
- player->next_play_thread =
- g_thread_try_new("next_play_thread", __mmplayer_next_play_thread, (gpointer)player, NULL);
- if (!player->next_play_thread) {
- LOGE("failed to create next play thread");
+ /* create gapless play thread */
+ player->gapless_play_thread =
+ g_thread_try_new("gapless_play_thread", __mmplayer_gapless_play_thread, (gpointer)player, NULL);
+ if (!player->gapless_play_thread) {
+ LOGE("failed to create gapless play thread");
ret = MM_ERROR_PLAYER_RESOURCE_LIMIT;
- g_mutex_clear(&player->next_play_thread_mutex);
- g_cond_clear(&player->next_play_thread_cond);
+ g_mutex_clear(&player->gapless_play_thread_mutex);
+ g_cond_clear(&player->gapless_play_thread_cond);
goto ERROR;
}
g_queue_free(player->bus_msg_q);
- /* free next play thread */
- if (player->next_play_thread) {
- MMPLAYER_NEXT_PLAY_THREAD_LOCK(player);
- player->next_play_thread_exit = TRUE;
- MMPLAYER_NEXT_PLAY_THREAD_SIGNAL(player);
- MMPLAYER_NEXT_PLAY_THREAD_UNLOCK(player);
+ /* free gapless play thread */
+ if (player->gapless_play_thread) {
+ MMPLAYER_GAPLESS_PLAY_THREAD_LOCK(player);
+ player->gapless_play_thread_exit = TRUE;
+ MMPLAYER_GAPLESS_PLAY_THREAD_SIGNAL(player);
+ MMPLAYER_GAPLESS_PLAY_THREAD_UNLOCK(player);
- g_thread_join(player->next_play_thread);
- player->next_play_thread = NULL;
+ g_thread_join(player->gapless_play_thread);
+ player->gapless_play_thread = NULL;
- g_mutex_clear(&player->next_play_thread_mutex);
- g_cond_clear(&player->next_play_thread_cond);
+ g_mutex_clear(&player->gapless_play_thread_mutex);
+ g_cond_clear(&player->gapless_play_thread_cond);
}
/* release attributes */
__mmplayer_destroy_streaming_ext(player);
- /* release next play thread */
- if (player->next_play_thread) {
- MMPLAYER_NEXT_PLAY_THREAD_LOCK(player);
- player->next_play_thread_exit = TRUE;
- MMPLAYER_NEXT_PLAY_THREAD_SIGNAL(player);
- MMPLAYER_NEXT_PLAY_THREAD_UNLOCK(player);
+ /* release gapless play thread */
+ if (player->gapless_play_thread) {
+ MMPLAYER_GAPLESS_PLAY_THREAD_LOCK(player);
+ player->gapless_play_thread_exit = TRUE;
+ MMPLAYER_GAPLESS_PLAY_THREAD_SIGNAL(player);
+ MMPLAYER_GAPLESS_PLAY_THREAD_UNLOCK(player);
- LOGD("waitting for next play thread exit\n");
- g_thread_join(player->next_play_thread);
- g_mutex_clear(&player->next_play_thread_mutex);
- g_cond_clear(&player->next_play_thread_cond);
- LOGD("next play thread released\n");
+ LOGD("waitting for gapless play thread exit\n");
+ g_thread_join(player->gapless_play_thread);
+ g_mutex_clear(&player->gapless_play_thread_mutex);
+ g_cond_clear(&player->gapless_play_thread_cond);
+ LOGD("gapless play thread released\n");
}
_mmplayer_release_video_capture(player);
}
static gboolean
-__mmplayer_verify_next_play_path(mm_player_t *player)
+__mmplayer_verify_gapless_play_path(mm_player_t *player)
{
#define REPEAT_COUNT_INFINITELY -1
#define REPEAT_COUNT_MIN 2
MMPLAYER_FENTER();
- LOGD("checking for next play option");
+ LOGD("checking for gapless play option");
if (player->pipeline->textbin) {
LOGE("subtitle path is enabled. gapless play is not supported.\n");
return TRUE;
ERROR:
- LOGE("unable to play next path. EOS will be posted soon");
+ LOGE("unable to play gapless path. EOS will be posted soon");
return FALSE;
}
static void
-__mmplayer_initialize_next_play(mm_player_t *player)
+__mmplayer_initialize_gapless_play(mm_player_t *player)
{
int i;
}
/* Initialize Player values */
- __mmplayer_initialize_next_play(player);
+ __mmplayer_initialize_gapless_play(player);
mm_attrs_get_string_by_name(attrs, "profile_uri", &uri);
}
MMPLAYER_PLAYBACK_LOCK(player);
- MMPLAYER_NEXT_PLAY_THREAD_SIGNAL(player);
+ MMPLAYER_GAPLESS_PLAY_THREAD_SIGNAL(player);
MMPLAYER_FLEAVE();
return;
/*post error*/
msg.code = MM_ERROR_PLAYER_INTERNAL;
- LOGE("next_uri_play> deactivate error");
+ LOGE("gapless_uri_play> deactivate error");
MMPLAYER_POST_MSG(player, MM_MESSAGE_ERROR, &msg);
player->msg_posted = TRUE;
}
if (!player->gapless.reconfigure && /* If it is already checked, skip verify. */
- !__mmplayer_verify_next_play_path(player)) {
+ !__mmplayer_verify_gapless_play_path(player)) {
LOGD("decoding is finished.");
__mmplayer_reset_gapless_state(player);
MMPLAYER_CMD_UNLOCK(player);