From 3f080d5aefc738ae973892cbfe59973bc37f51a2 Mon Sep 17 00:00:00 2001 From: BPanther Date: Sun, 16 Jul 2023 21:21:03 +0200 Subject: [PATCH] reload webtv/iptv stream if connection lost Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/ef8dbcf64c08629b73fc40a9efdeec978b5ffe30 Author: BPanther Date: 2023-07-16 (Sun, 16 Jul 2023) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/playback_libeplayer3.cpp | 11 ++++++++--- libarmbox/playback_libeplayer3.h | 2 +- libgeneric-pc/playback.cpp | 2 +- libgeneric-pc/playback_gst.cpp | 2 +- libgeneric-pc/playback_gst.h | 2 +- libgeneric-pc/playback_lib.h | 2 +- 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/libarmbox/playback_libeplayer3.cpp b/libarmbox/playback_libeplayer3.cpp index 3432924..81aece0 100644 --- a/libarmbox/playback_libeplayer3.cpp +++ b/libarmbox/playback_libeplayer3.cpp @@ -439,7 +439,7 @@ void cPlayback::GetPts(uint64_t &pts) } // in milliseconds -bool cPlayback::GetPosition(int &position, int &duration) +bool cPlayback::GetPosition(int &position, int &duration, bool isWebChannel) { bool got_duration = false; hal_debug("%s %d %d\n", __func__, position, duration); @@ -472,8 +472,13 @@ bool cPlayback::GetPosition(int &position, int &duration) if (player && player->playback && !player->playback->isPlaying) { hal_info("%s !!!!EOF!!!! < -1\n", __func__); - position = duration + 1000; - return false; + if (isWebChannel) { // WebTV/IPTV + position = duration - 1000; + return true; + } else { + position = duration + 1000; + return false; + } } int64_t vpts = 0; diff --git a/libarmbox/playback_libeplayer3.h b/libarmbox/playback_libeplayer3.h index 51ed417..e984358 100644 --- a/libarmbox/playback_libeplayer3.h +++ b/libarmbox/playback_libeplayer3.h @@ -54,7 +54,7 @@ class cPlayback int GetTeletextPid(void); bool SetSpeed(int speed); bool GetSpeed(int &speed) const; - bool GetPosition(int &position, int &duration); + bool GetPosition(int &position, int &duration, bool isWebChannel = false); void GetPts(uint64_t &pts); bool SetPosition(int position, bool absolute = false); void FindAllPids(uint16_t *apids, unsigned short *ac3flags, uint16_t *numpida, std::string *language); diff --git a/libgeneric-pc/playback.cpp b/libgeneric-pc/playback.cpp index 60a10bf..6201678 100644 --- a/libgeneric-pc/playback.cpp +++ b/libgeneric-pc/playback.cpp @@ -48,7 +48,7 @@ bool cPlayback::GetSpeed(int &/*speed*/) const return true; } -bool cPlayback::GetPosition(int &position, int &duration) +bool cPlayback::GetPosition(int &position, int &duration, bool /*isWebChannel*/) { printf("%s:%s %d %d\n", FILENAME, __func__, position, duration); position = 0; diff --git a/libgeneric-pc/playback_gst.cpp b/libgeneric-pc/playback_gst.cpp index b6e60a1..ec97f77 100644 --- a/libgeneric-pc/playback_gst.cpp +++ b/libgeneric-pc/playback_gst.cpp @@ -820,7 +820,7 @@ bool cPlayback::GetSpeed(int &speed) const } // in milliseconds -bool cPlayback::GetPosition(int &position, int &duration) +bool cPlayback::GetPosition(int &position, int &duration, bool /*isWebChannel*/) { if (playing == false) return false; diff --git a/libgeneric-pc/playback_gst.h b/libgeneric-pc/playback_gst.h index 0456375..f7dd172 100644 --- a/libgeneric-pc/playback_gst.h +++ b/libgeneric-pc/playback_gst.h @@ -74,7 +74,7 @@ class cPlayback bool SetSpeed(int speed); bool SetSlow(int slow); bool GetSpeed(int &speed) const; - bool GetPosition(int &position, int &duration); + bool GetPosition(int &position, int &duration, bool isWebChannel = false); void GetPts(uint64_t &pts); int GetAPid(void); int GetVPid(void); diff --git a/libgeneric-pc/playback_lib.h b/libgeneric-pc/playback_lib.h index 00f4560..72095d6 100644 --- a/libgeneric-pc/playback_lib.h +++ b/libgeneric-pc/playback_lib.h @@ -37,7 +37,7 @@ class cPlayback int GetFirstTeletextPid(void); bool SetSpeed(int speed); bool GetSpeed(int &speed) const; - bool GetPosition(int &position, int &duration); + bool GetPosition(int &position, int &duration, bool isWebChannel = false); void GetPts(uint64_t &pts); bool SetPosition(int position, bool absolute = false); void FindAllPids(int *apids, unsigned int *ac3flags, unsigned int *numpida, std::string *language);