diff --git a/libeplayer3/container/container_ffmpeg.c b/libeplayer3/container/container_ffmpeg.c index 2f0df90..d588c8c 100644 --- a/libeplayer3/container/container_ffmpeg.c +++ b/libeplayer3/container/container_ffmpeg.c @@ -1653,8 +1653,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 aad22dd..3ad4913 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 4dd5183..f9fcce0 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 6f5428a..ab0a274 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 0cee7c9..e676028 100644 --- a/libeplayer3/playback/playback.c +++ b/libeplayer3/playback/playback.c @@ -907,11 +907,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, @@ -963,7 +979,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); @@ -981,10 +997,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);