summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--video.c10
2 files changed, 12 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 1309196..e98799d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+User johns
+Date:
+
+ Release Version 0.5.0
+ Fix bug: VideoSetPts wrong position for multi frame packets.
+
User: CafeDelMar
Date: Mon Mar 26 20:45:54 CEST 2012
@@ -6,6 +12,7 @@ Date: Mon Mar 26 20:45:54 CEST 2012
User johns
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.
Wakeup display to show OSD for remote learning mode.
Support switching the primary device with svdrp.
diff --git a/video.c b/video.c
index c31b5c3..9556147 100644
--- a/video.c
+++ b/video.c
@@ -4418,8 +4418,6 @@ static void VaapiSyncDisplayFrame(VaapiDecoder * decoder)
static void VaapiSyncRenderFrame(VaapiDecoder * decoder,
const AVCodecContext * video_ctx, const AVFrame * frame)
{
- VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
-
#ifdef DEBUG
if (!atomic_read(&decoder->SurfacesFilled)) {
Debug(3, "video: new stream frame %d\n", GetMsTicks() - VideoSwitch);
@@ -4435,6 +4433,7 @@ static void VaapiSyncRenderFrame(VaapiDecoder * decoder,
VaapiPrintFrames(decoder);
}
decoder->DropNextFrame--;
+ VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
return;
}
// if video output buffer is full, wait and display surface.
@@ -4468,6 +4467,7 @@ static void VaapiSyncRenderFrame(VaapiDecoder * decoder,
VaapiSyncDisplayFrame(decoder);
}
+ VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
VaapiRenderFrame(decoder, video_ctx, frame);
#ifdef USE_AUTOCROP
VaapiCheckAutoCrop(decoder);
@@ -7516,9 +7516,6 @@ static void VdpauSyncRenderFrame(VdpauDecoder * decoder,
Debug(3, "video: render frame pts %s\n",
Timestamp2String(frame->pkt_pts));
}
-
- VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
-
#ifdef DEBUG
if (!atomic_read(&decoder->SurfacesFilled)) {
Debug(3, "video: new stream frame %d\n", GetMsTicks() - VideoSwitch);
@@ -7534,9 +7531,11 @@ static void VdpauSyncRenderFrame(VdpauDecoder * decoder,
VdpauPrintFrames(decoder);
}
decoder->DropNextFrame--;
+ VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
return;
}
if (VdpauPreemption) { // display preempted
+ VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
return;
}
// if video output buffer is full, wait and display surface.
@@ -7574,6 +7573,7 @@ static void VdpauSyncRenderFrame(VdpauDecoder * decoder,
VdpauSyncDisplayFrame(decoder);
}
+ VideoSetPts(&decoder->PTS, decoder->Interlaced, frame);
VdpauRenderFrame(decoder, video_ctx, frame);
}