Compare commits

...

538 Commits

Author SHA1 Message Date
Michael Niedermayer
2c8c55195d Update for 2.4.8
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-30 01:28:28 +02:00
James Almer
e74ad9035f avutil/cpu: add missing check for mmxext to av_force_cpu_flags
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit 1f5d1eed78)
2015-03-28 22:10:57 -03:00
Michael Niedermayer
539172c85b avcodec/msrledec: restructure msrle_decode_pal4() based on the line number instead of the pixel pointer
Fixes out of array access
Fixes: da14e86d8462be6493eab16bc2d40f88/asan_heap-oob_204cfd2_528_cov_340150052_COMPRESS.BMP

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f7e1367f58)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:23 +02:00
Michael Niedermayer
2049d95f2f avcodec/hevc_ps: Check cropping parameters more correctly
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 06c70d4537)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:23 +02:00
Michael Niedermayer
760c384f7d avcodec/dnxhddec: Check that the frame is interlaced before using cur_field
Fixes Ticket4227

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 2c660e34cf)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:23 +02:00
Michael Niedermayer
17e6d249b7 avformat/mov: Disallow ".." in dref unless use_absolute_path is set
as this kind of allows to circumvent it to some extend.
We also could add a separate parameter or value to choose this

Found-by: ramiro
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1e4d0498df)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:23 +02:00
Michael Niedermayer
e0975c31f1 avformat/mov: Check for string truncation in mov_open_dref()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 8003816e16)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:23 +02:00
Michael Niedermayer
e168db3eae avformat/mov: Use sizeof(filename) instead of a literal number
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 21a53dd08d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:23 +02:00
Christophe Gisquet
b9b56ded7d eac3dec: fix scaling
This is the remaining error, the output on the SPX samples,
respectively csi_miami_stereo_128_spx.eac3 and
csi_miami_5.1_256_spx.eac3, goes from:
stddev:    8.71 PSNR: 77.52 MAXDIFF:  235
stddev:24270.51 PSNR: 22.17 MAXDIFF:47166
to:
stddev:    0.12 PSNR:114.12 MAXDIFF:    1
stddev:    0.12 PSNR:114.73 MAXDIFF:    1

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 0c3339f4bd)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:23 +02:00
Christophe Gisquet
691f9dee00 ac3_fixed: fix computation of spx_noise_blend
It was set to 1 instead of sqrt(3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit c4bf3833f4)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:23 +02:00
Christophe Gisquet
40dab45050 ac3_fixed: fix out-of-bound read
Should also improve decoding, but actually doesn't...

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b083440060)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:23 +02:00
Andreas Cadhalpun
f45f3f99a4 ac3dec_fixed: always use the USE_FIXED=1 variant of the AC3DecodeContext
The AC3DecodeContext has a float (USE_FIXED=0) and an integer
(USE_FIXED=1) variant, both of which can be present in the same binary.
This is not only very confusing, but it also breaks horribly, when one
variant is used by code expecting the other.

This currently happens, because eac3dec.c is only compiled for the float
variant, but also used from ac3dec_fixed.c, which uses the integer
variant.

The result is memory corruption, leading to crashes.

So compile eac3dec.c once for each variant and adapt it, so that it
works with the integer variant.

A loss of precission and scaling bug has been fixed by the committer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 7b05b5093e)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
f11afe6bc6 avcodec/012v: redesign main loop
Fixes out of array accesses
Fixes: ffmpeg_012v_crash.ts

Found-by: Thomas Lindroth <thomas.lindroth@gmail.com>
Reviewed-by: Thomas Lindroth <thomas.lindroth@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 48df30d36c)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
8639c37d2b avcodec/012v: Check dimensions more completely
Fixes division by 0

Found-by: Thomas Lindroth <thomas.lindroth@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d3b25383da)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
de2f46c59d asfenc: fix leaking asf->index_ptr on error
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 2c8cff2be4)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
7b3d8ae32d roqvideoenc: set enc->avctx in roq_encode_init
So far it is only set in roq_encode_frame, but it is used in
roq_encode_end to free the coded_frame. This currently segfaults if
roq_encode_frame is not called between roq_encode_init and
roq_encode_end.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit cf82c426fa)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
7700947525 avcodec/options_table: remove extradata_size from the AVOptions table
allowing access to the size but not the extradata itself is not useful
and could lead to potential problems if writing happens through this field

Reviewed-by: Andreas Cadhalpun <andreas.cadhalpun@googlemail.com>
Reviewed-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1f4088b285)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
820b84d065 ffmdec: limit the backward seek to the last resync position
If resyncing leads to the same position as previously, it will again
lead to a resync attempt, resulting in an infinite loop.

Thus don't seek back beyond the last syncpoint.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6b8263b03a)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
443fc85203 ffmdec: make sure the time base is valid
A negative time base can trigger assertions.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4c91d81be2)

Conflicts:

	libavformat/ffmdec.c
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
d81150929d ffmdec: fix infinite loop at EOF
If EOF is reached, while skipping bytes, avio_tell(pb) won't change
anymore, resulting in an infinite loop.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6fa98822eb)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
6a671797d7 avcodec/tiff: move bpp check to after "end:"
This ensures that all current and future code-pathes get bpp checked

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d5e9fc7821)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
23666f0e22 doc: avoid the incorrect phrase 'allow to'
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 10fd7ff814)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
7470003e80 avcodec/opusdec: Fix delayed sample value
Fixes out of array access
Fixes: ffmpeg_opus_crash1.ogg

This solution is likely not optimal in terms of error concealment but
its simple and fixes the out of array access.

Found-by: Thomas Lindroth <thomas.lindroth@gmail.com>
Tested-by: Thomas Lindroth <thomas.lindroth@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6c583e9048)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
ee820d0512 avcodec/opusdec: Clear out pointers per packet
This is safer than to assume that all error pathes cleared them and
nothing will use uncleared pointers.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1ae092587f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
9821cf9e6e avcodec/utils: Align YUV411 by as much as the other YUV variants
Fixes out of array accesses
Fixes: ffmpeg_mjpeg_crash2.avi

Found-by: Thomas Lindroth <thomas.lindroth@gmail.com>
Tested-by: Thomas Lindroth <thomas.lindroth@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e3201c38d5)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Ronald S. Bultje
54d40b7c45 vp9: fix segmentation map retention with threading enabled.
Fixes ticket 4359.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit efff3854f0)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Stefano Sabatini
99de009e97 doc/protocols/tcp: fix units of listen_timeout option value, from microseconds to milliseconds
s->listen_timeout is passed to ff_listen_bind(), which accepts a timeout
value expressed in milliseconds.

The unit was incorrectly set in 1b4da43ce0.
(cherry picked from commit 6db20926c3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Steve Lhomme
2a6f0c7e07 fix VP9 packet decoder returning 0 instead of the used data size
See https://trac.videolan.org/vlc/ticket/14022#comment:6

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4851db80a4)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
a80b38d7d2 avformat/flvenc: check that the codec_tag fits in the available bits
flags is later written with avio_w8 and if it doesn't fit in one byte it
triggers an av_assert2.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e8565d21c2)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
ddffbf720a avcodec/utils: use correct printf specifier in ff_set_sar
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 732c3ebffa)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
d42540499c avutil/imgutils: correctly check for negative SAR components
These could trigger assert failures previously

Found-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 5705dc5276)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
eceea69567 swscale/utils: clear formatConvBuffer on allocation
Fixes use of uninitialized memory
Fixes: asan_heap-oob_35ca682_1474_cov_3230122439_aletrek_tga_16bit.mov

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 007498fc1a)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
2ec6a7a1e0 avformat/bit: only accept the g729 codec and 1 channel
Other codecs/channel numbers are not supported by this muxer.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d0b8640f75)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
6fbd897cab avformat/bit: check that pkt->size is 10 in write_packet
Ohter packet sizes are not supported by this muxer.

This avoids a null pointer dereference of pkt->data.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit eeda2c3de8)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Andreas Cadhalpun
f33a2ea2ee avformat/adxdec: check avctx->channels for invalid values
This avoids a null pointer dereference of pkt->data.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 7faa40af98)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Dyami Caliri
bcbae2d95f Fix buffer_size argument to init_put_bits() in multiple encoders.
Several encoders were multiplying the buffer size by 8, in order to get
a bit size. However, the buffer_size argument is for the byte size of
the buffer. We had experienced crashes encoding prores (Anatoliy) at
size 4096x4096.
(cherry picked from commit 50833c9f7b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
James Cowgill
198aa9fabd mips/acelp_filters: fix incorrect register constraint
Change register constraint on the v variable from = to +. This was causing GCC
to think that the v variable was never read and therefore not initialize it.

This fixes about 20 fate failures on mips64el.

Signed-off-by: James Cowgill <james410@cowgill.org.uk>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b9de1303a6)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
e8a44b8387 avcodec/hevc_ps: Sanity checks for some log2_* values
log2 values which imply numeric overflow are not supported

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 205b2ba3d6)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
ca663f79e9 avcodec/zmbv: Check len before reading in decode_frame()
Fixes out of array read
Fixes: asan_heap-oob_4d4eb0_3994_cov_3169972261_zmbv_15bit.avi

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1f5c7781e6)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:22 +02:00
Michael Niedermayer
ba59d92128 avcodec/h264: Only reinit quant tables if a new PPS is allowed
Fixes null pointer dereference
Fixes: signal_sigsegv_3042097_3007_cov_1741463594_non_monotone_timestamps1.mkv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit c23a0e77dd)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
4954306228 avcodec/snowdec: Fix ref value check
Fixes integer overflow and out of array read.
Fixes: signal_sigsegv_24169e6_3445_cov_3778346427_snow_chroma_bug.avi

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 8f4cbf9402)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
2dde6d5d36 swscale/utils: More carefully merge and clear coefficients outside the input
Fixes out of array read
Fixes: asan_heap-oob_35ca682_1474_cov_3230122439_aletrek_tga_16bit.mov

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1895d414aa)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
9dc6868155 avcodec/a64multienc: Assert that the Packet size does not grow
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 29bbc1be48)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
35a79bdf7d avcodec/a64multienc: simplify frame handling code
This also fixes a memleak

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4da351ff0c)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Andreas Cadhalpun
37941c03b7 avcodec/a64multienc: fix use of uninitialized values in to_meta_with_crop
Averaging over 2 pixels doesn't work correctly for the last pixel, because the
rest of the buffer is not initialized.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 87513d6545)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Andreas Cadhalpun
584d90b277 avcodec/a64multienc: initialize mc_meta_charset to zero
This fixes the use of uninitialized values in avpriv_do_elbg.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit ab759f8f4a)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
acfe143736 avcodec/a64multienc: don't set incorrect packet size
This fixes invalid reads of the packet buffer in av_dup_packet

Based on patch by Andreas Cadhalpun <andreas.cadhalpun@googlemail.com>

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d96142e9af)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Andreas Cadhalpun
3167bba15e avcodec/a64multienc: use av_frame_ref instead of copying the frame
This fixes freeing the frame buffer twice on cleanup leading to a crash.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 39e4ed7c1d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
88c06ca251 avcodec/x86/mlpdsp_init: Simplify mlp_filter_channel_x86()
Based on patch by Francisco Blas Izquierdo Riera
Commit message partly taken from carl

fixes a compilation
error in mlpdsp_init.c with -fstack-check and some gcc compilers (I
reproduced the issue with gcc 4.7.3) by simplifying the code.

See also https://bugs.gentoo.org/show_bug.cgi?id=471756

$ make libavcodec/x86/mlpdsp_init.o
libavcodec/x86/mlpdsp_init.c: In function ‘mlp_filter_channel_x86’:
libavcodec/x86/mlpdsp_init.c:142:5: error: can’t find a register in
class ‘GENERAL_REGS’ while reloading ‘asm’
libavcodec/x86/mlpdsp_init.c:142:5: error: ‘asm’ operand has impossible
constraints

4551 -> 4509 dezicycles

Reviewed-by: Ramiro Polla <ramiro.polla@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 03f39fbb2a)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
093e3f4d5b avformat/omadec: Use 64bit for ret to avoid overflow
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 0f55bc29d4)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
5169df2122 avformat/vqf: Use 64bit for ret to avoid overflow
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit cb08687180)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
8f65bedbaf avformat/wtvdec: Use 64bit for ret to avoid overflow
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d44e0d8b93)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
81ee3385ee avformat/mvdec: Use 64bit for ret to avoid overflow
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 26c0cc154e)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
2046275aaf avformat/gxf: Use 64bit for res to avoid overflow
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 12987f8900)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
1ee7f2d77e avformat/idcin: Use 64bit for ret to avoid overflow
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d1923d15a3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:34:21 +02:00
Michael Niedermayer
51b0d7675c Merge commit 'b7c8a1fbbd0b6ac0b096ef0402dee440ff27ecb7' into release/2.4
* commit 'b7c8a1fbbd0b6ac0b096ef0402dee440ff27ecb7':
  webp: ensure that each transform is only used once

See: c089e720c1
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:28:56 +02:00
Andreas Cadhalpun
53fa0d370c webp: ensure that each transform is only used once
According to the WebP Lossless Bitstream Specification
"each transform is allowed to be used only once".

If a transform is more than once this can lead to memory
corruption.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit c089e720c1)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:28:38 +02:00
Michael Niedermayer
8e7eb26875 Merge commit '9cef65434e5e5ffbd4a856ce7ae9c067dec039b7' into release/2.4
* commit '9cef65434e5e5ffbd4a856ce7ae9c067dec039b7':
  h264_ps: properly check cropping parameters against overflow

Conflicts:
	libavcodec/h264_ps.c

See: c3bd306e78
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:27:07 +02:00
Michael Niedermayer
6e835eb2dd Merge commit 'a529f6648ed450f7e846a0e704a0a3260aaa4b62' into release/2.4
* commit 'a529f6648ed450f7e846a0e704a0a3260aaa4b62':
  hevc: zero the correct variables on invalid crop parameters

Conflicts:
	libavcodec/hevc_ps.c

See: 7bce99216f
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:16:54 +02:00
Michael Niedermayer
7bce99216f avcodec/hevc_ps: More complete window reset
Fixes out of array read
Fixes: signal_sigsegv_35bcf26_471_cov_2806540268_CAINIT_A_SHARP_4.bit
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 57e5812198)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:16:27 +02:00
Michael Niedermayer
4bc7996dcb Merge commit 'a219add4e8e2d3192d99d6c6efe97ec7c429c5ad' into release/2.4
* commit 'a219add4e8e2d3192d99d6c6efe97ec7c429c5ad':
  hevc: make the crop sizes unsigned

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-29 03:13:23 +02:00
Ronald S. Bultje
f3b8cd7481 vp9: make above buffer pointer 32-byte aligned.
Fixes ticket #4383

Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit 1fd1f58bd6)
2015-03-21 14:27:37 -03:00
Andreas Cadhalpun
b7c8a1fbbd webp: ensure that each transform is only used once
According to the WebP Lossless Bitstream Specification
"each transform is allowed to be used only once".

If a transform is more than once this can lead to memory
corruption.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
(cherry picked from commit 30e6abd1a8)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-03-21 09:45:30 +01:00
Anton Khirnov
9cef65434e h264_ps: properly check cropping parameters against overflow
CC: libav-stable@libav.org
(cherry picked from commit d8a45d2d49)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-03-21 09:45:20 +01:00
Anton Khirnov
a529f6648e hevc: zero the correct variables on invalid crop parameters
It's the output_window that is applied to the output frame, not
pic_conf_win

(cherry picked from commit 5127c00b97)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-03-21 09:45:19 +01:00
Anton Khirnov
a219add4e8 hevc: make the crop sizes unsigned
(cherry picked from commit c929659bdd)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-03-21 09:45:18 +01:00
Michael Niedermayer
491c4bbb38 Revert "avutil/opencl: is_compiled flag not being cleared in av_opencl_uninit"
Fixed build with opencl enabled
Found-by:  WJ Liu

This reverts commit 0f2359b869.

(cherry picked from commit ebd59d271c)
2015-03-09 14:32:51 -03:00
Michael Niedermayer
6bf31ae3f9 Merge commit '00abc0080d2f5f179f18534713659ce79b22e647' into release/2.4
* commit '00abc0080d2f5f179f18534713659ce79b22e647':
  doc: More changelog updates for v11.3

Conflicts:
	Changelog

not merged

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 11:41:49 +01:00
Reinhard Tartler
00abc0080d doc: More changelog updates for v11.3 2015-03-08 21:51:11 -04:00
Michael Niedermayer
2f323df833 Merge commit '3a417a86b330b7c1acf9db4f729be7d619caaded' into release/2.4
* commit '3a417a86b330b7c1acf9db4f729be7d619caaded':
  utvideodec: Handle slice_height being zero

See: 3881606240
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 01:52:41 +01:00
Michael Niedermayer
cda143aaa4 Merge commit 'a73b2c288e3dace6e054a5b48640978be1d5df84' into release/2.4
* commit 'a73b2c288e3dace6e054a5b48640978be1d5df84':
  adxdec: set avctx->channels in adx_read_header

See: 72f83ad277
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 01:38:56 +01:00
Andreas Cadhalpun
72f83ad277 avformat/adxdec: set avctx->channels in adx_read_header
It is used in adx_read_packet, which currently depends on the decoder/parser setting this value between reading the file header and demuxing the first packet.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 64ea4a0598)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 01:37:48 +01:00
Michael Niedermayer
20655dd2ec Merge commit '2ef2f60b4f0308d1c871091c9c1a9641d14ec585' into release/2.4
* commit '2ef2f60b4f0308d1c871091c9c1a9641d14ec585':
  rmenc: limit packet size

Conflicts:
	libavformat/rmenc.c

See: 73ca672fb6
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 01:36:01 +01:00
Andreas Cadhalpun
73ca672fb6 avformat/rm: limit packet size
The chunk size is limited to 0xFFFF (written by avio_wb16), so make
sure that the packet size is not too large.

Such large frames need to be split into slices smaller than 64 kB, but
that is currently supported neither by the rv10/rv20 encoders nor the rm
muxer.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>

See Ticket244

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 08728f400b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 01:33:24 +01:00
Michael Niedermayer
c99b8d0cd2 Merge commit '905172d75c9cfd93c757b09fa4b8afa0e926a13c' into release/2.4
* commit '905172d75c9cfd93c757b09fa4b8afa0e926a13c':
  webp: validate the distance prefix code

See: 897a51f47b
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 01:26:09 +01:00
Andreas Cadhalpun
897a51f47b avcodec/webp: validate the distance prefix code
According to the WebP Lossless Bitstream Specification the highest
allowed value for a prefix code is 39.

If prefix_code is too large, the calculated extra_bits has an invalid
value and triggers an assertion in get_bits.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 5de2dab12b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 01:24:24 +01:00
Michael Niedermayer
f2a84d0433 Merge commit '8aee35acb1b40e51a4fc8d7f7c561088e25d6d2e' into release/2.4
* commit '8aee35acb1b40e51a4fc8d7f7c561088e25d6d2e':
  rv10: check size of s->mb_width * s->mb_height

Conflicts:
	libavcodec/rv10enc.c

See: d08db138e2
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 01:23:24 +01:00
Andreas Cadhalpun
d08db138e2 avcodec/rv10: check size of s->mb_width * s->mb_height
If it doesn't fit into 12 bits it triggers an assertion.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 2578a54618)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 01:22:01 +01:00
Michael Niedermayer
5bd9c540d6 Merge commit 'e818da77240146b36d6669b1c4e0565239dc55d3' into release/2.4
* commit 'e818da77240146b36d6669b1c4e0565239dc55d3':
  eamad: check for out of bounds read

Conflicts:
	libavcodec/eamad.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 01:18:06 +01:00
Michael Niedermayer
3a417a86b3 utvideodec: Handle slice_height being zero
Fixes out of array accesses.

CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Bug-Id: CVE-2014-9604
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
(cherry picked from commit 0ce3a0f9d9)
2015-03-09 00:51:48 +01:00
Michael Niedermayer
bb2a5ea2cf Merge commit '2c63081b48d98f3a0d0bed7b0ec3c0347b99144c' into release/2.4
* commit '2c63081b48d98f3a0d0bed7b0ec3c0347b99144c':
  mdec: check for out of bounds read

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 00:44:49 +01:00
Michael Niedermayer
1f44b09d58 Merge commit '4070e02dfcf8c7d871b4a41d8b591ec0c130c70a' into release/2.4
* commit '4070e02dfcf8c7d871b4a41d8b591ec0c130c70a':
  configure: Properly fail when libcdio/cdparanoia is not found

Conflicts:
	configure

See: f514b5dff7
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 00:44:21 +01:00
Michael Niedermayer
16c838b69a Merge commit '77eb3d9a60a9c2bb6d87c960ac186af242bbcc9e' into release/2.4
* commit '77eb3d9a60a9c2bb6d87c960ac186af242bbcc9e':
  tiff: Check that there is no aliasing in pixel format selection

Conflicts:
	libavcodec/tiff.c

See: e1c0cfaa41
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 00:43:26 +01:00
Michael Niedermayer
e2c82f7d93 Merge commit 'f3dafb63d05896aacf84caf0e4c81c216476d60e' into release/2.4
* commit 'f3dafb63d05896aacf84caf0e4c81c216476d60e':
  aic: Fix decoding files with odd dimensions

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 00:31:23 +01:00
Michael Niedermayer
d208977cd1 Merge commit '7136a0bf88f31bb8d40a3bbd251963706fb14578' into release/2.4
* commit '7136a0bf88f31bb8d40a3bbd251963706fb14578':
  vorbis: Check the vlc value in setup_classifs

Conflicts:
	libavcodec/vorbisdec.c

See: ae038c0914
See: 709cae2bcb
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 00:27:53 +01:00
Michael Niedermayer
0abd926d64 Merge commit '450b02307cb631f501793b52b98b610c3a54378b' into release/2.4
* commit '450b02307cb631f501793b52b98b610c3a54378b':
  arm: Suppress tags about used cpu arch and extensions

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 00:26:52 +01:00
Michael Niedermayer
61b5dee49e Merge commit 'fc3c1156e361202ab97ad63ffb4dacc416906d33' into release/2.4
* commit 'fc3c1156e361202ab97ad63ffb4dacc416906d33':
  doc: Update changelog for v11.3

Conflicts:
	Changelog

Not merged, the changelog is not correct for FFmpeg

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 00:16:15 +01:00
Michael Niedermayer
d8f6c5a79c Merge commit '7c1fe31617699ddefe6b0f39f16e7c3d79e998e2' into release/2.4
* commit '7c1fe31617699ddefe6b0f39f16e7c3d79e998e2':
  Prepare for 11.3 Release

Conflicts:
	RELEASE

Not merged

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 00:14:42 +01:00
Michael Niedermayer
d4afc388e3 Merge commit 'cf3523c6e7dde33a513e003639d5a8c0b7f3a49d' into release/2.4
* commit 'cf3523c6e7dde33a513e003639d5a8c0b7f3a49d':
  prores: Extend the padding check to 16bit

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 00:10:43 +01:00
Andreas Cadhalpun
a73b2c288e adxdec: set avctx->channels in adx_read_header
It is used in adx_read_packet, which currently depends on the
decoder/parser setting this value between reading the file header and
demuxing the first packet.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-03-08 19:34:38 +00:00
Andreas Cadhalpun
2ef2f60b4f rmenc: limit packet size
The chunk size is limited to UINT16_MAX (written by avio_wb16), so make
sure that the packet size is not too large.

Such large frames need to be split into slices smaller than 64 kB, but
that is currently supported neither by the rv10/rv20 encoders nor the rm
muxer.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-03-08 19:21:55 +00:00
Andreas Cadhalpun
905172d75c webp: validate the distance prefix code
According to the WebP Lossless Bitstream Specification the highest
allowed value for a prefix code is 39.

If prefix_code is too large, the calculated extra_bits has an invalid
value and triggers an assertion in get_bits.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-03-08 19:21:49 +00:00
Andreas Cadhalpun
8aee35acb1 rv10: check size of s->mb_width * s->mb_height
If it doesn't fit into 12 bits it triggers an assertion.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-03-08 19:21:41 +00:00
Federico Tomassetti
e818da7724 eamad: check for out of bounds read
Bug-Id: CID 1257500
CC: libav-stable@libav.org

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-03-08 19:19:55 +00:00
Federico Tomassetti
2c63081b48 mdec: check for out of bounds read
Bug-Id: CID 1257501
CC: libav-stable@libav.org

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-03-08 19:19:49 +00:00
Vittorio Giovara
4070e02dfc configure: Properly fail when libcdio/cdparanoia is not found 2015-03-08 19:19:39 +00:00
Anton Khirnov
77eb3d9a60 tiff: Check that there is no aliasing in pixel format selection
Fixes possible issues with unexpected bpp/bppcount values.

CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Bug-Id: CVE-2014-8544
(cherry picked from commit ae5e1f3d66)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-03-08 19:16:16 +01:00
Vittorio Giovara
f3dafb63d0 aic: Fix decoding files with odd dimensions
Normally the aic decoder finds the proper slice combination (multiple of
some number less than 32) but in case of odd width, it resorts to the
default values, which were actually swapped.
The number of slices is modified to account for such odd width cases.

CC: libav-stable@libav.org
(cherry picked from commit e878ec0d47)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-03-08 17:27:53 +01:00
Luca Barbato
7136a0bf88 vorbis: Check the vlc value in setup_classifs
The valid returned values are always at most 11bit.
Remove the previous check that assumed larger values plausible and
use a signed integer to check get_vlc2 return values.

CC: libav-stable@libav.org
(cherry picked from commit 0025f7408a)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-03-08 17:24:50 +01:00
Martin Storsjö
450b02307c arm: Suppress tags about used cpu arch and extensions
When all the codepaths using manually set .arch/.fpu code is
behind runtime detection, the elf attributes should be suppressed.

This allows tools to know that the final built binary doesn't
strictly require these extensions.

Signed-off-by: Martin Storsjö <martin@martin.st>
(cherry picked from commit dcae2e32f7
and b77e335e44)
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-08 18:11:36 +02:00
Reinhard Tartler
fc3c1156e3 doc: Update changelog for v11.3 2015-03-08 11:12:14 -04:00
Reinhard Tartler
7c1fe31617 Prepare for 11.3 Release 2015-03-08 11:06:15 -04:00
Srikanth G
7071b8192d avutil/opencl: is_compiled flag not being cleared in av_opencl_uninit
When OpenCL kernels are compiled, is_compiled flag is being set for each
kernel. But, in opencl uninit, this flag is not being cleared.
This causes an error when an OpenCL kernel is tried on different OpenCL
devices on same platform.

Here is the patch with a fix

Reviewed-by; Wei Gao <highgod0401@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>

(cherry picked from commit 0f2359b869)
2015-03-06 17:28:03 -03:00
Luca Barbato
cf3523c6e7 prores: Extend the padding check to 16bit
Some files produced by the official encoder have up to 16bit of
padding instead of the expected padding to the byte.

Use a self-explanatory macro instead of a simple number.

CC: libav-stable@libav.org

(cherry picked from commit dbc1163b20)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-03-02 15:34:29 +01:00
Michael Niedermayer
d04bfdf0f7 Merge commit 'e10028431d5cd90db7b2a4b0d16721bb1a6d75e3' into release/2.4
* commit 'e10028431d5cd90db7b2a4b0d16721bb1a6d75e3':
  icecast: Do not use chunked post

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-28 19:19:52 +01:00
Michael Niedermayer
05c4b50216 Merge commit '4cd54b2f976738682cdf8a38a1719b8bba1a018c' into release/2.4
* commit '4cd54b2f976738682cdf8a38a1719b8bba1a018c':
  img2dec: correctly use the parsed value from -start_number

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-28 19:19:03 +01:00
Michael Niedermayer
7ca10906b4 Merge commit '07db7a0dd8239e255c08800162eb45b82c2c49fe' into release/2.4
* commit '07db7a0dd8239e255c08800162eb45b82c2c49fe':
  h264_cabac: Break infinite loops

Conflicts:
	libavcodec/h264_cabac.c

See: cdf0877bc3
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-28 19:18:24 +01:00
Michael Niedermayer
76848048c7 Merge commit '2d1309c3528f89bfafe1298badf39fe7a1be0542' into release/2.4
* commit '2d1309c3528f89bfafe1298badf39fe7a1be0542':
  hevc_deblock: Fix compilation with nasm

See: c75fdee747
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-28 19:06:00 +01:00
Michael Niedermayer
1172107d57 Merge commit '2686dab45eec54f99866413153aa0b36381e48be' into release/2.4
* commit '2686dab45eec54f99866413153aa0b36381e48be':
  h264: initialize H264Context.avctx in init_thread_copy

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-28 19:05:14 +01:00
Michael Niedermayer
a22079b819 Merge commit '06d433366c02ab81a1aaad33d32934b4180d354b' into release/2.4
* commit '06d433366c02ab81a1aaad33d32934b4180d354b':
  h264: Do not share rbsp_buffer across threads

Conflicts:
	libavcodec/h264.c

See: ecbf838c7d
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-28 19:04:42 +01:00
Michael Niedermayer
a8eb02da80 Merge commit '1dbfaa34e615606cb3f1a3ecabb117e354459edc' into release/2.4
* commit '1dbfaa34e615606cb3f1a3ecabb117e354459edc':
  h264: only ref cur_pic in update_thread_context if it is initialized

Conflicts:
	libavcodec/h264_slice.c

See: 0fc01ae33c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-28 19:03:51 +01:00
Mark McGough
e10028431d icecast: Do not use chunked post
Icecast uses HTTP 1.0 while Libav uses HTTP 1.1 and enables by
default chunked post.

Icecast actually forwards the HTTP chunk headers to the listener
as part of the media stream (without the chunk encoding HTTP headers)
causing the players to lose sync.

Disabling the option is enough to feed icecast properly.

(cherry picked from commit 76c70e33d2)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-02-28 15:04:30 +01:00
Vittorio Giovara
4cd54b2f97 img2dec: correctly use the parsed value from -start_number
Previously the image sequence was always starting from the minimum
number rather than the requested one.

CC: libav-stable@libav.org
2015-02-22 23:51:15 +00:00
Michael Niedermayer
07db7a0dd8 h264_cabac: Break infinite loops
This fixes out of array reads and/or infinite loops.

30 is the maximum number of bits that can be read into
coeff_abs below.

CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-02-22 23:49:34 +00:00
Carl Eugen Hoyos
2d1309c352 hevc_deblock: Fix compilation with nasm
CC: libav-stable@libav.org
Bug-Id: 795
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-02-22 23:46:55 +00:00
Anton Khirnov
2686dab45e h264: initialize H264Context.avctx in init_thread_copy
This prevents using a wrong (first thread's) AVCodecContext if decoding
a frame in the first pass over all threads fails.

(cherry picked from commit a06b0b1295)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-02-21 09:35:17 +01:00
Michael Niedermayer
06d433366c h264: Do not share rbsp_buffer across threads
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>

CC: libav-stable@libav.org
(cherry picked from commit 61928b68dc)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-02-21 09:34:48 +01:00
Anton Khirnov
1dbfaa34e6 h264: only ref cur_pic in update_thread_context if it is initialized
It may be empty if the previous thread's decode call did not contain a
valid frame.

(cherry picked from commit 0dea4c77cc)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-02-21 09:34:17 +01:00
Clément Bœsch
dbda574694 avcodec/gif: fix off by one in column offsetting finding
(cherry picked from commit f9240ec01a)
2015-02-16 18:08:45 +01:00
James Almer
3c63503792 avutil/opencl: don't include config.h
It's not an installed header.

Tested-by: Thilo Borgmann <thilo.borgmann@mail.de>
Tested-by: Wei Gao <highgod0401@gmail.com>
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit 3aaff80348)
2015-02-14 02:21:19 -03:00
James Almer
a78b7c504a x86/swr: add missing alignment check to pack_6ch functions
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit 5f14f9e984)
2015-02-14 02:21:14 -03:00
Michael Niedermayer
d66d5d6188 Update for 2.4.7
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 21:18:42 +01:00
Michael Niedermayer
cb7d72ed18 avcodec/flac_parser: fix handling EOF if no headers are found
Fixes assertion failure
Fixes Ticket4269

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit c4d85fc23c)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:09 +01:00
Michael Niedermayer
74c7273b5d avfilter/vf_framepack: Check and update frame_rate
The frame_rate update was missing leaving the output frame rate
wrong.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a46a23d30f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:09 +01:00
Michael Niedermayer
416501da1a avdevice: Use av_format_get_control_message_cb()
This is required as the location of this field could change and is
specified in libavformat not avdevice

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit ba97cf2c45)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:09 +01:00
Michael Niedermayer
43924a8e99 avcodec/hevc: Fix handling of skipped_bytes() reallocation failures
Fixes CID1260704

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e172f5e53a)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:09 +01:00
wm4
d705125b94 qpeg: avoid pointless invalid memcpy()
If refdata was NULL, the memcpy() ended up copying the same memory
block onto itself, which is not only pointless, but also undefined
behavior.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 921706691a)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:09 +01:00
Michael Niedermayer
1a263f0dd9 avcodec/arm/videodsp_armv5te: Fix linking failure with "g++ -shared -D__STDC_CONSTANT_MACROS -o test.so ... libavcodec.a"
Tested-by: Andreas Haupt
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit cab6302534)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:09 +01:00
Michael Niedermayer
492818d724 avcodec/mjpegdec: Skip blocks which are outside the visible area
Fixes out of array accesses
Fixes: ffmpeg_mjpeg_crash.avi

Found-by: Thomas Lindroth <thomas.lindroth@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 08509c8f86)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Carl Eugen Hoyos
ca98c016cd lavc/aarch64: Do not use the neon horizontal chroma loop filter for H.264 4:2:2.
(cherry picked from commit 4faea46bd9)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
6005f375aa avcodec/h264_slice: assert that reinit does not occur after the first slice
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 2fd9ce92af)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
4d5beea7a1 avcodec/h264_slice: ignore SAR changes in slices after the first
Fixes race condition and null pointer dereference
Fixes: signal_sigsegv_1472ac3_468_cov_2915641226_CABACI3_Sony_B.jsv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 38d5241b7f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
2073ab266e avcodec/h264_slice: Check picture structure before setting the related fields
This might fix a hypothetical race condition

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f111831ed6)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
7b213e88b5 avcodec/h264_slice: Do not change frame_num after the first slice
Fixes potential race condition
Fixes: signal_sigsegv_1472ac3_468_cov_2915641226_CABACI3_Sony_B.jsv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f906982c94)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
b250375e77 avutil/opt: Fix type used to access AV_OPT_TYPE_SAMPLE_FMT
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1750b45cdf)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
1cc419eae8 avutil/opt: Fix types used to access AV_OPT_TYPE_PIXEL_FMT
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a0640e6346)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
9dc8f44829 avcodec/h264: Be more strict on rejecting pps/sps changes
Fixes race condition
Fixes: signal_sigsegv_1472ac3_468_cov_2915641226_CABACI3_Sony_B.jsv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6fafc62b0b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
724c79276a avcodec/h264: Be more strict on rejecting pps_id changes
Fixes race condition
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 31cc9c04ca)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
3e46e3a33c avcodec/h264_ps: More completely check the bit depths
Fixes out of array read
Fixes: asan_static-oob_30328b6_719_cov_3325483287_H264_artifacts_motion.h264

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 69aa79365c)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
0c125519ec avformat/thp: Check av_get_packet() for failure not only for partial output
Fixes null pointer dereference
Fixes: signal_sigsegv_db2c1f_3108_cov_163322880_pikmin2_opening1_partial.thp

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f2579dbb4b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
076b98c9b7 swscale/utils: Limit filter shifting so as not to read from prior the array
Fixes out of array read
Fixes: asan_heap-oob_1fb2f9b_3780_cov_3984375136_usf.mkv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 692b22626e)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
8413ddcd39 avcodec/mpegvideo_motion: Fix gmc chroma dimensions
Fixes integer overflow and out of array read
Fixes: asan_heap-oob_1fb2f9b_3780_cov_3984375136_usf.mkv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit fd52d2d3d1)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
0882212298 avcodec/mjpegdec: Check number of components for JPEG-LS
Fixes out of array accesses
Fixes: asan_heap-oob_1c1a4ea_1242_cov_2274415971_TESTcmyk.jpg

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit fabbfaa095)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
3531ff8db3 avcodec/mjpegdec: Check escape sequence validity
Fixes assertion failure
Fixes: asan_heap-oob_1c1a4ea_1242_cov_2274415971_TESTcmyk.jpg

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit afa92907f3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
ee8e48d386 avformat/mpc8: Use uint64_t in *_get_v() to avoid undefined behavior
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 05e1619529)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
wm4
600c6ebc7d avformat/mpc8: fix broken pointer math
This could overflow and crash at least on 32 bit systems.

