[libav-devel] [PATCH 2/3] arm: dsputil: prettify some conditional instructions in put_pixels macros
From: Mans Rullgard m...@mansr.com Signed-off-by: Mans Rullgard m...@mansr.com --- libavcodec/arm/dsputil_neon.S | 62 ++- 1 file changed, 20 insertions(+), 42 deletions(-) diff --git a/libavcodec/arm/dsputil_neon.S b/libavcodec/arm/dsputil_neon.S index 4bdcd95..21b1aba 100644 --- a/libavcodec/arm/dsputil_neon.S +++ b/libavcodec/arm/dsputil_neon.S @@ -136,9 +136,7 @@ endfunc sub r3, r3, #2 vld1.64 {d0-d2}, [r1], r2 vld1.64 {d4-d6}, [r1], r2 - .ifeq \rnd -vmov.i16q13, #1 - .endif +NRNDvmov.i16q13, #1 pld [r1] pld [r1, r2] vext.8 q1, q0, q1, #1 @@ -151,15 +149,11 @@ endfunc vld1.64 {d0-d2}, [r1], r2 vadd.u16q12, q8, q9 pld [r1] - .ifeq \rnd -vadd.u16q12, q12, q13 - .endif +NRNDvadd.u16q12, q12, q13 vext.8 q15, q0, q1, #1 vadd.u16q1 , q10, q11 shrnd28, q12, #2 - .ifeq \rnd -vadd.u16q1, q1, q13 - .endif +NRNDvadd.u16q1, q1, q13 shrnd29, q1, #2 .if \avg vld1.8 {q8}, [r0,:128] @@ -171,15 +165,11 @@ endfunc vst1.64 {q14},[r0,:128], r2 vadd.u16q12, q8, q9 pld [r1, r2] - .ifeq \rnd -vadd.u16q12, q12, q13 - .endif +NRNDvadd.u16q12, q12, q13 vext.8 q2, q1, q2, #1 vadd.u16q0, q10, q11 shrnd30, q12, #2 - .ifeq \rnd -vadd.u16q0, q0, q13 - .endif +NRNDvadd.u16q0, q0, q13 shrnd31, q0, #2 .if \avg vld1.8 {q9}, [r0,:128] @@ -192,15 +182,11 @@ endfunc vld1.64 {d0-d2}, [r1], r2 vadd.u16q12, q8, q9 - .ifeq \rnd -vadd.u16q12, q12, q13 - .endif +NRNDvadd.u16q12, q12, q13 vext.8 q15, q0, q1, #1 vadd.u16q1 , q10, q11 shrnd28, q12, #2 - .ifeq \rnd -vadd.u16q1, q1, q13 - .endif +NRNDvadd.u16q1, q1, q13 shrnd29, q1, #2 .if \avg vld1.8 {q8}, [r0,:128] @@ -210,14 +196,10 @@ endfunc vaddl.u8q10, d1, d31 vst1.64 {q14},[r0,:128], r2 vadd.u16q12, q8, q9 - .ifeq \rnd -vadd.u16q12, q12, q13 - .endif +NRNDvadd.u16q12, q12, q13 vadd.u16q0, q10, q11 shrnd30, q12, #2 - .ifeq \rnd -vadd.u16q0, q0, q13 - .endif +NRNDvadd.u16q0, q0, q13 shrnd31, q0, #2 .if \avg vld1.8 {q9}, [r0,:128] @@ -319,9 +301,7 @@ endfunc sub r3, r3, #2 vld1.64 {q0}, [r1], r2 vld1.64 {q1}, [r1], r2 - .ifeq \rnd -vmov.i16q11, #1 - .endif +NRNDvmov.i16q11, #1 pld [r1] pld [r1, r2] vext.8 d4, d0, d1, #1 @@ -333,9 +313,7 @@ endfunc pld [r1] vadd.u16q10, q8, q9 vext.8 d4, d0, d1, #1 - .ifeq \rnd -vadd.u16q10, q10, q11 - .endif +NRNDvadd.u16q10, q10, q11 vaddl.u8q8, d0, d4 shrnd5, q10, #2 vld1.64 {q1}, [r1], r2 @@ -345,9 +323,7 @@ endfunc vld1.8 {d7}, [r0,:64] vrhadd.u8 d5, d5, d7 .endif - .ifeq \rnd -vadd.u16q10, q10, q11 - .endif +NRNDvadd.u16q10, q10, q11 vst1.64 {d5}, [r0,:64], r2 shrnd7, q10, #2 .if \avg @@ -362,9 +338,7 @@ endfunc vld1.64 {q0}, [r1], r2 vadd.u16q10, q8, q9 vext.8 d4, d0, d1, #1 - .ifeq \rnd -vadd.u16q10, q10, q11 - .endif +NRNDvadd.u16q10, q10, q11 vaddl.u8q8, d0, d4 shrnd5, q10, #2 vadd.u16q10, q8, q9 @@ -372,9 +346,7 @@ endfunc vld1.8 {d7}, [r0,:64] vrhadd.u8 d5, d5, d7 .endif - .ifeq \rnd -vadd.u16q10, q10, q11 - .endif +NRNDvadd.u16q10, q10, q11 vst1.64 {d5}, [r0,:64], r2 shrnd7, q10, #2 .if \avg @@ -394,6 +366,8 @@ endfunc .macro shrn rd, rn, rm vrshrn.u16 \rd, \rn, \rm .endm +.macro NRND insn:vararg +.endm .else .macro avg rd, rn, rm vhadd.u8\rd, \rn, \rm @@ -401,12 +375,16 @@ endfunc .macro shrn rd, rn, rm vshrn.u16 \rd, \rn, \rm .endm +
[libav-devel] Backport Arm NEON avg,put_pixels fixes to 0.8
Hi, backports following three commits to 0.8 cbc7d60afa0c5 arm: dsputil: fix overreads in put/avg_pixels functions 2eba6898c96fe arm: dsputil: prettify some conditional instructions in e54e6f25cfa8b arm/neon: dsputil: use correct size specifiers on Only the first is required to fix the reported page faults due to overreads during mpeg2 decoding (source DVD). The second one is there only to keep the history and allows the backport of the third commit without conflicts. The third one mainly fixes a theoretical problem since probably nobody runs a full system with strict alignment checking. Janne ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
[libav-devel] [PATCH 1/3] arm: dsputil: fix overreads in put/avg_pixels functions
From: Mans Rullgard m...@mansr.com The vertically interpolating variants of these functions read ahead one line to optimise the loop. On the last line processed, this might be outside the buffer. Fix these invalid reads by processing the last line outside the loop. Signed-off-by: Mans Rullgard m...@mansr.com --- libavcodec/arm/dsputil_neon.S | 92 +++ 1 file changed, 92 insertions(+) diff --git a/libavcodec/arm/dsputil_neon.S b/libavcodec/arm/dsputil_neon.S index d49aedd..4bdcd95 100644 --- a/libavcodec/arm/dsputil_neon.S +++ b/libavcodec/arm/dsputil_neon.S @@ -95,6 +95,7 @@ endfunc .endm .macro pixels16_y2 rnd=1, avg=0 +sub r3, r3, #2 vld1.64 {q0}, [r1], r2 vld1.64 {q1}, [r1], r2 1: subsr3, r3, #2 @@ -114,10 +115,25 @@ endfunc vst1.64 {q2}, [r0,:128], r2 vst1.64 {q3}, [r0,:128], r2 bne 1b + +avg q2, q0, q1 +vld1.64 {q0}, [r1], r2 +avg q3, q0, q1 + .if \avg +vld1.8 {q8}, [r0,:128], r2 +vld1.8 {q9}, [r0,:128] +vrhadd.u8 q2, q2, q8 +vrhadd.u8 q3, q3, q9 +sub r0, r0, r2 + .endif +vst1.64 {q2}, [r0,:128], r2 +vst1.64 {q3}, [r0,:128], r2 + bx lr .endm .macro pixels16_xy2rnd=1, avg=0 +sub r3, r3, #2 vld1.64 {d0-d2}, [r1], r2 vld1.64 {d4-d6}, [r1], r2 .ifeq \rnd @@ -173,6 +189,42 @@ endfunc vaddl.u8q11, d3, d5 vst1.64 {q15},[r0,:128], r2 bgt 1b + +vld1.64 {d0-d2}, [r1], r2 +vadd.u16q12, q8, q9 + .ifeq \rnd +vadd.u16q12, q12, q13 + .endif +vext.8 q15, q0, q1, #1 +vadd.u16q1 , q10, q11 +shrnd28, q12, #2 + .ifeq \rnd +vadd.u16q1, q1, q13 + .endif +shrnd29, q1, #2 + .if \avg +vld1.8 {q8}, [r0,:128] +vrhadd.u8 q14, q14, q8 + .endif +vaddl.u8q8, d0, d30 +vaddl.u8q10, d1, d31 +vst1.64 {q14},[r0,:128], r2 +vadd.u16q12, q8, q9 + .ifeq \rnd +vadd.u16q12, q12, q13 + .endif +vadd.u16q0, q10, q11 +shrnd30, q12, #2 + .ifeq \rnd +vadd.u16q0, q0, q13 + .endif +shrnd31, q0, #2 + .if \avg +vld1.8 {q9}, [r0,:128] +vrhadd.u8 q15, q15, q9 + .endif +vst1.64 {q15},[r0,:128], r2 + bx lr .endm @@ -228,6 +280,7 @@ endfunc .endm .macro pixels8_y2 rnd=1, avg=0 +sub r3, r3, #2 vld1.64 {d0}, [r1], r2 vld1.64 {d1}, [r1], r2 1: subsr3, r3, #2 @@ -246,10 +299,24 @@ endfunc vst1.64 {d4}, [r0,:64], r2 vst1.64 {d5}, [r0,:64], r2 bne 1b + +avg d4, d0, d1 +vld1.64 {d0}, [r1], r2 +avg d5, d0, d1 + .if \avg +vld1.8 {d2}, [r0,:64], r2 +vld1.8 {d3}, [r0,:64] +vrhadd.u8 q2, q2, q1 +sub r0, r0, r2 + .endif +vst1.64 {d4}, [r0,:64], r2 +vst1.64 {d5}, [r0,:64], r2 + bx lr .endm .macro pixels8_xy2 rnd=1, avg=0 +sub r3, r3, #2 vld1.64 {q0}, [r1], r2 vld1.64 {q1}, [r1], r2 .ifeq \rnd @@ -291,6 +358,31 @@ endfunc vaddl.u8q9, d2, d6 vst1.64 {d7}, [r0,:64], r2 bgt 1b + +vld1.64 {q0}, [r1], r2 +vadd.u16q10, q8, q9 +vext.8 d4, d0, d1, #1 + .ifeq \rnd +vadd.u16q10, q10, q11 + .endif +vaddl.u8q8, d0, d4 +shrnd5, q10, #2 +vadd.u16q10, q8, q9 + .if \avg +vld1.8 {d7}, [r0,:64] +vrhadd.u8 d5, d5, d7 + .endif + .ifeq \rnd +vadd.u16q10, q10, q11 + .endif +vst1.64 {d5}, [r0,:64], r2 +shrnd7, q10, #2 + .if \avg +vld1.8 {d5}, [r0,:64] +vrhadd.u8 d7, d7, d5 + .endif +vst1.64 {d7}, [r0,:64], r2 + bx lr .endm -- 2.0.4 ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
[libav-devel] [PATCH 3/3] arm/neon: dsputil: use correct size specifiers on vld1/vst1
From: Mans Rullgard m...@mansr.com Change the size specifiers to match the actual element sizes of the data. This makes no practical difference with strict alignment checking disabled (the default) other than somewhat documenting the code. With strict alignment checking on, it avoids trapping the unaligned loads. Signed-off-by: Mans Rullgard m...@mansr.com --- libavcodec/arm/dsputil_neon.S | 294 +- 1 file changed, 147 insertions(+), 147 deletions(-) diff --git a/libavcodec/arm/dsputil_neon.S b/libavcodec/arm/dsputil_neon.S index 21b1aba..b59c901 100644 --- a/libavcodec/arm/dsputil_neon.S +++ b/libavcodec/arm/dsputil_neon.S @@ -44,22 +44,22 @@ endfunc .if \avg mov r12, r0 .endif -1: vld1.64 {q0}, [r1], r2 -vld1.64 {q1}, [r1], r2 -vld1.64 {q2}, [r1], r2 +1: vld1.8 {q0}, [r1], r2 +vld1.8 {q1}, [r1], r2 +vld1.8 {q2}, [r1], r2 pld [r1, r2, lsl #2] -vld1.64 {q3}, [r1], r2 +vld1.8 {q3}, [r1], r2 pld [r1] pld [r1, r2] pld [r1, r2, lsl #1] .if \avg -vld1.64 {q8}, [r12,:128], r2 +vld1.8 {q8}, [r12,:128], r2 vrhadd.u8 q0, q0, q8 -vld1.64 {q9}, [r12,:128], r2 +vld1.8 {q9}, [r12,:128], r2 vrhadd.u8 q1, q1, q9 -vld1.64 {q10},[r12,:128], r2 +vld1.8 {q10},[r12,:128], r2 vrhadd.u8 q2, q2, q10 -vld1.64 {q11},[r12,:128], r2 +vld1.8 {q11},[r12,:128], r2 vrhadd.u8 q3, q3, q11 .endif subsr3, r3, #4 @@ -72,8 +72,8 @@ endfunc .endm .macro pixels16_x2 rnd=1, avg=0 -1: vld1.64 {d0-d2}, [r1], r2 -vld1.64 {d4-d6}, [r1], r2 +1: vld1.8 {d0-d2}, [r1], r2 +vld1.8 {d4-d6}, [r1], r2 pld [r1] pld [r1, r2] subsr3, r3, #2 @@ -88,21 +88,21 @@ endfunc vrhadd.u8 q2, q2, q3 sub r0, r0, r2 .endif -vst1.64 {q0}, [r0,:128], r2 -vst1.64 {q2}, [r0,:128], r2 +vst1.8 {q0}, [r0,:128], r2 +vst1.8 {q2}, [r0,:128], r2 bne 1b bx lr .endm .macro pixels16_y2 rnd=1, avg=0 sub r3, r3, #2 -vld1.64 {q0}, [r1], r2 -vld1.64 {q1}, [r1], r2 +vld1.8 {q0}, [r1], r2 +vld1.8 {q1}, [r1], r2 1: subsr3, r3, #2 avg q2, q0, q1 -vld1.64 {q0}, [r1], r2 +vld1.8 {q0}, [r1], r2 avg q3, q0, q1 -vld1.64 {q1}, [r1], r2 +vld1.8 {q1}, [r1], r2 pld [r1] pld [r1, r2] .if \avg @@ -112,12 +112,12 @@ endfunc vrhadd.u8 q3, q3, q9 sub r0, r0, r2 .endif -vst1.64 {q2}, [r0,:128], r2 -vst1.64 {q3}, [r0,:128], r2 +vst1.8 {q2}, [r0,:128], r2 +vst1.8 {q3}, [r0,:128], r2 bne 1b avg q2, q0, q1 -vld1.64 {q0}, [r1], r2 +vld1.8 {q0}, [r1], r2 avg q3, q0, q1 .if \avg vld1.8 {q8}, [r0,:128], r2 @@ -126,16 +126,16 @@ endfunc vrhadd.u8 q3, q3, q9 sub r0, r0, r2 .endif -vst1.64 {q2}, [r0,:128], r2 -vst1.64 {q3}, [r0,:128], r2 +vst1.8 {q2}, [r0,:128], r2 +vst1.8 {q3}, [r0,:128], r2 bx lr .endm .macro pixels16_xy2rnd=1, avg=0 sub r3, r3, #2 -vld1.64 {d0-d2}, [r1], r2 -vld1.64 {d4-d6}, [r1], r2 +vld1.8 {d0-d2}, [r1], r2 +vld1.8 {d4-d6}, [r1], r2 NRNDvmov.i16q13, #1 pld [r1] pld [r1, r2] @@ -146,7 +146,7 @@ NRNDvmov.i16q13, #1 vaddl.u8q9, d4, d6 vaddl.u8q11, d5, d7 1: subsr3, r3, #2 -vld1.64 {d0-d2}, [r1], r2 +vld1.8 {d0-d2}, [r1], r2 vadd.u16q12, q8, q9 pld [r1] NRNDvadd.u16q12, q12, q13 @@ -160,9 +160,9 @@ NRNDvadd.u16q1, q1, q13 vrhadd.u8 q14, q14, q8 .endif vaddl.u8q8, d0, d30 -
Re: [libav-devel] Backport Arm NEON avg,put_pixels fixes to 0.8
On 17/08/14 10:07, Janne Grunau wrote: Hi, backports following three commits to 0.8 cbc7d60afa0c5 arm: dsputil: fix overreads in put/avg_pixels functions 2eba6898c96fe arm: dsputil: prettify some conditional instructions in e54e6f25cfa8b arm/neon: dsputil: use correct size specifiers on Only the first is required to fix the reported page faults due to overreads during mpeg2 decoding (source DVD). The second one is there only to keep the history and allows the backport of the third commit without conflicts. The third one mainly fixes a theoretical problem since probably nobody runs a full system with strict alignment checking. Sounds good to me, thanks a lot. lu ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
[libav-devel] [PATCH] lavr: Update the planar check in ff_audio_convert
Leftover from fbc0b8659967ea54a8472b5f795270d38bb085dd. Signed-off-by: Luca Barbato lu_z...@gentoo.org --- libavresample/audio_convert.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavresample/audio_convert.c b/libavresample/audio_convert.c index 11e..ef23912 100644 --- a/libavresample/audio_convert.c +++ b/libavresample/audio_convert.c @@ -345,13 +345,13 @@ int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in) if (ac-apply_map) { ChannelMapInfo *map = ac-avr-ch_map_info; -if (!av_sample_fmt_is_planar(ac-out_fmt)) { +if (!ff_sample_fmt_is_planar(ac-out_fmt, ac-channels)) { av_log(ac-avr, AV_LOG_ERROR, cannot remap packed format during conversion\n); return AVERROR(EINVAL); } if (map-do_remap) { -if (av_sample_fmt_is_planar(ac-in_fmt)) { +if (ff_sample_fmt_is_planar(ac-in_fmt, ac-channels)) { conv_func_flat *convert = use_generic ? ac-conv_flat_generic : ac-conv_flat; -- 1.9.0 ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
[libav-devel] [PATCH] mxf: Support AAC
Update mxf_set_audio_pts to use the container-provided information. The UL is marked as to be changed in the future, but the current samples in the wild do use it. --- Amended as suggested by siretart. libavformat/mxf.c| 1 + libavformat/mxfdec.c | 7 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libavformat/mxf.c b/libavformat/mxf.c index 8f09c61..19ee35f 100644 --- a/libavformat/mxf.c +++ b/libavformat/mxf.c @@ -48,6 +48,7 @@ const MXFCodecUL ff_mxf_codec_uls[] = { { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x31,0x11,0x01 }, 14, AV_CODEC_ID_H264 }, /* H.264/MPEG-4 AVC SPS/PPS in-band */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x01,0x01,0x02,0x02,0x00 }, 15, AV_CODEC_ID_V210 }, /* V210 */ /* SoundEssenceCompression */ +{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x03,0x04,0x02,0x02,0x02,0x03,0x03,0x01,0x00 }, 14,AV_CODEC_ID_AAC }, /* MPEG2 AAC ADTS (legacy) */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x02,0x02,0x01,0x00,0x00,0x00,0x00 }, 13, AV_CODEC_ID_PCM_S16LE }, /* Uncompressed */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x02,0x02,0x01,0x7F,0x00,0x00,0x00 }, 13, AV_CODEC_ID_PCM_S16LE }, { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x07,0x04,0x02,0x02,0x01,0x7E,0x00,0x00,0x00 }, 13, AV_CODEC_ID_PCM_S16BE }, /* From Omneon MXF file */ diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 8f2453e..879e73e 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -972,6 +972,7 @@ static const MXFCodecUL mxf_sound_essence_container_uls[] = { { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x04,0x40,0x01 }, 14, AV_CODEC_ID_MP2 }, /* MPEG-ES Frame wrapped, 0x40 ??? stream id */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x01,0x01,0x01 }, 14, AV_CODEC_ID_PCM_S16LE }, /* D-10 Mapping 50Mbps PAL Extended Template */ { { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0xff,0x4b,0x46,0x41,0x41,0x00,0x0d,0x4d,0x4F }, 14, AV_CODEC_ID_PCM_S16LE }, /* 0001GL00.MXF.A1.mxf_opatom.mxf */ +{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x03,0x04,0x02,0x02,0x02,0x03,0x03,0x01,0x00 }, 14, AV_CODEC_ID_AAC }, /* MPEG2 AAC ADTS (legacy) */ { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE }, }; @@ -1823,6 +1824,7 @@ static const MXFMetadataReadTableEntry mxf_metadata_read_table[] = { { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x47,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* AES3 */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x51,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* MPEG2VideoDescriptor */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x5c,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* VANC/VBI - SMPTE 436M */ +{ { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x5e,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* MPEG2AudioDescriptor */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x3A,0x00 }, mxf_read_track, sizeof(MXFTrack), Track }, /* Static Track */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x3B,0x00 }, mxf_read_track, sizeof(MXFTrack), Track }, /* Generic Track */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x04,0x01,0x02,0x02,0x00,0x00 }, mxf_read_cryptographic_context, sizeof(MXFCryptoContext), CryptoContext }, @@ -2315,7 +2317,10 @@ static int mxf_set_audio_pts(MXFContext *mxf, AVCodecContext *codec, AVPacket *pkt) { MXFTrack *track = mxf-fc-streams[pkt-stream_index]-priv_data; -int64_t bits_per_sample = av_get_bits_per_sample(codec-codec_id); +int64_t bits_per_sample = codec-bits_per_coded_sample; + +if (!bits_per_sample) +bits_per_sample = av_get_bits_per_sample(codec-codec_id); pkt-pts = track-sample_count; -- 1.9.0 ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] lavr: Update the planar check in ff_audio_convert
On Sun, Aug 17, 2014 at 9:32 AM, Luca Barbato lu_z...@gentoo.org wrote: Leftover from fbc0b8659967ea54a8472b5f795270d38bb085dd. Signed-off-by: Luca Barbato lu_z...@gentoo.org --- libavresample/audio_convert.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavresample/audio_convert.c b/libavresample/audio_convert.c index 11e..ef23912 100644 --- a/libavresample/audio_convert.c +++ b/libavresample/audio_convert.c @@ -345,13 +345,13 @@ int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in) if (ac-apply_map) { ChannelMapInfo *map = ac-avr-ch_map_info; -if (!av_sample_fmt_is_planar(ac-out_fmt)) { +if (!ff_sample_fmt_is_planar(ac-out_fmt, ac-channels)) { av_log(ac-avr, AV_LOG_ERROR, cannot remap packed format during conversion\n); return AVERROR(EINVAL); } if (map-do_remap) { -if (av_sample_fmt_is_planar(ac-in_fmt)) { +if (ff_sample_fmt_is_planar(ac-in_fmt, ac-channels)) { conv_func_flat *convert = use_generic ? ac-conv_flat_generic : ac-conv_flat; LGTM after reading fbc0b8659967ea54a8472b5f795270d38bb085dd -- regards, Reinhard ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] mxf: Support AAC
As asked on IRC: 16:17 siretart new comment in your Support AAC LGTM 17:19 lu_zero siretart: can you ok the patch in the ml so I can safely push w/out having retorts later? done. On Sun, Aug 17, 2014 at 10:15 AM, Luca Barbato lu_z...@gentoo.org wrote: Update mxf_set_audio_pts to use the container-provided information. The UL is marked as to be changed in the future, but the current samples in the wild do use it. --- Amended as suggested by siretart. libavformat/mxf.c| 1 + libavformat/mxfdec.c | 7 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libavformat/mxf.c b/libavformat/mxf.c index 8f09c61..19ee35f 100644 --- a/libavformat/mxf.c +++ b/libavformat/mxf.c @@ -48,6 +48,7 @@ const MXFCodecUL ff_mxf_codec_uls[] = { { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x31,0x11,0x01 }, 14, AV_CODEC_ID_H264 }, /* H.264/MPEG-4 AVC SPS/PPS in-band */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x01,0x01,0x02,0x02,0x00 }, 15, AV_CODEC_ID_V210 }, /* V210 */ /* SoundEssenceCompression */ +{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x03,0x04,0x02,0x02,0x02,0x03,0x03,0x01,0x00 }, 14,AV_CODEC_ID_AAC }, /* MPEG2 AAC ADTS (legacy) */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x02,0x02,0x01,0x00,0x00,0x00,0x00 }, 13, AV_CODEC_ID_PCM_S16LE }, /* Uncompressed */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x02,0x02,0x01,0x7F,0x00,0x00,0x00 }, 13, AV_CODEC_ID_PCM_S16LE }, { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x07,0x04,0x02,0x02,0x01,0x7E,0x00,0x00,0x00 }, 13, AV_CODEC_ID_PCM_S16BE }, /* From Omneon MXF file */ diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 8f2453e..879e73e 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -972,6 +972,7 @@ static const MXFCodecUL mxf_sound_essence_container_uls[] = { { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x04,0x40,0x01 }, 14, AV_CODEC_ID_MP2 }, /* MPEG-ES Frame wrapped, 0x40 ??? stream id */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x01,0x01,0x01 }, 14, AV_CODEC_ID_PCM_S16LE }, /* D-10 Mapping 50Mbps PAL Extended Template */ { { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0xff,0x4b,0x46,0x41,0x41,0x00,0x0d,0x4d,0x4F }, 14, AV_CODEC_ID_PCM_S16LE }, /* 0001GL00.MXF.A1.mxf_opatom.mxf */ +{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x03,0x04,0x02,0x02,0x02,0x03,0x03,0x01,0x00 }, 14, AV_CODEC_ID_AAC }, /* MPEG2 AAC ADTS (legacy) */ { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE }, }; @@ -1823,6 +1824,7 @@ static const MXFMetadataReadTableEntry mxf_metadata_read_table[] = { { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x47,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* AES3 */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x51,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* MPEG2VideoDescriptor */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x5c,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* VANC/VBI - SMPTE 436M */ +{ { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x5e,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* MPEG2AudioDescriptor */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x3A,0x00 }, mxf_read_track, sizeof(MXFTrack), Track }, /* Static Track */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x3B,0x00 }, mxf_read_track, sizeof(MXFTrack), Track }, /* Generic Track */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x04,0x01,0x02,0x02,0x00,0x00 }, mxf_read_cryptographic_context, sizeof(MXFCryptoContext), CryptoContext }, @@ -2315,7 +2317,10 @@ static int mxf_set_audio_pts(MXFContext *mxf, AVCodecContext *codec, AVPacket *pkt) { MXFTrack *track = mxf-fc-streams[pkt-stream_index]-priv_data; -int64_t bits_per_sample = av_get_bits_per_sample(codec-codec_id); +int64_t bits_per_sample = codec-bits_per_coded_sample; + +if (!bits_per_sample) +bits_per_sample = av_get_bits_per_sample(codec-codec_id); pkt-pts = track-sample_count; -- 1.9.0 ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel -- regards, Reinhard ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] doc: Add more information in the README
On 13/08/14 19:21, Anton Khirnov wrote: On Tue, 12 Aug 2014 21:26:55 +0200, Luca Barbato lu_z...@gentoo.org wrote: And convert it to Markdown. --- README| 13 + README.md | 40 2 files changed, 41 insertions(+), 12 deletions(-) mode change 100644 = 12 README create mode 100644 README.md diff --git a/README b/README deleted file mode 100644 index afef671..000 --- a/README +++ /dev/null @@ -1,12 +0,0 @@ -Libav README - - -1) Documentation - - -* Read the documentation in the doc/ directory. - -2) Licensing - - -* See the LICENSE file. diff --git a/README b/README new file mode 12 index 000..42061c0 --- /dev/null +++ b/README @@ -0,0 +1 @@ +README.md \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 000..42941c8 --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +Libav += + +Libav is a collection of tools and libraries to process multimedia content +such as Audio, Video, Subtitles and Metadata. I'd say the libraries are MUCH more important than the tools, so they should come first both here and below. Also, useless capitalization. And metadata is hardly the main focus, so it should be something like 'and related metadata' if mentioned at all. Updated as requested, I'd push it in few hours. lu ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH 07/17] dxva2: Undefine _WIN32_WINNT before defining it
On 15/08/14 5:13 PM, Diego Biurrun wrote: This avoids a number of redefinition warnings. --- libavcodec/dxva2_internal.h | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/dxva2_internal.h b/libavcodec/dxva2_internal.h index f35a076..d50c0ff 100644 --- a/libavcodec/dxva2_internal.h +++ b/libavcodec/dxva2_internal.h @@ -23,6 +23,7 @@ #ifndef AVCODEC_DXVA_INTERNAL_H #define AVCODEC_DXVA_INTERNAL_H +#undef _WIN32_WINNT #define _WIN32_WINNT 0x0600 #define COBJMACROS _WIN32_WINNT may already be defined with a value higher than 0x0600 (For example when targeting Win7 or Win8), and this would be forcing it to a lower value. In practice and as far as libavcodec's DXVA2 support goes there's probably no difference, but the more correct thing to do would be check if it's already defined, and then only redefine it if it's 0x0600. For that matter, dxva2_internal.h includes dxva2.h, a header that also tries to define _WIN32_WINNT. It would be best to have all this only in dxva2.h to reduce code duplication. ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
[libav-devel] [PATCH] doc: Update Changelog
--- Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Changelog b/Changelog index ea9d721..a737254 100644 --- a/Changelog +++ b/Changelog @@ -2,6 +2,8 @@ Entries are sorted chronologically from oldest to youngest within each release, releases are sorted from youngest to oldest. version next: +- extended support for MXF files (AAC, badly-closed files) +- libavresample simplified API - libx265 encoder - shuffleplanes filter - replaygain data export -- 1.9.0 ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
[libav-devel] [PATCH] ogg: Provide aliases for Speex, Opus and audio-only ogg
--- configure| 5 + libavformat/Makefile | 4 ++-- libavformat/allformats.c | 3 +++ libavformat/oggenc.c | 53 +++- 4 files changed, 62 insertions(+), 3 deletions(-) diff --git a/configure b/configure index c073f30..a35ccb6 100755 --- a/configure +++ b/configure @@ -1570,6 +1570,7 @@ CONFIG_EXTRA= mpegvideo mpegvideoenc nettle +oggenc pixblockdsp qpeldsp rangecoder @@ -2047,7 +2048,10 @@ mpegtsraw_demuxer_select=mpegts_demuxer mxf_d10_muxer_select=mxf_muxer nut_muxer_select=riffenc nuv_demuxer_select=riffdec +oga_muxer_select=oggenc ogg_demuxer_select=golomb +ogg_muxer_select=oggenc +opus_muxer_select=oggenc psp_muxer_select=mov_muxer rtp_demuxer_select=sdp_demuxer rtpdec_select=asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer @@ -2058,6 +2062,7 @@ sap_muxer_select=rtp_muxer rtp_protocol rtpenc_chain sdp_demuxer_select=rtpdec smoothstreaming_muxer_select=ismv_muxer spdif_muxer_select=aac_parser +spx_muxer_select=oggenc tak_demuxer_select=tak_parser tg2_muxer_select=mov_muxer tgp_muxer_select=mov_muxer diff --git a/libavformat/Makefile b/libavformat/Makefile index a048157..88ebee2 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -23,6 +23,8 @@ OBJS = allformats.o \ url.o\ utils.o \ +OBJS-$(CONFIG_OGGENC)+= oggenc.o\ +vorbiscomment.o OBJS-$(CONFIG_NETWORK) += network.o OBJS-$(CONFIG_RIFFDEC) += riffdec.o OBJS-$(CONFIG_RIFFENC) += riffenc.o @@ -225,8 +227,6 @@ OBJS-$(CONFIG_OGG_DEMUXER) += oggdec.o \ replaygain.o \ vorbiscomment.o \ flac_picture.o -OBJS-$(CONFIG_OGG_MUXER) += oggenc.o \ -vorbiscomment.o OBJS-$(CONFIG_OMA_DEMUXER) += omadec.o pcm.o oma.o OBJS-$(CONFIG_OMA_MUXER) += omaenc.o rawenc.o oma.o id3v2enc.o OBJS-$(CONFIG_PAF_DEMUXER) += paf.o diff --git a/libavformat/allformats.c b/libavformat/allformats.c index 984bb52..bef155f 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -174,8 +174,10 @@ void av_register_all(void) REGISTER_MUXER (NULL, null); REGISTER_MUXDEMUX(NUT, nut); REGISTER_DEMUXER (NUV, nuv); +REGISTER_MUXER (OGA, oga); REGISTER_MUXDEMUX(OGG, ogg); REGISTER_MUXDEMUX(OMA, oma); +REGISTER_MUXER (OPUS, opus); REGISTER_DEMUXER (PAF, paf); REGISTER_MUXDEMUX(PCM_ALAW, pcm_alaw); REGISTER_MUXDEMUX(PCM_MULAW,pcm_mulaw); @@ -226,6 +228,7 @@ void av_register_all(void) REGISTER_DEMUXER (SMUSH,smush); REGISTER_DEMUXER (SOL, sol); REGISTER_MUXDEMUX(SOX, sox); +REGISTER_MUXER (SPX, spx); REGISTER_MUXDEMUX(SPDIF,spdif); REGISTER_MUXDEMUX(SRT, srt); REGISTER_DEMUXER (STR, str); diff --git a/libavformat/oggenc.c b/libavformat/oggenc.c index 19c7759..8ef6765 100644 --- a/libavformat/oggenc.c +++ b/libavformat/oggenc.c @@ -627,11 +627,12 @@ static int ogg_write_trailer(AVFormatContext *s) return 0; } +#if CONFIG_OGG_MUXER AVOutputFormat ff_ogg_muxer = { .name = ogg, .long_name = NULL_IF_CONFIG_SMALL(Ogg), .mime_type = application/ogg, -.extensions= ogg,ogv,spx,opus, +.extensions= ogg,ogv, .priv_data_size= sizeof(OGGContext), .audio_codec = CONFIG_LIBVORBIS_ENCODER ? AV_CODEC_ID_VORBIS : AV_CODEC_ID_FLAC, @@ -642,3 +643,53 @@ AVOutputFormat ff_ogg_muxer = { .flags = AVFMT_TS_NEGATIVE | AVFMT_ALLOW_FLUSH, .priv_class= ogg_muxer_class, }; +#endif + +#if CONFIG_OGA_MUXER +AVOutputFormat ff_oga_muxer = { +.name = oga, +.long_name = NULL_IF_CONFIG_SMALL(Ogg Audio), +.mime_type = audio/ogg, +.extensions= oga, +.priv_data_size= sizeof(OGGContext), +.audio_codec = CONFIG_LIBVORBIS_ENCODER ? + AV_CODEC_ID_VORBIS : AV_CODEC_ID_FLAC, +.write_header = ogg_write_header, +.write_packet = ogg_write_packet, +.write_trailer = ogg_write_trailer, +.flags = AVFMT_TS_NEGATIVE | AVFMT_ALLOW_FLUSH, +.priv_class= ogg_muxer_class, +}; +#endif + +#if CONFIG_SPX_MUXER +AVOutputFormat ff_spx_muxer = { +.name = spx, +.long_name = NULL_IF_CONFIG_SMALL(Ogg Speex), +.mime_type =
[libav-devel] [PATCH] doc/developer: Change wrong term to avoid confusion
--- doc/developer.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/developer.texi b/doc/developer.texi index 1ffdff1..00e2b60 100644 --- a/doc/developer.texi +++ b/doc/developer.texi @@ -68,7 +68,7 @@ case AVLINK_STARTINIT: @end example @item -Braces in function declarations are written on the new line: +Braces in function definitions are written on the new line: @example const char *avfilter_configuration(void) @{ -- 1.8.5.5 ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] doc/developer: Change wrong term to avoid confusion
the tag: in a commit message is a single word, please do not use / with it. doc: is a good tag for all the documentation changes. On 17/08/14 22:19, Gabriel Dume wrote: --- doc/developer.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/developer.texi b/doc/developer.texi index 1ffdff1..00e2b60 100644 --- a/doc/developer.texi +++ b/doc/developer.texi @@ -68,7 +68,7 @@ case AVLINK_STARTINIT: @end example @item -Braces in function declarations are written on the new line: +Braces in function definitions are written on the new line: @example const char *avfilter_configuration(void) @{ Sounds correct. ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] doc/developer: Change wrong term to avoid confusion
On 17/08/14 22:19, Gabriel Dume wrote: --- doc/developer.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/developer.texi b/doc/developer.texi index 1ffdff1..00e2b60 100644 --- a/doc/developer.texi +++ b/doc/developer.texi @@ -68,7 +68,7 @@ case AVLINK_STARTINIT: @end example @item -Braces in function declarations are written on the new line: +Braces in function definitions are written on the new line: @example const char *avfilter_configuration(void) @{ Queued btw. ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
[libav-devel] [PATCH] tiff: return proper error for missing LZMA compression.
The LZMA support was added to tiff 4.0.0. Whle not very common, it's nice to tell the user why the file is not working. Signed-off-by: Diego Elio Pettenò flamee...@flameeyes.eu --- libavcodec/tiff.c | 3 +++ libavcodec/tiff.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c index ca5ec75..3b2fc7d 100644 --- a/libavcodec/tiff.c +++ b/libavcodec/tiff.c @@ -408,6 +408,9 @@ static int tiff_decode_tag(TiffContext *s) case TIFF_NEWJPEG: avpriv_report_missing_feature(s-avctx, JPEG compression); return AVERROR_PATCHWELCOME; +case TIFF_LZMA: +avpriv_report_missing_feature(s-avctx, LZMA compression); +return AVERROR_PATCHWELCOME; default: av_log(s-avctx, AV_LOG_ERROR, Unknown compression method %i\n, s-compr); diff --git a/libavcodec/tiff.h b/libavcodec/tiff.h index 8a3f7f7..c42fa41 100644 --- a/libavcodec/tiff.h +++ b/libavcodec/tiff.h @@ -71,7 +71,8 @@ enum TiffCompr { TIFF_NEWJPEG, TIFF_ADOBE_DEFLATE, TIFF_PACKBITS = 0x8005, -TIFF_DEFLATE = 0x80B2 +TIFF_DEFLATE = 0x80B2, +TIFF_LZMA = 0x886d }; enum TiffTypes { -- 1.8.5.5 ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] tiff: return proper error for missing LZMA compression.
On 17/08/14 23:53, Diego Elio Pettenò wrote: The LZMA support was added to tiff 4.0.0. Whle not very common, it's nice to tell the user why the file is not working. Signed-off-by: Diego Elio Pettenò flamee...@flameeyes.eu --- libavcodec/tiff.c | 3 +++ libavcodec/tiff.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) Ok for me. Is it easy to add or overly complex? lu ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] tiff: return proper error for missing LZMA compression.
On Sun, Aug 17, 2014 at 10:53:27PM +0100, Diego Elio Pettenò wrote: The LZMA support was added to tiff 4.0.0. Whle not very common, it's nice ^ whIle to tell the user why the file is not working. Also what's the versioning? IIRC the last official standard was TIFF 6.0 Signed-off-by: Diego Elio Pettenò flamee...@flameeyes.eu --- libavcodec/tiff.c | 3 +++ libavcodec/tiff.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c index ca5ec75..3b2fc7d 100644 --- a/libavcodec/tiff.c +++ b/libavcodec/tiff.c @@ -408,6 +408,9 @@ static int tiff_decode_tag(TiffContext *s) case TIFF_NEWJPEG: avpriv_report_missing_feature(s-avctx, JPEG compression); return AVERROR_PATCHWELCOME; +case TIFF_LZMA: +avpriv_report_missing_feature(s-avctx, LZMA compression); +return AVERROR_PATCHWELCOME; default: av_log(s-avctx, AV_LOG_ERROR, Unknown compression method %i\n, s-compr); diff --git a/libavcodec/tiff.h b/libavcodec/tiff.h index 8a3f7f7..c42fa41 100644 --- a/libavcodec/tiff.h +++ b/libavcodec/tiff.h @@ -71,7 +71,8 @@ enum TiffCompr { TIFF_NEWJPEG, TIFF_ADOBE_DEFLATE, TIFF_PACKBITS = 0x8005, -TIFF_DEFLATE = 0x80B2 +TIFF_DEFLATE = 0x80B2, +TIFF_LZMA = 0x886d }; enum TiffTypes { -- otherwise probably OK ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel