Compare commits

..

169 Commits

Author SHA1 Message Date
Michael Niedermayer
f682094aaa Update for 0.7.11
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 22:20:25 +01:00
Michael Niedermayer
f9c9ee445f Merge branch 'release/0.8' into release/0.7
* release/0.8:
  shorten: Fix invalid free()
  j2kdec: Fix crash in get_qcx
  j2kdec: Check curtileno for validity
  atrac3: Fix crash in tonal component decoding. Fixes Ticket780 Bug Found by: cosminamironesei
  h264: check chroma_format_idc range. Fixes Ticket758 Bug found by: Diana Elena Muscalu
  aacsbr: Fix memory corruption. Fixes Ticket760 and Ticket761 Bug Found by: Diana Elena Muscalu
  j2kdec: Fix integer overflow leading to a segfault Fixes Ticket776 Bug found by: Diana Elena Muscalu
  ws_snd1: Fix wrong samples count and crash.
  lavfi: add missing check in avfilter_filter_samples()
  Update Changelog for 0.7.4 release
  Update RELEASE file for 0.7.4
  swscale: fix crash in fast_bilinear code when compiled with -mred-zone.
  vorbis: An additional defense in the Vorbis codec.
  vorbisdec: Fix decoding bug with channel handling

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 22:19:40 +01:00
Michael Niedermayer
8935e7474a shorten: Fix invalid free()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 18bcfc912e)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 21:55:59 +01:00
Michael Niedermayer
4ad5618210 j2kdec: Fix crash in get_qcx
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 282bb02839)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 21:55:38 +01:00
Michael Niedermayer
6b4c38b362 j2kdec: Check curtileno for validity
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3eedf9f716)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 21:54:42 +01:00
Michael Niedermayer
049b08d04c atrac3: Fix crash in tonal component decoding.
Fixes Ticket780
Bug Found by: cosminamironesei

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 21:54:09 +01:00
Michael Niedermayer
8454d81ebe h264: check chroma_format_idc range.
Fixes Ticket758
Bug found by: Diana Elena Muscalu

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 21:52:50 +01:00
Michael Niedermayer
6f0e349a02 aacsbr: Fix memory corruption.
Fixes Ticket760 and Ticket761
Bug Found by: Diana Elena Muscalu

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 21:52:43 +01:00
Michael Niedermayer
56173eabb6 j2kdec: Fix integer overflow leading to a segfault
Fixes Ticket776
Bug found by: Diana Elena Muscalu

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 21:52:31 +01:00
Michael Niedermayer
d80db23e7d ws_snd1: Fix wrong samples count and crash.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 5257743aee)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 21:52:10 +01:00
Stefano Sabatini
c4cc8584d0 lavfi: add missing check in avfilter_filter_samples()
Avoid out-of-buffer data access when nb_channels is 8.
(cherry picked from commit ae21776207)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 21:52:03 +01:00
Michael Niedermayer
1c1af2af0d Merge remote-tracking branch 'qatar/release/0.7' into release/0.8
* qatar/release/0.7:
  Update Changelog for 0.7.4 release
  Update RELEASE file for 0.7.4
  swscale: fix crash in fast_bilinear code when compiled with -mred-zone.
  vorbis: An additional defense in the Vorbis codec.
  vorbisdec: Fix decoding bug with channel handling

Conflicts:
	Changelog
	RELEASE

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-12 20:55:46 +01:00
Reinhard Tartler
d4653e882f Update Changelog for 0.7.4 release 2012-01-11 11:40:38 +01:00
Reinhard Tartler
8f17d7dd4b Update RELEASE file for 0.7.4 2012-01-10 21:00:09 +01:00
Ronald S. Bultje
dd8228dcff swscale: fix crash in fast_bilinear code when compiled with -mred-zone.
Additional comments from Måns Rullgard have been integrated
by Reinhard Tartler.

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
(cherry picked from commit b14fa5572c)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2012-01-10 21:00:09 +01:00
Michael Niedermayer
c0cbf3af01 Merge branch 'release/0.8' into release/0.7
* release/0.8:
  matroskadec: Fix a bug where a pointer was cached to an array that might later move due to a realloc()
  vorbis: Avoid some out-of-bounds reads
  vp3: fix oob read for negative tokens and memleaks on error. (cherry picked from commit 8370e426e4)
  avserver: Fix a bug where the socket is IPv4, but IPv6 is autoselected for the loopback address.
  vp3: fix streams with non-zero last coefficient
  Update for 0.8.9
  vp3: fix regression with mplayer-crash.ogv
  h264: fix init of topleft ref/mv. Fixes Ticket778
  Update for 0.8.8

Conflicts:
	Doxyfile
	RELEASE
	VERSION

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-09 00:08:15 +01:00
Chris Evans
b0283ccb9e vorbis: An additional defense in the Vorbis codec.
Fixes Bug: #190
Chromium Bug: #100543
Related to CVE-2011-3893

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
(cherry picked from commit afb2aa5379)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2012-01-08 09:11:02 +01:00
Reinhard Tartler
97f23c72a3 vorbisdec: Fix decoding bug with channel handling
Fixes Bug: #191
Chromium Bug: #101458
CVE-2011-3895

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
(cherry picked from commit e6d527ff72)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2012-01-08 09:10:55 +01:00
Michael Niedermayer
3b0b8c6531 Merge remote-tracking branch 'qatar/release/0.7' into release/0.8
* qatar/release/0.7:
  matroskadec: Fix a bug where a pointer was cached to an array that might later move due to a realloc()
  vorbis: Avoid some out-of-bounds reads
  vp3: fix oob read for negative tokens and memleaks on error. (cherry picked from commit 8370e426e4)
  avserver: Fix a bug where the socket is IPv4, but IPv6 is autoselected for the loopback address.
  vp3: fix streams with non-zero last coefficient

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-08 06:53:38 +01:00
Chris Evans
1f625431e2 matroskadec: Fix a bug where a pointer was cached to an array that might later move due to a realloc()
Fixes bug #190
Chromium bug #100492
related to CVE-2011-3893

Signed-off-by: Reinhard Tartler <siretart@tauware.de>

(cherry-picked from commit faaec4676c)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2012-01-07 22:01:19 +01:00
Chris Evans
4a94678f1b vorbis: Avoid some out-of-bounds reads
Fixes Bug: #190
Chromium Bug: #100543
Related to CVE-2011-3893

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
(cherry picked from commit 57cd6d7095)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2012-01-07 21:59:02 +01:00
Ronald S. Bultje
c624935554 vp3: fix oob read for negative tokens and memleaks on error.
(cherry picked from commit 8370e426e4)

Fixes: #189
Chromium-Bug: 101172,100465
CVE-2011-3892

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2012-01-07 09:24:52 +01:00
Nathan Caldwell
06df542067 avserver: Fix a bug where the socket is IPv4, but IPv6 is autoselected for the loopback address.
This fixes bind(8080): Address family not supported by protocol.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
(cherry picked from commit f5e717f3c7)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2012-01-05 22:26:55 +01:00
Janne Grunau
82a11fcff2 vp3: fix streams with non-zero last coefficient
Fixes a regression introduced in 8b94df0f20.
(cherry picked from commit 9b4767e478)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2012-01-05 20:59:29 +01:00
Michael Niedermayer
cee1568ae1 Update for 0.8.9
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-02 20:20:14 +01:00
Michael Niedermayer
870e74dc43 Update for 0.7.10
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-02 20:19:40 +01:00
Michael Niedermayer
1218f8ed49 vp3: fix regression with mplayer-crash.ogv
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a2a12e3358)
2012-01-02 17:24:43 +01:00
Michael Niedermayer
c409ac5adc vp3: fix regression with mplayer-crash.ogv
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a2a12e3358)
2012-01-02 17:24:31 +01:00
Michael Niedermayer
575cbbffaa h264: fix init of topleft ref/mv.
Fixes Ticket778

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 680880c98d)
2011-12-28 02:17:28 +01:00
Michael Niedermayer
680880c98d h264: fix init of topleft ref/mv.
Fixes Ticket778

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-12-27 21:33:32 +01:00
Michael Niedermayer
d75909f247 Update for 0.8.8
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-12-25 21:45:57 +01:00
Michael Niedermayer
ccdc68eb35 Update for 0.7.9
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-12-25 21:45:24 +01:00
Michael Niedermayer
ef0c89e969 Merge branch 'release/0.8' into release/0.7
* release/0.8: (22 commits)
  Update Changelog for 0.7.3 release
  4xm: Add a check in decode_i_frame to prevent buffer overreads
  wma: initialize prev_block_len_bits, next_block_len_bits, and block_len_bits.
  Update RELEASE file for 0.7.3
  swscale: #include "libavutil/mathematics.h"
  vp3dec: Check coefficient index in vp3_dequant()
  svq1dec: call avcodec_set_dimensions() after dimensions changed.
  mpegtsenc: fix handling of large audio packets (sorry i have no sample, just a user report)
  h264: Use mismatching frame numbers in fields
  swscale: Readd #define _SVID_SOURCE
  vp6: Fix illegal read.
  vp6: Fix illegal read.
  vp6: Reset the internal state when aborting key frames header parsing
  vp6: Check for huffman tree build errors
  vp6: partially propagate huffman tree building errors during coeff model parsing and fix misspelling
  imgutils: Fix illegal read.
  qdm2: check output buffer size before decoding
  Fix out of bound reads in the QDM2 decoder.
  Check for out of bound writes in the QDM2 decoder.
  vmd: fix segfaults on corruped streams
  ...

Conflicts:
	Doxyfile
	RELEASE
	VERSION

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-12-25 19:57:17 +01:00
Michael Niedermayer
8413f12e1b Merge remote-tracking branch 'qatar/release/0.7' into release/0.8
* qatar/release/0.7:
  Update Changelog for 0.7.3 release

Conflicts:
	Changelog

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-12-25 19:25:27 +01:00
Michael Niedermayer
df825c956a Merge remote-tracking branch 'qatar/release/0.7' into release/0.8
This merge is primary for metadata, theres little actually changed
except cosmetics

* qatar/release/0.7:
  4xm: Add a check in decode_i_frame to prevent buffer overreads
  wma: initialize prev_block_len_bits, next_block_len_bits, and block_len_bits.
  Update RELEASE file for 0.7.3
  swscale: #include "libavutil/mathematics.h"
  vp3dec: Check coefficient index in vp3_dequant()
  svq1dec: call avcodec_set_dimensions() after dimensions changed.
  swscale: Readd #define _SVID_SOURCE

Conflicts:
	RELEASE
	libavcodec/4xm.c
	libavcodec/vp3.c
	libswscale/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-12-24 01:41:43 +01:00
Reinhard Tartler
d61b38b9db Update Changelog for 0.7.3 release 2011-12-23 22:40:24 +01:00
Shitiz Garg
d912a30c7d 4xm: Add a check in decode_i_frame to prevent buffer overreads
Fixes bugzilla #135

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
(cherry picked from commit 355d917c0b)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-23 22:27:02 +01:00
Justin Ruggles
8dba5608dc wma: initialize prev_block_len_bits, next_block_len_bits, and block_len_bits.
The initial values are not checked against the number of block sizes.
Initializing them to frame_len_bits will result in a block size index of 0
in these cases instead of something that might be out-of-range.

Fixes Bug 81.
(cherry picked from commit 05d1e45d1f)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-23 22:27:02 +01:00
Reinhard Tartler
7ce728050b Update RELEASE file for 0.7.3 2011-12-23 16:00:17 +01:00
Reinhard Tartler
851098c9e0 swscale: #include "libavutil/mathematics.h"
this file uses the M_PI macro since
4e74187db2, so include the correct header
directly.

Signed-off-by: Reinhard Tartler <siretart@tauware.de>

(cherry picked from commit 5089ce1b5a)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-23 15:58:31 +01:00
Reinhard Tartler
bba709214a vp3dec: Check coefficient index in vp3_dequant()
Based on a patch by Michael Niedermayer <michaelni@gmx.at>

Fixes NGS00145, CVE-2011-4352

Found-by: Phillip Langlois
Signed-off-by: Reinhard Tartler <siretart@tauware.de>

(cherry picked from commit 8b94df0f20)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-23 15:56:01 +01:00
Michael Niedermayer
0eca0da06e svq1dec: call avcodec_set_dimensions() after dimensions changed.
Fixes NGS00148, CVE-2011-4579

Found-by: Phillip Langlois
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>

(cherry picked from commit 6e24b9488e)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-23 15:55:38 +01:00
Michael Niedermayer
0125c10217 mpegtsenc: fix handling of large audio packets
(sorry i have no sample, just a user report)

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

Conflicts:

	libavformat/mpegtsenc.c

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-12-09 10:29:52 +01:00
Michael Niedermayer
d38580a7bb mpegtsenc: fix handling of large audio packets
(sorry i have no sample, just a user report)

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

Conflicts:

	libavformat/mpegtsenc.c

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-12-09 03:45:40 +01:00
Michael Niedermayer
8acf9905a1 Merge remote-tracking branch 'qatar/release/0.7' into release/0.8
Note, all these commits where already in our release, this merge thus
changes nothing, its just for metadata

* qatar/release/0.7:
  vp6: Fix illegal read.
  vp6: Fix illegal read.
  vp6: Reset the internal state when aborting key frames header parsing
  vp6: Check for huffman tree build errors
  vp6: partially propagate huffman tree building errors during coeff model parsing and fix misspelling
  imgutils: Fix illegal read.
  qdm2: check output buffer size before decoding
  Fix out of bound reads in the QDM2 decoder.
  Check for out of bound writes in the QDM2 decoder.
  vmd: fix segfaults on corruped streams

Conflicts:
	libavcodec/qdm2.c
	libavcodec/vmdav.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-12-08 01:14:02 +01:00
Michael Niedermayer
ba5bb0562b h264: Use mismatching frame numbers in fields
to synchronize the first/second field state independant of them being reference or not.
Fixes Ticket354

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 545ec935a4)
2011-12-06 23:39:42 +01:00
Michael Niedermayer
1550c0885d h264: Use mismatching frame numbers in fields
to synchronize the first/second field state independant of them being reference or not.
Fixes Ticket354

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 545ec935a4)
2011-12-06 23:31:39 +01:00
Martin Storsjö
38a511e84c swscale: Readd #define _SVID_SOURCE
This was removed erroneously in
046f081b46. This define still is
necessary for getting MAP_ANONYMOUS defined on linux/glibc,
despite the define reshuffling done in that commit.

Without MAP_ANONYMOUS defined, the mprotect calls for setting the
generated mmx2 scaler code pages executable are left out, causing
crashes if that codepath is chosen.

This patch fixes scaling from 192x144 to 320x240 with
-sws_flags fast_bilinear, which crashes on linux at the
moment.

Signed-off-by: Martin Storsjö <martin@martin.st>
(cherry picked from commit f32dfad9dc)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-05 21:12:11 +01:00
Thierry Foucu
ba4b08b789 vp6: Fix illegal read.
Found with Address Sanitizer

Signed-off-by: Alex Converse <alex.converse@gmail.com>
(cherry picked from commit e0966eb140)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-04 09:21:09 +01:00
Alex Converse
67a7ed623b vp6: Fix illegal read.
(cherry picked from commit 2a6eb06254)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-04 09:20:49 +01:00
Laurent Aimar
c76505e0de vp6: Reset the internal state when aborting key frames header parsing
It prevents leaving the state only half initialized.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
(cherry picked from commit a72cad0a6c)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-04 09:20:28 +01:00
Laurent Aimar
30c08e2261 vp6: Check for huffman tree build errors
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
(cherry picked from commit 066fff755a)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-04 09:20:10 +01:00
Dustin Brody
7367cbec1b vp6: partially propagate huffman tree building errors during coeff model parsing and fix misspelling
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit f913eeea43)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-04 09:19:29 +01:00
Thierry Foucu
28acce2861 imgutils: Fix illegal read.
Found with address sanitizer.

Signed-off-by: Alex Converse <alex.converse@gmail.com>
(cherry picked from commit c693aa6f71)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-04 09:18:17 +01:00
Justin Ruggles
7347205351 qdm2: check output buffer size before decoding
(cherry picked from commit 7d49f79f1c)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-04 08:55:55 +01:00
Laurent Aimar
0d93d5c461 Fix out of bound reads in the QDM2 decoder.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
(cherry picked from commit 5a19acb17c)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-04 08:55:55 +01:00
Laurent Aimar
a31ccacb1a Check for out of bound writes in the QDM2 decoder.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
(cherry picked from commit 291d74a46d)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-04 08:44:09 +01:00
Laurent Aimar
494cfacdb9 vmd: fix segfaults on corruped streams
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-03 21:07:07 +01:00
Sergiy Gur'yev
4f58d8ebc1 Fix adts format creation in aac+ encoder modified: libavcodec/libaacplus.c
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 32ed7da135)
2011-11-24 14:53:04 +01:00
Sergiy Gur'yev
47b5fabd6a Fix adts format creation in aac+ encoder modified: libavcodec/libaacplus.c
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 32ed7da135)
2011-11-24 14:48:03 +01:00
Michael Niedermayer
e66860a66b Update for 0.8.7
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 20:00:52 +01:00
Michael Niedermayer
4e9b2c5732 Update for 0.7.8
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 20:00:13 +01:00
Michael Niedermayer
a12dec4699 Merge branch 'release/0.8' into release/0.7
* release/0.8: (31 commits)
  svq1dec: call avcodec_set_dimensions() after dimensions changed. Fixes NGS00148
  vp3dec: Check coefficient index in vp3_dequant() Fixes NGS00145
  qdm2dec: fix buffer overflow. Fixes NGS00144
  h264: Fix invalid interlaced progressive MB combinations for direct mode prediction. Fixes Ticket312
  mpegvideo: dont use ff_mspel_motion() for vc1 Fixes Ticket655
  imgutils: Fix illegal read.
  ac3probe: Detect Sonic Foundry Soft Encode AC3 as raw AC3. Our ac3 code chain can handle it fine. More ideal would be to write a demuxer that actually extracts what can be from the additional headers and uses it for whatever it can be used for.
  mjpeg: support mpo Fixes stereoscopic_photo.mpo
  Add a version bump and APIchanges entry for avcodec_open2 and avformat_find_stream_info.
  lavf: fix multiplication overflow in avformat_find_stream_info()
  lavf: fix invalid reads in avformat_find_stream_info()
  lavf: add avformat_find_stream_info()
  lavc: fix parentheses placement in avcodec_open2().
  lavc: introduce avcodec_open2() as a replacement for avcodec_open().
  rawdec: use a default sample rate if none is specified. Fixes "ffmpeg -f s16le -i /dev/zero"
  rawdec: add check on sample_rate
  qdm2dec: check remaining input bits in the mainloop of qdm2_fft_decode_tones() This is neccessary but likely not sufficient to prevent out of array reads.
  cinepak: check strip_size
  wma: Check channel number before init. Fixes Ticket240
  Do not try to read 16bit gray png files with alpha channel.
  ...

Conflicts:
	libavcodec/version.h
	libavformat/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 19:41:08 +01:00
Michael Niedermayer
661ee45f88 svq1dec: call avcodec_set_dimensions() after dimensions changed.
Fixes NGS00148

Found-by: Phillip Langlois
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4931c8f0f1)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 18:31:30 +01:00
Michael Niedermayer
fa5292d9d4 vp3dec: Check coefficient index in vp3_dequant()
Fixes NGS00145

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 18:31:23 +01:00
Michael Niedermayer
a6a61a6d1d qdm2dec: fix buffer overflow.
Fixes NGS00144

This also adds a few lines of code from master that are needed for this fix.

Thanks to Phillip for suggestions to improve the patch.
Found-by: Phillip Langlois
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 18:29:17 +01:00
Michael Niedermayer
b8fc301769 h264: Fix invalid interlaced progressive MB combinations for direct mode prediction.
Fixes Ticket312

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 16:48:40 +01:00
Michael Niedermayer
9b667da05d mpegvideo: dont use ff_mspel_motion() for vc1
Fixes Ticket655

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 16:48:25 +01:00
Thierry Foucu
4007352bd0 imgutils: Fix illegal read.
Found with address sanitizer.

Signed-off-by: Alex Converse <alex.converse@gmail.com>
(cherry picked from commit c693aa6f71)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 16:48:18 +01:00
Michael Niedermayer
5c6a2d9878 ac3probe: Detect Sonic Foundry Soft Encode AC3 as raw AC3.
Our ac3 code chain can handle it fine.
More ideal would be to write a demuxer that actually extracts what can be from the additional
headers and uses it for whatever it can be used for.

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 16:47:53 +01:00
Michael Niedermayer
17c54e9317 mjpeg: support mpo
Fixes stereoscopic_photo.mpo

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-21 16:47:49 +01:00
Michael Niedermayer
14d4eee547 Merge remote-tracking branch 'qatar/release/0.7' into release/0.8
* qatar/release/0.7:
  Add a version bump and APIchanges entry for avcodec_open2 and avformat_find_stream_info.
  lavf: fix multiplication overflow in avformat_find_stream_info()
  lavf: fix invalid reads in avformat_find_stream_info()
  lavf: add avformat_find_stream_info()
  lavc: fix parentheses placement in avcodec_open2().
  lavc: introduce avcodec_open2() as a replacement for avcodec_open().

Conflicts:
	doc/APIchanges
	libavcodec/utils.c
	libavcodec/version.h
	libavformat/avformat.h
	libavformat/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-20 03:27:50 +01:00
Anton Khirnov
07624cfeaa Add a version bump and APIchanges entry for avcodec_open2 and avformat_find_stream_info. 2011-11-19 10:22:27 +01:00
Mans Rullgard
d6f763659c lavf: fix multiplication overflow in avformat_find_stream_info()
Converting to double before the multiplication rather than after
avoids an integer overflow in some cases.

Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 52767d891c)

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2011-11-19 10:22:27 +01:00
Anton Khirnov
e297459eb6 lavf: fix invalid reads in avformat_find_stream_info()
(cherry picked from commit e358f7ee90)

Conflicts:

	libavformat/utils.c

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2011-11-19 10:22:27 +01:00
Anton Khirnov
afe2726089 lavf: add avformat_find_stream_info()
It supports passing options to codecs.
(cherry picked from commit a67c061e0f)

Conflicts:

	libavformat/utils.c

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2011-11-19 10:22:27 +01:00
Baptiste Coudurier
23f0d0f16b lavc: fix parentheses placement in avcodec_open2().
Signed-off-by: Anton Khirnov <anton@khirnov.net>
(cherry picked from commit 1d36fb13b0)

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2011-11-19 10:22:27 +01:00
Anton Khirnov
47953c33ea lavc: introduce avcodec_open2() as a replacement for avcodec_open().
Adds support for decoder-private options and makes setting other options
simpler.
(cherry picked from commit 0b950fe240)

Conflicts:

	libavcodec/avcodec.h

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2011-11-19 10:22:26 +01:00
Michael Niedermayer
64a854d06b rawdec: use a default sample rate if none is specified.
Fixes "ffmpeg -f s16le -i /dev/zero"

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 23:09:56 +01:00
Stefano Sabatini
91805f06a3 rawdec: add check on sample_rate
Prevent error condition in case sample_rate is unset or set to a negative
value. In particular, fix divide-by-zero error occurring in ffmpeg due to
sample_rate set to 0 in output_packet(), in code:

                ist->next_pts += ((int64_t)AV_TIME_BASE * ist->st->codec->frame_size) /
                    ist->st->codec->sample_rate;

Fix trac ticket #324.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 21:33:11 +01:00
Michael Niedermayer
8120a1d9bd qdm2dec: check remaining input bits in the mainloop of qdm2_fft_decode_tones()
This is neccessary but likely not sufficient to prevent out of array reads.

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

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 21:05:12 +01:00
Michael Niedermayer
211a107208 cinepak: check strip_size
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit cea0c82d9b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 21:05:12 +01:00
Michael Niedermayer
fdd09e5d7b wma: Check channel number before init.
Fixes Ticket240

Based on patch by ami_stuff
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 20431a9982)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 21:05:12 +01:00
Carl Eugen Hoyos
00d35e82b2 Do not try to read 16bit gray png files with alpha channel.
FFmpeg does not support gray16a.
Fixes the crash in ticket #644.
(cherry picked from commit 0c5fd6372e)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 21:05:12 +01:00
K.Y.H
807342e1cf cook: fix apparent typo in extradata parsing
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 554caed2d3)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 21:05:12 +01:00
Michael Niedermayer
abaf8c386e ffplay: limit lowres to the maximum supported. Fixes Ticket591
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Marton Balint <cus@passwd.hu>
(cherry picked from commit d8407ee2b1)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 21:05:12 +01:00
Michael Niedermayer
e5578ad3cd v4l2: fix uninitialized variable
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 21:05:12 +01:00
Michael Niedermayer
4e0fae982e vf_transpose: remove pix_fmts which can currently not be supported.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3fd0f6ed25)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 21:05:12 +01:00
Alex Converse
f62fa1ce9f vp5: Fix illegal read.
Found with Address Sanitizer
(cherry picked from commit bb4b0ad83b)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 14:29:52 +01:00
Thierry Foucu
8a63deab15 vp6: Fix illegal read.
Found with Address Sanitizer

Signed-off-by: Alex Converse <alex.converse@gmail.com>
(cherry picked from commit e0966eb140)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-18 14:29:52 +01:00
Stefano Sabatini
87ae12009e vf_transpose: avoid multiple calls to avfilter_draw_slice()
avfilter_draw_slice() is already called in the end_frame() callback,
this avoids multiple calls. This is done by adding a null draw_slice()
callback.

In particular fix crash occurring with -vf transpose=3,hflip, fix trac
issue #371.
(cherry picked from commit d9c23a0d5a)
2011-11-13 23:23:03 +01:00
Stefano Sabatini
fe06305b0d vf_transpose: avoid multiple calls to avfilter_draw_slice()
avfilter_draw_slice() is already called in the end_frame() callback,
this avoids multiple calls. This is done by adding a null draw_slice()
callback.

In particular fix crash occurring with -vf transpose=3,hflip, fix trac
issue #371.
(cherry picked from commit d9c23a0d5a)
2011-11-13 23:22:06 +01:00
Reimar Döffinger
3970d4e728 nuv: Fix combination of size changes and LZO compression.
There were multiple issues, for example might we have to re-run
the decompression when the size of the buffer increased,
we should always use a decompression buffer large enough for
the header (so we do not get stuck when the size is too small).

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2011-11-08 20:38:31 +01:00
Reimar Döffinger
80a173a33b av_lzo1x_decode: properly handle negative buffer length.
Treating them like 0 is safest, current code would invoke
undefined pointer arithmetic behaviour in this case.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
(cherry picked from commit b9242fd12f)
(cherry picked from commit 0411b19289)
2011-11-08 20:37:05 +01:00
Reimar Döffinger
d58c5586ec nuv: Fix combination of size changes and LZO compression.
There were multiple issues, for example might we have to re-run
the decompression when the size of the buffer increased,
we should always use a decompression buffer large enough for
the header (so we do not get stuck when the size is too small).

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2011-11-08 19:48:14 +01:00
Reimar Döffinger
0411b19289 av_lzo1x_decode: properly handle negative buffer length.
Treating them like 0 is safest, current code would invoke
undefined pointer arithmetic behaviour in this case.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
(cherry picked from commit b9242fd12f)
2011-11-08 19:45:12 +01:00
Miroslav Slugeň
fd30240e98 libavformat: add support for G726 audio decoder in RTP and RTSP streams
Fixes Ticket611

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit df9c1cfb48)
2011-11-08 19:04:26 +01:00
Reimar Döffinger
d484a07f1c Do not call parse_keyframes_index with NULL stream.
Seems to fix trac issue #569.
Sample is unfortunately not available, but it might be caused by
an index existing for non-existing audio stream (?).

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
(cherry picked from commit 6ea6ff053a)
2011-11-08 19:03:42 +01:00
Reimar Döffinger
54e4bf3296 Do not call parse_keyframes_index with NULL stream.
Seems to fix trac issue #569.
Sample is unfortunately not available, but it might be caused by
an index existing for non-existing audio stream (?).

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
(cherry picked from commit 6ea6ff053a)
2011-11-08 19:03:22 +01:00
Michael Niedermayer
8045254bac update versions for 0.7 branch
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-04 22:05:34 +01:00
Michael Niedermayer
3e17543491 Merge branch 'release/0.8' into release/0.7
* release/0.8: (96 commits)
  Version numbers for 0.8.6
  snow: emu edge support Fixes Ticket592
  imc: validate channel count
  imc: check for ff_fft_init() failure (cherry picked from commit 95fee70d67)
  libgsmdec: check output buffer size before decoding (cherry picked from commit b03761b130)
  configure: fix arch x86_32
  mp3enc: avoid truncating id3v1 tags by one byte
  asfdec: Check packet_replic_size earlier
  cin audio: validate the channel count
  binkaudio: add some buffer overread checks.
  atrac1: validate number of channels (cherry picked from commit bff5b2c1ca)
  atrac1: check output buffer size before decoding (cherry picked from commit 33684b9c12)
  vp3: fix oob read for negative tokens and memleaks on error. (cherry picked from commit 8370e426e4)
  apedec: set s->currentframeblocks after validating nblocks
  apedec: use unsigned int for 'nblocks' and make sure that it's within int range
  apedec: check for data buffer realloc failure (cherry picked from commit 11ca8b2d74)
  apedec: check for filter buffer allocation failure (cherry picked from commit 7500781313)
  mpegaudiodec: check output data size based on avctx->frame_size
  resample: Fix array size
  resample2: fix potential overflow
  ...

Conflicts:
	Doxyfile
	RELEASE
	VERSION

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-11-04 20:20:37 +01:00
Gwenole Beauchesne
7275dc28f6 vaapi: fix VC-1 decoding (reconstruct bitstream TTFRM correctly).
(cherry picked from commit 825dd135d8)
2011-10-12 11:26:51 +02:00
Carl Eugen Hoyos
638e183d11 Do not set codec_tag property for matroska muxers.
Fixes ticket #8, #537.
(cherry picked from commit 60171d8fa6)
2011-10-09 20:10:26 +02:00
Michael Niedermayer
57f51e843e lavf/utils: fix overestimation of the rational number density.
Fixes Ticket498

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-10-09 01:14:02 +02:00
Michael Niedermayer
b38b6b2798 Update for 0.7.6
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-10-02 22:01:44 +02:00
Michael Niedermayer
7fc85451fd Merge branch 'release/0.8' into release/0.7
* release/0.8: (185 commits)
  h264: fix intra 16x16 mode check when using mbaff and constrained_intra_pred.
  h264: check for invalid bit depth value.
  h264: add entries for 11 and 12 bits in ff_h264_chroma_qp[][]
  h264: fix the check for invalid SPS:num_ref_frames.
  h264: do not let invalid values in h->ref_count on ff_h264_decode_ref_pic_list_reordering() errors.
  Reject video with non multiple of 16 width/height in the 4xm decoder.
  4xm decoder: fix data size for i2 frames.
  4xm decoder: print some error messages in case of errors.
  Check for out of bound accesses in the 4xm decoder.
  Prevent block size from inreasing in the shorten decoder.
  Check for out of bound reads in PTX decoder.
  Clear FF_INPUT_BUFFER_PADDING_SIZE bytes at the end of the temporary buffers used in 4xm decoder.
  Fix the check for missing references in ff_er_frame_end() for H264.
  Prevent NULL dereference when the huffman table is invalid in the 4xm decoder.
  Fix use of uninitialized memory in 4X Technologies demuxer.
  h264: increase ref_poc size to 32 as it can be per field.
  h264: set unused ref_counts to 0 as a precautionary meassure.
  Remove Chnagelog it has nothing to do with reality
  fate: fix motion pixels checksum change caused by backported bugfix
  avienc: Add a limit on the number of skiped frames muxed in a row.
  ...

Conflicts:
	Doxyfile
	RELEASE
	VERSION
	libavformat/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-10-02 21:37:59 +02:00
Sascha Sommer
42c8fdb943 Fix segfault in save_bits:
use put_bits_count to get the buffer fill state instead of
num_saved_bits as num_saved_bits is sometimes reset when
frames are lost
(Ticket 495)
(cherry picked from commit 780d45473c)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 4f6187c7356111540024901932294e9807061dd0)
2011-09-27 03:05:45 +02:00
Michael Niedermayer
1450d6e637 Update version numbers for 0.7.5
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-09-22 02:30:14 +02:00
Michael Niedermayer
a99a35c8ea Merge branch 'release/0.8' into release/0.7
* release/0.8: (154 commits)
  vp6: partially propagate huffman tree building errors during coeff model parsing and fix misspelling
  Check for huffman tree building error in vp6 decoder.
  Release old pictures after a resolution change in vp5/6 decoder
  Check for missing reference in vp5/6 decoder.
  Check for invalid slices offsets in RV30/40 decoder.
  Check output buffer size in nellymoser decoder.
  Hack around gcc 4.6 breaking asm using call.
  Fix dxva2 decoding for some H264 samples.
  mp3demux: pass on error code on packet read.
  Check for invalid slice offsets in real decoder.
  rmdec: Reject invalid deinterleaving parameters
  Use deinterleavers for demangling audio packets in RealMedia.
  rv10: Reject slices that does not have the same type as the first one
  rmdec: use the deinterleaving mode and not the codec when creating audio packets.
  MAINTAINERS: add my GPG fingerprint. (cherry picked from commit 7882dc10f8)
  Support 3IVD in isom, produced by 3ivx DivX Doctor.
  mpegpsdec: fix reading first mpegps packet (cherry picked from commit b2f230e23d)
  Avoid NULL dereference on corrupted bitstream with real decoder.
  Reject slices that does not have the same type than the first one in RV10/RV20 decoder.
  check all svq3_get_ue_golomb() returns.
  ...

Conflicts:
	Doxyfile
	RELEASE
	VERSION
	libavcodec/rv34.c
	libavformat/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-09-22 01:48:45 +02:00
Reimar Döffinger
a582b028a4 Hack around gcc 4.6 breaking asm using call.
gcc 4.6 no longer decrements esp to account for local variables.
Thus using call will end up overwriting some local variable.
So add an extra one it can safely clobber.
This is a huge hack because it's basically pure chance it works,
no idea how this is supposed to be done.

Fixes trac ticket #397.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
(cherry picked from commit c928e91729)
2011-09-21 23:50:09 +02:00
Carl Eugen Hoyos
5d833dd299 Fix dxva2 decoding for some H264 samples.
(cherry picked from commit bf7dc6b29d)
2011-09-21 23:48:41 +02:00
Edgar Hucek
01f1201267 Fix VA-API decoding artefacts.
Fixes ticket #457.
(cherry picked from commit 3fec40b601)
2011-09-11 12:57:31 +02:00
Chris Rankin
f4e34d1614 mp3dec: Dont spam the user on multiple mp3 frames.
(cherry picked from commit 54e1eaef67)
2011-09-08 21:14:03 +02:00
Michael Niedermayer
61f55565fb rtpdec_asf: fix memleak
Based on a suggestion by Ronald S. Bultje
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a2b66a366d)
2011-09-07 16:57:15 +02:00
Michael Niedermayer
b6b46db9e4 Update for 0.7.4
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-09-07 15:18:29 +02:00
Michael Niedermayer
21d99be9dc Merge branch 'release/0.8' into release/0.7
* release/0.8: (21 commits)
  rtp: Fix integer underflow that could allow remote code execution.
  cavsdec: avoid possible crash with crafted input
  vf_scale: apply the same transform to the aspect during init that is applied per frame
  Fix memory corruption in case of memory allocation failure in av_probe_input_buffer()
  Make all option parsing functions match the function pointer type through which they are called.
  mjpegdec; even better RSTn skiping Fixes Ticket426
  jpegdec: better rst skiping Fixes Ticket426
  mpeg4: fix another packed divx issue. Fixes getting_stuck.avi
  mpeg4: adjust dummy frame threashold for packed divx. Fixes Ticket427
  configure: add missing CFLAGS to fix building on the HURD
  cavs: fix some crashes with invalid bitstreams
  jpegdec: actually search for and parse RSTn
  Fix compilation with --disable-avfilter. (cherry picked from commit 67a8251690)
  libavfilter: fix --enable-small
  0.8.2
  cavs: fix oCERT #2011-002 FFmpeg/libavcodec insufficient boundary check
  Fix possible crash when decoding mpeg streams.
  Bink: clip AC coefficients during dequantization.
  ffmpeg: fix passlogfile regression
  Fix several security issues in matroskadec.c (MSVR-11-0080).
  ...