Reviewed-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b737a2c528)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
wm4
2515de3b15 avformat/mpc8: fix hang with fuzzed file
This can lead to an endless loop by seeking back a few bytes after each
attempted chunk read. Assuming negative sizes are always invalid, this
is easy to fix. Other code in this demuxer treats negative sizes as
invalid as well.

Fixes ticket #4262.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 56cc024220)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
wm4
e2e835f017 avformat/tta: fix crash with corrupted files
av_add_index_entry() can fail, for example because the parameters are
invalid, or because memory allocation fails. Check this; it can actually
happen with corrupted files.

The second hunk is just for robustness. Just in case functions like
ff_reduce_index() remove entries. (Not sure if this can actually
happen.)

Fixes ticket #4294.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6a0cd529a3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
a31fdcef55 avcodec/mpegvideo_enc: Fix number suffixes in rc_buffer_size calculation
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4531e2c489)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
8a16b27de9 avcodec/h264_cabac: use int instead of long for mbb_xy
The mb address fits in int

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 592ba6ec10)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
b8546aee84 avformat/omadec: fix number suffix
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f1f7f5903a)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
84e5b314f3 avformat/smacker: Fix number suffix
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 465f3705b1)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
1497f355c7 avformat/matroskadec: Fix number suffixes
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit fc3cdb00d0)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
096fd2698a avcodec/dxtory: Use LL instead of L number suffix
This is probably unneeded and normal int would be fine, but its
safer to use LL and this isnt speed relevant

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b4ad2853c5)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
1ecce1c6a7 swresample/dither: Cleanup number suffixes
The <<31 case needs LL

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit c77cc2c176)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
01b5e61845 avformat/utils: Fix number suffixes in tb_unreliable()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4b15bba2ae)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
05a8114c71 doc/APIchanges: fill in more missing hash values and dates
all values before 2.5 seem to be filled in now

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 8c8ee17e8d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:08 +01:00
Michael Niedermayer
5080ab26d3 doc/APIchanges: fill in and correct some values
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 0d64982828)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:07 +01:00
Michael Niedermayer
2029acb667 doc/APIchanges: Add av_find_best_pix_fmt_of_2() and av_get_pix_fmt_loss()
also add deprecation note for avcodec_get_pix_fmt_loss(), avcodec_find_best_pix_fmt_of_2()

Found-by: wm4
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f7a1c5e4d2)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:07 +01:00
Michael Niedermayer
0a878d0c94 doc/APIchanges: Fill in some more missing hash values
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit bbdd940f36)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:48:07 +01:00
Michael Niedermayer
92595faab9 Merge commit '532c96a2158c04f265d750d54f2f103b8d9fe0ef' into release/2.4
* commit '532c96a2158c04f265d750d54f2f103b8d9fe0ef':
  matroskadec: Fix read-after-free in matroska_read_seek()

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:32:53 +01:00
Michael Niedermayer
9d1e775b89 Merge commit '891de4b27a07b808839b9e873b6a886248c8fd6b' into release/2.4
* commit '891de4b27a07b808839b9e873b6a886248c8fd6b':
  log: Unbreak no-tty support on 256color terminals

Conflicts:
	libavutil/log.c

No change, FFmpeg is not affected by this bug
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 20:30:52 +01:00
Clément Bœsch
2c1d5f43cf avfilter/dctdnoiz: fix slice_h computation
ceilf() can only work if the reminder of the division is not 0.

This fixes memory errors with for instance:
  ffmpeg -f lavfi -i testsrc=s=800x500 -threads 3 -vf dctdnoiz -frames:v 1 -f null -

(cherry picked from commit eb7efaa924)
2015-02-12 20:22:02 +01:00
Xiaohan Wang
532c96a215 matroskadec: Fix read-after-free in matroska_read_seek()
In matroska_read_seek(), |tracks| is assigned at the begining of the
function. However, functions like matroska_parse_cues() could reallocate
the tracks and invalidate |tracks|.

This assigns |tracks| only before using it, so that it will not get
invalidated elsewhere.

Bug-Id: chromium/427266
2015-01-27 14:32:56 +00:00
Luca Barbato
891de4b27a log: Unbreak no-tty support on 256color terminals 2015-01-18 09:47:32 -07:00
Michael Niedermayer
fa1ca88cb6 Merge commit '4039f11ed82d84009b5146f0a563f33ced33e4db' into release/2.4
* commit '4039f11ed82d84009b5146f0a563f33ced33e4db':
  Prepare for 11.2 Release

Conflicts:
	RELEASE

Merge for metadata only as this is not correct for 2.4.*

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 03:56:09 +01:00
Michael Niedermayer
2b95572b10 Merge commit '5f6f2412211609e46d3f3573f4ac4e136534f1d4' into release/2.4
* commit '5f6f2412211609e46d3f3573f4ac4e136534f1d4':
  doc: Update the Changelog for release 11.2

Conflicts:
	Changelog

No change as the changelog is not correct for FFmpeg

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 03:54:58 +01:00
Michael Niedermayer
f5dd1270d9 Merge commit 'ff77fa754bf2d6e7231d2e050babefa9a13d1fec' into release/2.4
* commit 'ff77fa754bf2d6e7231d2e050babefa9a13d1fec':
  vp7: fix checking vp7_feature_value_size()

See: 28f8114bd2
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 03:53:04 +01:00
Michael Niedermayer
6feb72a094 Merge commit '431f57f0467244686ae63a3d06a8cf51f60090ed' into release/2.4
* commit '431f57f0467244686ae63a3d06a8cf51f60090ed':
  libopusenc: prevent an out-of-bounds read by returning early

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 03:27:11 +01:00
Michael Niedermayer
02d979d007 Merge commit '88411b87b4bb3c5820ec232f26ba4a284c11a7f9' into release/2.4
* commit '88411b87b4bb3c5820ec232f26ba4a284c11a7f9':
  display: fix order of operands

Conflicts:
	libavcodec/h264.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 03:22:15 +01:00
Michael Niedermayer
fb62580fb6 Merge commit '3f09d4f6d43468dbc9307bb937516a32287008dc' into release/2.4
* commit '3f09d4f6d43468dbc9307bb937516a32287008dc':
  ffv1: fix out-of-bounds read

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 03:21:35 +01:00
Michael Niedermayer
55c6a482d4 Merge commit '3aba00b1b331461611d32cfd56ebe8334f6d1b93' into release/2.4
* commit '3aba00b1b331461611d32cfd56ebe8334f6d1b93':
  indeo3: check ff_set_dimensions return value

See: 81ed7efbe2
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 03:03:17 +01:00
Michael Niedermayer
faa67e9777 Merge commit '796bd81835ebcb69d40bc87b33f13924a5937a1b' into release/2.4
* commit '796bd81835ebcb69d40bc87b33f13924a5937a1b':
  g2meet: check ff_set_dimensions return value

Conflicts:
	libavcodec/g2meet.c

See: 3af9d8269e
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 03:02:44 +01:00
Michael Niedermayer
98ba288737 Merge commit '9e0a38d32b36fac7fd73bdb93e820ae0b9e03616' into release/2.4
* commit '9e0a38d32b36fac7fd73bdb93e820ae0b9e03616':
  avs: check ff_set_dimensions return value

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:59:01 +01:00
Michael Niedermayer
baef2736b0 Merge commit '39e07ac9fcaf3d412f9a33f427072e8ded032d24' into release/2.4
* commit '39e07ac9fcaf3d412f9a33f427072e8ded032d24':
  ansi: check ff_set_dimensions return value

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:57:48 +01:00
Michael Niedermayer
65b2973a54 Merge commit '21aeae9c679657a1537d0d9127eff280bafc901a' into release/2.4
* commit '21aeae9c679657a1537d0d9127eff280bafc901a':
  svq1enc: check ff_get_buffer return value

Conflicts:
	libavcodec/svq1enc.c

See: 7effc26ba7
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:40:01 +01:00
Michael Niedermayer
a0bad45cd8 Merge commit 'dd195c2c587f44dbc4be7f059ed182f7d83e6cb4' into release/2.4
* commit 'dd195c2c587f44dbc4be7f059ed182f7d83e6cb4':
  on2avc: Fix out of array access

See: ce6a1ff2a1
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:39:31 +01:00
Michael Niedermayer
d48d2f166d Merge commit '29e720da76ca353dbda9f881562902b41c355b77' into release/2.4
* commit '29e720da76ca353dbda9f881562902b41c355b77':
  librtmp: append the correct field to the string

See: d1970929b5
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:38:34 +01:00
Michael Niedermayer
e82140b09b avformat/librtmp: fix swfurl
Found-by: JULIAN GARDNER <joolzg@btinternet.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d1970929b5)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:38:01 +01:00
Michael Niedermayer
4e251b23c3 Merge commit '61fdbf7ff64c0ae1bdd6a8d573092dc6924c1dba' into release/2.4
* commit '61fdbf7ff64c0ae1bdd6a8d573092dc6924c1dba':
  lavc: fix bitshifts amount bigger than the type

Conflicts:
	libavcodec/internal.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:34:25 +01:00
Michael Niedermayer
9b669f9b14 Merge commit '93bf4a74de99300fdc0deb83f672bf12e6f1c262' into release/2.4
* commit '93bf4a74de99300fdc0deb83f672bf12e6f1c262':
  configure: Fix enabling memalign_hack automatically

Conflicts:
	configure

See: 3d93ba5622
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:27:27 +01:00
Michael Niedermayer
099e0178bf Merge commit '527617485914004dc8b772056322ea5ae74c800d' into release/2.4
* commit '527617485914004dc8b772056322ea5ae74c800d':
  lavc: Move the libtwolame encoder registration to the list for external libraries

Conflicts:
	libavcodec/allcodecs.c

See: f5f98727b3
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:26:55 +01:00
Michael Niedermayer
dc84cf241c Merge commit '32701252af65014bb68194bb61d67ec1882ae75d' into release/2.4
* commit '32701252af65014bb68194bb61d67ec1882ae75d':
  xwma: Do not leak on failure path

Conflicts:
	libavformat/xwma.c

See: 375a0c03a9
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:26:14 +01:00
Michael Niedermayer
206ca5c7c8 Merge commit '4d11e4b47db6387077682595d53e9a17b50511cb' into release/2.4
* commit '4d11e4b47db6387077682595d53e9a17b50511cb':
  libtwolame: prevent a NULL pointer dereference

See: a586b3d9b1
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:25:08 +01:00
Paul B Mahol
375c1050bf libavcodec/libtwolame: fix null pointer dereference
Signed-off-by: Paul B Mahol <onemda@gmail.com>
(cherry picked from commit a586b3d9b1)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:24:53 +01:00
Michael Niedermayer
c2b658c0e7 Merge commit '5891fd017aa7bed4c423b8511090cf8641a0afa4' into release/2.4
* commit '5891fd017aa7bed4c423b8511090cf8641a0afa4':
  dvdsubdec: Do not leak on failure path

Conflicts:
	libavcodec/dvdsubdec.c

See: 7fa9f7ef1c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:15:10 +01:00
Michael Niedermayer
f251409adc Merge commit 'e9aeaa6441f6fd18fc951d9737887dcf8a9584c0' into release/2.4
* commit 'e9aeaa6441f6fd18fc951d9737887dcf8a9584c0':
  qdm2: avoid integer overflow

See: ccfd8cffe8
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:14:34 +01:00
Michael Niedermayer
e3ce2a8773 Merge commit 'cce99f72d1b49d3dfee859136eeff3db32553750' into release/2.4
* commit 'cce99f72d1b49d3dfee859136eeff3db32553750':
  mpegenc: prevent a NULL pointer dereference

See: 010adacbe2
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:13:54 +01:00
Michael Niedermayer
4f72aef342 Merge commit 'fbc20c3b85be169389b6c9f8806a311d3dea91ea' into release/2.4
* commit 'fbc20c3b85be169389b6c9f8806a311d3dea91ea':
  aacdec: avoid an out-of-bounds write

Conflicts:
	libavcodec/aacdec.c

See: ba02069a8e
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:13:10 +01:00
Michael Niedermayer
6f14434218 Merge commit '484e015dc8b9983297e9269b406c65084daf4528' into release/2.4
* commit '484e015dc8b9983297e9269b406c65084daf4528':
  cook: Make sure there is enough extradata

See: c9e4554329
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:02:00 +01:00
Michael Niedermayer
49f477071d Merge commit 'b82170336f90d06c645d8252ddeccfc92c2f9ccb' into release/2.4
* commit 'b82170336f90d06c645d8252ddeccfc92c2f9ccb':
  tiffenc: initialize return value

Conflicts:
	libavcodec/tiffenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:00:54 +01:00
Michael Niedermayer
5b965a508c Merge commit '12e1a7013a53ad957c4ff11a3aebc0763024d24b' into release/2.4
* commit '12e1a7013a53ad957c4ff11a3aebc0763024d24b':
  roqaudio: Always use the frame buffer on flush

Conflicts:
	libavcodec/roqaudioenc.c

See: a1af505d66
See: c0b17ea106
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 02:00:21 +01:00
Michael Niedermayer
6cb8e40f43 Merge commit 'e7ee74485b436c34591177c18c8643764a55d516' into release/2.4
* commit 'e7ee74485b436c34591177c18c8643764a55d516':
  hnm4: Use av_image_check_size

See: e23b18321f
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:59:36 +01:00
Michael Niedermayer
b5b36e45b3 Merge commit '4edbb0955e043d698dcc1b5073b6e714f9cc7960' into release/2.4
* commit '4edbb0955e043d698dcc1b5073b6e714f9cc7960':
  png_parser: fix size of chunk_lenght

Conflicts:
	libavcodec/png_parser.c

See: 2ee6dca3b8
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:42:22 +01:00
Michael Niedermayer
f038623d53 Merge commit '2a75c0b1ca16b5480497de0d4c79ef122406a0b5' into release/2.4
* commit '2a75c0b1ca16b5480497de0d4c79ef122406a0b5':
  aacsbr: change order of operation to prevent out of array read

Conflicts:
	libavcodec/aacsbr.c

See: c2340831b8
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:41:30 +01:00
Michael Niedermayer
6aece62b50 Merge commit '34e7f70f9f493f340daab80eba4f12d005ec3e63' into release/2.4
* commit '34e7f70f9f493f340daab80eba4f12d005ec3e63':
  assdec: check av_new_packet return value

Conflicts:
	libavformat/assdec.c

See: 7c9f9685ae
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:40:50 +01:00
Michael Niedermayer
c7831e55b5 Merge commit '242fc6394fecb403bcbd0f652920f2647d0b08ae' into release/2.4
* commit '242fc6394fecb403bcbd0f652920f2647d0b08ae':
  mtv: improve header check and avoid division by zero

Conflicts:
	libavformat/mtv.c

See: 8b9b6332df
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:40:01 +01:00
Michael Niedermayer
6f9bb83dbb Merge commit 'bae05e5326703dad3bfe0ed5b31ba73ee9254515' into release/2.4
* commit 'bae05e5326703dad3bfe0ed5b31ba73ee9254515':
  matroskaenc: write correct Display{Width, Height} in stereo encoding

Conflicts:
	libavformat/matroskaenc.c

See: 6103faaa51
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:33:33 +01:00
Michael Niedermayer
97a55f00d3 Merge commit '26ba78adacd8469fca97c8c833e2e6364b13b7c8' into release/2.4
* commit '26ba78adacd8469fca97c8c833e2e6364b13b7c8':
  mov: fix assigment check

Conflicts:
	libavformat/mov.c

See: af2e5061bb
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:30:15 +01:00
Michael Niedermayer
b6cd6da173 Merge commit '8a982092cc3436c25d68ec15b27277c176ce0061' into release/2.4
* commit '8a982092cc3436c25d68ec15b27277c176ce0061':
  mxfdec: add missing break

See: cbda76c7c6
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:29:31 +01:00
Michael Niedermayer
d3316c3f85 Merge commit '19fc283dbb53a5f7d6658fd4edcfa59b99369b58' into release/2.4
* commit '19fc283dbb53a5f7d6658fd4edcfa59b99369b58':
  lavf: replace rename() with ff_rename()

Conflicts:
	libavformat/hdsenc.c
	libavformat/internal.h

See: 95d2fc6a76
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:22:14 +01:00
Michael Niedermayer
324797eb83 Merge commit 'b9b689550e7531b1a2cc893d2af623e37f266936' into release/2.4
* commit 'b9b689550e7531b1a2cc893d2af623e37f266936':
  img2dec: check av_new_packet return value

Conflicts:
	libavformat/img2dec.c

See: 3f8148911c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:19:51 +01:00
Michael Niedermayer
298f7f1fac Merge commit '7c710c38f6481b892e01d3c1e4781ad160b2935e' into release/2.4
* commit '7c710c38f6481b892e01d3c1e4781ad160b2935e':
  audiointerleave: check av_new_packet return value

Conflicts:
	libavformat/audiointerleave.c

See: 3ca8a23288
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:19:11 +01:00
Michael Niedermayer
fefb152cd9 Merge commit 'a7e79f6a43bdc7e3b164dd78b060f0d5575a0cf0' into release/2.4
* commit 'a7e79f6a43bdc7e3b164dd78b060f0d5575a0cf0':
  avfilter: check filter link validity

Conflicts:
	libavfilter/avfilter.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:11:20 +01:00
Michael Niedermayer
275cd55a0f Merge commit '556a5090f2b0a20fd9998e1a327875f5b0c8d1d5' into release/2.4
* commit '556a5090f2b0a20fd9998e1a327875f5b0c8d1d5':
  mp3dec: fix reading the Xing tag

Conflicts:
	libavformat/mp3dec.c

See: 19ff479f69
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:10:56 +01:00
Michael Niedermayer
749fadaa65 Merge commit '1551602b423755c4ed98c5b7b2c2d6504416726e' into release/2.4
* commit '1551602b423755c4ed98c5b7b2c2d6504416726e':
  nutdec: check av_new_packet return value

Conflicts:
	libavformat/nutdec.c

See: bb502411dd
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:10:10 +01:00
Michael Niedermayer
8120061be2 Merge commit '4cd0041d38664adcb6f4b3038e277631b85d5dc8' into release/2.4
* commit '4cd0041d38664adcb6f4b3038e277631b85d5dc8':
  rmdec: check av_new_packet return value

Conflicts:
	libavformat/rmdec.c

See: c01a462cda
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:04:15 +01:00
Michael Niedermayer
34b28d3823 Merge commit 'd1ad85fc020653be5ad25ed1d3d5091e89fee782' into release/2.4
* commit 'd1ad85fc020653be5ad25ed1d3d5091e89fee782':
  vf_format: check input validity

See: ee16e0cacc
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:03:19 +01:00
Michael Niedermayer
153a012384 Merge commit '6cf27b550d66963b89b5917568b85c4b49fb18ba' into release/2.4
* commit '6cf27b550d66963b89b5917568b85c4b49fb18ba':
  aviobuf: check context before using it

See: 7441d1ec33
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:02:42 +01:00
Michael Niedermayer
d6f4e475a1 Merge commit '5aceced0a0d235d485e88fda502019b221dbf3d2' into release/2.4
* commit '5aceced0a0d235d485e88fda502019b221dbf3d2':
  avio: fix sizeof argument

See: a96577df38
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 01:01:57 +01:00
Michael Niedermayer
a299d93928 Merge commit '27487944eff721ef8e310db1a2a52329d9377f71' into release/2.4
* commit '27487944eff721ef8e310db1a2a52329d9377f71':
  swscale: fix sign extensions in yuv planar conversion

Conflicts:
	libswscale/rgb2rgb_template.c

See: a07e9d72a1
See: a30972609c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:51:22 +01:00
Michael Niedermayer
39f2e53a24 Merge commit '51f76e4e932ebdce8ccf6cf0797651d632cfc3e2' into release/2.4
* commit '51f76e4e932ebdce8ccf6cf0797651d632cfc3e2':
  oss_audio: use a macro to simplify ioctl() error checking

Conflicts:
	libavdevice/oss_audio.c

See: 69c7aad494
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:50:34 +01:00
Michael Niedermayer
adfb4661d9 Merge commit 'c246b0b4c3a3b02a714e99423cf23d59f8f81409' into release/2.4
* commit 'c246b0b4c3a3b02a714e99423cf23d59f8f81409':
  avresample: Make sure the even check does not overflow

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:49:47 +01:00
Michael Niedermayer
b400412443 Merge commit 'daef7feb09a0dde2265d56f77de8ae03f9612d47' into release/2.4
* commit 'daef7feb09a0dde2265d56f77de8ae03f9612d47':
  af_resample: check av_opt_set_dict return value

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:49:07 +01:00
Michael Niedermayer
158cf1d52d Merge commit '2496dbd68b29bd36fbf4753a46163d33f6dae70e' into release/2.4
* commit '2496dbd68b29bd36fbf4753a46163d33f6dae70e':
  vf_showinfo: Forward the av_image_get_linesize error

Conflicts:
	libavfilter/vf_showinfo.c

See: 2aecfd4f20
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:41:02 +01:00
Michael Niedermayer
6fd7456f85 Merge commit '608e8d8dd754199b657b439f9e722e0b45f84461' into release/2.4
* commit '608e8d8dd754199b657b439f9e722e0b45f84461':
  vf_drawtext: Do not leak the mmapped textfile

Conflicts:
	libavfilter/vf_drawtext.c

See: 6956b048d8
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:40:14 +01:00
Michael Niedermayer
ee025a0c61 Merge commit '4d48691622149ba5998de08a0acec85d1f4ed46a' into release/2.4
* commit '4d48691622149ba5998de08a0acec85d1f4ed46a':
  cmdutils: Use the correct guard

Conflicts:
	cmdutils.c

See: 35daf3ca81
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:38:44 +01:00
Michael Niedermayer
679c3d210f Merge commit 'bb823e26b1cbb91b475c10772cdfd867d4809a65' into release/2.4
* commit 'bb823e26b1cbb91b475c10772cdfd867d4809a65':
  avformat: Make avformat_free_context handle NULL

See: ee23dcf534
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:38:03 +01:00
Michael Niedermayer
1da83d52bc Merge commit 'b31bb39bdd7b5a53e0d282acc0f0f62b32b17acc' into release/2.4
* commit 'b31bb39bdd7b5a53e0d282acc0f0f62b32b17acc':
  rtsp: Check a memory allocation

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:36:31 +01:00
Michael Niedermayer
564d943b27 avformat/rmdec: Check for overflow in ff_rm_read_mdpr_codecdata()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 03abf55f25)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:26:12 +01:00
Michael Niedermayer
aded1110a3 avformat/rmdec: rm_read_extradata: add error message for oversized extradata
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 50f9de59a0)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:25:55 +01:00
Michael Niedermayer
365e0652f9 Merge commit '036f5c5420e4529f05fa5180f5fa28ca2c5c4065' into release/2.4
* commit '036f5c5420e4529f05fa5180f5fa28ca2c5c4065':
  rm: Use the correct codec_data_size signedness

Conflicts:
	libavformat/rm.h
	libavformat/rmdec.c

See: a6f730730b
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:25:10 +01:00
Michael Niedermayer
1dc53463d9 Merge commit 'da35008c314eae5a10a8c070f5185b7694c0a37e' into release/2.4
* commit 'da35008c314eae5a10a8c070f5185b7694c0a37e':
  latm: Do not give a score for a single instance

Conflicts:
	libavformat/rawdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:24:03 +01:00
Michael Niedermayer
705e0e0513 avformat/mpeg: do not count PES packets inside PES packets during probing
Fixes: misdetection of test2.mp3

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e15b29bb18)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:11:01 +01:00
Michael Niedermayer
85d05fdc80 Merge commit '4baee1124b905cbd75240530e081c8ffa68fddbe' into release/2.4
* commit '4baee1124b905cbd75240530e081c8ffa68fddbe':
  mp3: Tweak the probe scores

Conflicts:
	libavformat/mp3dec.c

See: ef79bbeddd
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:07:12 +01:00
Michael Niedermayer
c8a2b1ac3c Merge commit 'bbb86717b303a3e4c0809d3cc6fb55580766a17e' into release/2.4
* commit 'bbb86717b303a3e4c0809d3cc6fb55580766a17e':
  vf_frei0r: do not increment string if it reached the end

See: 02a6ee5168
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:06:13 +01:00
Michael Niedermayer
12d6bbf7cb Merge commit '1fd55ec507f6f47b4d9fddf8e79a0df4540ef6e4' into release/2.4
* commit '1fd55ec507f6f47b4d9fddf8e79a0df4540ef6e4':
  svq1dec: Unbreak the scratch buffer allocation

Conflicts:
	libavcodec/svq1dec.c

See: 4213fc5b9e
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-18 00:05:18 +01:00
Michael Niedermayer
0d801c0bfd Merge commit '20f9cf744a9a82ac4b269cb4317a5d59a8553baf' into release/2.4
* commit '20f9cf744a9a82ac4b269cb4317a5d59a8553baf':
  vaapi: wrap codec specific functions in appropiate #ifs

Conflicts:
	libavcodec/vaapi.c

See: f2118d44c9
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:58:28 +01:00
Michael Niedermayer
9d43e51eec Merge commit '20d6ae4626a42fbc6e7b9c0040bdd64397b23e11' into release/2.4
* commit '20d6ae4626a42fbc6e7b9c0040bdd64397b23e11':
  hevc: always clip luma_log2_weight_denom

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:56:07 +01:00
Michael Niedermayer
73046fa195 Merge commit '23fe589e19487bc9a40b77dae9509068da5b14b8' into release/2.4
* commit '23fe589e19487bc9a40b77dae9509068da5b14b8':
  prores: Evaluate all the quantizers

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:55:12 +01:00
Michael Niedermayer
0295615f0a Merge commit '9bd4561d74a46dd6557140e286228e09e380674c' into release/2.4
* commit '9bd4561d74a46dd6557140e286228e09e380674c':
  tiff: Check the check_size() return value and forward it

Conflicts:
	libavcodec/tiffenc.c

See: d50aa006fb
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:25:41 +01:00
Michael Niedermayer
c69fff3790 Merge commit 'cbf31d5f15774b3ffd1e2009159dc7154a767b09' into release/2.4
* commit 'cbf31d5f15774b3ffd1e2009159dc7154a767b09':
  rtpdec_h263_rfc2190: Clear the stored bits if discarding buffered data

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:23:27 +01:00
Michael Niedermayer
3c33983b74 Merge commit '21683549edf436024cc3efbc4f8d1d55221c5336' into release/2.4
* commit '21683549edf436024cc3efbc4f8d1d55221c5336':
  h261dec: Fix context initialization sequence

See: 6c1ee1a114
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:22:54 +01:00
Michael Niedermayer
e7b8fa2c00 Merge commit 'cbfdbba58e1460bd0791911ad84a6c76b5500a0e' into release/2.4
* commit 'cbfdbba58e1460bd0791911ad84a6c76b5500a0e':
  cmdutils: check file access functions return values

Conflicts:
	cmdutils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:14:06 +01:00
Michael Niedermayer
0afeb76e75 Merge commit '1411f073fdceeff1f39dbaa035c3c0275f69095f' into release/2.4
* commit '1411f073fdceeff1f39dbaa035c3c0275f69095f':
  aacenc: correctly check returned value

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:08:10 +01:00
Michael Niedermayer
98d4a07ccf Merge commit '76e9a17f3392e752193015765e9216c2f0716b96' into release/2.4
* commit '76e9a17f3392e752193015765e9216c2f0716b96':
  lavfi: always check av_expr_parse_and_eval() return value

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:07:18 +01:00
Michael Niedermayer
3cc8822c93 Merge commit '3d0752d82f8eaa326cff306ae50b0186a5b4d304' into release/2.4
* commit '3d0752d82f8eaa326cff306ae50b0186a5b4d304':
  xsub: Support DXSA subtitles

Conflicts:
	libavcodec/xsubdec.c

See: d6f910ea47
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:01:33 +01:00
Michael Niedermayer
05b1ac2470 Merge commit 'bfe18be88a66da25b60a091de6011197dcb231fd' into release/2.4
* commit 'bfe18be88a66da25b60a091de6011197dcb231fd':
  mpeg4audio: check the init_get_bits() return value

Conflicts:
	libavcodec/mpeg4audio.c

See: deefdf9788
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 23:00:30 +01:00
Michael Niedermayer
cc598bf7dc Merge commit 'f6c82b34a320f105af266997f5951cbe7dfc8a05' into release/2.4
* commit 'f6c82b34a320f105af266997f5951cbe7dfc8a05':
  segment: Fix the failure paths

Conflicts:
	libavformat/segment.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 22:56:52 +01:00
Michael Niedermayer
dd4adba811 Merge commit '3280b86c85f5a88397fce0230d1878fee79fbb93' into release/2.4
* commit '3280b86c85f5a88397fce0230d1878fee79fbb93':
  swscale: check memory allocations

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 22:47:02 +01:00
Michael Niedermayer
ee910aef38 Merge commit '61335ab33e594d47b84fde7367ee10dc66fc3465' into release/2.4
* commit '61335ab33e594d47b84fde7367ee10dc66fc3465':
  opt: check memory allocation

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 22:43:37 +01:00
Michael Niedermayer
cdf37f2548 Merge commit '932caa50a5dec7f2a69da8a417ccae84d19ae5e5' into release/2.4
* commit '932caa50a5dec7f2a69da8a417ccae84d19ae5e5':
  libavformat: Check for malloc failures in avformat_new_stream

See: a66893ac94
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 22:40:39 +01:00
wm4
b96163f055 avformat/utils: check for malloc failure
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a66893ac94)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-17 22:39:23 +01:00
Luca Barbato
4039f11ed8 Prepare for 11.2 Release 2015-01-14 18:05:57 +01:00
Michael Niedermayer
1fd7fb9036 Update for 2.4.6
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-13 17:14:46 +01:00
Luca Barbato
5f6f241221 doc: Update the Changelog for release 11.2 2015-01-13 00:46:20 +01:00
Michael Niedermayer
ff77fa754b vp7: fix checking vp7_feature_value_size()
CC: libav-stable@libav.org
Bug-Id: CID 1197061
(cherry picked from commit 29234f5681)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:42 +01:00
Vittorio Giovara
431f57f046 libopusenc: prevent an out-of-bounds read by returning early
CC: libav-stable@libav.org
Bug-Id: CID 1244188
(cherry picked from commit 8dd0a2c5cf)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:42 +01:00
Vittorio Giovara
88411b87b4 display: fix order of operands
CC: libav-stable@libav.org
Bug-Id: CID 1238828 / CID 1238832
(cherry picked from commit b1b1a7370e)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:42 +01:00
Vittorio Giovara
3f09d4f6d4 ffv1: fix out-of-bounds read
CC: libav-stable@libav.org
Bug-Id: CID 1047234
(cherry picked from commit 6abe7edabb)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Vittorio Giovara
3aba00b1b3 indeo3: check ff_set_dimensions return value
CC: libav-stable@libav.org
Bug-Id: CID 1135740
(cherry picked from commit c6d7c201df)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Vittorio Giovara
796bd81835 g2meet: check ff_set_dimensions return value
CC: libav-stable@libav.org
Bug-Id: CID 1135739
(cherry picked from commit 2b5c1efa14)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Vittorio Giovara
9e0a38d32b avs: check ff_set_dimensions return value
CC: libav-stable@libav.org
Bug-Id: CID 1135738
(cherry picked from commit c7384664ba)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Vittorio Giovara
39e07ac9fc ansi: check ff_set_dimensions return value
CC: libav-stable@libav.org
Bug-Id: CID 1135737
(cherry picked from commit 994ab1804b)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Vittorio Giovara
21aeae9c67 svq1enc: check ff_get_buffer return value
CC: libav-stable@libav.org
Bug-Id: CID 747723
(cherry picked from commit 59846452af)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Michael Niedermayer
dd195c2c58 on2avc: Fix out of array access
CC: libav-stable@libav.org
Bug-Id: CID 1206648
(cherry picked from commit 2fa6d21124)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Vittorio Giovara
29e720da76 librtmp: append the correct field to the string
Also prevent a NULL pointer dereference.

CC: libav-stable@libav.org
Bug-Id: CID 1250329 / CID 1250331
(cherry picked from commit a28468d0da)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Vittorio Giovara
61fdbf7ff6 lavc: fix bitshifts amount bigger than the type
CC: libav-stable@libav.org
Bug-Id: CID 1194387 / CID 1194389 / CID 1194393 / CID 1206638
(cherry picked from commit 85dc006b1a)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Martin Storsjö
93bf4a74de configure: Fix enabling memalign_hack automatically
simd_align_16 is a configure item that can be enabled or disabled,
it's not a variable containing a list of other configure items
as need_memalign previously. This was broken in eba2233b5.

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
(cherry picked from commit 7813e6752b)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Martin Storsjö
5276174859 lavc: Move the libtwolame encoder registration to the list for external libraries
This makes sure the default behaviour of using the internal encoder
stays the same regardless if libtwolame is enabled or not (as for
any external library).

This fixes fate-lavf-mpg if libav is built with libtwolame enabled.

CC: libav-stable@libav.org
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
(cherry picked from commit aa8b39d999)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:41 +01:00
Luca Barbato
32701252af xwma: Do not leak on failure path
CC: libav-stable@libav.org
Bug-Id: CID 1087092
(cherry picked from commit fd9badd3cb)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:40 +01:00
Vittorio Giovara
4d11e4b47d libtwolame: prevent a NULL pointer dereference
CC: libav-stable@libav.org
Bug-Id: CID 1250330 / CID 1250335
(cherry picked from commit a42d5c861f)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:40 +01:00
Luca Barbato
5891fd017a dvdsubdec: Do not leak on failure path
CC: libav-stable@libav.org
Bug-Id: CID 1198262
(cherry picked from commit d466d82faa)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:40 +01:00
Vittorio Giovara
e9aeaa6441 qdm2: avoid integer overflow
CC: libav-stable@libav.org
Bug-Id: CID 700555
(cherry picked from commit 1f80742f49)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:40 +01:00
Vittorio Giovara
cce99f72d1 mpegenc: prevent a NULL pointer dereference
CC: libav-stable@libav.org
Bug-Id: CID 29261
(cherry picked from commit 065923b078)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:40 +01:00
Vittorio Giovara
fbc20c3b85 aacdec: avoid an out-of-bounds write
Also move the check in the case it is actually used.

CC: libav-stable@libav.org
Bug-Id: CID 1087090
(cherry picked from commit b99ca86350)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:40 +01:00
Luca Barbato
484e015dc8 cook: Make sure there is enough extradata
At least 8 bytes are needed (Mono audio).

Bug-Id: CID 741418
CC: libav-stable@libav.org
(cherry picked from commit 299d8ab104)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:40 +01:00
Vittorio Giovara
b82170336f tiffenc: initialize return value
'ret' can only be used without initialization if s->height <= 0, which can
only happen if avctx->height <= 0, which is validated elsewhere. Doesn't hurt
to still initialize it though.

CC: libav-stable@libav.org
Bug-Id: CID 732296
(cherry picked from commit 0562887a98)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:40 +01:00
Michael Niedermayer
12e1a7013a roqaudio: Always use the frame buffer on flush
Prevent NULL dereference.

CC: libav-stable@libav.org
Bug-Id: CID 703669
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
(cherry picked from commit 55b59fab88)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-13 00:16:40 +01:00
Luca Barbato
e7ee74485b hnm4: Use av_image_check_size
As done for all the other codecs not calling it indirectly.

CC: libav-stable@libav.org
Bug-Id: CID 1135770 / CID 1135771
2015-01-13 00:09:37 +01:00
Vittorio Giovara
4edbb0955e png_parser: fix size of chunk_lenght
Fixes the comparison against constant value 0x7fffffff.

CC: libav-stable@libav.org
Bug-Id: CID 1198260
2015-01-13 00:06:40 +01:00
Michael Niedermayer
2a75c0b1ca aacsbr: change order of operation to prevent out of array read
CC: libav-stable@libav.org
Bug-Id: CID 732250
2015-01-13 00:06:07 +01:00
Vittorio Giovara
34e7f70f9f assdec: check av_new_packet return value
CC: libav-stable@libav.org
Bug-Id: CID 703626
2015-01-13 00:05:39 +01:00
Vittorio Giovara
242fc6394f mtv: improve header check and avoid division by zero
CC: libav-stable@libav.org
Bug-Id: CID 732203 / CID 732204
2015-01-13 00:05:27 +01:00
Vittorio Giovara
bae05e5326 matroskaenc: write correct Display{Width, Height} in stereo encoding
should be the raw amount of pixels (for example 3840x1080 for full HD side by
side) and the DisplayWidth/Height in pixels should be the amount of pixels for
one plane (1920x1080 for that full HD stream)."

So, move the aspect ratio check in the mkv_write_stereo_mode() function
and always write the embl when stereo format and/or aspect ration is set.
Also add a few comments to that function.

