[vdr] vdr <-> vdr-xine <-> xine-lib and vdpau and HD recordings

Joerg Riechardt J.Riechardt at gmx.de
Sun Apr 3 00:30:13 CEST 2011


Am 02.04.2011 23:18, schrieb Klaus Schmidinger:
> On 02.04.2011 02:38, Joerg Riechardt wrote:
>> Problem solved with this patch:
>> --- dvbplayer.c.orig 2010-03-07 15:24:26.000000000 +0100
>> +++ dvbplayer.c 2011-04-02 01:57:21.016535946 +0200
>> @@ -320,7 +320,7 @@
>> if (nonBlockingFileReader)
>> nonBlockingFileReader->Clear();
>> if (!firstPacket) // don't set the readIndex twice if Empty() is
>> called more than once
>> - readIndex = ptsIndex.FindIndex(DeviceGetSTC()) - 1; // Action() will
>> first increment it!
>> + readIndex = ptsIndex.FindIndex(DeviceGetSTC()); // prevents dropped
>> frames in xine vdpau h264
>> delete readFrame; // might not have been stored in the buffer in Action()
>> readFrame = NULL;
>> playFrame = NULL;
>> @@ -388,6 +388,8 @@
>> int pc = 0;
>>
>> readIndex = Resume();
>> + int resume = readIndex;
>> + bool firsttime = true;
>> if (readIndex >= 0)
>> isyslog("resuming replay at index %d (%s)", readIndex,
>> *IndexToHMSF(readIndex, true, framesPerSecond));
>>
>> @@ -452,6 +454,12 @@
>> else if (index) {
>> uint16_t FileNumber;
>> off_t FileOffset;
>> + if (firsttime) {
>> + if (readIndex == (resume + 32)) {
>> + Goto((readIndex - 32));// prevents dropped frames in xine vdpau h264
>> + firsttime = false;
>> + }
>> + }
>> if (index->Get(readIndex + 1, &FileNumber, &FileOffset,
>> &readIndependent, &Length) && NextFile(FileNumber, FileOffset))
>> readIndex++;
>> else
>> @@ -760,7 +768,7 @@
>> if (Index > 0)
>> Index = index->GetNextIFrame(Index, false, NULL, NULL, NULL, true);
>> if (Index >= 0)
>> - readIndex = Index - 1; // Action() will first increment it!
>> + readIndex = Index; // prevents dropped frames in xine vdpau h264
>> }
>> Play();
>> }
>
> I can't help the feeling that this is a problem that should
> be addressed in xine, rather than working around it in VDR.
>
> Klaus

I agree. I just thought, until that happens, it is nice for those 
concerned to have that patch.
And maybe this patch gives an idea for a fix in xine.
Joerg




More information about the vdr mailing list