提交 096c87f6 编写于 作者: J Jason Garrett-Glaser

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
上级 f3bdc3da
...@@ -2378,8 +2378,8 @@ enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex ...@@ -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
......
coder=0 coder=0
bf=0 bf=0
flags2=-wpred-dct8x8 flags2=-wpred-dct8x8
wpredp=0
...@@ -19,3 +19,4 @@ refs=3 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 @@ ...@@ -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 { ...@@ -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) ...@@ -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[]={ ...@@ -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},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册