From a5b91a18a0016d73f2047fb71210aa9b7878645a Mon Sep 17 00:00:00 2001 From: "jiyong.min" Date: Mon, 30 Jan 2023 15:05:39 +0900 Subject: [PATCH] avenc_mpeg2video:Apply the patch for breaking some encoders MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - https://github.com/GStreamer/gstreamer/commit/5372b77987cbdf16f681526152325bee8388ab62 Revert "avvidenc: Set timebase in the ffmpeg context to nanoseconds a… …nd set framerate" This reverts commit 50db594. This broke the MPEG-1 video encoder as it requires the framerate to be used for the timebase. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1734 Part-of: Change-Id: I40383d874e929d1eade6f586e5a977631d4d556e --- packaging/gstreamer.spec | 2 +- subprojects/gst-libav/ext/libav/gstavcodecmap.c | 13 +++++++------ subprojects/gst-libav/ext/libav/gstavvidenc.c | 4 +++- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packaging/gstreamer.spec b/packaging/gstreamer.spec index 08dcd5e..0c10182 100644 --- a/packaging/gstreamer.spec +++ b/packaging/gstreamer.spec @@ -62,7 +62,7 @@ Name: %{_name} Version: 1.22.0 -Release: 2 +Release: 3 Summary: Streaming-Media Framework Runtime License: LGPL-2.0+ Group: Multimedia/Framework diff --git a/subprojects/gst-libav/ext/libav/gstavcodecmap.c b/subprojects/gst-libav/ext/libav/gstavcodecmap.c index 0dfcd49..bc2becb 100644 --- a/subprojects/gst-libav/ext/libav/gstavcodecmap.c +++ b/subprojects/gst-libav/ext/libav/gstavcodecmap.c @@ -2959,13 +2959,14 @@ gst_ffmpeg_videoinfo_to_context (GstVideoInfo * info, AVCodecContext * context) bpp += GST_VIDEO_INFO_COMP_DEPTH (info, i); context->bits_per_coded_sample = bpp; - context->time_base.den = 1000000000; - context->time_base.num = 1; context->ticks_per_frame = 1; - - if (GST_VIDEO_INFO_FPS_N (info) != 0) { - context->framerate.num = GST_VIDEO_INFO_FPS_N (info); - context->framerate.den = GST_VIDEO_INFO_FPS_D (info); + if (GST_VIDEO_INFO_FPS_N (info) == 0) { + GST_DEBUG ("Using 25/1 framerate"); + context->time_base.den = 25; + context->time_base.num = 1; + } else { + context->time_base.den = GST_VIDEO_INFO_FPS_N (info); + context->time_base.num = GST_VIDEO_INFO_FPS_D (info); } context->sample_aspect_ratio.num = GST_VIDEO_INFO_PAR_N (info); diff --git a/subprojects/gst-libav/ext/libav/gstavvidenc.c b/subprojects/gst-libav/ext/libav/gstavvidenc.c index 9659d69..34d4165 100644 --- a/subprojects/gst-libav/ext/libav/gstavvidenc.c +++ b/subprojects/gst-libav/ext/libav/gstavvidenc.c @@ -308,7 +308,9 @@ gst_ffmpegvidenc_set_format (GstVideoEncoder * encoder, * (1<<16) - 1 . We therefore scale them down. * Agreed, it will not be the exact framerate... but the difference * shouldn't be that noticeable */ - ffmpegenc->context->time_base.num = 1; + ffmpegenc->context->time_base.num = + (gint) gst_util_uint64_scale_int (ffmpegenc->context->time_base.num, + 65535, ffmpegenc->context->time_base.den); ffmpegenc->context->time_base.den = 65535; GST_LOG_OBJECT (ffmpegenc, "MPEG4 : scaled down framerate to %d / %d", ffmpegenc->context->time_base.den, ffmpegenc->context->time_base.num); -- 2.7.4