[FFmpeg-cvslog] [ffmpeg-web] branch master updated. 4a5d318 web/index: add news entry for ffmpeg 3.1.1
The branch, master has been updated via 4a5d31833833ec1c8b976afeb4d0a3e7bb0b4d9e (commit) from 463f56ef561f4990038eb43f63f40fc98337fc30 (commit) - Log - commit 4a5d31833833ec1c8b976afeb4d0a3e7bb0b4d9e Author: James Almer AuthorDate: Sat Jul 2 13:35:20 2016 -0300 Commit: Lou Logan CommitDate: Sat Jul 2 09:52:07 2016 -0800 web/index: add news entry for ffmpeg 3.1.1 Signed-off-by: James Almer diff --git a/src/index b/src/index index eb66060..4cdd94b 100644 --- a/src/index +++ b/src/index @@ -37,6 +37,16 @@ News + July 1st, 2016, FFmpeg 3.1.1 "Laplace" + +FFmpeg 3.1.1, a new point release from the 3.1 release branch, is now available! +It mainly deals with a few ABI issues introduced in the previous release. + + +We strongly recommend users, distributors, and system integrators, especially those who experienced issues upgrading from 3.0, to +upgrade unless they use current git master. + + June 27th, 2016, FFmpeg 3.1 "Laplace" FFmpeg 3.1 "Laplace", a new --- Summary of changes: src/index | 10 ++ 1 file changed, 10 insertions(+) hooks/post-receive -- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] tests/fate: Add test for ticket 3386 ([H264] [Regression] illegal short term buffer state detected)
ffmpeg | branch: master | Michael Niedermayer | Fri Jul 1 19:23:27 2016 +0200| [07f5e75a47bfa20204bc75d6090aae74046f2dde] | committer: Michael Niedermayer tests/fate: Add test for ticket 3386 ([H264] [Regression] illegal short term buffer state detected) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=07f5e75a47bfa20204bc75d6090aae74046f2dde --- tests/fate/h264.mak |2 ++ tests/ref/fate/h264-3386 | 52 ++ 2 files changed, 54 insertions(+) diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index 9b388bb..472895f 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -192,6 +192,7 @@ FATE_H264 := $(FATE_H264:%=fate-h264-conformance-%) \ $(FATE_H264_REINIT_TESTS:%=fate-h264-reinit-%)\ fate-h264-extreme-plane-pred \ fate-h264-lossless\ + fate-h264-3386\ FATE_H264-$(call DEMDEC, H264, H264) += $(FATE_H264) FATE_H264-$(call DEMDEC, MOV, H264) += fate-h264-crop-to-container @@ -417,6 +418,7 @@ fate-h264-skip-nokey: CMD = framecrc -skip_frame nok fate-h264-skip-nointra: CMD = framecrc -skip_frame nointra -i $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts fate-h264-invalid-ref-mod:CMD = framecrc -i $(TARGET_SAMPLES)/h264/h264refframeregression.mp4 -an -frames 10 -pix_fmt yuv420p10le fate-h264-unescaped-extradata:CMD = framecrc -i $(TARGET_SAMPLES)/h264/unescaped_extradata.mp4 -an -frames 10 +fate-h264-3386: CMD = framecrc -i $(TARGET_SAMPLES)/h264/bbc2.sample.h264 fate-h264-reinit-%: CMD = framecrc -i $(TARGET_SAMPLES)/h264/$(@:fate-h264-%=%).h264 -vf format=yuv444p10le,scale=w=352:h=288 diff --git a/tests/ref/fate/h264-3386 b/tests/ref/fate/h264-3386 new file mode 100644 index 000..421581f --- /dev/null +++ b/tests/ref/fate/h264-3386 @@ -0,0 +1,52 @@ +#tb 0: 1/25 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 1440x1080 +#sar 0: 4/3 +0, 3, 3,1, 2332800, 0xa9dcb2ac +0, 4, 4,1, 2332800, 0x9b17af27 +0, 5, 5,1, 2332800, 0x02da3196 +0, 6, 6,1, 2332800, 0x9c78ed62 +0, 7, 7,1, 2332800, 0xa6e926a0 +0, 8, 8,1, 2332800, 0x324e51d2 +0, 9, 9,1, 2332800, 0xd8289620 +0, 10, 10,1, 2332800, 0xfc3619f9 +0, 11, 11,1, 2332800, 0x6b8d2560 +0, 12, 12,1, 2332800, 0x5714dca0 +0, 13, 13,1, 2332800, 0x246e2842 +0, 14, 14,1, 2332800, 0x59bc0b2e +0, 15, 15,1, 2332800, 0x24fe5cfa +0, 16, 16,1, 2332800, 0xb9607c3e +0, 17, 17,1, 2332800, 0x663669c9 +0, 19, 19,1, 2332800, 0xd37fd62f +0, 20, 20,1, 2332800, 0x2d7db904 +0, 21, 21,1, 2332800, 0x79a53eba +0, 22, 22,1, 2332800, 0x3b0c7e19 +0, 23, 23,1, 2332800, 0xd12f64c5 +0, 24, 24,1, 2332800, 0xacdb407f +0, 25, 25,1, 2332800, 0x829d7e61 +0, 26, 26,1, 2332800, 0x7932b82f +0, 27, 27,1, 2332800, 0x61f81627 +0, 28, 28,1, 2332800, 0xa1a2e000 +0, 29, 29,1, 2332800, 0x93aad5e9 +0, 30, 30,1, 2332800, 0x9993b5b5 +0, 31, 31,1, 2332800, 0x6ac48232 +0, 32, 32,1, 2332800, 0x5738f9c0 +0, 33, 33,1, 2332800, 0x82a59d01 +0, 34, 34,1, 2332800, 0xc4664862 +0, 35, 35,1, 2332800, 0xf0e6222d +0, 36, 36,1, 2332800, 0xd29e7100 +0, 37, 37,1, 2332800, 0xe093ef85 +0, 38, 38,1, 2332800, 0x28c68a65 +0, 39, 39,1, 2332800, 0x49a6b21e +0, 40, 40,1, 2332800, 0xfb28a097 +0, 41, 41,1, 2332800, 0xade1e336 +0, 42, 42,1, 2332800, 0xe5118412 +0, 43, 43,1, 2332800, 0x58750176 +0, 44, 44,1, 2332800, 0xacb99939 +0, 45, 45,1, 2332800, 0x80b968d3 +0, 46, 46,1, 2332800, 0xa45f4e6f +0, 47, 47,1, 2332800, 0xe0fcbade +0, 48, 48,1, 2332800, 0x19568f4d +0, 49, 49,1, 2332800, 0x33c53f59
[FFmpeg-cvslog] tests/checkasm/pixblockdsp: Test 8 byte aligned positions
ffmpeg | branch: master | Michael Niedermayer | Mon Jun 27 22:03:14 2016 +0200| [fb6b6b5166cb8345caa4e7423dd7d9b97b430501] | committer: Michael Niedermayer tests/checkasm/pixblockdsp: Test 8 byte aligned positions The code is documented as to require 8byte alignment Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fb6b6b5166cb8345caa4e7423dd7d9b97b430501 --- tests/checkasm/pixblockdsp.c |6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/checkasm/pixblockdsp.c b/tests/checkasm/pixblockdsp.c index 66bfdb7..2b88e7d 100644 --- a/tests/checkasm/pixblockdsp.c +++ b/tests/checkasm/pixblockdsp.c @@ -26,7 +26,7 @@ #include "libavutil/intreadwrite.h" #define BUF_UNITS 8 -#define BUF_SIZE (BUF_UNITS * 128 + BUF_UNITS) +#define BUF_SIZE (BUF_UNITS * 128 + 8 * BUF_UNITS) #define randomize_buffers() \ do {\ @@ -50,7 +50,7 @@ declare_func_emms(AV_CPU_FLAG_MMX, void, int16_t *block, const uint8_t *pixels, ptrdiff_t line_size);\ \ for (i = 0; i < BUF_UNITS; i++) { \ -int src_offset = i * 64 * sizeof(type) + i; /* Test various alignments */ \ +int src_offset = i * 64 * sizeof(type) + 8 * i; /* Test various alignments */ \ int dst_offset = i * 64; /* dst must be aligned */ \ randomize_buffers(); \ call_ref(dst0 + dst_offset, src10 + src_offset, 8); \ @@ -67,7 +67,7 @@ declare_func_emms(AV_CPU_FLAG_MMX, void, int16_t *av_restrict block, const uint8_t *s1, const uint8_t *s2, int stride); \ \ for (i = 0; i < BUF_UNITS; i++) { \ -int src_offset = i * 64 * sizeof(type) + i; /* Test various alignments */ \ +int src_offset = i * 64 * sizeof(type) + 8 * i; /* Test various alignments */ \ int dst_offset = i * 64; /* dst must be aligned */ \ randomize_buffers(); \ call_ref(dst0 + dst_offset, src10 + src_offset, src20 + src_offset, 8);\ ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] libopusenc: Add channel mapping family argument
ffmpeg | branch: master | Michael Graczyk | Tue Jun 14 18:33:15 2016 -0700| [37941878f193a2316c514bd5ba55bfe9d2dfdfcf] | committer: Michael Niedermayer libopusenc: Add channel mapping family argument The default value of -1 indicates that ffmpeg should determine the channel mapping automatically, which was the behavior before this commit. Unless the -mapping_family argument is provided, behavior is unchanged. Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=37941878f193a2316c514bd5ba55bfe9d2dfdfcf --- doc/encoders.texi | 11 libavcodec/libopusenc.c | 165 +++ 2 files changed, 150 insertions(+), 26 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index f38cad3..d0caa77 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -1184,6 +1184,17 @@ following: 4000, 6000, 8000, 12000, or 2, corresponding to narrowband, mediumband, wideband, super wideband, and fullband respectively. The default is 0 (cutoff disabled). +@item mapping_family (@emph{mapping_family}) +Set channel mapping family to be used by the encoder. The default value of -1 +uses mapping family 0 for mono and stereo inputs, and mapping family 1 +otherwise. The default also disables the surround masking and LFE bandwidth +optimzations in libopus, and requires that the input contains 8 channels or +fewer. + +Other values include 0 for mono and stereo, 1 for surround sound with masking +and LFE bandwidth optimizations, and 255 for independent streams with an +unspecified channel layout. + @end table @section libvorbis diff --git a/libavcodec/libopusenc.c b/libavcodec/libopusenc.c index c9b96ce..c40fcde 100644 --- a/libavcodec/libopusenc.c +++ b/libavcodec/libopusenc.c @@ -38,6 +38,7 @@ typedef struct LibopusEncOpts { float frame_duration; int packet_size; int max_bandwidth; +int mapping_family; } LibopusEncOpts; typedef struct LibopusEncContext { @@ -47,6 +48,7 @@ typedef struct LibopusEncContext { uint8_t *samples; LibopusEncOpts opts; AudioFrameQueue afq; +const uint8_t *encoder_channel_map; } LibopusEncContext; static const uint8_t opus_coupled_streams[8] = { @@ -93,13 +95,11 @@ static void libopus_write_header(AVCodecContext *avctx, int stream_count, bytestream_put_le16(&p, 0); /* Gain of 0dB is recommended. */ /* Channel mapping */ -if (channels > 2) { -bytestream_put_byte(&p, mapping_family); +bytestream_put_byte(&p, mapping_family); +if (mapping_family != 0) { bytestream_put_byte(&p, stream_count); bytestream_put_byte(&p, coupled_stream_count); bytestream_put_buffer(&p, channel_mapping, channels); -} else { -bytestream_put_byte(&p, 0); } } @@ -157,13 +157,92 @@ static int libopus_configure_encoder(AVCodecContext *avctx, OpusMSEncoder *enc, return OPUS_OK; } +static int libopus_check_max_channels(AVCodecContext *avctx, + int max_channels) { +if (avctx->channels > max_channels) { +av_log(avctx, AV_LOG_ERROR, "Opus mapping family undefined for %d channels.\n", + avctx->channels); +return AVERROR(EINVAL); +} + +return 0; +} + +static int libopus_check_vorbis_layout(AVCodecContext *avctx, int mapping_family) { +av_assert2(avctx->channels < FF_ARRAY_ELEMS(ff_vorbis_channel_layouts)); + +if (!avctx->channel_layout) { +av_log(avctx, AV_LOG_WARNING, + "No channel layout specified. Opus encoder will use Vorbis " + "channel layout for %d channels.\n", avctx->channels); +} else if (avctx->channel_layout != ff_vorbis_channel_layouts[avctx->channels - 1]) { +char name[32]; +av_get_channel_layout_string(name, sizeof(name), avctx->channels, + avctx->channel_layout); +av_log(avctx, AV_LOG_ERROR, + "Invalid channel layout %s for specified mapping family %d.\n", + name, mapping_family); + +return AVERROR(EINVAL); +} + +return 0; +} + +static int libopus_validate_layout_and_get_channel_map( +AVCodecContext *avctx, +int mapping_family, +const uint8_t ** channel_map_result) +{ +const uint8_t * channel_map = NULL; +int ret; + +switch (mapping_family) { +case -1: +ret = libopus_check_max_channels(avctx, 8); +if (ret == 0) { +ret = libopus_check_vorbis_layout(avctx, mapping_family); +/* Channels do not need to be reordered. */ +} + +break; +case 0: +ret = libopus_check_max_channels(avctx, 2); +if (ret == 0) { +ret = libopus_check_vorbis_layout(avctx, mapping_family); +} +break; +case 1: +/* Opus expects channels to be in Vorbis order. */ +ret = libopus_check_max_channels(avctx, 8); +if (ret ==
[FFmpeg-cvslog] libopusenc: Refactor to simplify forthcoming mapping_family parameter
ffmpeg | branch: master | Michael Graczyk | Tue Jun 14 18:30:36 2016 -0700| [a1e3c7cf0fd982d4d82146c4cbe78f6255ae9ca2] | committer: Michael Niedermayer libopusenc: Refactor to simplify forthcoming mapping_family parameter Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a1e3c7cf0fd982d4d82146c4cbe78f6255ae9ca2 --- libavcodec/libopusenc.c | 79 ++- 1 file changed, 43 insertions(+), 36 deletions(-) diff --git a/libavcodec/libopusenc.c b/libavcodec/libopusenc.c index 3f3e80d..c9b96ce 100644 --- a/libavcodec/libopusenc.c +++ b/libavcodec/libopusenc.c @@ -79,6 +79,7 @@ static const uint8_t libavcodec_libopus_channel_map[8][8] = { static void libopus_write_header(AVCodecContext *avctx, int stream_count, int coupled_stream_count, + int mapping_family, const uint8_t *channel_mapping) { uint8_t *p = avctx->extradata; @@ -93,7 +94,7 @@ static void libopus_write_header(AVCodecContext *avctx, int stream_count, /* Channel mapping */ if (channels > 2) { -bytestream_put_byte(&p, channels <= 8 ? 1 : 255); +bytestream_put_byte(&p, mapping_family); bytestream_put_byte(&p, stream_count); bytestream_put_byte(&p, coupled_stream_count); bytestream_put_buffer(&p, channel_mapping, channels); @@ -159,37 +160,11 @@ static int libopus_configure_encoder(AVCodecContext *avctx, OpusMSEncoder *enc, static av_cold int libopus_encode_init(AVCodecContext *avctx) { LibopusEncContext *opus = avctx->priv_data; -const uint8_t *channel_mapping; OpusMSEncoder *enc; +uint8_t libopus_channel_mapping[255]; int ret = OPUS_OK; int coupled_stream_count, header_size, frame_size; -coupled_stream_count = opus_coupled_streams[avctx->channels - 1]; -opus->stream_count = avctx->channels - coupled_stream_count; -channel_mapping = libavcodec_libopus_channel_map[avctx->channels - 1]; - -/* FIXME: Opus can handle up to 255 channels. However, the mapping for - * anything greater than 8 is undefined. */ -if (avctx->channels > 8) { -av_log(avctx, AV_LOG_ERROR, - "Channel layout undefined for %d channels.\n", avctx->channels); -return AVERROR_PATCHWELCOME; -} -if (!avctx->bit_rate) { -/* Sane default copied from opusenc */ -avctx->bit_rate = 64000 * opus->stream_count + - 32000 * coupled_stream_count; -av_log(avctx, AV_LOG_WARNING, - "No bit rate set. Defaulting to %"PRId64" bps.\n", (int64_t)avctx->bit_rate); -} - -if (avctx->bit_rate < 500 || avctx->bit_rate > 256000 * avctx->channels) { -av_log(avctx, AV_LOG_ERROR, "The bit rate %"PRId64" bps is unsupported. " - "Please choose a value between 500 and %d.\n", (int64_t)avctx->bit_rate, - 256000 * avctx->channels); -return AVERROR(EINVAL); -} - frame_size = opus->opts.frame_duration * 48000 / 1000; switch (frame_size) { case 120: @@ -251,17 +226,49 @@ static av_cold int libopus_encode_init(AVCodecContext *avctx) } } -enc = opus_multistream_encoder_create(avctx->sample_rate, avctx->channels, - opus->stream_count, - coupled_stream_count, - channel_mapping, - opus->opts.application, &ret); +/* FIXME: Opus can handle up to 255 channels. However, the mapping for + * anything greater than 8 is undefined. */ +if (avctx->channels > 8) { +av_log(avctx, AV_LOG_ERROR, + "Channel layout undefined for %d channels.\n", avctx->channels); +return AVERROR_PATCHWELCOME; +} + +coupled_stream_count = opus_coupled_streams[avctx->channels - 1]; +opus->stream_count = avctx->channels - coupled_stream_count; + +memcpy(libopus_channel_mapping, + opus_vorbis_channel_map[avctx->channels - 1], + avctx->channels * sizeof(*libopus_channel_mapping)); + +enc = opus_multistream_encoder_create( +avctx->sample_rate, avctx->channels, opus->stream_count, +coupled_stream_count, +libavcodec_libopus_channel_map[avctx->channels - 1], +opus->opts.application, &ret); + if (ret != OPUS_OK) { av_log(avctx, AV_LOG_ERROR, "Failed to create encoder: %s\n", opus_strerror(ret)); return ff_opus_error_to_averror(ret); } +if (!avctx->bit_rate) { +/* Sane default copied from opusenc */ +avctx->bit_rate = 64000 * opus->stream_count + + 32000 * coupled_stream_count; +av_log(avctx, AV_LOG_WARNING, + "No bit rate set. Defaulting to %"PRId64" bps.\n", (int64_t)avctx->b
[FFmpeg-cvslog] lavf/aiffdec: Support QDMC demuxing.
ffmpeg | branch: master | Carl Eugen Hoyos | Sun Jul 3 04:37:48 2016 +0200| [d5edb6c0483b04b0f91c011c4c4753bd440fec9b] | committer: Carl Eugen Hoyos lavf/aiffdec: Support QDMC demuxing. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d5edb6c0483b04b0f91c011c4c4753bd440fec9b --- libavformat/aiff.h|1 + libavformat/aiffdec.c |3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libavformat/aiff.h b/libavformat/aiff.h index 2a87d6e..0ed10a2 100644 --- a/libavformat/aiff.h +++ b/libavformat/aiff.h @@ -50,6 +50,7 @@ static const AVCodecTag ff_codec_aiff_tags[] = { { AV_CODEC_ID_PCM_S16BE,MKTAG('t','w','o','s') }, { AV_CODEC_ID_PCM_S16LE,MKTAG('s','o','w','t') }, { AV_CODEC_ID_ADPCM_IMA_QT, MKTAG('i','m','a','4') }, +{ AV_CODEC_ID_QDMC, MKTAG('Q','D','M','C') }, { AV_CODEC_ID_QDM2, MKTAG('Q','D','M','2') }, { AV_CODEC_ID_QCELP,MKTAG('Q','c','l','p') }, { AV_CODEC_ID_SDX2_DPCM,MKTAG('S','D','X','2') }, diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c index d191bc4..9bff565 100644 --- a/libavformat/aiffdec.c +++ b/libavformat/aiffdec.c @@ -301,7 +301,8 @@ static int aiff_read_header(AVFormatContext *s) return -1; if (ff_get_extradata(s, st->codecpar, pb, size) < 0) return AVERROR(ENOMEM); -if (st->codecpar->codec_id == AV_CODEC_ID_QDM2 && size>=12*4 && !st->codecpar->block_align) { +if ( (st->codecpar->codec_id == AV_CODEC_ID_QDMC || st->codecpar->codec_id == AV_CODEC_ID_QDM2) +&& size>=12*4 && !st->codecpar->block_align) { st->codecpar->block_align = AV_RB32(st->codecpar->extradata+11*4); aiff->block_duration = AV_RB32(st->codecpar->extradata+9*4); } else if (st->codecpar->codec_id == AV_CODEC_ID_QCELP) { ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog