mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 19:16:51 +02:00
Reorder pts.
This commit is contained in:
parent
8a98257515
commit
37192d5b53
1
Todo
1
Todo
@ -29,6 +29,7 @@ x11:
|
||||
support fullscreen window
|
||||
support fullscreen / window toggle
|
||||
close window should send power button
|
||||
disable cursor
|
||||
|
||||
audio/alsa:
|
||||
video/audio asyncron
|
||||
|
22
codec.c
22
codec.c
@ -127,10 +127,17 @@ static int Codec_get_buffer(AVCodecContext * video_ctx, AVFrame * frame)
|
||||
//Debug(3, "codec: use surface %#010x\n", surface);
|
||||
|
||||
frame->type = FF_BUFFER_TYPE_USER;
|
||||
#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(53,46,0)
|
||||
frame->age = 256 * 256 * 256 * 64;
|
||||
#endif
|
||||
frame->data[0] = (void *)(size_t) surface;
|
||||
|
||||
// FIXME: reordered?
|
||||
// reordered frames
|
||||
if (video_ctx->pkt) {
|
||||
frame->pkt_pts = video_ctx->pkt->pts;
|
||||
} else {
|
||||
frame->pkt_pts = AV_NOPTS_VALUE;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
// VA-API:
|
||||
@ -144,12 +151,19 @@ static int Codec_get_buffer(AVCodecContext * video_ctx, AVFrame * frame)
|
||||
//Debug(3, "codec: use surface %#010x\n", surface);
|
||||
|
||||
frame->type = FF_BUFFER_TYPE_USER;
|
||||
#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(53,46,0)
|
||||
frame->age = 256 * 256 * 256 * 64;
|
||||
#endif
|
||||
// vaapi needs both fields set
|
||||
frame->data[0] = (void *)(size_t) surface;
|
||||
frame->data[3] = (void *)(size_t) surface;
|
||||
|
||||
// FIXME: reordered?
|
||||
// reordered frames
|
||||
if (video_ctx->pkt) {
|
||||
frame->pkt_pts = video_ctx->pkt->pts;
|
||||
} else {
|
||||
frame->pkt_pts = AV_NOPTS_VALUE;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
//Debug(3, "codec: fallback to default get_buffer\n");
|
||||
@ -369,7 +383,7 @@ void CodecVideoClose(VideoDecoder * video_decoder)
|
||||
** ffmpeg 0.9 pkt_dts wild jumping -160 - 340 ms
|
||||
**
|
||||
** libav 0.8_pre20111116 pts always AV_NOPTS_VALUE
|
||||
** libav 0.8_pre20111116 pkt_pts always 0
|
||||
** libav 0.8_pre20111116 pkt_pts always 0 (could be fixed?)
|
||||
** libav 0.8_pre20111116 pkt_dts wild jumping -160 - 340 ms
|
||||
*/
|
||||
void DisplayPts(AVCodecContext * video_ctx, AVFrame * frame)
|
||||
@ -389,8 +403,10 @@ void DisplayPts(AVCodecContext * video_ctx, AVFrame * frame)
|
||||
pts, (int)(pts - last_pts) / 90, video_ctx->time_base.num,
|
||||
video_ctx->time_base.den, ms_delay);
|
||||
|
||||
if (pts != (int64_t) AV_NOPTS_VALUE) {
|
||||
last_pts = pts;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user