[FFmpeg-devel] [PATCH 2/5] lavc/libopenh264enc: use framerate if available
mypopy at gmail.com
mypopy at gmail.com
Wed Aug 5 12:35:09 EEST 2020
On Wed, Aug 5, 2020 at 4:26 PM Martin Storsjö <martin at martin.st> wrote:
>
> On Wed, 5 Aug 2020, mypopy at gmail.com wrote:
>
> > On Sun, Jul 26, 2020 at 8:26 PM Jun Zhao <mypopydev at gmail.com> wrote:
> >>
> >> From: Jun Zhao <barryjzhao at tencent.com>
> >>
> >> Respecting the framerate in the libopenh264enc codec context.
> >>
> >> Both the libx264 and libx264 encoders already contain similar logic
> >> to first check the framerate before falling back to the timebase.
> >>
> >> Signed-off-by: Jun Zhao <barryjzhao at tencent.com>
> >> ---
> >> libavcodec/libopenh264enc.c | 11 ++++++++++-
> >> 1 file changed, 10 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
> >> index f63aa52..cf48566 100644
> >> --- a/libavcodec/libopenh264enc.c
> >> +++ b/libavcodec/libopenh264enc.c
> >> @@ -156,7 +156,16 @@ static av_cold int svc_encode_init(AVCodecContext *avctx)
> >>
> >> (*s->encoder)->GetDefaultParams(s->encoder, ¶m);
> >>
> >> - param.fMaxFrameRate = 1/av_q2d(avctx->time_base);
> >> + if (avctx->framerate.num > 0 && avctx->framerate.den > 0) {
> >> + param.fMaxFrameRate = av_q2d(avctx->framerate);
> >> + } else {
> >> + if (avctx->ticks_per_frame > INT_MAX / avctx->time_base.num) {
> >> + av_log(avctx, AV_LOG_ERROR,
> >> + "Could not set framerate for libopenh264enc: integer overflow\n");
> >> + return AVERROR(EINVAL);
> >> + }
> >> + param.fMaxFrameRate = 1.0 / av_q2d(avctx->time_base) / FFMAX(avctx->ticks_per_frame, 1);
> >> + }
> >> param.iPicWidth = avctx->width;
> >> param.iPicHeight = avctx->height;
> >> param.iTargetBitrate = avctx->bit_rate > 0 ? avctx->bit_rate : TARGET_BITRATE_DEFAULT;
> >> --
> >> 2.7.4
> > ping ?
>
> LGTM
>
> // Martin
Applied and fixed typo in commit message (Both the libx264 and libx264
=> Both the libx264 and libx265), thx
More information about the ffmpeg-devel
mailing list