mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 19:16:51 +02:00
Fix bug: VideoSetPts wrong position.
This commit is contained in:
parent
689d75b808
commit
6058f3da56
@ -1,3 +1,9 @@
|
|||||||
|
User johns
|
||||||
|
Date:
|
||||||
|
|
||||||
|
Release Version 0.5.0
|
||||||
|
Fix bug: VideoSetPts wrong position for multi frame packets.
|
||||||
|
|
||||||
User: CafeDelMar
|
User: CafeDelMar
|
||||||
Date: Mon Mar 26 20:45:54 CEST 2012
|
Date: Mon Mar 26 20:45:54 CEST 2012
|
||||||
|
|
||||||
@ -6,6 +12,7 @@ Date: Mon Mar 26 20:45:54 CEST 2012
|
|||||||
User johns
|
User johns
|
||||||
Date: Fri Mar 23 18:43:20 CET 2012
|
Date: Fri Mar 23 18:43:20 CET 2012
|
||||||
|
|
||||||
|
Audio/Video sync rewrite, trick-speed support moved to video.
|
||||||
Add optional argument (display) to ATTA svdrp commmand.
|
Add optional argument (display) to ATTA svdrp commmand.
|
||||||
Wakeup display to show OSD for remote learning mode.
|
Wakeup display to show OSD for remote learning mode.
|
||||||
Support switching the primary device with svdrp.
|
Support switching the primary device with svdrp.
|
||||||
|
10
video.c
10
video.c
@ -4418,8 +4418,6 @@ static void VaapiSyncDisplayFrame(VaapiDecoder * decoder)
|
|||||||
static void VaapiSyncRenderFrame(VaapiDecoder * decoder,
|
static void VaapiSyncRenderFrame(VaapiDecoder * decoder,
|
||||||
const AVCodecContext * video_ctx, const AVFrame * frame)
|
const AVCodecContext * video_ctx, const AVFrame * frame)
|
||||||
{
|
{
|
||||||
VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (!atomic_read(&decoder->SurfacesFilled)) {
|
if (!atomic_read(&decoder->SurfacesFilled)) {
|
||||||
Debug(3, "video: new stream frame %d\n", GetMsTicks() - VideoSwitch);
|
Debug(3, "video: new stream frame %d\n", GetMsTicks() - VideoSwitch);
|
||||||
@ -4435,6 +4433,7 @@ static void VaapiSyncRenderFrame(VaapiDecoder * decoder,
|
|||||||
VaapiPrintFrames(decoder);
|
VaapiPrintFrames(decoder);
|
||||||
}
|
}
|
||||||
decoder->DropNextFrame--;
|
decoder->DropNextFrame--;
|
||||||
|
VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// if video output buffer is full, wait and display surface.
|
// if video output buffer is full, wait and display surface.
|
||||||
@ -4468,6 +4467,7 @@ static void VaapiSyncRenderFrame(VaapiDecoder * decoder,
|
|||||||
VaapiSyncDisplayFrame(decoder);
|
VaapiSyncDisplayFrame(decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
|
||||||
VaapiRenderFrame(decoder, video_ctx, frame);
|
VaapiRenderFrame(decoder, video_ctx, frame);
|
||||||
#ifdef USE_AUTOCROP
|
#ifdef USE_AUTOCROP
|
||||||
VaapiCheckAutoCrop(decoder);
|
VaapiCheckAutoCrop(decoder);
|
||||||
@ -7516,9 +7516,6 @@ static void VdpauSyncRenderFrame(VdpauDecoder * decoder,
|
|||||||
Debug(3, "video: render frame pts %s\n",
|
Debug(3, "video: render frame pts %s\n",
|
||||||
Timestamp2String(frame->pkt_pts));
|
Timestamp2String(frame->pkt_pts));
|
||||||
}
|
}
|
||||||
|
|
||||||
VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (!atomic_read(&decoder->SurfacesFilled)) {
|
if (!atomic_read(&decoder->SurfacesFilled)) {
|
||||||
Debug(3, "video: new stream frame %d\n", GetMsTicks() - VideoSwitch);
|
Debug(3, "video: new stream frame %d\n", GetMsTicks() - VideoSwitch);
|
||||||
@ -7534,9 +7531,11 @@ static void VdpauSyncRenderFrame(VdpauDecoder * decoder,
|
|||||||
VdpauPrintFrames(decoder);
|
VdpauPrintFrames(decoder);
|
||||||
}
|
}
|
||||||
decoder->DropNextFrame--;
|
decoder->DropNextFrame--;
|
||||||
|
VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (VdpauPreemption) { // display preempted
|
if (VdpauPreemption) { // display preempted
|
||||||
|
VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// if video output buffer is full, wait and display surface.
|
// if video output buffer is full, wait and display surface.
|
||||||
@ -7574,6 +7573,7 @@ static void VdpauSyncRenderFrame(VdpauDecoder * decoder,
|
|||||||
VdpauSyncDisplayFrame(decoder);
|
VdpauSyncDisplayFrame(decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
|
||||||
VdpauRenderFrame(decoder, video_ctx, frame);
|
VdpauRenderFrame(decoder, video_ctx, frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user