Add automatic frame rate detection for older ffmpeg versions.

This commit is contained in:
Johns 2015-03-10 10:38:00 +01:00
parent 2866e328c6
commit 28555643a5
2 changed files with 12 additions and 3 deletions

View File

@ -1,6 +1,7 @@
User johns
Date:
Add automatic frame rate detection for older ffmpeg versions.
Fix bug: destroyed vdpau surfaces still used in queue.
Fix bug: need signed char, if compiler has unsigned chars.
Try smaller audio puffer, if default size fails.

14
video.c
View File

@ -457,10 +457,18 @@ static void VideoSetPts(int64_t * pts_p, int interlaced,
// FIXME: using framerate as workaround for av_frame_get_pkt_duration
//
#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(56,13,100)
// FIXME: need frame rate for older versions
duration = interlaced ? 40 : 20; // 50Hz -> 20ms default
// version for older ffmpeg without framerate
if (video_ctx->time_base.num && video_ctx->time_base.den) {
duration =
(video_ctx->ticks_per_frame * 1000 * video_ctx->time_base.num) /
video_ctx->time_base.den;
} else {
duration = interlaced ? 40 : 20; // 50Hz -> 20ms default
}
Debug(4, "video: %d/%d %" PRIx64 " -> %d\n", video_ctx->time_base.den,
video_ctx->time_base.num, av_frame_get_pkt_duration(frame), duration);
#else
if (video_ctx->framerate.num != 0 && video_ctx->framerate.den != 0) {
if (video_ctx->framerate.num && video_ctx->framerate.den) {
duration = 1000 * video_ctx->framerate.den / video_ctx->framerate.num;
} else {
duration = interlaced ? 40 : 20; // 50Hz -> 20ms default