From 3d8987513de9ae920c6cc68da0e088f9db0cd437 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Mon, 25 Dec 2017 19:23:48 +0100 Subject: [PATCH] eplayer armbox: fix webtv (thx dbo) --- libarmbox/playback_libeplayer3.cpp | 17 +++++++++++++---- libeplayer3-arm/container/container_ffmpeg.c | 1 + libeplayer3-arm/playback/playback.c | 5 +++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/libarmbox/playback_libeplayer3.cpp b/libarmbox/playback_libeplayer3.cpp index 8190aff..01e5c5b 100644 --- a/libarmbox/playback_libeplayer3.cpp +++ b/libarmbox/playback_libeplayer3.cpp @@ -28,12 +28,18 @@ extern cVideo *videoDecoder; //Used by Fileplay bool cPlayback::Open(playmode_t PlayMode) { + const char *aPLAYMODE[] = { + "PLAYMODE_TS", + "PLAYMODE_FILE" + }; + if (PlayMode != PLAYMODE_TS) { audioDecoder->closeDevice(); videoDecoder->closeDevice(); decoders_closed = true; } + pm = PlayMode; fn_ts = ""; fn_xml = ""; @@ -50,7 +56,7 @@ bool cPlayback::Open(playmode_t PlayMode) player->output = &OutputHandler; player->container = &ContainerHandler; player->manager = &ManagerHandler; - lt_info("%s - player output name: %s\n", __func__, player->output->Name); + lt_info("%s - player output name: %s PlayMode: %s\n", __func__, player->output->Name, aPLAYMODE[PlayMode]); } //Registration of output devices if (player && player->output) @@ -65,7 +71,8 @@ void cPlayback::Close(void) { lt_info("%s\n", __func__); //Dagobert: movieplayer does not call stop, it calls close ;) - Stop(); + if(playing) + Stop(); if (decoders_closed) { audioDecoder->openDevice(); @@ -649,9 +656,11 @@ cPlayback::~cPlayback() void cPlayback::RequestAbort() { - if (player && player->playback) + if (player && player->playback && player->playback->isPlaying) { - player->playback->abortRequested = 1; + lt_info("%s\n", __func__); + Stop(); + //player->playback->abortRequested = 1; while (player->playback->isPlaying) usleep(100000); } diff --git a/libeplayer3-arm/container/container_ffmpeg.c b/libeplayer3-arm/container/container_ffmpeg.c index ed1b6a4..b8a88e4 100644 --- a/libeplayer3-arm/container/container_ffmpeg.c +++ b/libeplayer3-arm/container/container_ffmpeg.c @@ -1520,6 +1520,7 @@ int32_t container_ffmpeg_init_av_context(Context_t *context, char *filename, int } avContextTab[AVIdx]->iformat->flags |= AVFMT_SEEK_TO_PTS; avContextTab[AVIdx]->flags = AVFMT_FLAG_GENPTS; + printf("minimal Probe: %d\n", context->playback->noprobe); if (context->playback->noprobe) { wrapped_set_max_analyze_duration(avContextTab[AVIdx], 1); diff --git a/libeplayer3-arm/playback/playback.c b/libeplayer3-arm/playback/playback.c index ae8a139..5990edf 100644 --- a/libeplayer3-arm/playback/playback.c +++ b/libeplayer3-arm/playback/playback.c @@ -127,6 +127,7 @@ static int PlaybackOpen(Context_t *context, PlayFiles_t *pFiles) context->playback->uri = strdup(uri); context->playback->isFile = 0; context->playback->isHttp = 0; + context->playback->noprobe = 0; if (!strncmp("file://", uri, 7) || !strncmp("myts://", uri, 7)) { context->playback->isFile = 1; @@ -159,6 +160,10 @@ static int PlaybackOpen(Context_t *context, PlayFiles_t *pFiles) free(context->playback->uri); context->playback->uri = tUri; } + if (strstr(uri, ":10000") || strstr(uri, ":31339/id=")) + { + context->playback->noprobe = 1; + } } else {