CC: libav-stable@libav.org
Found-by: Asan Usipov <asan.usipov@gmail.com>
2015-01-13 00:05:13 +01:00
Vittorio Giovara
26ba78adac mov: fix assigment check
CC: libav-stable@libav.org
Bug-Id: CID 1197050
2015-01-13 00:04:56 +01:00
Vittorio Giovara
8a982092cc mxfdec: add missing break
CC: libav-stable@libav.org
Bug-Id: CID 732232
2015-01-13 00:04:43 +01:00
Luca Barbato
19fc283dbb lavf: replace rename() with ff_rename()
The new function wraps errno so that its value is correctly reported
when other functions overwrite it (eg. in case of logging).

CC: libav-stable@libav.org
Bug-Id: CID 1135748
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-01-13 00:04:24 +01:00
Vittorio Giovara
b9b689550e img2dec: check av_new_packet return value
CC: libav-stable@libav.org
Bug-Id: CID 1087077
2015-01-13 00:03:10 +01:00
Vittorio Giovara
7c710c38f6 audiointerleave: check av_new_packet return value
CC: libav-stable@libav.org
Bug-Id: CID 1087078
2015-01-13 00:02:45 +01:00
Vittorio Giovara
a7e79f6a43 avfilter: check filter link validity
Remove now redundant check.

CC: libav-stable@libav.org
Bug-Id: CID 700371
2015-01-13 00:02:32 +01:00
Anton Khirnov
556a5090f2 mp3dec: fix reading the Xing tag
The quality scale field is only supposed to be present if the fourth bit
is set. In practice, lame always sets it, but other tools might not.

CC:libav-stable@libav.org
2015-01-13 00:02:16 +01:00
Vittorio Giovara
1551602b42 nutdec: check av_new_packet return value
CC: libav-stable@libav.org
Bug-Id: CID 733713
2015-01-13 00:01:33 +01:00
Vittorio Giovara
4cd0041d38 rmdec: check av_new_packet return value
CC: libav-stable@libav.org
Bug-Id: CID 733714
2015-01-13 00:01:18 +01:00
Vittorio Giovara
d1ad85fc02 vf_format: check input validity
CC: libav-stable@libav.org
2015-01-13 00:01:08 +01:00
Vittorio Giovara
6cf27b550d aviobuf: check context before using it
Avoid a possible null pointer dereference.

CC: libav-stable@libav.org
Bug-Id: CID 1135769
2015-01-13 00:00:56 +01:00
Michael Niedermayer
5aceced0a0 avio: fix sizeof argument
CC: libav-stable@libav.org
Bug-Id: CID 732284
2015-01-13 00:00:43 +01:00
Vittorio Giovara
27487944ef swscale: fix sign extensions in yuv planar conversion
Casting the left-most byte to unsigned avoids an undefined
result of the shift by 24 if bit 7 is set.

yuvPlanartouyvy_c and yuvPlanartoyuy2_c are affected.

CC: libav-stable@libav.org
Bug-Id: CID 732281 / CID 732282
2015-01-13 00:00:28 +01:00
Timothy Gu
51f76e4e93 oss_audio: use a macro to simplify ioctl() error checking
Also add a note about SNDCTL_DSP_GETFMTS which may fail even if OSS is
available.

CC: libav-stable@libav.org
Bug-Id: CID 1238992
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-01-13 00:00:17 +01:00
Luca Barbato
c246b0b4c3 avresample: Make sure the even check does not overflow
CC: libav-stable@libav.org
Bug-Id: CID 732225
2015-01-12 23:59:59 +01:00
Vittorio Giovara
daef7feb09 af_resample: check av_opt_set_dict return value
CC: libav-stable@libav.org
Bug-Id: CID 1087076
2015-01-12 23:59:48 +01:00
Vittorio Giovara
2496dbd68b vf_showinfo: Forward the av_image_get_linesize error
CC: libav-stable@libav.org
Bug-Id: CID 1087086
2015-01-12 23:59:32 +01:00
Luca Barbato
608e8d8dd7 vf_drawtext: Do not leak the mmapped textfile
And validate its size while at it.

CC: libav-stable@libav.org
Bug-Id: CID 1244189
2015-01-12 23:59:15 +01:00
Luca Barbato
4d48691622 cmdutils: Use the correct guard
The OptionDef arrays are terminated with a { NULL } element not NULL.

CC: libav-stable@libav.org
Bug-Id: CID 703769
2015-01-12 23:58:58 +01:00
Luca Barbato
bb823e26b1 avformat: Make avformat_free_context handle NULL
Work as the other free()-like functions.

Bug-Id: CID 1087081
CC: libav-stable@libav.org
2015-01-12 23:58:25 +01:00
Michael Lynch
b31bb39bdd rtsp: Check a memory allocation
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-01-12 23:58:05 +01:00
Luca Barbato
036f5c5420 rm: Use the correct codec_data_size signedness
The function takes a size and not an offset.

CC: libav-stable@libav.org
Sample-Id: rm_deadlock.rm

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 23:18:01 +01:00
Luca Barbato
da35008c31 latm: Do not give a score for a single instance
Bug-Id: 773
CC: libav-stable@libav.org
2015-01-12 23:18:01 +01:00
Luca Barbato
4baee1124b mp3: Tweak the probe scores
Having more than 10 consecutive frames decoded as mp3 should be
considered a clear signal that the sample is mp3 and not mpegps.

Reported-By: Florian Iragne <florian@iragne.fr>
CC: libav-stable@libav.org
2015-01-12 23:18:01 +01:00
Vittorio Giovara
bbb86717b3 vf_frei0r: do not increment string if it reached the end
Bug-Id: 778
CC: libav-stable@libav.org
2015-01-12 23:18:01 +01:00
Michael Niedermayer
1fd55ec507 svq1dec: Unbreak the scratch buffer allocation
The input packets are always assumed to be padded and
the av_fast_ family of function takes a pointer to a pointer.

Thanks to Nicolas Dufresne <nicolas.dufresne@collabora.com> for
a similar patch.

Introduced in 7b588bb691.

Bug-Id: 766
CC: libav-stable@libav.org
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 23:16:05 +01:00
Thiago Santos
20f9cf744a vaapi: wrap codec specific functions in appropiate #ifs
Fix linking when only a subset of vaapi decoders is enabled.

Bug-Id: 760
CC: libav-stable@libav.org

Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 23:16:05 +01:00
Vittorio Giovara
20d6ae4626 hevc: always clip luma_log2_weight_denom
Its value shall be between 0 and 7 according to the specifications.

CC: libav-stable@libav.org
Bug-Id: CID 1257502
2015-01-12 23:16:05 +01:00
Luca Barbato
23fe589e19 prores: Evaluate all the quantizers
Prevent an uninitialized data access.

CC: libav-stable@libav.org
Bug-Id: CID 703824 / CID 703825
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 23:15:19 +01:00
Luca Barbato
9bd4561d74 tiff: Check the check_size() return value and forward it
Also use the same type for add_entry and check_size.

Bug-Id: CID 700699
CC: libav-stable@libav.org

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Signed-off-by: Vittorio Giovara <vittorio.giovarao@gmail.com>
2015-01-12 23:15:03 +01:00
Martin Storsjö
cbf31d5f15 rtpdec_h263_rfc2190: Clear the stored bits if discarding buffered data
If we throw away the buffered incomplete frame, make sure to also
throw away the buffered bits of an incomplete byte at the same
time.

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
(cherry picked from commit df07c07b3d)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 23:14:38 +01:00
Michael Niedermayer
21683549ed h261dec: Fix context initialization sequence
ff_mpv_common_init sets s->context_initialized.

This fixes decoding of h261 in the cases where the demuxer
hasn't already set the frame size.

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
(cherry picked from commit 3bb465245f)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 23:14:26 +01:00
Vittorio Giovara
cbfdbba58e cmdutils: check file access functions return values
CC: libav-stable@libav.org
Bug-Id: CID 703706
(cherry picked from commit 38129c26c5)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 23:14:06 +01:00
Vittorio Giovara
1411f073fd aacenc: correctly check returned value
CC: libav-stable@libav.org
(cherry picked from commit 971099ff5a)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 23:12:25 +01:00
Vittorio Giovara
76e9a17f33 lavfi: always check av_expr_parse_and_eval() return value
CC: libav-stable@libav.org
Bug-Id: CID 703624
(cherry picked from commit 63be97ec40)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 23:12:10 +01:00
Alexandre Colucci
3d0752d82f xsub: Support DXSA subtitles
These have a DXSA tag and contain alpha in addition to
color values for palette.

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
(cherry picked from commit 5a1addd7c1)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 22:23:35 +01:00
Anton Khirnov
bfe18be88a mpeg4audio: check the init_get_bits() return value
Fixes possible invalid reads.

CC:libav-stable@libav.org
(cherry picked from commit 7e4e010b80)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 22:21:54 +01:00
Luca Barbato
f6c82b34a3 segment: Fix the failure paths
A failure in segment_end() or segment_start() would lead to freeing
a dangling pointer and in general further calls to seg_write_packet()
or to seg_write_trailer() would have the same faulty behaviour.

CC: libav-stable@libav.org
Reported-By: luodalongde@gmail.com
(cherry picked from commit b3f0465736)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 22:21:39 +01:00
Vittorio Giovara
3280b86c85 swscale: check memory allocations
CC: libav-stable@libav.org
Bug-Id: CID 1257779
(cherry picked from commit 1dd797e3c9)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 22:19:55 +01:00
Vittorio Giovara
61335ab33e opt: check memory allocation
CC: libav-stable@libav.org
Bug-Id: CID 1257771
(cherry picked from commit 07a0c0f000)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 22:19:38 +01:00
Martin Storsjö
932caa50a5 libavformat: Check for malloc failures in avformat_new_stream
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
(cherry picked from commit 9f810a9b37)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-12 22:19:11 +01:00
Andreas Cadhalpun
9cc1d21e76 doc/examples: fix lib math dep for decoding_encoding
It uses at least sin().

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f97f2a3527)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-10 05:03:51 +01:00
Michael Niedermayer
0b0293ceaf avformat/movenc: workaround bug in "PathScale EKOPath(tm) Compiler Suite Version 4.0.12.1"
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 7824dc5150)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-10 05:02:19 +01:00
wm4
1b3332659a vp9: fix parser return values in error case
The parser must always set the out_size and out_data pointers. The API
seems to require it, and the common code in parser.c also relies on it.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b88e80589b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:41 +01:00
Michael Niedermayer
07c9df792c ffmpeg: Clear error message array at init.
This avoids printing uninitialized bytes if no error message is set

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6d1a2efb8a)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:41 +01:00
wm4
3b4e9dddcf avcodec/dvdsubdec: fix accessing dangling pointers
dvdsub_decode() can call append_to_cached_buf() 2 times, the second time
with ctx->buf as argument. If the second append_to_cached_buf() reallocs
ctx->buf, the argument will be a pointer to the previous, freed block.
This can cause invalid reads at least with some fuzzed files - and
possibly with valid files.

Since packets can apparently not be larger than 64K (even if packets are
combined), just use a fixed size buffer. It will be allocated as part of
the DVDSubContext, and although some memory is "wasted", it's relatively
minimal by modern standards and should be acceptable.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 816577716b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:41 +01:00
wm4
2ba1af5791 avcodec/dvdsubdec: error on bitmaps with size 0
Attemtping to decode them could lead to invalid writes with some fuzzed
samples.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit bcaa9099b3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:41 +01:00
James Almer
51e880fed9 configure: bump year
Happy new year!
(cherry picked from commit b8db25a333)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
86f4ac9365 avformat/mov: Fix mixed declaration and statement warning
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit db27f50e06)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
fe457ce4d1 cmdutils: Use 64bit for file size/offset related variable in cmdutils_read_file()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 369b4cd412)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
4506958289 avformat/utils: Clear pointer in ff_alloc_extradata() to avoid leaving a stale pointer in memory
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit bbfca8e84b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
6300790144 avformat/matroskadec: Use av_freep() to avoid leaving stale pointers in memory
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6e70e4aca5)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Paul B Mahol
20a4cf0d09 lavfi: check av_strdup() return value
Signed-off-by: Paul B Mahol <onemda@gmail.com>
(cherry picked from commit 145a84717b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Dale Curtis
54b76eb595 mov: Fix negative size calculation in mov_read_default().
The previous code assumed if an atom was marked with a 64-bit
size extension, it actually had that data available. The new
code verfies there's enough data in the atom for this to be
done.

Failure to verify causes total_size > atom.size which will
result in negative size calculations later on.

Found-by: Paul Mehta <paul@paulmehta.com>
Signed-off-by: Dale Curtis <dalecurtis@chromium.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3ebd76a9c5)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
0787163cf3 avformat/mov: fix integer overflow in mov_read_udta_string()
Found-by: Paul Mehta <paul@paulmehta.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3859868c75)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Dale Curtis
134ff88c6a mov: Avoid overflow with mov_metadata_raw()
The code previously added 1 to len without checking its size,
resulting in an overflow which can corrupt value[-1] -- which
may be used to store unaligned ptr information for certain
allocators.

Found-by: Paul Mehta <paul@paulmehta.com>
Signed-off-by: Dale Curtis <dalecurtis@chromium.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
wm4
e2e145db89 avcodec/dvdsubdec: fix out of bounds accesses
The code blindly trusted buffer offsets read from the file in the RLE
decoder. Explicitly check the offset. Also error out on other RLE
decoding errors.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit c9151de7c4)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
efdd30df06 avfilter/vf_sab: fix filtering tiny images
Fixes out of array reads

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 9bff052b51)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
54e3aff10e avformat/flvdec: Increase string array size
Fixes parsing httphostheader of Scarlatti\,\ Pieter-Jan\ Belder\ -\ Sonata\ K113\ in\ A\ major\ -\ Alle.flv

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit eb767a276b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
d9ec3070d1 avformat/flvdec: do not inject dts=0 metadata packets which failed to be parsed into a new data stream
Such data streams (which then contain no other packets except the faulty one)
confuse some user applications, like VLC
Works around vlcticket 12389

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 322f0f5960)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
6ac156864c avformat/cdxl: Fix integer overflow of image_size
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3eb5cbe0c5)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
0775653b4c avformat/segment: Use av_freep() avoid leaving stale pointers in memory
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 68fa549230)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:18:40 +01:00
Michael Niedermayer
33c8bb2c6a Merge commit '883795fb0face00a07349fbd32f4775431a9f30d' into release/2.4
* commit '883795fb0face00a07349fbd32f4775431a9f30d':
  h264: restore a block mistakenly removed in e10fd08a

See: 0ecb3075c1
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-09 17:06:54 +01:00
Anton Khirnov
883795fb0f h264: restore a block mistakenly removed in e10fd08a
CC: libav-stable@libav.org
Bug-ID: 781
(cherry picked from commit 60d4c6ff76)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-12-27 11:07:45 +01:00
Michael Niedermayer
849f55368c Merge commit '48952116352ab03565cc14805e0f1d63cf0318fe' into release/2.4
* commit '48952116352ab03565cc14805e0f1d63cf0318fe':
  on2avc: check number of channels

See: 550f3e9df3
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 12:21:31 +01:00
Michael Niedermayer
b86c2640f6 Merge commit '58dc526ebf722d33bf09275c1241674e0e6b9ef1' into release/2.4
* commit '58dc526ebf722d33bf09275c1241674e0e6b9ef1':
  smc: fix the bounds check

Conflicts:
	libavcodec/smc.c

See: c727401aa9
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 12:20:46 +01:00
Michael Niedermayer
9b9411c1cf Merge commit 'eac49477aa95cf727d87d2741ee8e60be59d394b' into release/2.4
* commit 'eac49477aa95cf727d87d2741ee8e60be59d394b':
  gifdec: refactor interleave end handling

Conflicts:
	libavcodec/gifdec.c

See: 8f1457864b
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 12:15:25 +01:00
Michael Niedermayer
54825047ab Merge commit '69a930b988ff4f88ae27e4fc24ff6ed116840b5e' into release/2.4
* commit '69a930b988ff4f88ae27e4fc24ff6ed116840b5e':
  mmvideo: check frame dimensions

See: 8b0e96e1f2
See: 9bafd6a8f6
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 12:11:52 +01:00
Michael Niedermayer
a7c18b628f Merge commit '55788572ea7b89cdd77bab1cf4bf06d14ead34f5' into release/2.4
* commit '55788572ea7b89cdd77bab1cf4bf06d14ead34f5':
  jvdec: check frame dimensions

See: 105654e376
See: 396195c505
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 12:10:46 +01:00
Michael Niedermayer
81754d8f8b Merge commit 'aa7a19b41774ce5f8a4e43f3692a4f9d90aa5c92' into release/2.4
* commit 'aa7a19b41774ce5f8a4e43f3692a4f9d90aa5c92':
  mjpegdec: check for pixel format changes

Conflicts:
	libavcodec/mjpegdec.c

See: 5c378d6a6d
See: a2f680c7bc
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 11:50:12 +01:00
Michael Niedermayer
36e6842aa6 Merge commit '577f1feb3fd1e51fd14af7ce6d79d468faa3b929' into release/2.4
* commit '577f1feb3fd1e51fd14af7ce6d79d468faa3b929':
  mov: avoid a memleak when multiple stss boxes are present

Conflicts:
	libavformat/mov.c

See: 1b5d112406
See: 5ab882d728
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 11:49:03 +01:00
Clément Bœsch
47e4a1ac6d avformat/mov: strengthen some table allocations
(cherry picked from commit 5ab882d728)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 11:47:06 +01:00
Michael Niedermayer
a058cbcfdf avformat/mov: Fix memleaks for duplicate STCO/CO64/STSC atoms
Also see [FFmpeg-devel] [PATCH] avformat/mov: strengthen some table allocations
which contains more fixes but is unfinished

Fixes: signal_sigabrt_7ffff6ac7bb9_3484_cov_1830000177_starfox2.mov
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1b5d112406)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 11:47:02 +01:00
Michael Niedermayer
4895211635 on2avc: check number of channels
Fixes invalid memory access.

CC: libav-stable@libav.org
Bug-ID: CVE-2014-8549
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Anton Khirnov <anton@khirnov.net>
(cherry picked from commit cee4490b52)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-12-20 10:51:41 +01:00
Michael Niedermayer
58dc526ebf smc: fix the bounds check
Fixes invalid writes when there are more blocks in a run than total
remaining blocks.

CC: libav-stable@libav.org
Bug-ID: CVE-2014-8548
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Anton Khirnov <anton@khirnov.net>
(cherry picked from commit d423dd72be)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-12-20 10:51:41 +01:00
Michael Niedermayer
eac49477aa gifdec: refactor interleave end handling
Fixes invalid writes with very small image heights.

CC: libav-stable@libav.org
Bug-ID: CVE-2014-8547
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Anton Khirnov <anton@khirnov.net>
(cherry picked from commit 0b39ac6f54)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-12-20 10:51:41 +01:00
Anton Khirnov
69a930b988 mmvideo: check frame dimensions
The frame size must be set by the caller and each dimension must be a
multiple of 2.

CC: libav-stable@libav.org
Bug-ID: CVE-2014-8543
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
(cherry picked from commit 17ba719d9b)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-12-20 10:51:41 +01:00
Anton Khirnov
55788572ea jvdec: check frame dimensions
The frame size must be set by the caller and each dimension must be a
multiple of 8.

CC: libav-stable@libav.org
Bug-ID: CVE-2014-8542
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
(cherry picked from commit 88626e5af8)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-12-20 10:51:40 +01:00
Anton Khirnov
aa7a19b417 mjpegdec: check for pixel format changes
Fixes possible invalid memory access.

Based on code by Michael Niedermayer <michaelni@gmx.at>

CC: libav-stable@libav.org
Bug-ID: CVE-2014-8541
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
(cherry picked from commit 809c3023b6)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-12-20 10:51:40 +01:00
Anton Khirnov
577f1feb3f mov: avoid a memleak when multiple stss boxes are present
CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
(cherry picked from commit 64f7575fbd)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-12-20 10:51:40 +01:00
Michael Niedermayer
4afe2684d8 Makefile: add dependencies which require ffversion.h
Without this ffversion.h could sometimes be built too late

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4ae87554f3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 04:34:45 +01:00
Michael Niedermayer
5d1d143a4e Update for FFmpeg 2.4.5
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 03:03:47 +01:00
Michael Niedermayer
820f41e1a1 Add FFMPEG_VERSION into the binary libs
This simplifies identifying from which revision a binary of a lib came from

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 649c158e8c)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:26:27 +01:00
wm4
14d6ea0c45 lavu/frame: fix malloc error path in av_frame_copy_props()
The error path frees all side data, but forgets to reset the side data
count. This can blow up later in av_frame_unref() and free_side_data().

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a400edbb6d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
Michael Niedermayer
0fb2b61614 avformat/utils: Do not update programs streams from program-less streams in update_wrap_reference()
Fixes Ticket3686

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a29524bf2e)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
Michael Niedermayer
0d277be45a avformat/aviobuf: Check that avio_seek() target is non negative
Fixes out of array access

Suggested-by: Andrew Scherkus <scherkus@google.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit ed86dbd05d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
Rob Sykes
3b332ef33c swresample/soxr_resample: fix error handling
Fixes CID1257659

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4b6f225374)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
Michael Niedermayer
787e4d12da avformat/flvdec: fix potential use of uninitialized variables
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 0fadbd3623)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
wm4
95c298b125 avformat/matroskadec: fix handling of recursive SeekHead elements
When matroska_execute_seekhead() is called, it goes through the list of
seekhead entries and attempts to read elements not read yet. When doing
this, the parser can find further SeekHead elements, and will extend the
matroska->seekhead list. This can lead to a (practically) infinite loop
with certain broken files. (Maybe it can happen even with valid files.
The demuxer doesn't seem to check correctly whether an element has
already been read.)

Fix this by ignoring elements that were added to the seekhead field
during executing seekhead entries.

This does not fix the possible situation when multiple SeekHead elements
after the file header (i.e. occur after the "before_pos" file position)
point to the same elements. These elements will probably be parsed
multiple times, likely leading to bugs.

Fixes ticket #4162.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6551acab68)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
Michael Niedermayer
fd72ff6f31 doc/examples/transcoding: check encoder before using it
Fixes null pointer exception

Found-by: stoupeace
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit bde27e1e61)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
Michael Niedermayer
82db2f2ac8 ffmpeg: drop usage of coded_frame
It causes all kinds of problems and there is no code in the muxers that reads
this field

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 242f1152bf)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
Michael Niedermayer
f36b3c5df9 swscale/x86/rgb2rgb_template: fix crash with tiny size and nv12 output
Fixes Ticket4151

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 8524558858)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
Michael Niedermayer
117dcc2097 avformat/rmdec: Check codec_data_size
Fixes infinite loop
Fixes Ticket4154

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a6f730730b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
Michael Niedermayer
c4e18917d4 avformat/aviobuf: Fix infinite loop in ff_get_line()
Fixes ticket4152

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit eac5c7b837)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:25:54 +01:00
Michael Niedermayer
03fbc282ff Merge commit '3ea49fc5081d63277ecbc12ed440af4b02ddfdf9' into release/2.4
* commit '3ea49fc5081d63277ecbc12ed440af4b02ddfdf9':
  vc1: Do not assume seek happens after decoding

See: 6801eb0a09
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-20 02:17:20 +01:00
Clément Bœsch
f30a89e15f avformat/rsd: make tag_buf string larger
av_get_codec_tag_string() uses more that 1 char for unprintable characters.

(cherry picked from commit edbbb11488)
2014-12-19 18:02:13 -03:00
Luca Barbato
3ea49fc508 vc1: Do not assume seek happens after decoding
If a seek is requested before the decoding start there is no
current picture.

CC: libav-stable@libav.org
(cherry picked from commit 3e348ecfc6ab1830e43288a9e12e8f0a000afbcb)
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-12-19 17:58:22 +01:00
Anton Khirnov
9bafd6a8f6 mmvideo: check frame dimensions
The frame size must be set by the caller and each dimension must be a
multiple of 2.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
See: 8b0e96e1f2
These should be redundant, but are backported for saftey anyway
(cherry picked from commit b0273232d8fffdc8a977ccdad460b8071a0e353c)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-19 15:52:23 +01:00
Anton Khirnov
396195c505 jvdec: check frame dimensions
The frame size must be set by the caller and each dimension must be a
multiple of 8.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
See: 105654e376
These should be redundant, but are backported for saftey anyway
(cherry picked from commit e012cb8dea7969c7b3927dbf846ef2742cd4a7ab)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-19 15:52:22 +01:00
Michael Niedermayer
e2324b5b37 avcodec/indeo3: ensure offsets are non negative
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 368642361f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-18 19:10:46 +01:00
Michael Niedermayer
bb97f243ba avcodec/h264: Check *log2_weight_denom
Fixes undefined behavior
Fixes: signal_sigsegv_14768d2_2248_cov_3629497219_h264_h264___pi_20070614T182942.h264
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 61296d41e2)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-18 03:48:33 +01:00
Michael Niedermayer
b6dc16bd95 avcodec/hevc_ps: Check diff_cu_qp_delta_depth
Fixes undefined behavior
Fixes: asan_static-oob_17aa046_582_cov_1577759978_DBLK_G_VIXS_1.bit
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3281fa8925)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-18 02:32:11 +01:00
Michael Niedermayer
a9c77e5c22 avcodec/h264: Clear delayed_pic on deallocation
Fixes use of freed memory

Fixes: case5_av_frame_copy_props.mp4
Found-by: Michal Zalewski <lcamtuf@coredump.cx>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e8714f6f93)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-17 22:14:34 +01:00
Michael Niedermayer
de882ec2b1 avcodec/hevc: clear filter_slice_edges() on allocation
This avoids use of uninitialized memory
Fixes: asan_static-oob_17aa046_582_cov_212287884_DBLK_G_VIXS_1.bit
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 8aa8d12554)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-17 20:02:06 +01:00
Michael Niedermayer
bd62554ad2 avcodec/dcadec: Check that the added xch channel isnt already there
Fixes null pointer dereference
Fixes: signal_sigsegv_369609d_623_cov_2008234281_ES_6.1_16bit.dts
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 7d593495e4)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-17 20:02:05 +01:00
Michael Niedermayer
cd51f41791 avcodec/indeo3: use signed variables to avoid underflow
Fixes out of array read
Fixes: signal_sigsegv_1b0a4da_1865_cov_2167818389_computer_anger.avi
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3305acdc92)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-17 05:24:36 +01:00
Michael Niedermayer
da811dfc93 avcodec/h264: make the first field of H264Context an AVClass
Fixes use of freed memory
Fixes: asan_heap-uaf_3660f67_757_cov_1257014655_Hi422FR1_SONY_A.jsv
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f3b5b139ad)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-17 02:14:25 +01:00
Michael Niedermayer
dce726f091 swscale: increase yuv2rgb table headroom
Fixes out of array access
Fixes: case2_bad_read_yuv2rgbx32.mp4
Found-by: Michal Zalewski <lcamtuf@coredump.cx>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-16 23:58:50 +01:00
Michael Niedermayer
ea5b4c682c avformat/mov: fix integer overflow of size
Fixes: case1_call_stack_overflow.mp4
Found-by: Michal Zalewski <lcamtuf@coredump.cx>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-16 23:58:49 +01:00
Michael Niedermayer
65d426bddd avformat/mov: check atom nesting depth
Fixes call stack overflow
Fixes: case1_call_stack_overflow.mp4
Found-by: Michal Zalewski <lcamtuf@coredump.cx>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit caa7a3914f)

Conflicts:

	libavformat/isom.h
2014-12-16 23:55:35 +01:00
Michael Niedermayer
64fdce7802 avcodec/utvideodec: Fix handling of slice_height=0
Fixes out of array accesses
Fixes: asan_heap-oob_25bcd7e_3783_cov_3553517262_utvideo_rgba_median.avi
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3881606240)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-16 23:06:23 +01:00
Michael Niedermayer
195e8ecacc avcodec/vmdvideo: Check len before using it in method 3
Fixes out of array access
Fixes: asan_heap-oob_4d23ba_91_cov_3853393937_128.vmd

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3030fb7e0d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-16 19:38:08 +01:00
Michael Niedermayer
a4ffcf024e avformat/flvdec: Use av_freep() avoid leaving stale pointers in memory
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 91ea466551)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-16 15:55:35 +01:00
Michael Niedermayer
da52c0ebc6 avformat/hdsenc: Use av_freep() avoid leaving stale pointers in memory
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 16d763fa45)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-16 15:55:34 +01:00
Michael Niedermayer
8815ddc29f configure: create the tests directory like the doc directory
This fixes an issue where the tests directory is not created for out of tree
builds before its needed

Tested-by: Dave Yeo <daveryeo@telus.net>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e631872f13)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-16 15:54:10 +01:00
Michael Niedermayer
5ceae49caf Merge commit '864c0c50eb0e7a112b20007459b0cb94b61cb8d3' into release/2.4
* commit '864c0c50eb0e7a112b20007459b0cb94b61cb8d3':
  avconv: Use the mpeg12 private option scan_offset

Conflicts:
	ffmpeg_opt.c

See: e479013ae4
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-15 13:44:00 +01:00
Julien Ramseier
864c0c50eb avconv: Use the mpeg12 private option scan_offset
Introduced in aed7900704

Bug-Id: debian/773055
CC: libav-stable@libav.org
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
(cherry picked from commit fd665f7f48)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-12-14 18:43:25 +01:00
Brad Smith
89dbef7329 v4l2: Make use of the VIDIOC_ENUM_FRAMESIZES ioctl on OpenBSD
Make use of the V4L2 VIDIOC_ENUM_FRAMESIZES ioctl on OpenBSD.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 04a4fb81b3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-02 12:57:20 +01:00
Michael Niedermayer
93df243a59 avcodec/motion_est: use 2x8x8 for interlaced qpel
Fixes out of array read
Fixes Ticket4121

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b50e003e1c)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-02 12:57:20 +01:00
Michael Niedermayer
db61d34e83 Merge commit '1cc6fef0671c5522c952671ee06bf973135a22c4' into release/2.4
* commit '1cc6fef0671c5522c952671ee06bf973135a22c4':
  Prepare for 11.1 Release

Conflicts:
	RELEASE

Not merged, as our release numbers differ

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-02 12:42:38 +01:00
Michael Niedermayer
309609ce4d Merge commit '60ccc1a748bf3d26201411479146d0798e1ecff9' into release/2.4
* commit '60ccc1a748bf3d26201411479146d0798e1ecff9':
  Update changelog for v11.1

Conflicts:
	Changelog

Not merged, the changelog does not match FFmpeg

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-02 12:40:20 +01:00
Michael Niedermayer
6607057d0e Merge commit 'b31a3c6f2670d4def5aa8bd3479da9c771ab09e2' into release/2.4
* commit 'b31a3c6f2670d4def5aa8bd3479da9c771ab09e2':
  Replace lena.pnm

Conflicts:
	tests/Makefile
	tests/ref/seek/vsynth2-asv1
	tests/ref/seek/vsynth2-asv2
	tests/ref/seek/vsynth2-ffv1
	tests/ref/seek/vsynth2-flashsv
	tests/ref/seek/vsynth2-flv
	tests/ref/seek/vsynth2-h261
	tests/ref/seek/vsynth2-h263
	tests/ref/seek/vsynth2-h263p
	tests/ref/seek/vsynth2-huffyuv
	tests/ref/seek/vsynth2-ljpeg
	tests/ref/seek/vsynth2-mjpeg
	tests/ref/seek/vsynth2-mpeg1
	tests/ref/seek/vsynth2-mpeg1b
	tests/ref/seek/vsynth2-mpeg2-422
	tests/ref/seek/vsynth2-mpeg2-idct-int
	tests/ref/seek/vsynth2-mpeg2-ilace
	tests/ref/seek/vsynth2-mpeg2-ivlc-qprd
	tests/ref/seek/vsynth2-mpeg2-thread
	tests/ref/seek/vsynth2-mpeg2-thread-ivlc
	tests/ref/seek/vsynth2-mpeg4
	tests/ref/seek/vsynth2-mpeg4-adap
	tests/ref/seek/vsynth2-mpeg4-error
	tests/ref/seek/vsynth2-mpeg4-nr
	tests/ref/seek/vsynth2-mpeg4-qpel
	tests/ref/seek/vsynth2-mpeg4-qprd
	tests/ref/seek/vsynth2-mpeg4-rc
	tests/ref/seek/vsynth2-mpeg4-thread
	tests/ref/seek/vsynth2-msmpeg4
	tests/ref/seek/vsynth2-msmpeg4v2
	tests/ref/seek/vsynth2-roqvideo
	tests/ref/seek/vsynth2-rv10
	tests/ref/seek/vsynth2-rv20
	tests/ref/seek/vsynth2-svq1
	tests/ref/seek/vsynth2-wmv1
	tests/ref/seek/vsynth2-wmv2
	tests/ref/vsynth/vsynth2-asv1
	tests/ref/vsynth/vsynth2-asv2
	tests/ref/vsynth/vsynth2-cljr
	tests/ref/vsynth/vsynth2-dnxhd-1080i
	tests/ref/vsynth/vsynth2-dnxhd-720p
	tests/ref/vsynth/vsynth2-dnxhd-720p-10bit
	tests/ref/vsynth/vsynth2-dnxhd-720p-rd
	tests/ref/vsynth/vsynth2-dv
	tests/ref/vsynth/vsynth2-dv-411
	tests/ref/vsynth/vsynth2-dv-50
	tests/ref/vsynth/vsynth2-ffv1
	tests/ref/vsynth/vsynth2-ffvhuff
	tests/ref/vsynth/vsynth2-flashsv
	tests/ref/vsynth/vsynth2-flv
	tests/ref/vsynth/vsynth2-h261
	tests/ref/vsynth/vsynth2-h263
	tests/ref/vsynth/vsynth2-h263-obmc
	tests/ref/vsynth/vsynth2-h263p
	tests/ref/vsynth/vsynth2-huffyuv
	tests/ref/vsynth/vsynth2-jpegls
	tests/ref/vsynth/vsynth2-ljpeg
	tests/ref/vsynth/vsynth2-mjpeg
	tests/ref/vsynth/vsynth2-mpeg1
	tests/ref/vsynth/vsynth2-mpeg1b
	tests/ref/vsynth/vsynth2-mpeg2
	tests/ref/vsynth/vsynth2-mpeg2-422
	tests/ref/vsynth/vsynth2-mpeg2-idct-int
	tests/ref/vsynth/vsynth2-mpeg2-ilace
	tests/ref/vsynth/vsynth2-mpeg2-ivlc-qprd
	tests/ref/vsynth/vsynth2-mpeg2-thread
	tests/ref/vsynth/vsynth2-mpeg2-thread-ivlc
	tests/ref/vsynth/vsynth2-mpeg4
	tests/ref/vsynth/vsynth2-mpeg4-adap
	tests/ref/vsynth/vsynth2-mpeg4-adv
	tests/ref/vsynth/vsynth2-mpeg4-error
	tests/ref/vsynth/vsynth2-mpeg4-nr
	tests/ref/vsynth/vsynth2-mpeg4-qpel
	tests/ref/vsynth/vsynth2-mpeg4-qprd
	tests/ref/vsynth/vsynth2-mpeg4-rc
	tests/ref/vsynth/vsynth2-mpeg4-thread
	tests/ref/vsynth/vsynth2-msmpeg4
	tests/ref/vsynth/vsynth2-msmpeg4v2
	tests/ref/vsynth/vsynth2-prores
	tests/ref/vsynth/vsynth2-qtrle
	tests/ref/vsynth/vsynth2-rgb
	tests/ref/vsynth/vsynth2-roqvideo
	tests/ref/vsynth/vsynth2-rv10
	tests/ref/vsynth/vsynth2-rv20
	tests/ref/vsynth/vsynth2-svq1
	tests/ref/vsynth/vsynth2-v210
	tests/ref/vsynth/vsynth2-wmv1
	tests/ref/vsynth/vsynth2-wmv2
	tests/ref/vsynth/vsynth2-yuv

See: c4abee734d
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-02 11:56:29 +01:00
Michael Niedermayer
575dc3a1b2 Merge commit 'ce99ef48ea025e90351079964d63be815374f089' into release/2.4
* commit 'ce99ef48ea025e90351079964d63be815374f089':
  Treat all '*.pnm' files as non-text file

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-02 11:41:05 +01:00
Reinhard Tartler
1cc6fef067 Prepare for 11.1 Release 2014-12-01 21:39:37 -05:00
Reinhard Tartler
60ccc1a748 Update changelog for v11.1 2014-12-01 21:39:01 -05:00
Reinhard Tartler
b31a3c6f26 Replace lena.pnm
The new reference.pnm is a freely licensed replacement. The photo has
been taken by Reinhard Tartler on August 28 2014, and is licensed under
the expat license as stated at http://www.jclark.com/xml/copying.txt

