streamts: add dvbsub and teletext pid to stream

This commit is contained in:
Jacek Jendrzej
2013-08-08 15:09:30 +02:00
parent 70882dde00
commit ada1ec3e60
3 changed files with 23 additions and 2 deletions

View File

@@ -247,7 +247,7 @@ int CGenPsi::genpsi(int fd)
} }
//-- write row with desc. for pcr stream (eq. video) -- //-- write row with desc. for pcr stream (eq. video) --
pkt[ofs] = EN_TYPE_PCR; pkt[ofs] = EN_TYPE_PCR;
pkt[ofs+1] = 0x02;//vtype ??? pkt[ofs+1] = 0x02;
pkt[ofs+2] = (pcrpid>>8); pkt[ofs+2] = (pcrpid>>8);
pkt[ofs+3] = (pcrpid & 0xFF); pkt[ofs+3] = (pcrpid & 0xFF);

View File

@@ -345,8 +345,8 @@ void CRecordInstance::GetPids(CZapitChannel * channel)
allpids.PIDs.vtxtpid = channel->getTeletextPid(); allpids.PIDs.vtxtpid = channel->getTeletextPid();
allpids.PIDs.pmtpid = channel->getPmtPid(); allpids.PIDs.pmtpid = channel->getPmtPid();
allpids.PIDs.selected_apid = channel->getAudioChannelIndex(); allpids.PIDs.selected_apid = channel->getAudioChannelIndex();
#if 0 // not needed
allpids.PIDs.pcrpid = channel->getPcrPid(); allpids.PIDs.pcrpid = channel->getPcrPid();
#if 0 // not needed
allpids.PIDs.privatepid = channel->getPrivatePid(); allpids.PIDs.privatepid = channel->getPrivatePid();
#endif #endif
allpids.APIDs.clear(); allpids.APIDs.clear();

View File

@@ -394,6 +394,27 @@ bool CStreamManager::Parse(int fd, stream_pids_t &pids, t_channel_id &chid)
pids.insert(channel->getPcrPid()); pids.insert(channel->getPcrPid());
psi.addPid(channel->getPcrPid(), EN_TYPE_PCR, 0); psi.addPid(channel->getPcrPid(), EN_TYPE_PCR, 0);
} }
//add teletext pid
if (g_settings.recording_stream_vtxt_pid && channel->getTeletextPid() != 0){
pids.insert(channel->getTeletextPid());
psi.addPid(channel->getTeletextPid(), EN_TYPE_TELTEX, 0, channel->getTeletextLang());
}
//add dvb sub pid
if (g_settings.recording_stream_subtitle_pids){
for (int i = 0 ; i < (int)channel->getSubtitleCount() ; ++i) {
CZapitAbsSub* s = channel->getChannelSub(i);
if (s->thisSubType == CZapitAbsSub::DVB) {
if(i>9)//max sub pids
break;
CZapitDVBSub* sd = reinterpret_cast<CZapitDVBSub*>(s);
pids.insert(sd->pId);
psi.addPid( sd->pId, EN_TYPE_DVBSUB, 0, sd->ISO639_language_code.c_str() );
}
}
}
psi.genpsi(fd); psi.genpsi(fd);
return !pids.empty(); return !pids.empty();