[FFmpeg-devel] [PATCH v2 1/3] ffmpeg_opt: pass output framerate as a hint to the encoder

Tobias Rapp t.rapp at noa-archive.com
Mon Feb 27 10:50:31 EET 2017


On 26.02.2017 16:09, Michael Niedermayer wrote:
> On Mon, Feb 20, 2017 at 04:05:00PM +0100, Tobias Rapp wrote:
>> On 20.02.2017 15:09, Mark Thompson wrote:
>>> On 06/02/17 12:33, Tobias Rapp wrote:
>>>> Sets framerate field in output codec context if explicitly specified on
>>>> the command-line.
>>>>
>>>> Signed-off-by: Tobias Rapp <t.rapp at noa-archive.com>
>>>> ---
>>>> ffmpeg_opt.c | 2 ++
>>>> 1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c
>>>> index 6a47d32..3b532da 100644
>>>> --- a/ffmpeg_opt.c
>>>> +++ b/ffmpeg_opt.c
>>>> @@ -1535,6 +1535,8 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc, in
>>>>         av_log(NULL, AV_LOG_FATAL, "Invalid framerate value: %s\n", frame_rate);
>>>>         exit_program(1);
>>>>     }
>>>> +    if (frame_rate && ost->frame_rate.num && ost->frame_rate.den)
>>>> +        video_enc->framerate = ost->frame_rate;
>>>>     if (frame_rate && video_sync_method == VSYNC_PASSTHROUGH)
>>>>         av_log(NULL, AV_LOG_ERROR, "Using -vsync 0 and -r can produce invalid output files\n");
>>>>
>>>>
>>>
>>> Is there a reason not to always set this, rather than only when it is specified explicitly on the command line as you have?
>>>
>>> (Like <https://git.libav.org/?p=libav.git;a=commit;h=d10102d23c9467d4eb84f58e0cd12be284b982f6>, though that is after the current merge point and I don't know if it interacts with anything else.)
>>
>> I just tried to be extra cautious. Merging Libav commit
>> d10102d23c9467d4eb84f58e0cd12be284b982f6 would provide a more
>> general solution and might be preferred.
>
> that one would change fate results, are the changed results better or
> worse ?

I rebased unto current master and run fate with the attached change to 
ffmpeg.c applied but couldn't find any changed reference files.

Which fate tests had some changes and which platform did you check?

Regards,
Tobias
-------------- next part --------------
diff --git a/ffmpeg.c b/ffmpeg.c
index 06570c0..333a806 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -3202,6 +3202,8 @@ static int init_output_stream_encode(OutputStream *ost)
             enc_ctx->bits_per_raw_sample = FFMIN(dec_ctx->bits_per_raw_sample,
                                                  av_pix_fmt_desc_get(enc_ctx->pix_fmt)->comp[0].depth);
 
+        enc_ctx->framerate = ost->frame_rate;
+
         ost->st->avg_frame_rate = ost->frame_rate;
 
         if (!dec_ctx ||


More information about the ffmpeg-devel mailing list