From b12bf032758fed28fe1aeffa242e64189389d204 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sun, 29 Apr 2012 16:41:23 +0000 Subject: [PATCH 1/5] aac sbr: align struct member by 32 byte. Required because it's used in a call to imdct_half(), which is an AVX function. Signed-off-by: Derek Buitenhuis --- libavcodec/sbr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/sbr.h b/libavcodec/sbr.h index 459ee9c436..23534b16ec 100644 --- a/libavcodec/sbr.h +++ b/libavcodec/sbr.h @@ -180,7 +180,7 @@ typedef struct { ///Sinusoidal levels float s_m[7][48]; float gain[7][48]; - DECLARE_ALIGNED(16, float, qmf_filter_scratch)[5][64]; + DECLARE_ALIGNED(32, float, qmf_filter_scratch)[5][64]; FFTContext mdct_ana; FFTContext mdct; SBRDSPContext dsp; From ccc2dfbcdf77c7186084eb04056b1e508aeb6789 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Sun, 29 Apr 2012 13:28:41 -0700 Subject: [PATCH 2/5] avcodec: cosmetic cleanup on header Apply coding style to the structs. --- libavcodec/avcodec.h | 78 ++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 0fda1cb26d..a3772a456e 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -465,49 +465,49 @@ enum Motion_Est_ID { enum AVDiscard{ /* We leave some space between them for extensions (drop some * keyframes for intra-only or drop just some bidir frames). */ - AVDISCARD_NONE =-16, ///< discard nothing - AVDISCARD_DEFAULT= 0, ///< discard useless packets like 0 size packets in avi - AVDISCARD_NONREF = 8, ///< discard all non reference - AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames - AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes - AVDISCARD_ALL = 48, ///< discard all + AVDISCARD_NONE =-16, ///< discard nothing + AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi + AVDISCARD_NONREF = 8, ///< discard all non reference + AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames + AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes + AVDISCARD_ALL = 48, ///< discard all }; enum AVColorPrimaries{ - AVCOL_PRI_BT709 =1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B - AVCOL_PRI_UNSPECIFIED=2, - AVCOL_PRI_BT470M =4, - AVCOL_PRI_BT470BG =5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM - AVCOL_PRI_SMPTE170M =6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC - AVCOL_PRI_SMPTE240M =7, ///< functionally identical to above - AVCOL_PRI_FILM =8, - AVCOL_PRI_NB , ///< Not part of ABI + AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B + AVCOL_PRI_UNSPECIFIED = 2, + AVCOL_PRI_BT470M = 4, + AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM + AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC + AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above + AVCOL_PRI_FILM = 8, + AVCOL_PRI_NB , ///< Not part of ABI }; enum AVColorTransferCharacteristic{ - AVCOL_TRC_BT709 =1, ///< also ITU-R BT1361 - AVCOL_TRC_UNSPECIFIED=2, - AVCOL_TRC_GAMMA22 =4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM - AVCOL_TRC_GAMMA28 =5, ///< also ITU-R BT470BG - AVCOL_TRC_NB , ///< Not part of ABI + AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 + AVCOL_TRC_UNSPECIFIED = 2, + AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM + AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG + AVCOL_TRC_NB , ///< Not part of ABI }; enum AVColorSpace{ - AVCOL_SPC_RGB =0, - AVCOL_SPC_BT709 =1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B - AVCOL_SPC_UNSPECIFIED=2, - AVCOL_SPC_FCC =4, - AVCOL_SPC_BT470BG =5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 - AVCOL_SPC_SMPTE170M =6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above - AVCOL_SPC_SMPTE240M =7, - AVCOL_SPC_NB , ///< Not part of ABI + AVCOL_SPC_RGB = 0, + AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B + AVCOL_SPC_UNSPECIFIED = 2, + AVCOL_SPC_FCC = 4, + AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 + AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above + AVCOL_SPC_SMPTE240M = 7, + AVCOL_SPC_NB , ///< Not part of ABI }; enum AVColorRange{ - AVCOL_RANGE_UNSPECIFIED=0, - AVCOL_RANGE_MPEG =1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges - AVCOL_RANGE_JPEG =2, ///< the normal 2^n-1 "JPEG" YUV ranges - AVCOL_RANGE_NB , ///< Not part of ABI + AVCOL_RANGE_UNSPECIFIED = 0, + AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges + AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges + AVCOL_RANGE_NB , ///< Not part of ABI }; /** @@ -516,14 +516,14 @@ enum AVColorRange{ * X X 5 6 X 0 is undefined/unknown position */ enum AVChromaLocation{ - AVCHROMA_LOC_UNSPECIFIED=0, - AVCHROMA_LOC_LEFT =1, ///< mpeg2/4, h264 default - AVCHROMA_LOC_CENTER =2, ///< mpeg1, jpeg, h263 - AVCHROMA_LOC_TOPLEFT =3, ///< DV - AVCHROMA_LOC_TOP =4, - AVCHROMA_LOC_BOTTOMLEFT =5, - AVCHROMA_LOC_BOTTOM =6, - AVCHROMA_LOC_NB , ///< Not part of ABI + AVCHROMA_LOC_UNSPECIFIED = 0, + AVCHROMA_LOC_LEFT = 1, ///< mpeg2/4, h264 default + AVCHROMA_LOC_CENTER = 2, ///< mpeg1, jpeg, h263 + AVCHROMA_LOC_TOPLEFT = 3, ///< DV + AVCHROMA_LOC_TOP = 4, + AVCHROMA_LOC_BOTTOMLEFT = 5, + AVCHROMA_LOC_BOTTOM = 6, + AVCHROMA_LOC_NB , ///< Not part of ABI }; enum AVAudioServiceType { From 85395ba73f9cc1b3cece3e85ae12f491ad7c1dd2 Mon Sep 17 00:00:00 2001 From: Hendrik Leppkes Date: Sun, 29 Apr 2012 13:35:51 -0700 Subject: [PATCH 3/5] avcodec: introduce YCoCg colorspace Non perceptual color model that aims to have an increase effectiveness in compression like the normal YCbCr while having near-lossless/lossless mapping to RGB. Signed-off-by: Luca Barbato --- libavcodec/avcodec.h | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index a3772a456e..63857d008b 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -500,6 +500,7 @@ enum AVColorSpace{ AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above AVCOL_SPC_SMPTE240M = 7, + AVCOL_SPC_YCOCG = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 AVCOL_SPC_NB , ///< Not part of ABI }; From 721af294d9b7ba5df9ffe52b83254654c3d55f16 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Sun, 29 Apr 2012 17:39:31 -0700 Subject: [PATCH 4/5] mkv: forward EMBL block data error Do not return 0 on error. --- libavformat/matroskadec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index e45cfb02c9..5688658055 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1717,7 +1717,7 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data, if ((n = matroska_ebmlnum_uint(matroska, data, size, &num)) < 0) { av_log(matroska->ctx, AV_LOG_ERROR, "EBML block data error\n"); - return res; + return n; } data += n; size -= n; From 0ca4642ec520e315692c4a8b8a98ab390bddfad2 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Sun, 29 Apr 2012 17:55:51 -0700 Subject: [PATCH 5/5] mkv: mark corrupted packets and return them Do return error if memory allocation or I/O fails. --- libavformat/matroskadec.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 5688658055..3b78ae3972 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2069,6 +2069,11 @@ static int matroska_read_packet(AVFormatContext *s, AVPacket *pkt) ret = matroska_parse_cluster(matroska); } + if (ret == AVERROR_INVALIDDATA) { + pkt->flags |= AV_PKT_FLAG_CORRUPT; + return 0; + } + return ret; }