mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Update libx264.c to use new libx264 features
With b_keyframe instead of IDR for detecting keyframes, ffmpeg should now support periodic encoding with periodic intra refresh (although there is no interface option for it yet). Set the new timebase values for full VFR input support. Bump configure to check for API version 83. Originally committed as revision 21317 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
51d83986b1
commit
76d81909ae
4
configure
vendored
4
configure
vendored
@ -2460,8 +2460,8 @@ enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
|
|||||||
enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
|
enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
|
||||||
enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
|
enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
|
||||||
enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm &&
|
enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm &&
|
||||||
{ check_cpp_condition x264.h "X264_BUILD >= 79" ||
|
{ check_cpp_condition x264.h "X264_BUILD >= 83" ||
|
||||||
die "ERROR: libx264 version must be >= 0.79."; }
|
die "ERROR: libx264 version must be >= 0.83."; }
|
||||||
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
|
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
|
||||||
enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
|
enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ static int X264_frame(AVCodecContext *ctx, uint8_t *buf,
|
|||||||
if (bufsize < 0)
|
if (bufsize < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* FIXME: dts */
|
/* FIXME: libx264 now provides DTS, but AVFrame doesn't have a field for it. */
|
||||||
x4->out_pic.pts = pic_out.i_pts;
|
x4->out_pic.pts = pic_out.i_pts;
|
||||||
|
|
||||||
switch (pic_out.i_type) {
|
switch (pic_out.i_type) {
|
||||||
@ -126,7 +126,7 @@ static int X264_frame(AVCodecContext *ctx, uint8_t *buf,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
x4->out_pic.key_frame = pic_out.i_type == X264_TYPE_IDR;
|
x4->out_pic.key_frame = pic_out.b_keyframe;
|
||||||
x4->out_pic.quality = (pic_out.i_qpplus1 - 1) * FF_QP2LAMBDA;
|
x4->out_pic.quality = (pic_out.i_qpplus1 - 1) * FF_QP2LAMBDA;
|
||||||
|
|
||||||
return bufsize;
|
return bufsize;
|
||||||
@ -208,8 +208,8 @@ static av_cold int X264_init(AVCodecContext *avctx)
|
|||||||
x4->params.i_height = avctx->height;
|
x4->params.i_height = avctx->height;
|
||||||
x4->params.vui.i_sar_width = avctx->sample_aspect_ratio.num;
|
x4->params.vui.i_sar_width = avctx->sample_aspect_ratio.num;
|
||||||
x4->params.vui.i_sar_height = avctx->sample_aspect_ratio.den;
|
x4->params.vui.i_sar_height = avctx->sample_aspect_ratio.den;
|
||||||
x4->params.i_fps_num = avctx->time_base.den;
|
x4->params.i_fps_num = x4->params.i_timebase_den = avctx->time_base.den;
|
||||||
x4->params.i_fps_den = avctx->time_base.num;
|
x4->params.i_fps_den = x4->params.i_timebase_num = avctx->time_base.num;
|
||||||
|
|
||||||
x4->params.analyse.inter = 0;
|
x4->params.analyse.inter = 0;
|
||||||
if (avctx->partitions) {
|
if (avctx->partitions) {
|
||||||
|
Loading…
Reference in New Issue
Block a user