From e9be2bed378e7e5e8a194b2cfb2ea4997d150848 Mon Sep 17 00:00:00 2001 From: martii Date: Mon, 1 Apr 2013 11:57:36 +0200 Subject: [PATCH] eplayer3: subtitle fixes --- libeplayer3/container/container_ffmpeg.c | 2 -- libeplayer3/manager/audio.c | 2 +- libeplayer3/manager/dvbsubtitle.c | 2 +- libeplayer3/manager/subtitle.c | 2 +- libeplayer3/manager/teletext.c | 2 +- libeplayer3/manager/video.c | 2 +- libeplayer3/playback/playback.c | 22 +++++++++++++++++++--- 7 files changed, 24 insertions(+), 10 deletions(-) diff --git a/libeplayer3/container/container_ffmpeg.c b/libeplayer3/container/container_ffmpeg.c index efad0a0..10241e8 100644 --- a/libeplayer3/container/container_ffmpeg.c +++ b/libeplayer3/container/container_ffmpeg.c @@ -1692,8 +1692,6 @@ int container_ffmpeg_update_tracks(Context_t *context, char *filename) context->manager->audio->Command(context, MANAGER_DEL, NULL); if (context->manager->video) context->manager->video->Command(context, MANAGER_DEL, NULL); - if (context->manager->subtitle) - context->manager->subtitle->Command(context, MANAGER_DEL, NULL); if (context->manager->dvbsubtitle) context->manager->dvbsubtitle->Command(context, MANAGER_DEL, NULL); if (context->manager->teletext) diff --git a/libeplayer3/manager/audio.c b/libeplayer3/manager/audio.c index 20117a2..5434fef 100644 --- a/libeplayer3/manager/audio.c +++ b/libeplayer3/manager/audio.c @@ -180,7 +180,7 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) { } case MANAGER_LIST: { #ifdef MARTII - container_ffmpeg_update_tracks(context, "current stream"); + container_ffmpeg_update_tracks(context, context->playback->uri); #endif *((char***)argument) = (char **)ManagerList(context); break; diff --git a/libeplayer3/manager/dvbsubtitle.c b/libeplayer3/manager/dvbsubtitle.c index a111641..11f6439 100644 --- a/libeplayer3/manager/dvbsubtitle.c +++ b/libeplayer3/manager/dvbsubtitle.c @@ -179,7 +179,7 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) { } case MANAGER_LIST: { #ifdef MARTII - container_ffmpeg_update_tracks(context, "current stream"); + container_ffmpeg_update_tracks(context, context->playback->uri); #endif *((char***)argument) = (char **)ManagerList(context); break; diff --git a/libeplayer3/manager/subtitle.c b/libeplayer3/manager/subtitle.c index 524aec0..8629122 100644 --- a/libeplayer3/manager/subtitle.c +++ b/libeplayer3/manager/subtitle.c @@ -177,7 +177,7 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) { } case MANAGER_LIST: { #ifdef MARTII - container_ffmpeg_update_tracks(context, "current stream"); + container_ffmpeg_update_tracks(context, context->playback->uri); #endif *((char***)argument) = (char **)ManagerList(context); break; diff --git a/libeplayer3/manager/teletext.c b/libeplayer3/manager/teletext.c index e36820d..e36d68a 100644 --- a/libeplayer3/manager/teletext.c +++ b/libeplayer3/manager/teletext.c @@ -179,7 +179,7 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) { } case MANAGER_LIST: { #ifdef MARTII - container_ffmpeg_update_tracks(context, "current stream"); + container_ffmpeg_update_tracks(context, context->playback->uri); #endif *((char***)argument) = (char **)ManagerList(context); break; diff --git a/libeplayer3/manager/video.c b/libeplayer3/manager/video.c index 436c99a..70d9f49 100644 --- a/libeplayer3/manager/video.c +++ b/libeplayer3/manager/video.c @@ -174,7 +174,7 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) { } case MANAGER_LIST: { #ifdef MARTII - container_ffmpeg_update_tracks(context, "current stream"); + container_ffmpeg_update_tracks(context, context->playback->uri); #endif *((char***)argument) = (char **)ManagerList(context); break; diff --git a/libeplayer3/playback/playback.c b/libeplayer3/playback/playback.c index 13e07e5..2c036de 100644 --- a/libeplayer3/playback/playback.c +++ b/libeplayer3/playback/playback.c @@ -916,11 +916,27 @@ static int PlaybackSwitchSubtitle(Context_t *context, int* track) { if (context->manager && context->manager->subtitle) { int trackid; +#ifdef MARTII + if (context->manager->subtitle->Command(context, *track == 0xffff ? MANAGER_DEL : MANAGER_SET, track) < 0) +#else if (context->manager->subtitle->Command(context, MANAGER_SET, track) < 0) +#endif { playback_err("manager set track failed\n"); } +#ifdef MARTII + if (*track == 0xffff) { + //CHECK FOR SUBTITLES + if (context->container && context->container->textSrtContainer) + context->container->textSrtContainer->Command(context, CONTAINER_INIT, context->playback->uri+7); + if (context->container && context->container->textSsaContainer) + context->container->textSsaContainer->Command(context, CONTAINER_INIT, context->playback->uri+7); + + if (context->container && context->container->assContainer) + context->container->assContainer->Command(context, CONTAINER_INIT, NULL); + } +#endif context->manager->subtitle->Command(context, MANAGER_GET, &trackid); /* konfetti: I make this hack a little bit nicer, @@ -972,7 +988,7 @@ static int PlaybackSwitchDVBSubtitle(Context_t *context, int* pid) { playback_err("no dvbsubtitle\n"); if (*pid == 0xffff) - container_ffmpeg_update_tracks(context, "current stream"); + container_ffmpeg_update_tracks(context, context->playback->uri); playback_printf(10, "exiting with value %d\n", ret); @@ -990,10 +1006,10 @@ static int PlaybackSwitchTeletext(Context_t *context, int* pid) { ret = cERR_PLAYBACK_ERROR; } } else - playback_err("no dvbsubtitle\n"); + playback_err("no ttxsubtitle\n"); if (*pid == 0xffff) - container_ffmpeg_update_tracks(context, "current stream"); + container_ffmpeg_update_tracks(context, context->playback->uri); playback_printf(10, "exiting with value %d\n", ret);