Conflicts:
	Doxyfile
	RELEASE
	VERSION

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-09-07 15:04:56 +02:00
Jeff Downs
7b6b9be861 Make all option parsing functions match the function pointer type through which they are called.
All option parsing functions now match the function pointer signature through
which they are called (int f(const char *, const char *), thereby working
reliably on all platforms.
Prefix all option processing functions with opt_
2011-09-07 08:48:38 +02:00
Michael Niedermayer
374409eb1a mjpegdec; even better RSTn skiping
Fixes Ticket426

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit be7eed72c8)
2011-09-07 01:07:37 +02:00
Michael Niedermayer
a352fedb24 jpegdec: better rst skiping
Fixes Ticket426

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-09-07 01:06:58 +02:00
Michael Niedermayer
c92068430d mpeg4: fix another packed divx issue.
Fixes getting_stuck.avi

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 6dbac85f8d)
2011-09-07 00:48:28 +02:00
Michael Niedermayer
274a5b7cdb mpeg4: adjust dummy frame threashold for packed divx.
Fixes Ticket427

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3e7e1f1509)
2011-09-07 00:48:27 +02:00
Reimar Döffinger
95345e942c Avoid crash due to ic being NULL if avformat_open_input fails.
This updates the code to match current master.
Should fix trac issue #410.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2011-08-23 19:47:19 +02:00
Carl Eugen Hoyos
87757508ab Fix compilation with --disable-avfilter.
(cherry picked from commit 67a8251690)
2011-08-16 23:33:20 +02:00
Michael Niedermayer
f66418afba libavfilter: fix --enable-small
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 633aa01f72)
2011-08-15 19:49:24 +02:00
Michael Niedermayer
7371b0ca6f 0.7.3
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-08-10 13:59:49 +02:00
Michael Niedermayer
c5cbda5079 cavs: fix oCERT #2011-002 FFmpeg/libavcodec insufficient boundary check
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-08-10 13:59:15 +02:00
Carl Eugen Hoyos
8893f7d815 Fix possible crash when decoding mpeg streams.
This reverts 2cf8355f98,
fixes ticket 329.
2011-08-04 11:43:34 +02:00
Reimar Döffinger
7c772ccd27 Bink: clip AC coefficients during dequantization.
Fixes artefacts with Neverwinter Nights WOTCLogo.bik
(http://drmccoy.de/zeugs/WOTCLogo.bik).
Fixes trac ticket #352.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
(cherry picked from commit 47b71eea09)
2011-08-04 11:42:33 +02:00
Michael Niedermayer
cf82c5cd5b ffmpeg: fix passlogfile regression
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 2ff36ef521)
2011-07-28 18:33:07 +02:00
Michael Niedermayer
cb8577a4da Fix several security issues in matroskadec.c (MSVR-11-0080).
Whitespace of the patch cleaned up by Aurel
Some of the issues have been reported by Steve Manzuik / Microsoft Vulnerability Research (MSVR)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 956c901c68)
2011-07-28 15:35:38 +02:00
Baptiste Coudurier
b55b34f862 ffmpeg: fix prototypes of functions after the removal of OPT_FUNC2.
(cherry picked from commit 90a40b226a)
2011-07-27 23:54:34 +02:00
Michael Niedermayer
609d299ed0 update version for 0.7.2
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-07-27 12:51:28 +02:00
Michael Niedermayer
01a0612c70 Merge branch 'release/0.8' into release/0.7
* release/0.8: (82 commits)
  Fix version numbers
  rtp: disable udp fifos, the rtp code cannot work with the fifos in its current form as rtp bypasses the public API.
  udp: allow fifo size to be tuned seperately
  riff: Add mpgv MPEG-2 fourcc
  Update Changelog
  matroskadec: fix integer underflow if header length < probe length.
  ffmpeg: fix operation with --disable-avfilter
  vf_libopencv: replace opencv/cxtypes.h #include by opencv/cxcore.h
  build: Create mlib optimization directories during out-of-tree builds.
  changelog: misc typo and wording fixes (cherry picked from commit b047941d7d)
  doc: Remove outdated comments about gcc 2.95 and gcc 3.3 support. (cherry picked from commit 5ccbf80963)
  matroskadec: matroska_read_seek after after EBML_STOP leads to failure.
  Update RELEASE file
  update Changelog
  mt: proper locking around release_buffer calls.
  vp8/mt: flush worker thread, not application thread context, on seek.
  docs: Mention the upstream bugzilla url about the dlltool vs MSVC issue
  docs: Use proper markup for a literal command line option
  docs: Don't recommend adding --enable-memalign-hack
  docs: Remove needless configure options
  ...

Conflicts:
	VERSION
	libavcodec/opt.h
	libavformat/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-07-27 11:20:13 +02:00
Reimar Döffinger
dcf1830a15 For FFmpeg 0.7 branch: Treat AV_SAMPLE_FMT_NONE as S16 for encoders.
This fixes compatibility with e.g. pcm_a52 ALSA plugin which in
previous versions never set sample_fmt.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2011-07-26 21:58:10 +02:00
Reimar Döffinger
0a48a67e57 Fix av_open_input_stream with uninitialized context pointer.
Code would allocate a new context but forget to assign it
to the pointer actually passed to avformat_open_input,
potentially causing a crash.
Even if it was initialized it would cause a memleak.
This caused crashes with e.g. mpd, see also
http://bugs.gentoo.org/show_bug.cgi?id=373423

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
(cherry picked from commit 4e59c8ecf1)
2011-07-06 20:19:48 +02:00
Reimar Döffinger
72ac64544f Add operand size to add instructions.
In these cases it can't be guessed from the operands (at least
not necessarily), and it seems some clang versions refuse to
compile it.
Fixes ticket #303.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
(cherry picked from commit 5c13b5bb39)
2011-07-01 19:23:58 +02:00
Ronald S. Bultje
b62c0c0bce ogg: fix double free when finding length of small chained oggs.
ogg_save() copies streams[], but doesn't keep track of free()'ed
struct members. Thus, if in between a call to ogg_save() and
ogg_restore(), streams[].private was free()'ed, this would result
in a double free -> crash, which happened when e.g. playing small
chained ogg fragments.
(cherry picked from commit 9ed6cbc3ee)
2011-07-01 02:40:47 +02:00
Carl Eugen Hoyos
00498a7e59 Fix possible double free when encoding using xvid.
(cherry picked from commit 315f0e3fd8)
2011-07-01 02:39:57 +02:00
Carl Eugen Hoyos
06107e9605 Fix VDPAU decoding for some H264 samples.
(cherry picked from commit e747b091cb)
2011-06-29 10:09:00 +02:00
Martin Matuska
ce993ce791 pict_type: add a value for unknown/none.
In commit bebe72f4a0, the enum AV_PICTURE_TYPE_* was introduced. There are still places in the code where pict_type is used as an integer and there is a case where "pict_type = 0" with the explanation "let ffmpeg decide what to do". The new enum does not know a value of 0 and C++ will fail if compiling such programs anyway as it is refered as an int (and you cannot patch them properly).
(cherry picked from commit 5129336714)
2011-06-28 13:41:49 +02:00
Stefano Sabatini
c0b90d4088 configure: select buffersink_filter when ffmpeg is enabled
buffersink_filter is a strong requirement for compiling ffmpeg.
Fixes ffmpeg compilation with --disable-everything.
(cherry picked from commit e65d6e22e3)
2011-06-25 15:27:30 +02:00
Jason Garrett-Glaser
b7b61ff6a3 H.264: fix 4:4:4 + deblocking + 8x8dct + cavlc + MBAFF
(cherry picked from commit 2702a6f114)
2011-06-23 00:17:03 +02:00
Jason Garrett-Glaser
7a6e47b99d H.264: fix 4:4:4 + deblocking + MBAFF
(cherry picked from commit 7c9079ab4c)
2011-06-23 00:17:03 +02:00
Jason Garrett-Glaser
f84c349b3b H.264: fix 4:4:4 cropping warning
(cherry picked from commit 932db25024)
2011-06-23 00:17:03 +02:00
Jason Garrett-Glaser
26f732e21d H.264: reference the correct SPS in decode_scaling_matrices
(cherry picked from commit 85a88f9c0c)
2011-06-23 00:17:03 +02:00
Michael Niedermayer
82b2dd5ee4 release_notes: update for 0.7.1
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-06-22 23:21:19 +02:00
Michael Niedermayer
e82ddde05a set VERSION for 0.7.1
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-06-22 23:19:34 +02:00
Clément Bœsch
07f5da6128 vf_mp: do not add duplicated pixel formats.
This avoid a crash with in avfilter_merge_formats() in case one of the
filter formats list has multiple time the same entry.

Thanks to Mina Nagy Zaki for helping figuring out the issue.
(cherry picked from commit 680e473643)
2011-06-22 22:55:39 +02:00
Anton Khirnov
e845455225 ffplay: use new avformat_open_* API.
(cherry picked from commit 44e83d0c97)
2011-06-22 22:55:31 +02:00
Reimar Döffinger
3fedb3e65c Revert needless API change in 05e84c95.
When providing a custom AVIOContex for a AVFMT_NOFILE format
only print a warning instead of erroring out.
This allows the code to work with older MPlayer versions that
just always set pb out of laziness.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2011-06-22 21:20:24 +02:00
Michael Niedermayer
1986380df2 Merge branch 'master' into oldabi
* master:
  ffplay: do not init SDL audio if -an is specified.
  Fix zero-length gnu_printf format string warning.
  A cmp instruction with two constants is invalid, thus "g" constraint is not correct but must be "rm" instead.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-06-21 21:55:55 +02:00
Michael Niedermayer
df3850db49 Merge branch 'master' into oldabi
* master:
  release_notes: document not fully understood mingw-sdl issue
  release_notes: some updates
  presets: forgotten libvpx presets
  release_notes: fix version
  release_notes: mention more codecs Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  release_notes: there will be 2 releases each for one ABI/API.
  release_notes: suggest git log instead of the poorly maintained APIChanges
  release_notes: we do support releases
  build system: disable memalign on haiku, its not reliable there.
  ffprobe: remove duplicate avformat_alloc_context()
  Fix segmentation fault in ffprobe
  wma: fix infinite loop
  Fix H.264 4:4:4 lossless decoding.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-06-21 21:14:36 +02:00
Michael Niedermayer
082b4f8348 swscale: undo version upgrade that git merged in and that i missed
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-06-21 06:26:38 +02:00
Michael Niedermayer
788c313b50 swscale: revert ABI breaking long->int chnage that touch public ABI
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-06-21 05:47:44 +02:00
Michael Niedermayer
779d7610c7 Merge branch 'master' into oldabi
* master: (109 commits)
  libx264: fix open gop default. Please use -x264opts to force open gop This fixes Ticket268
  avfilter picture pool: double free hotfix
  mpegaudio_parser: be less picky on the start position
  ppc32: Fix movrel
  Replace usages of av_get_bits_per_sample_fmt() with av_get_bytes_per_sample().
  x86: cabac: fix register constraints for 32-bit mode
  cabac: move x86 asm to libavcodec/x86/cabac.h
  x86: h264: cast pointers to intptr_t rather than int
  x86: h264: remove hardcoded edi in decode_significance_8x8_x86()
  x86: h264: remove hardcoded esi in decode_significance[_8x8]_x86()
  x86: h264: remove hardcoded edx in decode_significance[_8x8]_x86()
  x86: h264: remove hardcoded eax in decode_significance[_8x8]_x86()
  x86: cabac: change 'a' constraint to 'r' in get_cabac_inline()
  x86: cabac: remove hardcoded esi in get_cabac_inline()
  x86: cabac: remove hardcoded edx in get_cabac_inline()
  x86: cabac: remove unused macro parameter
  x86: cabac: remove hardcoded ebx in inline asm
  x86: cabac: remove hardcoded struct offsets from inline asm
  cabac: remove inline asm under #if 0
  cabac: remove BRANCHLESS_CABAC_DECODER switch
  ...

Conflicts:
	cmdutils.c
	ffserver.c
	libavfilter/avfilter.h
	libavformat/avformat.h
	libavformat/utils.c
	libavformat/version.h
	libavutil/avutil.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-06-21 05:27:44 +02:00
Michael Niedermayer
56629aa012 Merge branch 'master' into oldabi
* master:
  mmsh: fixed printf injection bug in mmsh request
  ac3enc: use correct alignment and length in channel coupling dsp functions.
  ffmpeg: don't abuse a global for passing framerate from input to output
  ffmpeg: don't abuse a global for passing channels from input to output
  ffmpeg: don't abuse a global for passing samplerate from input to output
  Make buffer size check consistent and avoid a possible overflow.
  Fix spelling.
  Full support for sending H.264 in RTP
  ARM: update ff_h264_idct8_add4_neon for 4:4:4 changes
  swscale: use SwsContext for av_log when available
  Support reading chan atoms with empty channel descriptions.
  Reindent after last commit.
  Fix multi-channel AAC encoding.
  Fix "redundant redeclaration" warning.
  Fix compilation with --disable-everything --enable-encoder=ac3/ac3_fixed.
  vf_mp: Fix large memleak.
  swscale: Remove HAVE_MMX from files that are only compiled with MMX enabled.
  swscale: Fix compilation with --disable-mmx2.
  mjpegenc: Fix JFIF version
  swscale: remove misplaced comment.
  ffmpeg: fix streaming to ffserver.
  swscale: split out RGB48 output functions from yuv2packed[12X]_c().
  build: move vpath directives to main Makefile
  swscale: fix JPEG-range YUV scaling artifacts.
  build: move ALLFFLIBS to a more logical place
  ARM: factor some repetitive code into macros
  CrystalHD: Use mp4toannexb bitstream filter.
  CrystalHD: Keep mp4toannexb filter around for entire decoder lifetime.
  Fix SVQ3 after adding 4:4:4 H.264 support
  H.264: fix CODEC_FLAG_GRAY
  4:4:4 H.264 decoding support
  matroskadec: properly decode color space in an endian neutral way
  matroskadec: use a temporary fourcc variable
  matroskaenc: ensure the written colorspace don't depend on host endianness
  ac3enc: fix allocation of floating point samples.
  utils: Drop pointless '#if 1' preprocessor directive.
  ac3enc: remove empty ac3_float function that is never called
  ac3enc: split templated float vs. fixed functions into a separate file.
  ac3enc: dynamically allocate AC3EncodeContext fields windowed_samples and mdct
  ac3enc: use function pointer to choose between AC-3 and E-AC-3 header output functions.
  Roll back 4:4:4 H.264 for now Needs some ARM/PPC asm modifications.
  Fix SVQ3 after adding 4:4:4 H.264 support
  H.264: fix CODEC_FLAG_GRAY
  4:4:4 H.264 decoding support
  h264_parser: Fix whitespace after previous change.
  h264_parser: Fix behaviour when PARSER_FLAG_COMPLETE_FRAMES is set.
  wav: remove an invalid free().
  lavf: initialise reference_dts in av_estimate_timings_from_pts.
  h264: don't be so picky on decoding pps in extradata.
  avcodec.h: add or elaborate on some documentation comments.
  h264: change a few comments into error messages
  ac3dec: fix doxy-style for comment ("///>" should be "///<" instead).
  img2: add .dpx to the list of supported file extensions.
  ffv1: fix undefined behavior with insane widths.
  replace remaining usage of deprecated av_metadata_set2() by av_dict_set()
  matroskaenc: write colourspace element for rawvideo tracks
  nsv: simplify probe function
  nsv: return error code instead of discarding it in read_header()
  ARM: jrevdct_arm: simplify stack usage
  ARM: jrevdct_arm: use push/pop mnemonics
  ARM: jrevdct_arm: misc cleanup
  ARM: optimised mpadsp_apply_window_fixed
  Add some (important) changelog entries
  H264: Reduce pointless diffs to qatar
  Revert "H264: Split out hl_motion and template it, this seems a bit faster"
  libavfilter: implement avfilter_fill_frame_from_video_buffer_ref()
  avfiltergraph: make the AVFilterInOut alloc/free API public
  avfiltergraph: change the syntax of avfilter_graph_parse()
  graphparser: prefer void * over AVClass * for log contexts
  h264: Complexify frame num gap shortening code
  Update todo
  mpeg12: replace 2 asserts by av_assert0
  cmdutils: add missing NULL check in parse_options()
  x11grab: remove a memory allocation and the associated memcpy.
  Fix --disable-everything
  build: fix "make install" with documentation disabled
  build: simplify some conditional targets
  resample: clarify supported resampling.
  lavfi: fix signature for avfilter_graph_parse() and avfilter_graph_config()
  avfiltergraph: use meaningful error codes
  Revert "ac3: there was no libav in 2010 thus this code cannot be from  libav."
  Fix -t option for formats which holds dts and no pts
  dnxhd: Renama tables
  Extract rotation in MOV metadata
  bitstream: Properly promote av_reverse values before shifting.
  pixfmt: Replace 9/10bit deprecation by a technical explanation.
  libavutil/swscale: YUV444P10/YUV444P9 support.
  H.264: Fix high bit depth explicit biweight
  h264: Fix 10-bit H.264 x86 chroma v loopfilter asm.
  Replace DEBUG_SEEK/DEBUG_SI + av_log combinations by av_dlog.
  Update copyright year for ac3enc_opts_template.c.
  adts: Adjust frame size mask to follow the specification.
  APIchanges: fill hash for the avfilter_get_audio_buffer_ref_from_arrays addition
  lavfi: avfilter_merge_formats: handle case where inputs are same
  lavfi: use avfilter_get_audio_buffer_ref_from_arrays() in defaults.c
  lavfi: implement avfilter_get_audio_buffer_ref_from_arrays()
  APIchanges: remove duplicated entry
  APIchanges: fill in dates and numbers
  APIchanges: remove duplicated entry
  APIchanges: correctly interleave entries
  APIchanges: add entry for av_force_cpu_flags() addition
  lavf: bump minor after the addition of fps_probe_size to AVFormatContext
  lavc: bump minor after the addition of AVCodecContext.request_sample_fmt
  movenc: Add RTP muxer/hinter options
  movenc: Pass the RTP AVFormatContext to the SDP generation
  rtspenc: Add RTP muxer options
  rtspenc: Add an AVClass for setting muxer specific options
  rtpenc_chain: Pass the rtpflags options through to the chained muxer
  rtpenc: Declare the rtp flags private AVOptions in rtpenc.h
  sdp: Reindent after the previous commit
  rtpenc: MP4A-LATM payload support
  avoptions: Add an av_opt_flag_is_set function for inspecting flag fields
  sdp: Allow passing an AVFormatContext to the SDP generation
  mov: Fix wrong timestamp generation for fragmented movies that have time offset caused by the first edit list entry.
  mpeg12: more advanced ffmpeg mpeg2 aspect guessing code.
  ac3: there was no libav in 2010 thus this code cannot be from  libav.
  swscale: split YUYV output out of yuv2packed[12X]_c().
  dict: This code was developed in ffmpeg and not libav, nor by libav developers. Correct copyright notices.
  lavf: make compute_pkt_fields2() return meaningful error values
  matroskadec: set timestamps for RealAudio packets.
  intelh263dec: aspect ratio processing fix.
  intelh263dec: fix "Strict H.263 compliance"  file playback
  oss,sndio: simplify by using FFMIN.
  swscale: extract monowhite/black output from yuv2packed[12X]_c().
  swscale: de-macro'ify RGB15/16/32 input functions.
  swscale: rearrange code.
  movdec: Add support for the 'wfex' atom.
  ffmpeg.c: Add a necessary const qualifier
  riff: Fix potential memleak.
  swscale: change 48bit RGB input macros to inline functions.
  swscale: change 9/10bit YUV input macros to inline functions.
  swscale: extract gray16 output functions from yuv2packed[12X]().
  swscale: use standard clipping functions.
  swscale: merge macros that are used only once.
  swscale: fix function declarations in swscale.c.
  swscale: fix function declaration keywords in x86/swscale_template.c.
  jpegdec: actually search for and parse RSTn
  crypto: Use av_freep instead of av_free
  Revert "crypto: fix potential double free"
  Revert "build: remove empty $(OBJS) target"
  crypto: Use av_freep instead of av_free
  aac: fix adts frame size mask, fix demuxer probing for some files.
  lavf: don't try to free private options if priv_data is NULL.
  lavfi: handle NULL lists in avfilter_make_format_list
  swscale: fix types of assembly arguments.
  swscale: move two macros that are only used once into caller.
  swscale: remove unused function.
  Fix "mixed declarations and code" warnings.
  options: Add missing braces around struct initializer.
  mov: Remove leftover crufty debug statement with references to a local file.
  dvbsubdec: Fix compilation of debug code.
  Remove all uses of now deprecated metadata functions.
  Move metadata API from lavf to lavu.
  crypto: fix potential double free
  libx264: fix double free
  ffplay: remove -debug option
  ffplay: remove -vismv option
  mpegvideo: use av_get_picture_type_char() in ff_print_debug_info()
  Remove some non-compiling debug messages.
  ffplay: Fix non-compiling debug printf and replace it by av_dlog.
  H264: x86 predict init cosmetics.
  ac3enc: Fix linking of AC-3 encoder without the E-AC-3 encoder.
  Move E-AC-3 encoder functions to a separate eac3enc.c file.
  ac3enc: remove convenience macro, #define DEBUG
  ac3enc: remove unused #define
  vc1: re-initialize tables after width/height change.
  APIchanges: fill-in git commit hash for av_get_bytes_per_sample() addition
  samplefmt: add av_get_bytes_per_sample()
  libvpxenc: add forgotten AVClass.
  iirfilter: fix biquad filter coefficients.
  swscale: remove duplicate conversion routine in swScale().
  swscale: add yuv2planar/packed function typedefs.
  swscale: integrate yuv2nv12X_C into yuv2yuvX() function pointers.
  swscale: reindent x86 init code.
  swscale: extract SWS_FULL_CHR_H_INT conditional into init code.
  swscale: cosmetics.
  swscale: remove alp/chr/lumSrcOffset.
  swscale: un-special-case yuv2yuvX16_c().
  shorten: Remove stray DEBUG #define and corresponding av_dlog statement.
  vorbisdec: Restore mistakenly removed debug output.
  v4l2: set default standard to NULL
  sws: make dither_scale const
  configure: Document --enable-vdpau.
  Replace some av_log/printf + #ifdef combinations by av_dlog.
  Replace some nonstandard DEBUG_* preprocessor directives by plain DEBUG.
  svq1dec: Fix debug statements that referenced non-existing context.
  Replace some printf instances in debug code by av_log.
  showfiltfmts: use av_get_pix_fmt_name()
  inverse.c: Replace unnecessary intmath.h header by necessary stdint.h.
  Drop unnecessary directory prefixes from #include directives.
  Makefile: critical build fix after the merge. make fate passed locally due to ffmpeg/ffmpeg_g being there from before
  ffplay: Fix -vismv
  mem: Trying to workaround posix_memalign() bug on OSX
  build: remove empty $(OBJS) target
  build: make rule for linking ff* apply only to these targets
  eval: add support for pow() function
  build: rearrange some lines in a more logical way
  s302m: fix resampling for 16 and 24bits.
  ARM: remove MUL64 and MAC64 inline asm
  build: clean up .PHONY lists
  build: move all (un)install* target aliases to toplevel Makefile
  flvenc: propagate error properly
  build: remove stale dependency
  build: do not add CFLAGS-yes to CFLAGS
  utils.c: fix crash with threading enabled.
  configure: simplify source_path setup
  configure: remove --source-path option
  pixdesc: remove duplicated header inclusion
  lavfi: use av_samples_alloc() in avfilter_default_get_audio_buffer()
  lavfi: prefer nb_samples over size in AVFilterBufferRefAudioProps
  samplefmt: switch nb_channels/nb_samples params order in av_samples_alloc()
  samplefmt: change layout for arrays created by av_samples_alloc() and _fill_arrays()
  lavf: deprecate AVFormatParameters.time_base.
  img2: add framerate private option.
  img2: add video_size private option.
  img2: add pixel_format private option.
  tty: add framerate private option.
  Move code for "ffmpeg: fix massive leak occurring when seeking" / e4841a404b elsewhere
  lavf: remove reference to output-example in Makefile
  vsrc_buffer: add flags param to av_vsrc_buffer_add_video_buffer_ref
  Remove some unused scripts from tools/.
  Add x86 assembly for some 10-bit H.264 intra predict functions.
  v4l2: do not force NTSC as standard
  Add const to avfilter_get_video_buffer_ref_from_arrays arguments.
  Skip tableprint.h during 'make checkheaders'.
  Remove unnecessary LIBAVFORMAT_BUILD #ifdef.
  Drop explicit filenames from @file Doxygen tags.
  Skip generated table headers during 'make checkheaders'.
  lavf,lavc: free avoptions in a generic way.
  AVOptions: add av_opt_free convenience function.
  sdl: align option fields after last commit
  ffmpeg: fix massive leak occurring when seeking
  ffprobe: implement -i FILE option
  tableprint: Restore mistakenly deleted common.h #include for FF_ARRAY_ELEMS.
  ffplay.texi: document -i FILE option
  cmdutils: remove unnecessary OPT_DUMMY implementation
  cmdutils: change the signature of the function argument in parse_options()
  sdl: use the filename for defining the window title, if not specified
  tiff: print log in case of unknown / unsupported tag.
  tiff: fix linesize for mono-white/black formats.
  Fix build of eval-test program
  configure: Document --enable-vaapi
  swscale: override the lack of the accurate rounding flag when needed for dither.
  swscale: factor should_dither out
  ac3enc: extract all exponents for the frame at once
  ARM: remove MULL inline asm
  mathops: use MUL64 macro where it forms part of other ops
  tty: factorise returning error codes.
  rawdec: add framerate private option.
  x11grab: add framerate private option.
  fbdev,v4l2: remove some forgotten uses of AVFormatParameters.time_base.
  bktr: don't error when AVFormatParameters.time_base isn't set.
  cmdutils: add missing const qualifier
  Skip headers not designed to work standalone during 'make checkheaders'.
  Add missing #includes to make headers self-contained.
  musepack: remove unnecessary #include from mpcdata.h
  musepack: remove extraneous mpcdata.h inclusions
  Fix error check in av_file_map()
  udp: support old, crappy non pthread mode
  ffmpeg: use opt_acodec when setting audio codec in opt_target.
  ffmpeg: fix segfault with too many output files
  ffplay: error out with invalid sample rate or channels.
  oggdec: fix Ticket185
  build: simplify commands for clean target
  j2kdec: dont fail on non zero cblock style.
  makefile: fix j2k encoder dependancies
  udp: fix indention
  swscale: split swscale.c in unscaled and generic conversion routines.
  swscale: cosmetics.
  swscale: integrate (literally) swscale_template.c in swscale.c.
  swscale: split out x86/swscale_template.c from swscale.c.
  swscale: enable hScale_altivec_real.
  swscale: split out ppc _template.c files from main swscale.c.
  swscale: remove indirections in ppc/swscale_template.c.
  swscale: split out unscaled altivec YUV converters in their own file.
  mpegvideoenc: fix multislice fate tests with threading disabled.
  cmdutils: move "#undef main" from ffplay.c to cmdutils.h
  wav: update size check for ds64
  wav: fix skip size at end of ds64 chunk
  mpegts: Wrap #ifdef DEBUG and av_hex_dump_log() combination in a macro.
  build: Simplify texi2html invocation through the --output option.
  Mark some variables with av_unused
  Replace avcodec_get_pix_fmt_name() by av_get_pix_fmt_name().
  svq3: Check negative mb_type to fix potential crash.
  svq3: Move svq3-specific fields to their own context.
  rawdec: initialize return value to 0.
  Remove unused get_psnr() prototype
  rawdec: don't leak option strings.
  bktr: get default framerate from video standard.
  swscale: remove unused COMPILE_TEMPLATE_ALTIVEC.
  h264 fill_filter_caches: Dont init chroma nnz_cache.
  In print_report, print progression time in hours:mins:secs:us
  ffmpeg: In print_report, use int64_t for pts to check for 0 and avoid inf value for bitrate.
  In libswscale, use all lines when converting from 422p to rgb with mmx, improve quality.
  Replace custom DEBUG preprocessor trickery by the standard one.
  vorbis: Remove non-compiling debug statement.
  vorbis: Remove pointless DEBUG #ifdef around debug output macros.
  cook: Remove non-compiling debug output.
  Remove pointless #ifdefs around function declarations in a header.
  Replace #ifdef + av_log() combinations by av_dlog().
  Replace custom debug output functions by av_dlog().
  cook: Remove unused debug functions.
  lavfi: add avfilter_link_free() function
  swscale: reintroduce sws_format_name() symbol
  Remove stray extra arguments from av_dlog() invocations.
  targa: fix big-endian build
  v4l2: remove one forgotten use of AVFormatParameters.pix_fmt.
  vfwcap: add a framerate private option.
  v4l2: add a framerate private option.
  libdc1394: add a framerate private option.
  fbdev: add a framerate private option.
  bktr: add a framerate private option.
  oma: check avio_read() return value
  nutdec: remove unused variable
  Remove unused variables
  swscale: dither for planar yuv outputs
  swscale: Fix use of uninitialized values (bug probably introduced from a marge of libav)
  cpudetect: add av_force_cpu_flags()
  swscale: allocate larger buffer to handle altivec overreads.
  H264/MPEG frame-level multi-threading.
  vsrc_buffer: propagate error code in av_vsrc_buffer_add_frame()
  lavfi: reindent after the previous commit
  lavfi: add braces around the block of an if() expression in avfilter_default_get_video_buffer
  lavfi: clarify the context of a comment in avfilter_default_get_video_buffer()
  lavfi: apply misc style fixes
  Cosmetic changes to h264_idct_10bit.asm.
  2x faster h264_idct_add8_10.
  aacenc: Add stereo_mode option.
  h264: remove CONFIG_GPL from x86 intra prediction code.
  doc: cosmetics: libx264 typos
  postprocess: Remove test for impossible condition (was: Re: postprocess.c: replace check for p==NULL with *p==0)
  Fix various uninitialized variable warnings
  Port remove of get_sws_cpuflags from MPlayer's libmpcodecs.
  Replace "vector const" by "const vector" otherwise gcc 4.6.0 fails.
  Port recent changes to MPlayer libmpcodecs.
  Replace non-existent HAVE_SSE2 with HAVE_SSE.
  Simplify code and avoid compiler warning about incompatible types.
  Fix type of out[] variable, it should not be const.
  ARM: ac3dsp: optimised update_bap_counts()
  mpegaudiodec: Fix av_dlog() invocation.
  swscale: fix compilation of bfin due to missing pixdesc.h header
  lavf: tag dump_format() as @deprecated
  yuv4mpeg: complain and exit if a non-rawvideo stream is selected
  ffmpeg: handle copy of packets for AVFMT_RAWPICTURE output formats
  doc/examples: give meaningful names to the example files
  h264/10bit: add HAVE_ALIGNED_STACK checks.
  swscale: More accurate rounding in YSCALE_YUV_2_PACKEDX_FULL_C()
  Update 8-bit H.264 IDCT function names to reflect bit-depth.
  Add IDCT functions for 10-bit H.264.
  mpegaudioenc: Fix broken av_dlog statement.
  Employ correct printf format specifiers, mostly in debug output.
  ARM: fix MUL64 inline asm for pre-armv6
  doc: add libvpx encoder section
  vf_drawtext: Replace FFmpeg by Libav in license boilerplate.
  mpegaudiodec: remove unusued code and variables
  postprocess.c: filter name needs to be double 0 terminated
  improved 'edts' atom writing support
  mpegaudio: clean up compute_antialias() definition
  vp8: fix segmentation race during frame-threading.
  Port libmpcodec fixes from MPlayer.
  Merge remote-tracking branch 'ffmpeg-mt/master'
  swscale: Remove unused variable.
  ARM: simplify inline asm with 64-bit operands
  Add "const" to avoid "initialization discards qualifiers" warning.
  Add const to fix "cast discards qualifiers" warnings.
  Include pixdesc.h for av_get_pix_fmt_name.
  wav: Don't avio_seek() if we know we'll run into EOF
  api-example: uppercase first letter in "copyright"
  output-example: create @file doxy from text in the copyright header
  examples: move API examples to a dedicated dir in doc
  ffmpeg: simplify opt_*_codec() options
  v4l2: rewrite code iterating the supported standards
  v4l2: perform minor style fixes
  v4l2: replace memset() with explicit struct initialization
  rawdec: fail in case of unknow pixel format
  swscale: remove sws_format_name()
  error.c: fix compile flags
  TCP: change default timeout to 5sec
  Revert "Timeout TCP open() after 5 seconds."
  Fix various unused variable warnings
  Fix various bad printf format warnings
  ARM: enable UAL syntax in asm.S
  Remove now unused nb_istreams variable.
  Add const to vector types for input in altivec code.
  Remove unused variable, avoiding compiler warning.
  Cast pointers to uintptr_t rather than unsigned int.
  v4l2: don't leak video standard string on error.
  swscale: Remove disabled code.
  avfilter: Surround function only used in debug mode by appropriate #ifdef.
  vf_crop: Replace #ifdef DEBUG + av_log() by av_dlog().
  build: remove BUILD_ROOT variable
  vp8: use av_clip_uintp2() where possible
  swscale: Commits that could not be pulled earlier due to bugs #2
  Commits that could not be pulled earlier due to bugs.
  Revert 1a5e4fd8c5 for postproc. This broke the code
  doc: correct AC-3 option subsection placement
  ac3enc: fix LOCAL_ALIGNED usage in count_mantissa_bits()
  ac3dsp: do not use the ff_* prefix when referencing ff_ac3_bap_bits.
  swscale: use av_clip_uint8() in yuv2yuv1_c().
  swscale: replace formatConvBuffer[VOF] by allocated array.
  v4l2: create file @doxy from text in the copyright header
  v4l2: remove pointless empty lines
  v4l2: set default standard to NULL
  v4l2: use OFFSET macro when setting options
  ac3dsp: fix loop condition in ac3_update_bap_counts_c()
  ARM: unbreak build
  lavdev: add SDL output device
  ac3enc: modify mantissa bit counting to keep bap counts for all values of bap instead of just 0 to 4.
  ac3enc: split mantissa bit counting into a separate function.
  ac3enc: store per-block/channel bap pointers by reference block in a 2D array rather than in the AC3Block struct.
  lavu: add av_get_pix_fmt_name() convenience function
  iff: remove duplicated file description
  cmdutils: remove OPT_FUNC2
  get_bits: add av_unused tag to cache variable
  sws: replace all long with int.
  ARM: aacdec: fix constraints on inline asm
  ARM: remove unnecessary volatile from inline asm
  ARM: add "cc" clobbers to inline asm where needed
  ARM: improve FASTDIV asm
  ac3enc: use LOCAL_ALIGNED macro
  APIchanges: fill in git hash for av_get_pix_fmt_name (0420bd7).
  lavu: add av_get_pix_fmt_name() convenience function
  cmdutils: remove OPT_FUNC2
  swscale: fix crash in bilinear scaling.
  vpxenc: add VP8E_SET_STATIC_THRESHOLD mapping
  webm: support stereo videos in matroska/webm muxer
  rgb2rgb: remove duplicate mmx/mmx2/3dnow/sse2 functions.
  swscale: reindent h[cy]scale_fast() and updateDitherTables().
  swscale: reformat x86/swscale_template.c.
  swscale: remove duplicate mmx/mmx2 functions if they are identical.
  swscale: remove if (c->dstFormat) branch from yuv2packed[12X]().
  swscale: remove if(full_chr_int) from yuv2packed1().
  swscale: remove if(accurate_rnd) branch from functions.
  swscale: revive SWS_CPU_CAPS until next major bump.
  swscale: Remove commented-out printf cruft.
  Export PCR pid
  Export more transport stream information.
  Output MPEG-TS stream identifiers.
  lavf: deprecate AVFormatParameters.pix_fmt.
  rawdec: add a pixel_format private option.
  v4l2: add a pixel_format private option.
  libdc1394: add a pixel_format private option.
  cosmetics: indentation and alignment after previous commit
  ac3enc: add support for E-AC-3 encoding.
  ac3enc: Move AC-3 AVOptions array to a separate file to make it easier to use only selected options for the different AC-3 encoder types.
  ARM: disable ff_vector_fmul_vfp on VFPv3 systems
  ARM: check for VFPv3
  swscale: Remove unused variables in x86 code.
  doc: Drop DJGPP section, Libav now compiles out-of-the-box on FreeDOS.
  x86: Add appropriate ifdefs around certain AVX functions.
  cmdutils: use sws_freeContext() instead of av_freep().
  swscale: delay allocation of formatConvBuffer().
  swscale: fix build with --disable-swscale-alpha.
  movenc: Deprecate the global RTP hinting flag, use a private AVOption instead
  movenc: Add an AVClass for setting muxer specific options
  libdc1394: choose best video mode and rate based on camera capabilities.
  Remove support for libdc1394 < 2.0.
  avopt: fix segfault
  swscale: fix non-bitexact yuv2yuv[X2]() MMX/MMX2 functions.
  swscale: dont loose precission on RGB/BGR48 input, that is dont drop half the bits.
  patch checklist: suggest --disable-yasm test.
  lavdev: prefer the inclusion of avdevice.h over that of libavformat/avformat.h
  lavdev: include libavformat/avformat.h in avdevice.h
  fate.txt: replace FATE rsync command with a make command
  configure: report yasm/nasm presence properly
  tcp: make connect() timeout properly
  rawdec: factor video demuxer definitions into a macro.
  rtspdec: add initial_pause private option.
  lavf: deprecate AVFormatParameters.width/height.
  tty: add video_size private option.
  rawdec: add video_size private option.
  x11grab: add video_size private option.
  x11grab: factorize returning error codes.
  vfwcap: add video_size private option.
  v4l2: add video_size private option.
  v4l2: factorize returning error codes.
  libdc1394: add video_size private option.
  libdc1394: return meaninful error codes.
  bktr: add video_size private option.
  bktr: factorize returning error codes.
  Fix memleak
  Fix typo
  Remove specific note when not specific
  Minor cleanup in libx264.c
  Add metadata conversion table to the wav demuxer
  Fix 32bit rawvideo in avi on big-endian.
  id3v2: Check malloc result. ID3v2 tags can be very large.
  id3v2: Initialize tflags for version 2.2.
  webm: Additional options/presets for VP8 encodes under FFmpeg
  muxers: Add a flag to mark muxers that allow (non strict) monotone timestamps.
  swscale: Do not loose precission on yuv values after rgb->yuv.
  libx264: support aspect Ratio Switch
  ARM: add ARMv6 optimised av_clip_uintp2
  ARM: remove volatile from asm statements in libavutil/intmath
  ARM: fix av_clipl_int32_arm()
  v4l: include avdevice.h
  ffserver: move close_connection() call to avoid a temporary string and copy.
  lavf: initialize demuxer private options.
  AVOptions: set string default values.
  Fix compilation with YASM/NASM versions not supporting AVX.
  lavdevice: mark v4l for removal on next major bump.
  swscale: fix compile on ppc.
  swscale: fix compile on x86-32.
  build: Remove generated .version file on distclean.
  configure: Add -D_GNU_SOURCE to CPPFLAGS on OS/2.
  doc: Drop hint at --enable-memalign-hack for MinGW, it is now autodetected.
  ffplay: Remove disabled code.
  Mark parameterless function declarations as 'void'.
  swscale: use av_clip_uint8() in yuv2yuv1_c().
  swscale: remove VOF/VOFW.
  swscale: split chroma buffers into separate U/V planes.
  swscale: replace formatConvBuffer[VOF] by allocated array.
  rgb2rgb: remove duplicate mmx/mmx2/3dnow/sse2 functions.
  swscale: reindent h[cy]scale_fast() and updateDitherTables().
  swscale: reformat x86/swscale_template.c.
  swscale: remove duplicate mmx/mmx2 functions if they are identical.
  swscale: remove if (c->dstFormat) branch from yuv2packed[12X]().
  swscale: remove if(full_chr_int) from yuv2packed1().
  swscale: remove if(accurate_rnd) branch from functions.
  ffserver: Fix a null pointer dereference as a result of the FF_API_MAX_STREAMS cleanup.
  libdc1394: fix compilation.
  swscale: revive SWS_CPU_CAPS until next major bump.
  swscale: Remove commented-out printf cruft.
  ac3enc: initialize all coefficients to zero.
  ffv1: fix 16bits multithreading
  doc: create separate section for audio encoders
  swscale: Remove orphaned, commented-out function declaration.
  swscale: Eliminate rgb24toyv12_c() duplication.
  mpegvideo_enc: use AV_LOG_ERROR instead of AV_LOG_INFO for two error messages
  Fail when lowres value is lower than 0
  Remove h263_msmpeg4 from MpegEncContext.
  APIchanges: Fill in git hash for fps_probe_size (30315a8)
  avformat: Add fpsprobesize as an AVOption.
  swscale: document SWS_CPU_CAPS*
  Revert removial of SWS flags from e66149e714
  avoptions: Return explicitly NAN or {0,0} if the option isn't found
  rtmp: Reindent
  rtmp: Don't try to do av_malloc(0)
  swscale: remove duplicatiopn of rgb24toyv12_c()
  Return -1 on invalid input instead of crashing.
  vf_mp: fix name of the remove-logo filter referenced in filters.texi
  tty: replace AVFormatParameters.sample_rate abuse with a private option.
  Fix end time of last chapter in compute_chapters_end
  ffmpeg: get rid of useless AVInputStream.nb_streams.
  ffmpeg: simplify managing input files and streams
  ffmpeg: purge redundant AVInputStream.index.
  lavf: deprecate AVFormatParameters.channel.
  libdc1394: add a private option for channel.
  dv1394: add a private option for channel.
  v4l2: reindent.
  v4l2: add a private option for channel.
  lavf: deprecate AVFormatParameters.standard.
  v4l2: add a private option for video standard.
  v4l: add a private option for video standard.
  dv1394: add a private option for video standard.
  bktr: add a private option for video standard.
  lavf: deprecate AVFormatParameters.{channels,sample_rate}.
  rawdec: add sample_rate/channels private options.
  ALSA: add channels and sample_rate private options.
  oss: add channels and sample_rate private options.
  sndio: add channels and sample_rate private options.
  lavf: deprecate AVFormatParameters.mpeg2ts_raw.
  mpegts: add compute_pcr option.
  lavf: add priv_class field to AVInputFormat.
  lavfi: add select filter
  eval: implement not() expression
  vsrc_buffer: return an error code if no frames are available
  ffmpeg: handle the case when get_filtered_frame() fails
  indeo3: add out-of-buffer write check
  Add reading of disc number to mov.c
  Fix end time of last chapter in compute_chapters_end().
  Do not reset channel_layout to 0.
  vsrc_buffer: remove duplicated file description
  Merge swscale bloatup This will be cleaned up in the next merge
  swscale: MMX optim of hscale16()
  swscale: dont loose bits on planar >8bit yuv ind gray nput.
  swscale: Switch to ronalds yuv2yuvX16inC_template() its very similar to baptsites and supports alpha
  configure: enable memalign_hack automatically when needed
  rawdec: fix decoding of QT WRAW files
  matroska: improve declaration of video_stereo_* constant tables
  matroskadec: fix reverted condition to accept combine_plane operation
  Fix register types for LOAD_AB arguments, fixes compilation with NASM.
  swscale: unbreak the build on non-x86 systems.
  swscale: remove if(bitexact) branch from functions.
  swscale: remove if(canMMX2BeUsed) conditional.
  swscale: remove swScale_{c,MMX,MMX2} duplication.
  swscale: use emms_c().
  Move emms_c() from libavcodec to libavutil.
  tiff: set palette in the context when specified in TIFF_PAL tag
  rtsp: use strtoul to parse rtptime and seq values.
  pgssubdec: fix incorrect colors.
  dvdsubdec: fix incorrect colors.
  ape: Allow demuxing of files with metadata tags.
  swscale: remove dead macro WRITEBGR24OLD.
  swscale: remove AMD3DNOW "optimizations".
  swscale: remove duplicate code in ppc/ subdirectory.
  swscale: remove duplicated x86/ functions.
  swscale: force --enable-runtime-cpudetect and remove SWS_CPU_CAPS_*.
  vsrc_buffer.h: add file doxy
  vsrc_buffer: tweak error message in init()
  wav: fix various printf warnings related to wrong argument type
  wav: propagate ff_get_wav_header() error code in w64_read_header()
  msmpeg4: reindent.
  lavc: remove msmpeg4v1 encoder.
  Remove avconfig.h and INCINSTDIRs on uninstall.
  ac3enc: add channel coupling support
  partial revert of 01d3ebaf21
  fate: reenable frext-pph10i4_panasonic_a after the bitstream has been fixed
  avcodec_find_decoder: prefer non experimental decoders.
  j2kdec: mark as CODEC_CAP_EXPERIMENTAL
  j2k[c/h] j2kdec.c: Implement 2 code block styles
  j2k: Add void as the parameter of function ff_j2k_init_tier1_luts
  Add Kamil Nowosads j2k code.
  matroska: cleanup handling of video stereo mode
  oggdec: use av_dlog()
  mem: define the MAX_MALLOC_SIZE constant and use it in place of INT_MAX
  configure: Add -U__STRICT_ANSI__ to CPPFLAGS on Cygwin and DOS.
  muxers.texi changes for mkv/webm options
  aacdec: fix typo in scalefactor clipping check
  mpegaudio: Correct license header
  add 5.1 to stereo downmix to resample.c this is based on previous 6to2channel-resample.patch from ffmpeg2theora but updated to work with trunk and using av_clip_int16.
  fate: fix fate-h264-conformance-frext-pph10i4-panasonic-a crcs.
  fate: update 9/10bit refs.
  h264: Properly set coded_{width, height} when parsing H.264.
  x86 asm: Add SECTION_TEXT to dct32_sse.asm.
  Fix 9/10 bit in swscale.
  Do not ask for samples if a specific channel layout was requested.
  libx264: specify field for default union values in options
  movdec: dont divide by zero when stts_data[0].duration = 0.
  Fix ticket127
  dct32: Replacing libav by ffmpeg in the license header with the authors permission. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  ffmpeg: Don't trigger url_interrupt_cb on the first signal
  avoptions: Check the return value from av_get_number
  lavf: fix style for avformat_alloc_output_context2()
  lavf: deprecate avformat_alloc_output_context() in favor of avformat_alloc_output_context2()
  lavfi: make vsrc_buffer.h header public
  dct32_sse: eliminate some spills
  Fix compilation with --disable-yasm.
  Fix dct32() compilation with --disable-yasm
  mpeg2dec: Fix lowres 3
  lavfi: bump minor and add changelog entry after the split filter addition
  vf_split: add documentation to filters.texi
  vf_split: give more meaningful names to the output pads
  vf_split: define draw_slice() before end_frame()
  vf_split: add description
  vf_split: fix various nits
  wmadec: avoid infinit loop.
  DirectShow capture: Fix build
  ffmpeg: get rid of the -vglobal option.
  dct32: Add AVX implementation of 32-point DCT
  dct32: Change pass 6 permutation to allow for AVX implementation
  dct32: port SSE 32-point DCT to YASM
  matroska: switch stereo mode from int to string and add support in the demuxer too
  matroska: cosmetics
  Create a stereo_mode metadata tag to specify the stereo 3d video layout using the StereoMode tag in a matroska/webm video track.
  libavfilter: vf_split from soc.
  DirectShow capture support Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  multiple inclusion guard cleanup
  avio: document buffer must created with av_malloc() and friends
  avio: check AVIOContext malloc failure
  swscale: point out an alternative to sws_getContext
  svq3: Do initialization after parsing the extradata
  Fix channel_layout documentation.
  add changelog entries for 0.7_beta2
  ffserver: dont just crash
  fix ffserver's SIGSEGV
  avoptions: Support getting flag values using av_get_int
  preset dir for win32
  Merge remote-tracking branch 'ffmpeg-mt/master'
  Add a flag to disable side data merging.
  Merge/split side data.
  Encoding alac with more than two channels is not supported.
  mp3lame: add #include required for AV_RB32 macro.
  configure: make executable again
  LATM/AAC: Free previously initialized context on reinit.
  configure: Do not unconditionally add -Wall to host CFLAGS.
  configure: Set OS/2 objformat to a.out.
  Add support for a.out object format to assembler macros.
  fate: disable threading for encoding
  fate: add comment field
  fate: allow overriding default build and install dirs
  mpegtsenc: Add an AVClass pointer to the private data
  mpegaudio: clean up #includes
  mpegaudio: move all header parsing to mpegaudiodecheader.[ch]
  vf_libopencv: prefer opencv/cxcore.h over cxtypes.h
  decoders.texi: fix typos in rawvideo section
  cmdutils: use const AVClass * when senseful
  encoders.texi: add documentation for the libx264 encoder
  decoders.texi: add documentation for rawvideo decoder and options
  doc: add decoders.texi file
  encoders.texi: decrease level for audio encoders section
  ffprobe.texi: remove inclusion of muxers section
  indeo3: release buffer in indeo3_decode_end()
  indeo3: remove unnecessary includes
  indeo3: add @file doxy and a link to multimedia wiki documentation
  cmdutils: reset *picref_ptr to NULL in get_filtered_frame()
  ffmpeg: remove useless NULL-check on avfilter_unref_buffer
  libmp3lame: include "libavutil/intreadwrite.h" header
  qdm2: Use floating point synthesis filter.
  h264: correct border check.
  h264: fix loopfilter with threading at slice boundaries.
  Fix ff_mpa_synth_filter_fixed() prototype
  Reindent
  rtpenc_chain: Pass the MP4A_LATM flag to chained muxers
  rtpenc: MP4A-LATM payload support
  movenc: Pass AVFormatContext flags to the SDP generation
  sdp: Allow passing AVFormatContext flags to the SDP generation
  vsrc_buffer: document av_vsrc_buffer_add_video_buffer_ref()
  vsrc_buffer: add av_vsrc_buffer_add_frame()
  vsrc_buffer: fix example in docs, add mandatory parameters
  vsrc_buffer: make the source accept sws_param in init
  vsrc_buffer: propagate avfilter_open() error code
  vsrc_buffer: fix style
  lavfi: add avfilter_get_video_buffer_ref_from_frame to avcodec.h
  vsrc_buffer: remove dependency on AVFrame
  Rename costablegen.c ---> cos_tablegen.c.
  Collapse tableprint.c into tableprint.h.
  Simplify trig table rules
  Remove potentially unstable filenames from comments in generated files.
  Ignore generated tables and generated table generator programs.
  Simplify CLEANFILES make variable by using wildcards.
  Remove silly insults from avformat_version() Doxygen documentation.
  mpegaudiodsp: fix x86 and ppc makefiles
  configure: Adjust AVX assembler check.
  mpegaudio: remove unused version of SAME_HEADER_MASK
  mpegaudio: remove useless #undef at end of file
  asfdec: add missing #include for av_bswap32()
  mpegaudio: merge two #if CONFIG_FLOAT blocks
  mpegaudio: move some struct definitions from mpegaudio.h
  Move some mpegaudio functions to new mpegaudiodsp subsystem
  Clean up #includes in cmdutils.h.
  g729: Merge g729.h into g729dec.c.
  av_find_stream_info: Print more details about max anaylize duration failures.
  10l: wrap float_interleave functions in HAVE_YASM.
  Add little description for -rc_override
  APIchanges: fill in date and commit for request_sample_fmt
  Add floating-point sample format support to the ac3, eac3, dca, aac, and vorbis decoders.
  Add support for request_sample_format in ffmpeg and ffplay.
  Add APIchanges entry for request_sample_fmt.
  Add request_sample_fmt field to AVCodecContext.
  Add float_interleave() to FmtConvertContext with x86-optimized versions.
  Remove unused make variable SEEK_REFFILE
  fate: remove redundant aref and vref references
  Parse 'bext' metadata in the wav demuxer
  Cosmetics: indent
  Keep parsing wav until EOF if the input is seekable and we know the size of the data tag
  Refactor the tag checking into a switch statement
  Use avio_tell() instead of url_ftell()
  add x264opts entry to docs
  cleaned up the udp.c, removed some variables and an av_log
  configure: favor pkg_config over sdl_config
  libx264: support passing arbitrary parameters.
  ffmpeg: dont show_banner() on verbose<0
  fate: remove do_ffmpeg_nocheck function
  fate: do not collect -benchmark output
  mpegaudiodec: remove decode_end() function
  fate: run aref and vref as regular tests
  mpegaudio: sanitise compute_antialias_* names
  mpeg12: add slice-threading checks to slice-threading initializers.
  h264: copy pixel_shift between slice threading contexts.
  mdec: enable frame-level multithreading.
  mdec.c: fix overread.
  id3v2: prevent unsigned integer overflow in ff_id3v2_parse()
  id3v2: add @file doxy and link to format documentation
  configure: opensolaris install is not compatible with ffmpeg, allow overriding it.
  Fix compilation of iirfilter-test.
  eval: opensolaris strtod() cannot handle 0x1234
  libx264: handle closed GOP codec flag
  lavf: remove duplicate assignment in avformat_alloc_context.
  lavf: use designated initializers for AVClasses.
  Make sure neither data_size nor sample_count is negative
  Refactor the 'fmt ' tag search and parsing
  flvdec: clenup debug code
  asfdec: fix possible overread on broken files.
  asfdec: do not fall back to binary/generic search
  asfdec: reindent after previous commit c7bd5ed
  asfdec: fallback to binary search internally
  mpegaudio: add _fixed suffix to some names
  Modify x86util.asm to ease transitioning to 10-bit H.264 assembly.
  ffmpeg: reset top_field_first in opt_input_file().
  dct: build dct32 as separate object files
  qdm2: include correct header for rdft
  Ogg demuxer: give meaningful error codes and warnings.
  update changelog with 9/10 bit H264 and FFV1 changes
  Add some forgotten const to function arguments in libavfilter & libavformat.
  Write channel_layout for multichannel aif files.
  Fix ff_mov_write_chan() so it can be used by other muxers.
  Fix some mov files with little endian audio (tickets 201 - 203).
  iff/8svx: redesign 8SVX demuxing and decoding for handling stereo samples correctly
  iff: compact code setting metadata tags
  iff: fix bitrate computation for compressed audio stream
  iff: distinguish fields for audio and video compression
  imgutils: introduce internal image_get_linesize() and use it
  imgutils: make av_image_get_linesize() return AVERROR(EINVAL) for invalid pixel formats
  drawtext: specify union type for setting default options
  drawtext: reindent after the previous commit
  drawtext: fix strftime() text expansion
  ffmpeg: fix -aspect cli option
  Restructure video filter implementation in ffmpeg.c.
  ffplay: remove audio_write_get_buf_size() forward declaration
  lavfi: print key-frame and picture type information in ff_dlog_ref()
  mathops: remove ancient confusing comment
  rawdec: Allow overriding top field first.
  ffmpeg: initialize input_codec array earlier.
  cmdutils: Allocate private decoder context if its not allocated yet.
  cws2fws: Improve error message wording.
  tools: Check the return value of write().
  mpegaudio: move OUT_FMT macro to mpegaudiodec.c
  mpegaudio: remove OUT_MIN/MAX macros
  Add missing #includes to mp3_header_(de)compress bsf
  dct: fix indentation
  dct: bypass table allocation for DCT_II of size 32
  pngdec: relax condition for setting monoblack pixel format
  h264dsp_mmx: Add #ifdefs around some mmxext functions on x86_64.
  Remove unused header mpegaudio3.h.
  Support decoding of 1bpp rawvideo in avi (ticket 205).
  Support decoding of 2bpp rawvideo in avi (ticket 206).
  Bump minor after adding a caf muxer.
  configure: another try on fixing osx/mingw SDL
  aacdec: Use float instead of int16_t for ltp_state to avoid needless rounding.
  av_picture_crop(): Support simple cases with packed pixels too.
  acelp: Remove unused gray_decode table.
  dfa: Remove unused variable.
  configure: Include AVX availability in summary output.
  rawdec: propagate pict_type information to the output frame
  showinfo: replace "CRC" by "checksum"
  showinfo: fix vertical align nit
  showinfo: fix computation of Adler checksum
  imgutils: generalize linesize computation for bitstream formats
  configure: use same CPPFLAGS in kFreeBSD as Linux