(cherry picked from commit 8895bf7b78)
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2014-12-01 08:02:45 -05:00
Reinhard Tartler
ce99ef48ea Treat all '*.pnm' files as non-text file
This convinces the pre-receive hook to not consider all *.pnm files as
text files to reduce the patch sizes and avoids triggering whitespace
checks,

Contains a correction by Janne Grunau <janne-libav@jannau.net>

(cherry picked from commit 0f257e29c5)
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2014-12-01 08:02:37 -05:00
Michael Niedermayer
dd2394754d Changelog: update for 2.4.4
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-01 02:11:00 +01:00
Andreas Cadhalpun
883f3e18dd doc: correct license template for t2h.pm
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 928322c15f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-01 01:00:09 +01:00
Michael Niedermayer
06336ce760 avformat: replace some odd 30-60 rates by higher less odd ones in get_std_framerate()
Fixes Ticket4012

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 367c9d33d6)

Conflicts:

	libavformat/version.h

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 23:35:37 +01:00
Kieran Kunhya
6f580e8735 swscale: fix yuv2yuvX_8 assembly on x86
use_mmx_vfilter check/fix by commiter
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b546023b93)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 22:28:52 +01:00
Michael Niedermayer
5c2d8bbffa update for 2.4.4
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:59:47 +01:00
Michael Niedermayer
4b8f3c5bf3 avcodec/hevc_ps: Check num_long_term_ref_pics_sps
Fixes out of array access
Fixes: signal_sigsegv_35bd0f0_1182_cov_791726764_STRUCT_B_Samsung_4.bit
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit ea38e5a6b7)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:37 +01:00
Michael Niedermayer
18dba3d80d avcodec/mjpegdec: Fix integer overflow in shift
Fixes: signal_sigabrt_7ffff6ac7bb9_2683_cov_4120310995_m_ijpg.avi
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 970a8f1c25)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Michael Niedermayer
2ba17ac96c avcodec/hevc_ps: Check return code from pps_range_extensions()
Fixes out of array read
Fixes: asan_heap-oob_177e222_885_cov_1532528832_MERGE_D_TI_3.bit
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 9f9440bd81)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Michael Niedermayer
12e064d6c2 avcodec/rawdec: Check the return code of avpicture_get_size()
Fixes out of array access
Fixes: asan_heap-oob_22388d0_3435_cov_3297128910_small_roll5_FlashCine1.cine
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1d3a3b9f89)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Michael Niedermayer
f2595a6c38 avcodec/pngdec: Check IHDR/IDAT order
Fixes out of array access
Fixes: asan_heap-oob_20a6c26_2690_cov_3434532168_mail.png
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 79ceaf827b)

Conflicts:

	libavcodec/pngdec.c
2014-11-30 21:40:36 +01:00
Michael Niedermayer
a654f483cd avcodec/flacdec: Call ff_flacdsp_init() unconditionally
Fixes out of array access
Fixes: signal_sigsegv_324b135_3398_cov_246853371_short.flac
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e5c01ccdf5)

Conflicts:

	libavcodec/flacdec.c
2014-11-30 21:40:36 +01:00
Michael Niedermayer
991a203479 avcodec/utils: Check that the data is complete in avpriv_bprint_to_extradata()
Fixes out of array read
Fixes: asan_heap-oob_4d2250_814_cov_2745172097_JACOsub_capability_tester.jss
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3d5d95db3f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Michael Niedermayer
8524009161 avcodec/mjpegdec: Fix context fields becoming inconsistent
Fixes out of array access
Fixes: asan_heap-oob_1ca4f85_2760_cov_144449187_miss_congeniality_pegasus_ljpg.avi
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 0eecf40935)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Michael Niedermayer
47f345de1d avcodec/mjpegdec: Check for pixfmtid 0x42111100 || 0x24111100 with more than 8 bits
These cases are not supported yet

Fixes assertion failure
Fixes: signal_sigabrt_7ffff6ac7bb9_1_cov_1553101927_00.jpg
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 0bf416f262)

Conflicts:

	libavcodec/mjpegdec.c
2014-11-30 21:40:36 +01:00
Michael Niedermayer
af0a95ee03 swscale/x86/rgb2rgb_template: handle the first 2 lines with C in rgb24toyv12_*()
This avoids out of array accesses
Should fix Ticket3451

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4388e78a0f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Michael Niedermayer
2abc6e930b doc/APIchanges: Fix some wrong versions
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4eae568a07)

Conflicts:

	doc/APIchanges
2014-11-30 21:40:36 +01:00
Michael Niedermayer
3bb48296ef avformat/hlsenc: Free context after hls_append_segment
Fixes reading uninitialized memory

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 530eb6acf8)

Conflicts:

	libavformat/hlsenc.c
2014-11-30 21:40:36 +01:00
Michael Niedermayer
a3fdc0b35b avcodec/mpeg4video_parser: fix spurious extradata parse warnings
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 7d37e45f6b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Lukasz Marek
cf8b91a28e lavu/opt: fix av_opt_get function
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
(cherry picked from commit 173d51c982)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Michael Niedermayer
cfda2a677c avcodec/wmaprodec: Fix integer overflow in sfb_offsets initialization
Fixes out of array read
Fixes: asan_heap-oob_2aec5b0_1828_classical_22_16_2_16000_v3c_0_exclusive_0_29.wma
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 5dcb99033d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Michael Niedermayer
11dfd1fa20 avcodec/utvideodec: fix assumtation that slice_height >= 1
Fixes out of array read
Fixes: asan_heap-oob_2573085_3783_utvideo_rgba_median.avi
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 7656c4c6e6)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Michael Niedermayer
f7e9fcda2d avcodec/options_table fix min of audio channels and sample rate
Found-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 206c98f303)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Carl Eugen Hoyos
2719ba9ee3 lavc/utils: Make pix_fmt desc pointer const.
Fixes an "initialization discards qualifiers from pointer target type" warning.
(cherry picked from commit f05855414e)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-30 21:40:36 +01:00
Dave Yeo
d48e0aed3c libavutil/threads.h: correct an include to be local
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 32eadfe453)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-29 12:07:17 +01:00
Dave Yeo
89b52d25b4 libavutil/thread.h: Support OS/2 threads
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 090a7801a8)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-29 12:07:17 +01:00
Michael Stypa
9984d492dc fix Makefile objects for pulseaudio support
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit cb58c771ad)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 21:31:26 +01:00
Michael Niedermayer
56b84b023d Merge commit 'ca78ee73db9e059f501706ba6108e23902e84933' into release/2.4
* commit 'ca78ee73db9e059f501706ba6108e23902e84933':
  opusdec: make sure all substreams have the same number of coded samples

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 01:19:28 +01:00
Michael Niedermayer
0e216ed407 avutil/buffer_internal: leave the buffer pool entries volatile
Theres no reason to remove the volatile keyword in a release branch

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 01:17:56 +01:00
Michael Niedermayer
f783259fdb avutil/buffer: use the old atomics based code for the release branch
the old code worked fine for a long time and was not affected by
the bug the new code fixes and the new is not widely tested yet.
This can be reverted once the code received more testing in
master

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 01:15:11 +01:00
Michael Niedermayer
b6691fba77 Merge commit '517ce1d09b5e6b72afc2ef9490b5f8ca42fa6a65' into release/2.4
* commit '517ce1d09b5e6b72afc2ef9490b5f8ca42fa6a65':
  lavu: fix memory leaks by using a mutex instead of atomics

Conflicts:
	libavutil/buffer.c

The atomics code is left in place as a fallback for synchronization in the
absence of p/w32 threads. Our ABI did not requires applications to
only use threads (and matching ones) to what libavutil was build with
Our code also was not affected by the leak this change fixes, though
no question the atomics based implementation is not pretty at all.
First and foremost the code must work, being pretty comes after that.

If this causes problems, for example when libavutil is used by multiple
applications each using a different kind of threading system then the
default possibly has to be changed to the uglier atomics.

See: cea3a63ba3
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 01:00:50 +01:00
Michael Niedermayer
15fd62110f Merge commit '46a17d886b8559723c40b9f5cdf0e0c6b1c95180' into release/2.4
* commit '46a17d886b8559723c40b9f5cdf0e0c6b1c95180':
  lavu: add wrappers for the pthreads mutex API

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 00:36:23 +01:00
Michael Niedermayer
86b532898d Merge commit '12700b0219521a5f20c8ba47b3ad7857ea9e0554' into release/2.4
* commit '12700b0219521a5f20c8ba47b3ad7857ea9e0554':
  mp3enc: fix a triggerable assert

Conflicts:
	libavformat/mp3enc.c

No change as the faulty assert is not in FFmpeg

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 00:35:35 +01:00
Anton Khirnov
ca78ee73db opusdec: make sure all substreams have the same number of coded samples
Fixes invalid writes with invalid multichannel streams.

CC:libav-stable@libav.org
(cherry picked from commit 1973079417)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-11-27 14:11:51 +01:00
wm4
517ce1d09b lavu: fix memory leaks by using a mutex instead of atomics
The buffer pool has to atomically add and remove entries from the linked
list of available buffers. This was done by removing the entire list
with a CAS operation, working on it, and then setting it back again
(using a retry-loop in case another thread was doing the same thing).

This could effectively cause memory leaks: while a thread was working on
the buffer list, other threads would allocate new buffers, increasing
the pool's total size. There was no real leak, but since these extra
buffers were not needed, but not free'd either (except when the buffer
pool was destroyed), this had the same effects as a real leak. For some
reason, growth was exponential, and could easily kill the process due
to OOM in real-world uses.

Fix this by using a mutex to protect the list operations. The fancy
way atomics remove the whole list to work on it is not needed anymore,
which also avoids the situation which was causing the leak.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
(cherry picked from commit fbd6c97f9c)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-11-27 13:38:29 +01:00
Anton Khirnov
46a17d886b lavu: add wrappers for the pthreads mutex API
Also add no-op fallbacks when threading is disabled.

This helps keeping the code clean if Libav is compiled for targets
without threading. Since we assume that no threads of any kind are used
in such configurations, doing nothing is ok by definition.

Based on a patch by wm4 <nfxjfg@googlemail.com>.

(cherry picked from commit 2443e522f0)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-11-27 13:38:27 +01:00
Michael Niedermayer
944570906b avformat/avidec: fix handling dv in avi
Fixes Ticket4086

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f0ae0354d3)
2014-11-21 09:30:59 +01:00
Peter Ross
057ee35924 avfilter/vf_lut: gammaval709()
See http://www.itu.int/rec/R-REC-BT.709
Item 1.2, overall opto-electronic transfer characteristics at source

Signed-off-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b186b7131e)
2014-11-20 02:00:59 +01:00
Peter Ross
e386241d54 cinedec: report white balance gain coefficients using metadata
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 2093c1dc51)
2014-11-20 02:00:49 +01:00
Michael Niedermayer
222236317b swscale/utils: support bayer input + scaling, and bayer input + any supported output
Fixes Ticket4053

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 2f6bb86f85)
2014-11-20 02:00:35 +01:00
Michael Niedermayer
633a2a082f swscale: support internal scaler cascades
Fixes Ticket3170

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit fba894615d)

Conflicts:
	libswscale/version.h
2014-11-20 02:00:15 +01:00
Michael Niedermayer
e5f5df37c8 avformat/dtsdec: dts_probe: check reserved bit, check lfe, check sr_code similarity
Fixes misdetection of s16le
Fixes Ticket4109

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 0dba982bb4)
2014-11-20 01:29:20 +01:00
Michael Niedermayer
cc9c74ea87 avformat/segment: export inner muxer timebase
Fixes "Non-monotonous DTS in output stream 0:0"
Fixes Ticket4020

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit ce80f9fee9)
2014-11-17 01:08:48 +01:00
Anton Khirnov
12700b0219 mp3enc: fix a triggerable assert
We have to check against the number of bytes actually needed, not the
theoretical maximum size.
2014-11-14 20:22:40 +01:00
Reimar Döffinger
3e0802e42b configure: Hack to treat x32 as x86_64.
Allows shared compilation on x32 with --disable-asm.
(cherry picked from commit 5e8e2f3861)
2014-11-13 08:24:55 +01:00
Michael Niedermayer
56e11cbe32 Revert "v4l2: setting device parameters early"
This reverts commit b1ad931233.

Fixes Ticket #3517

Requested-by: Giorgio Vazzana <mywing81@gmail.com>
Merged-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6f21fb7932)

Conflicts:
	libavdevice/v4l2.c
2014-11-08 14:21:46 +01:00
Carl Eugen Hoyos
2be7d565bb Remove fminf() emulation.
The emulation is unused and causes compilation trouble on systems
where fminf() is defined in <math.h> but missing from libm.
This should fix compilation on Debian powerpcspe.
(cherry picked from commit 4436a8f44d)
2014-11-08 12:47:18 +01:00
Michael Niedermayer
c7b64a904a avcodec/mpegaudio_parser: fix off by 1 error in bitrate calculation
Fixes Ticket3918

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 817663897e)
2014-11-06 01:02:53 +01:00
Carl Eugen Hoyos
9798dc8061 Use -fno-optimize-sibling-calls on parisc also for gcc 4.9.
Fixes fate on hppa.
Found-by: Andreas Cadhalpun.
(cherry picked from commit f2ffaae9ac)
2014-11-05 10:32:24 +01:00
Michael Niedermayer
a5cc8775cf avcodec/h264_sei: ff_h264_decode_sei: dont try to parse trailing zeroes
reduces noise for tserrors.ts

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 688a40b4ed)
2014-11-05 10:13:26 +01:00
Michael Niedermayer
f9ca1fecb0 ffmpeg_opt: store canvas size in decoder context
Fixes canvas size
Fixes Ticket4074

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 66b9e60af0)
2014-11-05 09:54:35 +01:00
Michael Niedermayer
cd57d608a4 avcodec/mpeg12dec: do not trust AVCodecContext input dimensions
Fixes initial wtv dimensions
Fixes Ticket4070
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 77f1199e8f)
2014-11-05 09:52:29 +01:00
Michael Niedermayer
043f326060 avcodec/h264_slice: Clear table pointers to avoid stale pointers
Might fix Ticket3889

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 547fce9585)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-02 02:10:51 +01:00
Michael Niedermayer
9a641b909c avcodec/h264_parser: rewrite the parse_nal_units() loop logic based on h264.c
Fixes Ticket4011

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 69a9a90d2e)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 16:27:12 +01:00
Michael Niedermayer
5405ba7b63 avcodec/h264: simplify find_start_code()
this also uses avpriv_find_start_code(), though no speed change is expected as
the area searched is generally small

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3b678da5e3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 16:27:12 +01:00
Michael Niedermayer
70f6d553d9 Move get_avc_nalsize() and find_start_code() to h264.h
This allows sharing them with the h264 parser

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4898440f6b)

Conflicts:

	libavcodec/h264.c
2014-11-01 16:27:12 +01:00
Reimar Döffinger
25fc3deed8 mpeg4vdpau: Fix priv data size.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
(cherry picked from commit 46353759cb)
2014-11-01 16:18:50 +01:00
Michael Niedermayer
a8a6cdfcd7 avformat/matroskadec: do not trust the default duration to be the real 1/timebase if its less than 5fps
Fixes Ticket3980

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit be695ee389)
2014-11-01 15:37:36 +01:00
Michael Niedermayer
39518589e7 avformat/options_table: add FF_COMPLIANCE_UNOFFICIAL
Fixes ticket 3959

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit c02ea58c5f)
2014-11-01 15:36:07 +01:00
Carl Eugen Hoyos
857e391697 Stop demuxing wtv on eof.
Fixes ticket #3991.
Fixes ticket #3995.
Fixes ticket #3997.

Reviewed-by: Peter Ross
Reviewed-by: Paul B Mahol
(cherry picked from commit 6efe4137ce)
2014-11-01 15:35:46 +01:00
Michael Niedermayer
04aa2ffbcf Update for 2.4.3
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:39:52 +01:00
Michael Niedermayer
63523485f4 avcodec/svq1dec: zero terminate embedded message before printing
Fixes out of array access
Fixes: asan_stack-oob_49b1e5_10_009.mov
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e91ba2efa9)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
35bc67503e avcodec/cook: check that the subpacket sizes fit in block_align
Fixes out of array read
Fixes: asan_heap-oob_fb5c50_19_018.rmvb
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 10e32618ac)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
1f636a697f avcodec/g2meet: check tile dimensions to avoid integer overflow
Fixes out of array access
Fixes: asan_heap-oob_12a55d3_30_029.wmv
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 32e666c354)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
24d725f455 avcodec/utils: Align dimensions by at least their chroma sub-sampling factors.
Fixes: out of array accesses
Fixes: asan_heap-oob_112c6b3_13_012.avi
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit df74811cd5)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
66fcf1fa40 avcodec/dnxhddec: treat pix_fmt like width/height
Fixes out of array accesses
Fixes: asan_heap-oob_22c9a39_16_015.mxf
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f3c0e0bf6f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
c7b7e0790c avcodec/dxa: check dimensions
Fixes out of array access
Fixes: asan_heap-oob_11222fb_21_020.dxa
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e70312dfc2)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
3f3e5f8f60 avcodec/dirac_arith: fix integer overflow
Fixes: asan_heap-oob_1078676_9_008.drc
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 39680cacee)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
8e95ddbe82 avcodec/diracdec: Tighter checks on CODEBLOCKS_X/Y
Fixes very long but finite loop
Fixes: asan_heap-oob_107866c_42_041.drc
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 5145d22b88)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
8cba067fe5 avcodec/diracdec: Use 64bit in calculation of codeblock coordinates
Fixes integer overflow
Fixes out of array read
Fixes: asan_heap-oob_107866c_42_041.drc
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 526886e606)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
73c6520c09 avcodec/sgidec: fix count check
Fixes: asan_heap-oob_22b30d4_39_038.sgi
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a050cf0c45)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
ca47574e16 avcodec/sgidec: fix linesize for 16bit
Fixes: asan_heap-oob_22b30d4_39_038.sgi
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3b20ed8548)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Michael Niedermayer
045670a6f7 avcodec/hevc_ps: Check default display window bitstream and skip if invalid
Fixes Ticket4035

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 852aaead1f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:14 +01:00
Christophe Gisquet
30a0622a5d avcodec/tiffenc: properly compute packet size
The bytes per row is a better indication of it.

Helps resolving ticket #3874 by fixing ffmpeg's encoder and transforming
the issue in a issue with non-compliant decoders. ffmpeg's one is ok,
but unfortunately, many others aren't handling correctly unusual chroma
samplings.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 0e8bfd3c93)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:13 +01:00
Lukasz Marek
e4d921dc71 lavd: export all symbols with av_ prefix
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
(cherry picked from commit e493814d61)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:13 +01:00
Michael Niedermayer
2185103bcd avformat/mxfdec: Fix termination of mxf_data_essence_container_uls
Fixes: asan_static-oob_87d116_10_201.mxf
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e3b28f10bb)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:13 +01:00
Michael Niedermayer
bf7ee2524b postproc: fix qp count
Found-by: ubitux
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 0b7e5d0d75)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:13 +01:00
Michael Niedermayer
5a1efc7b85 postproc/postprocess: fix quant store for fq mode
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 941aaa39e8)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:13 +01:00
Karl Kiniger
71af22097d vf_drawtext: add missing clear of pointers after av_expr_free()
Fixes segfault when using sendcmd with drawtext.

Since LIBAVFILTER_VERSION_MAJOR 5 FF_API_DRAWTEXT_OLD_TIMELINE
evaluates to 0.

Signed-off-by: Karl Kiniger <karl.kiniger@med.ge.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 903156aa8a)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:13 +01:00
Christophe Gisquet
f3d34cff76 utvideoenc: properly set slice height/last line
Mimic decoder and obey sampling.

Does not affect fate tests for utvideo.
Fixes ticket #3949.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit cb530dda7d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:13 +01:00
Michael Niedermayer
81b38caf21 swresample/swresample: fix sample drop loop end condition
Fixes Ticket3985

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit f9fefa499f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:28:13 +01:00
Michael Niedermayer
20071ff1a4 Merge commit 'ca8c62d187fdca13979379fb2ab172ed662aa2f8' into release/2.4
* commit 'ca8c62d187fdca13979379fb2ab172ed662aa2f8':
  resample: Avoid off-by-1 errors in PTS calcs.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:22:09 +01:00
Michael Niedermayer
3b7db9c4f5 Merge commit 'e443165c323406d01da7e7930f042d265d01fb35' into release/2.4
* commit 'e443165c323406d01da7e7930f042d265d01fb35':
  imc: fix order of operations in coefficients read

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:21:40 +01:00
Michael Niedermayer
0ddcee172e Merge commit '0b41eeac45fb7f7ad6d3f4fc846b00d108824b0b' into release/2.4
* commit '0b41eeac45fb7f7ad6d3f4fc846b00d108824b0b':
  hevc_mvs: make sure to always initialize the temporal MV fully

Conflicts:
	libavcodec/hevc_mvs.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:06:25 +01:00
Michael Niedermayer
13ecdb06f8 Merge commit 'de31f857077a52714f3a2f2e92ac037d42d37769' into release/2.4
* commit 'de31f857077a52714f3a2f2e92ac037d42d37769':
  hevc_mvs: initialize the temporal MV in case of missing ref

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-01 13:05:46 +01:00
Timothy B. Terriberry
ca8c62d187 resample: Avoid off-by-1 errors in PTS calcs.
The rounding used in the PTS calculations in filter_frame() does
not actually match the number of samples output by the resampler.
This leads to off-by-1 errors in the timestamps indicating gaps and
underruns, even when the input timestamps are all contiguous.

Bug-Id: 753

Signed-off-by: Anton Khirnov <anton@khirnov.net>
(cherry picked from commit 6cbbf0592f)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-10-18 05:11:23 +02:00
Vittorio Giovara
e443165c32 imc: fix order of operations in coefficients read
Reported-by: Ruoyu <liangry@ucweb.com>
2014-10-15 14:51:19 +01:00
Anton Khirnov
0b41eeac45 hevc_mvs: make sure to always initialize the temporal MV fully
The spec requires this.

Fixes uninitialized reads on some samples.

Remove now unnecessary initialization of the whole merge candidate list.
2014-10-08 12:31:08 +01:00
Anton Khirnov
de31f85707 hevc_mvs: initialize the temporal MV in case of missing ref
The caller expects the MV to always be initialized.
2014-10-08 12:30:54 +01:00
Alexander Strasser
d61454e7c1 avformat/img2dec: Attempt to detect non-escaped glob patterns too (-pattern_type glob)
Fixes ticket #3948

Based-on-patch-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e079d43af8)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-05 03:58:09 +02:00
Michael Niedermayer
b02e4faa3e avformat/img2dec: Support -loop with pipes
Fixes Ticket3976

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 684508ba15)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-05 01:55:54 +02:00
Michael Niedermayer
09256527be Update for 2.4.2
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-05 00:53:35 +02:00
Michael Niedermayer
84d26ab6eb avcodec/on2avc: Check number of channels
Fixes out of array access
Fixes: asan_heap-oob_4da4f3_7_asan_heap-oob_4da4f3_173_Xmen_avc_500.vp6

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 550f3e9df3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
1d99adc953 avcodec/hevc: fix chroma transform_add size
Fixes accessing misaligned address
Fixes: signal_sigsegv_1feb99c_10_signal_sigsegv_2d1d35c_79_cov_691940146_EXT_A_ericsson_3.bit

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit df8394c693)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
67991f3a3e avcodec/h264: Check mode before considering mixed mode intra prediction
Fixes out of array read
Fixes: asan_heap-oob_e476fc_2_asan_heap-oob_1333ec6_61_CAMACI3_Sony_C.jsv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 9734a7a1de)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
32e8922faf avformat/mpegts: use a padded buffer in read_sl_header()
Fixes overread
Fixes: asan_heap-oob_84f75d_8_asan_heap-oob_a2a00a_341_mbc.ts

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 27f6da2921)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
32dbd1f342 avformat/mpegts: Check desc_len / get8() return code
Fixes out of array read
Fixes: signal_sigsegv_844d59_10_signal_sigsegv_a17bb7_366_mpegts_mpeg2video_mp2_dvbsub_topfield.rec

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit c3d7f00ee3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
eefc3ca7be avcodec/vorbisdec: Fix off by 1 error in ptns_to_read
Fixes read of uninitialized memory
Fixes: asan_heap-uaf_18dac2b_9_asan_heap-uaf_22eb375_208_beta3_test_small.ogg

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 8c50704ebf)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Thomas Volkert
a16558e122 sdp: add support for H.261
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1c4c78ee40)

Conflicts:

	libavformat/version.h
2014-10-04 23:52:29 +02:00
Michael Niedermayer
506368f563 avcodec/svq3: Dont memcpy AVFrame
This avoids out of array accesses

Fixes: asan_heap-uaf_21f42e4_9_asan_heap-uaf_21f42e4_278_gl2.mov

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 075a165d27)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
c0c24bc9b3 avcodec/smc: fix off by 1 error
Fixes out of array access
Fixes: asan_heap-oob_1685bf0_5_asan_heap-oob_1f35116_430_smc.mov

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit c727401aa9)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
b89f279cd6 avcodec/qpeg: fix off by 1 error in MV bounds check
Fixes out of array access
Fixes: asan_heap-oob_153760f_4_asan_heap-oob_1d7a4cf_164_VWbig6.avi

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit dd3bfe3cc1)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
7f90eef87a avcodec/gifdec: factorize interleave end handling out
also change it to a loop
Fixes out of array access
Fixes: asan_heap-oob_ca5410_8_asan_heap-oob_ca5410_97_ID_LSD_Size_Less_Then_Data_Inter_3.gif

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 8f1457864b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
71f0a3c4ad avcodec/cinepak: fix integer underflow
Fixes out of array access
Fixes: asan_heap-oob_4da0ba_6_asan_heap-oob_4da0ba_241_cvid_crash.avi

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e7e5114c50)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
d9bef14e41 avcodec/pngdec: Check bits per pixel before setting monoblack pixel format
Fixes out of array accesses
Fixes: asan_heap-oob_14dbfcf_4_asan_heap-oob_1ce5767_179_add_method_small.png

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3e2b745020)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
4b4ed88e89 avcodec/pngdec: Calculate MPNG bytewidth more defensively
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e830902934)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
f6476944e1 avcodec/tiff: more completely check bpp/bppcount
Fixes pixel format selection
Fixes out of array accesses
Fixes: asan_heap-oob_1766029_6_asan_heap-oob_20aa045_332_cov_1823216757_m2-d1d366d7965db766c19a66c7a2ccbb6b.tif

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e1c0cfaa41)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
03d30d4c2c avcodec/mmvideo: Bounds check 2nd line of HHV Intra blocks
Fixes out of array access
Fixes: asan_heap-oob_4da4f3_8_asan_heap-oob_4da4f3_419_scene1a.mm

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 8b0e96e1f2)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
853a27e345 avcodec/h263dec: Fix decoding messenger.h263
Fixes http://samples.mplayerhq.hu/V-codecs/h263/h263-raw/messenger.h263
Fixes regression since b239f3f6

Found-by: Josh Allmann
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d225b0f7aa)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:29 +02:00
Michael Niedermayer
f7c0f8355e avcodec/utils: Add case for jv to avcodec_align_dimensions2()
Fixes out of array accesses
Fixes: asan_heap-oob_12304aa_8_asan_heap-oob_4da4f3_300_intro.jv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 105654e376)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
6f5c505109 avcodec/mjpegdec: check bits per pixel for changes similar to dimensions
Fixes out of array accesses
Fixes: asan_heap-oob_16668e9_2_asan_heap-oob_16668e9_346_miss_congeniality_pegasus_mjpg.avi

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 5c378d6a6d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
b29f9897e3 avcodec/jpeglsdec: Check run value more completely in ls_decode_line()
previously it could have been by 1 too large
Fixes out of array access
Fixes: asan_heap-oob_12240f5_1_asan_heap-oob_12240f5_448_t8c1e3.jls
Fixes: asan_heap-oob_12240f5_1_asan_heap-oob_12240f5_448_t8nde0.jls
Fixes: asan_heap-oob_12240fa_1_asan_heap-oob_12240fa_448_t16e3.jls

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 06e7d58410)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
1d987a34d8 avformat/hlsenc: export inner muxer timebase
Fixes "Non-monotonous DTS in output stream 0:0"
Fies Ticket 3797

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b1a0fccd02)

Conflicts:

	libavformat/hlsenc.c

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Reimar Döffinger
6099d1ca0e configure: add noexecstack to linker options if supported.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
(cherry picked from commit b7082d953f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
a9b9751bc8 avcodec/ac3enc_template: fix out of array read
Found-by: Andreas Cadhalpun
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit d85ebea3f3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
lvqcl
da5e52010c avutil/x86/cpu: fix cpuid sub-leaf selection
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e58fc44649)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
e1fd837888 avformat/img2dec: enable generic seeking for image pipes
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit ce6e46be72)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
1d10997488 avformat/img2dec: initialize pkt->pos for image pipes
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6d35aba167)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
76a5cf1f80 avformat/img2dec: pass error code and signal EOF
Found-by: Daemon404
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 2497914a18)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
16c3d6d392 avformat/img2dec: fix error code at EOF for pipes
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1dbdcb4a8c)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Philip DeCamp
9d79848f84 libavutil/opt: fix av_opt_set_channel_layout() to access correct memory address
Signed-off-by: Philip DeCamp <decamp@mit.edu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 857fc0a71f)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
b8d34604ff tests/fate-run.sh: Cat .err file in case of error with V>0
This may make fate failures where only the console output is available
easier to analyze

Suggested-by: Andreas Cadhalpun
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 00d3bb1a07)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Benoit Fouet
7a02b9cb2d avformat/riffenc: Filter out "BottomUp" in ff_put_bmp_header()
Fixes Ticket1304

Commit message and extradata size bugfix by commiter
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6843b9dc78)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Pascal Massimino
ff6d440d10 avcodec/webp: fix default palette color 0xff000000 -> 0x00000000
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e5b3112996)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
a88a57cd24 avcodec/asvenc: fix AAN scaling
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit b0f7de3e7c)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Bernd Kuhls
0cda7baa8b Fix compile error on arm4/arm5 platform
Since these commits
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=adf8227cf4e7b4fccb2ad88e1e09b6dc00dd00ed
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=db7f1c7c5a1d37e7f4da64a79a97bea1c4b6e9f8

compilation on arm4/arm5 fails:

