mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
Add weightp support in API for libx264.
ffmpeg can encode baseline profile again. Originally committed as revision 20600 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
f3bdc3da15
commit
096c87f667
4
configure
vendored
4
configure
vendored
@ -2378,8 +2378,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 >= 78" ||
|
{ check_cpp_condition x264.h "X264_BUILD >= 79" ||
|
||||||
die "ERROR: libx264 version must be >= 0.78."; }
|
die "ERROR: libx264 version must be >= 0.79."; }
|
||||||
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
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
coder=0
|
coder=0
|
||||||
bf=0
|
bf=0
|
||||||
flags2=-wpred-dct8x8
|
flags2=-wpred-dct8x8
|
||||||
|
wpredp=0
|
||||||
|
@ -19,3 +19,4 @@ refs=3
|
|||||||
directpred=1
|
directpred=1
|
||||||
trellis=1
|
trellis=1
|
||||||
flags2=+mixed_refs+wpred+dct8x8+fastpskip
|
flags2=+mixed_refs+wpred+dct8x8+fastpskip
|
||||||
|
wpredp=2
|
||||||
|
@ -3,7 +3,7 @@ flags=+loop
|
|||||||
cmp=+chroma
|
cmp=+chroma
|
||||||
partitions=-parti8x8-parti4x4-partp8x8-partp4x4-partb8x8
|
partitions=-parti8x8-parti4x4-partp8x8-partp4x4-partb8x8
|
||||||
me_method=dia
|
me_method=dia
|
||||||
subq=1
|
subq=2
|
||||||
me_range=16
|
me_range=16
|
||||||
g=250
|
g=250
|
||||||
keyint_min=25
|
keyint_min=25
|
||||||
@ -19,3 +19,4 @@ refs=1
|
|||||||
directpred=3
|
directpred=3
|
||||||
trellis=0
|
trellis=0
|
||||||
flags2=-bpyramid-wpred-mixed_refs-dct8x8+fastpskip
|
flags2=-bpyramid-wpred-mixed_refs-dct8x8+fastpskip
|
||||||
|
wpredp=2
|
||||||
|
@ -19,3 +19,4 @@ refs=4
|
|||||||
directpred=3
|
directpred=3
|
||||||
trellis=1
|
trellis=1
|
||||||
flags2=+wpred+mixed_refs+dct8x8+fastpskip
|
flags2=+wpred+mixed_refs+dct8x8+fastpskip
|
||||||
|
wpredp=2
|
||||||
|
@ -4,3 +4,4 @@ flags2=-wpred-dct8x8
|
|||||||
level=13
|
level=13
|
||||||
maxrate=768000
|
maxrate=768000
|
||||||
bufsize=3000000
|
bufsize=3000000
|
||||||
|
wpredp=0
|
||||||
|
@ -5,3 +5,4 @@ flags2=-wpred-dct8x8
|
|||||||
level=30
|
level=30
|
||||||
maxrate=10000000
|
maxrate=10000000
|
||||||
bufsize=10000000
|
bufsize=10000000
|
||||||
|
wpredp=0
|
||||||
|
@ -17,3 +17,4 @@ qdiff=4
|
|||||||
directpred=1
|
directpred=1
|
||||||
flags2=+fastpskip
|
flags2=+fastpskip
|
||||||
cqp=0
|
cqp=0
|
||||||
|
wpredp=0
|
||||||
|
@ -18,3 +18,4 @@ refs=16
|
|||||||
directpred=1
|
directpred=1
|
||||||
flags2=+mixed_refs+dct8x8+fastpskip
|
flags2=+mixed_refs+dct8x8+fastpskip
|
||||||
cqp=0
|
cqp=0
|
||||||
|
wpredp=2
|
||||||
|
@ -17,3 +17,4 @@ qdiff=4
|
|||||||
directpred=1
|
directpred=1
|
||||||
flags2=+fastpskip
|
flags2=+fastpskip
|
||||||
cqp=0
|
cqp=0
|
||||||
|
wpredp=2
|
||||||
|
@ -18,3 +18,4 @@ refs=2
|
|||||||
directpred=1
|
directpred=1
|
||||||
flags2=+dct8x8+fastpskip
|
flags2=+dct8x8+fastpskip
|
||||||
cqp=0
|
cqp=0
|
||||||
|
wpredp=2
|
||||||
|
@ -18,3 +18,4 @@ refs=4
|
|||||||
directpred=1
|
directpred=1
|
||||||
flags2=+mixed_refs+dct8x8+fastpskip
|
flags2=+mixed_refs+dct8x8+fastpskip
|
||||||
cqp=0
|
cqp=0
|
||||||
|
wpredp=2
|
||||||
|
@ -19,3 +19,4 @@ refs=16
|
|||||||
directpred=3
|
directpred=3
|
||||||
trellis=2
|
trellis=2
|
||||||
flags2=+wpred+mixed_refs+dct8x8-fastpskip
|
flags2=+wpred+mixed_refs+dct8x8-fastpskip
|
||||||
|
wpredp=2
|
||||||
|
@ -19,3 +19,4 @@ refs=2
|
|||||||
directpred=3
|
directpred=3
|
||||||
trellis=0
|
trellis=0
|
||||||
flags2=+wpred+dct8x8+fastpskip
|
flags2=+wpred+dct8x8+fastpskip
|
||||||
|
wpredp=2
|
||||||
|
@ -19,3 +19,4 @@ refs=1
|
|||||||
directpred=3
|
directpred=3
|
||||||
trellis=0
|
trellis=0
|
||||||
flags2=+wpred+dct8x8+fastpskip
|
flags2=+wpred+dct8x8+fastpskip
|
||||||
|
wpredp=2
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "libavutil/avutil.h"
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_MAJOR 52
|
#define LIBAVCODEC_VERSION_MAJOR 52
|
||||||
#define LIBAVCODEC_VERSION_MINOR 41
|
#define LIBAVCODEC_VERSION_MINOR 42
|
||||||
#define LIBAVCODEC_VERSION_MICRO 0
|
#define LIBAVCODEC_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||||
@ -2554,6 +2554,16 @@ typedef struct AVCodecContext {
|
|||||||
* - decoding: Set by libavcodec, user can override.
|
* - decoding: Set by libavcodec, user can override.
|
||||||
*/
|
*/
|
||||||
int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count);
|
int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* explicit P-frame weighted prediction analysis method
|
||||||
|
* 0: off
|
||||||
|
* 1: fast blind weighting (one reference duplicate with -1 offset)
|
||||||
|
* 2: smart weighting (full fade detection analysis)
|
||||||
|
* - encoding: Set by user.
|
||||||
|
* - decoding: unused
|
||||||
|
*/
|
||||||
|
int weighted_p_pred;
|
||||||
} AVCodecContext;
|
} AVCodecContext;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -228,6 +228,7 @@ static av_cold int X264_init(AVCodecContext *avctx)
|
|||||||
x4->params.analyse.i_direct_mv_pred = avctx->directpred;
|
x4->params.analyse.i_direct_mv_pred = avctx->directpred;
|
||||||
|
|
||||||
x4->params.analyse.b_weighted_bipred = avctx->flags2 & CODEC_FLAG2_WPRED;
|
x4->params.analyse.b_weighted_bipred = avctx->flags2 & CODEC_FLAG2_WPRED;
|
||||||
|
x4->params.analyse.i_weighted_pred = avctx->weighted_p_pred;
|
||||||
|
|
||||||
if (avctx->me_method == ME_EPZS)
|
if (avctx->me_method == ME_EPZS)
|
||||||
x4->params.analyse.i_me_method = X264_ME_DIA;
|
x4->params.analyse.i_me_method = X264_ME_DIA;
|
||||||
|
@ -124,6 +124,7 @@ static const AVOption options[]={
|
|||||||
{"b_qfactor", "qp factor between p and b frames", OFFSET(b_quant_factor), FF_OPT_TYPE_FLOAT, 1.25, -FLT_MAX, FLT_MAX, V|E},
|
{"b_qfactor", "qp factor between p and b frames", OFFSET(b_quant_factor), FF_OPT_TYPE_FLOAT, 1.25, -FLT_MAX, FLT_MAX, V|E},
|
||||||
{"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},
|
{"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},
|
||||||
{"b_strategy", "strategy to choose between I/P/B-frames", OFFSET(b_frame_strategy), FF_OPT_TYPE_INT, 0, INT_MIN, INT_MAX, V|E},
|
{"b_strategy", "strategy to choose between I/P/B-frames", OFFSET(b_frame_strategy), FF_OPT_TYPE_INT, 0, INT_MIN, INT_MAX, V|E},
|
||||||
|
{"wpredp", "weighted prediction analysis method", OFFSET(weighted_p_pred), FF_OPT_TYPE_INT, 0, INT_MIN, INT_MAX, V|E},
|
||||||
{"hurry_up", NULL, OFFSET(hurry_up), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D},
|
{"hurry_up", NULL, OFFSET(hurry_up), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D},
|
||||||
{"ps", "rtp payload size in bytes", OFFSET(rtp_payload_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},
|
{"ps", "rtp payload size in bytes", OFFSET(rtp_payload_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E},
|
||||||
{"mv_bits", NULL, OFFSET(mv_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
{"mv_bits", NULL, OFFSET(mv_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
Loading…
Reference in New Issue
Block a user