vdr 1.7.12 - issue with some mpeg2 channels (cVideoRepacker: switching to MPEG1/2 mode)
Commit Message
Hi,
Am 08.02.2010 22:29, schrieb Klaus Schmidinger:
>> I can only reproduce this issue on channels with separate PCR
>> pid. I'll have to investigate further to find a solution.
>
> As of version 1.7.12 VDR records the PCR pid if it is different
> than the video PID. For lack of better knowledge I made cDevice::PlayTs()
> send the PCR packets to PlayTsVideo(). The FF cards don't have a problem
> with that, but maybe xine or the cVideoRepacker does.
> Maybe VDR shouldn't even "replay" the PCR data - please advise.
As it is possible to access cPatPmtParser since a few releases,
I've changed vdr-xine to pull VPID from there instead of picking
it from packets passed to PlayTsVideo.
Bye.
Comments
thank you very much for your patch. Now everything is ok.
> >> I can only reproduce this issue on channels with separate PCR
> >> pid. I'll have to investigate further to find a solution.
> >
> > As of version 1.7.12 VDR records the PCR pid if it is different
> > than the video PID. For lack of better knowledge I made cDevice::PlayTs()
> > send the PCR packets to PlayTsVideo(). The FF cards don't have a problem
> > with that, but maybe xine or the cVideoRepacker does.
> > Maybe VDR shouldn't even "replay" the PCR data - please advise.
>
> As it is possible to access cPatPmtParser since a few releases,
> I've changed vdr-xine to pull VPID from there instead of picking
> it from packets passed to PlayTsVideo.
@@ -1539,7 +1546,13 @@ fclose(ff);
{
#if APIVERSNUM >= 10701
if (Length >= TS_SIZE)
- m_tsVideoPid = TsPid(Data);
+ {
+#if APIVERSNUM >= 10712
+ m_tsVideoPid = PatPmtParser()->Vpid();
+#else
+ m_tsVideoPid = TsPid(Data);
+#endif
+ }
#endif
return Length;
}
@@ -4119,6 +4132,8 @@ store_frame(jumboPESdata, todo, __LINE__
void cXineDevice::MakePrimaryDevice(bool On)
{
+ cDevice::MakePrimaryDevice(On);
+
xfprintf(stderr, "-------------------------\n");
xfprintf(stderr, "MakePrimaryDevice: %d\n", On);
xfprintf(stderr, "=========================\n");