From 5c92a97583a352663e6f68642949212e6e47640d Mon Sep 17 00:00:00 2001 From: Rodeo Date: Sat, 22 Sep 2012 15:19:47 +0000 Subject: contrib/ffmpeg: update patch numbers after SVN revision 4950. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4975 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- contrib/ffmpeg/A02-channel-layout-order.patch | 41 +++++++++++++ contrib/ffmpeg/A03-channel-layout-order.patch | 41 ------------- contrib/ffmpeg/A03-h264-recovery-point.patch | 63 ++++++++++++++++++++ contrib/ffmpeg/A04-h264-recovery-point.patch | 63 -------------------- contrib/ffmpeg/A04-pgs-pts.patch | 84 +++++++++++++++++++++++++++ contrib/ffmpeg/A05-mix-normalization.patch | 39 +++++++++++++ contrib/ffmpeg/A05-pgs-pts.patch | 84 --------------------------- contrib/ffmpeg/A06-fmac-scalar-asm.patch | 20 +++++++ contrib/ffmpeg/A06-mix-normalization.patch | 39 ------------- contrib/ffmpeg/A07-fmac-scalar-asm.patch | 20 ------- 10 files changed, 247 insertions(+), 247 deletions(-) create mode 100644 contrib/ffmpeg/A02-channel-layout-order.patch delete mode 100644 contrib/ffmpeg/A03-channel-layout-order.patch create mode 100644 contrib/ffmpeg/A03-h264-recovery-point.patch delete mode 100644 contrib/ffmpeg/A04-h264-recovery-point.patch create mode 100644 contrib/ffmpeg/A04-pgs-pts.patch create mode 100644 contrib/ffmpeg/A05-mix-normalization.patch delete mode 100644 contrib/ffmpeg/A05-pgs-pts.patch create mode 100644 contrib/ffmpeg/A06-fmac-scalar-asm.patch delete mode 100644 contrib/ffmpeg/A06-mix-normalization.patch delete mode 100644 contrib/ffmpeg/A07-fmac-scalar-asm.patch (limited to 'contrib/ffmpeg') diff --git a/contrib/ffmpeg/A02-channel-layout-order.patch b/contrib/ffmpeg/A02-channel-layout-order.patch new file mode 100644 index 000000000..2326e7d3e --- /dev/null +++ b/contrib/ffmpeg/A02-channel-layout-order.patch @@ -0,0 +1,41 @@ +diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c +index 91efaf3..e6c5c8e 100644 +--- a/libavcodec/mlpdec.c ++++ b/libavcodec/mlpdec.c +@@ -30,6 +30,7 @@ + #include "dsputil.h" + #include "libavutil/intreadwrite.h" + #include "get_bits.h" ++#include "libavutil/audioconvert.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, + s->ch_assign[ch_assign] = ch; + } + ++ if (m->avctx->codec_id == CODEC_ID_TRUEHD) { ++ switch (m->avctx->channel_layout) { ++ case AV_CH_LAYOUT_6POINT1: ++ case (AV_CH_LAYOUT_6POINT1|AV_CH_TOP_CENTER): ++ case (AV_CH_LAYOUT_6POINT1|AV_CH_TOP_FRONT_CENTER): ++ { ++ int i = s->ch_assign[6]; ++ s->ch_assign[6] = s->ch_assign[5]; ++ s->ch_assign[5] = s->ch_assign[4]; ++ s->ch_assign[4] = i; ++ break; ++ } ++ case AV_CH_LAYOUT_7POINT1: ++ case (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER): ++ FFSWAP(int, s->ch_assign[4], s->ch_assign[6]); ++ FFSWAP(int, s->ch_assign[5], s->ch_assign[7]); ++ break; ++ default: ++ break; ++ } ++ } ++ + checksum = ff_mlp_restart_checksum(buf, get_bits_count(gbp) - start_count); + + if (checksum != get_bits(gbp, 8)) diff --git a/contrib/ffmpeg/A03-channel-layout-order.patch b/contrib/ffmpeg/A03-channel-layout-order.patch deleted file mode 100644 index 2326e7d3e..000000000 --- a/contrib/ffmpeg/A03-channel-layout-order.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c -index 91efaf3..e6c5c8e 100644 ---- a/libavcodec/mlpdec.c -+++ b/libavcodec/mlpdec.c -@@ -30,6 +30,7 @@ - #include "dsputil.h" - #include "libavutil/intreadwrite.h" - #include "get_bits.h" -+#include "libavutil/audioconvert.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, - s->ch_assign[ch_assign] = ch; - } - -+ if (m->avctx->codec_id == CODEC_ID_TRUEHD) { -+ switch (m->avctx->channel_layout) { -+ case AV_CH_LAYOUT_6POINT1: -+ case (AV_CH_LAYOUT_6POINT1|AV_CH_TOP_CENTER): -+ case (AV_CH_LAYOUT_6POINT1|AV_CH_TOP_FRONT_CENTER): -+ { -+ int i = s->ch_assign[6]; -+ s->ch_assign[6] = s->ch_assign[5]; -+ s->ch_assign[5] = s->ch_assign[4]; -+ s->ch_assign[4] = i; -+ break; -+ } -+ case AV_CH_LAYOUT_7POINT1: -+ case (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER): -+ FFSWAP(int, s->ch_assign[4], s->ch_assign[6]); -+ FFSWAP(int, s->ch_assign[5], s->ch_assign[7]); -+ break; -+ default: -+ break; -+ } -+ } -+ - checksum = ff_mlp_restart_checksum(buf, get_bits_count(gbp) - start_count); - - if (checksum != get_bits(gbp, 8)) diff --git a/contrib/ffmpeg/A03-h264-recovery-point.patch b/contrib/ffmpeg/A03-h264-recovery-point.patch new file mode 100644 index 000000000..d018dd6b1 --- /dev/null +++ b/contrib/ffmpeg/A03-h264-recovery-point.patch @@ -0,0 +1,63 @@ +diff --git a/libavcodec/h264.c b/libavcodec/h264.c +index 6ed251e..a3242ce 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); + ff_mpeg_flush(avctx); ++ h->recovery_frame= -1; + } + + static int init_poc(H264Context *h) +@@ -4289,9 +4290,18 @@ again: + if ((err = decode_slice_header(hx, h))) + break; + ++ if (h->sei_recovery_frame_cnt >= 0 && h->recovery_frame < 0) { ++ h->recovery_frame = (h->frame_num + h->sei_recovery_frame_cnt) % ++ (1 << h->sps.log2_max_frame_num); ++ } ++ + s->current_picture_ptr->f.key_frame |= +- (hx->nal_unit_type == NAL_IDR_SLICE) || +- (h->sei_recovery_frame_cnt >= 0); ++ (hx->nal_unit_type == NAL_IDR_SLICE); ++ ++ if (h->recovery_frame == h->frame_num) { ++ s->current_picture_ptr->f.key_frame |= 1; ++ h->recovery_frame = -1; ++ } + + 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 +--- a/libavcodec/h264.h ++++ b/libavcodec/h264.h +@@ -569,6 +569,13 @@ typedef struct H264Context { + * frames. + */ + int sei_recovery_frame_cnt; ++ /** ++ * recovery_frame is the frame_num at which the next frame should ++ * be fully constructed. ++ * ++ * Set to -1 when not expecting a recovery point. ++ */ ++ int recovery_frame; + + int luma_weight_flag[2]; ///< 7.4.3.2 luma_weight_lX_flag + int chroma_weight_flag[2]; ///< 7.4.3.2 chroma_weight_lX_flag +diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c +index 2e5fb65..ea33a18 100644 +--- a/libavcodec/h264_sei.c ++++ b/libavcodec/h264_sei.c +@@ -38,6 +38,7 @@ static const uint8_t sei_num_clock_ts_table[9]={ + }; + + void ff_h264_reset_sei(H264Context *h) { ++ h->recovery_frame = -1; + h->sei_recovery_frame_cnt = -1; + h->sei_dpb_output_delay = 0; + h->sei_cpb_removal_delay = -1; diff --git a/contrib/ffmpeg/A04-h264-recovery-point.patch b/contrib/ffmpeg/A04-h264-recovery-point.patch deleted file mode 100644 index d018dd6b1..000000000 --- a/contrib/ffmpeg/A04-h264-recovery-point.patch +++ /dev/null @@ -1,63 +0,0 @@ -diff --git a/libavcodec/h264.c b/libavcodec/h264.c -index 6ed251e..a3242ce 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); - ff_mpeg_flush(avctx); -+ h->recovery_frame= -1; - } - - static int init_poc(H264Context *h) -@@ -4289,9 +4290,18 @@ again: - if ((err = decode_slice_header(hx, h))) - break; - -+ if (h->sei_recovery_frame_cnt >= 0 && h->recovery_frame < 0) { -+ h->recovery_frame = (h->frame_num + h->sei_recovery_frame_cnt) % -+ (1 << h->sps.log2_max_frame_num); -+ } -+ - s->current_picture_ptr->f.key_frame |= -- (hx->nal_unit_type == NAL_IDR_SLICE) || -- (h->sei_recovery_frame_cnt >= 0); -+ (hx->nal_unit_type == NAL_IDR_SLICE); -+ -+ if (h->recovery_frame == h->frame_num) { -+ s->current_picture_ptr->f.key_frame |= 1; -+ h->recovery_frame = -1; -+ } - - 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 ---- a/libavcodec/h264.h -+++ b/libavcodec/h264.h -@@ -569,6 +569,13 @@ typedef struct H264Context { - * frames. - */ - int sei_recovery_frame_cnt; -+ /** -+ * recovery_frame is the frame_num at which the next frame should -+ * be fully constructed. -+ * -+ * Set to -1 when not expecting a recovery point. -+ */ -+ int recovery_frame; - - int luma_weight_flag[2]; ///< 7.4.3.2 luma_weight_lX_flag - int chroma_weight_flag[2]; ///< 7.4.3.2 chroma_weight_lX_flag -diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c -index 2e5fb65..ea33a18 100644 ---- a/libavcodec/h264_sei.c -+++ b/libavcodec/h264_sei.c -@@ -38,6 +38,7 @@ static const uint8_t sei_num_clock_ts_table[9]={ - }; - - void ff_h264_reset_sei(H264Context *h) { -+ h->recovery_frame = -1; - h->sei_recovery_frame_cnt = -1; - h->sei_dpb_output_delay = 0; - h->sei_cpb_removal_delay = -1; diff --git a/contrib/ffmpeg/A04-pgs-pts.patch b/contrib/ffmpeg/A04-pgs-pts.patch new file mode 100644 index 000000000..fe6a6dc93 --- /dev/null +++ b/contrib/ffmpeg/A04-pgs-pts.patch @@ -0,0 +1,84 @@ +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/A05-mix-normalization.patch b/contrib/ffmpeg/A05-mix-normalization.patch new file mode 100644 index 000000000..06fb2754c --- /dev/null +++ b/contrib/ffmpeg/A05-mix-normalization.patch @@ -0,0 +1,39 @@ +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/A05-pgs-pts.patch b/contrib/ffmpeg/A05-pgs-pts.patch deleted file mode 100644 index fe6a6dc93..000000000 --- a/contrib/ffmpeg/A05-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/A06-fmac-scalar-asm.patch b/contrib/ffmpeg/A06-fmac-scalar-asm.patch new file mode 100644 index 000000000..b0ca0f084 --- /dev/null +++ b/contrib/ffmpeg/A06-fmac-scalar-asm.patch @@ -0,0 +1,20 @@ +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/A06-mix-normalization.patch b/contrib/ffmpeg/A06-mix-normalization.patch deleted file mode 100644 index 06fb2754c..000000000 --- a/contrib/ffmpeg/A06-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/A07-fmac-scalar-asm.patch b/contrib/ffmpeg/A07-fmac-scalar-asm.patch deleted file mode 100644 index b0ca0f084..000000000 --- a/contrib/ffmpeg/A07-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 -- cgit v1.2.3