Conflicts:
	ffserver.c
	libavcodec/avcodec.h
	libavcodec/opt.h
	libavcodec/version.h
	libavdevice/avdevice.h
	libavfilter/avfilter.h
	libavformat/avformat.h
	libavformat/metadata.c
	libavformat/metadata.h
	libavformat/utils.c
	libavformat/version.h
	libavutil/avutil.h
	libavutil/mem.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-06-16 06:29:01 +02:00
Michael Niedermayer
33651e3edf Revert "lavc: remove the FF_API_VIDEO_OLD cruft."
This reverts commit e89e5afdd0.

Conflicts:

	libavcodec/utils.c
	libavcodec/version.h

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-05-15 19:38:46 +02:00
Michael Niedermayer
d46aada5c2 Merge branch 'master' into oldabi
* master: (403 commits)
  Initial caf muxer.
  Support decoding of amr_nb and gsm in caf.
  Fix decoding of msrle samples with 1bpp.
  udp: remove resource.h inclusion, it breaks mingw compilation.
  ffmpeg: Allow seting and cycling through debug modes.
  Fix FSF address copy paste error in some license headers.
  Add an aac sample which uses LTP to fate-aac.
  ffmpeg: Help for interactive keys.
  UDP: dont use thread_t as truth value.
  swscale: fix compile on mingw32
  [PATCH] Update pixdesc_be fate refs after adding 9/10bit YUV420P formats.
  arm: properly mark external symbol call
  ffmpeg: Interactivity support. Try pressing +-hs.
  swscale: 10l forgot git add this change from ronald.
  AVFrame: only set parameters from AVCodecContext in decode_video*() when no frame reordering is used.
  avcodec_default_get_buffer: init picture parameters.
  swscale: properly inline bits/endianness in yuv2yuvX16inC().
  swscale: fix clipping of 9/10bit YUV420P.
  Add av_clip_uintp2() function
  Support more QT 1bpp rawvideo files.
  ...

Conflicts:
	libavcodec/flacenc.c
	libavcodec/h261dec.c
	libavcodec/h263dec.c
	libavcodec/mpeg12.c
	libavcodec/msrle.c
	libavcodec/options.c
	libavcodec/qpeg.c
	libavcodec/rv34.c
	libavcodec/svq1dec.c
	libavcodec/svq3.c
	libavcodec/vc1dec.c
	libavcodec/version.h
	libavfilter/avfilter.h
	libavformat/file.c
	libavformat/options.c
	libavformat/rtpproto.c
	libavformat/udp.c
	libavutil/avutil.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-05-15 19:18:02 +02:00
Michael Niedermayer
66b1f210c0 Revert "avio: Fix the deprecated fallback URL-prefixed open flags"
This reverts commit 5b81e29593.
2011-05-02 04:25:42 +02:00
Michael Niedermayer
d4b98d475f Merge commit '1a9f9f8' into oldabi
* commit '1a9f9f8': (98 commits)
  Do not drop packets with no valid ->pos set as e.g. DV-in-AVI produces.
  FFMPEG: support demuxer specific options. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  AVIDEC: use_odmc demuxer specific option. (mostly an exmaple for demuxer specific options) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  LAVFAPI: demuxer specific options. (someone please add doxy) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  output_example: use avformat_alloc_output_context() Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  LAVFAPI: avformat_alloc_output_context() / simplify usage of muxers. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  LAVF API: remove AVOutputFormat.set_parameters() the field is unused. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  CrystalHD: Add auto-detection of packed b-frame bug.
  lavc: remove disabled avcodec_decode_video() code
  Read the album_artist, grouping and lyrics metadata.
  In libx264 wrapper, change wpredp to a codec specific option.
  AMV: disable DR1 and don't override EMU_EDGE
  lavf: inspect more frames for fps when container time base is coarse
  Fix races in default av_log handler
  flashsv2enc: regression test. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  vorbis: Replace sized int_fast integer types with plain int/unsigned.
  Remove disabled non-optimized code variants.
  bswap.h: Remove disabled code.
  Remove some disabled printf debug cruft.
  Replace more disabled printf() calls by av_dlog().
  ...

Conflicts:
	libavcodec/options.c
	libavcodec/qpeg.c
	libavfilter/avfilter.h
	libavformat/avformat.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-05-02 04:18:04 +02:00
Michael Niedermayer
8d8962ca3e Revert "lavc: remove FF_API_HURRY_UP cruft"
This reverts commit e7021c0ed5.
2011-05-02 04:10:59 +02:00
Michael Niedermayer
329559ae50 Revert "lavc: remove FF_API_RATE_EMU cruft"
This reverts commit 694c142434.
2011-05-02 04:10:51 +02:00
Michael Niedermayer
0b3a88fe15 Revert "lavc: remove FF_API_MB_Q cruft"
This reverts commit 6deae83e55.
2011-05-02 04:10:44 +02:00
Michael Niedermayer
563fe360c3 Merge commit 'd7e5aeb' into oldabi
* commit 'd7e5aeb': (24 commits)
  Fix runtime CPU detection in libswscale.
  ac3enc: correct the flipped sign in the ac3_fixed encoder
  Eliminate pointless '#if 1' statements without matching '#else'.
  Add AVX FFT implementation.
  Increase alignment of av_malloc() as needed by AVX ASM.
  Update x86inc.asm from x264 to allow AVX emulation using SSE and MMX.
  mjpeg: Detect overreads in mjpeg_decode_scan() and error out.
  documentation: extend documentation for ffmpeg -aspect option
  APIChanges: update commit hashes for recent additions.
  lavc: deprecate FF_*_TYPE macros in favor of AV_PICTURE_TYPE_* enums
  aac: add headers needed for log2f()
  lavc: remove FF_API_MB_Q cruft
  lavc: remove FF_API_RATE_EMU cruft
  lavc: remove FF_API_HURRY_UP cruft
  pad: make the filter parametric
  vsrc_movie: add key_frame and pict_type.
  vsrc_movie: fix leak in request_frame()
  lavfi: add key_frame and pict_type to AVFilterBufferRefVideo.
  vsrc_buffer: add sample_aspect_ratio fields to arguments.
  lavfi: add fieldorder filter
  ...

Conflicts:
	libavcodec/version.h
	libavfilter/avfilter.h
	libavutil/avutil.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-05-02 04:10:19 +02:00
Michael Niedermayer
73a502dd43 Merge branch 'master' into oldabi
* master: (37 commits)
  vsrc_buffer: 10l mixed up input & output sizes. (funnily this worked 99% of the time) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  Add MxPEG decoder
  Add support for picture_ptr field in MJpegDecodeContext
  Move MJPEG's input buffer preprocessing in separate public function
  Support reference picture defined by bitmask in MJPEG's SOS decoder
  DCA/DTA encoder
  vsrc_buffer: Reinit scale filter when an existing filter is used. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  vsrc_buffer: set output timebase when output equalization is done Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  vsrc_buffer: Set output size Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  vsrc_buffer: fix NULL dereference Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  bfi: store palette data in the context
  Fix issue1503, this fix may be incomplete we need more samples to know for sure. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  wmadec: prevent null pointer call. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  fraps: do not set avctx->pix_fmt to none in decode_init()
  graphparser: add a NULL check on the argument passed to strstr
  setdar: prefer "sar" over "par" in log info message
  fade: fix draw_slice() check on fade->factor value
  fade: make draw_slice() chroma check against planes 1 and 2
  lsws: prevent overflow in sws_init_context()
  ffplay: fix logic for selecting the show mode in case of missing video
  ...

Conflicts:
	libavformat/avidec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-04-27 00:11:58 +02:00
multiple authors
ea189b77eb Revert removial of 3 files, this sliped through the last merge into oldabi because
the files where locally available during testing just not in git.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-04-27 00:03:39 +02:00
Michael Niedermayer
2ebd47841f Merge branch 'master' into oldabi
* master: (172 commits)
  Check mmap() return against correct value Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  vorbisdec: Employ proper printf format specifiers for uint_fast32_t.
  Support fourcc MMJP.
  Support fourcc XVIX.
  Support fourcc M263.
  Support fourcc auv2.
  Fix indentation.
  Support PARSER_FLAG_COMPLETE_FRAMES for h261 and h263 parsers.
  ffplay: avoid SIGFPE exception in SDL_DisplayYUVOverlay
  avi: try to synchronize the points in time of the starts of streams after seeking. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  Add flag to force demuxers to sort more strictly by dts. This enables non interleaved AVI mode for example. Players that are picky on strict interleaving can set this. Patches to only switch to non intereaved AVI mode when the index is not strictly correctly interleaved are welcome. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  applehttp: Don't export variant_bitrate if it isn't known
  crypto: Use av_freep instead of av_free
  CrystalHD: Add AVOption to configure hardware downscaling.
  Check for malloc failures in fraps decoder.
  Use av_fast_malloc instead of av_realloc in fraps decoder.
  general.texi: document libcelt decoder.
  Fix some passing argument from incompatible pointer type warnings. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  configure: Add missing libm library dependencies to .pc files.
  oggdec: reindent after 8f3eebd6
  ...

Conflicts:
	libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-04-25 03:49:47 +02:00
Michael Niedermayer
9d7244c4c6 Typo
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-04-19 11:50:32 +02:00
Michael Niedermayer
7aee089978 Merge branch 'master' into oldabi
* master: (22 commits)
  ffmpeg:Daemon mode, add -d as first option to try it. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  ffmpeg:Fix negative verbositiy Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  Include authorship information from ffmpeg-mt at Ronald S. Bultjes request.
  In mov and flv muxer, check aac bitstream validity.
  Added key_frame and pict_type to vsrc_movie
  Allow h264pred_init_arm.c to compile.
  anm decoder: move buffer allocation from decode_init() to decode_frame()
  vsrc_movie: fix leak in request_frame()
  Replace mplayerhq.hu URLs by libav.org.
  asfdec: Remove dead code from asf_read_close().
  ptx: Use av_log_ask_for_sample() where appropriate.
  Merge remote-tracking branch 'ffmpeg-mt/master'
  10l, commit that should have been stashed into the merge. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  Update regtest checksums after revision 6001dad.
  Replace more FFmpeg references by Libav.
  ac3dec: fix processing of delta bit allocation information.
  vc1: fix fate-vc1 after previous commit.
  wmv3dec: fix playback of complex WMV3 files using simple_idct.
  Replace references to ffmpeg-devel with libav-devel; fix roundup URL.
  make av_dup_packet() more cautious on allocation failures
  ...

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-04-19 02:27:53 +02:00
147 changed files with 3030 additions and 719 deletions

769
Changelog Normal file
View File

