summaryrefslogtreecommitdiffstats
path: root/contrib/ffmpeg
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ffmpeg')
-rw-r--r--contrib/ffmpeg/A01-swscale-assert.patch4
-rw-r--r--contrib/ffmpeg/A02-channel-layout-order.patch16
-rw-r--r--contrib/ffmpeg/A03-h264-recovery-point.patch14
-rw-r--r--contrib/ffmpeg/A04-pgs-pts.patch84
-rw-r--r--contrib/ffmpeg/A04-snow-use-videodspcontext.patch33
-rw-r--r--contrib/ffmpeg/A05-mix-normalization.patch39
-rw-r--r--contrib/ffmpeg/A06-fmac-scalar-asm.patch20
-rw-r--r--contrib/ffmpeg/P01-solaris.patch14
-rw-r--r--contrib/ffmpeg/P02-darwin-pic.patch8
-rw-r--r--contrib/ffmpeg/module.defs10
10 files changed, 61 insertions, 181 deletions
diff --git a/contrib/ffmpeg/A01-swscale-assert.patch b/contrib/ffmpeg/A01-swscale-assert.patch
index 8136a35b2..e0b6aad6b 100644
--- a/contrib/ffmpeg/A01-swscale-assert.patch
+++ b/contrib/ffmpeg/A01-swscale-assert.patch
@@ -1,8 +1,8 @@
diff --git a/libswscale/utils.c b/libswscale/utils.c
-index d8fee58..b96a771 100644
+index e5e4d60..062ae01 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
-@@ -508,7 +508,9 @@ static int initFilter(int16_t **outFilter, int32_t **filterPos,
+@@ -531,7 +531,9 @@ static int initFilter(int16_t **outFilter, int32_t **filterPos,
// FIXME try to align filterPos if possible
// fix borders
diff --git a/contrib/ffmpeg/A02-channel-layout-order.patch b/contrib/ffmpeg/A02-channel-layout-order.patch
index 2326e7d3e..ce57af038 100644
--- a/contrib/ffmpeg/A02-channel-layout-order.patch
+++ b/contrib/ffmpeg/A02-channel-layout-order.patch
@@ -1,20 +1,20 @@
diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c
-index 91efaf3..e6c5c8e 100644
+index 3852f6e..c7217c8 100644
--- a/libavcodec/mlpdec.c
+++ b/libavcodec/mlpdec.c
-@@ -30,6 +30,7 @@
- #include "dsputil.h"
+@@ -28,6 +28,7 @@
+
+ #include "avcodec.h"
#include "libavutil/intreadwrite.h"
++#include "libavutil/channel_layout.h"
#include "get_bits.h"
-+#include "libavutil/audioconvert.h"
+ #include "internal.h"
#include "libavutil/crc.h"
- #include "parser.h"
- #include "mlp_parser.h"
-@@ -434,6 +435,28 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp,
+@@ -435,6 +436,28 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp,
s->ch_assign[ch_assign] = ch;
}
-+ if (m->avctx->codec_id == CODEC_ID_TRUEHD) {
++ if (m->avctx->codec_id == AV_CODEC_ID_TRUEHD) {
+ switch (m->avctx->channel_layout) {
+ case AV_CH_LAYOUT_6POINT1:
+ case (AV_CH_LAYOUT_6POINT1|AV_CH_TOP_CENTER):
diff --git a/contrib/ffmpeg/A03-h264-recovery-point.patch b/contrib/ffmpeg/A03-h264-recovery-point.patch
index d018dd6b1..bbd25ab46 100644
--- a/contrib/ffmpeg/A03-h264-recovery-point.patch
+++ b/contrib/ffmpeg/A03-h264-recovery-point.patch
@@ -1,16 +1,16 @@
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
-index 6ed251e..a3242ce 100644
+index 1a0b341..98a0350 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
-@@ -2627,6 +2627,7 @@ static void flush_dpb(AVCodecContext *avctx)
- h->s.first_field = 0;
- ff_h264_reset_sei(h);
+@@ -2163,6 +2163,7 @@ static void flush_dpb(AVCodecContext *avctx)
+
+ flush_change(h);
ff_mpeg_flush(avctx);
+ h->recovery_frame= -1;
}
static int init_poc(H264Context *h)
-@@ -4289,9 +4290,18 @@ again:
+@@ -3976,9 +3977,18 @@ again:
if ((err = decode_slice_header(hx, h)))
break;
@@ -32,10 +32,10 @@ index 6ed251e..a3242ce 100644
if (h->current_slice == 1) {
if (!(s->flags2 & CODEC_FLAG2_CHUNKS))
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
-index 570ce2f..454b755 100644
+index 8596121..23daee3 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
-@@ -569,6 +569,13 @@ typedef struct H264Context {
+@@ -568,6 +568,13 @@ typedef struct H264Context {
* frames.
*/
int sei_recovery_frame_cnt;
diff --git a/contrib/ffmpeg/A04-pgs-pts.patch b/contrib/ffmpeg/A04-pgs-pts.patch
deleted file mode 100644
index fe6a6dc93..000000000
--- a/contrib/ffmpeg/A04-pgs-pts.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
-index 102df3a..aa40c78 100644
---- a/libavcodec/avcodec.h
-+++ b/libavcodec/avcodec.h
-@@ -3093,6 +3093,7 @@ typedef struct AVSubtitle {
- unsigned num_rects;
- AVSubtitleRect **rects;
- int64_t pts; ///< Same as packet pts, in AV_TIME_BASE
-+ uint8_t forced;
- } AVSubtitle;
-
- /**
-diff --git a/libavcodec/pgssubdec.c b/libavcodec/pgssubdec.c
-index 3335412..3f14a2d 100644
---- a/libavcodec/pgssubdec.c
-+++ b/libavcodec/pgssubdec.c
-@@ -45,6 +45,8 @@ typedef struct PGSSubPresentation {
- int y;
- int id_number;
- int object_number;
-+ uint8_t composition_flag;
-+ int64_t pts;
- } PGSSubPresentation;
-
- typedef struct PGSSubPicture {
-@@ -271,7 +273,8 @@ static void parse_palette_segment(AVCodecContext *avctx,
- * @todo TODO: Implement forcing of subtitles
- */
- static void parse_presentation_segment(AVCodecContext *avctx,
-- const uint8_t *buf, int buf_size)
-+ const uint8_t *buf, int buf_size,
-+ int64_t pts)
- {
- PGSSubContext *ctx = avctx->priv_data;
-
-@@ -280,6 +283,8 @@ static void parse_presentation_segment(AVCodecContext *avctx,
- int w = bytestream_get_be16(&buf);
- int h = bytestream_get_be16(&buf);
-
-+ ctx->presentation.pts = pts;
-+
- av_dlog(avctx, "Video Dimensions %dx%d\n",
- w, h);
- if (av_image_check_size(w, h, 0, avctx) >= 0)
-@@ -299,16 +304,17 @@ static void parse_presentation_segment(AVCodecContext *avctx,
- buf += 3;
-
- ctx->presentation.object_number = bytestream_get_byte(&buf);
-+ ctx->presentation.composition_flag = 0;
- if (!ctx->presentation.object_number)
- return;
-
- /*
-- * Skip 4 bytes of unknown:
-+ * Skip 3 bytes of unknown:
- * object_id_ref (2 bytes),
- * window_id_ref,
-- * composition_flag (0x80 - object cropped, 0x40 - object forced)
- */
-- buf += 4;
-+ buf += 3;
-+ ctx->presentation.composition_flag = bytestream_get_byte(&buf);
-
- x = bytestream_get_be16(&buf);
- y = bytestream_get_be16(&buf);
-@@ -356,6 +362,9 @@ static int display_end_segment(AVCodecContext *avctx, void *data,
- */
-
- memset(sub, 0, sizeof(*sub));
-+ sub->pts = ctx->presentation.pts;
-+ sub->forced = (ctx->presentation.composition_flag & 0x40) != 0;
-+
- // Blank if last object_number was 0.
- // Note that this may be wrong for more complex subtitles.
- if (!ctx->presentation.object_number)
-@@ -441,7 +450,7 @@ static int decode(AVCodecContext *avctx, void *data, int *data_size,
- parse_picture_segment(avctx, buf, segment_length);
- break;
- case PRESENTATION_SEGMENT:
-- parse_presentation_segment(avctx, buf, segment_length);
-+ parse_presentation_segment(avctx, buf, segment_length, avpkt->pts);
- break;
- case WINDOW_SEGMENT:
- /*
diff --git a/contrib/ffmpeg/A04-snow-use-videodspcontext.patch b/contrib/ffmpeg/A04-snow-use-videodspcontext.patch
new file mode 100644
index 000000000..fc9a120b9
--- /dev/null
+++ b/contrib/ffmpeg/A04-snow-use-videodspcontext.patch
@@ -0,0 +1,33 @@
+diff --git a/libavcodec/snow.c b/libavcodec/snow.c
+index b9dab45..153e5b2 100644
+--- a/libavcodec/snow.c
++++ b/libavcodec/snow.c
+@@ -349,7 +349,7 @@ void ff_snow_pred_block(SnowContext *s, uint8_t *dst, uint8_t *tmp, int stride,
+ src += sx + sy*stride;
+ if( (unsigned)sx >= w - b_w - (HTAPS_MAX-2)
+ || (unsigned)sy >= h - b_h - (HTAPS_MAX-2)){
+- s->dsp.emulated_edge_mc(tmp + MB_SIZE, src, stride, b_w+HTAPS_MAX-1, b_h+HTAPS_MAX-1, sx, sy, w, h);
++ s->vdsp.emulated_edge_mc(tmp + MB_SIZE, src, stride, b_w+HTAPS_MAX-1, b_h+HTAPS_MAX-1, sx, sy, w, h);
+ src= tmp + MB_SIZE;
+ }
+ // assert(b_w == b_h || 2*b_w == b_h || b_w == 2*b_h);
+@@ -402,6 +402,7 @@ av_cold int ff_snow_common_init(AVCodecContext *avctx){
+ s->max_ref_frames=1; //just make sure its not an invalid value in case of no initial keyframe
+
+ ff_dsputil_init(&s->dsp, avctx);
++ ff_videodsp_init(&s->vdsp, 8);
+ ff_dwt_init(&s->dwt);
+
+ #define mcf(dx,dy)\
+diff --git a/libavcodec/snow.h b/libavcodec/snow.h
+index abf3309..b988115 100644
+--- a/libavcodec/snow.h
++++ b/libavcodec/snow.h
+@@ -108,6 +108,7 @@ typedef struct SnowContext{
+ AVCodecContext *avctx;
+ RangeCoder c;
+ DSPContext dsp;
++ VideoDSPContext vdsp;
+ DWTContext dwt;
+ AVFrame new_picture;
+ AVFrame input_picture; ///< new_picture with the internal linesizes
diff --git a/contrib/ffmpeg/A05-mix-normalization.patch b/contrib/ffmpeg/A05-mix-normalization.patch
deleted file mode 100644
index 06fb2754c..000000000
--- a/contrib/ffmpeg/A05-mix-normalization.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-diff --git a/libavresample/audio_mix.c b/libavresample/audio_mix.c
-index 2c2a356..25f9f98 100644
---- a/libavresample/audio_mix.c
-+++ b/libavresample/audio_mix.c
-@@ -327,7 +327,9 @@ int ff_audio_mix_init(AVAudioResampleContext *avr)
- avr->out_channel_layout,
- avr->center_mix_level,
- avr->surround_mix_level,
-- avr->lfe_mix_level, 1, matrix_dbl,
-+ avr->lfe_mix_level,
-+ avr->normalize_mix_level,
-+ matrix_dbl,
- avr->in_channels,
- avr->matrix_encoding);
- if (ret < 0) {
-diff --git a/libavresample/internal.h b/libavresample/internal.h
-index 7b7648f..006b6fd 100644
---- a/libavresample/internal.h
-+++ b/libavresample/internal.h
-@@ -45,6 +45,7 @@ struct AVAudioResampleContext {
- double center_mix_level; /**< center mix level */
- double surround_mix_level; /**< surround mix level */
- double lfe_mix_level; /**< lfe mix level */
-+ int normalize_mix_level; /**< enable mix level normalization */
- int force_resampling; /**< force resampling */
- int filter_size; /**< length of each FIR filter in the resampling filterbank relative to the cutoff frequency */
- int phase_shift; /**< log2 of the number of entries in the resampling polyphase filterbank */
-diff --git a/libavresample/options.c b/libavresample/options.c
-index 02e1f86..e7e0c27 100644
---- a/libavresample/options.c
-+++ b/libavresample/options.c
-@@ -47,6 +47,7 @@ static const AVOption options[] = {
- { "center_mix_level", "Center Mix Level", OFFSET(center_mix_level), AV_OPT_TYPE_DOUBLE, { M_SQRT1_2 }, -32.0, 32.0, PARAM },
- { "surround_mix_level", "Surround Mix Level", OFFSET(surround_mix_level), AV_OPT_TYPE_DOUBLE, { M_SQRT1_2 }, -32.0, 32.0, PARAM },
- { "lfe_mix_level", "LFE Mix Level", OFFSET(lfe_mix_level), AV_OPT_TYPE_DOUBLE, { 0.0 }, -32.0, 32.0, PARAM },
-+ { "normalize_mix_level", "Normalize Mix Level", OFFSET(normalize_mix_level), AV_OPT_TYPE_INT, { 1 }, 0, 1, PARAM },
- { "force_resampling", "Force Resampling", OFFSET(force_resampling), AV_OPT_TYPE_INT, { 0 }, 0, 1, PARAM },
- { "filter_size", "Resampling Filter Size", OFFSET(filter_size), AV_OPT_TYPE_INT, { 16 }, 0, 32, /* ??? */ PARAM },
- { "phase_shift", "Resampling Phase Shift", OFFSET(phase_shift), AV_OPT_TYPE_INT, { 10 }, 0, 30, /* ??? */ PARAM },
diff --git a/contrib/ffmpeg/A06-fmac-scalar-asm.patch b/contrib/ffmpeg/A06-fmac-scalar-asm.patch
deleted file mode 100644
index b0ca0f084..000000000
--- a/contrib/ffmpeg/A06-fmac-scalar-asm.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/libavutil/x86/float_dsp.asm b/libavutil/x86/float_dsp.asm
-index c4e0c66..d379d8f 100644
---- a/libavutil/x86/float_dsp.asm
-+++ b/libavutil/x86/float_dsp.asm
-@@ -60,12 +60,12 @@ cglobal vector_fmac_scalar, 3,3,3, dst, src, len
- %else
- cglobal vector_fmac_scalar, 4,4,3, dst, src, mul, len
- %endif
--%if WIN64
-- SWAP 0, 2
--%endif
- %if ARCH_X86_32
- VBROADCASTSS m0, mulm
- %else
-+%if WIN64
-+ mova xmm0, xmm2
-+%endif
- shufps xmm0, xmm0, 0
- %if cpuflag(avx)
- vinsertf128 m0, m0, xmm0, 1
diff --git a/contrib/ffmpeg/P01-solaris.patch b/contrib/ffmpeg/P01-solaris.patch
index 8266d0914..b97907941 100644
--- a/contrib/ffmpeg/P01-solaris.patch
+++ b/contrib/ffmpeg/P01-solaris.patch
@@ -1,18 +1,8 @@
diff --git a/configure b/configure
-index 07baa2f..4597a0d 100755
+index 5355300..5ac7bc0 100755
--- a/configure
+++ b/configure
-@@ -54,6 +54,9 @@ if test "$E1" != 0 || test "$E2" = 0; then
- exit 1
- fi
-
-+# Solaris must use the xpg4 version of grep
-+PATH=/usr/xpg4/bin:$PATH
-+
- show_help(){
- cat <<EOF
- Usage: configure [options]
-@@ -2688,7 +2691,7 @@ EOF
+@@ -3146,7 +3146,7 @@ EOF
check_cc <<EOF || die "endian test failed"
unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
EOF
diff --git a/contrib/ffmpeg/P02-darwin-pic.patch b/contrib/ffmpeg/P02-darwin-pic.patch
index e9d8dfc00..576c23e79 100644
--- a/contrib/ffmpeg/P02-darwin-pic.patch
+++ b/contrib/ffmpeg/P02-darwin-pic.patch
@@ -1,8 +1,8 @@
diff --git a/configure b/configure
-index 07baa2f..8a2a581 100755
+index 5355300..7ae7148 100755
--- a/configure
+++ b/configure
-@@ -2494,6 +2494,7 @@ case $target_os in
+@@ -2868,6 +2868,7 @@ case $target_os in
AVSERVERLDFLAGS=-Wl,-bind_at_load
objformat="macho"
enabled x86_64 && objformat="macho64"
@@ -10,7 +10,7 @@ index 07baa2f..8a2a581 100755
enabled_any pic shared ||
{ check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
;;
-@@ -2614,7 +2615,7 @@ esc(){
+@@ -3070,7 +3071,7 @@ esc(){
echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $LIBAV_CONFIGURATION)" >config.fate
@@ -18,4 +18,4 @@ index 07baa2f..8a2a581 100755
+#check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
set_default $PATHS_LIST
-
+ set_default nm
diff --git a/contrib/ffmpeg/module.defs b/contrib/ffmpeg/module.defs
index 54ac675f7..2c0d64bdc 100644
--- a/contrib/ffmpeg/module.defs
+++ b/contrib/ffmpeg/module.defs
@@ -1,13 +1,14 @@
$(eval $(call import.MODULE.defs,FFMPEG,ffmpeg,YASM BZIP2 ZLIB))
$(eval $(call import.CONTRIB.defs,FFMPEG))
-FFMPEG.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libav-v0.8-2551-gc83f44d.tar.bz2
+FFMPEG.FETCH.url = http://download.handbrake.fr/handbrake/contrib/libav-v9_beta3.tar.bz2
FFMPEG.CONFIGURE.deps =
FFMPEG.CONFIGURE.env =
FFMPEG.CONFIGURE.host =
FFMPEG.CONFIGURE.extra = \
+ --enable-gpl \
--disable-doc \
--disable-bsfs \
--disable-avconv \
@@ -19,13 +20,12 @@ FFMPEG.CONFIGURE.extra = \
--disable-network \
--disable-hwaccels \
--disable-encoders \
- --enable-encoder=flac \
- --enable-encoder=ac3 \
--enable-encoder=aac \
- --enable-encoder=mpeg4 \
+ --enable-encoder=ac3 \
+ --enable-encoder=flac \
--enable-encoder=mpeg2video \
+ --enable-encoder=mpeg4 \
--enable-encoder=snow \
- --enable-gpl \
--enable-zlib \
--enable-bzlib \
--cc="$(FFMPEG.GCC.gcc)" \