libavcodec/libavcodec.so: undefined reference to
`ff_startcode_find_candidate_armv6'

Because libavcodec/arm/Makefile contains
ARMV6-OBJS-$(CONFIG_STARTCODE)         += arm/startcode_armv6.o
function ff_startcode_find_candidate_armv6 is not included for older ARM
archs. The bug was found during automatic buildroot builds:

http://autobuild.buildroot.net/results/ec7/ec71e4f16ee9106747dff5f15999cbd17903e76f//build-end.log
Quote from configure summary:
ARCH                      arm (armv4t)
big-endian                no
runtime cpu detection     yes
ARMv5TE enabled           no
ARMv6 enabled             no
ARMv6T2 enabled           no

http://autobuild.buildroot.net/results/be7/be72eb182eaccf0064a32c9dfc2ac1c0d6555506/build-end.log
ARCH                      arm (armv5te)
big-endian                no
runtime cpu detection     yes
ARMv5TE enabled           yes
ARMv6 enabled             no
ARMv6T2 enabled           no

This patch provides the necessary #if clauses as discussed with Michael:
https://ffmpeg.org/pipermail/ffmpeg-devel/2014-September/163329.html

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6b733be755)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
31baa6f199 Changelog: fix sws typo
Found-by: Clément Bœsch <u@pkh.me>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:52:28 +02:00
Michael Niedermayer
3b364ac18a Merge commit 'ff24824a721576195c3b4a711e3ee2af900de795' into release/2.4
* commit 'ff24824a721576195c3b4a711e3ee2af900de795':
  h264: reset ret to avoid propagating minor failures

See: 47048aa30b
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:22:25 +02:00
Michael Niedermayer
63660277fd Merge commit '570cefb02b4f149c4263677e1a3eea216ee0ec8c' into release/2.4
* commit '570cefb02b4f149c4263677e1a3eea216ee0ec8c':
  hevc: Initialize mergecand_list to 0

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:20:50 +02:00
Michael Niedermayer
6101187c55 Merge commit 'ce0972ecddef3eee3c03e393108e5728821e3e37' into release/2.4
* commit 'ce0972ecddef3eee3c03e393108e5728821e3e37':
  mpeg12: Always invoke the get_format() callback

Conflicts:
	libavcodec/mpeg12dec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:14:07 +02:00
Michael Niedermayer
91ff803a74 Merge commit '09c848855a7bf11a9ab4a69971cced260b17817d' into release/2.4
* commit '09c848855a7bf11a9ab4a69971cced260b17817d':
  h264: Always invoke the get_format() callback

Conflicts:
	libavcodec/h264_slice.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:13:51 +02:00
Michael Niedermayer
4f4f78ea48 Merge commit '9eb442cca23bb8d33b3e6d37b8c0e3afff04c37a' into release/2.4
* commit '9eb442cca23bb8d33b3e6d37b8c0e3afff04c37a':
  Update default FATE URL for release/11

Conflicts:
	tests/Makefile

no change, as we do not have per release reference samples

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-04 23:01:31 +02:00
Michael Niedermayer
ff24824a72 h264: reset ret to avoid propagating minor failures
Unbreak 772d150a6e.

CC: libav-stable@libav.org
Bug-Id: 750 / 905753
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-09-29 12:35:32 +01:00
Luca Barbato
570cefb02b hevc: Initialize mergecand_list to 0
Unbreak cf6090dc62.

CC: libav-stable@libav.org
Sample-Id: hevc-conformance-LTRPSPS_A_Qualcomm_1
2014-09-29 12:35:16 +01:00
Rémi Denis-Courmont
ce0972ecdd mpeg12: Always invoke the get_format() callback
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-09-26 22:05:37 +02:00
Rémi Denis-Courmont
09c848855a h264: Always invoke the get_format() callback
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-09-26 22:05:34 +02:00
Diego Biurrun
9eb442cca2 Update default FATE URL for release/11 2014-09-17 07:08:57 -07:00
249 changed files with 2840 additions and 990 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.pnm -diff -text

225
Changelog
View File

@@ -3,8 +3,231 @@ releases are sorted from youngest to oldest.
version <next>:
version 2.4.8:
- avutil/cpu: add missing check for mmxext to av_force_cpu_flags
- avcodec/msrledec: restructure msrle_decode_pal4() based on the line number instead of the pixel pointer
- avcodec/hevc_ps: Check cropping parameters more correctly
- avcodec/dnxhddec: Check that the frame is interlaced before using cur_field
- avformat/mov: Disallow ".." in dref unless use_absolute_path is set
- avformat/mov: Check for string truncation in mov_open_dref()
- ac3_fixed: fix out-of-bound read
- avcodec/012v: redesign main loop
- avcodec/012v: Check dimensions more completely
- asfenc: fix leaking asf->index_ptr on error
- avcodec/options_table: remove extradata_size from the AVOptions table
- ffmdec: limit the backward seek to the last resync position
- ffmdec: make sure the time base is valid
- ffmdec: fix infinite loop at EOF
- avcodec/tiff: move bpp check to after "end:"
- avcodec/opusdec: Fix delayed sample value
- avcodec/utils: Align YUV411 by as much as the other YUV variants
- vp9: fix segmentation map retention with threading enabled.
- doc/protocols/tcp: fix units of listen_timeout option value, from microseconds to milliseconds
- fix VP9 packet decoder returning 0 instead of the used data size
- avformat/bit: only accept the g729 codec and 1 channel
- avformat/adxdec: check avctx->channels for invalid values
- Fix buffer_size argument to init_put_bits() in multiple encoders.
- mips/acelp_filters: fix incorrect register constraint
- avcodec/hevc_ps: Sanity checks for some log2_* values
- avcodec/zmbv: Check len before reading in decode_frame()
- avcodec/snowdec: Fix ref value check
- swscale/utils: More carefully merge and clear coefficients outside the input
- avcodec/a64multienc: fix use of uninitialized values in to_meta_with_crop
- avcodec/a64multienc: don't set incorrect packet size
- webp: ensure that each transform is only used once
- avcodec/hevc_ps: More complete window reset
- vp9: make above buffer pointer 32-byte aligned.
- avformat/rm: limit packet size
- avcodec/webp: validate the distance prefix code
- avcodec/gif: fix off by one in column offsetting finding
version 2.4.7:
- avcodec/flac_parser: fix handling EOF if no headers are found
- avfilter/vf_framepack: Check and update frame_rate
- avcodec/hevc: Fix handling of skipped_bytes() reallocation failures
- qpeg: avoid pointless invalid memcpy()
- avcodec/arm/videodsp_armv5te: Fix linking failure with "g++ -shared -D__STDC_CONSTANT_MACROS -o test.so ... libavcodec.a"
- avcodec/mjpegdec: Skip blocks which are outside the visible area
- lavc/aarch64: Do not use the neon horizontal chroma loop filter for H.264 4:2:2. (cherry picked from commit 4faea46bd906b3897018736208123aa36c3f45d5)
- avcodec/h264_slice: assert that reinit does not occur after the first slice
- avcodec/h264_slice: ignore SAR changes in slices after the first
- avcodec/h264_slice: Check picture structure before setting the related fields
- avcodec/h264_slice: Do not change frame_num after the first slice
- avutil/opt: Fix type used to access AV_OPT_TYPE_SAMPLE_FMT
- avutil/opt: Fix types used to access AV_OPT_TYPE_PIXEL_FMT
- avcodec/h264: Be more strict on rejecting pps/sps changes
- avcodec/h264: Be more strict on rejecting pps_id changes
- avcodec/h264_ps: More completely check the bit depths
- avformat/thp: Check av_get_packet() for failure not only for partial output
- swscale/utils: Limit filter shifting so as not to read from prior the array
- avcodec/mpegvideo_motion: Fix gmc chroma dimensions
- avcodec/mjpegdec: Check number of components for JPEG-LS
- avcodec/mjpegdec: Check escape sequence validity
- avformat/mpc8: Use uint64_t in *_get_v() to avoid undefined behavior
- avformat/mpc8: fix broken pointer math
- avformat/mpc8: fix hang with fuzzed file
- avformat/tta: fix crash with corrupted files
version 2.4.6:
- doc/examples: fix lib math dep for decoding_encoding
- avformat/movenc: workaround bug in "PathScale EKOPath(tm) Compiler Suite Version 4.0.12.1"
- vp9: fix parser return values in error case
- ffmpeg: Clear error message array at init.
- avcodec/dvdsubdec: fix accessing dangling pointers
- avcodec/dvdsubdec: error on bitmaps with size 0
- avformat/mov: Fix mixed declaration and statement warning
- cmdutils: Use 64bit for file size/offset related variable in cmdutils_read_file()
- avformat/utils: Clear pointer in ff_alloc_extradata() to avoid leaving a stale pointer in memory
- avformat/matroskadec: Use av_freep() to avoid leaving stale pointers in memory
- lavfi: check av_strdup() return value
- mov: Fix negative size calculation in mov_read_default().
- avformat/mov: fix integer overflow in mov_read_udta_string()
- mov: Avoid overflow with mov_metadata_raw()
- avcodec/dvdsubdec: fix out of bounds accesses
- avfilter/vf_sab: fix filtering tiny images
- avformat/flvdec: Increase string array size
- avformat/flvdec: do not inject dts=0 metadata packets which failed to be parsed into a new data stream
- avformat/cdxl: Fix integer overflow of image_size
- avformat/segment: Use av_freep() avoid leaving stale pointers in memory
- avformat/mov: Fix memleaks for duplicate STCO/CO64/STSC atoms
- mov: avoid a memleak when multiple stss boxes are presen
version 2.4.5:
- lavu/frame: fix malloc error path in av_frame_copy_props()
- avformat/utils: Do not update programs streams from program-less streams in update_wrap_reference()
- avformat/aviobuf: Check that avio_seek() target is non negative
- swresample/soxr_resample: fix error handling
- avformat/flvdec: fix potential use of uninitialized variables
- avformat/matroskadec: fix handling of recursive SeekHead elements
- doc/examples/transcoding: check encoder before using it
- swscale/x86/rgb2rgb_template: fix crash with tiny size and nv12 output
- avformat/rmdec: Check codec_data_size
- avformat/aviobuf: Fix infinite loop in ff_get_line()
- vc1: Do not assume seek happens after decoding
- mmvideo: check frame dimensions
- jvdec: check frame dimensions
- avcodec/indeo3: ensure offsets are non negative
- avcodec/h264: Check *log2_weight_denom
- avcodec/hevc_ps: Check diff_cu_qp_delta_depth
- avcodec/h264: Clear delayed_pic on deallocation
- avcodec/hevc: clear filter_slice_edges() on allocation
- avcodec/dcadec: Check that the added xch channel isnt already there
- avcodec/indeo3: use signed variables to avoid underflow
- swscale: increase yuv2rgb table headroom
- avformat/mov: fix integer overflow of size
- avformat/mov: check atom nesting depth
- avcodec/utvideodec: Fix handling of slice_height=0
- avcodec/vmdvideo: Check len before using it in method 3
- avformat/flvdec: Use av_freep() avoid leaving stale pointers in memory
- avformat/hdsenc: Use av_freep() avoid leaving stale pointers in memory
- configure: create the tests directory like the doc directory
- v4l2: Make use of the VIDIOC_ENUM_FRAMESIZES ioctl on OpenBSD
- avcodec/motion_est: use 2x8x8 for interlaced qpel
- Treat all '*.pnm' files as non-text file
version 2.4.4:
- avformat: replace some odd 30-60 rates by higher less odd ones in get_std_framerate()
- swscale: fix yuv2yuvX_8 assembly on x86
- avcodec/hevc_ps: Check num_long_term_ref_pics_sps
- avcodec/mjpegdec: Fix integer overflow in shift
- avcodec/hevc_ps: Check return code from pps_range_extensions()
- avcodec/rawdec: Check the return code of avpicture_get_size()
- avcodec/pngdec: Check IHDR/IDAT order
- avcodec/flacdec: Call ff_flacdsp_init() unconditionally
- avcodec/utils: Check that the data is complete in avpriv_bprint_to_extradata()
- avcodec/mjpegdec: Fix context fields becoming inconsistent
- avcodec/mjpegdec: Check for pixfmtid 0x42111100 || 0x24111100 with more than 8 bits
- swscale/x86/rgb2rgb_template: handle the first 2 lines with C in rgb24toyv12_*()
- doc/APIchanges: Fix some wrong versions
- avformat/hlsenc: Free context after hls_append_segment
- avcodec/mpeg4video_parser: fix spurious extradata parse warnings
- lavu/opt: fix av_opt_get function
- avcodec/wmaprodec: Fix integer overflow in sfb_offsets initialization
- avcodec/utvideodec: fix assumtation that slice_height >= 1
- avcodec/options_table fix min of audio channels and sample rate
- libavutil/thread.h: Support OS/2 threads
- fix Makefile objects for pulseaudio support
- opusdec: make sure all substreams have the same number of coded samples
- lavu: add wrappers for the pthreads mutex API
- avformat/avidec: fix handling dv in avi
- avfilter/vf_lut: gammaval709()
- cinedec: report white balance gain coefficients using metadata
- swscale/utils: support bayer input + scaling, and bayer input + any supported output
- swscale: support internal scaler cascades
- avformat/dtsdec: dts_probe: check reserved bit, check lfe, check sr_code similarity
- avformat/segment: export inner muxer timebase
- Remove fminf() emulation, fix build issues
- avcodec/mpegaudio_parser: fix off by 1 error in bitrate calculation
- Use -fno-optimize-sibling-calls on parisc also for gcc 4.9.
- ffmpeg_opt: store canvas size in decoder context
- avcodec/mpeg12dec: do not trust AVCodecContext input dimensions
version 2.4.3:
- avcodec/svq1dec: zero terminate embedded message before printing
- avcodec/cook: check that the subpacket sizes fit in block_align
- avcodec/g2meet: check tile dimensions to avoid integer overflow
- avcodec/utils: Align dimensions by at least their chroma sub-sampling factors.
- avcodec/dnxhddec: treat pix_fmt like width/height
- avcodec/dxa: check dimensions
- avcodec/dirac_arith: fix integer overflow
- avcodec/diracdec: Tighter checks on CODEBLOCKS_X/Y
- avcodec/diracdec: Use 64bit in calculation of codeblock coordinates
- avcodec/sgidec: fix count check
- avcodec/sgidec: fix linesize for 16bit
- avcodec/hevc_ps: Check default display window bitstream and skip if invalid
- avcodec/tiffenc: properly compute packet size
- lavd: export all symbols with av_ prefix
- avformat/mxfdec: Fix termination of mxf_data_essence_container_uls
- postproc: fix qp count
- postproc/postprocess: fix quant store for fq mode
- vf_drawtext: add missing clear of pointers after av_expr_free()
- utvideoenc: properly set slice height/last line
- swresample: fix sample drop loop end condition
- resample: Avoid off-by-1 errors in PTS calcs.
- imc: fix order of operations in coefficients read
- hevc_mvs: make sure to always initialize the temporal MV fully
- hevc_mvs: initialize the temporal MV in case of missing reference
version 2.4.2:
- avcodec/on2avc: Check number of channels
- avcodec/hevc: fix chroma transform_add size
- avcodec/h264: Check mode before considering mixed mode intra prediction
- avformat/mpegts: use a padded buffer in read_sl_header()
- avformat/mpegts: Check desc_len / get8() return code
- avcodec/vorbisdec: Fix off by 1 error in ptns_to_read
- sdp: add support for H.261
- avcodec/svq3: Do not memcpy AVFrame
- avcodec/smc: fix off by 1 error
- avcodec/qpeg: fix off by 1 error in MV bounds check
- avcodec/gifdec: factorize interleave end handling out
- avcodec/cinepak: fix integer underflow
- avcodec/pngdec: Check bits per pixel before setting monoblack pixel format
- avcodec/pngdec: Calculate MPNG bytewidth more defensively
- avcodec/tiff: more completely check bpp/bppcount
- avcodec/mmvideo: Bounds check 2nd line of HHV Intra blocks
- avcodec/h263dec: Fix decoding messenger.h263
- avcodec/utils: Add case for jv to avcodec_align_dimensions2()
- avcodec/mjpegdec: check bits per pixel for changes similar to dimensions
- avcodec/jpeglsdec: Check run value more completely in ls_decode_line()
- avformat/hlsenc: export inner muxer timebase
- configure: add noexecstack to linker options if supported.
- avcodec/ac3enc_template: fix out of array read
- avutil/x86/cpu: fix cpuid sub-leaf selection
- avformat/img2dec: enable generic seeking for image pipes
- avformat/img2dec: initialize pkt->pos for image pipes
- avformat/img2dec: pass error code and signal EOF
- avformat/img2dec: fix error code at EOF for pipes
- libavutil/opt: fix av_opt_set_channel_layout() to access correct memory address
- tests/fate-run.sh: Cat .err file in case of error with V>0
- avformat/riffenc: Filter out "BottomUp" in ff_put_bmp_header()
- avcodec/webp: fix default palette color 0xff000000 -> 0x00000000
- avcodec/asvenc: fix AAN scaling
- Fix compile error on arm4/arm5 platform
version 2.4.1:
- swsscale: Allow chroma samples to be above and to the left of luma samples
- swscale: Allow chroma samples to be above and to the left of luma samples
- avcodec/libilbc: support for latest git of libilbc
- avcodec/webp: treat out-of-bound palette index as translucent black
- vf_deshake: rename Transform.vector to Transform.vec to avoid compiler confusion

View File

@@ -111,7 +111,7 @@ endef
$(foreach P,$(PROGS),$(eval $(call DOPROG,$(P:$(PROGSSUF)$(EXESUF)=))))
ffprobe.o cmdutils.o : libavutil/ffversion.h
ffprobe.o cmdutils.o libavcodec/utils.o libavformat/utils.o libavdevice/avdevice.o libavfilter/avfilter.o libavutil/utils.o libpostproc/postprocess.o libswresample/swresample.o libswscale/utils.o : libavutil/ffversion.h
$(PROGS): %$(PROGSSUF)$(EXESUF): %$(PROGSSUF)_g$(EXESUF)
$(CP) $< $@

View File

@@ -1 +1 @@
2.4.1
2.4.8

View File

@@ -444,7 +444,7 @@ int locate_option(int argc, char **argv, const OptionDef *options,
(po->name && !strcmp(optname, po->name)))
return i;
if (po->flags & HAS_ARG)
if (!po->name || po->flags & HAS_ARG)
i++;
}
return 0;
@@ -1857,7 +1857,7 @@ int read_yesno(void)
int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
{
int ret;
int64_t ret;
FILE *f = av_fopen_utf8(filename, "rb");
if (!f) {
@@ -1865,19 +1865,31 @@ int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
strerror(errno));
return AVERROR(errno);
}
fseek(f, 0, SEEK_END);
*size = ftell(f);
fseek(f, 0, SEEK_SET);
if (*size == (size_t)-1) {
av_log(NULL, AV_LOG_ERROR, "IO error: %s\n", strerror(errno));
fclose(f);
return AVERROR(errno);
ret = fseek(f, 0, SEEK_END);
if (ret == -1) {
ret = AVERROR(errno);
goto out;
}
ret = ftell(f);
if (ret < 0) {
ret = AVERROR(errno);
goto out;
}
*size = ret;
ret = fseek(f, 0, SEEK_SET);
if (ret == -1) {
ret = AVERROR(errno);
goto out;
}
*bufptr = av_malloc(*size + 1);
if (!*bufptr) {
av_log(NULL, AV_LOG_ERROR, "Could not allocate file buffer\n");
fclose(f);
return AVERROR(ENOMEM);
ret = AVERROR(ENOMEM);
goto out;
}
ret = fread(*bufptr, 1, *size, f);
if (ret < *size) {
@@ -1893,6 +1905,8 @@ int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
(*bufptr)[(*size)++] = '\0';
}
out:
av_log(NULL, AV_LOG_ERROR, "IO error: %s\n", av_err2str(ret));
fclose(f);
return ret;
}

22
configure vendored
View File

@@ -1620,7 +1620,6 @@ HEADERS_LIST="
asm_types_h
cdio_paranoia_h
cdio_paranoia_paranoia_h
CL_cl_h
dev_bktr_ioctl_bt848_h
dev_bktr_ioctl_meteor_h
dev_ic_bt8xx_h
@@ -1668,7 +1667,6 @@ MATH_FUNCS="
exp2
exp2f
expf
fminf
isinf
isnan
ldexpf
@@ -1744,6 +1742,7 @@ SYSTEM_FUNCS="
TOOLCHAIN_FEATURES="
as_dn_directive
as_func
as_object_arch
asm_mod_q
attribute_may_alias
attribute_packed
@@ -3934,6 +3933,9 @@ case "$arch" in
;;
x86)
check_64bit x86_32 x86_64 'sizeof(void *) > 4'
# Treat x32 as x64 for now. Note it also needs spic=$shared
test "$subarch" = "x86_32" && check_cpp_condition stddef.h 'defined(__x86_64__)' &&
subarch=x86_64
if test "$subarch" = "x86_64"; then
spic=$shared
fi
@@ -4423,6 +4425,11 @@ if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then
check_as <<EOF && enable as_func
.func test
.endfunc
EOF
# llvm's integrated assembler supports .object_arch from llvm 3.5
enabled arm && test "$objformat" = elf && check_as <<EOF && enable as_object_arch
.object_arch armv4
EOF
fi
@@ -4500,7 +4507,7 @@ elif enabled parisc; then
if enabled gcc; then
case $($cc -dumpversion) in
4.[3-8].*) check_cflags -fno-optimize-sibling-calls ;;
4.[3-9].*) check_cflags -fno-optimize-sibling-calls ;;
esac
fi
@@ -4608,6 +4615,7 @@ fi
check_code cc arm_neon.h "int16x8_t test = vdupq_n_s16(0)" && enable intrinsics_neon
check_ldflags -Wl,--as-needed
check_ldflags -Wl,-z,noexecstack
if check_func dlopen; then
ldl=
@@ -4707,7 +4715,6 @@ check_func_headers glob.h glob
enabled xlib &&
check_func_headers "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv -lX11 -lXext
check_header cl/cl.h
check_header direct.h
check_header dlfcn.h
check_header dxva.h
@@ -4781,7 +4788,6 @@ disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersi
atan2f_args=2
ldexpf_args=2
powf_args=2
fminf_args=2
for func in $MATH_FUNCS; do
eval check_mathfunc $func \${${func}_args:-1}
@@ -4942,6 +4948,7 @@ check_header linux/videodev2.h
check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
check_header sys/videoio.h
check_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
# check that WM_CAP_DRIVER_CONNECT is defined to the proper value
@@ -4981,7 +4988,7 @@ enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
if enabled libcdio; then
check_lib2 "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
check_lib2 "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
die "ERROR: libcdio-paranoia not found"
die "ERROR: No usable libcdio/cdparanoia found"
fi
enabled xlib &&
@@ -5597,7 +5604,7 @@ cat > $TMPH <<EOF
#define FFMPEG_CONFIG_H
#define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
#define FFMPEG_LICENSE "$(c_escape $license)"
#define CONFIG_THIS_YEAR 2014
#define CONFIG_THIS_YEAR 2015
#define FFMPEG_DATADIR "$(eval c_escape $datadir)"
#define AVCONV_DATADIR "$(eval c_escape $datadir)"
#define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
@@ -5625,6 +5632,7 @@ enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
mkdir -p doc
mkdir -p tests
echo "@c auto-generated by configure" > doc/config.texi
print_config ARCH_ "$config_files" $ARCH_LIST

View File

@@ -148,7 +148,7 @@ API changes, most recent first:
Increase FF_INPUT_BUFFER_PADDING_SIZE to 32 due to some corner cases needing
it
2014-06-10 - xxxxxxx - lavf 55.43.100 - avformat.h
2014-06-10 - 5482780 - lavf 55.43.100 - avformat.h
New field int64_t max_analyze_duration2 instead of deprecated
int max_analyze_duration.
@@ -172,7 +172,7 @@ API changes, most recent first:
Add strict_std_compliance and related AVOptions to support experimental
muxing.
2014-05-26 - xxxxxxx - lavu 52.87.100 - threadmessage.h
2014-05-26 - 55cc60c - lavu 52.87.100 - threadmessage.h
Add thread message queue API.
2014-05-26 - c37d179 - lavf 55.41.100 - avformat.h
@@ -182,7 +182,7 @@ API changes, most recent first:
Add av_stream_get_side_data() to access stream-level side data
in the same way as av_packet_get_side_data().
2014-05-xx - xxxxxxx - lavu 52.86.100 - fifo.h
2014-05-20 - 7336e39 - lavu 52.86.100 - fifo.h
Add av_fifo_alloc_array() function.
2014-05-19 - ef1d4ee / bddd8cb - lavu 52.85.100 / 53.15.0 - frame.h, display.h
@@ -214,10 +214,10 @@ API changes, most recent first:
2014-05-11 - 14aef38 / 66e6c8a - lavu 52.83.100 / 53.14.0 - pixfmt.h
Add AV_PIX_FMT_VDA for new-style VDA acceleration.
2014-05-xx - xxxxxxx - lavu 52.82.0 - fifo.h
2014-05-07 - 351f611 - lavu 52.82.100 - fifo.h
Add av_fifo_freep() function.
2014-05-02 - ba52fb11 - lavu 52.81.0 - opt.h
2014-05-02 - ba52fb11 - lavu 52.81.100 - opt.h
Add av_opt_set_dict2() function.
2014-05-01 - e77b985 / a2941c8 - lavc 55.60.103 / 55.50.3 - avcodec.h
@@ -236,10 +236,14 @@ API changes, most recent first:
Deprecate CODEC_FLAG_INPUT_PRESERVED. Its functionality is replaced by passing
reference-counted frames to encoders.
2014-04-30 - 617e866 - lavu 52.81.100 - pixdesc.h
Add av_find_best_pix_fmt_of_2(), av_get_pix_fmt_loss()
Deprecate avcodec_get_pix_fmt_loss(), avcodec_find_best_pix_fmt_of_2()
2014-04-29 - 1bf6396 - lavc 55.60.100 - avcodec.h
Add AVCodecDescriptor.mime_types field.
2014-04-29 - xxxxxxx - lavu 52.80.0 - hash.h
2014-04-29 - b804eb4 - lavu 52.80.100 - hash.h
Add av_hash_final_bin(), av_hash_final_hex() and av_hash_final_b64().
2014-03-07 - 8b2a130 - lavc 55.50.0 / 55.53.100 - dxva2.h
@@ -251,7 +255,7 @@ API changes, most recent first:
2014-04-17 - a8d01a7 / 0983d48 - lavu 53.12.0 / 52.77.100 - crc.h
Add AV_CRC_16_ANSI_LE crc variant.
2014-04-XX - xxxxxxx - lavf xx.xx.1xx - avformat.h
2014-04-15 - ef818d8 - lavf 55.37.101 - avformat.h
Add av_format_inject_global_side_data()
2014-04-12 - 4f698be - lavu 52.76.100 - log.h
@@ -331,7 +335,7 @@ API changes, most recent first:
2014-02-19 - f4c8d00 / 6bb8720 - lavu 52.64.101 / 53.3.1 - opt.h
Deprecate unused AV_OPT_FLAG_METADATA.
2014-02-xx - xxxxxxx - lavd 55.10.100 - avdevice.h
2014-02-16 - 81c3f81 - lavd 55.10.100 - avdevice.h
Add avdevice_list_devices() and avdevice_free_list_devices()
2014-02-16 - db3c970 - lavf 55.33.100 - avio.h
@@ -372,7 +376,7 @@ API changes, most recent first:
2014-01-19 - 1a193c4 - lavf 55.25.100 - avformat.h
Add avformat_get_mov_video_tags() and avformat_get_mov_audio_tags().
2014-01-19 - xxxxxxx - lavu 52.63.100 - rational.h
2014-01-19 - 3532dd5 - lavu 52.63.100 - rational.h
Add av_make_q() function.
2014-01-05 - 4cf4da9 / 5b4797a - lavu 52.62.100 / 53.2.0 - frame.h

View File

@@ -31,7 +31,7 @@ PROJECT_NAME = FFmpeg
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER = 2.4.1
PROJECT_NUMBER = 2.4.8
# With the PROJECT_LOGO tag one can specify a logo or icon that is included
# in the documentation. The maximum height of the logo should not exceed 55

View File

@@ -29,6 +29,7 @@ OBJS=$(addsuffix .o,$(EXAMPLES))
# the following examples make explicit use of the math library
avcodec: LDLIBS += -lm
decoding_encoding: LDLIBS += -lm
muxing: LDLIBS += -lm
resampling_audio: LDLIBS += -lm

View File

@@ -116,6 +116,10 @@ static int open_output_file(const char *filename)
|| dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) {
/* in this example, we choose transcoding to same codec */
encoder = avcodec_find_encoder(dec_ctx->codec_id);
if (!encoder) {
av_log(NULL, AV_LOG_FATAL, "Neccessary encoder not found\n");
return AVERROR_INVALIDDATA;
}
/* In this example, we transcode to same properties (picture size,
* sample rate etc.). These properties can be changed for output

View File

@@ -298,7 +298,7 @@ FFmpeg has a @url{http://ffmpeg.org/ffmpeg-protocols.html#concat,
@code{concat}} protocol designed specifically for that, with examples in the
documentation.
A few multimedia containers (MPEG-1, MPEG-2 PS, DV) allow to concatenate
A few multimedia containers (MPEG-1, MPEG-2 PS, DV) allow one to concatenate
video by merely concatenating the files containing them.
Hence you may concatenate your multimedia files by first transcoding them to

View File

@@ -71,7 +71,7 @@ the HTTP server (configured through the @option{HTTPPort} option), and
configuration file.
Each feed is associated to a file which is stored on disk. This stored
file is used to allow to send pre-recorded data to a player as fast as
file is used to send pre-recorded data to a player as fast as
possible when new content is added in real-time to the stream.
A "live-stream" or "stream" is a resource published by

View File

@@ -3389,7 +3389,7 @@ Set number overlapping pixels for each block. Since the filter can be slow, you
may want to reduce this value, at the cost of a less effective filter and the
risk of various artefacts.
If the overlapping value doesn't allow to process the whole input width or
If the overlapping value doesn't permit processing the whole input width or
height, a warning will be displayed and according borders won't be denoised.
Default value is @var{blocksize}-1, which is the best possible setting.

View File

@@ -23,7 +23,7 @@ Reduce buffering.
@item probesize @var{integer} (@emph{input})
Set probing size in bytes, i.e. the size of the data to analyze to get
stream information. A higher value will allow to detect more
stream information. A higher value will enable detecting more
information in case it is dispersed into the stream, but will increase
latency. Must be an integer not lesser than 32. It is 5000000 by default.
@@ -63,7 +63,7 @@ Default is 0.
@item analyzeduration @var{integer} (@emph{input})
Specify how many microseconds are analyzed to probe the input. A
higher value will allow to detect more accurate information, but will
higher value will enable detecting more accurate information, but will
increase latency. It defaults to 5,000,000 microseconds = 5 seconds.
@item cryptokey @var{hexadecimal string} (@emph{input})

View File

@@ -1,7 +1,7 @@
@chapter Input Devices
@c man begin INPUT DEVICES
Input devices are configured elements in FFmpeg which allow to access
Input devices are configured elements in FFmpeg which enable accessing
the data coming from a multimedia device attached to your system.
When you configure your FFmpeg build, all the supported input devices

View File

@@ -1081,8 +1081,8 @@ Set raise error timeout, expressed in microseconds.
This option is only relevant in read mode: if no data arrived in more
than this time interval, raise error.
@item listen_timeout=@var{microseconds}
Set listen timeout, expressed in microseconds.
@item listen_timeout=@var{milliseconds}
Set listen timeout, expressed in milliseconds.
@end table
The following example shows how to setup a listening TCP connection

View File

@@ -14,9 +14,9 @@
# FFmpeg is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# You should have received a copy of the GNU General Public
# License along with FFmpeg; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

View File

@@ -844,7 +844,7 @@ Return 1.0 if @var{x} is +/-INFINITY, 0.0 otherwise.
Return 1.0 if @var{x} is NAN, 0.0 otherwise.
@item ld(var)
Allow to load the value of the internal variable with number
Load the value of the internal variable with number
@var{var}, which was previously stored with st(@var{var}, @var{expr}).
The function returns the loaded value.
@@ -912,7 +912,7 @@ Compute the square root of @var{expr}. This is equivalent to
Compute expression @code{1/(1 + exp(4*x))}.
@item st(var, expr)
Allow to store the value of the expression @var{expr} in an internal
Store the value of the expression @var{expr} in an internal
variable. @var{var} specifies the number of the variable where to
store the value, and it is a value ranging from 0 to 9. The function
returns the value stored in the internal variable.

View File

@@ -978,10 +978,8 @@ static void do_video_out(AVFormatContext *s,
/* raw pictures are written as AVPicture structure to
avoid any copies. We support temporarily the older
method. */
mux_enc->coded_frame->interlaced_frame = in_picture->interlaced_frame;
mux_enc->coded_frame->top_field_first = in_picture->top_field_first;
if (mux_enc->coded_frame->interlaced_frame)
mux_enc->field_order = mux_enc->coded_frame->top_field_first ? AV_FIELD_TB:AV_FIELD_BT;
if (in_picture->interlaced_frame)
mux_enc->field_order = in_picture->top_field_first ? AV_FIELD_TB:AV_FIELD_BT;
else
mux_enc->field_order = AV_FIELD_PROGRESSIVE;
pkt.data = (uint8_t *)in_picture;
@@ -2463,7 +2461,7 @@ static int transcode_init(void)
AVFormatContext *oc;
OutputStream *ost;
InputStream *ist;
char error[1024];
char error[1024] = {0};
int want_sdp = 1;
for (i = 0; i < nb_filtergraphs; i++) {

View File

@@ -702,7 +702,7 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
MATCH_PER_STREAM_OPT(fix_sub_duration, i, ist->fix_sub_duration, ic, st);
MATCH_PER_STREAM_OPT(canvas_sizes, str, canvas_size, ic, st);
if (canvas_size &&
av_parse_video_size(&dec->width, &dec->height, canvas_size) < 0) {
av_parse_video_size(&ist->dec_ctx->width, &ist->dec_ctx->height, canvas_size) < 0) {
av_log(NULL, AV_LOG_FATAL, "Invalid canvas size: %s.\n", canvas_size);
exit_program(1);
}

View File

@@ -38,15 +38,15 @@ static av_cold int zero12v_decode_init(AVCodecContext *avctx)
static int zero12v_decode_frame(AVCodecContext *avctx, void *data,
int *got_frame, AVPacket *avpkt)
{
int line = 0, ret;
int line, ret;
const int width = avctx->width;
AVFrame *pic = data;
uint16_t *y, *u, *v;
const uint8_t *line_end, *src = avpkt->data;
int stride = avctx->width * 8 / 3;
if (width == 1) {
av_log(avctx, AV_LOG_ERROR, "Width 1 not supported.\n");
if (width <= 1 || avctx->height <= 0) {
av_log(avctx, AV_LOG_ERROR, "Dimensions %dx%d not supported.\n", width, avctx->height);
return AVERROR_INVALIDDATA;
}
@@ -67,45 +67,45 @@ static int zero12v_decode_frame(AVCodecContext *avctx, void *data,
pic->pict_type = AV_PICTURE_TYPE_I;
pic->key_frame = 1;
y = (uint16_t *)pic->data[0];
u = (uint16_t *)pic->data[1];
v = (uint16_t *)pic->data[2];
line_end = avpkt->data + stride;
for (line = 0; line < avctx->height; line++) {
uint16_t y_temp[6] = {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000};
uint16_t u_temp[3] = {0x8000, 0x8000, 0x8000};
uint16_t v_temp[3] = {0x8000, 0x8000, 0x8000};
int x;
y = (uint16_t *)(pic->data[0] + line * pic->linesize[0]);
u = (uint16_t *)(pic->data[1] + line * pic->linesize[1]);
v = (uint16_t *)(pic->data[2] + line * pic->linesize[2]);
while (line++ < avctx->height) {
while (1) {
uint32_t t = AV_RL32(src);
for (x = 0; x < width; x += 6) {
uint32_t t;
if (width - x < 6 || line_end - src < 16) {
y = y_temp;
u = u_temp;
v = v_temp;
}
if (line_end - src < 4)
break;
t = AV_RL32(src);
src += 4;
*u++ = t << 6 & 0xFFC0;
*y++ = t >> 4 & 0xFFC0;
*v++ = t >> 14 & 0xFFC0;
if (src >= line_end - 1) {
*y = 0x80;
src++;
line_end += stride;
y = (uint16_t *)(pic->data[0] + line * pic->linesize[0]);
u = (uint16_t *)(pic->data[1] + line * pic->linesize[1]);
v = (uint16_t *)(pic->data[2] + line * pic->linesize[2]);
if (line_end - src < 4)
break;
}
t = AV_RL32(src);
src += 4;
*y++ = t << 6 & 0xFFC0;
*u++ = t >> 4 & 0xFFC0;
*y++ = t >> 14 & 0xFFC0;
if (src >= line_end - 2) {
if (!(width & 1)) {
*y = 0x80;
src += 2;
}
line_end += stride;
y = (uint16_t *)(pic->data[0] + line * pic->linesize[0]);
u = (uint16_t *)(pic->data[1] + line * pic->linesize[1]);
v = (uint16_t *)(pic->data[2] + line * pic->linesize[2]);
if (line_end - src < 4)
break;
}
t = AV_RL32(src);
src += 4;
@@ -113,15 +113,8 @@ static int zero12v_decode_frame(AVCodecContext *avctx, void *data,
*y++ = t >> 4 & 0xFFC0;
*u++ = t >> 14 & 0xFFC0;
if (src >= line_end - 1) {
*y = 0x80;
src++;
line_end += stride;
y = (uint16_t *)(pic->data[0] + line * pic->linesize[0]);
u = (uint16_t *)(pic->data[1] + line * pic->linesize[1]);
v = (uint16_t *)(pic->data[2] + line * pic->linesize[2]);
if (line_end - src < 4)
break;
}
t = AV_RL32(src);
src += 4;
@@ -129,18 +122,21 @@ static int zero12v_decode_frame(AVCodecContext *avctx, void *data,
*v++ = t >> 4 & 0xFFC0;
*y++ = t >> 14 & 0xFFC0;
if (src >= line_end - 2) {
if (width & 1) {
*y = 0x80;
src += 2;
}
line_end += stride;
y = (uint16_t *)(pic->data[0] + line * pic->linesize[0]);
u = (uint16_t *)(pic->data[1] + line * pic->linesize[1]);
v = (uint16_t *)(pic->data[2] + line * pic->linesize[2]);
if (width - x < 6)
break;
}
}
if (x < width) {
y = x + (uint16_t *)(pic->data[0] + line * pic->linesize[0]);
u = x/2 + (uint16_t *)(pic->data[1] + line * pic->linesize[1]);
v = x/2 + (uint16_t *)(pic->data[2] + line * pic->linesize[2]);
memcpy(y, y_temp, sizeof(*y) * (width - x));
memcpy(u, u_temp, sizeof(*u) * (width - x + 1) / 2);
memcpy(v, v_temp, sizeof(*v) * (width - x + 1) / 2);
}
line_end += stride;
src = line_end - stride;
}
*got_frame = 1;

View File

@@ -206,7 +206,7 @@ OBJS-$(CONFIG_DVVIDEO_DECODER) += dvdec.o dv.o dvdata.o
OBJS-$(CONFIG_DVVIDEO_ENCODER) += dvenc.o dv.o dvdata.o
OBJS-$(CONFIG_DXA_DECODER) += dxa.o
OBJS-$(CONFIG_DXTORY_DECODER) += dxtory.o
OBJS-$(CONFIG_EAC3_DECODER) += eac3dec.o eac3_data.o
OBJS-$(CONFIG_EAC3_DECODER) += eac3_data.o
OBJS-$(CONFIG_EAC3_ENCODER) += eac3enc.o eac3_data.o
OBJS-$(CONFIG_EACMV_DECODER) += eacmv.o
OBJS-$(CONFIG_EAMAD_DECODER) += eamad.o eaidct.o mpeg12.o \
@@ -651,7 +651,7 @@ OBJS-$(CONFIG_VAAPI) += vaapi.o
OBJS-$(CONFIG_VDA) += vda.o
OBJS-$(CONFIG_VDPAU) += vdpau.o
OBJS-$(CONFIG_H263_VAAPI_HWACCEL) += vaapi_mpeg4.o vaapi_mpeg.o
OBJS-$(CONFIG_H263_VAAPI_HWACCEL) += vaapi_mpeg4.o
OBJS-$(CONFIG_H263_VDPAU_HWACCEL) += vdpau_mpeg4.o
OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o
OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o
@@ -660,13 +660,13 @@ OBJS-$(CONFIG_H264_VDPAU_HWACCEL) += vdpau_h264.o
OBJS-$(CONFIG_MPEG1_VDPAU_HWACCEL) += vdpau_mpeg12.o
OBJS-$(CONFIG_MPEG1_XVMC_HWACCEL) += mpegvideo_xvmc.o
OBJS-$(CONFIG_MPEG2_DXVA2_HWACCEL) += dxva2_mpeg2.o
OBJS-$(CONFIG_MPEG2_VAAPI_HWACCEL) += vaapi_mpeg2.o vaapi_mpeg.o
OBJS-$(CONFIG_MPEG2_VAAPI_HWACCEL) += vaapi_mpeg2.o
OBJS-$(CONFIG_MPEG2_VDPAU_HWACCEL) += vdpau_mpeg12.o
OBJS-$(CONFIG_MPEG2_XVMC_HWACCEL) += mpegvideo_xvmc.o
OBJS-$(CONFIG_MPEG4_VAAPI_HWACCEL) += vaapi_mpeg4.o vaapi_mpeg.o
OBJS-$(CONFIG_MPEG4_VAAPI_HWACCEL) += vaapi_mpeg4.o
OBJS-$(CONFIG_MPEG4_VDPAU_HWACCEL) += vdpau_mpeg4.o
OBJS-$(CONFIG_VC1_DXVA2_HWACCEL) += dxva2_vc1.o
OBJS-$(CONFIG_VC1_VAAPI_HWACCEL) += vaapi_vc1.o vaapi_mpeg.o
OBJS-$(CONFIG_VC1_VAAPI_HWACCEL) += vaapi_vc1.o
OBJS-$(CONFIG_VC1_VDPAU_HWACCEL) += vdpau_vc1.o
# libavformat dependencies

View File

@@ -28,6 +28,7 @@
#include "a64tables.h"
#include "elbg.h"
#include "internal.h"
#include "libavutil/avassert.h"
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
@@ -65,7 +66,7 @@ static const int mc_colors[5]={0x0,0xb,0xc,0xf,0x1};
//static const int mc_colors[5]={0x0,0x8,0xa,0xf,0x7};
//static const int mc_colors[5]={0x0,0x9,0x8,0xa,0x3};
static void to_meta_with_crop(AVCodecContext *avctx, AVFrame *p, int *dest)
static void to_meta_with_crop(AVCodecContext *avctx, const AVFrame *p, int *dest)
{
int blockx, blocky, x, y;
int luma = 0;
@@ -78,9 +79,13 @@ static void to_meta_with_crop(AVCodecContext *avctx, AVFrame *p, int *dest)
for (y = blocky; y < blocky + 8 && y < C64YRES; y++) {
for (x = blockx; x < blockx + 8 && x < C64XRES; x += 2) {
if(x < width && y < height) {
/* build average over 2 pixels */
luma = (src[(x + 0 + y * p->linesize[0])] +
src[(x + 1 + y * p->linesize[0])]) / 2;
if (x + 1 < width) {
/* build average over 2 pixels */
luma = (src[(x + 0 + y * p->linesize[0])] +
src[(x + 1 + y * p->linesize[0])]) / 2;
} else {
luma = src[(x + y * p->linesize[0])];
}
/* write blocks as linear data now so they are suitable for elbg */
dest[0] = luma;
}
@@ -186,7 +191,6 @@ static void render_charset(AVCodecContext *avctx, uint8_t *charset,
static av_cold int a64multi_close_encoder(AVCodecContext *avctx)
{
A64Context *c = avctx->priv_data;
av_frame_free(&avctx->coded_frame);
av_freep(&c->mc_meta_charset);
av_freep(&c->mc_best_cb);
av_freep(&c->mc_charset);
@@ -220,7 +224,7 @@ static av_cold int a64multi_encode_init(AVCodecContext *avctx)
a64_palette[mc_colors[a]][2] * 0.11;
}
if (!(c->mc_meta_charset = av_malloc_array(c->mc_lifetime, 32000 * sizeof(int))) ||
if (!(c->mc_meta_charset = av_mallocz_array(c->mc_lifetime, 32000 * sizeof(int))) ||
!(c->mc_best_cb = av_malloc(CHARSET_CHARS * 32 * sizeof(int))) ||
!(c->mc_charmap = av_mallocz_array(c->mc_lifetime, 1000 * sizeof(int))) ||
!(c->mc_colram = av_mallocz(CHARSET_CHARS * sizeof(uint8_t))) ||
@@ -238,14 +242,6 @@ static av_cold int a64multi_encode_init(AVCodecContext *avctx)
AV_WB32(avctx->extradata, c->mc_lifetime);
AV_WB32(avctx->extradata + 16, INTERLACED);
avctx->coded_frame = av_frame_alloc();
if (!avctx->coded_frame) {
a64multi_close_encoder(avctx);
return AVERROR(ENOMEM);
}
avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I;
avctx->coded_frame->key_frame = 1;
if (!avctx->codec_tag)
avctx->codec_tag = AV_RL32("a64m");
@@ -270,10 +266,9 @@ static void a64_compress_colram(unsigned char *buf, int *charmap, uint8_t *colra
}
static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
const AVFrame *pict, int *got_packet)
const AVFrame *p, int *got_packet)
{
A64Context *c = avctx->priv_data;
AVFrame *const p = avctx->coded_frame;
int frame;
int x, y;
@@ -304,7 +299,7 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
}
/* no data, means end encoding asap */
if (!pict) {
if (!p) {
/* all done, end encoding */
if (!c->mc_lifetime) return 0;
/* no more frames in queue, prepare to flush remaining frames */
@@ -317,13 +312,10 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
} else {
/* fill up mc_meta_charset with data until lifetime exceeds */
if (c->mc_frame_counter < c->mc_lifetime) {
*p = *pict;
p->pict_type = AV_PICTURE_TYPE_I;
p->key_frame = 1;
to_meta_with_crop(avctx, p, meta + 32000 * c->mc_frame_counter);
c->mc_frame_counter++;
if (c->next_pts == AV_NOPTS_VALUE)
c->next_pts = pict->pts;
c->next_pts = p->pts;
/* lifetime is not reached so wait for next frame first */
return 0;
}
@@ -334,8 +326,8 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
req_size = 0;
/* any frames to encode? */
if (c->mc_lifetime) {
req_size = charset_size + c->mc_lifetime*(screen_size + colram_size);
if ((ret = ff_alloc_packet2(avctx, pkt, req_size)) < 0)
int alloc_size = charset_size + c->mc_lifetime*(screen_size + colram_size);
if ((ret = ff_alloc_packet2(avctx, pkt, alloc_size)) < 0)
return ret;
buf = pkt->data;
@@ -351,6 +343,7 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
/* advance pointers */
buf += charset_size;
req_size += charset_size;
}
/* write x frames to buf */
@@ -387,6 +380,7 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
pkt->pts = pkt->dts = c->next_pts;
c->next_pts = AV_NOPTS_VALUE;
av_assert0(pkt->size >= req_size);
pkt->size = req_size;
pkt->flags |= AV_PKT_FLAG_KEY;
*got_packet = !!req_size;

View File

@@ -165,7 +165,7 @@ static void put_audio_specific_config(AVCodecContext *avctx)
PutBitContext pb;
AACEncContext *s = avctx->priv_data;
init_put_bits(&pb, avctx->extradata, avctx->extradata_size*8);
init_put_bits(&pb, avctx->extradata, avctx->extradata_size);
put_bits(&pb, 5, 2); //object type - AAC-LC
put_bits(&pb, 4, s->samplerate_index); //sample rate index
put_bits(&pb, 4, s->channels);
@@ -746,10 +746,10 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
s->chan_map = aac_chan_configs[s->channels-1];
if (ret = dsp_init(avctx, s))
if ((ret = dsp_init(avctx, s)) < 0)
goto fail;
if (ret = alloc_buffers(avctx, s))
if ((ret = alloc_buffers(avctx, s)) < 0)
goto fail;
avctx->extradata_size = 5;
@@ -761,7 +761,8 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
lengths[1] = ff_aac_num_swb_128[i];
for (i = 0; i < s->chan_map[0]; i++)
grouping[i] = s->chan_map[i + 1] == TYPE_CPE;
if (ret = ff_psy_init(&s->psy, avctx, 2, sizes, lengths, s->chan_map[0], grouping))
if ((ret = ff_psy_init(&s->psy, avctx, 2, sizes, lengths,
s->chan_map[0], grouping)) < 0)
goto fail;
s->psypp = ff_psy_preprocess_init(avctx);
s->coder = &ff_aac_coders[s->options.aac_coder];

View File

@@ -556,7 +556,8 @@ static int sbr_hf_calc_npatches(AACContext *ac, SpectralBandReplication *sbr)
k = sbr->n_master;
} while (sb != sbr->kx[1] + sbr->m[1]);
if (sbr->num_patches > 1 && sbr->patch_num_subbands[sbr->num_patches-1] < 3)
if (sbr->num_patches > 1 &&
sbr->patch_num_subbands[sbr->num_patches - 1] < 3)
sbr->num_patches--;
return 0;

View File

@@ -78,6 +78,7 @@ av_cold void ff_h264dsp_init_aarch64(H264DSPContext *c, const int bit_depth,
c->h264_v_loop_filter_luma = ff_h264_v_loop_filter_luma_neon;
c->h264_h_loop_filter_luma = ff_h264_h_loop_filter_luma_neon;
c->h264_v_loop_filter_chroma = ff_h264_v_loop_filter_chroma_neon;
if (chroma_format_idc <= 1)
c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma_neon;
c->weight_h264_pixels_tab[0] = ff_weight_h264_pixels_16_neon;

View File

@@ -872,7 +872,7 @@ static int decode_audio_block(AC3DecodeContext *s, int blk)
start_subband += start_subband - 7;
end_subband = get_bits(gbc, 3) + 5;
#if USE_FIXED
s->spx_dst_end_freq = end_freq_inv_tab[end_subband];
s->spx_dst_end_freq = end_freq_inv_tab[end_subband-5];
#endif
if (end_subband > 7)
end_subband += end_subband - 7;
@@ -939,7 +939,7 @@ static int decode_audio_block(AC3DecodeContext *s, int blk)
nblend = 0;
sblend = 0x800000;
} else if (nratio > 0x7fffff) {
nblend = 0x800000;
nblend = 14529495; // sqrt(3) in FP.23
sblend = 0;
} else {
nblend = fixed_sqrt(nratio, 23);

View File

@@ -243,19 +243,19 @@ typedef struct AC3DecodeContext {
* Parse the E-AC-3 frame header.
* This parses both the bit stream info and audio frame header.
*/
int ff_eac3_parse_header(AC3DecodeContext *s);
static int ff_eac3_parse_header(AC3DecodeContext *s);
/**
* Decode mantissas in a single channel for the entire frame.
* This is used when AHT mode is enabled.
*/
void ff_eac3_decode_transform_coeffs_aht_ch(AC3DecodeContext *s, int ch);
static void ff_eac3_decode_transform_coeffs_aht_ch(AC3DecodeContext *s, int ch);
/**
* Apply spectral extension to each channel by copying lower frequency
* coefficients to higher frequency bins and applying side information to
* approximate the original high frequency signal.
*/
void ff_eac3_apply_spectral_extension(AC3DecodeContext *s);
static void ff_eac3_apply_spectral_extension(AC3DecodeContext *s);
#endif /* AVCODEC_AC3DEC_H */

View File

@@ -164,6 +164,7 @@ static void ac3_downmix_c_fixed16(int16_t **samples, int16_t (*matrix)[2],
}
}
#include "eac3dec.c"
#include "ac3dec.c"
static const AVOption options[] = {

View File

@@ -28,6 +28,7 @@
* Upmix delay samples from stereo to original channel layout.
*/
#include "ac3dec.h"
#include "eac3dec.c"
#include "ac3dec.c"
static const AVOption options[] = {

View File

@@ -263,7 +263,7 @@ static void apply_channel_coupling(AC3EncodeContext *s)
energy_cpl = energy[blk][CPL_CH][bnd];
energy_ch = energy[blk][ch][bnd];
blk1 = blk+1;
while (!s->blocks[blk1].new_cpl_coords[ch] && blk1 < s->num_blocks) {
while (blk1 < s->num_blocks && !s->blocks[blk1].new_cpl_coords[ch]) {
if (s->blocks[blk1].cpl_in_use) {
energy_cpl += energy[blk1][CPL_CH][bnd];
energy_ch += energy[blk1][ch][bnd];

View File

@@ -541,7 +541,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
case AV_CODEC_ID_ADPCM_IMA_QT:
{
PutBitContext pb;
init_put_bits(&pb, dst, pkt_size * 8);
init_put_bits(&pb, dst, pkt_size);
for (ch = 0; ch < avctx->channels; ch++) {
ADPCMChannelStatus *status = &c->status[ch];
@@ -571,7 +571,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
case AV_CODEC_ID_ADPCM_SWF:
{
PutBitContext pb;
init_put_bits(&pb, dst, pkt_size * 8);
init_put_bits(&pb, dst, pkt_size);
n = frame->nb_samples - 1;

View File

@@ -438,8 +438,8 @@ static av_cold int aic_decode_init(AVCodecContext *avctx)
ctx->mb_width = FFALIGN(avctx->width, 16) >> 4;
ctx->mb_height = FFALIGN(avctx->height, 16) >> 4;
ctx->num_x_slices = 16;
ctx->slice_width = ctx->mb_width / 16;
ctx->num_x_slices = (ctx->mb_width + 15) >> 4;
ctx->slice_width = 16;
for (i = 1; i < 32; i++) {
if (!(ctx->mb_width % i) && (ctx->mb_width / i < 32)) {
ctx->slice_width = ctx->mb_width / i;

View File

@@ -90,9 +90,11 @@ static av_cold int decode_init(AVCodecContext *avctx)
s->fg = DEFAULT_FG_COLOR;
s->bg = DEFAULT_BG_COLOR;
if (!avctx->width || !avctx->height)
ff_set_dimensions(avctx, 80 << 3, 25 << 4);
if (!avctx->width || !avctx->height) {
int ret = ff_set_dimensions(avctx, 80 << 3, 25 << 4);
if (ret < 0)
return ret;
}
return 0;
}

View File

@@ -107,8 +107,10 @@ av_cold void ff_h264dsp_init_arm(H264DSPContext *c, const int bit_depth,
{
int cpu_flags = av_get_cpu_flags();
#if HAVE_ARMV6
if (have_setend(cpu_flags))
c->startcode_find_candidate = ff_startcode_find_candidate_armv6;
#endif
if (have_neon(cpu_flags))
h264dsp_init_neon(c, bit_depth, chroma_format_idc);
}

View File

@@ -28,8 +28,10 @@ av_cold void ff_vc1dsp_init_arm(VC1DSPContext *dsp)
{
int cpu_flags = av_get_cpu_flags();
#if HAVE_ARMV6
if (have_setend(cpu_flags))
dsp->startcode_find_candidate = ff_startcode_find_candidate_armv6;
#endif
if (have_neon(cpu_flags))
ff_vc1dsp_init_neon(dsp);
}

View File

@@ -23,9 +23,10 @@
#include "libavutil/arm/asm.S"
function ff_prefetch_arm, export=1
1:
subs r2, r2, #1
pld [r0]
add r0, r0, r1
bne X(ff_prefetch_arm)
bne 1b
bx lr
endfunc

View File

@@ -26,8 +26,10 @@
#include "libavutil/attributes.h"
#include "libavutil/mem.h"
#include "aandcttab.h"
#include "asv.h"
#include "avcodec.h"
#include "dct.h"
#include "fdctdsp.h"
#include "internal.h"
#include "mathops.h"
@@ -331,8 +333,13 @@ static av_cold int encode_init(AVCodecContext *avctx)
((uint32_t *) avctx->extradata)[1] = av_le2ne32(AV_RL32("ASUS"));
for (i = 0; i < 64; i++) {
int q = 32 * scale * ff_mpeg1_default_intra_matrix[i];
a->q_intra_matrix[i] = ((a->inv_qscale << 16) + q / 2) / q;
if (a->fdsp.fdct == ff_fdct_ifast) {
int q = 32LL * scale * ff_mpeg1_default_intra_matrix[i] * ff_aanscales[i];
a->q_intra_matrix[i] = (((int64_t)a->inv_qscale << 30) + q / 2) / q;
} else {
int q = 32 * scale * ff_mpeg1_default_intra_matrix[i];
a->q_intra_matrix[i] = ((a->inv_qscale << 16) + q / 2) / q;
}
}
return 0;

View File

@@ -165,9 +165,8 @@ static av_cold int avs_decode_init(AVCodecContext * avctx)
return AVERROR(ENOMEM);
avctx->pix_fmt = AV_PIX_FMT_PAL8;
ff_set_dimensions(avctx, 318, 198);
return 0;
return ff_set_dimensions(avctx, 318, 198);
}
static av_cold int avs_decode_end(AVCodecContext *avctx)

View File

@@ -30,6 +30,7 @@
#include "golomb.h"
#include "h264chroma.h"
#include "idctdsp.h"
#include "internal.h"
#include "mathops.h"
#include "qpeldsp.h"
#include "cavs.h"
@@ -539,8 +540,8 @@ static inline void scale_mv(AVSContext *h, int *d_x, int *d_y,
{
int den = h->scale_den[FFMAX(src->ref, 0)];
*d_x = (src->x * distp * den + 256 + (src->x >> 31)) >> 9;
*d_y = (src->y * distp * den + 256 + (src->y >> 31)) >> 9;
*d_x = (src->x * distp * den + 256 + FF_SIGNBIT(src->x)) >> 9;
*d_y = (src->y * distp * den + 256 + FF_SIGNBIT(src->y)) >> 9;
}
static inline void mv_pred_median(AVSContext *h,

View File

@@ -467,7 +467,7 @@ static inline void mv_pred_direct(AVSContext *h, cavs_vector *pmv_fw,
{
cavs_vector *pmv_bw = pmv_fw + MV_BWD_OFFS;
int den = h->direct_den[col_mv->ref];
int m = col_mv->x >> 31;
int m = FF_SIGNBIT(col_mv->x);
pmv_fw->dist = h->dist[1];
pmv_bw->dist = h->dist[0];
@@ -476,7 +476,7 @@ static inline void mv_pred_direct(AVSContext *h, cavs_vector *pmv_fw,
/* scale the co-located motion vector according to its temporal span */
pmv_fw->x = (((den + (den * col_mv->x * pmv_fw->dist ^ m) - m - 1) >> 14) ^ m) - m;
pmv_bw->x = m - (((den + (den * col_mv->x * pmv_bw->dist ^ m) - m - 1) >> 14) ^ m);
m = col_mv->y >> 31;
m = FF_SIGNBIT(col_mv->y);
pmv_fw->y = (((den + (den * col_mv->y * pmv_fw->dist ^ m) - m - 1) >> 14) ^ m) - m;
pmv_bw->y = m - (((den + (den * col_mv->y * pmv_bw->dist ^ m) - m - 1) >> 14) ^ m);
}

View File

@@ -135,7 +135,7 @@ static int cinepak_decode_vectors (CinepakContext *s, cvid_strip *strip,
const uint8_t *eod = (data + size);
uint32_t flag, mask;
uint8_t *cb0, *cb1, *cb2, *cb3;
unsigned int x, y;
int x, y;
char *ip0, *ip1, *ip2, *ip3;
flag = 0;

View File

@@ -1058,7 +1058,7 @@ static av_cold int cook_decode_init(AVCodecContext *avctx)
q->avctx = avctx;
/* Take care of the codec specific extradata. */
if (extradata_size <= 0) {
if (extradata_size < 8) {
av_log(avctx, AV_LOG_ERROR, "Necessary extradata missing!\n");
return AVERROR_INVALIDDATA;
}
@@ -1215,8 +1215,8 @@ static av_cold int cook_decode_init(AVCodecContext *avctx)
q->num_subpackets++;
s++;
if (s > MAX_SUBPACKETS) {
avpriv_request_sample(avctx, "subpackets > %d", MAX_SUBPACKETS);
if (s > FFMIN(MAX_SUBPACKETS, avctx->block_align)) {
avpriv_request_sample(avctx, "subpackets > %d", FFMIN(MAX_SUBPACKETS, avctx->block_align));
return AVERROR_PATCHWELCOME;
}
}

View File

@@ -2359,6 +2359,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
#else
if (s->xch_present && !s->xch_disable) {
#endif
if (avctx->channel_layout & AV_CH_BACK_CENTER) {
avpriv_request_sample(avctx, "XCh with Back center channel");
return AVERROR_INVALIDDATA;
}
avctx->channel_layout |= AV_CH_BACK_CENTER;
if (s->lfe) {
avctx->channel_layout |= AV_CH_LOW_FREQUENCY;

View File

@@ -171,6 +171,10 @@ static inline int dirac_get_arith_uint(DiracArith *c, int follow_ctx, int data_c
{
int ret = 1;
while (!dirac_get_arith_bit(c, follow_ctx)) {
if (ret >= 0x40000000) {
av_log(NULL, AV_LOG_ERROR, "dirac_get_arith_uint overflow\n");
return -1;
}
ret <<= 1;
ret += dirac_get_arith_bit(c, data_ctx);
follow_ctx = ff_dirac_next_ctx[follow_ctx];

View File

@@ -612,10 +612,10 @@ static av_always_inline void decode_subband_internal(DiracContext *s, SubBand *b
top = 0;
for (cb_y = 0; cb_y < cb_height; cb_y++) {
bottom = (b->height * (cb_y+1)) / cb_height;
bottom = (b->height * (cb_y+1LL)) / cb_height;
left = 0;
for (cb_x = 0; cb_x < cb_width; cb_x++) {
right = (b->width * (cb_x+1)) / cb_width;
right = (b->width * (cb_x+1LL)) / cb_width;
codeblock(s, b, &gb, &c, left, right, top, bottom, blockcnt_one, is_arith);
left = right;
}
@@ -1004,8 +1004,8 @@ static int dirac_unpack_idwt_params(DiracContext *s)
/* Codeblock parameters (core syntax only) */
if (get_bits1(gb)) {
for (i = 0; i <= s->wavelet_depth; i++) {
CHECKEDREAD(s->codeblock[i].width , tmp < 1, "codeblock width invalid\n")
CHECKEDREAD(s->codeblock[i].height, tmp < 1, "codeblock height invalid\n")
CHECKEDREAD(s->codeblock[i].width , tmp < 1 || tmp > (s->avctx->width >>s->wavelet_depth-i), "codeblock width invalid\n")
CHECKEDREAD(s->codeblock[i].height, tmp < 1 || tmp > (s->avctx->height>>s->wavelet_depth-i), "codeblock height invalid\n")
}
CHECKEDREAD(s->codeblock_mode, tmp > 1, "unknown codeblock mode\n")

View File

@@ -38,6 +38,7 @@ typedef struct DNXHDContext {
BlockDSPContext bdsp;
int64_t cid; ///< compression id
unsigned int width, height;
enum AVPixelFormat pix_fmt;
unsigned int mb_width, mb_height;
uint32_t mb_scan_index[68]; /* max for 1080p */
int cur_field; ///< current interlaced field
@@ -141,7 +142,7 @@ static int dnxhd_decode_header(DNXHDContext *ctx, AVFrame *frame,
ctx->is_444 = 0;
if (buf[0x4] == 0x2) {
ctx->avctx->pix_fmt = AV_PIX_FMT_YUV444P10;
ctx->pix_fmt = AV_PIX_FMT_YUV444P10;
ctx->avctx->bits_per_raw_sample = 10;
if (ctx->bit_depth != 10) {
ff_blockdsp_init(&ctx->bdsp, ctx->avctx);
@@ -151,7 +152,7 @@ static int dnxhd_decode_header(DNXHDContext *ctx, AVFrame *frame,
}
ctx->is_444 = 1;
} else if (buf[0x21] & 0x40) {
ctx->avctx->pix_fmt = AV_PIX_FMT_YUV422P10;
ctx->pix_fmt = AV_PIX_FMT_YUV422P10;
ctx->avctx->bits_per_raw_sample = 10;
if (ctx->bit_depth != 10) {
ff_blockdsp_init(&ctx->bdsp, ctx->avctx);
@@ -160,7 +161,7 @@ static int dnxhd_decode_header(DNXHDContext *ctx, AVFrame *frame,
ctx->decode_dct_block = dnxhd_decode_dct_block_10;
}
} else {
ctx->avctx->pix_fmt = AV_PIX_FMT_YUV422P;
ctx->pix_fmt = AV_PIX_FMT_YUV422P;
ctx->avctx->bits_per_raw_sample = 8;
if (ctx->bit_depth != 8) {
ff_blockdsp_init(&ctx->bdsp, ctx->avctx);
@@ -362,7 +363,7 @@ static int dnxhd_decode_macroblock(DNXHDContext *ctx, AVFrame *frame,
dest_u = frame->data[1] + ((y * dct_linesize_chroma) << 4) + (x << (3 + shift1 + ctx->is_444));
dest_v = frame->data[2] + ((y * dct_linesize_chroma) << 4) + (x << (3 + shift1 + ctx->is_444));
if (ctx->cur_field) {
if (frame->interlaced_frame && ctx->cur_field) {
dest_y += frame->linesize[0];
dest_u += frame->linesize[1];
dest_v += frame->linesize[2];
@@ -446,7 +447,13 @@ decode_coding_unit:
avctx->width, avctx->height, ctx->width, ctx->height);
first_field = 1;
}
if (avctx->pix_fmt != AV_PIX_FMT_NONE && avctx->pix_fmt != ctx->pix_fmt) {
av_log(avctx, AV_LOG_WARNING, "pix_fmt changed: %s -> %s\n",
av_get_pix_fmt_name(avctx->pix_fmt), av_get_pix_fmt_name(ctx->pix_fmt));
first_field = 1;
}
avctx->pix_fmt = ctx->pix_fmt;
ret = ff_set_dimensions(avctx, ctx->width, ctx->height);
if (ret < 0)
return ret;

View File

@@ -117,7 +117,7 @@ static int dnxhd_10bit_dct_quantize(MpegEncContext *ctx, int16_t *block,
for (i = 1; i < 64; ++i) {
int j = scantable[i];
int sign = block[j] >> 31;
int sign = FF_SIGNBIT(block[j]);
int level = (block[j] ^ sign) - sign;
level = level * qmat[j] >> DNX10BIT_QMAT_SHIFT;
block[j] = (level ^ sign) - sign;

View File

@@ -37,7 +37,7 @@ typedef struct DVDSubContext
int has_palette;
uint8_t colormap[4];
uint8_t alpha[256];
uint8_t *buf;
uint8_t buf[0x10000];
int buf_size;
#ifdef DEBUG
int sub_id;
@@ -105,6 +105,12 @@ static int decode_rle(uint8_t *bitmap, int linesize, int w, int h,
int x, y, len, color;
uint8_t *d;
if (start >= buf_size)
return -1;
if (w <= 0 || h <= 0)
return -1;
bit_len = (buf_size - start) * 8;
init_get_bits(&gb, buf + start, bit_len);
@@ -356,10 +362,12 @@ static int decode_dvd_subtitles(DVDSubContext *ctx, AVSubtitle *sub_header,
sub_header->rects[0] = av_mallocz(sizeof(AVSubtitleRect));
sub_header->num_rects = 1;
sub_header->rects[0]->pict.data[0] = bitmap;
decode_rle(bitmap, w * 2, w, (h + 1) / 2,
buf, offset1, buf_size, is_8bit);
decode_rle(bitmap + w, w * 2, w, h / 2,
buf, offset2, buf_size, is_8bit);
if (decode_rle(bitmap, w * 2, w, (h + 1) / 2,
buf, offset1, buf_size, is_8bit) < 0)
goto fail;
if (decode_rle(bitmap + w, w * 2, w, h / 2,
buf, offset2, buf_size, is_8bit) < 0)
goto fail;
sub_header->rects[0]->pict.data[1] = av_mallocz(AVPALETTE_SIZE);
if (is_8bit) {
if (!yuv_palette)
@@ -498,15 +506,11 @@ static int append_to_cached_buf(AVCodecContext *avctx,
{
DVDSubContext *ctx = avctx->priv_data;
if (ctx->buf_size > 0xffff - buf_size) {
if (ctx->buf_size >= sizeof(ctx->buf) - buf_size) {
av_log(avctx, AV_LOG_WARNING, "Attempt to reconstruct "
"too large SPU packets aborted.\n");
av_freep(&ctx->buf);
return AVERROR_INVALIDDATA;
}
ctx->buf = av_realloc(ctx->buf, ctx->buf_size + buf_size);
if (!ctx->buf)
return AVERROR(ENOMEM);
memcpy(ctx->buf + ctx->buf_size, buf, buf_size);
ctx->buf_size += buf_size;
return 0;
@@ -522,7 +526,7 @@ static int dvdsub_decode(AVCodecContext *avctx,
AVSubtitle *sub = data;
int is_menu;
if (ctx->buf) {
if (ctx->buf_size) {
int ret = append_to_cached_buf(avctx, buf, buf_size);
if (ret < 0) {
*data_size = 0;
@@ -561,7 +565,6 @@ static int dvdsub_decode(AVCodecContext *avctx,
}
#endif
av_freep(&ctx->buf);
ctx->buf_size = 0;
*data_size = 1;
return buf_size;
@@ -583,6 +586,7 @@ static int dvdsub_parse_extradata(AVCodecContext *avctx)
{
DVDSubContext *ctx = (DVDSubContext*) avctx->priv_data;
char *dataorig, *data;
int ret = 1;
if (!avctx->extradata || !avctx->extradata_size)
return 1;
@@ -603,11 +607,9 @@ static int dvdsub_parse_extradata(AVCodecContext *avctx)
} else if (strncmp("size:", data, 5) == 0) {
int w, h;
if (sscanf(data + 5, "%dx%d", &w, &h) == 2) {
int ret = ff_set_dimensions(avctx, w, h);
if (ret < 0) {
av_free(dataorig);
return ret;
}
ret = ff_set_dimensions(avctx, w, h);
if (ret < 0)
goto fail;
}
}
@@ -615,8 +617,9 @@ static int dvdsub_parse_extradata(AVCodecContext *avctx)
data += strspn(data, "\n\r");
}
fail:
av_free(dataorig);
return 1;
return ret;
}
static av_cold int dvdsub_init(AVCodecContext *avctx)
@@ -643,7 +646,6 @@ static av_cold int dvdsub_init(AVCodecContext *avctx)
static av_cold int dvdsub_close(AVCodecContext *avctx)
{
DVDSubContext *ctx = avctx->priv_data;
av_freep(&ctx->buf);
ctx->buf_size = 0;
return 0;
}

View File

@@ -329,6 +329,11 @@ static av_cold int decode_init(AVCodecContext *avctx)
{
DxaDecContext * const c = avctx->priv_data;
if (avctx->width%4 || avctx->height%4) {
avpriv_request_sample(avctx, "dimensions are not a multiple of 4");
return AVERROR_INVALIDDATA;
}
c->prev = av_frame_alloc();
if (!c->prev)
return AVERROR(ENOMEM);

View File

@@ -65,7 +65,7 @@ static int dxtory_decode_v1_410(AVCodecContext *avctx, AVFrame *pic,
uint8_t *Y1, *Y2, *Y3, *Y4, *U, *V;
int ret;
if (src_size < avctx->width * avctx->height * 9L / 8) {
if (src_size < avctx->width * avctx->height * 9LL / 8) {
av_log(avctx, AV_LOG_ERROR, "packet too small\n");
return AVERROR_INVALIDDATA;
}
@@ -108,7 +108,7 @@ static int dxtory_decode_v1_420(AVCodecContext *avctx, AVFrame *pic,
uint8_t *Y1, *Y2, *U, *V;
int ret;
if (src_size < avctx->width * avctx->height * 3L / 2) {
if (src_size < avctx->width * avctx->height * 3LL / 2) {
av_log(avctx, AV_LOG_ERROR, "packet too small\n");
return AVERROR_INVALIDDATA;
}
@@ -145,7 +145,7 @@ static int dxtory_decode_v1_444(AVCodecContext *avctx, AVFrame *pic,
uint8_t *Y, *U, *V;
int ret;
if (src_size < avctx->width * avctx->height * 3L) {
if (src_size < avctx->width * avctx->height * 3LL) {
av_log(avctx, AV_LOG_ERROR, "packet too small\n");
return AVERROR_INVALIDDATA;
}

View File

@@ -63,7 +63,7 @@ typedef enum {
#define EAC3_SR_CODE_REDUCED 3
void ff_eac3_apply_spectral_extension(AC3DecodeContext *s)
static void ff_eac3_apply_spectral_extension(AC3DecodeContext *s)
{
int bin, bnd, ch, i;
uint8_t wrapflag[SPX_MAX_BANDS]={1,0,}, num_copy_sections, copy_sizes[SPX_MAX_BANDS];
@@ -101,7 +101,7 @@ void ff_eac3_apply_spectral_extension(AC3DecodeContext *s)
for (i = 0; i < num_copy_sections; i++) {
memcpy(&s->transform_coeffs[ch][bin],
&s->transform_coeffs[ch][s->spx_dst_start_freq],
copy_sizes[i]*sizeof(float));
copy_sizes[i]*sizeof(INTFLOAT));
bin += copy_sizes[i];
}
@@ -124,7 +124,7 @@ void ff_eac3_apply_spectral_extension(AC3DecodeContext *s)
bin = s->spx_src_start_freq - 2;
for (bnd = 0; bnd < s->num_spx_bands; bnd++) {
if (wrapflag[bnd]) {
float *coeffs = &s->transform_coeffs[ch][bin];
INTFLOAT *coeffs = &s->transform_coeffs[ch][bin];
coeffs[0] *= atten_tab[0];
coeffs[1] *= atten_tab[1];
coeffs[2] *= atten_tab[2];
@@ -142,6 +142,11 @@ void ff_eac3_apply_spectral_extension(AC3DecodeContext *s)
for (bnd = 0; bnd < s->num_spx_bands; bnd++) {
float nscale = s->spx_noise_blend[ch][bnd] * rms_energy[bnd] * (1.0f / INT32_MIN);
float sscale = s->spx_signal_blend[ch][bnd];
#if USE_FIXED
// spx_noise_blend and spx_signal_blend are both FP.23
nscale *= 1.0 / (1<<23);
sscale *= 1.0 / (1<<23);
#endif
for (i = 0; i < s->spx_band_sizes[bnd]; i++) {
float noise = nscale * (int32_t)av_lfg_get(&s->dith_state);
s->transform_coeffs[ch][bin] *= sscale;
@@ -195,7 +200,7 @@ static void idct6(int pre_mant[6])
pre_mant[5] = even0 - odd0;
}
void ff_eac3_decode_transform_coeffs_aht_ch(AC3DecodeContext *s, int ch)
static void ff_eac3_decode_transform_coeffs_aht_ch(AC3DecodeContext *s, int ch)
{
int bin, blk, gs;
int end_bap, gaq_mode;
@@ -288,7 +293,7 @@ void ff_eac3_decode_transform_coeffs_aht_ch(AC3DecodeContext *s, int ch)
}
}
int ff_eac3_parse_header(AC3DecodeContext *s)
static int ff_eac3_parse_header(AC3DecodeContext *s)
{
int i, blk, ch;
int ac3_exponent_strategy, parse_aht_info, parse_spx_atten_data;

View File

@@ -151,6 +151,11 @@ static inline int decode_block_intra(MadContext *s, int16_t * block)
break;
} else if (level != 0) {
i += run;
if (i > 63) {
av_log(s->avctx, AV_LOG_ERROR,
"ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
return -1;
}
j = scantable[i];
level = (level*quant_matrix[j]) >> 4;
level = (level-1)|1;
@@ -165,6 +170,11 @@ static inline int decode_block_intra(MadContext *s, int16_t * block)
run = SHOW_UBITS(re, &s->gb, 6)+1; LAST_SKIP_BITS(re, &s->gb, 6);
i += run;
if (i > 63) {
av_log(s->avctx, AV_LOG_ERROR,
"ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
return -1;
}
j = scantable[i];
if (level < 0) {
level = -level;
@@ -176,10 +186,6 @@ static inline int decode_block_intra(MadContext *s, int16_t * block)
level = (level-1)|1;
}
}
if (i > 63) {
av_log(s->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
return -1;
}
block[j] = level;
}

View File

@@ -251,7 +251,7 @@ static void put_line(uint8_t *dst, int size, int width, const int *runs)
PutBitContext pb;
int run, mode = ~0, pix_left = width, run_idx = 0;
init_put_bits(&pb, dst, size * 8);
init_put_bits(&pb, dst, size);
while (pix_left > 0) {
run = runs[run_idx++];
mode = ~mode;

View File

@@ -166,7 +166,7 @@ static void find_best_state(uint8_t best_state[256][256],
best_len[k] = len;
best_state[i][k] = j;
}
for (m = 0; m < 256; m++)
for (m = 1; m < 256; m++)
if (occ[m]) {
newocc[ one_state[ m]] += occ[m] * p;
newocc[256 - one_state[256 - m]] += occ[m] * (1 - p);

View File

@@ -697,7 +697,7 @@ static int flac_parse(AVCodecParserContext *s, AVCodecContext *avctx,
handle_error:
*poutbuf = NULL;
*poutbuf_size = 0;
return read_end - buf;
return buf_size ? read_end - buf : 0;
}
static av_cold int flac_parse_init(AVCodecParserContext *c)

View File

@@ -473,10 +473,10 @@ static int decode_frame(FLACContext *s)
ret = allocate_buffers(s);
if (ret < 0)
return ret;
ff_flacdsp_init(&s->dsp, s->avctx->sample_fmt, s->bps);
s->got_streaminfo = 1;
dump_headers(s->avctx, (FLACStreaminfo *)s);
}
ff_flacdsp_init(&s->dsp, s->avctx->sample_fmt, s->bps);
// dump_headers(s->avctx, (FLACStreaminfo *)s);

View File

@@ -287,7 +287,7 @@ static int write_header(FlashSV2Context * s, uint8_t * buf, int buf_size)
if (buf_size < 5)
return -1;
init_put_bits(&pb, buf, buf_size * 8);
init_put_bits(&pb, buf, buf_size);
put_bits(&pb, 4, (s->block_width >> 4) - 1);
put_bits(&pb, 12, s->image_width);

View File

@@ -151,7 +151,7 @@ static int encode_bitstream(FlashSVContext *s, const AVFrame *p, uint8_t *buf,
int buf_pos, res;
int pred_blocks = 0;
init_put_bits(&pb, buf, buf_size * 8);
init_put_bits(&pb, buf, buf_size);
put_bits(&pb, 4, block_width / 16 - 1);
put_bits(&pb, 12, s->image_width);

View File

@@ -736,8 +736,10 @@ static int g2m_decode_frame(AVCodecContext *avctx, void *data,
}
c->tile_width = bytestream2_get_be32(&bc);
c->tile_height = bytestream2_get_be32(&bc);
if (!c->tile_width || !c->tile_height ||
((c->tile_width | c->tile_height) & 0xF)) {
if (c->tile_width <= 0 || c->tile_height <= 0 ||
((c->tile_width | c->tile_height) & 0xF) ||
c->tile_width * 4LL * c->tile_height >= INT_MAX
) {
av_log(avctx, AV_LOG_ERROR,
"Invalid tile dimensions %dx%d\n",
c->tile_width, c->tile_height);

View File

@@ -105,7 +105,7 @@ static int gif_image_write_image(AVCodecContext *avctx,
/* skip common columns */
while (x_start < x_end) {
int same_column = 1;
for (y = y_start; y < y_end; y++) {
for (y = y_start; y <= y_end; y++) {
if (ref[y*ref_linesize + x_start] != buf[y*linesize + x_start]) {
same_column = 0;
break;
@@ -117,7 +117,7 @@ static int gif_image_write_image(AVCodecContext *avctx,
}
while (x_end > x_start) {
int same_column = 1;
for (y = y_start; y < y_end; y++) {
for (y = y_start; y <= y_end; y++) {
if (ref[y*ref_linesize + x_end] != buf[y*linesize + x_end]) {
same_column = 0;
break;

View File

@@ -271,26 +271,21 @@ static int gif_read_image(GifState *s, AVFrame *frame)
case 1:
y1 += 8;
ptr += linesize * 8;
if (y1 >= height) {
y1 = pass ? 2 : 4;
ptr = ptr1 + linesize * y1;
pass++;
}
break;
case 2:
y1 += 4;
ptr += linesize * 4;
if (y1 >= height) {
y1 = 1;
ptr = ptr1 + linesize;
pass++;
}
break;
case 3:
y1 += 2;
ptr += linesize * 2;
break;
}
while (y1 >= height) {
y1 = 4 >> pass;
ptr = ptr1 + linesize * y1;
pass++;
}
} else {
ptr += linesize;
}

View File

@@ -336,6 +336,14 @@ static int decode_slice(MpegEncContext *s)
s->padding_bug_score += 32;
}
if (s->codec_id == AV_CODEC_ID_H263 &&
(s->workaround_bugs & FF_BUG_AUTODETECT) &&
get_bits_left(&s->gb) >= 64 &&
AV_RB64(s->gb.buffer_end - 8) == 0xCDCDCDCDFC7F0000) {
s->padding_bug_score += 32;
}
if (s->workaround_bugs & FF_BUG_AUTODETECT) {
if (s->padding_bug_score > -2 && !s->data_partitioning)
s->workaround_bugs |= FF_BUG_NO_PADDING;

View File

@@ -215,18 +215,18 @@ int ff_h264_check_intra_pred_mode(H264Context *h, int mode, int is_chroma)
if ((h->left_samples_available & 0x8080) != 0x8080) {
mode = left[mode];
if (is_chroma && (h->left_samples_available & 0x8080)) {
// mad cow disease mode, aka MBAFF + constrained_intra_pred
mode = ALZHEIMER_DC_L0T_PRED8x8 +
(!(h->left_samples_available & 0x8000)) +
2 * (mode == DC_128_PRED8x8);
}
if (mode < 0) {
av_log(h->avctx, AV_LOG_ERROR,
"left block unavailable for requested intra mode at %d %d\n",
h->mb_x, h->mb_y);
return AVERROR_INVALIDDATA;
}
if (is_chroma && (h->left_samples_available & 0x8080)) {
// mad cow disease mode, aka MBAFF + constrained_intra_pred
mode = ALZHEIMER_DC_L0T_PRED8x8 +
(!(h->left_samples_available & 0x8000)) +
2 * (mode == DC_128_PRED8x8);
}
}
return mode;
@@ -391,6 +391,7 @@ void ff_h264_free_tables(H264Context *h, int free_rbsp)
if (free_rbsp && h->DPB) {
for (i = 0; i < H264_MAX_PICTURE_COUNT; i++)
ff_h264_unref_picture(h, &h->DPB[i]);
memset(h->delayed_pic, 0, sizeof(h->delayed_pic));
av_freep(&h->DPB);
} else if (h->DPB) {
for (i = 0; i < H264_MAX_PICTURE_COUNT; i++)
@@ -726,8 +727,9 @@ static int decode_init_thread_copy(AVCodecContext *avctx)
memset(h->sps_buffers, 0, sizeof(h->sps_buffers));
memset(h->pps_buffers, 0, sizeof(h->pps_buffers));
h->rbsp_buffer[0] = NULL;
h->rbsp_buffer[1] = NULL;
h->avctx = avctx;
h->rbsp_buffer[0] = NULL;
h->rbsp_buffer[1] = NULL;
h->rbsp_buffer_size[0] = 0;
h->rbsp_buffer_size[1] = 0;
h->context_initialized = 0;
@@ -877,7 +879,7 @@ static void decode_postinit(H264Context *h, int setup_finished)
if (rotation) {
av_display_rotation_set((int32_t *)rotation->data, angle);
av_display_matrix_flip((int32_t *)rotation->data,
h->sei_vflip, h->sei_hflip);
h->sei_hflip, h->sei_vflip);
}
}
@@ -990,6 +992,16 @@ int ff_pred_weight_table(H264Context *h)
h->luma_log2_weight_denom = get_ue_golomb(&h->gb);
if (h->sps.chroma_format_idc)
h->chroma_log2_weight_denom = get_ue_golomb(&h->gb);
if (h->luma_log2_weight_denom > 7U) {
av_log(h->avctx, AV_LOG_ERROR, "luma_log2_weight_denom %d is out of range\n", h->luma_log2_weight_denom);
h->luma_log2_weight_denom = 0;
}
if (h->chroma_log2_weight_denom > 7U) {
av_log(h->avctx, AV_LOG_ERROR, "chroma_log2_weight_denom %d is out of range\n", h->chroma_log2_weight_denom);
h->chroma_log2_weight_denom = 0;
}
luma_def = 1 << h->luma_log2_weight_denom;
chroma_def = 1 << h->chroma_log2_weight_denom;
@@ -1330,43 +1342,6 @@ int ff_set_ref_count(H264Context *h)
static const uint8_t start_code[] = { 0x00, 0x00, 0x01 };
static int find_start_code(const uint8_t *buf, int buf_size,
int buf_index, int next_avc)
{
// start code prefix search
for (; buf_index + 3 < next_avc; buf_index++)
// This should always succeed in the first iteration.
if (buf[buf_index] == 0 &&
buf[buf_index + 1] == 0 &&
buf[buf_index + 2] == 1)
break;
buf_index += 3;
if (buf_index >= buf_size)
return buf_size;
return buf_index;
}
static int get_avc_nalsize(H264Context *h, const uint8_t *buf,
int buf_size, int *buf_index)
{
int i, nalsize = 0;
if (*buf_index >= buf_size - h->nal_length_size)
return -1;
for (i = 0; i < h->nal_length_size; i++)
nalsize = (nalsize << 8) | buf[(*buf_index)++];
if (nalsize <= 0 || nalsize > buf_size - *buf_index) {
av_log(h->avctx, AV_LOG_ERROR,
"AVC: nal size %d\n", nalsize);
return -1;
}
return nalsize;
}
static int get_bit_length(H264Context *h, const uint8_t *buf,
const uint8_t *ptr, int dst_length,
int i, int next_avc)
@@ -1541,8 +1516,8 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size,
continue;
again:
if ( !(avctx->active_thread_type & FF_THREAD_FRAME)
|| nals_needed >= nal_index)
if ( (!(avctx->active_thread_type & FF_THREAD_FRAME) || nals_needed >= nal_index)
&& !h->current_slice)
h->au_pps_id = -1;
/* Ignore per frame NAL unit type during extradata
* parsing. Decoding slices is not possible in codec init

View File

@@ -36,6 +36,7 @@
#include "h264dsp.h"
#include "h264pred.h"
#include "h264qpel.h"
#include "internal.h" // for avpriv_find_start_code()
#include "me_cmp.h"
#include "mpegutils.h"
#include "parser.h"
@@ -337,6 +338,7 @@ typedef struct H264Picture {
* H264Context
*/
typedef struct H264Context {
AVClass *av_class;
AVCodecContext *avctx;
MECmpContext mecc;
VideoDSPContext vdsp;
@@ -1092,6 +1094,34 @@ static av_always_inline int get_dct8x8_allowed(H264Context *h)
0x0001000100010001ULL));
}
static inline int find_start_code(const uint8_t *buf, int buf_size,
int buf_index, int next_avc)
{
uint32_t state = -1;
buf_index = avpriv_find_start_code(buf + buf_index, buf + next_avc + 1, &state) - buf - 1;
return FFMIN(buf_index, buf_size);
}
static inline int get_avc_nalsize(H264Context *h, const uint8_t *buf,
int buf_size, int *buf_index)
{
int i, nalsize = 0;
if (*buf_index >= buf_size - h->nal_length_size)
return -1;
for (i = 0; i < h->nal_length_size; i++)
nalsize = ((unsigned)nalsize << 8) | buf[(*buf_index)++];
if (nalsize <= 0 || nalsize > buf_size - *buf_index) {
av_log(h->avctx, AV_LOG_ERROR,
"AVC: nal size %d\n", nalsize);
return -1;
}
return nalsize;
}
int ff_h264_field_end(H264Context *h, int in_setup);
int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src);

View File

@@ -1281,7 +1281,7 @@ void ff_h264_init_cabac_states(H264Context *h) {
}
static int decode_cabac_field_decoding_flag(H264Context *h) {
const long mbb_xy = h->mb_xy - 2L*h->mb_stride;
const int mbb_xy = h->mb_xy - 2*h->mb_stride;
unsigned long ctx = 0;
@@ -1713,7 +1713,7 @@ decode_cabac_residual_internal(H264Context *h, int16_t *block,
\
if( coeff_abs >= 15 ) { \
int j = 0; \
while(get_cabac_bypass( CC ) && j<30) { \
while (get_cabac_bypass(CC) && j < 30) { \
j++; \
} \
\

View File

@@ -202,10 +202,10 @@ static int scan_mmco_reset(AVCodecParserContext *s)
*/
static inline int parse_nal_units(AVCodecParserContext *s,
AVCodecContext *avctx,
const uint8_t *buf, int buf_size)
const uint8_t * const buf, int buf_size)
{
H264Context *h = s->priv_data;
const uint8_t *buf_end = buf + buf_size;
int buf_index, next_avc;
unsigned int pps_id;
unsigned int slice_type;
int state = -1, got_reset = 0;
@@ -225,26 +225,26 @@ static inline int parse_nal_units(AVCodecParserContext *s,
if (!buf_size)
return 0;
buf_index = 0;
next_avc = h->is_avc ? 0 : buf_size;
for (;;) {
int src_length, dst_length, consumed, nalsize = 0;
if (h->is_avc) {
int i;
if (h->nal_length_size >= buf_end - buf) break;
nalsize = 0;
for (i = 0; i < h->nal_length_size; i++)
nalsize = (nalsize << 8) | *buf++;
if (nalsize <= 0 || nalsize > buf_end - buf) {
av_log(h->avctx, AV_LOG_ERROR, "AVC: nal size %d\n", nalsize);
if (buf_index >= next_avc) {
nalsize = get_avc_nalsize(h, buf, buf_size, &buf_index);
if (nalsize < 0)
break;
}
src_length = nalsize;
next_avc = buf_index + nalsize;
} else {
buf = avpriv_find_start_code(buf, buf_end, &state);
if (buf >= buf_end)
break;
--buf;
src_length = buf_end - buf;
buf_index = find_start_code(buf, buf_size, buf_index, next_avc);
if (buf_index >= buf_size)
break;
if (buf_index >= next_avc)
continue;
}
src_length = next_avc - buf_index;
state = buf[buf_index];
switch (state & 0x1f) {
case NAL_SLICE:
case NAL_IDR_SLICE:
@@ -261,10 +261,13 @@ static inline int parse_nal_units(AVCodecParserContext *s,
}
break;
}
ptr = ff_h264_decode_nal(h, buf, &dst_length, &consumed, src_length);
ptr = ff_h264_decode_nal(h, buf + buf_index, &dst_length,
&consumed, src_length);
if (!ptr || dst_length < 0)
break;
buf_index += consumed;
init_get_bits(&h->gb, ptr, 8 * dst_length);
switch (h->nal_unit_type) {
case NAL_SPS:
@@ -439,7 +442,6 @@ static inline int parse_nal_units(AVCodecParserContext *s,
return 0; /* no need to evaluate the rest */
}
buf += h->is_avc ? nalsize : consumed;
}
if (q264)
return 0;

View File

@@ -391,7 +391,8 @@ int ff_h264_decode_seq_parameter_set(H264Context *h)
"Different chroma and luma bit depth");
goto fail;
}
if (sps->bit_depth_luma > 14U || sps->bit_depth_chroma > 14U) {
if (sps->bit_depth_luma < 8 || sps->bit_depth_luma > 14 ||
sps->bit_depth_chroma < 8 || sps->bit_depth_chroma > 14) {
av_log(h->avctx, AV_LOG_ERROR, "illegal bit depth value (%d, %d)\n",
sps->bit_depth_luma, sps->bit_depth_chroma);
goto fail;
@@ -479,10 +480,10 @@ int ff_h264_decode_seq_parameter_set(H264Context *h)
#endif
sps->crop = get_bits1(&h->gb);
if (sps->crop) {
int crop_left = get_ue_golomb(&h->gb);
int crop_right = get_ue_golomb(&h->gb);
int crop_top = get_ue_golomb(&h->gb);
int crop_bottom = get_ue_golomb(&h->gb);
unsigned int crop_left = get_ue_golomb(&h->gb);
unsigned int crop_right = get_ue_golomb(&h->gb);
unsigned int crop_top = get_ue_golomb(&h->gb);
unsigned int crop_bottom = get_ue_golomb(&h->gb);
int width = 16 * sps->mb_width;
int height = 16 * sps->mb_height * (2 - sps->frame_mbs_only_flag);

View File

@@ -281,7 +281,7 @@ static int decode_display_orientation(H264Context *h)
int ff_h264_decode_sei(H264Context *h)
{
while (get_bits_left(&h->gb) > 16) {
while (get_bits_left(&h->gb) > 16 && show_bits(&h->gb, 16)) {
int type = 0;
unsigned size = 0;
unsigned next;

View File

@@ -585,6 +585,17 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
h->mb_type_pool = NULL;
h->ref_index_pool = NULL;
h->motion_val_pool = NULL;
h->intra4x4_pred_mode= NULL;
h->non_zero_count = NULL;
h->slice_table_base = NULL;
h->slice_table = NULL;
h->cbp_table = NULL;
h->chroma_pred_mode_table = NULL;
memset(h->mvd_table, 0, sizeof(h->mvd_table));
h->direct_table = NULL;
h->list_counts = NULL;
h->mb2b_xy = NULL;
h->mb2br_xy = NULL;
for (i = 0; i < 2; i++) {
h->rbsp_buffer[i] = NULL;
h->rbsp_buffer_size[i] = 0;
@@ -636,8 +647,11 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
h->cur_pic_ptr = REBASE_PICTURE(h1->cur_pic_ptr, h, h1);
ff_h264_unref_picture(h, &h->cur_pic);
if (h1->cur_pic.f.buf[0] && (ret = ff_h264_ref_picture(h, &h->cur_pic, &h1->cur_pic)) < 0)
return ret;
if (h1->cur_pic.f.buf[0]) {
ret = ff_h264_ref_picture(h, &h->cur_pic, &h1->cur_pic);
if (ret < 0)
return ret;
}
h->workaround_bugs = h1->workaround_bugs;
h->low_delay = h1->low_delay;
@@ -1025,76 +1039,79 @@ static int clone_slice(H264Context *dst, H264Context *src)
static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
{
enum AVPixelFormat pix_fmts[2];
const enum AVPixelFormat *choices = pix_fmts;
int i;
pix_fmts[1] = AV_PIX_FMT_NONE;
switch (h->sps.bit_depth_luma) {
case 9:
if (CHROMA444(h)) {
if (h->avctx->colorspace == AVCOL_SPC_RGB) {
return AV_PIX_FMT_GBRP9;
pix_fmts[0] = AV_PIX_FMT_GBRP9;
} else
return AV_PIX_FMT_YUV444P9;
pix_fmts[0] = AV_PIX_FMT_YUV444P9;
} else if (CHROMA422(h))
return AV_PIX_FMT_YUV422P9;
pix_fmts[0] = AV_PIX_FMT_YUV422P9;
else
return AV_PIX_FMT_YUV420P9;
pix_fmts[0] = AV_PIX_FMT_YUV420P9;
break;
case 10:
if (CHROMA444(h)) {
if (h->avctx->colorspace == AVCOL_SPC_RGB) {
return AV_PIX_FMT_GBRP10;
pix_fmts[0] = AV_PIX_FMT_GBRP10;
} else
return AV_PIX_FMT_YUV444P10;
pix_fmts[0] = AV_PIX_FMT_YUV444P10;
} else if (CHROMA422(h))
return AV_PIX_FMT_YUV422P10;
pix_fmts[0] = AV_PIX_FMT_YUV422P10;
else
return AV_PIX_FMT_YUV420P10;
pix_fmts[0] = AV_PIX_FMT_YUV420P10;
break;
case 12:
if (CHROMA444(h)) {
if (h->avctx->colorspace == AVCOL_SPC_RGB) {
return AV_PIX_FMT_GBRP12;
pix_fmts[0] = AV_PIX_FMT_GBRP12;
} else
return AV_PIX_FMT_YUV444P12;
pix_fmts[0] = AV_PIX_FMT_YUV444P12;
} else if (CHROMA422(h))
return AV_PIX_FMT_YUV422P12;
pix_fmts[0] = AV_PIX_FMT_YUV422P12;
else
return AV_PIX_FMT_YUV420P12;
pix_fmts[0] = AV_PIX_FMT_YUV420P12;
break;
case 14:
if (CHROMA444(h)) {
if (h->avctx->colorspace == AVCOL_SPC_RGB) {
return AV_PIX_FMT_GBRP14;
pix_fmts[0] = AV_PIX_FMT_GBRP14;
} else
return AV_PIX_FMT_YUV444P14;
pix_fmts[0] = AV_PIX_FMT_YUV444P14;
} else if (CHROMA422(h))
return AV_PIX_FMT_YUV422P14;
pix_fmts[0] = AV_PIX_FMT_YUV422P14;
else
return AV_PIX_FMT_YUV420P14;
pix_fmts[0] = AV_PIX_FMT_YUV420P14;
break;
case 8:
if (CHROMA444(h)) {
if (h->avctx->colorspace == AVCOL_SPC_RGB) {
av_log(h->avctx, AV_LOG_DEBUG, "Detected GBR colorspace.\n");
return AV_PIX_FMT_GBR24P;
} else if (h->avctx->colorspace == AVCOL_SPC_YCGCO) {
if (h->avctx->colorspace == AVCOL_SPC_YCGCO)
av_log(h->avctx, AV_LOG_WARNING, "Detected unsupported YCgCo colorspace.\n");
}
return h->avctx->color_range == AVCOL_RANGE_JPEG ? AV_PIX_FMT_YUVJ444P
: AV_PIX_FMT_YUV444P;
if (h->avctx->colorspace == AVCOL_SPC_RGB)
pix_fmts[0] = AV_PIX_FMT_GBRP;
else if (h->avctx->color_range == AVCOL_RANGE_JPEG)
pix_fmts[0] = AV_PIX_FMT_YUVJ444P;
else
pix_fmts[0] = AV_PIX_FMT_YUV444P;
} else if (CHROMA422(h)) {
return h->avctx->color_range == AVCOL_RANGE_JPEG ? AV_PIX_FMT_YUVJ422P
: AV_PIX_FMT_YUV422P;
if (h->avctx->color_range == AVCOL_RANGE_JPEG)
pix_fmts[0] = AV_PIX_FMT_YUVJ422P;
else
pix_fmts[0] = AV_PIX_FMT_YUV422P;
} else {
int i;
const enum AVPixelFormat * fmt = h->avctx->codec->pix_fmts ?
h->avctx->codec->pix_fmts :
h->avctx->color_range == AVCOL_RANGE_JPEG ?
h264_hwaccel_pixfmt_list_jpeg_420 :
h264_hwaccel_pixfmt_list_420;
for (i=0; fmt[i] != AV_PIX_FMT_NONE; i++)
if (fmt[i] == h->avctx->pix_fmt && !force_callback)
return fmt[i];
return ff_thread_get_format(h->avctx, fmt);
if (h->avctx->codec->pix_fmts)
choices = h->avctx->codec->pix_fmts;
else if (h->avctx->color_range == AVCOL_RANGE_JPEG)
choices = h264_hwaccel_pixfmt_list_jpeg_420;
else
choices = h264_hwaccel_pixfmt_list_420;
}
break;
default:
@@ -1102,6 +1119,11 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
"Unsupported bit depth %d\n", h->sps.bit_depth_luma);
return AVERROR_INVALIDDATA;
}
for (i=0; choices[i] != AV_PIX_FMT_NONE; i++)
if (choices[i] == h->avctx->pix_fmt && !force_callback)
return choices[i];
return ff_thread_get_format(h->avctx, choices);
}
/* export coded and cropped frame dimensions to AVCodecContext */
@@ -1286,6 +1308,9 @@ int ff_h264_decode_slice_header(H264Context *h, H264Context *h0)
int must_reinit;
int needs_reinit = 0;
int field_pic_flag, bottom_field_flag;
int first_slice = h == h0 && !h0->current_slice;
int frame_num, picture_structure, droppable;
PPS *pps;
h->qpel_put = h->h264qpel.put_h264_qpel_pixels_tab;
h->qpel_avg = h->h264qpel.avg_h264_qpel_pixels_tab;
@@ -1359,18 +1384,27 @@ int ff_h264_decode_slice_header(H264Context *h, H264Context *h0)
h0->au_pps_id, pps_id);
return AVERROR_INVALIDDATA;
}
h->pps = *h0->pps_buffers[pps_id];
if (!h0->sps_buffers[h->pps.sps_id]) {
pps = h0->pps_buffers[pps_id];
if (!h0->sps_buffers[pps->sps_id]) {
av_log(h->avctx, AV_LOG_ERROR,
"non-existing SPS %u referenced\n",
h->pps.sps_id);
return AVERROR_INVALIDDATA;
}
if (first_slice)
h->pps = *h0->pps_buffers[pps_id];
if (h->pps.sps_id != h->sps.sps_id ||
h->pps.sps_id != h->current_sps_id ||
h0->sps_buffers[h->pps.sps_id]->new) {
if (pps->sps_id != h->sps.sps_id ||
pps->sps_id != h->current_sps_id ||
h0->sps_buffers[pps->sps_id]->new) {
if (!first_slice) {
av_log(h->avctx, AV_LOG_ERROR,
"SPS changed in the middle of the frame\n");
return AVERROR_INVALIDDATA;
}
h->sps = *h0->sps_buffers[h->pps.sps_id];
@@ -1400,13 +1434,15 @@ int ff_h264_decode_slice_header(H264Context *h, H264Context *h0)
|| 16*h->sps.mb_height * (2 - h->sps.frame_mbs_only_flag) != h->avctx->coded_height
|| h->avctx->bits_per_raw_sample != h->sps.bit_depth_luma
|| h->cur_chroma_format_idc != h->sps.chroma_format_idc
|| av_cmp_q(h->sps.sar, h->avctx->sample_aspect_ratio)
|| h->mb_width != h->sps.mb_width
|| h->mb_height != h->sps.mb_height * (2 - h->sps.frame_mbs_only_flag)
));
if (non_j_pixfmt(h0->avctx->pix_fmt) != non_j_pixfmt(get_pixel_format(h0, 0)))
must_reinit = 1;
if (first_slice && av_cmp_q(h->sps.sar, h->avctx->sample_aspect_ratio))
must_reinit = 1;
h->mb_width = h->sps.mb_width;
h->mb_height = h->sps.mb_height * (2 - h->sps.frame_mbs_only_flag);
h->mb_num = h->mb_width * h->mb_height;
@@ -1447,6 +1483,8 @@ int ff_h264_decode_slice_header(H264Context *h, H264Context *h0)
return AVERROR_INVALIDDATA;
}
av_assert1(first_slice);
ff_h264_flush_change(h);
if ((ret = get_pixel_format(h, 1)) < 0)
@@ -1480,44 +1518,48 @@ int ff_h264_decode_slice_header(H264Context *h, H264Context *h0)
}
}
if (h == h0 && h->dequant_coeff_pps != pps_id) {
if (first_slice && h->dequant_coeff_pps != pps_id) {
h->dequant_coeff_pps = pps_id;
h264_init_dequant_tables(h);
}
h->frame_num = get_bits(&h->gb, h->sps.log2_max_frame_num);
frame_num = get_bits(&h->gb, h->sps.log2_max_frame_num);
if (!first_slice) {
if (h0->frame_num != frame_num) {
av_log(h->avctx, AV_LOG_ERROR, "Frame num change from %d to %d\n",
h0->frame_num, frame_num);
return AVERROR_INVALIDDATA;
}
}
h->mb_mbaff = 0;
h->mb_aff_frame = 0;
last_pic_structure = h0->picture_structure;
last_pic_droppable = h0->droppable;
h->droppable = h->nal_ref_idc == 0;
droppable = h->nal_ref_idc == 0;
if (h->sps.frame_mbs_only_flag) {
h->picture_structure = PICT_FRAME;
picture_structure = PICT_FRAME;
} else {
if (!h->sps.direct_8x8_inference_flag && slice_type == AV_PICTURE_TYPE_B) {
av_log(h->avctx, AV_LOG_ERROR, "This stream was generated by a broken encoder, invalid 8x8 inference\n");
return -1;
}
field_pic_flag = get_bits1(&h->gb);
if (field_pic_flag) {
bottom_field_flag = get_bits1(&h->gb);
h->picture_structure = PICT_TOP_FIELD + bottom_field_flag;
picture_structure = PICT_TOP_FIELD + bottom_field_flag;
} else {
h->picture_structure = PICT_FRAME;
picture_structure = PICT_FRAME;
h->mb_aff_frame = h->sps.mb_aff;
}
}
h->mb_field_decoding_flag = h->picture_structure != PICT_FRAME;
if (h0->current_slice != 0) {
if (last_pic_structure != h->picture_structure ||
last_pic_droppable != h->droppable) {
if (h0->current_slice) {
if (last_pic_structure != picture_structure ||
last_pic_droppable != droppable) {
av_log(h->avctx, AV_LOG_ERROR,
"Changing field mode (%d -> %d) between slices is not allowed\n",
last_pic_structure, h->picture_structure);
h->picture_structure = last_pic_structure;
h->droppable = last_pic_droppable;
return AVERROR_INVALIDDATA;
} else if (!h0->cur_pic_ptr) {
av_log(h->avctx, AV_LOG_ERROR,
@@ -1525,7 +1567,14 @@ int ff_h264_decode_slice_header(H264Context *h, H264Context *h0)
h0->current_slice + 1);
return AVERROR_INVALIDDATA;
}
} else {
}
h->picture_structure = picture_structure;
h->droppable = droppable;
h->frame_num = frame_num;
h->mb_field_decoding_flag = picture_structure != PICT_FRAME;
if (h0->current_slice == 0) {
/* Shorten frame num gaps so we don't have to allocate reference
* frames just to throw them away */
if (h->frame_num != h->prev_frame_num) {

View File

@@ -108,7 +108,7 @@ static int pic_arrays_init(HEVCContext *s, const HEVCSPS *sps)
if (!s->tab_ipm || !s->cbf_luma || !s->is_pcm)
goto fail;
s->filter_slice_edges = av_malloc(ctb_count);
s->filter_slice_edges = av_mallocz(ctb_count);
s->tab_slice_address = av_malloc_array(pic_size_in_ctb,
sizeof(*s->tab_slice_address));
s->qp_y_tab = av_malloc_array(pic_size_in_ctb,
@@ -144,7 +144,7 @@ static void pred_weight_table(HEVCContext *s, GetBitContext *gb)
uint8_t luma_weight_l1_flag[16];
uint8_t chroma_weight_l1_flag[16];
s->sh.luma_log2_weight_denom = get_ue_golomb_long(gb);
s->sh.luma_log2_weight_denom = av_clip_c(get_ue_golomb_long(gb), 0, 7);
if (s->sps->chroma_format_idc != 0) {
int delta = get_se_golomb(gb);
s->sh.chroma_log2_weight_denom = av_clip(s->sh.luma_log2_weight_denom + delta, 0, 7);
@@ -981,7 +981,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0,
for (i = 0; i < (size * size); i++) {
coeffs[i] = ((lc->tu.res_scale_val * coeffs_y[i]) >> 3);
}
s->hevcdsp.transform_add[log2_trafo_size-2](dst, coeffs, stride);
s->hevcdsp.transform_add[log2_trafo_size_c-2](dst, coeffs, stride);
}
}
@@ -1010,7 +1010,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0,
for (i = 0; i < (size * size); i++) {
coeffs[i] = ((lc->tu.res_scale_val * coeffs_y[i]) >> 3);
}
s->hevcdsp.transform_add[log2_trafo_size-2](dst, coeffs, stride);
s->hevcdsp.transform_add[log2_trafo_size_c-2](dst, coeffs, stride);
}
}
} else if (blk_idx == 3) {
@@ -2532,7 +2532,7 @@ static int set_side_data(HEVCContext *s)
av_display_rotation_set((int32_t *)rotation->data, angle);
av_display_matrix_flip((int32_t *)rotation->data,
s->sei_vflip, s->sei_hflip);
s->sei_hflip, s->sei_vflip);
}
return 0;
@@ -2888,17 +2888,30 @@ static int decode_nal_units(HEVCContext *s, const uint8_t *buf, int length)
if (s->nals_allocated < s->nb_nals + 1) {
int new_size = s->nals_allocated + 1;
HEVCNAL *tmp = av_realloc_array(s->nals, new_size, sizeof(*tmp));
void *tmp = av_realloc_array(s->nals, new_size, sizeof(*s->nals));
ret = AVERROR(ENOMEM);
if (!tmp) {
ret = AVERROR(ENOMEM);
goto fail;
}
s->nals = tmp;
memset(s->nals + s->nals_allocated, 0,
(new_size - s->nals_allocated) * sizeof(*tmp));
av_reallocp_array(&s->skipped_bytes_nal, new_size, sizeof(*s->skipped_bytes_nal));
av_reallocp_array(&s->skipped_bytes_pos_size_nal, new_size, sizeof(*s->skipped_bytes_pos_size_nal));
av_reallocp_array(&s->skipped_bytes_pos_nal, new_size, sizeof(*s->skipped_bytes_pos_nal));
(new_size - s->nals_allocated) * sizeof(*s->nals));
tmp = av_realloc_array(s->skipped_bytes_nal, new_size, sizeof(*s->skipped_bytes_nal));
if (!tmp)
goto fail;
s->skipped_bytes_nal = tmp;
tmp = av_realloc_array(s->skipped_bytes_pos_size_nal, new_size, sizeof(*s->skipped_bytes_pos_size_nal));
if (!tmp)
goto fail;
s->skipped_bytes_pos_size_nal = tmp;
tmp = av_realloc_array(s->skipped_bytes_pos_nal, new_size, sizeof(*s->skipped_bytes_pos_nal));
if (!tmp)
goto fail;
s->skipped_bytes_pos_nal = tmp;
s->skipped_bytes_pos_size_nal[s->nals_allocated] = 1024; // initial buffer size
s->skipped_bytes_pos_nal[s->nals_allocated] = av_malloc_array(s->skipped_bytes_pos_size_nal[s->nals_allocated], sizeof(*s->skipped_bytes_pos));
s->nals_allocated = new_size;

View File

@@ -298,10 +298,10 @@ typedef struct RefPicListTab {
} RefPicListTab;
typedef struct HEVCWindow {
int left_offset;
int right_offset;
int top_offset;
int bottom_offset;
unsigned int left_offset;
unsigned int right_offset;
unsigned int top_offset;
unsigned int bottom_offset;
} HEVCWindow;
typedef struct VUI {

View File

@@ -227,8 +227,10 @@ static int temporal_luma_motion_vector(HEVCContext *s, int x0, int y0,
HEVCFrame *ref = s->ref->collocated_ref;
if (!ref)
if (!ref) {
memset(mvLXCol, 0, sizeof(*mvLXCol));
return 0;
}
tab_mvf = ref->tab_mvf;
colPic = ref->poc;
@@ -415,14 +417,10 @@ static void derive_spatial_merge_candidates(HEVCContext *s, int x0, int y0,
if (available_l0 || available_l1) {
mergecandlist[nb_merge_cand].pred_flag = available_l0 + (available_l1 << 1);
if (available_l0) {
mergecandlist[nb_merge_cand].mv[0] = mv_l0_col;
mergecandlist[nb_merge_cand].ref_idx[0] = 0;
}
if (available_l1) {
mergecandlist[nb_merge_cand].mv[1] = mv_l1_col;
mergecandlist[nb_merge_cand].ref_idx[1] = 0;
}
AV_ZERO16(mergecandlist[nb_merge_cand].ref_idx);
mergecandlist[nb_merge_cand].mv[0] = mv_l0_col;
mergecandlist[nb_merge_cand].mv[1] = mv_l1_col;
if (merge_idx == nb_merge_cand)
return;
nb_merge_cand++;

View File

@@ -525,7 +525,11 @@ static void decode_vui(HEVCContext *s, HEVCSPS *sps)
vui->field_seq_flag = get_bits1(gb);
vui->frame_field_info_present_flag = get_bits1(gb);
vui->default_display_window_flag = get_bits1(gb);
if (get_bits_left(gb) >= 68 && show_bits_long(gb, 21) == 0x100000) {
vui->default_display_window_flag = 0;
av_log(s->avctx, AV_LOG_WARNING, "Invalid default display window\n");
} else
vui->default_display_window_flag = get_bits1(gb);
// Backup context in case an alternate header is detected
memcpy(&backup, gb, sizeof(backup));
@@ -891,11 +895,30 @@ int ff_hevc_decode_nal_sps(HEVCContext *s)
sps->log2_max_trafo_size = log2_diff_max_min_transform_block_size +
sps->log2_min_tb_size;
if (sps->log2_min_tb_size >= sps->log2_min_cb_size) {
if (sps->log2_min_cb_size < 3 || sps->log2_min_cb_size > 30) {
av_log(s->avctx, AV_LOG_ERROR, "Invalid value %d for log2_min_cb_size", sps->log2_min_cb_size);
ret = AVERROR_INVALIDDATA;
goto err;
}
if (sps->log2_diff_max_min_coding_block_size > 30) {
av_log(s->avctx, AV_LOG_ERROR, "Invalid value %d for log2_diff_max_min_coding_block_size", sps->log2_diff_max_min_coding_block_size);
ret = AVERROR_INVALIDDATA;
goto err;
}
if (sps->log2_min_tb_size >= sps->log2_min_cb_size || sps->log2_min_tb_size < 2) {
av_log(s->avctx, AV_LOG_ERROR, "Invalid value for log2_min_tb_size");
ret = AVERROR_INVALIDDATA;
goto err;
}
if (log2_diff_max_min_transform_block_size < 0 || log2_diff_max_min_transform_block_size > 30) {
av_log(s->avctx, AV_LOG_ERROR, "Invalid value %d for log2_diff_max_min_transform_block_size", log2_diff_max_min_transform_block_size);
ret = AVERROR_INVALIDDATA;
goto err;
}
sps->max_transform_hierarchy_depth_inter = get_ue_golomb_long(gb);
sps->max_transform_hierarchy_depth_intra = get_ue_golomb_long(gb);
@@ -947,6 +970,11 @@ int ff_hevc_decode_nal_sps(HEVCContext *s)
sps->long_term_ref_pics_present_flag = get_bits1(gb);
if (sps->long_term_ref_pics_present_flag) {
sps->num_long_term_ref_pics_sps = get_ue_golomb_long(gb);
if (sps->num_long_term_ref_pics_sps > 31U) {
av_log(0, AV_LOG_ERROR, "num_long_term_ref_pics_sps %d is out of range.\n",
sps->num_long_term_ref_pics_sps);
goto err;
}
for (i = 0; i < sps->num_long_term_ref_pics_sps; i++) {
sps->lt_ref_pic_poc_lsb_sps[i] = get_bits(gb, sps->log2_max_poc_lsb);
sps->used_by_curr_pic_lt_sps_flag[i] = get_bits1(gb);
@@ -1012,7 +1040,8 @@ int ff_hevc_decode_nal_sps(HEVCContext *s)
(sps->output_window.left_offset + sps->output_window.right_offset);
sps->output_height = sps->height -
(sps->output_window.top_offset + sps->output_window.bottom_offset);
if (sps->output_width <= 0 || sps->output_height <= 0) {
if (sps->width <= sps->output_window.left_offset + (int64_t)sps->output_window.right_offset ||
sps->height <= sps->output_window.top_offset + (int64_t)sps->output_window.bottom_offset) {
av_log(s->avctx, AV_LOG_WARNING, "Invalid visible frame dimensions: %dx%d.\n",
sps->output_width, sps->output_height);
if (s->avctx->err_recognition & AV_EF_EXPLODE) {
@@ -1021,10 +1050,8 @@ int ff_hevc_decode_nal_sps(HEVCContext *s)
}
av_log(s->avctx, AV_LOG_WARNING,
"Displaying the whole video surface.\n");
sps->pic_conf_win.left_offset =
sps->pic_conf_win.right_offset =
sps->pic_conf_win.top_offset =
sps->pic_conf_win.bottom_offset = 0;
memset(&sps->pic_conf_win, 0, sizeof(sps->pic_conf_win));
memset(&sps->output_window, 0, sizeof(sps->output_window));
sps->output_width = sps->width;
sps->output_height = sps->height;
}
@@ -1248,6 +1275,14 @@ int ff_hevc_decode_nal_pps(HEVCContext *s)
if (pps->cu_qp_delta_enabled_flag)
pps->diff_cu_qp_delta_depth = get_ue_golomb_long(gb);
if (pps->diff_cu_qp_delta_depth < 0 ||
pps->diff_cu_qp_delta_depth > sps->log2_diff_max_min_coding_block_size) {
av_log(s->avctx, AV_LOG_ERROR, "diff_cu_qp_delta_depth %d is invalid\n",
pps->diff_cu_qp_delta_depth);
ret = AVERROR_INVALIDDATA;
goto err;
}
pps->cb_qp_offset = get_se_golomb(gb);
if (pps->cb_qp_offset < -12 || pps->cb_qp_offset > 12) {
av_log(s->avctx, AV_LOG_ERROR, "pps_cb_qp_offset out of range: %d\n",
@@ -1371,7 +1406,8 @@ int ff_hevc_decode_nal_pps(HEVCContext *s)
int pps_range_extensions_flag = get_bits1(gb);
/* int pps_extension_7bits = */ get_bits(gb, 7);
if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_REXT && pps_range_extensions_flag) {
pps_range_extensions(s, pps, sps);
if ((ret = pps_range_extensions(s, pps, sps)) < 0)
goto err;
}
}

View File

@@ -22,6 +22,7 @@
#include <string.h>
#include "libavutil/imgutils.h"
#include "libavutil/internal.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
@@ -453,6 +454,7 @@ static int hnm_decode_frame(AVCodecContext *avctx, void *data,
static av_cold int hnm_decode_init(AVCodecContext *avctx)
{
Hnm4VideoContext *hnm = avctx->priv_data;
int ret;
if (avctx->extradata_size < 1) {
av_log(avctx, AV_LOG_ERROR,
@@ -460,6 +462,10 @@ static av_cold int hnm_decode_init(AVCodecContext *avctx)
return AVERROR_INVALIDDATA;
}
ret = av_image_check_size(avctx->width, avctx->height, 0, avctx);
if (ret < 0)
return ret;
hnm->version = avctx->extradata[0];
avctx->pix_fmt = AV_PIX_FMT_PAL8;
hnm->width = avctx->width;

View File

@@ -887,14 +887,14 @@ static int imc_decode_block(AVCodecContext *avctx, IMCContext *q, int ch)
flag = get_bits1(&q->gb);
if (stream_format_code & 0x1)
imc_decode_level_coefficients_raw(q, chctx->levlCoeffBuf,
chctx->flcoeffs1, chctx->flcoeffs2);
else if (stream_format_code & 0x1)
imc_read_level_coeffs_raw(q, stream_format_code, chctx->levlCoeffBuf);
else
imc_read_level_coeffs(q, stream_format_code, chctx->levlCoeffBuf);
if (stream_format_code & 0x4)
if (stream_format_code & 0x1)
imc_decode_level_coefficients_raw(q, chctx->levlCoeffBuf,
chctx->flcoeffs1, chctx->flcoeffs2);
else if (stream_format_code & 0x4)
imc_decode_level_coefficients(q, chctx->levlCoeffBuf,
chctx->flcoeffs1, chctx->flcoeffs2);
else

View File

@@ -94,7 +94,7 @@ typedef struct Indeo3DecodeContext {
int16_t width, height;
uint32_t frame_num; ///< current frame number (zero-based)
uint32_t data_size; ///< size of the frame data in bytes
int data_size; ///< size of the frame data in bytes
uint16_t frame_flags; ///< frame properties
uint8_t cb_offset; ///< needed for selecting VQ tables
uint8_t buf_sel; ///< active frame buffer: 0 - primary, 1 -secondary
@@ -899,7 +899,8 @@ static int decode_frame_headers(Indeo3DecodeContext *ctx, AVCodecContext *avctx,
GetByteContext gb;
const uint8_t *bs_hdr;
uint32_t frame_num, word2, check_sum, data_size;
uint32_t y_offset, u_offset, v_offset, starts[3], ends[3];
int y_offset, u_offset, v_offset;
uint32_t starts[3], ends[3];
uint16_t height, width;
int i, j;
@@ -981,7 +982,8 @@ static int decode_frame_headers(Indeo3DecodeContext *ctx, AVCodecContext *avctx,
ctx->y_data_size = ends[0] - starts[0];
ctx->v_data_size = ends[1] - starts[1];
ctx->u_data_size = ends[2] - starts[2];
if (FFMAX3(y_offset, v_offset, u_offset) >= ctx->data_size - 16 ||
if (FFMIN3(y_offset, v_offset, u_offset) < 0 ||
FFMAX3(y_offset, v_offset, u_offset) >= ctx->data_size - 16 ||
FFMIN3(y_offset, v_offset, u_offset) < gb.buffer - bs_hdr + 16 ||
FFMIN3(ctx->y_data_size, ctx->v_data_size, ctx->u_data_size) <= 0) {
av_log(avctx, AV_LOG_ERROR, "One of the y/u/v offsets is invalid\n");

View File

@@ -35,6 +35,8 @@
#define FF_SANE_NB_CHANNELS 63U
#define FF_SIGNBIT(x) (x >> CHAR_BIT * sizeof(x) - 1)
#if HAVE_AVX
# define STRIDE_ALIGN 32
#elif HAVE_SIMD_ALIGN_16

View File

@@ -269,6 +269,11 @@ static inline void ls_decode_line(JLSState *state, MJpegDecodeContext *s,
x += stride;
}
if (x >= w) {
av_log(NULL, AV_LOG_ERROR, "run overflow\n");
return;
}
/* decode run termination value */
Rb = R(last, x);
RItype = (FFABS(Ra - Rb) <= state->near) ? 1 : 0;

View File

@@ -43,6 +43,13 @@ static av_cold int decode_init(AVCodecContext *avctx)
{
JvContext *s = avctx->priv_data;
if (!avctx->width || !avctx->height ||
(avctx->width & 7) || (avctx->height & 7)) {
av_log(avctx, AV_LOG_ERROR, "Invalid video dimensions: %dx%d\n",
avctx->width, avctx->height);
return AVERROR(EINVAL);
}
s->frame = av_frame_alloc();
if (!s->frame)
return AVERROR(ENOMEM);

View File

@@ -170,10 +170,11 @@ static av_cold int libopus_encode_init(AVCodecContext *avctx)
/* 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_WARNING,
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 +

View File

@@ -152,8 +152,8 @@ static int twolame_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
if (ret < 0) // twolame error
return AVERROR_UNKNOWN;
avpkt->duration = ff_samples_to_time_base(avctx, frame->nb_samples);
if (frame) {
avpkt->duration = ff_samples_to_time_base(avctx, frame->nb_samples);
if (frame->pts != AV_NOPTS_VALUE)
avpkt->pts = frame->pts - ff_samples_to_time_base(avctx, avctx->delay);
} else {

View File

@@ -88,7 +88,12 @@ static inline int mdec_decode_block_intra(MDECContext *a, int16_t *block, int n)
if (level == 127) {
break;
} else if (level != 0) {
i += run;
i += run;
if (i > 63) {
av_log(a->avctx, AV_LOG_ERROR,
"ac-tex damaged at %d %d\n", a->mb_x, a->mb_y);
return AVERROR_INVALIDDATA;
}
j = scantable[i];
level = (level * qscale * quant_matrix[j]) >> 3;
level = (level ^ SHOW_SBITS(re, &a->gb, 1)) - SHOW_SBITS(re, &a->gb, 1);
@@ -98,8 +103,13 @@ static inline int mdec_decode_block_intra(MDECContext *a, int16_t *block, int n)
run = SHOW_UBITS(re, &a->gb, 6)+1; LAST_SKIP_BITS(re, &a->gb, 6);
UPDATE_CACHE(re, &a->gb);
level = SHOW_SBITS(re, &a->gb, 10); SKIP_BITS(re, &a->gb, 10);
i += run;
j = scantable[i];
i += run;
if (i > 63) {
av_log(a->avctx, AV_LOG_ERROR,
"ac-tex damaged at %d %d\n", a->mb_x, a->mb_y);
return AVERROR_INVALIDDATA;
}
j = scantable[i];
if (level < 0) {
level = -level;
level = (level * qscale * quant_matrix[j]) >> 3;
@@ -110,10 +120,6 @@ static inline int mdec_decode_block_intra(MDECContext *a, int16_t *block, int n)
level = (level - 1) | 1;
}
}
if (i > 63) {
av_log(a->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", a->mb_x, a->mb_y);
return AVERROR_INVALIDDATA;
}
block[j] = level;
}

View File

@@ -89,7 +89,7 @@ static void ff_acelp_interpolatef_mips(float *out, const float *in,
"addu %[p_filter_coeffs_m], %[p_filter_coeffs_m], %[prec] \n\t"
"madd.s %[v],%[v],%[in_val_m], %[fc_val_m] \n\t"
: [v] "=&f" (v),[p_in_p] "+r" (p_in_p), [p_in_m] "+r" (p_in_m),
: [v] "+&f" (v),[p_in_p] "+r" (p_in_p), [p_in_m] "+r" (p_in_m),
[p_filter_coeffs_p] "+r" (p_filter_coeffs_p),
[in_val_p] "=&f" (in_val_p), [in_val_m] "=&f" (in_val_m),
[fc_val_p] "=&f" (fc_val_p), [fc_val_m] "=&f" (fc_val_m),

View File

@@ -244,9 +244,10 @@ int ff_mjpeg_decode_dht(MJpegDecodeContext *s)
int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
{
int len, nb_components, i, width, height, pix_fmt_id, ret;
int h_count[MAX_COMPONENTS];
int v_count[MAX_COMPONENTS];
int len, nb_components, i, width, height, bits, ret;
unsigned pix_fmt_id;
int h_count[MAX_COMPONENTS] = { 0 };
int v_count[MAX_COMPONENTS] = { 0 };
s->cur_scan = 0;
s->upscale_h = s->upscale_v = 0;
@@ -254,11 +255,11 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
/* XXX: verify len field validity */
len = get_bits(&s->gb, 16);
s->avctx->bits_per_raw_sample =
s->bits = get_bits(&s->gb, 8);
bits = get_bits(&s->gb, 8);
if (s->pegasus_rct)
s->bits = 9;
if (s->bits == 9 && !s->pegasus_rct)
bits = 9;
if (bits == 9 && !s->pegasus_rct)
s->rct = 1; // FIXME ugly
if(s->lossless && s->avctx->lowres){
@@ -291,7 +292,7 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
return AVERROR_INVALIDDATA;
}
}
if (s->ls && !(s->bits <= 8 || nb_components == 1)) {
if (s->ls && !(bits <= 8 || nb_components == 1)) {
avpriv_report_missing_feature(s->avctx,
"JPEG-LS that is not <= 8 "
"bits/component or 16-bit gray");
@@ -300,8 +301,6 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
s->nb_components = nb_components;
s->h_max = 1;
s->v_max = 1;
memset(h_count, 0, sizeof(h_count));
memset(v_count, 0, sizeof(v_count));
for (i = 0; i < nb_components; i++) {
/* component id */
s->component_id[i] = get_bits(&s->gb, 8) - 1;
@@ -336,12 +335,13 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
/* if different size, realloc/alloc picture */
if ( width != s->width || height != s->height
|| memcmp(s->h_count, h_count, sizeof(h_count))
|| memcmp(s->v_count, v_count, sizeof(v_count))) {
if (width != s->width || height != s->height || bits != s->bits ||
memcmp(s->h_count, h_count, sizeof(h_count)) ||
memcmp(s->v_count, v_count, sizeof(v_count))) {
s->width = width;
s->height = height;
s->bits = bits;
memcpy(s->h_count, h_count, sizeof(h_count));
memcpy(s->v_count, v_count, sizeof(v_count));
s->interlaced = 0;
@@ -376,7 +376,7 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
else if (!s->lossless)
s->rgb = 0;
/* XXX: not complete test ! */
pix_fmt_id = (s->h_count[0] << 28) | (s->v_count[0] << 24) |
pix_fmt_id = ((unsigned)s->h_count[0] << 28) | (s->v_count[0] << 24) |
(s->h_count[1] << 20) | (s->v_count[1] << 16) |
(s->h_count[2] << 12) | (s->v_count[2] << 8) |
(s->h_count[3] << 4) | s->v_count[3];
@@ -512,6 +512,8 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
else s->avctx->pix_fmt = AV_PIX_FMT_YUV420P16;
s->avctx->color_range = s->cs_itu601 ? AVCOL_RANGE_MPEG : AVCOL_RANGE_JPEG;
if (pix_fmt_id == 0x42111100) {
if (s->bits > 8)
goto unk_pixfmt;
s->upscale_h = 6;
s->chroma_height = (s->height + 1) / 2;
}
@@ -534,9 +536,12 @@ unk_pixfmt:
}
if (s->ls) {
s->upscale_h = s->upscale_v = 0;
if (s->nb_components > 1)
if (s->nb_components == 3) {
s->avctx->pix_fmt = AV_PIX_FMT_RGB24;
else if (s->palette_index && s->bits <= 8)
} else if (s->nb_components != 1) {
av_log(s->avctx, AV_LOG_ERROR, "Unsupported number of components %d\n", s->nb_components);
return AVERROR_PATCHWELCOME;
} else if (s->palette_index && s->bits <= 8)
s->avctx->pix_fmt = AV_PIX_FMT_PAL8;
else if (s->bits <= 8)
s->avctx->pix_fmt = AV_PIX_FMT_GRAY8;
@@ -1221,13 +1226,18 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, int nb_components, int Ah,
if (s->interlaced && s->bottom_field)
block_offset += linesize[c] >> 1;
ptr = data[c] + block_offset;
if ( 8*(h * mb_x + x) < s->width
&& 8*(v * mb_y + y) < s->height) {
ptr = data[c] + block_offset;
} else
ptr = NULL;
if (!s->progressive) {
if (copy_mb)
mjpeg_copy_block(s, ptr, reference_data[c] + block_offset,
linesize[c], s->avctx->lowres);
if (copy_mb) {
if (ptr)
mjpeg_copy_block(s, ptr, reference_data[c] + block_offset,
linesize[c], s->avctx->lowres);
else {
} else {
s->bdsp.clear_block(s->block);
if (decode_block(s, s->block, i,
s->dc_index[i], s->ac_index[i],
@@ -1236,9 +1246,11 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, int nb_components, int Ah,
"error y=%d x=%d\n", mb_y, mb_x);
return AVERROR_INVALIDDATA;
}
s->idsp.idct_put(ptr, linesize[c], s->block);
if (s->bits & 7)
shift_output(s, ptr, linesize[c]);
if (ptr) {
s->idsp.idct_put(ptr, linesize[c], s->block);
if (s->bits & 7)
shift_output(s, ptr, linesize[c]);
}
}
} else {
int block_idx = s->block_stride[c] * (v * mb_y + y) +
@@ -1592,6 +1604,8 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
}
if (id == AV_RB32("LJIF")) {
int rgb = s->rgb;
int pegasus_rct = s->pegasus_rct;
if (s->avctx->debug & FF_DEBUG_PICT_INFO)
av_log(s->avctx, AV_LOG_INFO,
"Pegasus lossless jpeg header found\n");
@@ -1601,17 +1615,27 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
skip_bits(&s->gb, 16); /* unknown always 0? */
switch (i=get_bits(&s->gb, 8)) {
case 1:
s->rgb = 1;
s->pegasus_rct = 0;
rgb = 1;
pegasus_rct = 0;
break;
case 2:
s->rgb = 1;
s->pegasus_rct = 1;
rgb = 1;
pegasus_rct = 1;
break;
default:
av_log(s->avctx, AV_LOG_ERROR, "unknown colorspace %d\n", i);
}
len -= 9;
if (s->got_picture)
if (rgb != s->rgb || pegasus_rct != s->pegasus_rct) {
av_log(s->avctx, AV_LOG_WARNING, "Mismatching LJIF tag\n");
goto out;
}
s->rgb = rgb;
s->pegasus_rct = pegasus_rct;
goto out;
}
if (id == AV_RL32("colr") && len > 0) {
@@ -1863,6 +1887,10 @@ int ff_mjpeg_find_marker(MJpegDecodeContext *s,
put_bits(&pb, 8, x);
if (x == 0xFF) {
x = src[b++];
if (x & 0x80) {
av_log(s->avctx, AV_LOG_WARNING, "Invalid escape sequence\n");
x &= 0x7f;
}
put_bits(&pb, 7, x);
bit_count--;
}

View File

@@ -61,6 +61,13 @@ static av_cold int mm_decode_init(AVCodecContext *avctx)
avctx->pix_fmt = AV_PIX_FMT_PAL8;
if (!avctx->width || !avctx->height ||
(avctx->width & 1) || (avctx->height & 1)) {
av_log(avctx, AV_LOG_ERROR, "Invalid video dimensions: %dx%d\n",
avctx->width, avctx->height);
return AVERROR(EINVAL);
}
s->frame = av_frame_alloc();
if (!s->frame)
return AVERROR(ENOMEM);
@@ -109,7 +116,7 @@ static int mm_decode_intra(MmContext * s, int half_horiz, int half_vert)
if (color) {
memset(s->frame->data[0] + y*s->frame->linesize[0] + x, color, run_length);
if (half_vert)
if (half_vert && y + half_vert < s->avctx->height)
memset(s->frame->data[0] + (y+1)*s->frame->linesize[0] + x, color, run_length);
}
x+= run_length;

View File

@@ -193,7 +193,13 @@ static av_always_inline int cmp_inline(MpegEncContext *s, const int x, const int
int uvdxy; /* no, it might not be used uninitialized */
if(dxy){
if(qpel){
c->qpel_put[size][dxy](c->temp, ref[0] + x + y*stride, stride); //FIXME prototype (add h)
if (h << size == 16) {
c->qpel_put[size][dxy](c->temp, ref[0] + x + y*stride, stride); //FIXME prototype (add h)
} else if (size == 0 && h == 8) {
c->qpel_put[1][dxy](c->temp , ref[0] + x + y*stride , stride);
c->qpel_put[1][dxy](c->temp + 8, ref[0] + x + y*stride + 8, stride);
} else
av_assert2(0);
if(chroma){
int cx= hx/2;
int cy= hy/2;

View File

@@ -1120,6 +1120,10 @@ static av_cold int mpeg_decode_init(AVCodecContext *avctx)
MpegEncContext *s2 = &s->mpeg_enc_ctx;
ff_mpv_decode_defaults(s2);
if ( avctx->codec_tag != AV_RL32("VCR2")
&& avctx->codec_tag != AV_RL32("BW10"))
avctx->coded_width = avctx->coded_height = 0; // do not trust dimensions from input
ff_mpv_decode_init(s2, avctx);
s->mpeg_enc_ctx.avctx = avctx;
@@ -1209,6 +1213,16 @@ static const enum AVPixelFormat mpeg2_hwaccel_pixfmt_list_420[] = {
AV_PIX_FMT_NONE
};
static const enum AVPixelFormat mpeg12_pixfmt_list_422[] = {
AV_PIX_FMT_YUV422P,
AV_PIX_FMT_NONE
};
static const enum AVPixelFormat mpeg12_pixfmt_list_444[] = {
AV_PIX_FMT_YUV444P,
AV_PIX_FMT_NONE
};
static inline int uses_vdpau(AVCodecContext *avctx) {
return avctx->pix_fmt == AV_PIX_FMT_VDPAU_MPEG1 || avctx->pix_fmt == AV_PIX_FMT_VDPAU_MPEG2;
}
@@ -1217,16 +1231,18 @@ static enum AVPixelFormat mpeg_get_pixelformat(AVCodecContext *avctx)
{
Mpeg1Context *s1 = avctx->priv_data;
MpegEncContext *s = &s1->mpeg_enc_ctx;
const enum AVPixelFormat *pix_fmts;
if (s->chroma_format < 2)
return ff_thread_get_format(avctx,
avctx->codec_id == AV_CODEC_ID_MPEG1VIDEO ?
pix_fmts = avctx->codec_id == AV_CODEC_ID_MPEG1VIDEO ?
mpeg1_hwaccel_pixfmt_list_420 :
mpeg2_hwaccel_pixfmt_list_420);
mpeg2_hwaccel_pixfmt_list_420;
else if (s->chroma_format == 2)
return AV_PIX_FMT_YUV422P;
pix_fmts = mpeg12_pixfmt_list_422;
else
return AV_PIX_FMT_YUV444P;
pix_fmts = mpeg12_pixfmt_list_444;
return ff_thread_get_format(avctx, pix_fmts);
}
static void setup_hwaccel_for_pixfmt(AVCodecContext *avctx)

View File

@@ -82,10 +82,15 @@ int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf,
int bit_size, int sync_extension)
{
GetBitContext gb;
int specific_config_bitindex;
int specific_config_bitindex, ret;
if (bit_size <= 0 || init_get_bits(&gb, buf, bit_size) < 0)
if (bit_size <= 0)
return AVERROR_INVALIDDATA;
ret = init_get_bits(&gb, buf, bit_size);
if (ret < 0)
return ret;
c->object_type = get_object_type(&gb);
c->sample_rate = get_sample_rate(&gb, &c->sampling_index);
c->chan_config = get_bits(&gb, 4);

View File

@@ -88,7 +88,7 @@ static int mpeg4_decode_header(AVCodecParserContext *s1, AVCodecContext *avctx,
if (avctx->extradata_size && pc->first_picture) {
init_get_bits(gb, avctx->extradata, avctx->extradata_size * 8);
ret = ff_mpeg4_decode_picture_header(dec_ctx, gb);
if (ret < 0)
if (ret < -1)
av_log(avctx, AV_LOG_WARNING, "Failed to parse extradata\n");
}

View File

@@ -2793,7 +2793,7 @@ AVCodec ff_mpeg4_vdpau_decoder = {
.long_name = NULL_IF_CONFIG_SMALL("MPEG-4 part 2 (VDPAU)"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_MPEG4,
.priv_data_size = sizeof(MpegEncContext),
.priv_data_size = sizeof(Mpeg4DecContext),
.init = decode_init,
.close = ff_h263_decode_end,
.decode = ff_h263_decode_frame,

View File

@@ -73,20 +73,21 @@ static int mpegaudio_parse(AVCodecParserContext *s1,
if (i > 4)
s->header_count = -2;
} else {
int header_threshold = avctx->codec_id != AV_CODEC_ID_NONE && avctx->codec_id != codec_id;
if((state&SAME_HEADER_MASK) != (s->header&SAME_HEADER_MASK) && s->header)
s->header_count= -3;
s->header= state;
s->header_count++;
s->frame_size = ret-4;
if (s->header_count > 0 + (avctx->codec_id != AV_CODEC_ID_NONE && avctx->codec_id != codec_id)) {
if (s->header_count > header_threshold) {
avctx->sample_rate= sr;
avctx->channels = channels;
s1->duration = frame_size;
avctx->codec_id = codec_id;
if (s->no_bitrate || !avctx->bit_rate) {
s->no_bitrate = 1;
avctx->bit_rate += (bit_rate - avctx->bit_rate) / s->header_count;
avctx->bit_rate += (bit_rate - avctx->bit_rate) / (s->header_count - header_threshold);
}
}
break;

View File

@@ -851,7 +851,7 @@ extern const uint8_t ff_aic_dc_scale_table[32];
extern const uint8_t ff_h263_chroma_qscale_table[32];
/* rv10.c */
void ff_rv10_encode_picture_header(MpegEncContext *s, int picture_number);
int ff_rv10_encode_picture_header(MpegEncContext *s, int picture_number);
int ff_rv_decode_dc(MpegEncContext *s, int n);
void ff_rv20_encode_picture_header(MpegEncContext *s, int picture_number);

View File

@@ -389,18 +389,18 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx)
switch(avctx->codec_id) {
case AV_CODEC_ID_MPEG1VIDEO:
case AV_CODEC_ID_MPEG2VIDEO:
avctx->rc_buffer_size = FFMAX(avctx->rc_max_rate, 15000000) * 112L / 15000000 * 16384;
avctx->rc_buffer_size = FFMAX(avctx->rc_max_rate, 15000000) * 112LL / 15000000 * 16384;
break;
case AV_CODEC_ID_MPEG4:
case AV_CODEC_ID_MSMPEG4V1:
case AV_CODEC_ID_MSMPEG4V2:
case AV_CODEC_ID_MSMPEG4V3:
if (avctx->rc_max_rate >= 15000000) {
avctx->rc_buffer_size = 320 + (avctx->rc_max_rate - 15000000L) * (760-320) / (38400000 - 15000000);
avctx->rc_buffer_size = 320 + (avctx->rc_max_rate - 15000000LL) * (760-320) / (38400000 - 15000000);
} else if(avctx->rc_max_rate >= 2000000) {
avctx->rc_buffer_size = 80 + (avctx->rc_max_rate - 2000000L) * (320- 80) / (15000000 - 2000000);
avctx->rc_buffer_size = 80 + (avctx->rc_max_rate - 2000000LL) * (320- 80) / (15000000 - 2000000);
} else if(avctx->rc_max_rate >= 384000) {
avctx->rc_buffer_size = 40 + (avctx->rc_max_rate - 384000L) * ( 80- 40) / ( 2000000 - 384000);
avctx->rc_buffer_size = 40 + (avctx->rc_max_rate - 384000LL) * ( 80- 40) / ( 2000000 - 384000);
} else
avctx->rc_buffer_size = 40;
avctx->rc_buffer_size *= 16384;
@@ -3657,8 +3657,11 @@ static int encode_picture(MpegEncContext *s, int picture_number)
ff_msmpeg4_encode_picture_header(s, picture_number);
else if (CONFIG_MPEG4_ENCODER && s->h263_pred)
ff_mpeg4_encode_picture_header(s, picture_number);
else if (CONFIG_RV10_ENCODER && s->codec_id == AV_CODEC_ID_RV10)
ff_rv10_encode_picture_header(s, picture_number);
else if (CONFIG_RV10_ENCODER && s->codec_id == AV_CODEC_ID_RV10) {
ret = ff_rv10_encode_picture_header(s, picture_number);
if (ret < 0)
return ret;
}
else if (CONFIG_RV20_ENCODER && s->codec_id == AV_CODEC_ID_RV20)
ff_rv20_encode_picture_header(s, picture_number);
else if (CONFIG_FLV_ENCODER && s->codec_id == AV_CODEC_ID_FLV1)

View File

@@ -178,7 +178,7 @@ static void gmc_motion(MpegEncContext *s,
s->sprite_delta[0][0], s->sprite_delta[0][1],
s->sprite_delta[1][0], s->sprite_delta[1][1],
a + 1, (1 << (2 * a + 1)) - s->no_rounding,
s->h_edge_pos >> 1, s->v_edge_pos >> 1);
(s->h_edge_pos + 1) >> 1, (s->v_edge_pos + 1) >> 1);
ptr = ref_picture[2];
s->mdsp.gmc(dest_cr, ptr, uvlinesize, 8,
@@ -186,7 +186,7 @@ static void gmc_motion(MpegEncContext *s,
s->sprite_delta[0][0], s->sprite_delta[0][1],
s->sprite_delta[1][0], s->sprite_delta[1][1],
a + 1, (1 << (2 * a + 1)) - s->no_rounding,
s->h_edge_pos >> 1, s->v_edge_pos >> 1);
(s->h_edge_pos + 1) >> 1, (s->v_edge_pos + 1) >> 1);
}
static inline int hpel_motion(MpegEncContext *s,

View File

@@ -37,16 +37,14 @@ static int msrle_decode_pal4(AVCodecContext *avctx, AVPicture *pic,
unsigned char extra_byte, odd_pixel;
unsigned char stream_byte;
unsigned int pixel_ptr = 0;
int row_dec = pic->linesize[0];
int row_ptr = (avctx->height - 1) * row_dec;
int frame_size = row_dec * avctx->height;
int line = avctx->height - 1;
int i;
while (row_ptr >= 0) {
while (line >= 0 && pixel_ptr <= avctx->width) {
if (bytestream2_get_bytes_left(gb) <= 0) {
av_log(avctx, AV_LOG_ERROR,
"MS RLE: bytestream overrun, %d rows left\n",
row_ptr);
"MS RLE: bytestream overrun, %dx%d left\n",
avctx->width - pixel_ptr, line);
return AVERROR_INVALIDDATA;
}
rle_code = stream_byte = bytestream2_get_byteu(gb);
@@ -55,7 +53,7 @@ static int msrle_decode_pal4(AVCodecContext *avctx, AVPicture *pic,
stream_byte = bytestream2_get_byte(gb);
if (stream_byte == 0) {
/* line is done, goto the next one */
row_ptr -= row_dec;
line--;
pixel_ptr = 0;
} else if (stream_byte == 1) {
/* decode is done */
@@ -65,13 +63,12 @@ static int msrle_decode_pal4(AVCodecContext *avctx, AVPicture *pic,
stream_byte = bytestream2_get_byte(gb);
pixel_ptr += stream_byte;
stream_byte = bytestream2_get_byte(gb);
row_ptr -= stream_byte * row_dec;
} else {
// copy pixels from encoded stream
odd_pixel = stream_byte & 1;
rle_code = (stream_byte + 1) / 2;
extra_byte = rle_code & 0x01;
if (row_ptr + pixel_ptr + stream_byte > frame_size ||
if (pixel_ptr + 2*rle_code - odd_pixel > avctx->width ||
bytestream2_get_bytes_left(gb) < rle_code) {
av_log(avctx, AV_LOG_ERROR,
"MS RLE: frame/stream ptr just went out of bounds (copy)\n");
@@ -82,13 +79,13 @@ static int msrle_decode_pal4(AVCodecContext *avctx, AVPicture *pic,
if (pixel_ptr >= avctx->width)
break;
stream_byte = bytestream2_get_byteu(gb);
pic->data[0][row_ptr + pixel_ptr] = stream_byte >> 4;
pic->data[0][line * pic->linesize[0] + pixel_ptr] = stream_byte >> 4;
pixel_ptr++;
if (i + 1 == rle_code && odd_pixel)
break;
if (pixel_ptr >= avctx->width)
break;
pic->data[0][row_ptr + pixel_ptr] = stream_byte & 0x0F;
pic->data[0][line * pic->linesize[0] + pixel_ptr] = stream_byte & 0x0F;
pixel_ptr++;
}
@@ -98,7 +95,7 @@ static int msrle_decode_pal4(AVCodecContext *avctx, AVPicture *pic,
}
} else {
// decode a run of data
if (row_ptr + pixel_ptr + stream_byte > frame_size) {
if (pixel_ptr + rle_code > avctx->width + 1) {
av_log(avctx, AV_LOG_ERROR,
"MS RLE: frame ptr just went out of bounds (run)\n");
return AVERROR_INVALIDDATA;
@@ -108,9 +105,9 @@ static int msrle_decode_pal4(AVCodecContext *avctx, AVPicture *pic,
if (pixel_ptr >= avctx->width)
break;
if ((i & 1) == 0)
pic->data[0][row_ptr + pixel_ptr] = stream_byte >> 4;
pic->data[0][line * pic->linesize[0] + pixel_ptr] = stream_byte >> 4;
else
pic->data[0][row_ptr + pixel_ptr] = stream_byte & 0x0F;
pic->data[0][line * pic->linesize[0] + pixel_ptr] = stream_byte & 0x0F;
pixel_ptr++;
}
}

View File

@@ -303,7 +303,7 @@ static void encode_block(NellyMoserEncodeContext *s, unsigned char *output, int
apply_mdct(s);
init_put_bits(&pb, output, output_size * 8);
init_put_bits(&pb, output, output_size);
i = 0;
for (band = 0; band < NELLY_BANDS; band++) {

View File

@@ -908,6 +908,11 @@ static av_cold int on2avc_decode_init(AVCodecContext *avctx)
On2AVCContext *c = avctx->priv_data;
int i;
if (avctx->channels > 2U) {
avpriv_request_sample(avctx, "Decoding more than 2 channels");
return AVERROR_PATCHWELCOME;
}
c->avctx = avctx;
avctx->sample_fmt = AV_SAMPLE_FMT_FLTP;
avctx->channel_layout = (avctx->channels == 2) ? AV_CH_LAYOUT_STEREO
@@ -918,6 +923,7 @@ static av_cold int on2avc_decode_init(AVCodecContext *avctx)
av_log(avctx, AV_LOG_ERROR, "0x500 version should be mono\n");
return AVERROR_INVALIDDATA;
}
if (avctx->channels == 2)
av_log(avctx, AV_LOG_WARNING,
"Stereo mode support is not good, patch is welcome\n");

View File

@@ -102,11 +102,10 @@ static const AVOption avcodec_options[] = {
{"hex", "hex motion estimation", 0, AV_OPT_TYPE_CONST, {.i64 = ME_HEX }, INT_MIN, INT_MAX, V|E, "me_method" },
{"umh", "umh motion estimation", 0, AV_OPT_TYPE_CONST, {.i64 = ME_UMH }, INT_MIN, INT_MAX, V|E, "me_method" },
{"iter", "iter motion estimation", 0, AV_OPT_TYPE_CONST, {.i64 = ME_ITER }, INT_MIN, INT_MAX, V|E, "me_method" },
{"extradata_size", NULL, OFFSET(extradata_size), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX},
{"time_base", NULL, OFFSET(time_base), AV_OPT_TYPE_RATIONAL, {.dbl = 0}, INT_MIN, INT_MAX},
{"g", "set the group of picture (GOP) size", OFFSET(gop_size), AV_OPT_TYPE_INT, {.i64 = 12 }, INT_MIN, INT_MAX, V|E},
{"ar", "set audio sampling rate (in Hz)", OFFSET(sample_rate), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, A|D|E},
{"ac", "set number of audio channels", OFFSET(channels), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, A|D|E},
{"ar", "set audio sampling rate (in Hz)", OFFSET(sample_rate), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, 0, INT_MAX, A|D|E},
{"ac", "set number of audio channels", OFFSET(channels), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, 0, INT_MAX, A|D|E},
{"cutoff", "set cutoff bandwidth", OFFSET(cutoff), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, A|E},
{"frame_size", NULL, OFFSET(frame_size), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, A|E},
{"frame_number", NULL, OFFSET(frame_number), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX},

View File

@@ -451,6 +451,14 @@ static int opus_decode_packet(AVCodecContext *avctx, void *data,
int coded_samples = 0;
int decoded_samples = 0;
int i, ret;
int delayed_samples = 0;
for (i = 0; i < c->nb_streams; i++) {
OpusStreamContext *s = &c->streams[i];
s->out[0] =
s->out[1] = NULL;
delayed_samples = FFMAX(delayed_samples, s->delayed_samples);
}
/* decode the header of the first sub-packet to find out the sample count */
if (buf) {
@@ -464,7 +472,7 @@ static int opus_decode_packet(AVCodecContext *avctx, void *data,
c->streams[0].silk_samplerate = get_silk_samplerate(pkt->config);
}
frame->nb_samples = coded_samples + c->streams[0].delayed_samples;
frame->nb_samples = coded_samples + delayed_samples;
/* no input or buffered data => nothing to do */
if (!frame->nb_samples) {
@@ -499,6 +507,12 @@ static int opus_decode_packet(AVCodecContext *avctx, void *data,
av_log(avctx, AV_LOG_ERROR, "Error parsing the packet header.\n");
return ret;
}
if (coded_samples != s->packet.frame_count * s->packet.frame_duration) {
av_log(avctx, AV_LOG_ERROR,
"Mismatching coded sample count in substream %d.\n", i);
return AVERROR_INVALIDDATA;
}
s->silk_samplerate = get_silk_samplerate(s->packet.config);
}

Some files were not shown because too many files have changed in this diff Show More