@@ -0,0 +1,769 @@
Entries are sorted chronologically from oldest to youngest within each release,
releases are sorted from youngest to oldest.
version 0.7.4:
- vorbis: An additional defense in the Vorbis codec. (CVE-2011-3895)
- vorbisdec: Fix decoding bug with channel handling.
- matroskadec: Fix a bug where a pointer was cached to an array that might
later move due to a realloc(). (CVE-2011-3893)
- vorbis: Avoid some out-of-bounds reads. (CVE-2011-3893)
- vp3: fix oob read for negative tokens and memleaks on error, (CVE-2011-3892)
- avserver: Fix a bug where the socket is IPv4, but IPv6 is autoselected
for the loopback address.
- vp3: fix streams with non-zero last coefficient.
- swscale: fix crash in fast_bilinear code when compiled with -mred-zone.
version 0.7.3:
- check buffer and input values in various parts of the code:
vmd (CVE-2011-4364), qdm2 (CVE-2011-4351), imgutils (several codecs),
vp6 (CVE-2011-4353), svq1 (CVE-2011-4579), vp3 (CVE-2011-4352), wma, 4xm
- backport avcodec_open2() as a replacement for avcodec_open()
- backport avformat_find_stream_info()
version 0.7.2:
- check buffer and input values in various parts of the code:
H.264, VC-1, APE, FLV, Indeo 2, XAN, Ogg, MXF, wavpack, ffv1, MOV,
cavs (OCERT-2011-002, CVE-2011-3362), Smacker, cpu detection, lavf,
Matroska (CVE-2011-3504), RV10, RV30/RV40
- memory leaks: vf_scale, eval
- ARM: workaround for bug in GNU assembler
- AVOptions: fix av_set_string3() doxy to match reality. (Bug #28)
- Reintroduce AVInputStream.nb_streams to avoid crashes
- aac: Only output configure if audio was found
- aac: Remove some suspicious illegal memcpy()s from LTP
- aacps: skip some memcpy() if src and dst would be equal
- adts: fix PCE copying
- alsa: fallback to buffer_size/4 for period_size
- alsa: limit buffer_size to 32768 frames
- cljr, indeo2: init_get_bits size in bits instead of bytes
- configure: add missing CFLAGS to fix building on the HURD
- dca: set AVCodecContext frame_size for DTS audio
- fate: allow testing with libavfilter disabled
- gxf: fix 25 fps DV material in GXF being misdetected as 50 fps
- h264: correct implicit weight table computation for long ref pics
- h264: correct the check for invalid long term frame index in MMCO decode
- h264: fix PCM intra-coded blocks in monochrome case
- jpegdec: actually search for and parse RSTn
- lavc: fix type for thread_type option
- lavf: fix context pointer in av_open_input_stream when avformat_open_input fails
- lavf: do not set codec_tag for rawvideo
- libx264: do not set pic quality if no frame is output
- movenc: create an alternate group for each media type
- mpegts: fix Continuity Counter error detection
- mxfenc: fix ignored drop flag in binary timecode representation
- fix crashes in 32-bit PIC builds (cf e.g. http://bugs.debian.org/639948)
- ppc64: fix cast related random failures
- riff: Add mpgv MPEG-2 fourcc
- swscale: don't use planar output functions to write to NV12/21
- vc1: properly zero coded_block[] edges on new slice entry
- vp3/theora: flush after seek
- various bug other fixes
version 0.7.1:
- added various additional FOURCC codec identifiers
- H.264 4:4:4 fixes
- build system and compilation fixes
- Doxygen and general documentation corrections and improvements
- fixed segfault in ffprobe
- behavioral fix in av_open_input_stream()
- Licensing clarification for LGPL'ed vf_gradfun
- bugfixes while seeking in multithreaded decoding
- support newer versions of OpenCV
- ffmpeg: fix operation with --disable-avfilter
- fixed integer underflow in matroska decoder
version 0.7:
- E-AC-3 audio encoder
- ac3enc: add channel coupling support
- floating-point sample format support for (E-)AC-3, DCA, AAC, Vorbis decoders
- H.264/MPEG frame-level multithreading
- av_metadata_* functions renamed to av_dict_* and moved to libavutil
- 4:4:4 H.264 decoding support
- 10-bit H.264 optimizations for x86
- bump libswscale for recently reported ABI break
version 0.7_beta2:
- VP8 frame-level multithreading
- NEON optimizations for VP8
- removed a lot of deprecated API cruft
- FFT and IMDCT optimizations for AVX (Sandy Bridge) processors
- DPX image encoder
- SMPTE 302M AES3 audio decoder
- ffmpeg no longer quits after the 'q' key is pressed; use 'ctrl+c' instead
- 9bit and 10bit per sample support in the H.264 decoder
version 0.7_beta1:
- WebM support in Matroska de/muxer
- low overhead Ogg muxing
- MMS-TCP support
- VP8 de/encoding via libvpx
- Demuxer for On2's IVF format
- Pictor/PC Paint decoder
- HE-AAC v2 decoder
- libfaad2 wrapper removed
- DTS-ES extension (XCh) decoding support
- native VP8 decoder
- RTSP tunneling over HTTP
- RTP depacketization of SVQ3
- -strict inofficial replaced by -strict unofficial
- ffplay -exitonkeydown and -exitonmousedown options added
- native GSM / GSM MS decoder
- RTP depacketization of QDM2
- ANSI/ASCII art playback system
- Lego Mindstorms RSO de/muxer
- SubRip subtitle file muxer and demuxer
- Chinese AVS encoding via libxavs
- ffprobe -show_packets option added
- RTP packetization of Theora and Vorbis
- RTP depacketization of MP4A-LATM
- RTP packetization and depacketization of VP8
- hflip filter
- Apple HTTP Live Streaming demuxer
- a64 codec
- MMS-HTTP support
- G.722 ADPCM audio encoder/decoder
- R10k video decoder
- ocv_smooth filter
- frei0r wrapper filter
- change crop filter syntax to width:height:x:y
- make the crop filter accept parametric expressions
- make ffprobe accept AVFormatContext options
- yadif filter
- blackframe filter
- Demuxer for Leitch/Harris' VR native stream format (LXF)
- RTP depacketization of the X-QT QuickTime format
- SAP (Session Announcement Protocol, RFC 2974) muxer and demuxer
- cropdetect filter
- ffmpeg -crop* options removed
- transpose filter added
- ffmpeg -force_key_frames option added
- demuxer for receiving raw rtp:// URLs without an SDP description
- single stream LATM/LOAS decoder
- setpts filter added
- Win64 support for optimized x86 assembly functions
- MJPEG/AVI1 to JPEG/JFIF bitstream filter
- ASS subtitle encoder and decoder
- IEC 61937 encapsulation for E-AC-3, TrueHD, DTS-HD (for HDMI passthrough)
- overlay filter added
- rename aspect filter to setdar, and pixelaspect to setsar
- IEC 61937 demuxer
- Mobotix .mxg demuxer
- frei0r source added
- hqdn3d filter added
- RTP depacketization of QCELP
- FLAC parser added
- gradfun filter added
- AMR-WB decoder
- replace the ocv_smooth filter with a more generic ocv filter
- Windows Televison (WTV) demuxer
- FFmpeg metadata format muxer and demuxer
- SubRip (srt) subtitle decoder
- floating-point AC-3 encoder added
- Lagarith decoder
- ffmpeg -copytb option added
- IVF muxer added
- Wing Commander IV movies decoder added
- movie source added
- Bink version 'b' audio and video decoder
- Bitmap Brothers JV playback system
- Apple HTTP Live Streaming protocol handler
- sndio support for playback and record
- Linux framebuffer input device added
- Chronomaster DFA decoder
- Mobotix MxPEG decoder
- AAC encoding via libvo-aacenc
- AMR-WB encoding via libvo-amrwbenc
- xWMA demuxer
- fieldorder video filter added
version 0.6:
- PB-frame decoding for H.263
- deprecated vhook subsystem removed
- deprecated old scaler removed
- VQF demuxer
- Alpha channel scaler
- PCX encoder
- RTP packetization of H.263
- RTP packetization of AMR
- RTP depacketization of Vorbis
- CorePNG decoding support
- Cook multichannel decoding support
- introduced avlanguage helpers in libavformat
- 8088flex TMV demuxer and decoder
- per-stream language-tags extraction in asfdec
- V210 decoder and encoder
- remaining GPL parts in AC-3 decoder converted to LGPL
- QCP demuxer
- SoX native format muxer and demuxer
- AMR-NB decoding/encoding, AMR-WB decoding via OpenCORE libraries
- DPX image decoder
- Electronic Arts Madcow decoder
- DivX (XSUB) subtitle encoder
- nonfree libamr support for AMR-NB/WB decoding/encoding removed
- experimental AAC encoder
- RTP depacketization of ASF and RTSP from WMS servers
- RTMP support in libavformat
- noX handling for OPT_BOOL X options
- Wave64 demuxer
- IEC-61937 compatible Muxer
- TwinVQ decoder
- Bluray (PGS) subtitle decoder
- LPCM support in MPEG-TS (HDMV RID as found on Blu-ray disks)
- WMA Pro decoder
- Core Audio Format demuxer
- Atrac1 decoder
- MD STUDIO audio demuxer
- RF64 support in WAV demuxer
- MPEG-4 Audio Lossless Coding (ALS) decoder
- -formats option split into -formats, -codecs, -bsfs, and -protocols
- IV8 demuxer
- CDG demuxer and decoder
- R210 decoder
- Auravision Aura 1 and 2 decoders
- Deluxe Paint Animation playback system
- SIPR decoder
- Adobe Filmstrip muxer and demuxer
- RTP depacketization of H.263
- Bink demuxer and audio/video decoders
- enable symbol versioning by default for linkers that support it
- IFF PBM/ILBM bitmap decoder
- concat protocol
- Indeo 5 decoder
- RTP depacketization of AMR
- WMA Voice decoder
- ffprobe tool
- AMR-NB decoder
- RTSP muxer
- HE-AAC v1 decoder
- Kega Game Video (KGV1) decoder
- VorbisComment writing for FLAC, Ogg FLAC and Ogg Speex files
- RTP depacketization of Theora
- HTTP Digest authentication
- RTMP/RTMPT/RTMPS/RTMPE/RTMPTE protocol support via librtmp
- Psygnosis YOP demuxer and video decoder
- spectral extension support in the E-AC-3 decoder
- unsharp video filter
- RTP hinting in the mov/3gp/mp4 muxer
- Dirac in Ogg demuxing
- seek to keyframes in Ogg
- 4:2:2 and 4:4:4 Theora decoding
- 35% faster VP3/Theora decoding
- faster AAC decoding
- faster H.264 decoding
- RealAudio 1.0 (14.4K) encoder
version 0.5:
- DV50 AKA DVCPRO50 encoder, decoder, muxer and demuxer
- TechSmith Camtasia (TSCC) video decoder
- IBM Ultimotion (ULTI) video decoder
- Sierra Online audio file demuxer and decoder
- Apple QuickDraw (qdrw) video decoder
- Creative ADPCM audio decoder (16 bits as well as 8 bits schemes)
- Electronic Arts Multimedia (WVE/UV2/etc.) file demuxer
- Miro VideoXL (VIXL) video decoder
- H.261 video encoder
- QPEG video decoder
- Nullsoft Video (NSV) file demuxer
- Shorten audio decoder
- LOCO video decoder
- Apple Lossless Audio Codec (ALAC) decoder
- Winnov WNV1 video decoder
- Autodesk Animator Studio Codec (AASC) decoder
- Indeo 2 video decoder
- Fraps FPS1 video decoder
- Snow video encoder/decoder
- Sonic audio encoder/decoder
- Vorbis audio decoder
- Macromedia ADPCM decoder
- Duck TrueMotion 2 video decoder
- support for decoding FLX and DTA extensions in FLIC files
- H.264 custom quantization matrices support
- ffserver fixed, it should now be usable again
- QDM2 audio decoder
- Real Cooker audio decoder
- TrueSpeech audio decoder
- WMA2 audio decoder fixed, now all files should play correctly
- RealAudio 14.4 and 28.8 decoders fixed
- JPEG-LS decoder
- build system improvements
- tabs and trailing whitespace removed from the codebase
- CamStudio video decoder
- AIFF/AIFF-C audio format, encoding and decoding
- ADTS AAC file reading and writing
- Creative VOC file reading and writing
- American Laser Games multimedia (*.mm) playback system
- Zip Motion Blocks Video decoder
- improved Theora/VP3 decoder
- True Audio (TTA) decoder
- AVS demuxer and video decoder
- JPEG-LS encoder
- Smacker demuxer and decoder
- NuppelVideo/MythTV demuxer and RTjpeg decoder
- KMVC decoder
- MPEG-2 intra VLC support
- MPEG-2 4:2:2 encoder
- Flash Screen Video decoder
- GXF demuxer
- Chinese AVS decoder
- GXF muxer
- MXF demuxer
- VC-1/WMV3/WMV9 video decoder
- MacIntel support
- AVISynth support
- VMware video decoder
- VP5 video decoder
- VP6 video decoder
- WavPack lossless audio decoder
- Targa (.TGA) picture decoder
- Vorbis audio encoder
- Delphine Software .cin demuxer/audio and video decoder
- Tiertex .seq demuxer/video decoder
- MTV demuxer
- TIFF picture encoder and decoder
- GIF picture decoder
- Intel Music Coder decoder
- Zip Motion Blocks Video encoder
- Musepack decoder
- Flash Screen Video encoder
- Theora encoding via libtheora
- BMP encoder
- WMA encoder
- GSM-MS encoder and decoder
- DCA decoder
- DXA demuxer and decoder
- DNxHD decoder
- Gamecube movie (.THP) playback system
- Blackfin optimizations
- Interplay C93 demuxer and video decoder
- Bethsoft VID demuxer and video decoder
- CRYO APC demuxer
- Atrac3 decoder
- V.Flash PTX decoder
- RoQ muxer, RoQ audio encoder
- Renderware TXD demuxer and decoder
- extern C declarations for C++ removed from headers
- sws_flags command line option
- codebook generator
- RoQ video encoder
- QTRLE encoder
- OS/2 support removed and restored again
- AC-3 decoder
- NUT muxer
- additional SPARC (VIS) optimizations
- Matroska muxer
- slice-based parallel H.264 decoding
- Monkey's Audio demuxer and decoder
- AMV audio and video decoder
- DNxHD encoder
- H.264 PAFF decoding
- Nellymoser ASAO decoder
- Beam Software SIFF demuxer and decoder
- libvorbis Vorbis decoding removed in favor of native decoder
- IntraX8 (J-Frame) subdecoder for WMV2 and VC-1
- Ogg (Theora, Vorbis and FLAC) muxer
- The "device" muxers and demuxers are now in a new libavdevice library
- PC Paintbrush PCX decoder
- Sun Rasterfile decoder
- TechnoTrend PVA demuxer
- Linux Media Labs MPEG-4 (LMLM4) demuxer
- AVM2 (Flash 9) SWF muxer
- QT variant of IMA ADPCM encoder
- VFW grabber
- iPod/iPhone compatible mp4 muxer
- Mimic decoder
- MSN TCP Webcam stream demuxer
- RL2 demuxer / decoder
- IFF demuxer
- 8SVX audio decoder
- non-recursive Makefiles
- BFI demuxer
- MAXIS EA XA (.xa) demuxer / decoder
- BFI video decoder
- OMA demuxer
- MLP/TrueHD decoder
- Electronic Arts CMV decoder
- Motion Pixels Video decoder
- Motion Pixels MVI demuxer
- removed animated GIF decoder/demuxer
- D-Cinema audio muxer
- Electronic Arts TGV decoder
- Apple Lossless Audio Codec (ALAC) encoder
- AAC decoder
- floating point PCM encoder/decoder
- MXF muxer
- DV100 AKA DVCPRO HD decoder and demuxer
- E-AC-3 support added to AC-3 decoder
- Nellymoser ASAO encoder
- ASS and SSA demuxer and muxer
- liba52 wrapper removed
- SVQ3 watermark decoding support
- Speex decoding via libspeex
- Electronic Arts TGQ decoder
- RV40 decoder
- QCELP / PureVoice decoder
- RV30 decoder
- hybrid WavPack support
- R3D REDCODE demuxer
- ALSA support for playback and record
- Electronic Arts TQI decoder
- OpenJPEG based JPEG 2000 decoder
- NC (NC4600) camera file demuxer
- Gopher client support
- MXF D-10 muxer
- generic metadata API
version 0.4.9-pre1:
- DV encoder, DV muxer
- Microsoft RLE video decoder
- Microsoft Video-1 decoder
- Apple Animation (RLE) decoder
- Apple Graphics (SMC) decoder
- Apple Video (RPZA) decoder
- Cinepak decoder
- Sega FILM (CPK) file demuxer
- Westwood multimedia support (VQA & AUD files)
- Id Quake II CIN playback support
- 8BPS video decoder
- FLIC playback support
- RealVideo 2.0 (RV20) decoder
- Duck TrueMotion v1 (DUCK) video decoder
- Sierra VMD demuxer and video decoder
- MSZH and ZLIB decoder support
- SVQ1 video encoder
- AMR-WB support
- PPC optimizations
- rate distortion optimal cbp support
- rate distorted optimal ac prediction for MPEG-4
- rate distorted optimal lambda->qp support
- AAC encoding with libfaac
- Sunplus JPEG codec (SP5X) support
- use Lagrange multipler instead of QP for ratecontrol
- Theora/VP3 decoding support
- XA and ADX ADPCM codecs
- export MPEG-2 active display area / pan scan
- Add support for configuring with IBM XLC
- floating point AAN DCT
- initial support for zygo video (not complete)
- RGB ffv1 support
- new audio/video parser API
- av_log() system
- av_read_frame() and av_seek_frame() support
- missing last frame fixes
- seek by mouse in ffplay
- noise reduction of DCT coefficients
- H.263 OBMC & 4MV support
- H.263 alternative inter vlc support
- H.263 loop filter
- H.263 slice structured mode
- interlaced DCT support for MPEG-2 encoding
- stuffing to stay above min_bitrate
- MB type & QP visualization
- frame stepping for ffplay
- interlaced motion estimation
- alternate scantable support
- SVCD scan offset support
- closed GOP support
- SSE2 FDCT
- quantizer noise shaping
- G.726 ADPCM audio codec
- MS ADPCM encoding
- multithreaded/SMP motion estimation
- multithreaded/SMP encoding for MPEG-1/MPEG-2/MPEG-4/H.263
- multithreaded/SMP decoding for MPEG-2
- FLAC decoder
- Metrowerks CodeWarrior suppport
- H.263+ custom pcf support
- nicer output for 'ffmpeg -formats'
- Matroska demuxer
- SGI image format, encoding and decoding
- H.264 loop filter support
- H.264 CABAC support
- nicer looking arrows for the motion vector visualization
- improved VCD support
- audio timestamp drift compensation
- MPEG-2 YUV 422/444 support
- polyphase kaiser windowed sinc and blackman nuttall windowed sinc audio resample
- better image scaling
- H.261 support
- correctly interleave packets during encoding
- VIS optimized motion compensation
- intra_dc_precision>0 encoding support
- support reuse of motion vectors/MB types/field select values of the source video
- more accurate deblock filter
- padding support
- many optimizations and bugfixes
- FunCom ISS audio file demuxer and according ADPCM decoding
version 0.4.8:
- MPEG-2 video encoding (Michael)
- Id RoQ playback subsystem (Mike Melanson and Tim Ferguson)
- Wing Commander III Movie (.mve) file playback subsystem (Mike Melanson
and Mario Brito)
- Xan DPCM audio decoder (Mario Brito)
- Interplay MVE playback subsystem (Mike Melanson)
- Duck DK3 and DK4 ADPCM audio decoders (Mike Melanson)
version 0.4.7:
- RealAudio 1.0 (14_4) and 2.0 (28_8) native decoders. Author unknown, code from mplayerhq
(originally from public domain player for Amiga at http://www.honeypot.net/audio)
- current version now also compiles with older GCC (Fabrice)
- 4X multimedia playback system including 4xm file demuxer (Mike
Melanson), and 4X video and audio codecs (Michael)
- Creative YUV (CYUV) decoder (Mike Melanson)
- FFV1 codec (our very simple lossless intra only codec, compresses much better
than HuffYUV) (Michael)
- ASV1 (Asus), H.264, Intel indeo3 codecs have been added (various)
- tiny PNG encoder and decoder, tiny GIF decoder, PAM decoder (PPM with
alpha support), JPEG YUV colorspace support. (Fabrice Bellard)
- ffplay has been replaced with a newer version which uses SDL (optionally)
for multiplatform support (Fabrice)
- Sorenson Version 3 codec (SVQ3) support has been added (decoding only) - donated
by anonymous
- AMR format has been added (Johannes Carlsson)
- 3GP support has been added (Johannes Carlsson)
- VP3 codec has been added (Mike Melanson)
- more MPEG-1/2 fixes
- better multiplatform support, MS Visual Studio fixes (various)
- AltiVec optimizations (Magnus Damn and others)
- SH4 processor support has been added (BERO)
- new public interfaces (avcodec_get_pix_fmt) (Roman Shaposhnick)
- VOB streaming support (Brian Foley)
- better MP3 autodetection (Andriy Rysin)
- qpel encoding (Michael)
- 4mv+b frames encoding finally fixed (Michael)
- chroma ME (Michael)
- 5 comparison functions for ME (Michael)
- B-frame encoding speedup (Michael)
- WMV2 codec (unfinished - Michael)
- user specified diamond size for EPZS (Michael)
- Playstation STR playback subsystem, still experimental (Mike and Michael)
- ASV2 codec (Michael)
- CLJR decoder (Alex)
.. And lots more new enhancements and fixes.
version 0.4.6:
- completely new integer only MPEG audio layer 1/2/3 decoder rewritten
from scratch
- Recoded DCT and motion vector search with gcc (no longer depends on nasm)
- fix quantization bug in AC3 encoder
- added PCM codecs and format. Corrected WAV/AVI/ASF PCM issues
- added prototype ffplay program
- added GOB header parsing on H.263/H.263+ decoder (Juanjo)
- bug fix on MCBPC tables of H.263 (Juanjo)
- bug fix on DC coefficients of H.263 (Juanjo)
- added Advanced Prediction Mode on H.263/H.263+ decoder (Juanjo)
- now we can decode H.263 streams found in QuickTime files (Juanjo)
- now we can decode H.263 streams found in VIVO v1 files(Juanjo)
- preliminary RTP "friendly" mode for H.263/H.263+ coding. (Juanjo)
- added GOB header for H.263/H.263+ coding on RTP mode (Juanjo)
- now H.263 picture size is returned on the first decoded frame (Juanjo)
- added first regression tests
- added MPEG-2 TS demuxer
- new demux API for libav
- more accurate and faster IDCT (Michael)
- faster and entropy-controlled motion search (Michael)
- two pass video encoding (Michael)
- new video rate control (Michael)
- added MSMPEG4V1, MSMPEGV2 and WMV1 support (Michael)
- great performance improvement of video encoders and decoders (Michael)
- new and faster bit readers and vlc parsers (Michael)
- high quality encoding mode: tries all macroblock/VLC types (Michael)
- added DV video decoder
- preliminary RTP/RTSP support in ffserver and libavformat
- H.263+ AIC decoding/encoding support (Juanjo)
- VCD MPEG-PS mode (Juanjo)
- PSNR stuff (Juanjo)
- simple stats output (Juanjo)
- 16-bit and 15-bit RGB/BGR/GBR support (Bisqwit)
version 0.4.5:
- some header fixes (Zdenek Kabelac <kabi at informatics.muni.cz>)
- many MMX optimizations (Nick Kurshev <nickols_k at mail.ru>)
- added configure system (actually a small shell script)
- added MPEG audio layer 1/2/3 decoding using LGPL'ed mpglib by
Michael Hipp (temporary solution - waiting for integer only
decoder)
- fixed VIDIOCSYNC interrupt
- added Intel H.263 decoding support ('I263' AVI fourCC)
- added Real Video 1.0 decoding (needs further testing)
- simplified image formats again. Added PGM format (=grey
pgm). Renamed old PGM to PGMYUV.
- fixed msmpeg4 slice issues (tell me if you still find problems)
- fixed OpenDivX bugs with newer versions (added VOL header decoding)
- added support for MPlayer interface
- added macroblock skip optimization
- added MJPEG decoder
- added mmx/mmxext IDCT from libmpeg2
- added pgmyuvpipe, ppm, and ppm_pipe formats (original patch by Celer
<celer at shell.scrypt.net>)
- added pixel format conversion layer (e.g. for MJPEG or PPM)
- added deinterlacing option
- MPEG-1/2 fixes
- MPEG-4 vol header fixes (Jonathan Marsden <snmjbm at pacbell.net>)
- ARM optimizations (Lionel Ulmer <lionel.ulmer at free.fr>).
- Windows porting of file converter
- added MJPEG raw format (input/ouput)
- added JPEG image format support (input/output)
version 0.4.4:
- fixed some std header definitions (Bjorn Lindgren
<bjorn.e.lindgren at telia.com>).
- added MPEG demuxer (MPEG-1 and 2 compatible).
- added ASF demuxer
- added prototype RM demuxer
- added AC3 decoding (done with libac3 by Aaron Holtzman)
- added decoding codec parameter guessing (.e.g. for MPEG, because the
header does not include them)
- fixed header generation in MPEG-1, AVI and ASF muxer: wmplayer can now
play them (only tested video)
- fixed H.263 white bug
- fixed phase rounding in img resample filter
- add MMX code for polyphase img resample filter
- added CPU autodetection
- added generic title/author/copyright/comment string handling (ASF and RM
use them)
- added SWF demux to extract MP3 track (not usable yet because no MP3
decoder)
- added fractional frame rate support
- codecs are no longer searched by read_header() (should fix ffserver
segfault)
version 0.4.3:
- BGR24 patch (initial patch by Jeroen Vreeken <pe1rxq at amsat.org>)
- fixed raw yuv output
- added motion rounding support in MPEG-4
- fixed motion bug rounding in MSMPEG4
- added B-frame handling in video core
- added full MPEG-1 decoding support
- added partial (frame only) MPEG-2 support
- changed the FOURCC code for H.263 to "U263" to be able to see the
+AVI/H.263 file with the UB Video H.263+ decoder. MPlayer works with
this +codec ;) (JuanJo).
- Halfpel motion estimation after MB type selection (JuanJo)
- added pgm and .Y.U.V output format
- suppressed 'img:' protocol. Simply use: /tmp/test%d.[pgm|Y] as input or
output.
- added pgmpipe I/O format (original patch from Martin Aumueller
<lists at reserv.at>, but changed completely since we use a format
instead of a protocol)
version 0.4.2:
- added H.263/MPEG-4/MSMPEG4 decoding support. MPEG-4 decoding support
(for OpenDivX) is almost complete: 8x8 MVs and rounding are
missing. MSMPEG4 support is complete.
- added prototype MPEG-1 decoder. Only I- and P-frames handled yet (it
can decode ffmpeg MPEGs :-)).
- added libavcodec API documentation (see apiexample.c).
- fixed image polyphase bug (the bottom of some images could be
greenish)
- added support for non clipped motion vectors (decoding only)
and image sizes non-multiple of 16
- added support for AC prediction (decoding only)
- added file overwrite confirmation (can be disabled with -y)
- added custom size picture to H.263 using H.263+ (Juanjo)
version 0.4.1:
- added MSMPEG4 (aka DivX) compatible encoder. Changed default codec
of AVI and ASF to DIV3.
- added -me option to set motion estimation method
(default=log). suppressed redundant -hq option.
- added options -acodec and -vcodec to force a given codec (useful for
AVI for example)
- fixed -an option
- improved dct_quantize speed
- factorized some motion estimation code
version 0.4.0:
- removing grab code from ffserver and moved it to ffmpeg. Added
multistream support to ffmpeg.
- added timeshifting support for live feeds (option ?date=xxx in the
URL)
- added high quality image resize code with polyphase filter (need
mmx/see optimization). Enable multiple image size support in ffserver.
- added multi live feed support in ffserver
- suppressed master feature from ffserver (it should be done with an
external program which opens the .ffm url and writes it to another
ffserver)
- added preliminary support for video stream parsing (WAV and AVI half
done). Added proper support for audio/video file conversion in
ffmpeg.
- added preliminary support for video file sending from ffserver
- redesigning I/O subsystem: now using URL based input and output
(see avio.h)
- added WAV format support
- added "tty user interface" to ffmpeg to stop grabbing gracefully
- added MMX/SSE optimizations to SAD (Sums of Absolutes Differences)
(Juan J. Sierralta P. a.k.a. "Juanjo" <juanjo at atmlab.utfsm.cl>)
- added MMX DCT from mpeg2_movie 1.5 (Juanjo)
- added new motion estimation algorithms, log and phods (Juanjo)
- changed directories: libav for format handling, libavcodec for
codecs
version 0.3.4:
- added stereo in MPEG audio encoder
version 0.3.3:
- added 'high quality' mode which use motion vectors. It can be used in
real time at low resolution.
- fixed rounding problems which caused quality problems at high
bitrates and large GOP size
version 0.3.2: small fixes
- ASF fixes
- put_seek bug fix
version 0.3.1: added avi/divx support
- added AVI support
- added MPEG-4 codec compatible with OpenDivX. It is based on the H.263 codec
- added sound for flash format (not tested)
version 0.3: initial public release

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 = 0.8.6
PROJECT_NUMBER = 0.7.11
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.

View File

@@ -1 +1 @@
0.8.6
0.7.11

View File

@@ -1 +1 @@
0.8.6
0.7.11

View File

@@ -13,6 +13,7 @@ libavutil: 2011-04-18
API changes, most recent first:
2011-06-19 - xxxxxxx - lavfi 2.23.0 - avfilter.h
Add layout negotiation fields and helper functions.
@@ -43,6 +44,12 @@ API changes, most recent first:
2011-06-12 - xxxxxxx - lavfi 2.16.0 - avfilter_graph_parse()
Change avfilter_graph_parse() signature.
2011-07-10 - xxxxxxx - lavf 53.3.0
Add avformat_find_stream_info(), deprecate av_find_stream_info().
2011-07-10 - xxxxxxx - lavc 53.6.0
Add avcodec_open2(), deprecate avcodec_open().
2011-06-xx - xxxxxxx - lavf 53.2.0 - avformat.h
Add avformat_open_input and avformat_write_header().
Deprecate av_open_input_stream, av_open_input_file,

View File

@@ -2,7 +2,7 @@ Release Notes
=============
* 0.8 "Love" June, 2011
* 0.7 "Peace" June, 2011 (identical to 0.8 but using 0.6 ABI/API)
* 0.7.1 "Peace" June, 2011 (identical to 0.8 but using 0.6 ABI/API)
General notes

View File

@@ -479,7 +479,7 @@ int main(int argc, char **argv)
/* open the output file, if needed */
if (!(fmt->flags & AVFMT_NOFILE)) {
if (avio_open(&oc->pb, filename, AVIO_FLAG_WRITE) < 0) {
if (avio_open(&oc->pb, filename, AVIO_WRONLY) < 0) {
fprintf(stderr, "Could not open '%s'\n", filename);
exit(1);
}

View File

@@ -31,7 +31,7 @@
#include "libavformat/avformat.h"
#include "libavdevice/avdevice.h"
#include "libswscale/swscale.h"
#include "libavutil/opt.h"
#include "libavcodec/opt.h"
#include "libavcodec/audioconvert.h"
#include "libavutil/audioconvert.h"
#include "libavutil/parseutils.h"
@@ -113,7 +113,9 @@ typedef struct AVChapterMap {
static const OptionDef options[];
#define MAX_FILES 100
#if !FF_API_MAX_STREAMS
#define MAX_STREAMS 1024 /* arbitrary sanity check value */
#endif
static const char *last_asked_format = NULL;
static int64_t input_files_ts_offset[MAX_FILES];
@@ -712,7 +714,6 @@ static int read_ffserver_streams(AVFormatContext *s, const char *filename)
return err;
/* copy stream format */
s->nb_streams = 0;
s->streams = av_mallocz(sizeof(AVStream *) * ic->nb_streams);
for(i=0;i<ic->nb_streams;i++) {
AVStream *st;
AVCodec *codec;
@@ -3957,7 +3958,7 @@ static int opt_output_file(const char *opt, const char *filename)
/* check filename in case of an image number is expected */
if (oc->oformat->flags & AVFMT_NEEDNUMBER) {
if (!av_filename_number_test(oc->filename)) {
print_error(oc->filename, AVERROR(EINVAL));
print_error(oc->filename, AVERROR_NUMEXPECTED);
ffmpeg_exit(1);
}
}
@@ -3968,7 +3969,7 @@ static int opt_output_file(const char *opt, const char *filename)
(strchr(filename, ':') == NULL ||
filename[1] == ':' ||
av_strstart(filename, "file:", NULL))) {
if (avio_check(filename, 0) == 0) {
if (url_exist(filename)) {
if (!using_stdin) {
fprintf(stderr,"File '%s' already exists. Overwrite ? [y/N] ", filename);
fflush(stderr);
@@ -3985,7 +3986,7 @@ static int opt_output_file(const char *opt, const char *filename)
}
/* open the file */
if ((err = avio_open(&oc->pb, filename, AVIO_FLAG_WRITE)) < 0) {
if ((err = avio_open(&oc->pb, filename, AVIO_WRONLY)) < 0) {
print_error(filename, err);
ffmpeg_exit(1);
}

View File

@@ -35,7 +35,7 @@
#include "libavdevice/avdevice.h"
#include "libswscale/swscale.h"
#include "libavcodec/audioconvert.h"
#include "libavutil/opt.h"
#include "libavcodec/opt.h"
#include "libavcodec/avfft.h"
#if CONFIG_AVFILTER
@@ -2135,7 +2135,12 @@ static int stream_component_open(VideoState *is, int stream_index)
avctx->workaround_bugs = workaround_bugs;
avctx->lowres = lowres;
if(lowres) avctx->flags |= CODEC_FLAG_EMU_EDGE;
if(avctx->lowres > codec->max_lowres){
av_log(avctx, AV_LOG_WARNING, "The maximum value for lowres supported by the decoder is %d\n",
codec->max_lowres);
avctx->lowres= codec->max_lowres;
}
if(avctx->lowres) avctx->flags |= CODEC_FLAG_EMU_EDGE;
avctx->idct_algo= idct;
if(fast) avctx->flags2 |= CODEC_FLAG2_FAST;
avctx->skip_frame= skip_frame;

View File

@@ -23,7 +23,7 @@
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
#include "libavutil/opt.h"
#include "libavcodec/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/dict.h"
#include "libavdevice/avdevice.h"

View File

@@ -39,7 +39,7 @@
#include "libavutil/dict.h"
#include "libavutil/random_seed.h"
#include "libavutil/parseutils.h"
#include "libavutil/opt.h"
#include "libavcodec/opt.h"
#include <stdarg.h>
#include <unistd.h>
#include <fcntl.h>
@@ -94,7 +94,9 @@ static const char *http_state[] = {
"RTSP_SEND_PACKET",
};
#if !FF_API_MAX_STREAMS
#define MAX_STREAMS 20
#endif
#define IOBUFFER_INIT_SIZE 8192
@@ -516,6 +518,7 @@ static int socket_open_listen(struct sockaddr_in *my_addr)
tmp = 1;
setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp));
my_addr->sin_family = AF_INET;
if (bind (server_fd, (struct sockaddr *) my_addr, sizeof (*my_addr)) < 0) {
char bindmsg[32];
snprintf(bindmsg, sizeof(bindmsg), "bind(port %d)", ntohs(my_addr->sin_port));
@@ -2229,11 +2232,11 @@ static int http_prepare_data(HTTPContext *c)
av_dict_set(&c->fmt_ctx.metadata, "copyright", c->stream->copyright, 0);
av_dict_set(&c->fmt_ctx.metadata, "title" , c->stream->title , 0);
c->fmt_ctx.streams = av_mallocz(sizeof(AVStream *) * c->stream->nb_streams);
for(i=0;i<c->stream->nb_streams;i++) {
AVStream *st;
AVStream *src;
c->fmt_ctx.streams[i] = av_mallocz(sizeof(AVStream));
st = av_mallocz(sizeof(AVStream));
c->fmt_ctx.streams[i] = st;
/* if file or feed, then just take streams from FFStream struct */
if (!c->stream->feed ||
c->stream->feed == c->stream)
@@ -2241,9 +2244,9 @@ static int http_prepare_data(HTTPContext *c)
else
src = c->stream->feed->streams[c->stream->feed_streams[i]];
*(c->fmt_ctx.streams[i]) = *src;
c->fmt_ctx.streams[i]->priv_data = 0;
c->fmt_ctx.streams[i]->codec->frame_number = 0; /* XXX: should be done in
*st = *src;
st->priv_data = 0;
st->codec->frame_number = 0; /* XXX: should be done in
AVStream, not in codec */
}
/* set output format parameters */
@@ -2941,9 +2944,11 @@ static int prepare_sdp_description(FFStream *stream, uint8_t **pbuffer,
snprintf(avc->filename, 1024, "rtp://0.0.0.0");
}
#if !FF_API_MAX_STREAMS
if (avc->nb_streams >= INT_MAX/sizeof(*avc->streams) ||
!(avc->streams = av_malloc(avc->nb_streams * sizeof(*avc->streams))))
goto sdp_done;
#endif
if (avc->nb_streams >= INT_MAX/sizeof(*avs) ||
!(avs = av_malloc(avc->nb_streams * sizeof(*avs))))
goto sdp_done;
@@ -2956,8 +2961,10 @@ static int prepare_sdp_description(FFStream *stream, uint8_t **pbuffer,
av_sdp_create(&avc, 1, *pbuffer, 2048);
sdp_done:
#if !FF_API_MAX_STREAMS
av_free(avc->streams);
av_dict_free(&avc->metadata);
#endif
av_metadata_free(&avc->metadata);
av_free(avc);
av_free(avs);
@@ -3385,9 +3392,6 @@ static int rtp_new_av_stream(HTTPContext *c,
if (!st)
goto fail;
ctx->nb_streams = 1;
ctx->streams = av_mallocz(sizeof(AVStream *) * ctx->nb_streams);
if (!ctx->streams)
goto fail;
ctx->streams[0] = st;
if (!c->stream->feed ||
@@ -3421,7 +3425,7 @@ static int rtp_new_av_stream(HTTPContext *c,
"rtp://%s:%d", ipaddr, ntohs(dest_addr->sin_port));
}
if (url_open(&h, ctx->filename, AVIO_FLAG_WRITE) < 0)
if (url_open(&h, ctx->filename, AVIO_WRONLY) < 0)
goto fail;
c->rtp_handles[stream_index] = h;
max_packet_size = url_get_max_packet_size(h);
@@ -3674,7 +3678,7 @@ static void build_feed_streams(void)
for(feed = first_feed; feed != NULL; feed = feed->next_feed) {
int fd;
if (avio_check(feed->feed_filename, AVIO_FLAG_READ) > 0) {
if (url_exist(feed->feed_filename)) {
/* See if it matches */
AVFormatContext *s = NULL;
int matches = 0;
@@ -3747,7 +3751,7 @@ static void build_feed_streams(void)
unlink(feed->feed_filename);
}
}
if (avio_check(feed->feed_filename, AVIO_FLAG_WRITE) <= 0) {
if (!url_exist(feed->feed_filename)) {
AVFormatContext s1 = {0}, *s = &s1;
if (feed->readonly) {
@@ -3757,15 +3761,20 @@ static void build_feed_streams(void)
}
/* only write the header of the ffm file */
if (avio_open(&s->pb, feed->feed_filename, AVIO_FLAG_WRITE) < 0) {
if (avio_open(&s->pb, feed->feed_filename, AVIO_WRONLY) < 0) {
http_log("Could not open output feed file '%s'\n",
feed->feed_filename);
exit(1);
}
s->oformat = feed->fmt;
s->nb_streams = feed->nb_streams;
s->streams = feed->streams;
if (avformat_write_header(s, NULL) < 0) {
for(i=0;i<s->nb_streams;i++) {
AVStream *st;
st = feed->streams[i];
s->streams[i] = st;
}
av_set_parameters(s, NULL);
if (av_write_header(s) < 0) {
http_log("Container doesn't supports the required parameters\n");
exit(1);
}

View File

@@ -694,10 +694,13 @@ static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length){
unsigned int prestream_size;
const uint8_t *prestream;
if (bitstream_size > (1<<26) || length < bitstream_size + 12)
return -1;
prestream_size = 4*AV_RL32(buf + bitstream_size + 4);
prestream = buf + bitstream_size + 12;
if (length < bitstream_size + 12) {
av_log(f->avctx, AV_LOG_ERROR, "packet size too small\n");
return AVERROR_INVALIDDATA;
}
prestream_size = 4 * AV_RL32(buf + bitstream_size + 4);
prestream = buf + bitstream_size + 12;
if (prestream_size > (1<<26) ||
prestream_size != length - (bitstream_size + 12)){

View File

@@ -50,8 +50,6 @@ typedef struct EightBpsContext {
unsigned char planes;
unsigned char planemap[4];
uint32_t pal[256];
} EightBpsContext;
@@ -131,16 +129,13 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
}
}
if (avctx->bits_per_coded_sample <= 8) {
const uint8_t *pal = av_packet_get_side_data(avpkt,
AV_PKT_DATA_PALETTE,
NULL);
if (pal) {
if (avctx->palctrl) {
memcpy (c->pic.data[1], avctx->palctrl->palette, AVPALETTE_SIZE);
if (avctx->palctrl->palette_changed) {
c->pic.palette_has_changed = 1;
memcpy(c->pal, pal, AVPALETTE_SIZE);
}
memcpy (c->pic.data[1], c->pal, AVPALETTE_SIZE);
avctx->palctrl->palette_changed = 0;
} else
c->pic.palette_has_changed = 0;
}
*data_size = sizeof(AVFrame);
@@ -170,6 +165,10 @@ static av_cold int decode_init(AVCodecContext *avctx)
avctx->pix_fmt = PIX_FMT_PAL8;
c->planes = 1;
c->planemap[0] = 0; // 1st plane is palette indexes
if (avctx->palctrl == NULL) {
av_log(avctx, AV_LOG_ERROR, "Error: PAL8 format but no palette from demuxer.\n");
return -1;
}
break;
case 24:
avctx->pix_fmt = avctx->get_format(avctx, pixfmt_rgb24);

View File

@@ -15,6 +15,7 @@ OBJS = allcodecs.o \
fmtconvert.o \
imgconvert.o \
jrevdct.o \
opt.o \
options.o \
parser.o \
raw.o \

View File

@@ -1185,7 +1185,7 @@ static void sbr_qmf_synthesis(DSPContext *dsp, FFTContext *mdct,
const float *sbr_qmf_window = div ? sbr_qmf_window_ds : sbr_qmf_window_us;
float *v;
for (i = 0; i < 32; i++) {
if (*v_off == 0) {
if (*v_off < 128 >> div) {
int saved_samples = (1280 - 128) >> div;
memcpy(&v0[SBR_SYNTHESIS_BUF_SIZE - saved_samples], v0, saved_samples * sizeof(float));
*v_off = SBR_SYNTHESIS_BUF_SIZE - saved_samples - (128 >> div);

View File

@@ -395,6 +395,8 @@ static int decodeTonalComponents (GetBitContext *gb, tonal_component *pComponent
for (k=0; k<coded_components; k++) {
sfIndx = get_bits(gb,6);
if(component_count>=64)
return AVERROR_INVALIDDATA;
pComponent[component_count].pos = j * 64 + (get_bits(gb,6));
max_coded_values = 1024 - pComponent[component_count].pos;
coded_values = coded_values_per_component + 1;

View File

@@ -30,9 +30,16 @@
#include "libavutil/samplefmt.h"
#include "libavutil/avutil.h"
#include "libavutil/cpu.h"
#include "libavutil/dict.h"
#include "libavcodec/version.h"
#if LIBAVCODEC_VERSION_MAJOR < 53
# define FF_INTERNALC_MEM_TYPE unsigned int
#else
# define FF_INTERNALC_MEM_TYPE size_t
#endif
/**
* Identify the syntax and semantics of the bitstream.
* The principle is roughly:
@@ -111,6 +118,9 @@ enum CodecID {
CODEC_ID_QDRAW,
CODEC_ID_VIXL,
CODEC_ID_QPEG,
#if LIBAVCODEC_VERSION_MAJOR < 53
CODEC_ID_XVID,
#endif
CODEC_ID_PNG,
CODEC_ID_PPM,
CODEC_ID_PBM,
@@ -359,6 +369,18 @@ enum CodecID {
CODEC_ID_FFMETADATA=0x21000, ///< Dummy codec for streams containing only metadata information.
};
#if LIBAVCODEC_VERSION_MAJOR < 53
#define CodecType AVMediaType
#define CODEC_TYPE_UNKNOWN AVMEDIA_TYPE_UNKNOWN
#define CODEC_TYPE_VIDEO AVMEDIA_TYPE_VIDEO
#define CODEC_TYPE_AUDIO AVMEDIA_TYPE_AUDIO
#define CODEC_TYPE_DATA AVMEDIA_TYPE_DATA
#define CODEC_TYPE_SUBTITLE AVMEDIA_TYPE_SUBTITLE
#define CODEC_TYPE_ATTACHMENT AVMEDIA_TYPE_ATTACHMENT
#define CODEC_TYPE_NB AVMEDIA_TYPE_NB
#endif
#if FF_API_OLD_SAMPLE_FMT
#define SampleFormat AVSampleFormat
@@ -1070,10 +1092,6 @@ typedef struct AVPanScan{
#define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content.
#define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update).
enum AVPacketSideDataType {
AV_PKT_DATA_PALETTE,
};
typedef struct AVPacket {
/**
* Presentation timestamp in AVStream->time_base units; the time at which
@@ -1095,17 +1113,6 @@ typedef struct AVPacket {
int size;
int stream_index;
int flags;
/**
* Additional packet data that can be provided by the container.
* Packet can contain several types of side information.
*/
struct {
uint8_t *data;
int size;
enum AVPacketSideDataType type;
} *side_data;
int side_data_elems;
/**
* Duration of this packet in AVStream->time_base units, 0 if unknown.
* Equals next_pts - this_pts in presentation order.
@@ -1135,6 +1142,9 @@ typedef struct AVPacket {
int64_t convergence_duration;
} AVPacket;
#define AV_PKT_FLAG_KEY 0x0001
#if LIBAVCODEC_VERSION_MAJOR < 53
#define PKT_FLAG_KEY AV_PKT_FLAG_KEY
#endif
/**
* Audio Video Frame.
@@ -1255,6 +1265,16 @@ typedef struct AVCodecContext {
*/
enum PixelFormat pix_fmt;
#if FF_API_RATE_EMU
/**
* Frame rate emulation. If not zero, the lower layer (i.e. format handler)
* has to read frames at native frame rate.
* - encoding: Set by user.
* - decoding: unused
*/
attribute_deprecated int rate_emu;
#endif
/**
* If non NULL, 'draw_horiz_band' is called by the libavcodec
* decoder to draw a horizontal band. It improves cache usage. Not
@@ -1299,6 +1319,9 @@ typedef struct AVCodecContext {
*/
int frame_size;
int frame_number; ///< audio or video frame number
#if LIBAVCODEC_VERSION_MAJOR < 53
int real_pict_num; ///< Returns the real picture number of previous encoded frame.
#endif
/**
* Number of frames the decoded output will be delayed relative to
@@ -1356,6 +1379,16 @@ typedef struct AVCodecContext {
int b_frame_strategy;
#if FF_API_HURRY_UP
/**
* hurry up amount
* - encoding: unused
* - decoding: Set by user. 1-> Skip B-frames, 2-> Skip IDCT/dequant too, 5-> Skip everything except header
* @deprecated Deprecated in favor of skip_idct and skip_frame.
*/
attribute_deprecated int hurry_up;
#endif
struct AVCodec *codec;
void *priv_data;
@@ -1473,6 +1506,9 @@ typedef struct AVCodecContext {
#define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software.
#define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences.
#define FF_COMPLIANCE_NORMAL 0
#if FF_API_INOFFICIAL
#define FF_COMPLIANCE_INOFFICIAL -1 ///< Allow inofficial extensions (deprecated - use FF_COMPLIANCE_UNOFFICIAL instead).
#endif
#define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions
#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things.
@@ -1746,6 +1782,25 @@ typedef struct AVCodecContext {
*/
unsigned dsp_mask;
#if FF_API_MM_FLAGS
#define FF_MM_FORCE AV_CPU_FLAG_FORCE
#define FF_MM_MMX AV_CPU_FLAG_MMX
#define FF_MM_3DNOW AV_CPU_FLAG_3DNOW
#define FF_MM_MMXEXT AV_CPU_FLAG_MMX2
#define FF_MM_MMX2 AV_CPU_FLAG_MMX2
#define FF_MM_SSE AV_CPU_FLAG_SSE
#define FF_MM_SSE2 AV_CPU_FLAG_SSE2
#define FF_MM_SSE2SLOW AV_CPU_FLAG_SSE2SLOW
#define FF_MM_3DNOWEXT AV_CPU_FLAG_3DNOWEXT
#define FF_MM_SSE3 AV_CPU_FLAG_SSE3
#define FF_MM_SSE3SLOW AV_CPU_FLAG_SSE3SLOW
#define FF_MM_SSSE3 AV_CPU_FLAG_SSSE3
#define FF_MM_SSE4 AV_CPU_FLAG_SSE4
#define FF_MM_SSE42 AV_CPU_FLAG_SSE42
#define FF_MM_IWMMXT AV_CPU_FLAG_IWMMXT
#define FF_MM_ALTIVEC AV_CPU_FLAG_ALTIVEC
#endif
/**
* bits per sample/pixel from the demuxer (needed for huffyuv).
* - encoding: Set by libavcodec.
@@ -1820,6 +1875,22 @@ typedef struct AVCodecContext {
*/
uint64_t error[4];
#if FF_API_MB_Q
/**
* minimum MB quantizer
* - encoding: unused
* - decoding: unused
*/
attribute_deprecated int mb_qmin;
/**
* maximum MB quantizer
* - encoding: unused
* - decoding: unused
*/
attribute_deprecated int mb_qmax;
#endif
/**
* motion estimation comparison function
* - encoding: Set by user.
@@ -2521,6 +2592,23 @@ typedef struct AVCodecContext {
int compression_level;
#define FF_COMPRESSION_DEFAULT -1
#if FF_API_USE_LPC
/**
* Sets whether to use LPC mode - used by FLAC encoder.
* - encoding: Set by user.
* - decoding: unused
* @deprecated Deprecated in favor of lpc_type and lpc_passes.
*/
int use_lpc;
/**
* LPC coefficient precision - used by FLAC encoder
* - encoding: Set by user.
* - decoding: unused
*/
int lpc_coeff_precision;
#endif
/**
* - encoding: Set by user.
* - decoding: unused
@@ -2540,13 +2628,6 @@ typedef struct AVCodecContext {
* @{
*/
/**
* LPC coefficient precision - used by FLAC encoder
* - encoding: Set by user.
* - decoding: unused
*/
attribute_deprecated int lpc_coeff_precision;
/**
* search method for selecting prediction order
* - encoding: Set by user.
@@ -3210,33 +3291,6 @@ int av_dup_packet(AVPacket *pkt);
*/
void av_free_packet(AVPacket *pkt);
/**
* Allocate new information of a packet.
*
* @param pkt packet
* @param type side information type
* @param size side information size
* @return pointer to fresh allocated data or NULL otherwise
*/
uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
int size);
/**
* Get side information from packet.
*
* @param pkt packet
* @param type desired side information type
* @param size pointer for side information size to store (optional)
* @return pointer to data if present or NULL otherwise
*/
uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
int *size);
int av_packet_merge_side_data(AVPacket *pkt);
int av_packet_split_side_data(AVPacket *pkt);
/* resample.c */
struct ReSampleContext;
@@ -3244,6 +3298,14 @@ struct AVResampleContext;
typedef struct ReSampleContext ReSampleContext;
#if FF_API_AUDIO_OLD
/**
* @deprecated Use av_audio_resample_init() instead.
*/
attribute_deprecated ReSampleContext *audio_resample_init(int output_channels, int input_channels,
int output_rate, int input_rate);
#endif
/**
* Initialize audio resampling context.
*
@@ -3407,6 +3469,23 @@ const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt);
void avcodec_set_dimensions(AVCodecContext *s, int width, int height);
#if LIBAVCODEC_VERSION_MAJOR < 53
/**
* Return the pixel format corresponding to the name name.
*
* If there is no pixel format with name name, then look for a
* pixel format with the name corresponding to the native endian
* format of name.
* For example in a little-endian system, first look for "gray16",
* then for "gray16le".
*
* Finally if no pixel format has been found, return PIX_FMT_NONE.
*
* @deprecated Deprecated in favor of av_get_pix_fmt().
*/
attribute_deprecated enum PixelFormat avcodec_get_pix_fmt(const char* name);
#endif
/**
* Return a value representing the fourCC code associated to the
* pixel format pix_fmt, or 0 if no associated fourCC code can be
@@ -3475,6 +3554,14 @@ int avcodec_get_pix_fmt_loss(enum PixelFormat dst_pix_fmt, enum PixelFormat src_
enum PixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum PixelFormat src_pix_fmt,
int has_alpha, int *loss_ptr);
#if LIBAVCODEC_VERSION_MAJOR < 53
/**
* @deprecated Use av_get_pix_fmt_string() instead.
*/
attribute_deprecated
void avcodec_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt);
#endif
#define FF_ALPHA_TRANSP 0x0001 /* image has some totally transparent pixels */
#define FF_ALPHA_SEMI_TRANSP 0x0002 /* image has some transparent pixels */
@@ -3525,6 +3612,13 @@ const char *avcodec_license(void);
*/
void avcodec_init(void);
#if LIBAVCODEC_VERSION_MAJOR < 53
/**
* @deprecated Deprecated in favor of avcodec_register().
*/
attribute_deprecated void register_avcodec(AVCodec *codec);
#endif
/**
* Register the codec codec and initialize libavcodec.
*
@@ -3669,6 +3763,14 @@ void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height);
void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
int linesize_align[4]);
#if LIBAVCODEC_VERSION_MAJOR < 53
/**
* @deprecated Deprecated in favor of av_check_image_size().
*/
attribute_deprecated
int avcodec_check_dimensions(void *av_log_ctx, unsigned int w, unsigned int h);
#endif
enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt);
#if FF_API_THREAD_INIT
@@ -3677,12 +3779,13 @@ enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum
*/
attribute_deprecated
int avcodec_thread_init(AVCodecContext *s, int thread_count);
void avcodec_thread_free(AVCodecContext *s);
#endif
int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size);
int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count);
//FIXME func typedef
#if FF_API_AVCODEC_OPEN
/**
* Initialize the AVCodecContext to use the given AVCodec. Prior to using this
* function the context has to be allocated.
@@ -3709,8 +3812,63 @@ int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2,
* @param codec The codec to use within the context.
* @return zero on success, a negative value on error
* @see avcodec_alloc_context, avcodec_find_decoder, avcodec_find_encoder, avcodec_close
*
* @deprecated use avcodec_open2
*/
int avcodec_open(AVCodecContext *avctx, AVCodec *codec);
#endif
/**
* Initialize the AVCodecContext to use the given AVCodec. Prior to using this
* function the context has to be allocated with avcodec_alloc_context().
*
* The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
* avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
* retrieving a codec.
*
* @warning This function is not thread safe!
*
* @code
* avcodec_register_all();
* av_dict_set(&opts, "b", "2.5M", 0);
* codec = avcodec_find_decoder(CODEC_ID_H264);
* if (!codec)
* exit(1);
*
* context = avcodec_alloc_context();
*
* if (avcodec_open(context, codec, opts) < 0)
* exit(1);
* @endcode
*
* @param avctx The context to initialize.
* @param options A dictionary filled with AVCodecContext and codec-private options.
* On return this object will be filled with options that were not found.
*
* @return zero on success, a negative value on error
* @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(),
* av_dict_set(), av_opt_find().
*/
int avcodec_open2(AVCodecContext *avctx, AVCodec *codec, AVDictionary **options);
#if FF_API_AUDIO_OLD
/**
* Decode an audio frame from buf into samples.
* Wrapper function which calls avcodec_decode_audio3.
*
* @deprecated Use avcodec_decode_audio3 instead.
* @param avctx the codec context
* @param[out] samples the output buffer
* @param[in,out] frame_size_ptr the output buffer size in bytes
* @param[in] buf the input buffer
* @param[in] buf_size the input buffer size in bytes
* @return On error a negative value is returned, otherwise the number of bytes
* used or zero if no frame could be decompressed.
*/
attribute_deprecated int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples,
int *frame_size_ptr,
const uint8_t *buf, int buf_size);
#endif
/**
* Decode the audio frame of size avpkt->size from avpkt->data into samples.
@@ -3755,6 +3913,25 @@ int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples,
int *frame_size_ptr,
AVPacket *avpkt);
#if FF_API_VIDEO_OLD
/**
* Decode a video frame from buf into picture.
* Wrapper function which calls avcodec_decode_video2.
*
* @deprecated Use avcodec_decode_video2 instead.
* @param avctx the codec context
* @param[out] picture The AVFrame in which the decoded video frame will be stored.
* @param[in] buf the input buffer
* @param[in] buf_size the size of the input buffer in bytes
* @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero.
* @return On error a negative value is returned, otherwise the number of bytes
* used or zero if no frame could be decompressed.
*/
attribute_deprecated int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture,
int *got_picture_ptr,
const uint8_t *buf, int buf_size);
#endif
/**
* Decode the video frame of size avpkt->size from avpkt->data into picture.
* Some decoders may support multiple frames in a single AVPacket, such
@@ -3799,6 +3976,15 @@ int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
int *got_picture_ptr,
AVPacket *avpkt);
#if FF_API_SUBTITLE_OLD
/* Decode a subtitle message. Return -1 if error, otherwise return the
* number of bytes used. If no subtitle could be decompressed,
* got_sub_ptr is zero. Otherwise, the subtitle is stored in *sub. */
attribute_deprecated int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub,
int *got_sub_ptr,
const uint8_t *buf, int buf_size);
#endif
/**
* Decode a subtitle message.
* Return a negative value on error, otherwise return the number of bytes used.
@@ -4067,6 +4253,15 @@ AVCodecParser *av_parser_next(AVCodecParser *c);
void av_register_codec_parser(AVCodecParser *parser);
AVCodecParserContext *av_parser_init(int codec_id);
#if LIBAVCODEC_VERSION_MAJOR < 53
attribute_deprecated
int av_parser_parse(AVCodecParserContext *s,
AVCodecContext *avctx,
uint8_t **poutbuf, int *poutbuf_size,
const uint8_t *buf, int buf_size,
int64_t pts, int64_t dts);
#endif
/**
* Parse a packet.
*
@@ -4145,7 +4340,7 @@ AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f);
*
* @see av_realloc
*/
void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size);
void *av_fast_realloc(void *ptr, unsigned int *size, FF_INTERNALC_MEM_TYPE min_size);
/**
* Allocate a buffer, reusing the given one if large enough.
@@ -4159,7 +4354,17 @@ void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size);
* @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and
* *size 0 if an error occurred.
*/
void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size);
void av_fast_malloc(void *ptr, unsigned int *size, FF_INTERNALC_MEM_TYPE min_size);
#if LIBAVCODEC_VERSION_MAJOR < 53
/**
* @deprecated Deprecated in favor of av_image_copy().
*/
attribute_deprecated
void av_picture_data_copy(uint8_t *dst_data[4], int dst_linesize[4],
uint8_t *src_data[4], int src_linesize[4],
enum PixelFormat pix_fmt, int width, int height);
#endif
/**
* Copy image src to dst. Wraps av_picture_data_copy() above.
@@ -4188,6 +4393,22 @@ int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width,
*/
unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
#if LIBAVCODEC_VERSION_MAJOR < 53
/**
* Parse str and put in width_ptr and height_ptr the detected values.
*
* @deprecated Deprecated in favor of av_parse_video_size().
*/
attribute_deprecated int av_parse_video_frame_size(int *width_ptr, int *height_ptr, const char *str);
/**
* Parse str and store the detected values in *frame_rate.
*
* @deprecated Deprecated in favor of av_parse_video_rate().
*/
attribute_deprecated int av_parse_video_frame_rate(AVRational *frame_rate, const char *str);
#endif
/**
* Logs a generic warning message about a missing feature. This function is
* intended to be used internally by FFmpeg (libavcodec, libavformat, etc.)

View File

@@ -26,21 +26,12 @@
void av_destruct_packet_nofree(AVPacket *pkt)
{
pkt->data = NULL; pkt->size = 0;
pkt->side_data = NULL;
pkt->side_data_elems = 0;
}
void av_destruct_packet(AVPacket *pkt)
{
int i;
av_free(pkt->data);
pkt->data = NULL; pkt->size = 0;
for (i = 0; i < pkt->side_data_elems; i++)
av_free(pkt->side_data[i].data);
av_freep(&pkt->side_data);
pkt->side_data_elems = 0;
}
void av_init_packet(AVPacket *pkt)
@@ -53,8 +44,6 @@ void av_init_packet(AVPacket *pkt)
pkt->flags = 0;
pkt->stream_index = 0;
pkt->destruct= NULL;
pkt->side_data = NULL;
pkt->side_data_elems = 0;
}
int av_new_packet(AVPacket *pkt, int size)
@@ -100,52 +89,23 @@ int av_grow_packet(AVPacket *pkt, int grow_by)
return 0;
}
#define DUP_DATA(dst, src, size, padding) \
do { \
void *data; \
if (padding) { \
if ((unsigned)(size) > (unsigned)(size) + FF_INPUT_BUFFER_PADDING_SIZE) \
goto failed_alloc; \
data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); \
} else { \
data = av_malloc(size); \
} \
if (!data) \
goto failed_alloc; \
memcpy(data, src, size); \
if (padding) \
memset((uint8_t*)data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE); \
dst = data; \
} while(0)
int av_dup_packet(AVPacket *pkt)
{
AVPacket tmp_pkt;
if (((pkt->destruct == av_destruct_packet_nofree) || (pkt->destruct == NULL)) && pkt->data) {
tmp_pkt = *pkt;
pkt->data = NULL;
pkt->side_data = NULL;
DUP_DATA(pkt->data, tmp_pkt.data, pkt->size, 1);
pkt->destruct = av_destruct_packet;
if (pkt->side_data_elems) {
int i;
DUP_DATA(pkt->side_data, tmp_pkt.side_data,
pkt->side_data_elems * sizeof(*pkt->side_data), 0);
memset(pkt->side_data, 0, pkt->side_data_elems * sizeof(*pkt->side_data));
for (i = 0; i < pkt->side_data_elems; i++) {
DUP_DATA(pkt->side_data[i].data, tmp_pkt.side_data[i].data,
pkt->side_data[i].size, 1);
}
uint8_t *data;
/* We duplicate the packet and don't forget to add the padding again. */
if((unsigned)pkt->size > (unsigned)pkt->size + FF_INPUT_BUFFER_PADDING_SIZE)
return AVERROR(ENOMEM);
data = av_malloc(pkt->size + FF_INPUT_BUFFER_PADDING_SIZE);
if (!data) {
return AVERROR(ENOMEM);
}
memcpy(data, pkt->data, pkt->size);
memset(data + pkt->size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
pkt->data = data;
pkt->destruct = av_destruct_packet;
}
return 0;
failed_alloc:
av_destruct_packet(pkt);
return AVERROR(ENOMEM);
}
void av_free_packet(AVPacket *pkt)
@@ -153,125 +113,6 @@ void av_free_packet(AVPacket *pkt)
if (pkt) {
if (pkt->destruct) pkt->destruct(pkt);
pkt->data = NULL; pkt->size = 0;
pkt->side_data = NULL;
pkt->side_data_elems = 0;
}
}
uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
int size)
{
int elems = pkt->side_data_elems;
if ((unsigned)elems + 1 > INT_MAX / sizeof(*pkt->side_data))
return NULL;
if ((unsigned)size > INT_MAX - FF_INPUT_BUFFER_PADDING_SIZE)
return NULL;
pkt->side_data = av_realloc(pkt->side_data, (elems + 1) * sizeof(*pkt->side_data));
if (!pkt->side_data)
return NULL;
pkt->side_data[elems].data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE);
if (!pkt->side_data[elems].data)
return NULL;
pkt->side_data[elems].size = size;
pkt->side_data[elems].type = type;
pkt->side_data_elems++;
return pkt->side_data[elems].data;
}
uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
int *size)
{
int i;
for (i = 0; i < pkt->side_data_elems; i++) {
if (pkt->side_data[i].type == type) {
if (size)
*size = pkt->side_data[i].size;
return pkt->side_data[i].data;
}
}
return NULL;
}
#define FF_MERGE_MARKER 0x8c4d9d108e25e9feULL
int av_packet_merge_side_data(AVPacket *pkt){
if(pkt->side_data_elems){
int i;
uint8_t *p;
uint64_t size= pkt->size + 8LL + FF_INPUT_BUFFER_PADDING_SIZE;
AVPacket old= *pkt;
for (i=0; i<old.side_data_elems; i++) {
size += old.side_data[i].size + 5LL;
}
if (size > INT_MAX)
return AVERROR(EINVAL);
p = av_malloc(size);
if (!p)
return AVERROR(ENOMEM);
pkt->data = p;
pkt->destruct = av_destruct_packet;
pkt->size = size - FF_INPUT_BUFFER_PADDING_SIZE;
bytestream_put_buffer(&p, old.data, old.size);
for (i=old.side_data_elems-1; i>=0; i--) {
bytestream_put_buffer(&p, old.side_data[i].data, old.side_data[i].size);
bytestream_put_be32(&p, old.side_data[i].size);
*p++ = old.side_data[i].type | ((i==old.side_data_elems-1)*128);
}
bytestream_put_be64(&p, FF_MERGE_MARKER);
av_assert0(p-pkt->data == pkt->size);
memset(p, 0, FF_INPUT_BUFFER_PADDING_SIZE);
av_free_packet(&old);
pkt->side_data_elems = 0;
pkt->side_data = NULL;
return 1;
}
return 0;
}
int av_packet_split_side_data(AVPacket *pkt){
if (!pkt->side_data_elems && pkt->size >12 && AV_RB64(pkt->data + pkt->size - 8) == FF_MERGE_MARKER){
int i;
unsigned int size;
uint8_t *p= pkt->data + pkt->size - 8 - 5;
av_dup_packet(pkt);
for (i=1; ; i++){
size = AV_RB32(p);
if (size>INT_MAX || p - pkt->data <= size)
return 0;
if (p[4]&128)
break;
p-= size+5;
}
pkt->side_data = av_malloc(i * sizeof(*pkt->side_data));
if (!pkt->side_data)
return AVERROR(ENOMEM);
p= pkt->data + pkt->size - 8 - 5;
for (i=0; ; i++){
size= AV_RB32(p);
av_assert0(size<=INT_MAX && p - pkt->data > size);
pkt->side_data[i].data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE);
pkt->side_data[i].size = size;
pkt->side_data[i].type = p[4]&127;
if (!pkt->side_data[i].data)
return AVERROR(ENOMEM);
memcpy(pkt->side_data[i].data, p-size, size);
pkt->size -= size + 5;
if(p[4]&128)
break;
p-= size+5;
}
pkt->size -= 8;
pkt->side_data_elems = i+1;
return 1;
}
return 0;
}

View File

@@ -67,7 +67,6 @@ typedef struct CinepakContext {
int sega_film_skip_bytes;
uint32_t pal[256];
} CinepakContext;
static void cinepak_decode_codebook (cvid_codebook *codebook,
@@ -366,6 +365,8 @@ static int cinepak_decode (CinepakContext *s)
s->strips[i].x2 = s->avctx->width;
strip_size = AV_RB24 (&s->data[1]) - 12;
if(strip_size < 0)
return -1;
s->data += 12;
strip_size = ((s->data + strip_size) > eod) ? (eod - s->data) : strip_size;
@@ -397,7 +398,7 @@ static av_cold int cinepak_decode_init(AVCodecContext *avctx)
s->sega_film_skip_bytes = -1; /* uninitialized state */
// check for paletted data
if (avctx->bits_per_coded_sample != 8) {
if ((avctx->palctrl == NULL) || (avctx->bits_per_coded_sample == 40)) {
s->palette_video = 0;
avctx->pix_fmt = PIX_FMT_YUV420P;
} else {
@@ -430,18 +431,16 @@ static int cinepak_decode_frame(AVCodecContext *avctx,
return -1;
}
if (s->palette_video) {
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
if (pal) {
s->frame.palette_has_changed = 1;
memcpy(s->pal, pal, AVPALETTE_SIZE);
}
}
cinepak_decode(s);
if (s->palette_video)
memcpy (s->frame.data[1], s->pal, AVPALETTE_SIZE);
if (s->palette_video) {
memcpy (s->frame.data[1], avctx->palctrl->palette, AVPALETTE_SIZE);
if (avctx->palctrl->palette_changed) {
s->frame.palette_has_changed = 1;
avctx->palctrl->palette_changed = 0;
} else
s->frame.palette_has_changed = 0;
}
*data_size = sizeof(AVFrame);
*(AVFrame*)data = s->frame;

View File

@@ -1079,7 +1079,7 @@ static av_cold int cook_decode_init(AVCodecContext *avctx)
q->subpacket[s].subbands = bytestream_get_be16(&edata_ptr);
extradata_size -= 8;
}
if (avctx->extradata_size >= 8){
if (extradata_size >= 8){
bytestream_get_be32(&edata_ptr); //Unknown unused
q->subpacket[s].js_subband_start = bytestream_get_be16(&edata_ptr);
q->subpacket[s].js_vlc_bits = bytestream_get_be16(&edata_ptr);

View File

@@ -120,6 +120,14 @@ void ff_bink_idct_put_c(uint8_t *dest, int linesize, DCTELEM *block);
void ff_ea_idct_put_c(uint8_t *dest, int linesize, DCTELEM *block);
/* 1/2^n downscaling functions from imgconvert.c */
#if LIBAVCODEC_VERSION_MAJOR < 53
/**
* @deprecated Use av_image_copy_plane() instead.
*/
attribute_deprecated
void ff_img_copy_plane(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height);
#endif
void ff_shrink22(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height);
void ff_shrink44(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height);
void ff_shrink88(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height);

View File

@@ -296,6 +296,17 @@ static av_cold int flac_encode_init(AVCodecContext *avctx)
s->options.max_partition_order = ((int[]){ 2, 2, 3, 3, 3, 8, 8, 8, 8, 8, 8, 8, 8})[level];
/* set compression option overrides from AVCodecContext */
#if FF_API_USE_LPC
/* for compatibility with deprecated AVCodecContext.use_lpc */
if (avctx->use_lpc == 0) {
s->options.lpc_type = AV_LPC_TYPE_FIXED;
} else if (avctx->use_lpc == 1) {
s->options.lpc_type = AV_LPC_TYPE_LEVINSON;
} else if (avctx->use_lpc > 1) {
s->options.lpc_type = AV_LPC_TYPE_CHOLESKY;
s->options.lpc_passes = avctx->use_lpc - 1;
}
#endif
#if FF_API_FLAC_GLOBAL_OPTS
if (avctx->lpc_type > FF_LPC_TYPE_DEFAULT) {
if (avctx->lpc_type > FF_LPC_TYPE_CHOLESKY) {

View File

@@ -599,6 +599,10 @@ retry:
s->current_picture.pict_type= s->pict_type;
s->current_picture.key_frame= s->pict_type == AV_PICTURE_TYPE_I;
#if FF_API_HURRY_UP
/* skip everything if we are in a hurry>=5 */
if(avctx->hurry_up>=5) return get_consumed_bytes(s, buf_size);
#endif
if( (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type==AV_PICTURE_TYPE_B)
||(avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type!=AV_PICTURE_TYPE_I)
|| avctx->skip_frame >= AVDISCARD_ALL)

View File

@@ -598,10 +598,18 @@ retry:
/* skip B-frames if we don't have reference frames */
if(s->last_picture_ptr==NULL && (s->pict_type==AV_PICTURE_TYPE_B || s->dropable)) return get_consumed_bytes(s, buf_size);
#if FF_API_HURRY_UP
/* skip b frames if we are in a hurry */
if(avctx->hurry_up && s->pict_type==FF_B_TYPE) return get_consumed_bytes(s, buf_size);
#endif
if( (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type==AV_PICTURE_TYPE_B)
|| (avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type!=AV_PICTURE_TYPE_I)
|| avctx->skip_frame >= AVDISCARD_ALL)
return get_consumed_bytes(s, buf_size);
#if FF_API_HURRY_UP
/* skip everything if we are in a hurry>=5 */
if(avctx->hurry_up>=5) return get_consumed_bytes(s, buf_size);
#endif
if(s->next_p_frame_damaged){
if(s->pict_type==AV_PICTURE_TYPE_B)

View File

@@ -2810,11 +2810,9 @@ static int decode_slice_header(H264Context *h, H264Context *h0){
s0->first_field = FIELD_PICTURE;
} else {
if (h->nal_ref_idc &&
s0->current_picture_ptr->reference &&
s0->current_picture_ptr->frame_num != h->frame_num) {
if (s0->current_picture_ptr->frame_num != h->frame_num) {
/*
* This and previous field were reference, but had
* This and previous field had
* different frame_nums. Consider this field first in
* pair. Throw away previous field except for reference
* purposes.
@@ -3770,7 +3768,11 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){
}
//FIXME do not discard SEI id
if(avctx->skip_frame >= AVDISCARD_NONREF && h->nal_ref_idc == 0)
if(
#if FF_API_HURRY_UP
(s->hurry_up == 1 && h->nal_ref_idc == 0) ||
#endif
(avctx->skip_frame >= AVDISCARD_NONREF && h->nal_ref_idc == 0))
continue;
again:
@@ -3807,6 +3809,9 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){
}
if(hx->redundant_pic_count==0
#if FF_API_HURRY_UP
&& hx->s.hurry_up < 5
#endif
&& (avctx->skip_frame < AVDISCARD_NONREF || hx->nal_ref_idc)
&& (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type_nos!=AV_PICTURE_TYPE_B)
&& (avctx->skip_frame < AVDISCARD_NONKEY || hx->slice_type_nos==AV_PICTURE_TYPE_I)
@@ -3844,6 +3849,9 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){
if(hx->redundant_pic_count==0 && hx->intra_gb_ptr && hx->s.data_partitioning
&& s->context_initialized
#if FF_API_HURRY_UP
&& s->hurry_up < 5
#endif
&& (avctx->skip_frame < AVDISCARD_NONREF || hx->nal_ref_idc)
&& (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type_nos!=AV_PICTURE_TYPE_B)
&& (avctx->skip_frame < AVDISCARD_NONKEY || hx->slice_type_nos==AV_PICTURE_TYPE_I)
@@ -3982,7 +3990,11 @@ static int decode_frame(AVCodecContext *avctx,
}
if(!(s->flags2 & CODEC_FLAG2_CHUNKS) && !s->current_picture_ptr){
if (avctx->skip_frame >= AVDISCARD_NONREF)
if (avctx->skip_frame >= AVDISCARD_NONREF
#if FF_API_HURRY_UP
|| s->hurry_up
#endif
)
return 0;
av_log(avctx, AV_LOG_ERROR, "no frame!\n");
return -1;

View File

@@ -1075,7 +1075,7 @@ static void fill_decode_caches(H264Context *h, int mb_type){
AV_ZERO32(h->mv_cache [list][scan8[0] + 4 - 1*8]);
h->ref_cache[list][scan8[0] + 4 - 1*8]= topright_type ? LIST_NOT_USED : PART_NOT_AVAILABLE;
}
if(h->ref_cache[list][scan8[0] + 4 - 1*8] < 0){
if(h->ref_cache[list][scan8[0] + 2 - 1*8] < 0 || h->ref_cache[list][scan8[0] + 4 - 1*8] < 0){
if(USES_LIST(topleft_type, list)){
const int b_xy = h->mb2b_xy [topleft_xy] + 3 + h->b_stride + (h->topleft_partition & 2*h->b_stride);
const int b8_xy= 4*topleft_xy + 1 + (h->topleft_partition & 2);

View File

@@ -253,6 +253,10 @@ static void pred_spatial_direct_motion(H264Context * const h, int *mb_type){
mb_type_col[1] = h->ref_list[1][0].mb_type[mb_xy + s->mb_stride];
b8_stride = 2+4*s->mb_stride;
b4_stride *= 6;
if(IS_INTERLACED(mb_type_col[0]) != IS_INTERLACED(mb_type_col[1])){
mb_type_col[0] &= ~MB_TYPE_INTERLACED;
mb_type_col[1] &= ~MB_TYPE_INTERLACED;
}
sub_mb_type |= MB_TYPE_16x16|MB_TYPE_DIRECT2; /* B_SUB_8x8 */
if( (mb_type_col[0] & MB_TYPE_16x16_OR_INTRA)

View File

@@ -342,6 +342,10 @@ int ff_h264_decode_seq_parameter_set(H264Context *h){
if(sps->profile_idc >= 100){ //high profile
sps->chroma_format_idc= get_ue_golomb_31(&s->gb);
if (sps->chroma_format_idc > 3U) {
av_log(h->s.avctx, AV_LOG_ERROR, "chroma_format_idc %d is illegal\n", sps->chroma_format_idc);
goto fail;
}
if(sps->chroma_format_idc == 3)
sps->residual_color_transform_flag = get_bits1(&s->gb);
sps->bit_depth_luma = get_ue_golomb(&s->gb) + 8;

View File

@@ -72,7 +72,6 @@ typedef struct IdcinContext {
hnode huff_nodes[256][HUF_TOKENS*2];
int num_huff_nodes[256];
uint32_t pal[256];
} IdcinContext;
/*
@@ -215,7 +214,7 @@ static int idcin_decode_frame(AVCodecContext *avctx,
const uint8_t *buf = avpkt->data;
int buf_size = avpkt->size;
IdcinContext *s = avctx->priv_data;
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
AVPaletteControl *palette_control = avctx->palctrl;
s->buf = buf;
s->size = buf_size;
@@ -230,12 +229,13 @@ static int idcin_decode_frame(AVCodecContext *avctx,
idcin_decode_vlcs(s);
if (pal) {
s->frame.palette_has_changed = 1;
memcpy(s->pal, pal, AVPALETTE_SIZE);
}
/* make the palette available on the way out */
memcpy(s->frame.data[1], s->pal, AVPALETTE_SIZE);
memcpy(s->frame.data[1], palette_control->palette, PALETTE_COUNT * 4);
/* If palette changed inform application*/
if (palette_control->palette_changed) {
palette_control->palette_changed = 0;
s->frame.palette_has_changed = 1;
}
*data_size = sizeof(AVFrame);
*(AVFrame*)data = s->frame;

View File

@@ -424,11 +424,40 @@ const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt)
}
#endif
#if LIBAVCODEC_VERSION_MAJOR < 53
enum PixelFormat avcodec_get_pix_fmt(const char *name)
{
return av_get_pix_fmt(name);
}
void avcodec_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt)
{
av_get_pix_fmt_string(buf, buf_size, pix_fmt);
}
#endif
int ff_is_hwaccel_pix_fmt(enum PixelFormat pix_fmt)
{
return av_pix_fmt_descriptors[pix_fmt].flags & PIX_FMT_HWACCEL;
}
#if LIBAVCODEC_VERSION_MAJOR < 53
int ff_set_systematic_pal(uint32_t pal[256], enum PixelFormat pix_fmt){
return ff_set_systematic_pal2(pal, pix_fmt);
}
int ff_fill_linesize(AVPicture *picture, enum PixelFormat pix_fmt, int width)
{
return av_image_fill_linesizes(picture->linesize, pix_fmt, width);
}
int ff_fill_pointer(AVPicture *picture, uint8_t *ptr, enum PixelFormat pix_fmt,
int height)
{
return av_image_fill_pointers(picture->data, pix_fmt, height, ptr, picture->linesize);
}
#endif
int avpicture_fill(AVPicture *picture, uint8_t *ptr,
enum PixelFormat pix_fmt, int width, int height)
{
@@ -673,6 +702,28 @@ enum PixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum PixelForma
return dst_pix_fmt;
}
#if LIBAVCODEC_VERSION_MAJOR < 53
void ff_img_copy_plane(uint8_t *dst, int dst_wrap,
const uint8_t *src, int src_wrap,
int width, int height)
{
av_image_copy_plane(dst, dst_wrap, src, src_wrap, width, height);
}
int ff_get_plane_bytewidth(enum PixelFormat pix_fmt, int width, int plane)
{
return av_image_get_linesize(pix_fmt, width, plane);
}
void av_picture_data_copy(uint8_t *dst_data[4], int dst_linesize[4],
uint8_t *src_data[4], int src_linesize[4],
enum PixelFormat pix_fmt, int width, int height)
{
av_image_copy(dst_data, dst_linesize, src_data, src_linesize,
pix_fmt, width, height);
}
#endif
void av_picture_copy(AVPicture *dst, const AVPicture *src,
enum PixelFormat pix_fmt, int width, int height)
{

View File

@@ -69,7 +69,6 @@ typedef struct IpvideoContext {
int stride;
int upper_motion_limit_offset;
uint32_t pal[256];
} IpvideoContext;
#define CHECK_STREAM_PTR(stream_ptr, stream_end, n) \
@@ -962,7 +961,7 @@ static void ipvideo_decode_opcodes(IpvideoContext *s)
if (!s->is_16bpp) {
/* this is PAL8, so make the palette available */
memcpy(s->current_frame.data[1], s->pal, AVPALETTE_SIZE);
memcpy(s->current_frame.data[1], s->avctx->palctrl->palette, PALETTE_COUNT * 4);
s->stride = s->current_frame.linesize[0];
s->stream_ptr = s->buf + 14; /* data starts 14 bytes in */
@@ -1016,6 +1015,10 @@ static av_cold int ipvideo_decode_init(AVCodecContext *avctx)
s->is_16bpp = avctx->bits_per_coded_sample == 16;
avctx->pix_fmt = s->is_16bpp ? PIX_FMT_RGB555 : PIX_FMT_PAL8;
if (!s->is_16bpp && s->avctx->palctrl == NULL) {
av_log(avctx, AV_LOG_ERROR, " Interplay video: palette expected.\n");
return -1;
}
dsputil_init(&s->dsp, avctx);
@@ -1038,6 +1041,7 @@ static int ipvideo_decode_frame(AVCodecContext *avctx,
const uint8_t *buf = avpkt->data;
int buf_size = avpkt->size;
IpvideoContext *s = avctx->priv_data;
AVPaletteControl *palette_control = avctx->palctrl;
/* compressed buffer needs to be large enough to at least hold an entire
* decoding map */
@@ -1054,16 +1058,13 @@ static int ipvideo_decode_frame(AVCodecContext *avctx,
return -1;
}
if (!s->is_16bpp) {
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
if (pal) {
s->current_frame.palette_has_changed = 1;
memcpy(s->pal, pal, AVPALETTE_SIZE);
}
}
ipvideo_decode_opcodes(s);
if (!s->is_16bpp && palette_control->palette_changed) {
palette_control->palette_changed = 0;
s->current_frame.palette_has_changed = 1;
}
*data_size = sizeof(AVFrame);
*(AVFrame*)data = s->current_frame;

View File

@@ -321,7 +321,7 @@ int ff_j2k_dwt_init(DWTContext *s, uint16_t border[2][2], int decomp_levels, int
int i, j, lev = decomp_levels, maxlen,
b[2][2];
if (decomp_levels >= FF_DWT_MAX_DECLVLS)
if ((unsigned)decomp_levels >= FF_DWT_MAX_DECLVLS)
return AVERROR_INVALIDDATA;
s->ndeclevels = decomp_levels;
s->type = type;

View File

@@ -359,7 +359,7 @@ static int get_qcx(J2kDecoderContext *s, int n, J2kQuantStyle *q)
if (q->quantsty == J2K_QSTY_NONE){
n -= 3;
if (s->buf_end - s->buf < n)
if (s->buf_end - s->buf < n || 32*3 < n)
return AVERROR(EINVAL);
for (i = 0; i < n; i++)
q->expn[i] = bytestream_get_byte(&s->buf) >> 3;
@@ -376,7 +376,7 @@ static int get_qcx(J2kDecoderContext *s, int n, J2kQuantStyle *q)
}
} else{
n = (n - 3) >> 1;
if (s->buf_end - s->buf < n)
if (s->buf_end - s->buf < n || 32*3 < n)
return AVERROR(EINVAL);
for (i = 0; i < n; i++){
x = bytestream_get_be16(&s->buf);
@@ -421,6 +421,10 @@ static uint8_t get_sot(J2kDecoderContext *s)
return AVERROR(EINVAL);
s->curtileno = bytestream_get_be16(&s->buf); ///< Isot
if((unsigned)s->curtileno >= s->numXtiles * s->numYtiles){
s->curtileno=0;
return AVERROR(EINVAL);
}
s->buf += 4; ///< Psot (ignored)

View File

@@ -233,7 +233,6 @@ static int decode_frame(AVCodecContext * avctx, void *data, int *data_size, AVPa
int i;
int header;
int blocksize;
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
if (ctx->pic.data[0])
avctx->release_buffer(avctx, &ctx->pic);
@@ -265,6 +264,13 @@ static int decode_frame(AVCodecContext * avctx, void *data, int *data_size, AVPa
ctx->pic.pict_type = AV_PICTURE_TYPE_P;
}
/* if palette has been changed, copy it from palctrl */
if (ctx->avctx->palctrl && ctx->avctx->palctrl->palette_changed) {
memcpy(ctx->pal, ctx->avctx->palctrl->palette, AVPALETTE_SIZE);
ctx->setpal = 1;
ctx->avctx->palctrl->palette_changed = 0;
}
if (header & KMVC_PALETTE) {
ctx->pic.palette_has_changed = 1;
// palette starts from index 1 and has 127 entries
@@ -273,11 +279,6 @@ static int decode_frame(AVCodecContext * avctx, void *data, int *data_size, AVPa
}
}
if (pal) {
ctx->pic.palette_has_changed = 1;
memcpy(ctx->pal, pal, AVPALETTE_SIZE);
}
if (ctx->setpal) {
ctx->setpal = 0;
ctx->pic.palette_has_changed = 1;
@@ -373,6 +374,9 @@ static av_cold int decode_init(AVCodecContext * avctx)
src += 4;
}
c->setpal = 1;
if (c->avctx->palctrl) {
c->avctx->palctrl->palette_changed = 0;
}
}
avcodec_get_frame_defaults(&c->pic);

View File

@@ -63,9 +63,7 @@ static av_cold int aacPlus_encode_init(AVCodecContext *avctx)
aacplus_cfg->bitRate = avctx->bit_rate;
aacplus_cfg->bandWidth = avctx->cutoff;
if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER) {
aacplus_cfg->outputFormat = 0; //raw aac
}
aacplus_cfg->outputFormat = !(avctx->flags & CODEC_FLAG_GLOBAL_HEADER);
aacplus_cfg->inputFormat = AACPLUS_INPUT_16BIT;
if (!aacplusEncSetConfiguration(s->aacplus_handle, aacplus_cfg)) {
av_log(avctx, AV_LOG_ERROR, "libaacplus doesn't support this output format!\n");

View File

@@ -2475,10 +2475,18 @@ static int decode_chunks(AVCodecContext *avctx,
/* Skip P-frames if we do not have a reference frame or we have an invalid header. */
if(s2->pict_type==AV_PICTURE_TYPE_P && !s->sync) break;
}
#if FF_API_HURRY_UP
/* Skip B-frames if we are in a hurry. */
if(avctx->hurry_up && s2->pict_type==FF_B_TYPE) break;
#endif
if( (avctx->skip_frame >= AVDISCARD_NONREF && s2->pict_type==AV_PICTURE_TYPE_B)
||(avctx->skip_frame >= AVDISCARD_NONKEY && s2->pict_type!=AV_PICTURE_TYPE_I)
|| avctx->skip_frame >= AVDISCARD_ALL)
break;
#if FF_API_HURRY_UP
/* Skip everything if we are in a hurry>=5. */
if(avctx->hurry_up>=5) break;
#endif
if (!s->mpeg_enc_ctx_allocated) break;

View File

@@ -1139,6 +1139,9 @@ int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
}
}
#if FF_API_HURRY_UP
s->hurry_up= s->avctx->hurry_up;
#endif
s->error_recognition= avctx->error_recognition;
/* set dequantizer, we can't do it during init as it might change for mpeg4
@@ -2148,6 +2151,9 @@ void MPV_decode_mb_internal(MpegEncContext *s, DCTELEM block[12][64],
}
/* skip dequant / idct if we are really late ;) */
#if FF_API_HURRY_UP
if(s->hurry_up>1) goto skip_idct;
#endif
if(s->avctx->skip_idct){
if( (s->avctx->skip_idct >= AVDISCARD_NONREF && s->pict_type == AV_PICTURE_TYPE_B)
||(s->avctx->skip_idct >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I)

View File

@@ -392,6 +392,11 @@ typedef struct MpegEncContext {
int no_rounding; /**< apply no rounding to motion compensation (MPEG4, msmpeg4, ...)
for b-frames rounding mode is always 0 */
#if FF_API_HURRY_UP
int hurry_up; /**< when set to 1 during decoding, b frames will be skipped
when set to 2 idct/dequant will be skipped too */
#endif
/* macroblock layer */
int mb_x, mb_y;
int mb_skip_run;

View File

@@ -725,7 +725,7 @@ static av_always_inline void MPV_motion_internal(MpegEncContext *s,
0, 0, 0,
ref_picture, pix_op, qpix_op,
s->mv[dir][0][0], s->mv[dir][0][1], 16);
}else if(!is_mpeg12 && (CONFIG_WMV2_DECODER || CONFIG_WMV2_ENCODER) && s->mspel){
}else if(!is_mpeg12 && (CONFIG_WMV2_DECODER || CONFIG_WMV2_ENCODER) && s->mspel && s->codec_id == CODEC_ID_WMV2){
ff_mspel_motion(s, dest_y, dest_cb, dest_cr,
ref_picture, pix_op,
s->mv[dir][0][0], s->mv[dir][0][1], 16);

View File

@@ -973,7 +973,7 @@ static int estimate_best_b_count(MpegEncContext *s){
c->time_base= s->avctx->time_base;
c->max_b_frames= s->max_b_frames;
if (avcodec_open(c, codec) < 0)
if (avcodec_open2(c, codec, NULL) < 0)
return -1;
for(i=0; i<s->max_b_frames+2; i++){

View File

@@ -26,6 +26,9 @@
* http://www.pcisys.net/~melanson/codecs/
*
* The MS RLE decoder outputs PAL8 colorspace data.
*
* Note that this decoder expects the palette colors from the end of the
* BITMAPINFO header passed through palctrl.
*/
#include <stdio.h>
@@ -43,7 +46,6 @@ typedef struct MsrleContext {
const unsigned char *buf;
int size;
uint32_t pal[256];
} MsrleContext;
static av_cold int msrle_decode_init(AVCodecContext *avctx)
@@ -93,16 +95,13 @@ static int msrle_decode_frame(AVCodecContext *avctx,
return -1;
}
if (avctx->bits_per_coded_sample > 1 && avctx->bits_per_coded_sample <= 8) {
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
if (pal) {
s->frame.palette_has_changed = 1;
memcpy(s->pal, pal, AVPALETTE_SIZE);
}
if (s->avctx->palctrl) {
/* make the palette available */
memcpy(s->frame.data[1], s->pal, AVPALETTE_SIZE);
memcpy(s->frame.data[1], s->avctx->palctrl->palette, AVPALETTE_SIZE);
if (s->avctx->palctrl->palette_changed) {
s->frame.palette_has_changed = 1;
s->avctx->palctrl->palette_changed = 0;
}
}
/* FIXME how to correctly detect RLE ??? */

View File

@@ -25,6 +25,9 @@
* For more information about the MS Video-1 format, visit:
* http://www.pcisys.net/~melanson/codecs/
*
* This decoder outputs either PAL8 or RGB555 data, depending on the
* whether a RGB palette was passed through palctrl;
* if it's present, then the data is PAL8; RGB555 otherwise.
*/
#include <stdio.h>
@@ -52,7 +55,6 @@ typedef struct Msvideo1Context {
int mode_8bit; /* if it's not 8-bit, it's 16-bit */
uint32_t pal[256];
} Msvideo1Context;
static av_cold int msvideo1_decode_init(AVCodecContext *avctx)
@@ -62,7 +64,7 @@ static av_cold int msvideo1_decode_init(AVCodecContext *avctx)
s->avctx = avctx;
/* figure out the colorspace based on the presence of a palette */
if (s->avctx->bits_per_coded_sample == 8) {
if (s->avctx->palctrl) {
s->mode_8bit = 1;
avctx->pix_fmt = PIX_FMT_PAL8;
} else {
@@ -172,8 +174,13 @@ static void msvideo1_decode_8bit(Msvideo1Context *s)
}
/* make the palette available on the way out */
if (s->avctx->pix_fmt == PIX_FMT_PAL8)
memcpy(s->frame.data[1], s->pal, AVPALETTE_SIZE);
if (s->avctx->pix_fmt == PIX_FMT_PAL8) {
memcpy(s->frame.data[1], s->avctx->palctrl->palette, AVPALETTE_SIZE);
if (s->avctx->palctrl->palette_changed) {
s->frame.palette_has_changed = 1;
s->avctx->palctrl->palette_changed = 0;
}
}
}
static void msvideo1_decode_16bit(Msvideo1Context *s)
@@ -303,15 +310,6 @@ static int msvideo1_decode_frame(AVCodecContext *avctx,
return -1;
}
if (s->mode_8bit) {
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
if (pal) {
memcpy(s->pal, pal, AVPALETTE_SIZE);
s->frame.palette_has_changed = 1;
}
}
if (s->mode_8bit)
msvideo1_decode_8bit(s);
else

View File

@@ -20,6 +20,7 @@
*/
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include "libavutil/bswap.h"
#include "libavutil/lzo.h"
@@ -112,19 +113,23 @@ static int codec_reinit(AVCodecContext *avctx, int width, int height, int qualit
if (quality >= 0)
get_quant_quality(c, quality);
if (width != c->width || height != c->height) {
if (av_image_check_size(height, width, 0, avctx) < 0)
return 0;
// also reserve space for a possible additional header
int buf_size = 24 + height * width * 3 / 2 + AV_LZO_OUTPUT_PADDING;
if (av_image_check_size(height, width, 0, avctx) < 0 ||
buf_size > INT_MAX/8)
return -1;
avctx->width = c->width = width;
avctx->height = c->height = height;
av_fast_malloc(&c->decomp_buf, &c->decomp_size, c->height * c->width * 3 / 2);
av_fast_malloc(&c->decomp_buf, &c->decomp_size, buf_size);
if (!c->decomp_buf) {
av_log(avctx, AV_LOG_ERROR, "Can't allocate decompression buffer.\n");
return 0;
return AVERROR(ENOMEM);
}
rtjpeg_decode_init(&c->rtj, &c->dsp, c->width, c->height, c->lq, c->cq);
return 1;
} else if (quality != c->quality)
rtjpeg_decode_init(&c->rtj, &c->dsp, c->width, c->height, c->lq, c->cq);
return 1;
return 0;
}
static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
@@ -135,6 +140,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
AVFrame *picture = data;
int orig_size = buf_size;
int keyframe;
int size_change = 0;
int result;
enum {NUV_UNCOMPRESSED = '0', NUV_RTJPEG = '1',
NUV_RTJPEG_IN_LZO = '2', NUV_LZO = '3',
@@ -172,18 +178,19 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
default:
keyframe = 1; break;
}
retry:
// skip rest of the frameheader.
buf = &buf[12];
buf_size -= 12;
if (comptype == NUV_RTJPEG_IN_LZO || comptype == NUV_LZO) {
int outlen = c->decomp_size, inlen = buf_size;
int outlen = c->decomp_size - AV_LZO_OUTPUT_PADDING, inlen = buf_size;
if (av_lzo1x_decode(c->decomp_buf, &outlen, buf, &inlen))
av_log(avctx, AV_LOG_ERROR, "error during lzo decompression\n");
buf = c->decomp_buf;
buf_size = c->decomp_size;
buf_size = c->decomp_size - AV_LZO_OUTPUT_PADDING;
}
if (c->codec_frameheader) {
int w, h, q;
int w, h, q, res;
if (buf_size < 12) {
av_log(avctx, AV_LOG_ERROR, "invalid nuv video frame\n");
return -1;
@@ -191,13 +198,20 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
w = AV_RL16(&buf[6]);
h = AV_RL16(&buf[8]);
q = buf[10];
if (!codec_reinit(avctx, w, h, q))
return -1;
res = codec_reinit(avctx, w, h, q);
if (res < 0)
return res;
if (res) {
buf = avpkt->data;
buf_size = avpkt->size;
size_change = 1;
goto retry;
}
buf = &buf[12];
buf_size -= 12;
}
if (keyframe && c->pic.data[0])
if ((size_change || keyframe) && c->pic.data[0])
avctx->release_buffer(avctx, &c->pic);
c->pic.reference = 3;
c->pic.buffer_hints = FF_BUFFER_HINTS_VALID | FF_BUFFER_HINTS_READABLE |
@@ -259,7 +273,7 @@ static av_cold int decode_init(AVCodecContext *avctx) {
if (avctx->extradata_size)
get_quant(avctx, c, avctx->extradata, avctx->extradata_size);
dsputil_init(&c->dsp, avctx);
if (!codec_reinit(avctx, avctx->width, avctx->height, -1))
if (codec_reinit(avctx, avctx->width, avctx->height, -1) < 0)
return 1;
return 0;
}

89
libavcodec/opt.c Normal file
View File

@@ -0,0 +1,89 @@
/*
* AVOptions ABI compatibility wrapper
* Copyright (c) 2010 Michael Niedermayer <michaelni@gmx.at>
*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav 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.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "avcodec.h"
#include "opt.h"
#if LIBAVCODEC_VERSION_MAJOR < 53 && CONFIG_SHARED && HAVE_SYMVER
FF_SYMVER(const AVOption *, av_find_opt, (void *obj, const char *name, const char *unit, int mask, int flags), "LIBAVCODEC_52"){
return av_find_opt(obj, name, unit, mask, flags);
}
FF_SYMVER(int, av_set_string3, (void *obj, const char *name, const char *val, int alloc, const AVOption **o_out), "LIBAVCODEC_52"){
return av_set_string3(obj, name, val, alloc, o_out);
}
FF_SYMVER(const AVOption *, av_set_double, (void *obj, const char *name, double n), "LIBAVCODEC_52"){
return av_set_double(obj, name, n);
}
FF_SYMVER(const AVOption *, av_set_q, (void *obj, const char *name, AVRational n), "LIBAVCODEC_52"){
return av_set_q(obj, name, n);
}
FF_SYMVER(const AVOption *, av_set_int, (void *obj, const char *name, int64_t n), "LIBAVCODEC_52"){
return av_set_int(obj, name, n);
}
FF_SYMVER(double, av_get_double, (void *obj, const char *name, const AVOption **o_out), "LIBAVCODEC_52"){
return av_get_double(obj, name, o_out);
}
FF_SYMVER(AVRational, av_get_q, (void *obj, const char *name, const AVOption **o_out), "LIBAVCODEC_52"){
return av_get_q(obj, name, o_out);
}
FF_SYMVER(int64_t, av_get_int, (void *obj, const char *name, const AVOption **o_out), "LIBAVCODEC_52"){
return av_get_int(obj, name, o_out);
}
FF_SYMVER(const char *, av_get_string, (void *obj, const char *name, const AVOption **o_out, char *buf, int buf_len), "LIBAVCODEC_52"){
return av_get_string(obj, name, o_out, buf, buf_len);
}
FF_SYMVER(const AVOption *, av_next_option, (void *obj, const AVOption *last), "LIBAVCODEC_52"){
return av_next_option(obj, last);
}
FF_SYMVER(int, av_opt_show2, (void *obj, void *av_log_obj, int req_flags, int rej_flags), "LIBAVCODEC_52"){
return av_opt_show2(obj, av_log_obj, req_flags, rej_flags);
}
FF_SYMVER(void, av_opt_set_defaults, (void *s), "LIBAVCODEC_52"){
return av_opt_set_defaults(s);
}
FF_SYMVER(void, av_opt_set_defaults2, (void *s, int mask, int flags), "LIBAVCODEC_52"){
return av_opt_set_defaults2(s, mask, flags);
}
#endif
#if FF_API_SET_STRING_OLD
const AVOption *av_set_string2(void *obj, const char *name, const char *val, int alloc){
const AVOption *o;
if (av_set_string3(obj, name, val, alloc, &o) < 0)
return NULL;
return o;
}
const AVOption *av_set_string(void *obj, const char *name, const char *val){
const AVOption *o;
if (av_set_string3(obj, name, val, 0, &o) < 0)
return NULL;
return o;
}
#endif
#if FF_API_OPT_SHOW
int av_opt_show(void *obj, void *av_log_obj){
return av_opt_show2(obj, av_log_obj,
AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0);
}
#endif

View File

@@ -1,18 +1,21 @@
/*
* This file is part of Libav.
* AVOptions
* copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
*
* Libav is free software; you can redistribute it and/or
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* 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.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@@ -25,10 +28,34 @@
#ifndef AVCODEC_OPT_H
#define AVCODEC_OPT_H
#include "libavcodec/version.h"
/**
* @file
* AVOptions
*/
#if FF_API_OPT_H
#include "libavutil/rational.h"
#include "avcodec.h"
#include "libavutil/opt.h"
#if FF_API_SET_STRING_OLD
/**
* @see av_set_string2()
*/
attribute_deprecated const AVOption *av_set_string(void *obj, const char *name, const char *val);
/**
* @return a pointer to the AVOption corresponding to the field set or
* NULL if no matching AVOption exists, or if the value val is not
* valid
* @see av_set_string3()
*/
attribute_deprecated const AVOption *av_set_string2(void *obj, const char *name, const char *val, int alloc);
#endif
#if FF_API_OPT_SHOW
/**
* @deprecated Use av_opt_show2() instead.
*/
attribute_deprecated int av_opt_show(void *obj, void *av_log_obj);
#endif
#endif /* AVCODEC_OPT_H */

View File

@@ -438,6 +438,7 @@ static const AVOption options[]={
{"crf_max", "in crf mode, prevents vbv from lowering quality beyond this point", OFFSET(crf_max), FF_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, 0, 51, V|E},
{"log_level_offset", "set the log level offset", OFFSET(log_level_offset), FF_OPT_TYPE_INT, {.dbl = 0 }, INT_MIN, INT_MAX },
#if FF_API_FLAC_GLOBAL_OPTS
{"use_lpc", "sets whether to use LPC mode (FLAC)", OFFSET(use_lpc), FF_OPT_TYPE_INT, {.dbl = -1 }, INT_MIN, INT_MAX, A|E},
{"lpc_type", "deprecated, use flac-specific options", OFFSET(lpc_type), FF_OPT_TYPE_INT, {.dbl = AV_LPC_TYPE_DEFAULT }, AV_LPC_TYPE_DEFAULT, AV_LPC_TYPE_NB-1, A|E},
{"none", NULL, 0, FF_OPT_TYPE_CONST, {.dbl = AV_LPC_TYPE_NONE }, INT_MIN, INT_MAX, A|E, "lpc_type"},
{"fixed", NULL, 0, FF_OPT_TYPE_CONST, {.dbl = AV_LPC_TYPE_FIXED }, INT_MIN, INT_MAX, A|E, "lpc_type"},

View File

@@ -105,6 +105,43 @@ void ff_fetch_timestamp(AVCodecParserContext *s, int off, int remove){
}
}
#if LIBAVCODEC_VERSION_MAJOR < 53
/**
*
* @param buf input
* @param buf_size input length, to signal EOF, this should be 0 (so that the last frame can be output)
* @param pts input presentation timestamp
* @param dts input decoding timestamp
* @param poutbuf will contain a pointer to the first byte of the output frame
* @param poutbuf_size will contain the length of the output frame
* @return the number of bytes of the input bitstream used
*
* Example:
* @code
* while(in_len){
* len = av_parser_parse(myparser, AVCodecContext, &data, &size,
* in_data, in_len,
* pts, dts);
* in_data += len;
* in_len -= len;
*
* if(size)
* decode_frame(data, size);
* }
* @endcode
*
* @deprecated Use av_parser_parse2() instead.
*/
int av_parser_parse(AVCodecParserContext *s,
AVCodecContext *avctx,
uint8_t **poutbuf, int *poutbuf_size,
const uint8_t *buf, int buf_size,
int64_t pts, int64_t dts)
{
return av_parser_parse2(s, avctx, poutbuf, poutbuf_size, buf, buf_size, pts, dts, AV_NOPTS_VALUE);
}
#endif
int av_parser_parse2(AVCodecParserContext *s,
AVCodecContext *avctx,
uint8_t **poutbuf, int *poutbuf_size,

View File

@@ -471,7 +471,8 @@ static int decode_frame(AVCodecContext *avctx,
avctx->pix_fmt = PIX_FMT_MONOBLACK;
} else if (s->color_type == PNG_COLOR_TYPE_PALETTE) {
avctx->pix_fmt = PIX_FMT_PAL8;
} else if (s->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
} else if (s->bit_depth == 8 &&
s->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
avctx->pix_fmt = PIX_FMT_GRAY8A;
} else {
goto fail;

View File

@@ -383,6 +383,9 @@ static void update_context_from_user(AVCodecContext *dst, AVCodecContext *src)
dst->release_buffer = src->release_buffer;
dst->opaque = src->opaque;
#if FF_API_HURRY_UP
dst->hurry_up = src->hurry_up;
#endif
dst->dsp_mask = src->dsp_mask;
dst->debug = src->debug;
dst->debug_mv = src->debug_mv;

View File

@@ -76,6 +76,7 @@ do { \
#define SAMPLES_NEEDED_2(why) \
av_log (NULL,AV_LOG_INFO,"This file triggers some missing code. Please contact the developers.\nPosition: %s\n",why);
#define QDM2_MAX_FRAME_SIZE 512
typedef int8_t sb_int8_array[2][30][64];
@@ -168,7 +169,7 @@ typedef struct {
/// I/O data
const uint8_t *compressed_data;
int compressed_size;
float output_buffer[1024];
float output_buffer[QDM2_MAX_FRAME_SIZE * MPA_MAX_CHANNELS * 2];
/// Synthesis filter
MPADSPContext mpadsp;
@@ -1327,7 +1328,7 @@ static void qdm2_fft_decode_tones (QDM2Context *q, int duration, GetBitContext *
local_int_10 = 1 << (q->group_order - duration - 1);
offset = 1;
while (1) {
while (get_bits_left(gb)>0) {
if (q->superblocktype_2_3) {
while ((n = qdm2_get_vlc(gb, &vlc_tab_fft_tone_offset[local_int_8], 1, 2)) < 2) {
offset = 1;
@@ -1822,7 +1823,8 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx)
// something like max decodable tones
s->group_order = av_log2(s->group_size) + 1;
s->frame_size = s->group_size / 16; // 16 iterations per super block
if (s->frame_size > FF_ARRAY_ELEMS(s->output_buffer) / 2)
if (s->frame_size > QDM2_MAX_FRAME_SIZE)
return AVERROR_INVALIDDATA;
s->sub_sampling = s->fft_order - 7;
@@ -1893,6 +1895,9 @@ static int qdm2_decode (QDM2Context *q, const uint8_t *in, int16_t *out)
int ch, i;
const int frame_size = (q->frame_size * q->channels);
if((unsigned)frame_size > FF_ARRAY_ELEMS(q->output_buffer)/2)
return -1;
/* select input buffer */
q->compressed_data = in;
q->compressed_size = q->checksum_size;

View File

@@ -260,7 +260,6 @@ static int decode_frame(AVCodecContext *avctx,
AVFrame * ref= (AVFrame*)&a->ref;
uint8_t* outdata;
int delta;
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
if(ref->data[0])
avctx->release_buffer(avctx, ref);
@@ -280,11 +279,11 @@ static int decode_frame(AVCodecContext *avctx,
}
/* make the palette available on the way out */
if (pal) {
memcpy(a->pic.data[1], a->avctx->palctrl->palette, AVPALETTE_SIZE);
if (a->avctx->palctrl->palette_changed) {
a->pic.palette_has_changed = 1;
memcpy(a->pal, pal, AVPALETTE_SIZE);
a->avctx->palctrl->palette_changed = 0;
}
memcpy(a->pic.data[1], a->pal, AVPALETTE_SIZE);
*data_size = sizeof(AVFrame);
*(AVFrame*)data = a->pic;
@@ -295,6 +294,10 @@ static int decode_frame(AVCodecContext *avctx,
static av_cold int decode_init(AVCodecContext *avctx){
QpegContext * const a = avctx->priv_data;
if (!avctx->palctrl) {
av_log(avctx, AV_LOG_FATAL, "Missing required palette via palctrl\n");
return -1;
}
avcodec_get_frame_defaults(&a->pic);
avcodec_get_frame_defaults(&a->ref);
a->avctx = avctx;

View File

@@ -46,7 +46,6 @@ typedef struct QtrleContext {
const unsigned char *buf;
int size;
uint32_t pal[256];
} QtrleContext;
#define CHECK_STREAM_PTR(n) \
@@ -520,15 +519,12 @@ static int qtrle_decode_frame(AVCodecContext *avctx,
}
if(has_palette) {
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
if (pal) {
s->frame.palette_has_changed = 1;
memcpy(s->pal, pal, AVPALETTE_SIZE);
}
/* make the palette available on the way out */
memcpy(s->frame.data[1], s->pal, AVPALETTE_SIZE);
memcpy(s->frame.data[1], s->avctx->palctrl->palette, AVPALETTE_SIZE);
if (s->avctx->palctrl->palette_changed) {
s->frame.palette_has_changed = 1;
s->avctx->palctrl->palette_changed = 0;
}
}
done:

View File

@@ -184,13 +184,9 @@ static int raw_decode(AVCodecContext *avctx,
(av_pix_fmt_descriptors[avctx->pix_fmt].flags & PIX_FMT_PAL))){
frame->data[1]= context->palette;
}
if (avctx->pix_fmt == PIX_FMT_PAL8) {
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
if (pal) {
memcpy(frame->data[1], pal, AVPALETTE_SIZE);
frame->palette_has_changed = 1;
}
if (avctx->palctrl && avctx->palctrl->palette_changed) {
memcpy(frame->data[1], avctx->palctrl->palette, AVPALETTE_SIZE);
avctx->palctrl->palette_changed = 0;
}
if(avctx->pix_fmt==PIX_FMT_BGR24 && ((frame->linesize[0]+3)&~3)*avctx->height <= buf_size)
frame->linesize[0] = (frame->linesize[0]+3)&~3;

View File

@@ -275,6 +275,17 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
return s;
}
#if FF_API_AUDIO_OLD
ReSampleContext *audio_resample_init(int output_channels, int input_channels,
int output_rate, int input_rate)
{
return av_audio_resample_init(output_channels, input_channels,
output_rate, input_rate,
AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16,
TAPS, 10, 0, 0.8);
}
#endif
/* resample audio. 'nb_samples' is the number of input samples */
/* XXX: optimize it ! */
int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples)

View File

@@ -1464,10 +1464,18 @@ int ff_rv34_decode_frame(AVCodecContext *avctx,
}
if((!s->last_picture_ptr || !s->last_picture_ptr->data[0]) && si.type == AV_PICTURE_TYPE_B)
return -1;
#if FF_API_HURRY_UP
/* skip b frames if we are in a hurry */
if(avctx->hurry_up && si.type==FF_B_TYPE) return buf_size;
#endif
if( (avctx->skip_frame >= AVDISCARD_NONREF && si.type==AV_PICTURE_TYPE_B)
|| (avctx->skip_frame >= AVDISCARD_NONKEY && si.type!=AV_PICTURE_TYPE_I)
|| avctx->skip_frame >= AVDISCARD_ALL)
return avpkt->size;
|| avctx->skip_frame >= AVDISCARD_ALL) return avpkt->size;
#if FF_API_HURRY_UP
/* skip everything if we are in a hurry>=5 */
if(avctx->hurry_up>=5)
return buf_size;
#endif
for(i=0; i<slice_count; i++){
int offset= get_slice_offset(avctx, slices_hdr, i);

View File

@@ -81,6 +81,7 @@ typedef struct ShortenContext {
int channels;
int32_t *decoded[MAX_CHANNELS];
int32_t *decoded_base[MAX_CHANNELS];
int32_t *offset[MAX_CHANNELS];
int *coeffs;
uint8_t *bitstream;
@@ -130,13 +131,13 @@ static int allocate_buffers(ShortenContext *s)
return AVERROR(ENOMEM);
s->offset[chan] = tmp_ptr;
tmp_ptr = av_realloc(s->decoded[chan], sizeof(int32_t)*(s->blocksize + s->nwrap));
tmp_ptr = av_realloc(s->decoded_base[chan], sizeof(int32_t)*(s->blocksize + s->nwrap));
if (!tmp_ptr)
return AVERROR(ENOMEM);
s->decoded[chan] = tmp_ptr;
s->decoded_base[chan] = tmp_ptr;
for (i=0; i<s->nwrap; i++)
s->decoded[chan][i] = 0;
s->decoded[chan] += s->nwrap;
s->decoded_base[chan][i] = 0;
s->decoded[chan] = s->decoded_base[chan] + s->nwrap;
}
coeffs = av_realloc(s->coeffs, s->nwrap * sizeof(*s->coeffs));
@@ -548,8 +549,8 @@ static av_cold int shorten_decode_close(AVCodecContext *avctx)
int i;
for (i = 0; i < s->channels; i++) {
s->decoded[i] -= s->nwrap;
av_freep(&s->decoded[i]);
s->decoded[i] = NULL;
av_freep(&s->decoded_base[i]);
av_freep(&s->offset[i]);
}
av_freep(&s->bitstream);

View File

@@ -54,7 +54,6 @@ typedef struct SmcContext {
unsigned char color_quads[COLORS_PER_TABLE * CQUAD];
unsigned char color_octets[COLORS_PER_TABLE * COCTET];
uint32_t pal[256];
} SmcContext;
#define GET_BLOCK_COUNT() \
@@ -111,7 +110,11 @@ static void smc_decode_stream(SmcContext *s)
int color_octet_index = 0;
/* make the palette available */
memcpy(s->frame.data[1], s->pal, AVPALETTE_SIZE);
memcpy(s->frame.data[1], s->avctx->palctrl->palette, AVPALETTE_SIZE);
if (s->avctx->palctrl->palette_changed) {
s->frame.palette_has_changed = 1;
s->avctx->palctrl->palette_changed = 0;
}
chunk_size = AV_RB32(&s->buf[stream_ptr]) & 0x00FFFFFF;
stream_ptr += 4;
@@ -438,7 +441,6 @@ static int smc_decode_frame(AVCodecContext *avctx,
const uint8_t *buf = avpkt->data;
int buf_size = avpkt->size;
SmcContext *s = avctx->priv_data;
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
s->buf = buf;
s->size = buf_size;
@@ -451,11 +453,6 @@ static int smc_decode_frame(AVCodecContext *avctx,
return -1;
}
if (pal) {
s->frame.palette_has_changed = 1;
memcpy(s->pal, pal, AVPALETTE_SIZE);
}
smc_decode_stream(s);
*data_size = sizeof(AVFrame);

View File

@@ -658,11 +658,15 @@ static int svq1_decode_frame(AVCodecContext *avctx,
av_dlog(s->avctx, "Error in svq1_decode_frame_header %i\n",result);
return result;
}
avcodec_set_dimensions(avctx, s->width, s->height);
//FIXME this avoids some confusion for "B frames" without 2 references
//this should be removed after libavcodec can handle more flexible picture types & ordering
if(s->pict_type==AV_PICTURE_TYPE_B && s->last_picture_ptr==NULL) return buf_size;
#if FF_API_HURRY_UP
if(avctx->hurry_up && s->pict_type==FF_B_TYPE) return buf_size;
#endif
if( (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type==AV_PICTURE_TYPE_B)
||(avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type!=AV_PICTURE_TYPE_I)
|| avctx->skip_frame >= AVDISCARD_ALL)

View File

@@ -986,6 +986,14 @@ static int svq3_decode_frame(AVCodecContext *avctx,
/* Skip B-frames if we do not have reference frames. */
if (s->last_picture_ptr == NULL && s->pict_type == AV_PICTURE_TYPE_B)
return 0;
#if FF_API_HURRY_UP
/* Skip B-frames if we are in a hurry. */
if (avctx->hurry_up && s->pict_type == FF_B_TYPE)
return 0;
/* Skip everything if we are in a hurry >= 5. */
if (avctx->hurry_up >= 5)
return 0;
#endif
if ( (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type == AV_PICTURE_TYPE_B)
||(avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I)
|| avctx->skip_frame >= AVDISCARD_ALL)

View File

@@ -171,6 +171,13 @@ static int decode_frame(AVCodecContext *avctx,
stride = -p->linesize[0];
}
if(avctx->pix_fmt == PIX_FMT_PAL8 && avctx->palctrl){
memcpy(p->data[1], avctx->palctrl->palette, AVPALETTE_SIZE);
if(avctx->palctrl->palette_changed){
p->palette_has_changed = 1;
avctx->palctrl->palette_changed = 0;
}
}
if(colors){
size_t pal_size;
if((colors + first_clr) > 256){

View File

@@ -60,8 +60,6 @@ typedef struct TsccContext {
unsigned char* decomp_buf;
int height;
z_stream zstream;
uint32_t pal[256];
} CamtasiaContext;
/*
@@ -110,13 +108,11 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
/* make the palette available on the way out */
if (c->avctx->pix_fmt == PIX_FMT_PAL8) {
const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, NULL);
if (pal) {
memcpy(c->pic.data[1], c->avctx->palctrl->palette, AVPALETTE_SIZE);
if (c->avctx->palctrl->palette_changed) {
c->pic.palette_has_changed = 1;
memcpy(c->pal, pal, AVPALETTE_SIZE);
c->avctx->palctrl->palette_changed = 0;
}
memcpy(c->pic.data[1], c->pal, AVPALETTE_SIZE);
}
*data_size = sizeof(AVFrame);

View File

@@ -32,6 +32,7 @@
#include "libavutil/audioconvert.h"
#include "libavutil/imgutils.h"
#include "libavutil/samplefmt.h"
#include "libavutil/dict.h"
#include "avcodec.h"
#include "dsputil.h"
#include "libavutil/opt.h"
@@ -48,7 +49,7 @@ static int volatile entangled_thread_counter=0;
static int (*ff_lockmgr_cb)(void **mutex, enum AVLockOp op);
static void *codec_mutex;
void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
void *av_fast_realloc(void *ptr, unsigned int *size, FF_INTERNALC_MEM_TYPE min_size)
{
if(min_size < *size)
return ptr;
@@ -64,7 +65,7 @@ void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
return ptr;
}
void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size)
void av_fast_malloc(void *ptr, unsigned int *size, FF_INTERNALC_MEM_TYPE min_size)
{
void **p = ptr;
if (min_size < *size)
@@ -94,6 +95,13 @@ void avcodec_register(AVCodec *codec)
codec->next = NULL;
}
#if LIBAVCODEC_VERSION_MAJOR < 53
void register_avcodec(AVCodec *codec)
{
avcodec_register(codec);
}
#endif
unsigned avcodec_get_edge_width(void)
{
return EDGE_WIDTH;
@@ -223,6 +231,12 @@ void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height){
*width=FFALIGN(*width, align);
}
#if LIBAVCODEC_VERSION_MAJOR < 53
int avcodec_check_dimensions(void *av_log_ctx, unsigned int w, unsigned int h){
return av_image_check_size(w, h, 0, av_log_ctx);
}
#endif
int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic){
int i;
int w= s->width;
@@ -485,9 +499,20 @@ static void avcodec_get_subtitle_defaults(AVSubtitle *sub)
sub->pts = AV_NOPTS_VALUE;
}
#if FF_API_AVCODEC_OPEN
int attribute_align_arg avcodec_open(AVCodecContext *avctx, AVCodec *codec)
{
return avcodec_open2(avctx, codec, NULL);
}
#endif
int attribute_align_arg avcodec_open2(AVCodecContext *avctx, AVCodec *codec, AVDictionary **options)
{
int ret = 0;
AVDictionary *tmp = NULL;
if (options)
av_dict_copy(&tmp, *options, 0);
/* If there is a user-supplied mutex locking routine, call it. */
if (ff_lockmgr_cb) {
@@ -514,14 +539,18 @@ int attribute_align_arg avcodec_open(AVCodecContext *avctx, AVCodec *codec)
ret = AVERROR(ENOMEM);
goto end;
}
if(codec->priv_class){ //this can be droped once all user apps use avcodec_get_context_defaults3()
if (codec->priv_class) {
*(AVClass**)avctx->priv_data= codec->priv_class;
av_opt_set_defaults(avctx->priv_data);
}
}
if (codec->priv_class && (ret = av_opt_set_dict(avctx->priv_data, &tmp)) < 0)
goto free_and_end;
} else {
avctx->priv_data = NULL;
}
if ((ret = av_opt_set_dict(avctx, &tmp)) < 0)
goto free_and_end;
if(avctx->coded_width && avctx->coded_height)
avcodec_set_dimensions(avctx, avctx->coded_width, avctx->coded_height);
@@ -576,6 +605,8 @@ int attribute_align_arg avcodec_open(AVCodecContext *avctx, AVCodec *codec)
if (avctx->codec->encode) {
int i;
if (avctx->codec->sample_fmts) {
if (avctx->sample_fmt == AV_SAMPLE_FMT_NONE)
avctx->sample_fmt = AV_SAMPLE_FMT_S16;
for (i = 0; avctx->codec->sample_fmts[i] != AV_SAMPLE_FMT_NONE; i++)
if (avctx->sample_fmt == avctx->codec->sample_fmts[i])
break;
@@ -640,8 +671,14 @@ end:
if (ff_lockmgr_cb) {
(*ff_lockmgr_cb)(&codec_mutex, AV_LOCK_RELEASE);
}
if (options) {
av_dict_free(options);
*options = tmp;
}
return ret;
free_and_end:
av_dict_free(&tmp);
av_freep(&avctx->priv_data);
avctx->codec= NULL;
goto end;
@@ -727,6 +764,22 @@ static int64_t guess_correct_pts(AVCodecContext *ctx,
return pts;
}
#if FF_API_VIDEO_OLD
int attribute_align_arg avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture,
int *got_picture_ptr,
const uint8_t *buf, int buf_size)
{
AVPacket avpkt;
av_init_packet(&avpkt);
avpkt.data = buf;
avpkt.size = buf_size;
// HACK for CorePNG to decode as normal PNG by default
avpkt.flags = AV_PKT_FLAG_KEY;
return avcodec_decode_video2(avctx, picture, got_picture_ptr, &avpkt);
}
#endif
int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
int *got_picture_ptr,
AVPacket *avpkt)
@@ -738,7 +791,6 @@ int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi
return -1;
if((avctx->codec->capabilities & CODEC_CAP_DELAY) || avpkt->size || (avctx->active_thread_type&FF_THREAD_FRAME)){
av_packet_split_side_data(avpkt);
avctx->pkt = avpkt;
if (HAVE_PTHREADS && avctx->active_thread_type&FF_THREAD_FRAME)
ret = ff_thread_decode_frame(avctx, picture, got_picture_ptr,
@@ -777,6 +829,20 @@ int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi
return ret;
}
#if FF_API_AUDIO_OLD
int attribute_align_arg avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples,
int *frame_size_ptr,
const uint8_t *buf, int buf_size)
{
AVPacket avpkt;
av_init_packet(&avpkt);
avpkt.data = buf;
avpkt.size = buf_size;
return avcodec_decode_audio3(avctx, samples, frame_size_ptr, &avpkt);
}
#endif
int attribute_align_arg avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples,
int *frame_size_ptr,
AVPacket *avpkt)
@@ -811,6 +877,20 @@ int attribute_align_arg avcodec_decode_audio3(AVCodecContext *avctx, int16_t *sa
return ret;
}
#if FF_API_SUBTITLE_OLD
int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub,
int *got_sub_ptr,
const uint8_t *buf, int buf_size)
{
AVPacket avpkt;
av_init_packet(&avpkt);
avpkt.data = buf;
avpkt.size = buf_size;
return avcodec_decode_subtitle2(avctx, sub, got_sub_ptr, &avpkt);
}
#endif
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
int *got_sub_ptr,
AVPacket *avpkt)
@@ -1243,6 +1323,20 @@ unsigned int av_xiphlacing(unsigned char *s, unsigned int v)
return n;
}
#if LIBAVCODEC_VERSION_MAJOR < 53
#include "libavutil/parseutils.h"
int av_parse_video_frame_size(int *width_ptr, int *height_ptr, const char *str)
{
return av_parse_video_size(width_ptr, height_ptr, str);
}
int av_parse_video_frame_rate(AVRational *frame_rate, const char *arg)
{
return av_parse_video_rate(frame_rate, arg);
}
#endif
int ff_match_2uint16(const uint16_t (*tab)[2], int size, int a, int b){
int i;
for(i=0; i<size && !(tab[i][0]==a && tab[i][1]==b); i++);
@@ -1359,4 +1453,12 @@ int avcodec_thread_init(AVCodecContext *s, int thread_count)
s->thread_count = thread_count;
return ff_thread_init(s);
}
void avcodec_thread_free(AVCodecContext *s)
{
#if HAVE_THREADS
ff_thread_free(s);
#endif
}
#endif

View File

@@ -3716,11 +3716,21 @@ static int vc1_decode_frame(AVCodecContext *avctx,
if(s->last_picture_ptr==NULL && (s->pict_type==AV_PICTURE_TYPE_B || s->dropable)){
goto err;
}
#if FF_API_HURRY_UP
/* skip b frames if we are in a hurry */
if(avctx->hurry_up && s->pict_type==FF_B_TYPE) return -1;//buf_size;
#endif
if( (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type==AV_PICTURE_TYPE_B)
|| (avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type!=AV_PICTURE_TYPE_I)
|| avctx->skip_frame >= AVDISCARD_ALL) {
goto end;
}
#if FF_API_HURRY_UP
/* skip everything if we are in a hurry>=5 */
if(avctx->hurry_up>=5) {
goto err;
}
#endif
if(s->next_p_frame_damaged){
if(s->pict_type==AV_PICTURE_TYPE_B)

View File

@@ -67,13 +67,6 @@ struct vdpau_render_state {
int state; ///< Holds FF_VDPAU_STATE_* values.
/** Describe size/location of the compressed video data.
Set to 0 when freeing bitstream_buffers. */
int bitstream_buffers_allocated;
int bitstream_buffers_used;
/** The user is responsible for freeing this buffer using av_freep(). */
VdpBitstreamBuffer *bitstream_buffers;
/** picture parameter information for all supported codecs */
union VdpPictureInfo {
VdpPictureInfoH264 h264;
@@ -81,6 +74,13 @@ struct vdpau_render_state {
VdpPictureInfoVC1 vc1;
VdpPictureInfoMPEG4Part2 mpeg4;
} info;
/** Describe size/location of the compressed video data.
Set to 0 when freeing bitstream_buffers. */
int bitstream_buffers_allocated;
int bitstream_buffers_used;
/** The user is responsible for freeing this buffer using av_freep(). */
VdpBitstreamBuffer *bitstream_buffers;
};
/* @}*/

View File

@@ -20,8 +20,8 @@
#ifndef AVCODEC_VERSION_H
#define AVCODEC_VERSION_H
#define LIBAVCODEC_VERSION_MAJOR 53
#define LIBAVCODEC_VERSION_MINOR 7
#define LIBAVCODEC_VERSION_MAJOR 52
#define LIBAVCODEC_VERSION_MINOR 123
#define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
@@ -41,12 +41,45 @@
#ifndef FF_API_PALETTE_CONTROL
#define FF_API_PALETTE_CONTROL (LIBAVCODEC_VERSION_MAJOR < 54)
#endif
#ifndef FF_API_MM_FLAGS
#define FF_API_MM_FLAGS (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_OPT_SHOW
#define FF_API_OPT_SHOW (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_AUDIO_OLD
#define FF_API_AUDIO_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_VIDEO_OLD
#define FF_API_VIDEO_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_SUBTITLE_OLD
#define FF_API_SUBTITLE_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_USE_LPC
#define FF_API_USE_LPC (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_SET_STRING_OLD
#define FF_API_SET_STRING_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_INOFFICIAL
#define FF_API_INOFFICIAL (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_OLD_SAMPLE_FMT
#define FF_API_OLD_SAMPLE_FMT (LIBAVCODEC_VERSION_MAJOR < 54)
#endif
#ifndef FF_API_OLD_AUDIOCONVERT
#define FF_API_OLD_AUDIOCONVERT (LIBAVCODEC_VERSION_MAJOR < 54)
#endif
#ifndef FF_API_HURRY_UP
#define FF_API_HURRY_UP (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_RATE_EMU
#define FF_API_RATE_EMU (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_MB_Q
#define FF_API_MB_Q (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_ANTIALIAS_ALGO
#define FF_API_ANTIALIAS_ALGO (LIBAVCODEC_VERSION_MAJOR < 54)
#endif
@@ -68,5 +101,8 @@
#ifndef FF_API_GET_PIX_FMT_NAME
#define FF_API_GET_PIX_FMT_NAME (LIBAVCODEC_VERSION_MAJOR < 54)
#endif
#ifndef FF_API_AVCODEC_OPEN
#define FF_API_AVCODEC_OPEN (LIBAVCODEC_VERSION_MAJOR < 54)
#endif
#endif /* AVCODEC_VERSION_H */

View File

@@ -150,7 +150,7 @@ void ff_vorbis_ready_floor1_list(vorbis_floor1_entry * list, int values)
}
}
static inline void render_line_unrolled(intptr_t x, intptr_t y, int x1,
static inline void render_line_unrolled(intptr_t x, uint8_t y, int x1,
intptr_t sy, int ady, int adx,
float *buf)
{
@@ -173,7 +173,7 @@ static inline void render_line_unrolled(intptr_t x, intptr_t y, int x1,
}
}
static void render_line(int x0, int y0, int x1, int y1, float *buf)
static void render_line(int x0, uint8_t y0, int x1, int y1, float *buf)
{
int dy = y1 - y0;
int adx = x1 - x0;
@@ -183,10 +183,10 @@ static void render_line(int x0, int y0, int x1, int y1, float *buf)
if (ady*2 <= adx) { // optimized common case
render_line_unrolled(x0, y0, x1, sy, ady, adx, buf);
} else {
int base = dy / adx;
int x = x0;
int y = y0;
int err = -adx;
int base = dy / adx;
int x = x0;
uint8_t y = y0;
int err = -adx;
ady -= FFABS(base) * adx;
while (++x < x1) {
y += base;
@@ -204,7 +204,8 @@ void ff_vorbis_floor1_render_list(vorbis_floor1_entry * list, int values,
uint16_t *y_list, int *flag,
int multiplier, float *out, int samples)
{
int lx, ly, i;
int lx, i;
uint8_t ly;
lx = 0;
ly = y_list[0] * multiplier;
for (i = 1; i < values; i++) {

View File

@@ -660,7 +660,7 @@ static int vorbis_parse_setup_hdr_residues(vorbis_context *vc)
res_setup->partition_size = get_bits(gb, 24) + 1;
/* Validations to prevent a buffer overflow later. */
if (res_setup->begin>res_setup->end ||
res_setup->end > vc->avccontext->channels * vc->blocksize[1] / 2 ||
res_setup->end > (res_setup->type == 2 ? vc->avccontext->channels : 1) * vc->blocksize[1] / 2 ||
(res_setup->end-res_setup->begin) / res_setup->partition_size > V_MAX_PARTITIONS) {
av_log(vc->avccontext, AV_LOG_ERROR,
"partition out of bounds: type, begin, end, size, blocksize: %"PRIu16", %"PRIu32", %"PRIu32", %u, %"PRIu32"\n",
@@ -1269,6 +1269,7 @@ static av_always_inline int vorbis_residue_decode_internal(vorbis_context *vc,
uint8_t *do_not_decode,
float *vec,
unsigned vlen,
unsigned ch_left,
int vr_type)
{
GetBitContext *gb = &vc->gb;
@@ -1276,6 +1277,7 @@ static av_always_inline int vorbis_residue_decode_internal(vorbis_context *vc,
unsigned ptns_to_read = vr->ptns_to_read;
uint8_t *classifs = vr->classifs;
unsigned pass, ch_used, i, j, k, l;
unsigned max_output = (ch - 1) * vlen;
if (vr_type == 2) {
for (j = 1; j < ch; ++j)
@@ -1283,8 +1285,15 @@ static av_always_inline int vorbis_residue_decode_internal(vorbis_context *vc,
if (do_not_decode[0])
return 0;
ch_used = 1;
max_output += vr->end / ch;
} else {
ch_used = ch;
max_output += vr->end;
}
if (max_output > ch_left * vlen) {
av_log(vc->avccontext, AV_LOG_ERROR, "Insufficient output buffer\n");
return -1;
}
av_dlog(NULL, " residue type 0/1/2 decode begin, ch: %d cpc %d \n", ch, c_p_c);
@@ -1411,14 +1420,15 @@ static av_always_inline int vorbis_residue_decode_internal(vorbis_context *vc,
static inline int vorbis_residue_decode(vorbis_context *vc, vorbis_residue *vr,
unsigned ch,
uint8_t *do_not_decode,
float *vec, unsigned vlen)
float *vec, unsigned vlen,
unsigned ch_left)
{
if (vr->type == 2)
return vorbis_residue_decode_internal(vc, vr, ch, do_not_decode, vec, vlen, 2);
return vorbis_residue_decode_internal(vc, vr, ch, do_not_decode, vec, vlen, ch_left, 2);
else if (vr->type == 1)
return vorbis_residue_decode_internal(vc, vr, ch, do_not_decode, vec, vlen, 1);
return vorbis_residue_decode_internal(vc, vr, ch, do_not_decode, vec, vlen, ch_left, 1);
else if (vr->type == 0)
return vorbis_residue_decode_internal(vc, vr, ch, do_not_decode, vec, vlen, 0);
return vorbis_residue_decode_internal(vc, vr, ch, do_not_decode, vec, vlen, ch_left, 0);
else {
av_log(vc->avccontext, AV_LOG_ERROR, " Invalid residue type while residue decode?! \n");
return -1;
@@ -1466,6 +1476,8 @@ static int vorbis_parse_audio_packet(vorbis_context *vc)
uint8_t res_chan[255];
unsigned res_num = 0;
int retlen = 0;
unsigned ch_left = vc->audio_channels;
unsigned vlen;
if (get_bits1(gb)) {
av_log(vc->avccontext, AV_LOG_ERROR, "Not a Vorbis I audio packet.\n");
@@ -1485,11 +1497,12 @@ static int vorbis_parse_audio_packet(vorbis_context *vc)
blockflag = vc->modes[mode_number].blockflag;
blocksize = vc->blocksize[blockflag];
vlen = blocksize / 2;
if (blockflag)
skip_bits(gb, 2); // previous_window, next_window
memset(ch_res_ptr, 0, sizeof(float) * vc->audio_channels * blocksize / 2); //FIXME can this be removed ?
memset(ch_floor_ptr, 0, sizeof(float) * vc->audio_channels * blocksize / 2); //FIXME can this be removed ?
memset(ch_res_ptr, 0, sizeof(float) * vc->audio_channels * vlen); //FIXME can this be removed ?
memset(ch_floor_ptr, 0, sizeof(float) * vc->audio_channels * vlen); //FIXME can this be removed ?
// Decode floor
@@ -1509,7 +1522,7 @@ static int vorbis_parse_audio_packet(vorbis_context *vc)
return -1;
}
no_residue[i] = ret;
ch_floor_ptr += blocksize / 2;
ch_floor_ptr += vlen;
}
// Nonzero vector propagate
@@ -1526,6 +1539,7 @@ static int vorbis_parse_audio_packet(vorbis_context *vc)
for (i = 0; i < mapping->submaps; ++i) {
vorbis_residue *residue;
unsigned ch = 0;
int ret;
for (j = 0; j < vc->audio_channels; ++j) {
if ((mapping->submaps == 1) || (i == mapping->mux[j])) {
@@ -1540,9 +1554,18 @@ static int vorbis_parse_audio_packet(vorbis_context *vc)
}
}
residue = &vc->residues[mapping->submap_residue[i]];
vorbis_residue_decode(vc, residue, ch, do_not_decode, ch_res_ptr, blocksize/2);
if (ch_left < ch) {
av_log(vc->avccontext, AV_LOG_ERROR, "Too many channels in vorbis_floor_decode.\n");
return -1;
}
if (ch) {
ret = vorbis_residue_decode(vc, residue, ch, do_not_decode, ch_res_ptr, vlen, ch_left);
if (ret < 0)
return ret;
}
ch_res_ptr += ch * blocksize / 2;
ch_res_ptr += ch * vlen;
ch_left -= ch;
}
// Inverse coupling

View File

@@ -1308,6 +1308,10 @@ static inline int vp3_dequant(Vp3DecodeContext *s, Vp3Fragment *frag,
case 1: // zero run
s->dct_tokens[plane][i]++;
i += (token >> 2) & 0x7f;
if(i>63){
av_log(s->avctx, AV_LOG_ERROR, "Coefficient index overflow\n");
return -1;
}
block[perm[i]] = (token >> 9) * dequantizer[perm[i]];
i++;
break;
@@ -1319,6 +1323,8 @@ static inline int vp3_dequant(Vp3DecodeContext *s, Vp3Fragment *frag,
return i;
}
} while (i < 64);
// return value is expected to be a valid level
i--;
end:
// the actual DC+prediction is in the fragment structure
block[0] = frag->dc * s->qmat[0][inter][plane][0];

View File

@@ -183,7 +183,8 @@ static void vp5_parse_coeff(VP56Context *s)
model1 = model->coeff_dccv[pt];
model2 = model->coeff_dcct[pt][ctx];
for (coeff_idx=0; coeff_idx<64; ) {
coeff_idx = 0;
for (;;) {
if (vp56_rac_get_prob(c, model2[0])) {
if (vp56_rac_get_prob(c, model2[2])) {
if (vp56_rac_get_prob(c, model2[3])) {
@@ -220,8 +221,11 @@ static void vp5_parse_coeff(VP56Context *s)
ct = 0;
s->coeff_ctx[vp56_b6to4[b]][coeff_idx] = 0;
}
coeff_idx++;
if (coeff_idx >= 64)
break;
cg = vp5_coeff_groups[++coeff_idx];
cg = vp5_coeff_groups[coeff_idx];
ctx = s->coeff_ctx[vp56_b6to4[b]][coeff_idx];
model1 = model->coeff_ract[pt][ct][cg];
model2 = cg > 2 ? model1 : model->coeff_acct[pt][ct][cg][ctx];

View File

@@ -440,7 +440,8 @@ static void vp6_parse_coeff(VP56Context *s)
model1 = model->coeff_dccv[pt];
model2 = model->coeff_dcct[pt][ctx];
for (coeff_idx=0; coeff_idx<64; ) {
coeff_idx = 0;
for (;;) {
if ((coeff_idx>1 && ct==0) || vp56_rac_get_prob(c, model2[0])) {
/* parse a coeff */
if (vp56_rac_get_prob(c, model2[2])) {
@@ -481,8 +482,10 @@ static void vp6_parse_coeff(VP56Context *s)
run += vp56_rac_get_prob(c, model3[i+8]) << i;
}
}
cg = vp6_coeff_groups[coeff_idx+=run];
coeff_idx += run;
if (coeff_idx >= 64)
break;
cg = vp6_coeff_groups[coeff_idx];
model1 = model2 = model->coeff_ract[pt][ct][cg];
}

View File

@@ -137,6 +137,9 @@ int ff_wma_init(AVCodecContext *avctx, int flags2)
/* compute MDCT block size */
s->frame_len_bits = ff_wma_get_frame_len_bits(s->sample_rate, s->version, 0);
s->next_block_len_bits = s->frame_len_bits;
s->prev_block_len_bits = s->frame_len_bits;
s->block_len_bits = s->frame_len_bits;
s->frame_len = 1 << s->frame_len_bits;
if (s->use_variable_block_len) {

View File

@@ -109,6 +109,11 @@ static int wma_decode_init(AVCodecContext * avctx)
}
}
if(avctx->channels > MAX_CHANNELS){
av_log(avctx, AV_LOG_ERROR, "Invalid number of channels (%d)\n", avctx->channels);
return -1;
}
if(ff_wma_init(avctx, flags2)<0)
return -1;

View File

@@ -100,8 +100,8 @@ static int ws_snd_decode_frame(AVCodecContext *avctx,
/* make sure we don't write more than out_size samples */
switch (code) {
case 0: smp = 4; break;
case 1: smp = 2; break;
case 0: smp = 4*(count+1); break;
case 1: smp = 2*(count+1); break;
case 2: smp = (count & 0x20) ? 1 : count + 1; break;
default: smp = count + 1; break;
}

View File

@@ -25,6 +25,11 @@
#include "avcodec.h"
#if LIBAVCODEC_VERSION_MAJOR < 53
#define AV_XVMC_STATE_DISPLAY_PENDING 1 /** the surface should be shown, the video driver manipulates this */
#define AV_XVMC_STATE_PREDICTION 2 /** the surface is needed for prediction, the codec manipulates this */
#define AV_XVMC_STATE_OSD_SOURCE 4 /** the surface is needed for subpicture rendering */
#endif
#define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct
the number is 1337 speak for the letters IDCT MCo (motion compensation) */
@@ -146,6 +151,22 @@ struct xvmc_pix_fmt {
of coded blocks it contains.
*/
int next_free_data_block_num;
/** extensions may be placed here */
#if LIBAVCODEC_VERSION_MAJOR < 53
//@{
/** State flags used to work around limitations in the MPlayer video system.
0 - Surface is not used.
1 - Surface is still held in application to be displayed or is
still visible.
2 - Surface is still held in libavcodec buffer for prediction.
*/
int state;
/** pointer to the surface where the subpicture is rendered */
void* p_osd_target_surface_render;
//}@
#endif
};
#endif /* AVCODEC_XVMC_H */

View File

@@ -22,9 +22,9 @@
#include "libavutil/avutil.h"
#include "libavformat/avformat.h"
#define LIBAVDEVICE_VERSION_MAJOR 53
#define LIBAVDEVICE_VERSION_MINOR 1
#define LIBAVDEVICE_VERSION_MICRO 1
#define LIBAVDEVICE_VERSION_MAJOR 52
#define LIBAVDEVICE_VERSION_MINOR 5
#define LIBAVDEVICE_VERSION_MICRO 0
#define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \
LIBAVDEVICE_VERSION_MINOR, \

View File

@@ -439,7 +439,7 @@ static int v4l2_set_parameters(AVFormatContext *s1, AVFormatParameters *ap)
struct v4l2_streamparm streamparm = {0};
struct v4l2_fract *tpf = &streamparm.parm.capture.timeperframe;
int i, ret;
AVRational fps;
AVRational fps={0};
streamparm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

View File

@@ -614,7 +614,7 @@ void avfilter_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref)
link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate;
/* Copy actual data into new samples buffer */
for (i = 0; samplesref->data[i]; i++)
for (i = 0; samplesref->data[i] && i < 8; i++)
memcpy(link->cur_buf->data[i], samplesref->data[i], samplesref->linesize[0]);
avfilter_unref_buffer(samplesref);

View File

@@ -25,8 +25,8 @@
#include "libavutil/avutil.h"
#include "libavutil/samplefmt.h"
#define LIBAVFILTER_VERSION_MAJOR 2
#define LIBAVFILTER_VERSION_MINOR 23
#define LIBAVFILTER_VERSION_MAJOR 1
#define LIBAVFILTER_VERSION_MINOR 80
#define LIBAVFILTER_VERSION_MICRO 0
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \

View File

@@ -158,7 +158,7 @@ static int read_shape_from_file(int *cols, int *rows, int **values, const char *
}
w++;
}
if (*rows > (SIZE_MAX / sizeof(int) / *cols)) {
if (*rows > (FF_INTERNAL_MEM_TYPE_MAX_VALUE / (sizeof(int)) / *cols)) {
av_log(log_ctx, AV_LOG_ERROR, "File with size %dx%d is too big\n",
*rows, *cols);
return AVERROR_INVALIDDATA;

View File

@@ -69,16 +69,13 @@ static int query_formats(AVFilterContext *ctx)
PIX_FMT_BGR555BE, PIX_FMT_BGR555LE,
PIX_FMT_GRAY16BE, PIX_FMT_GRAY16LE,
PIX_FMT_YUV420P16LE, PIX_FMT_YUV420P16BE,
PIX_FMT_YUV422P16LE, PIX_FMT_YUV422P16BE,
PIX_FMT_YUV444P16LE, PIX_FMT_YUV444P16BE,
PIX_FMT_NV12, PIX_FMT_NV21,
PIX_FMT_RGB8, PIX_FMT_BGR8,
PIX_FMT_RGB4_BYTE, PIX_FMT_BGR4_BYTE,
PIX_FMT_YUV444P, PIX_FMT_YUV422P,
PIX_FMT_YUV444P, PIX_FMT_YUVJ444P,
PIX_FMT_YUV420P, PIX_FMT_YUVJ420P,
PIX_FMT_YUV411P, PIX_FMT_YUV410P,
PIX_FMT_YUVJ444P, PIX_FMT_YUVJ422P,
PIX_FMT_YUV440P, PIX_FMT_YUVJ440P,
PIX_FMT_YUV410P,
PIX_FMT_YUVA420P, PIX_FMT_GRAY8,
PIX_FMT_NONE
};
@@ -195,6 +192,8 @@ static void end_frame(AVFilterLink *inlink)
avfilter_unref_buffer(outpic);
}
static void null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { }
AVFilter avfilter_vf_transpose = {
.name = "transpose",
.description = NULL_IF_CONFIG_SMALL("Transpose input video."),
@@ -207,6 +206,7 @@ AVFilter avfilter_vf_transpose = {
.inputs = (AVFilterPad[]) {{ .name = "default",
.type = AVMEDIA_TYPE_VIDEO,
.start_frame = start_frame,
.draw_slice = null_draw_slice,
.end_frame = end_frame,
.min_perms = AV_PERM_READ, },
{ .name = NULL}},

View File

@@ -10,6 +10,7 @@ OBJS = allformats.o \
id3v1.o \
id3v2.o \
metadata.o \
metadata_compat.o \
options.o \
os_support.o \
sdp.o \
@@ -247,6 +248,7 @@ OBJS-$(CONFIG_RTPDEC) += rdt.o \
rtpdec.o \
rtpdec_amr.o \
rtpdec_asf.o \
rtpdec_g726.o \
rtpdec_h263.o \
rtpdec_h264.o \
rtpdec_latm.o \

View File

@@ -40,6 +40,8 @@ static int ac3_eac3_probe(AVProbeData *p, enum CodecID expected_codec_id)
buf2 = buf;
for(frames = 0; buf2 < end; frames++) {
if(!memcmp(buf2, "\x1\x10\0\0\0\0\0\0", 8))
buf2+=16;
init_get_bits(&gbc, buf2, 54);
if(ff_ac3_parse_header(&gbc, &hdr) < 0)
break;

View File

@@ -208,7 +208,7 @@ static int parse_playlist(AppleHTTPContext *c, const char *url,
if (!in) {
close_in = 1;
if ((ret = avio_open(&in, url, AVIO_FLAG_READ)) < 0)
if ((ret = avio_open(&in, url, AVIO_RDONLY)) < 0)
return ret;
}
@@ -321,13 +321,13 @@ static int open_input(struct variant *var)
{
struct segment *seg = var->segments[var->cur_seq_no - var->start_seq_no];
if (seg->key_type == KEY_NONE) {
return ffurl_open(&var->input, seg->url, AVIO_FLAG_READ);
return ffurl_open(&var->input, seg->url, AVIO_RDONLY);
} else if (seg->key_type == KEY_AES_128) {
char iv[33], key[33], url[MAX_URL_SIZE];
int ret;
if (strcmp(seg->key, var->key_url)) {
URLContext *uc;
if (ffurl_open(&uc, seg->key, AVIO_FLAG_READ) == 0) {
if (ffurl_open(&uc, seg->key, AVIO_RDONLY) == 0) {
if (ffurl_read_complete(uc, var->key, sizeof(var->key))
!= sizeof(var->key)) {
av_log(NULL, AV_LOG_ERROR, "Unable to read key file %s\n",
@@ -347,7 +347,7 @@ static int open_input(struct variant *var)
snprintf(url, sizeof(url), "crypto+%s", seg->url);
else
snprintf(url, sizeof(url), "crypto:%s", seg->url);
if ((ret = ffurl_alloc(&var->input, url, AVIO_FLAG_READ)) < 0)
if ((ret = ffurl_alloc(&var->input, url, AVIO_RDONLY)) < 0)
return ret;
av_set_string3(var->input->priv_data, "key", key, 0, NULL);
av_set_string3(var->input->priv_data, "iv", iv, 0, NULL);
@@ -395,7 +395,9 @@ reload:
goto reload;
}
ret = open_input(v);
ret = ffurl_open(&v->input,
v->segments[v->cur_seq_no - v->start_seq_no]->url,
AVIO_RDONLY);
if (ret < 0)
return ret;
}

View File

@@ -114,7 +114,7 @@ static int parse_playlist(URLContext *h, const char *url)
char line[1024];
const char *ptr;
if ((ret = avio_open(&in, url, AVIO_FLAG_READ)) < 0)
if ((ret = avio_open(&in, url, AVIO_RDONLY)) < 0)
return ret;
read_chomp_line(in, line, sizeof(line));
@@ -179,7 +179,7 @@ static int applehttp_open(URLContext *h, const char *uri, int flags)
int ret, i;
const char *nested_url;
if (flags & AVIO_FLAG_WRITE)
if (flags & (AVIO_WRONLY | AVIO_RDWR))
return AVERROR(ENOSYS);
s = av_mallocz(sizeof(AppleHTTPContext));
@@ -194,7 +194,7 @@ static int applehttp_open(URLContext *h, const char *uri, int flags)
av_strlcpy(s->playlisturl, "http://", sizeof(s->playlisturl));
av_strlcat(s->playlisturl, nested_url, sizeof(s->playlisturl));
} else {
av_log(h, AV_LOG_ERROR, "Unsupported url %s\n", uri);
av_log(NULL, AV_LOG_ERROR, "Unsupported url %s\n", uri);
ret = AVERROR(EINVAL);
goto fail;
}
@@ -217,7 +217,7 @@ static int applehttp_open(URLContext *h, const char *uri, int flags)
}
if (s->n_segments == 0) {
av_log(h, AV_LOG_WARNING, "Empty playlist\n");
av_log(NULL, AV_LOG_WARNING, "Empty playlist\n");
ret = AVERROR(EIO);
goto fail;
}
@@ -257,7 +257,7 @@ retry:
return ret;
}
if (s->cur_seq_no < s->start_seq_no) {
av_log(h, AV_LOG_WARNING,
av_log(NULL, AV_LOG_WARNING,
"skipping %d segments ahead, expired from playlist\n",
s->start_seq_no - s->cur_seq_no);
s->cur_seq_no = s->start_seq_no;
@@ -273,12 +273,12 @@ retry:
goto retry;
}
url = s->segments[s->cur_seq_no - s->start_seq_no]->url,
av_log(h, AV_LOG_DEBUG, "opening %s\n", url);
ret = ffurl_open(&s->seg_hd, url, AVIO_FLAG_READ);
av_log(NULL, AV_LOG_DEBUG, "opening %s\n", url);
ret = ffurl_open(&s->seg_hd, url, AVIO_RDONLY);
if (ret < 0) {
if (url_interrupt_cb())
return AVERROR_EXIT;
av_log(h, AV_LOG_WARNING, "Unable to open %s\n", url);
av_log(NULL, AV_LOG_WARNING, "Unable to open %s\n", url);
s->cur_seq_no++;
goto retry;
}

View File

@@ -45,8 +45,6 @@ typedef struct {
uint16_t stream_language_index;
int palette_changed;
uint32_t palette[256];
} ASFStream;
typedef struct {

View File

@@ -359,14 +359,15 @@ static int asf_read_stream_properties(AVFormatContext *s, int64_t size)
/* This is true for all paletted codecs implemented in ffmpeg */
if (st->codec->extradata_size && (st->codec->bits_per_coded_sample <= 8)) {
int av_unused i;
st->codec->palctrl = av_mallocz(sizeof(AVPaletteControl));
#if HAVE_BIGENDIAN
for (i = 0; i < FFMIN(st->codec->extradata_size, AVPALETTE_SIZE)/4; i++)
asf_st->palette[i] = av_bswap32(((uint32_t*)st->codec->extradata)[i]);
st->codec->palctrl->palette[i] = av_bswap32(((uint32_t*)st->codec->extradata)[i]);
#else
memcpy(asf_st->palette, st->codec->extradata,
FFMIN(st->codec->extradata_size, AVPALETTE_SIZE));
memcpy(st->codec->palctrl->palette, st->codec->extradata,
FFMIN(st->codec->extradata_size, AVPALETTE_SIZE));
#endif
asf_st->palette_changed = 1;
st->codec->palctrl->palette_changed = 1;
}
st->codec->codec_tag = tag1;
@@ -970,17 +971,6 @@ static int ff_asf_parse_packet(AVFormatContext *s, AVIOContext *pb, AVPacket *pk
asf_st->pkt.stream_index = asf->stream_index;
asf_st->pkt.pos =
asf_st->packet_pos= asf->packet_pos;
if (asf_st->pkt.data && asf_st->palette_changed) {
uint8_t *pal;
pal = av_packet_new_side_data(pkt, AV_PKT_DATA_PALETTE,
AVPALETTE_SIZE);
if (!pal) {
av_log(s, AV_LOG_ERROR, "Cannot append palette to packet\n");
} else {
memcpy(pal, asf_st->palette, AVPALETTE_SIZE);
asf_st->palette_changed = 0;
}
}
//printf("new packet: stream:%d key:%d packet_key:%d audio:%d size:%d\n",
//asf->stream_index, asf->packet_key_frame, asf_st->pkt.flags & AV_PKT_FLAG_KEY,
//s->streams[asf->stream_index]->codec->codec_type == AVMEDIA_TYPE_AUDIO, asf->packet_obj_size);
@@ -1137,8 +1127,14 @@ static void asf_reset_header(AVFormatContext *s)
static int asf_read_close(AVFormatContext *s)
{
int i;
asf_reset_header(s);
for(i=0;i<s->nb_streams;i++) {
AVStream *st = s->streams[i];
av_free(st->codec->palctrl);
}
return 0;
}

View File

@@ -144,6 +144,20 @@ typedef struct AVMetadataConv AVMetadataConv;
attribute_deprecated AVDictionaryEntry *
av_metadata_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags);
#if FF_API_OLD_METADATA
/**
* Set the given tag in *pm, overwriting an existing tag.
*
* @param pm pointer to a pointer to a metadata struct. If *pm is NULL
* a metadata struct is allocated and put in *pm.
* @param key tag key to add to *pm (will be av_strduped)
* @param value tag value to add to *pm (will be av_strduped)
* @return >= 0 on success otherwise an error code <0
* @deprecated Use av_metadata_set2() instead.
*/
attribute_deprecated int av_metadata_set(AVMetadata **pm, const char *key, const char *value);
#endif
/**
* Set the given tag in *pm, overwriting an existing tag.
*
@@ -256,6 +270,10 @@ typedef struct AVFormatParameters {
immediately (RTSP only). */
attribute_deprecated unsigned int prealloced_context:1;
#endif
#if FF_API_PARAMETERS_CODEC_ID
attribute_deprecated enum CodecID video_codec_id;
attribute_deprecated enum CodecID audio_codec_id;
#endif
} AVFormatParameters;
//! Demuxer will use avio_open, no opened file should be provided by the caller.
@@ -548,6 +566,10 @@ typedef struct AVStream {
*/
int64_t duration;
#if FF_API_OLD_METADATA
attribute_deprecated char language[4]; /**< ISO 639-2/B 3-letter language code (empty string if undefined) */
#endif
/* av_read_frame() support */
enum AVStreamParseType need_parsing;
struct AVCodecParserContext *parser;
@@ -563,6 +585,14 @@ typedef struct AVStream {
int64_t nb_frames; ///< number of frames in this stream if known or 0
#if FF_API_LAVF_UNUSED
attribute_deprecated int64_t unused[4+1];
#endif
#if FF_API_OLD_METADATA
attribute_deprecated char *filename; /**< source filename of the stream */
#endif
int disposition; /**< AV_DISPOSITION_* bit field */
AVProbeData probe_data;
@@ -653,6 +683,10 @@ typedef struct AVStream {
*/
typedef struct AVProgram {
int id;
#if FF_API_OLD_METADATA
attribute_deprecated char *provider_name; ///< network name for DVB streams
attribute_deprecated char *name; ///< service name for DVB streams
#endif
int flags;
enum AVDiscard discard; ///< selects which program to discard and which to feed to the caller
unsigned int *stream_index;
@@ -671,9 +705,16 @@ typedef struct AVChapter {
int id; ///< unique ID to identify the chapter
AVRational time_base; ///< time base in which the start/end timestamps are specified
int64_t start, end; ///< chapter start/end time in time_base units
#if FF_API_OLD_METADATA
attribute_deprecated char *title; ///< chapter title
#endif
AVDictionary *metadata;
} AVChapter;
#if FF_API_MAX_STREAMS
#define MAX_STREAMS 20
#endif
/**
* Format I/O context.
* New fields can be added to the end with minor version bumps.
@@ -689,10 +730,24 @@ typedef struct AVFormatContext {
void *priv_data;
AVIOContext *pb;
unsigned int nb_streams;
#if FF_API_MAX_STREAMS
AVStream *streams[MAX_STREAMS];
#else
AVStream **streams;
#endif
char filename[1024]; /**< input or output filename */
/* stream info */
int64_t timestamp;
#if FF_API_OLD_METADATA
attribute_deprecated char title[512];
attribute_deprecated char author[512];
attribute_deprecated char copyright[512];
attribute_deprecated char comment[512];
attribute_deprecated char album[512];
attribute_deprecated int year; /**< ID3 year, 0 if none */
attribute_deprecated int track; /**< track number, 0 if none */
attribute_deprecated char genre[32]; /**< ID3 genre */
#endif
int ctx_flags; /**< Format-specific flags, see AVFMTCTX_xx */
/* private data for pts handling (do not modify directly). */
@@ -732,9 +787,17 @@ typedef struct AVFormatContext {
/* av_read_frame() support */
AVStream *cur_st;
#if FF_API_LAVF_UNUSED
const uint8_t *cur_ptr_deprecated;
int cur_len_deprecated;
AVPacket cur_pkt_deprecated;
#endif
/* av_seek_frame() support */
int64_t data_offset; /**< offset of the first packet */
#if FF_API_INDEX_BUILT
attribute_deprecated int index_built;
#endif
int mux_rate;
unsigned int packet_size;
@@ -874,6 +937,11 @@ typedef struct AVPacketList {
struct AVPacketList *next;
} AVPacketList;
#if FF_API_FIRST_FORMAT
attribute_deprecated extern AVInputFormat *first_iformat;
attribute_deprecated extern AVOutputFormat *first_oformat;
#endif
/**
* If f is NULL, returns the first registered input format,
* if f is non-NULL, returns the next registered input format after f
@@ -898,6 +966,18 @@ attribute_deprecated enum CodecID av_guess_image2_codec(const char *filename);
/* utils.c */
void av_register_input_format(AVInputFormat *format);
void av_register_output_format(AVOutputFormat *format);
#if FF_API_GUESS_FORMAT
attribute_deprecated AVOutputFormat *guess_stream_format(const char *short_name,
const char *filename,
const char *mime_type);
/**
* @deprecated Use av_guess_format() instead.
*/
attribute_deprecated AVOutputFormat *guess_format(const char *short_name,
const char *filename,
const char *mime_type);
#endif
/**
* Return the output format in the list of registered output formats
@@ -1114,6 +1194,12 @@ attribute_deprecated int av_open_input_file(AVFormatContext **ic_ptr, const char
*/
int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options);
#if FF_API_ALLOC_FORMAT_CONTEXT
/**
* @deprecated Use avformat_alloc_context() instead.
*/
attribute_deprecated AVFormatContext *av_alloc_format_context(void);
#endif
int av_demuxer_open(AVFormatContext *ic, AVFormatParameters *ap);
/**
@@ -1152,6 +1238,7 @@ AVFormatContext *avformat_alloc_output_context(const char *format,
int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat,
const char *format_name, const char *filename);
#if FF_API_FORMAT_PARAMETERS
/**
* Read packets of a media file to get stream information. This
* is useful for file formats with no headers such as MPEG. This
@@ -1164,8 +1251,34 @@ int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oforma
* @return >=0 if OK, AVERROR_xxx on error
* @todo Let the user decide somehow what information is needed so that
* we do not waste time getting stuff the user does not need.
*
* @deprecated use avformat_find_stream_info.
*/
int av_find_stream_info(AVFormatContext *ic);
#endif
/**
* Read packets of a media file to get stream information. This
* is useful for file formats with no headers such as MPEG. This
* function also computes the real framerate in case of MPEG-2 repeat
* frame mode.
* The logical file position is not changed by this function;
* examined packets may be buffered for later processing.
*
* @param ic media file handle
* @param options If non-NULL, an ic.nb_streams long array of pointers to
* dictionaries, where i-th member contains options for
* codec corresponding to i-th stream.
* On return each dictionary will be filled with options that were not found.
* @return >=0 if OK, AVERROR_xxx on error
*
* @note this function isn't guaranteed to open all the codecs, so
* options being non-empty at return is a perfectly normal behavior.
*
* @todo Let the user decide somehow what information is needed so that
* we do not waste time getting stuff the user does not need.
*/
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options);
/**
* Find the "best" stream in the file.
@@ -1540,6 +1653,22 @@ void av_dump_format(AVFormatContext *ic,
const char *url,
int is_output);
#if FF_API_PARSE_FRAME_PARAM
/**
* Parse width and height out of string str.
* @deprecated Use av_parse_video_frame_size instead.
*/
attribute_deprecated int parse_image_size(int *width_ptr, int *height_ptr,
const char *str);
/**
* Convert framerate from a string to a fraction.
* @deprecated Use av_parse_video_frame_rate instead.
*/
attribute_deprecated int parse_frame_rate(int *frame_rate, int *frame_rate_base,
const char *arg);
#endif
#if FF_API_PARSE_DATE
/**
* Parse datestr and return a corresponding number of microseconds.

View File

@@ -611,18 +611,15 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
/* This code assumes that extradata contains only palette. */
/* This is true for all paletted codecs implemented in FFmpeg. */
if (st->codec->extradata_size && (st->codec->bits_per_coded_sample <= 8)) {
int pal_size = (1 << st->codec->bits_per_coded_sample) << 2;
const uint8_t *pal_src;
pal_size = FFMIN(pal_size, st->codec->extradata_size);
pal_src = st->codec->extradata + st->codec->extradata_size - pal_size;
st->codec->palctrl = av_mallocz(sizeof(AVPaletteControl));
#if HAVE_BIGENDIAN
for (i = 0; i < pal_size/4; i++)
ast->pal[i] = AV_RL32(pal_src+4*i);
for (i = 0; i < FFMIN(st->codec->extradata_size, AVPALETTE_SIZE)/4; i++)
st->codec->palctrl->palette[i] = av_bswap32(((uint32_t*)st->codec->extradata)[i]);
#else
memcpy(ast->pal, pal_src, pal_size);
memcpy(st->codec->palctrl->palette, st->codec->extradata,
FFMIN(st->codec->extradata_size, AVPALETTE_SIZE));
#endif
ast->has_pal = 1;
st->codec->palctrl->palette_changed = 1;
}
print_tag("video", tag1, 0);
@@ -964,14 +961,14 @@ resync:
return err;
if(ast->has_pal && pkt->data && pkt->size<(unsigned)INT_MAX/2){
uint8_t *pal;
pal = av_packet_new_side_data(pkt, AV_PKT_DATA_PALETTE, AVPALETTE_SIZE);
if(!pal){
av_log(s, AV_LOG_ERROR, "Failed to allocate data for palette\n");
}else{
memcpy(pal, ast->pal, AVPALETTE_SIZE);
ast->has_pal = 0;
}
void *ptr= av_realloc(pkt->data, pkt->size + 4*256 + FF_INPUT_BUFFER_PADDING_SIZE);
if(ptr){
ast->has_pal=0;
pkt->size += 4*256;
pkt->data= ptr;
memcpy(pkt->data + pkt->size - 4*256, ast->pal, 4*256);
}else
av_log(s, AV_LOG_ERROR, "Failed to append palette\n");
}
if (CONFIG_DV_DEMUXER && avi->dv_demux) {
@@ -1401,6 +1398,7 @@ static int avi_read_close(AVFormatContext *s)
for(i=0;i<s->nb_streams;i++) {
AVStream *st = s->streams[i];
AVIStream *ast = st->priv_data;
av_free(st->codec->palctrl);
if (ast) {
if (ast->sub_ctx) {
av_freep(&ast->sub_ctx->pb);

View File

@@ -30,6 +30,7 @@
#endif
#include "url.h"
#if FF_API_URL_CLASS
/** @name Logging context. */
/*@{*/
static const char *urlcontext_to_name(void *ptr)
@@ -46,6 +47,7 @@ static const AVClass urlcontext_class = {
.version = LIBAVUTIL_VERSION_INT,
};
/*@}*/
#endif
static int default_interrupt_cb(void);
@@ -83,6 +85,29 @@ int ffurl_register_protocol(URLProtocol *protocol, int size)
return 0;
}
#if FF_API_REGISTER_PROTOCOL
/* The layout of URLProtocol as of when major was bumped to 52 */
struct URLProtocol_compat {
const char *name;
int (*url_open)(URLContext *h, const char *filename, int flags);
int (*url_read)(URLContext *h, unsigned char *buf, int size);
int (*url_write)(URLContext *h, unsigned char *buf, int size);
int64_t (*url_seek)(URLContext *h, int64_t pos, int whence);
int (*url_close)(URLContext *h);
struct URLProtocol *next;
};
int av_register_protocol(URLProtocol *protocol)
{
return ffurl_register_protocol(protocol, sizeof(struct URLProtocol_compat));
}
int register_protocol(URLProtocol *protocol)
{
return ffurl_register_protocol(protocol, sizeof(struct URLProtocol_compat));
}
#endif
static int url_alloc_for_protocol (URLContext **puc, struct URLProtocol *up,
const char *filename, int flags)
{
@@ -98,7 +123,9 @@ static int url_alloc_for_protocol (URLContext **puc, struct URLProtocol *up,
err = AVERROR(ENOMEM);
goto fail;
}
#if FF_API_URL_CLASS
uc->av_class = &urlcontext_class;
#endif
uc->filename = (char *) &uc[1];
strcpy(uc->filename, filename);
uc->prot = up;
@@ -130,7 +157,7 @@ int ffurl_connect(URLContext* uc)
return err;
uc->is_connected = 1;
//We must be careful here as ffurl_seek() could be slow, for example for http
if( (uc->flags & AVIO_FLAG_WRITE)
if( (uc->flags & (AVIO_WRONLY | AVIO_RDWR))
|| !strcmp(uc->prot->name, "file"))
if(!uc->is_streamed && ffurl_seek(uc, 0, SEEK_SET) < 0)
uc->is_streamed= 1;
@@ -290,21 +317,21 @@ static inline int retry_transfer_wrapper(URLContext *h, unsigned char *buf, int
int ffurl_read(URLContext *h, unsigned char *buf, int size)
{
if (!(h->flags & AVIO_FLAG_READ))
if (h->flags & AVIO_WRONLY)
return AVERROR(EIO);
return retry_transfer_wrapper(h, buf, size, 1, h->prot->url_read);
}
int ffurl_read_complete(URLContext *h, unsigned char *buf, int size)
{
if (!(h->flags & AVIO_FLAG_READ))
if (h->flags & AVIO_WRONLY)
return AVERROR(EIO);
return retry_transfer_wrapper(h, buf, size, size, h->prot->url_read);
}
int ffurl_write(URLContext *h, const unsigned char *buf, int size)
{
if (!(h->flags & AVIO_FLAG_WRITE))
if (!(h->flags & (AVIO_WRONLY | AVIO_RDWR)))
return AVERROR(EIO);
/* avoid sending too big packets */
if (h->max_packet_size && size > h->max_packet_size)
@@ -343,7 +370,7 @@ int ffurl_close(URLContext *h)
int url_exist(const char *filename)
{
URLContext *h;
if (ffurl_open(&h, filename, AVIO_FLAG_READ) < 0)
if (ffurl_open(&h, filename, AVIO_RDONLY) < 0)
return 0;
ffurl_close(h);
return 1;

View File

@@ -101,7 +101,9 @@ typedef struct {
* @deprecated This struct will be made private
*/
typedef struct URLContext {
#if FF_API_URL_CLASS
const AVClass *av_class; ///< information for av_log(). Set by url_open().
#endif
struct URLProtocol *prot;
int flags;
int is_streamed; /**< true if streamed (no seek possible), default = false */
@@ -150,9 +152,9 @@ attribute_deprecated int url_poll(URLPollEntry *poll_table, int n, int timeout);
* constants, optionally ORed with other flags.
* @{
*/
#define URL_RDONLY 1 /**< read-only */
#define URL_WRONLY 2 /**< write-only */
#define URL_RDWR (URL_RDONLY|URL_WRONLY) /**< read-write */
#define URL_RDONLY 0 /**< read-only */
#define URL_WRONLY 1 /**< write-only */
#define URL_RDWR 2 /**< read-write */
/**
* @}
*/
@@ -344,7 +346,7 @@ attribute_deprecated int url_exist(const char *url);
#endif // FF_API_OLD_AVIO
/**
* Return AVIO_FLAG_* access flags corresponding to the access permissions
* Return AVIO_* access flags corresponding to the access permissions
* of the resource in url, or a negative value corresponding to an
* AVERROR code in case of failure. The returned access flags are
* masked by the value in flags.
@@ -354,6 +356,9 @@ attribute_deprecated int url_exist(const char *url);
* one call to another. Thus you should not trust the returned value,
* unless you are sure that no other processes are accessing the
* checked resource.
*
* @note This function is slightly broken until next major bump
* because of AVIO_RDONLY == 0. Don't use it until then.
*/
int avio_check(const char *url, int flags);
@@ -365,6 +370,22 @@ int avio_check(const char *url, int flags);
*/
void avio_set_interrupt_cb(int (*interrupt_cb)(void));
#if FF_API_REGISTER_PROTOCOL
extern URLProtocol *first_protocol;
#endif
#if FF_API_REGISTER_PROTOCOL
/**
* @deprecated Use av_register_protocol() instead.
*/
attribute_deprecated int register_protocol(URLProtocol *protocol);
/**
* @deprecated Use av_register_protocol2() instead.
*/
attribute_deprecated int av_register_protocol(URLProtocol *protocol);
#endif
/**
* Allocate and initialize an AVIOContext for buffered I/O. It must be later
* freed with av_free().
@@ -522,15 +543,29 @@ int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen);
int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen);
#if FF_API_URL_RESETBUF
/** Reset the buffer for reading or writing.
* @note Will drop any data currently in the buffer without transmitting it.
* @param flags URL_RDONLY to set up the buffer for reading, or URL_WRONLY
* to set up the buffer for writing. */
int url_resetbuf(AVIOContext *s, int flags);
#endif
/**
* @name URL open modes
* The flags argument to avio_open must be one of the following
* constants, optionally ORed with other flags.
* @{
*/
#define AVIO_FLAG_READ 1 /**< read-only */
#define AVIO_FLAG_WRITE 2 /**< write-only */
#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) /**< read-write pseudo flag */
#if LIBAVFORMAT_VERSION_MAJOR < 53
#define AVIO_RDONLY 0 /**< read-only */
#define AVIO_WRONLY 1 /**< write-only */
#define AVIO_RDWR 2 /**< read-write */
#else
#define AVIO_RDONLY 1 /**< read-only */
#define AVIO_WRONLY 2 /**< write-only */
#define AVIO_RDWR 4 /**< read-write */
#endif
/**
* @}
*/
@@ -547,7 +582,11 @@ int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen);
* Warning: non-blocking protocols is work-in-progress; this flag may be
* silently ignored.
*/
#if LIBAVFORMAT_VERSION_MAJOR < 53
#define AVIO_FLAG_NONBLOCK 4
#else
#define AVIO_FLAG_NONBLOCK 8
#endif
/**
* Create and initialize a AVIOContext for accessing the
@@ -591,6 +630,10 @@ int avio_open_dyn_buf(AVIOContext **s);
*/
int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer);
#if FF_API_UDP_GET_FILE
int udp_get_file_handle(URLContext *h);
#endif
/**
* Iterate through names of available protocols.
* @note it is recommanded to use av_protocol_next() instead of this

View File

@@ -38,7 +38,9 @@
#define SHORT_SEEK_THRESHOLD 4096
static void fill_buffer(AVIOContext *s);
#if !FF_API_URL_RESETBUF
static int url_resetbuf(AVIOContext *s, int flags);
#endif
int ffio_init_context(AVIOContext *s,
unsigned char *buffer,
@@ -53,7 +55,7 @@ int ffio_init_context(AVIOContext *s,
s->buffer_size = buffer_size;
s->buf_ptr = buffer;
s->opaque = opaque;
url_resetbuf(s, write_flag ? AVIO_FLAG_WRITE : AVIO_FLAG_READ);
url_resetbuf(s, write_flag ? AVIO_WRONLY : AVIO_RDONLY);
s->write_packet = write_packet;
s->read_packet = read_packet;
s->seek = seek;
@@ -857,7 +859,7 @@ int ffio_fdopen(AVIOContext **s, URLContext *h)
}
if (ffio_init_context(*s, buffer, buffer_size,
h->flags & AVIO_FLAG_WRITE, h,
(h->flags & AVIO_WRONLY || h->flags & AVIO_RDWR), h,
(void*)ffurl_read, (void*)ffurl_write, (void*)ffurl_seek) < 0) {
av_free(buffer);
av_freep(s);
@@ -886,15 +888,24 @@ int ffio_set_buf_size(AVIOContext *s, int buf_size)
s->buffer = buffer;
s->buffer_size = buf_size;
s->buf_ptr = buffer;
url_resetbuf(s, s->write_flag ? AVIO_FLAG_WRITE : AVIO_FLAG_READ);
url_resetbuf(s, s->write_flag ? AVIO_WRONLY : AVIO_RDONLY);
return 0;
}
#if FF_API_URL_RESETBUF
int url_resetbuf(AVIOContext *s, int flags)
#else
static int url_resetbuf(AVIOContext *s, int flags)
#endif
{
assert(flags == AVIO_FLAG_WRITE || flags == AVIO_FLAG_READ);
#if FF_API_URL_RESETBUF
if (flags & AVIO_RDWR)
return AVERROR(EINVAL);
#else
assert(flags == AVIO_WRONLY || flags == AVIO_RDONLY);
#endif
if (flags & AVIO_FLAG_WRITE) {
if (flags & AVIO_WRONLY) {
s->buf_end = s->buffer + s->buffer_size;
s->write_flag = 1;
} else {
@@ -1052,7 +1063,7 @@ int url_open_buf(AVIOContext **s, uint8_t *buf, int buf_size, int flags)
if(!*s)
return AVERROR(ENOMEM);
ret = ffio_init_context(*s, buf, buf_size,
flags & AVIO_FLAG_WRITE,
(flags & AVIO_WRONLY || flags & AVIO_RDWR),
NULL, NULL, NULL, NULL);
if(ret != 0)
av_freep(s);

View File

@@ -76,12 +76,12 @@ static int crypto_open(URLContext *h, const char *uri, int flags)
ret = AVERROR(EINVAL);
goto err;
}
if (flags & AVIO_FLAG_WRITE) {
if (flags == AVIO_WRONLY) {
av_log(h, AV_LOG_ERROR, "Only decryption is supported currently\n");
ret = AVERROR(ENOSYS);
goto err;
}
if ((ret = ffurl_open(&c->hd, nested_url, AVIO_FLAG_READ)) < 0) {
if ((ret = ffurl_open(&c->hd, nested_url, AVIO_RDONLY)) < 0) {
av_log(h, AV_LOG_ERROR, "Unable to open input\n");
goto err;
}

View File

@@ -58,8 +58,9 @@ static int file_check(URLContext *h, int mask)
if (ret < 0)
return AVERROR(errno);
ret |= st.st_mode&S_IRUSR ? mask&AVIO_FLAG_READ : 0;
ret |= st.st_mode&S_IWUSR ? mask&AVIO_FLAG_WRITE : 0;
ret |= st.st_mode&S_IRUSR ? mask&AVIO_RDONLY : 0;
ret |= st.st_mode&S_IWUSR ? mask&AVIO_WRONLY : 0;
ret |= st.st_mode&S_IWUSR && st.st_mode&S_IRUSR ? mask&AVIO_RDWR : 0;
return ret;
}
@@ -73,9 +74,9 @@ static int file_open(URLContext *h, const char *filename, int flags)
av_strstart(filename, "file:", &filename);
if (flags & AVIO_FLAG_WRITE && flags & AVIO_FLAG_READ) {
if (flags & AVIO_RDWR) {
access = O_CREAT | O_TRUNC | O_RDWR;
} else if (flags & AVIO_FLAG_WRITE) {
} else if (flags & AVIO_WRONLY) {
access = O_CREAT | O_TRUNC | O_WRONLY;
} else {
access = O_RDONLY;
@@ -131,7 +132,7 @@ static int pipe_open(URLContext *h, const char *filename, int flags)
fd = strtol(filename, &final, 10);
if((filename == final) || *final ) {/* No digits found, or something like 10ab */
if (flags & AVIO_FLAG_WRITE) {
if (flags & AVIO_WRONLY) {
fd = 1;
} else {
fd = 0;

View File

@@ -210,7 +210,7 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, AVStream *vst
case AMF_DATA_TYPE_OBJECT: {
unsigned int keylen;
if (ioc->seekable && key && !strcmp(KEYFRAMES_TAG, key) && depth == 1)
if (vstream && ioc->seekable && key && !strcmp(KEYFRAMES_TAG, key) && depth == 1)
if (parse_keyframes_index(s, ioc, vstream, max_pos) < 0)
av_log(s, AV_LOG_ERROR, "Keyframe index parsing failed\n");

View File

@@ -50,7 +50,7 @@ static int gopher_connect(URLContext *h, const char *path)
if (!path) return AVERROR(EINVAL);
break;
default:
av_log(h, AV_LOG_WARNING,
av_log(NULL, AV_LOG_WARNING,
"Gopher protocol type '%c' not supported yet!\n",
*path);
return AVERROR(EINVAL);
@@ -100,7 +100,7 @@ static int gopher_open(URLContext *h, const char *uri, int flags)
ff_url_join(buf, sizeof(buf), "tcp", NULL, hostname, port, NULL);
s->hd = NULL;
err = ffurl_open(&s->hd, buf, AVIO_FLAG_READ_WRITE);
err = ffurl_open(&s->hd, buf, AVIO_RDWR);
if (err < 0)
goto fail;

View File

@@ -73,7 +73,7 @@ void ff_http_set_headers(URLContext *h, const char *headers)
int len = strlen(headers);
if (len && strcmp("\r\n", headers + len - 2))
av_log(h, AV_LOG_ERROR, "No trailing CRLF found in HTTP header.\n");
av_log(NULL, AV_LOG_ERROR, "No trailing CRLF found in HTTP header.\n");
av_strlcpy(s->headers, headers, sizeof(s->headers));
}
@@ -127,7 +127,7 @@ static int http_open_cnx(URLContext *h)
port = 80;
ff_url_join(buf, sizeof(buf), "tcp", NULL, hostname, port, NULL);
err = ffurl_open(&hd, buf, AVIO_FLAG_READ_WRITE);
err = ffurl_open(&hd, buf, AVIO_RDWR);
if (err < 0)
goto fail;
@@ -235,7 +235,7 @@ static int process_line(URLContext *h, char *line, int line_count,
* don't abort until all headers have been parsed. */
if (s->http_code >= 400 && s->http_code < 600 && s->http_code != 401) {
end += strspn(end, SPACE_CHARS);
av_log(h, AV_LOG_WARNING, "HTTP error %d %s\n",
av_log(NULL, AV_LOG_WARNING, "HTTP error %d %s\n",
s->http_code, end);
return -1;
}
@@ -301,7 +301,7 @@ static int http_connect(URLContext *h, const char *path, const char *hoststr,
/* send http header */
post = h->flags & AVIO_FLAG_WRITE;
post = h->flags & AVIO_WRONLY;
authstr = ff_http_auth_create_response(&s->auth_state, auth, path,
post ? "POST" : "GET");
@@ -456,7 +456,7 @@ static int http_close(URLContext *h)
HTTPContext *s = h->priv_data;
/* signal end of chunked encoding if used */
if ((h->flags & AVIO_FLAG_WRITE) && s->chunksize != -1) {
if ((h->flags & AVIO_WRONLY) && s->chunksize != -1) {
ret = ffurl_write(s->hd, footer, sizeof(footer) - 1);
ret = ret > 0 ? 0 : ret;
}

View File

@@ -86,6 +86,8 @@ typedef struct IdcinDemuxContext {
int audio_present;
int64_t pts;
AVPaletteControl palctrl;
} IdcinDemuxContext;
static int idcin_probe(AVProbeData *p)
@@ -170,6 +172,8 @@ static int idcin_read_header(AVFormatContext *s,
if (avio_read(pb, st->codec->extradata, HUFFMAN_TABLE_SIZE) !=
HUFFMAN_TABLE_SIZE)
return AVERROR(EIO);
/* save a reference in order to transport the palette */
st->codec->palctrl = &idcin->palctrl;
/* if sample rate is 0, assume no audio */
if (sample_rate) {
@@ -222,7 +226,6 @@ static int idcin_read_packet(AVFormatContext *s,
int palette_scale;
unsigned char r, g, b;
unsigned char palette_buffer[768];
uint32_t palette[256];
if (url_feof(s->pb))
return AVERROR(EIO);
@@ -233,6 +236,7 @@ static int idcin_read_packet(AVFormatContext *s,
return AVERROR(EIO);
} else if (command == 1) {
/* trigger a palette change */
idcin->palctrl.palette_changed = 1;
if (avio_read(pb, palette_buffer, 768) != 768)
return AVERROR(EIO);
/* scale the palette as necessary */
@@ -247,7 +251,7 @@ static int idcin_read_packet(AVFormatContext *s,
r = palette_buffer[i * 3 ] << palette_scale;
g = palette_buffer[i * 3 + 1] << palette_scale;
b = palette_buffer[i * 3 + 2] << palette_scale;
palette[i] = (r << 16) | (g << 8) | (b);
idcin->palctrl.palette[i] = (r << 16) | (g << 8) | (b);
}
}
@@ -258,15 +262,6 @@ static int idcin_read_packet(AVFormatContext *s,
ret= av_get_packet(pb, pkt, chunk_size);
if (ret < 0)
return ret;
if (command == 1) {
uint8_t *pal;
pal = av_packet_new_side_data(pkt, AV_PKT_DATA_PALETTE,
AVPALETTE_SIZE);
if (ret < 0)
return ret;
memcpy(pal, palette, AVPALETTE_SIZE);
}
pkt->stream_index = idcin->video_stream_index;
pkt->pts = idcin->pts;
} else {

View File

@@ -143,11 +143,11 @@ static int find_image_range(int *pfirst_index, int *plast_index,
if (av_get_frame_filename(buf, sizeof(buf), path, first_index) < 0){
*pfirst_index =
*plast_index = 1;
if (avio_check(buf, AVIO_FLAG_READ) > 0)
if(url_exist(buf))
return 0;
return -1;
}
if (avio_check(buf, AVIO_FLAG_READ) > 0)
if (url_exist(buf))
break;
}
if (first_index == 5)
@@ -165,7 +165,7 @@ static int find_image_range(int *pfirst_index, int *plast_index,
if (av_get_frame_filename(buf, sizeof(buf), path,
last_index + range1) < 0)
goto fail;
if (avio_check(buf, AVIO_FLAG_READ) <= 0)
if (!url_exist(buf))
break;
range = range1;
/* just in case... */
@@ -314,7 +314,7 @@ static int read_packet(AVFormatContext *s1, AVPacket *pkt)
s->path, s->img_number)<0 && s->img_number > 1)
return AVERROR(EIO);
for(i=0; i<3; i++){
if (avio_open(&f[i], filename, AVIO_FLAG_READ) < 0) {
if (avio_open(&f[i], filename, AVIO_RDONLY) < 0) {
if(i==1)
break;
av_log(s1, AV_LOG_ERROR, "Could not open file : %s\n",filename);
@@ -401,7 +401,7 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
return AVERROR(EINVAL);
}
for(i=0; i<3; i++){
if (avio_open(&pb[i], filename, AVIO_FLAG_WRITE) < 0) {
if (avio_open(&pb[i], filename, AVIO_WRONLY) < 0) {
av_log(s, AV_LOG_ERROR, "Could not open file : %s\n",filename);
return AVERROR(EIO);
}

View File

@@ -83,6 +83,18 @@ void ff_read_frame_flush(AVFormatContext *s);
/** Get the current time since NTP epoch in microseconds. */
uint64_t ff_ntp_time(void);
#if FF_API_URL_SPLIT
/**
* @deprecated use av_url_split() instead
*/
void ff_url_split(char *proto, int proto_size,
char *authorization, int authorization_size,
char *hostname, int hostname_size,
int *port_ptr,
char *path, int path_size,
const char *url);
#endif
/**
* Assemble a URL string from components. This is the reverse operation
* of av_url_split.

View File

@@ -86,8 +86,6 @@ typedef struct IPMVEContext {
unsigned int video_width;
unsigned int video_height;
int64_t video_pts;
uint32_t palette[256];
int has_palette;
unsigned int audio_bits;
unsigned int audio_channels;
@@ -107,6 +105,8 @@ typedef struct IPMVEContext {
int64_t next_chunk_offset;
AVPaletteControl palette_control;
} IPMVEContext;
static int load_ipmovie_packet(IPMVEContext *s, AVIOContext *pb,
@@ -151,17 +151,6 @@ static int load_ipmovie_packet(IPMVEContext *s, AVIOContext *pb,
if (av_new_packet(pkt, s->decode_map_chunk_size + s->video_chunk_size))
return CHUNK_NOMEM;
if (s->has_palette) {
uint8_t *pal;
pal = av_packet_new_side_data(pkt, AV_PKT_DATA_PALETTE,
AVPALETTE_SIZE);
if (pal) {
memcpy(pal, s->palette, AVPALETTE_SIZE);
s->has_palette = 0;
}
}
pkt->pos= s->decode_map_chunk_offset;
avio_seek(pb, s->decode_map_chunk_offset, SEEK_SET);
s->decode_map_chunk_offset = 0;
@@ -455,9 +444,10 @@ static int process_ipmovie_chunk(IPMVEContext *s, AVIOContext *pb,
r = scratch[j++] * 4;
g = scratch[j++] * 4;
b = scratch[j++] * 4;
s->palette[i] = (r << 16) | (g << 8) | (b);
s->palette_control.palette[i] = (r << 16) | (g << 8) | (b);
}
s->has_palette = 1;
/* indicate a palette change */
s->palette_control.palette_changed = 1;
break;
case OPCODE_SET_PALETTE_COMPRESSED:
@@ -571,6 +561,9 @@ static int ipmovie_read_header(AVFormatContext *s,
st->codec->height = ipmovie->video_height;
st->codec->bits_per_coded_sample = ipmovie->video_bpp;
/* palette considerations */
st->codec->palctrl = &ipmovie->palette_control;
if (ipmovie->audio_type) {
st = av_new_stream(s, 0);
if (!st)

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