From ccb33957a550f9f9c891a815d7de8d107512d340 Mon Sep 17 00:00:00 2001 From: BPanther Date: Fri, 15 Oct 2021 20:00:19 +0200 Subject: [PATCH] more pip changes --- src/zapit/src/zapit.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/zapit/src/zapit.cpp b/src/zapit/src/zapit.cpp index 7e602b90d..3a781071e 100644 --- a/src/zapit/src/zapit.cpp +++ b/src/zapit/src/zapit.cpp @@ -98,6 +98,8 @@ extern cDemux *videoDemux; #ifdef ENABLE_PIP extern cVideo *pipVideoDecoder[3]; extern cDemux *pipVideoDemux[3]; +extern cAudio * pipAudioDecoder[3]; +extern cDemux * pipAudioDemux[3]; #endif cDemux *pcrDemux = NULL; @@ -699,6 +701,8 @@ bool CZapit::StopPip(int pip) CCamManager::getInstance()->Stop(pip_channel_id[pip], CCamManager::PIP); pipVideoDemux[pip]->Stop(); pipVideoDecoder[pip]->Stop(); + pipAudioDemux[pip]->Stop(); + pipAudioDecoder[pip]->Stop(); pip_fe[pip] = NULL; pip_channel_id[pip] = 0; return true; @@ -802,6 +806,21 @@ bool CZapit::StartPip(const t_channel_id channel_id, int pip) pipVideoDecoder[pip]->ShowPig(1); #endif + if (!pipAudioDemux[pip]) { + pipAudioDemux[pip] = new cDemux(dnum); + pipAudioDemux[pip]->Open(DMX_AUDIO_CHANNEL); + if (!pipAudioDecoder[pip]) { + pipAudioDecoder[pip] = new cAudio(0, NULL, NULL, dnum); + } + } + + if (newchannel->getAudioChannel()) + pipAudioDecoder[pip]->SetStreamType(newchannel->getAudioChannel()->audioChannelType); + pipAudioDemux[pip]->pesFilter(newchannel->getAudioPid()); + + pipVideoDecoder[pip]->SetSyncMode((AVSYNC_TYPE) g_settings.avsync); + pipAudioDecoder[pip]->SetSyncMode((AVSYNC_TYPE) g_settings.avsync); + CCamManager::getInstance()->Start(newchannel->getChannelID(), CCamManager::PIP); return true; } @@ -2634,6 +2653,7 @@ bool CZapit::Start(Z_start_arg *ZapStart_arg) { pipVideoDecoder[i] = new cVideo(0, NULL, NULL, i+1); pipVideoDecoder[i]->ShowPig(0); + pipAudioDecoder[i] = new cAudio(0, NULL, NULL, i+1); } #endif } @@ -2885,6 +2905,10 @@ void CZapit::run() pipVideoDecoder[i] = NULL; if (pipVideoDemux[i]) pipVideoDemux[i] = NULL; + if (pipAudioDecoder[i]) + pipAudioDecoder[i] = NULL; + if (pipAudioDemux[i]) + pipAudioDemux[i] = NULL; } #endif