diff --git a/libeplayer3/container/container_ffmpeg.c b/libeplayer3/container/container_ffmpeg.c index f7e9e0d..f4772b6 100644 --- a/libeplayer3/container/container_ffmpeg.c +++ b/libeplayer3/container/container_ffmpeg.c @@ -1539,7 +1539,11 @@ static int interrupt_cb(void *ctx) int container_ffmpeg_init(Context_t *context, char * filename) { +#ifdef MARTII + int err; +#else int n, err; +#endif ffmpeg_printf(10, ">\n"); @@ -1675,6 +1679,25 @@ int container_ffmpeg_init(Context_t *context, char * filename) } #endif //for buffered io (end) +#endif +#ifdef MARTII + return container_ffmpeg_update_tracks(context, filename); +} + +int container_ffmpeg_update_tracks(Context_t *context, char *filename) +{ + int n; + + if (context->manager->audio) + 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) + context->manager->teletext->Command(context, MANAGER_DEL, NULL); #endif ffmpeg_printf(20, "dump format\n"); diff --git a/libeplayer3/include/common.h b/libeplayer3/include/common.h index c1ebb38..0016b4a 100644 --- a/libeplayer3/include/common.h +++ b/libeplayer3/include/common.h @@ -14,4 +14,7 @@ typedef struct Context_s { ManagerHandler_t * manager; } Context_t; +#ifdef MARTII +int container_ffmpeg_update_tracks(Context_t *context, char *filename); +#endif #endif diff --git a/libeplayer3/manager/audio.c b/libeplayer3/manager/audio.c index 8cc5dc2..20117a2 100644 --- a/libeplayer3/manager/audio.c +++ b/libeplayer3/manager/audio.c @@ -179,6 +179,9 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) { break; } case MANAGER_LIST: { +#ifdef MARTII + container_ffmpeg_update_tracks(context, "current stream"); +#endif *((char***)argument) = (char **)ManagerList(context); break; } diff --git a/libeplayer3/manager/dvbsubtitle.c b/libeplayer3/manager/dvbsubtitle.c index aa2c453..a111641 100644 --- a/libeplayer3/manager/dvbsubtitle.c +++ b/libeplayer3/manager/dvbsubtitle.c @@ -178,6 +178,9 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) { break; } case MANAGER_LIST: { +#ifdef MARTII + container_ffmpeg_update_tracks(context, "current stream"); +#endif *((char***)argument) = (char **)ManagerList(context); break; } diff --git a/libeplayer3/manager/subtitle.c b/libeplayer3/manager/subtitle.c index c8a73b5..524aec0 100644 --- a/libeplayer3/manager/subtitle.c +++ b/libeplayer3/manager/subtitle.c @@ -176,6 +176,9 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) { break; } case MANAGER_LIST: { +#ifdef MARTII + container_ffmpeg_update_tracks(context, "current stream"); +#endif *((char***)argument) = (char **)ManagerList(context); break; } diff --git a/libeplayer3/manager/teletext.c b/libeplayer3/manager/teletext.c index 33ceb0f..3955807 100644 --- a/libeplayer3/manager/teletext.c +++ b/libeplayer3/manager/teletext.c @@ -178,6 +178,9 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) { break; } case MANAGER_LIST: { +#ifdef MARTII + container_ffmpeg_update_tracks(context, "current stream"); +#endif *((char***)argument) = (char **)ManagerList(context); break; } diff --git a/libeplayer3/manager/video.c b/libeplayer3/manager/video.c index 0b25df0..436c99a 100644 --- a/libeplayer3/manager/video.c +++ b/libeplayer3/manager/video.c @@ -173,6 +173,9 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) { break; } case MANAGER_LIST: { +#ifdef MARTII + container_ffmpeg_update_tracks(context, "current stream"); +#endif *((char***)argument) = (char **)ManagerList(context); break; }