Commit Graph

19689 Commits

Author SHA1 Message Date
Rémi Denis-Courmont
fcc1022611 vdpau: factor out common end-of-frame handling
Also add error handling.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-10-05 10:13:44 +00:00
Rémi Denis-Courmont
319424d25c vdpau: add helper for VDPAU to libav error codes conversion
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-10-05 10:08:53 +00:00
Luca Barbato
68211c70af vc1: Do not assume seek happens after decoding
If a seek is requested before the decoding start there is no
current picture.

CC: libav-stable@libav.org
2014-10-04 23:46:46 +02:00
Michael Niedermayer
d10d1b8655 libx265: enable psnr reporting when requested by the user
This is similar to what is done in libx264.c

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2014-10-01 14:31:48 +01:00
Michael Niedermayer
2cd7c99498 h264: reset ret to avoid propagating minor failures
Unbreak 772d150a6e.

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

CC: libav-stable@libav.org
Sample-Id: hevc-conformance-LTRPSPS_A_Qualcomm_1
2014-09-29 12:33:46 +01:00
Rémi Denis-Courmont
4e03b2097c mpeg12: Always invoke the get_format() callback
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-09-26 21:28:37 +02:00
Rémi Denis-Courmont
ce42316321 h264: Always invoke the get_format() callback
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-09-26 21:28:37 +02:00
Rémi Denis-Courmont
1c80c9d7ef hwaccel: Call ->get_format again if hwaccel init fails
This allows the application to fall back on another hwaccel or,
more likely, software decoding.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-09-26 21:28:36 +02:00
Tristan Matthews
7703995a2e flac: Remove unused headers
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-26 10:33:01 -07:00
Tim Walker
cc4992aaf3 ac3enc: allow Dolby Pro Logic IIz as the Dolby Surround EX mode.
This is actually defined in the A/52 specification.
2014-09-26 17:09:14 +02:00
Tim Walker
4c2fd4b262 ac3enc: allow Dolby Pro Logic II as a preferred downmix mode.
Some encoders already use this value even
though it's reserved in the A/52 specification.
2014-09-26 17:09:13 +02:00
Michael Niedermayer
a97328afef vc1: Use logical instead of bitwise or for twomv
CC: libav-stable@libav.org
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Tim Walker <tdskywalker@gmail.com>
2014-09-26 16:55:36 +02:00
Tim Walker
b5fe13448b vc1: Use logical instead of bitwise or for coded_inter
This appears to be the intended behavior.
2014-09-26 16:18:42 +02:00
Diego Biurrun
b97f6ef956 pcm-dvd: Move a variable to a smaller scope
This avoids an unused variable warning on big-endian systems.
2014-09-26 02:15:34 -07:00
Martin Storsjö
d07ddc93e2 avcodec: Fix a doxy comment to refer to the right function
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-09-25 10:01:25 +03:00
Diego Biurrun
103391ca90 dca: Remove some commented-out cruft 2014-09-20 13:49:52 +02:00
Gabriel Dume
45ff7c93dd dca: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-16 04:42:32 -07:00
Gabriel Dume
ee0ebd3c14 dv: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-09 05:30:28 -07:00
Gabriel Dume
9752d07d33 dirac: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-09 01:39:47 -07:00
Diego Biurrun
1274ea8dba Split off floating point AAN (I)DCT into separate components 2014-09-07 13:36:26 -07:00
Diego Biurrun
2143948381 Drop unnecessary av_unused attributes. 2014-09-05 13:55:04 +02:00
Diego Biurrun
213e606752 Replace av_unused attributes by block structures
This is more portable and avoids warnings with compilers that do not
properly support av_unused.
2014-09-05 13:55:04 +02:00
Diego Biurrun
096a1d5b46 rdft: Move some variables into a separate block
This avoids an unused variable warning with hardcoded tables.
2014-09-05 13:55:03 +02:00
Diego Biurrun
b574e1e97e get_bits: Add OPEN_READER macro variant w/o size_plus8
This avoids a trillion warnings from MSVC.
2014-09-05 13:55:03 +02:00
Diego Biurrun
4d55e9de27 vc1: Split bits used in libavformat into a separate header
This reduces inter-library dependencies.
2014-09-04 07:11:03 -07:00
Diego Biurrun
f20518568a build: Split WMA frequencies into a separate object file
These are the only WMA bits shared with binkaudio. Splitting them off
reduces the binnkaudio dependency on general WMA code.
2014-09-04 05:19:46 -07:00
Diego Biurrun
803f8992f1 build: cosmetics: Group hwaccel OBJS declarations together 2014-09-04 05:19:39 -07:00
Diego Biurrun
2b8b0da09c fdctdsp: cosmetics: Drop one unnecessary if-block level 2014-09-03 03:13:56 -07:00
Gabriel Dume
d2a4e4b9cc wma: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-03 03:09:08 -07:00
Luca Barbato
4912b634b5 x265: Use the encoder defaults
Reset the settings as it is done for x264.
2014-09-03 02:14:17 +02:00
Gabriel Dume
eda7571ea1 wmv2: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-02 16:14:22 -07:00
Pascal Massimino
7a1d6ddd2c xvid: Add C IDCT
Thanks to Pascal Massimino and Michael Militzer for relicensing as LGPL.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-02 14:41:13 -07:00
Diego Biurrun
95c0cec03a idctdsp: Add global function pointers for {add|put}_pixels_clamped functions
These function pointers already existed in the ARM code. Adding them globally
allows calls to the function pointers to access arch-optimized versions of the
functions transparently.
2014-09-02 14:41:13 -07:00
Diego Biurrun
91d305790e get_bits: Rename HAVE_BITS_REMAINING --> BITS_AVAILABLE
The HAVE_ prefix is reserved for macros set by configure.
2014-09-02 13:10:38 +02:00
Gabriel Dume
ff4d1aa8bc flv: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-02 04:03:45 -07:00
Gabriel Dume
f61e47dd68 asv: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-02 03:45:21 -07:00
Gabriel Dume
74512f7e36 8svx: Return proper error codes
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-02 03:42:13 -07:00
Gabriel Dume
e205fe6831 mpeg4videodec: Fix low_delay error message
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-01 05:37:00 -07:00
Gabriel Dume
63f800ca5f aac_adtstoasc_bsf: Return proper error code
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-09-01 05:37:00 -07:00
Diego Biurrun
b8962d64cc dxva2: Clean up definition of _WIN32_WINNT
Only set a value if _WIN32_WINNT is undefined or smaller than 0x0600. This is
cleaner than unconditional definition and avoids a number of redefinition
warnings. Also only define a value in one of the two dxva2 headers.
2014-09-01 12:23:59 +02:00
Diego Biurrun
4600a85eaa dxva2: Pass variable of correct type to IDirectXVideoDecoder_GetBuffer()
This avoids related incompatible pointer type warnings.
2014-09-01 12:23:58 +02:00
Michael Niedermayer
37c46743ee avcodec: fix missing doxygen comment marker 2014-09-01 00:52:22 +01:00
Vittorio Giovara
9301486408 avcodec: add stream-level stereo3d side data 2014-08-28 12:33:26 -04:00
Diego Biurrun
8d27bf1cff x86: xvid: K&R formatting cosmetics 2014-08-27 05:58:04 -07:00
Diego Biurrun
dcb7c868ec cosmetics: Make naming scheme of Xvid IDCT consistent with other IDCTs 2014-08-27 04:54:05 -07:00
Diego Biurrun
1f156af427 x86: xvid_idct: Drop unused definitions 2014-08-27 04:36:41 -07:00
Luca Barbato
ff771f79b5 vc1: Initialize start_code_found to 0
Leftover of a4d3c20035.
2014-08-27 12:36:41 +02:00
Vittorio Giovara
e87f5e4e5f h264: fully check cropping amount from sps
Even if sps.crop is true, the cropping amount may be zero.
Fixes a sample with a valid but broken container cropping.
2014-08-26 13:31:29 -04:00
Gabriel Dume
0a02426826 libxvid: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-26 19:22:17 +02:00
Luca Barbato
a4d3c20035 vc1: Fix the skip condition
As written in the comment above, skip must be added only if a
start code is found.
2014-08-26 03:43:13 +02:00
Janne Grunau
dc4b2e7d33 rv34: use ff_mpeg_update_thread_context only when decoder is fully initialized
MpegEncContext based decoders are only fully initialized after the first
ff_thread_get_buffer() call. The RV30/40 decoders may fail before a frame
buffer was requested. ff_mpeg_update_thread_context() fails on half
initialized MpegEncContexts. Since this can only happen before a the
first frame was decoded there is no need to call
ff_mpeg_update_thread_context().

Based on patches by John Stebbins and tested by John Stebbins.

CC: libav-stable@libav.org
2014-08-22 13:11:43 +02:00
Diego Biurrun
8fc6a70c21 mpeg12enc: Add missing #include for PICT_FRAME 2014-08-21 04:18:23 -07:00
Diego Biurrun
7cb66ebc0b error_resilience: Drop asserts from guess_mv()
The asserts check struct members that are not referenced in guess_mv()
and one of them fails to compile.
2014-08-21 04:18:23 -07:00
Diego Biurrun
6af2930222 pcm: Drop av_unused attribute from variable that is always used 2014-08-19 06:22:08 -07:00
Diego Biurrun
14d2006ca6 pcm: Drop unused variable from DECODE_PLANAR macro 2014-08-19 06:22:07 -07:00
Diego Biurrun
d456baafb6 vc1: Add missing parentheses to conditions in vc1_decode_b_mb_intfr() 2014-08-19 06:22:07 -07:00
Christophe Gisquet
41e1354c10 proresenc: Properly account for alpha plane
The packet buffer allocation considers the alpha channel as DCT-coded,
while it is actually run-coded and thus requires a larger buffer.

CC: libav-stable@libav.org

Signed-off-by: Diego Biurrun <diego@biurrun.de>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-18 18:58:01 +02:00
Christophe Gisquet
45ce880a9b proresenc: Realloc if buffer is too small
The buffer allocation may be incorrect (e.g. with an alpha plane),
and currently causes the buffer to be set to NULL by init_put_bits,
causing a crash later on.

So, detect that situation, and if detected, reallocate the buffer
and ask for a sample that shows the problem.

CC: libav-stable@libav.org

Signed-off-by: Diego Biurrun <diego@biurrun.de>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-18 18:57:06 +02:00
Christophe Gisquet
58b68e4fde proresenc: Report buffer overflow
If the allocated size, despite best efforts, is too small, exit
with the appropriate error.

CC: libav-stable@libav.org

Signed-off-by: Diego Biurrun <diego@biurrun.de>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-18 18:51:44 +02:00
Christophe Gisquet
b16699f2da proresenc: Remove unneeded parameters from encode_alpha_plane()
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-18 18:48:14 +02:00
Diego Elio Pettenò
12640e4cbb tiff: Return proper error for missing LZMA compression
The LZMA support is a semi-official extension supported by libtiff 4.0.0
and later.

Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-18 14:23:24 +02:00
Gabriel Dume
4b1f5e5090 cosmetics: Write NULL pointer inequality checks more compactly
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-15 05:34:13 -07:00
Gabriel Dume
f929ab0569 cosmetics: Write NULL pointer equality checks more compactly
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-15 03:18:18 -07:00
Diego Biurrun
efd26bedec build: Add explanatory comments to (optimization) blocks in the Makefiles 2014-08-15 02:55:21 -07:00
Diego Biurrun
835f798c7d mpegvideo: cosmetics: Lowercase ugly uppercase MPV_ function name prefixes 2014-08-15 01:26:33 -07:00
John Stebbins
552bc42df4 h261dec: Fix order of initialization
ff_MPV_common_init requires the frame dimensions which get parsed in
h261_decode_picture_header.
2014-08-14 07:58:50 -07:00
John Stebbins
b869eea7ea h263dec: Fix order of initialization
ff_MPV_common_init requires the frame dimensions which get parsed in
*_decode_picture_header.
2014-08-14 07:58:50 -07:00
John Stebbins
998c9f15d1 idct: remove call to ff_idctdsp_init from ff_MPV_common_init
One step in untangling the mpegvideo code and fixing some problems in
the order that initialization is being done in h263dec and h261dec.
2014-08-14 07:58:49 -07:00
Nidhi Makhijani
93f29948e4 mpeg4video: Fix doxygen comment syntax to document correct struct member
Also fix some comment typos.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-14 11:59:59 +02:00
Edgar Hucek
ab059f0aa8 vaapi: set the scaling list correctly.
Fixes VAAPI decoding artefacts.

CC:libav-stable@libav.org

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-14 05:50:08 +00:00
Michael Niedermayer
da7d839a0d ffv1dec: check that global parameters do not change in version 0/1
Such changes are neither allowed nor supported

Found-by: ami_stuff
Bug-Id: CVE-2013-7020
CC: libav-stable@libav.org
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-12 10:21:21 +00:00
Christophe Gisquet
3187fa14a3 hevc_mvs: avoid deriving tmvp in amvp
Reduces the number of calls to tmvp derivation from 933685 to 586271 on
a sequence.

Reviewed-by: Mickaël Raulet <mraulet@insa-rennes.fr>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-12 10:13:43 +00:00
Christophe Gisquet
14ca0aa69b hevc: wait proper position for tmvp
The position is either rounded or not checked, so delay the wait to
check the proper value.

Reviewed-by: Mickaël Raulet <mraulet@insa-rennes.fr>

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-12 10:13:21 +00:00
Christophe Gisquet
cf6090dc62 hevc: use intreadwrite
When dealing with MVs, both components may be processed at a time.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-12 10:03:20 +00:00
Christophe Gisquet
ed53cc217f hevc: derive partial merge list
The merge list only needs to be derived up to the merge index.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-12 09:59:30 +00:00
Christophe Gisquet
3505b19652 hevc: derive partially amvp list
When the candidate has been found, no need to derive others.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-12 09:58:14 +00:00
Christophe Gisquet
09182b3224 hevc: simplify rounding
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-12 09:57:25 +00:00
Christophe Gisquet
d1b1c3bb5e hevc: reorder loops
iterate over memory in a more continuous order

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-12 09:57:05 +00:00
Diego Biurrun
cc1d8c54c1 avcodec: Postpone FF_IDCT_XVIDMMX removal until the next version bump 2014-08-10 10:41:55 -07:00
Anton Khirnov
d63443b968 lavc: drop the av_fast_{re,m}alloc compatibility wrappers
They were only needed until the bump.
2014-08-10 15:40:38 +00:00
Diego Elio Pettenò
2597a842a0 tiff: Improve grayscale support
Only use PAL8 if palette is present, else use GRAY8 for pixfmt.

Instead of simulating a grayscale palette, use real grayscale pixels, if no
palette is actually defined.

Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-10 15:21:44 +02:00
Anton Khirnov
9325d88eba lavc: remove obsolete and disabled avpriv functions 2014-08-09 16:59:34 +00:00
Anton Khirnov
472f9ed312 Remove obsolete FF_API_AVFRAME_COLORSPACE cruft. 2014-08-09 16:59:13 +00:00
Anton Khirnov
1985c2e75c Bump major versions of all libraries. 2014-08-09 16:58:33 +00:00
Anton Khirnov
f4c444e17d Postpone API-incompatible changes until the next bump. 2014-08-09 16:57:10 +00:00
Anton Khirnov
7acdd3a127 hevc_filter: avoid excessive calls to ff_hevc_get_ref_list()
1) each of the loops run within a single CTB, so the relevant reference
list is constant
2) when that CTB is, or lies on the same slice as, the current one, we
can use a simple access instead of a relatively expensive call to
ff_hevc_get_ref_list()
2014-08-09 16:15:51 +00:00
Anton Khirnov
52a2c17ec0 hevc_refs: drop the handling of negative coordinates in ff_hevc_get_ref_list()
It makes no sense and cannot happen in any place from which this
function is called.
2014-08-09 16:15:38 +00:00
Anton Khirnov
a7a17e3f19 hevc_filter: move some conditions out of loops 2014-08-09 16:15:11 +00:00
Anton Khirnov
70211539a3 hevc: deobfuscate slice/tile boundary handling for DBF
Use named constants instead of magic numbers, avoid using variables with
inverse meaning from what their name implies.
2014-08-09 16:13:48 +00:00
Anton Khirnov
5501971578 hevc_filter: drop more redundant checks
The if() around those loops ensures this condition is always false.
2014-08-09 16:13:37 +00:00
Anton Khirnov
65b8b6c476 hevc_filter: drop redundant checks
ff_hevc_deblocking_boundary_strengths() is never called if the
deblocking filter is disabled for the slice.
2014-08-09 16:13:24 +00:00
Anton Khirnov
4d1ff2a489 hevc: calculate the dbf strength in hls_pcm_sample() only if dbf is enabled 2014-08-09 16:13:11 +00:00
Diego Biurrun
d35b94fbab avcodec: Rename xvidmmx IDCT to xvid
The Xvid IDCT is not MMX-specific.
2014-08-08 11:13:30 -07:00
Diego Biurrun
84d173d3de xvididct: Ensure that the scantable permutation is always set correctly
This fixes cases where the scantable permuation would get overwritten by
the general idctdsp initialization.
2014-08-08 11:13:29 -07:00
Diego Biurrun
6f1960ab71 idct: cosmetics: Drop one unnecessary if-block level 2014-08-08 11:13:29 -07:00
Diego Biurrun
ad1ee5fa75 avcodec: Undeprecate reordered_opaque
It allows attaching other external, opaque data to the frame and passing it
through the reordering process, for cases when the caller wants other data
than just the plain packet pts.  There is no way to cleanly achieve this
without the field.
2014-08-07 04:03:00 -07:00
Felix Abecassis
a7e541c992 h264: fix interpretation of interleved stereo modes
Column and row frame packing arrangements were inverted.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-08-07 11:31:47 +01:00
Anton Khirnov
7b588bb691 svq1: do not modify the input packet
The input data must remain constant, make a copy instead. This is in
theory a performance hit, but since I failed to find any samples
using this feature, this should not matter in practice.

Also, check the size of the header, avoiding invalid reads on truncated
data.

CC:libav-stable@libav.org
2014-08-06 18:59:27 +00:00
Anton Khirnov
c7d9b473e2 cdgraphics: do not return 0 from the decode function
0 means no data consumed, so it can trigger an infinite loop in the
caller.

CC:libav-stable@libav.org
2014-08-06 18:32:42 +00:00
Anton Khirnov
a1599f3f7e cdgraphics: switch to bytestream2
Fixes possible invalid memory accesses on corrupted data.

CC:libav-stable@libav.org
Bug-ID: CVE-2013-3674
2014-08-06 18:32:38 +00:00
Vittorio Giovara
cbc808d726 jpeg2000: enable 4 component pixel formats
Bug-Id: 721
CC: libav-stable@libav.org
Sample-Id: 31230.mov
2014-08-06 12:23:21 +01:00
Michael Niedermayer
a7153444df huffyuvdec: check width size for yuv422p
Avoid out of array accesses.

CC: libav-stable@libav.org
Bug-Id: CVE-2013-0848
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-05 20:01:59 +00:00
Michael Niedermayer
70cd3b8e65 mmvideo: check horizontal coordinate too
Fixes out of array accesses.

Bug-Id: CVE-2013-3672
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-05 19:16:12 +00:00
Michael Niedermayer
849b9d34c7 wmalosslessdec: fix mclms_coeffs* array size
Fixes corruption of context

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC:libav-stable@libav.org
Bug-Id: CVE-2014-2098
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-08-05 14:58:03 +00:00
Ben Avison
701e8b42e1 vc-1: Optimise parser (with special attention to ARM)
The previous implementation of the parser made four passes over each input
buffer (reduced to two if the container format already guaranteed the input
buffer corresponded to frames, such as with MKV). But these buffers are
often 200K in size, certainly enough to flush the data out of L1 cache, and
for many CPUs, all the way out to main memory. The passes were:

1) locate frame boundaries (not needed for MKV etc)
2) copy the data into a contiguous block (not needed for MKV etc)
3) locate the start codes within each frame
4) unescape the data between start codes

After this, the unescaped data was parsed to extract certain header fields,
but because the unescape operation was so large, this was usually also
effectively operating on uncached memory. Most of the unescaped data was
simply thrown away and never processed further. Only step 2 - because it
used memcpy - was using prefetch, making things even worse.

This patch reorganises these steps so that, aside from the copying, the
operations are performed in parallel, maximising cache utilisation. No more
than the worst-case number of bytes needed for header parsing is unescaped.
Most of the data is, in practice, only read in order to search for a start
code, for which optimised implementations already existed in the H264 codec
(notably the ARM version uses prefetch, so we end up doing both remaining
passes at maximum speed). For MKV files, we know when we've found the last
start code of interest in a given frame, so we are able to avoid doing even
that one remaining pass for most of the buffer.

In some use-cases (such as the Raspberry Pi) video decode is handled by the
GPU, but the entire elementary stream is still fed through the parser to
pick out certain elements of the header which are necessary to manage the
decode process. As you might expect, in these cases, the performance of the
parser is significant.

To measure parser performance, I used the same VC-1 elementary stream in
either an MPEG-2 transport stream or a MKV file, and fed it through avconv
with -c:v copy -c:a copy -f null. These are the gperftools counts for
those streams, both filtered to only include vc1_parse() and its callees,
and unfiltered (to include the whole binary). Lower numbers are better:

                Before          After
File  Filtered  Mean   StdDev   Mean   StdDev  Confidence  Change
M2TS  No        861.7  8.2      650.5  8.1     100.0%      +32.5%
MKV   No        868.9  7.4      731.7  9.0     100.0%      +18.8%
M2TS  Yes       250.0  11.2     27.2   3.4     100.0%      +817.9%
MKV   Yes       149.0  12.8     1.7    0.8     100.0%      +8526.3%

Yes, that last case shows vc1_parse() running 86 times faster! The M2TS
case does show a larger absolute improvement though, since it was worse
to begin with.

This patch has been tested with the FATE suite (albeit on x86 for speed).

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-04 22:22:54 +02:00
Ben Avison
adf8227cf4 vc-1: Add platform-specific start code search routine to VC1DSPContext.
Initialise VC1DSPContext for parser as well as for decoder.
Note, the VC-1 code doesn't actually use the function pointer yet.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-04 22:22:54 +02:00
Ben Avison
db7f1c7c5a h264: Move start code search functions into separate source files.
This permits re-use with parsers for codecs which use similar start codes.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-04 22:22:54 +02:00
Diego Biurrun
990e2f3555 avcodec: Suppress deprecation warnings from DTG code scheduled for removal 2014-08-04 11:08:35 -07:00
Carl Eugen Hoyos
60cbd6ad84 tiff: support reading gray+alpha at 8 bits
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-08-04 12:57:39 +01:00
Vittorio Giovara
bcc5f69b33 tiff: support reading gray+alpha at 16 bits 2014-08-04 12:57:38 +01:00
Vittorio Giovara
e64f0bf2d2 png: support reading gray+alpha at 16 bits 2014-08-04 12:57:38 +01:00
Vittorio Giovara
2257165bff png: disable broken MMX/SIMD code for bpp <= 2
The decoder was producing different results when ASM was disabled.
Based on a long debug session with Kostya.
2014-08-04 12:57:38 +01:00
Vittorio Giovara
e96c3b81ca avutil: rename AV_PIX_FMT_Y400A to AV_PIX_FMT_YA8
The rationale is that you have a packed format in form
<greyscale sample> <alpha sample> <greyscale sample> <alpha sample>
and shortening greyscale to 'G' might make one thing about Greenscale instead.
An alias pixel format and color space name are provided for compatibility.
2014-08-04 12:55:08 +01:00
Kieran Kunhya
1ef9e83764 avcodec: Deprecate dtg_active_format field in favor of avframe side-data
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-03 15:43:02 -07:00
Diego Biurrun
d0393d79bc huffyuv: Check and propagate function return values
Bug-Id: CVE-2013-0868

inspired by a patch from Michael Niedermayer <michaelni@gmx.at>
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Diego Biurrun <diego@biurrun.de>

CC: libav-stable@libav.org
2014-08-03 15:35:30 -07:00
Diego Biurrun
6234058148 huffyuv: Return proper error codes 2014-08-03 15:18:58 -07:00
Diego Biurrun
3160bdc7f7 huffyuv: Use avpriv_report_missing_feature() where appropriate 2014-08-03 15:18:58 -07:00
Diego Biurrun
b7616f5716 huffyuv: Eliminate some pointless casts 2014-08-03 15:18:58 -07:00
Diego Biurrun
c065f4a0c6 huffyuv: K&R formatting cosmetics 2014-08-03 15:18:58 -07:00
Anton Khirnov
f89d76c103 mpeg4video: Initialize xvididct for all threads
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-03 15:18:58 -07:00
Janne Grunau
ac6b95dbc0 aarch64: add ',' between assembler macro arguments where missing
llvm's integrated assembler does not accept spaces as macro argument
delimiter when targeting darwin. Using a explicit delimiter is a good
idea in principle since it makes case like 'macro 4 -2' vs 'macro 4 - 2'
clear.
2014-08-04 00:17:21 +02:00
Diego Biurrun
9f17685dfb avcodec: Deprecate unused defines and options 2014-08-03 03:24:16 -07:00
Diego Biurrun
bad81800bb avcodec: options: Add missing deprecation ifdefs around emu_edge 2014-08-03 03:24:15 -07:00
Diego Biurrun
c697c590fb lcl: Disentangle pointers to input data and decompression buffer
This is cleaner and avoids a cast plus a related const qualifier warning.
2014-08-03 01:29:43 -07:00
Diego Biurrun
df507d5aa0 tiff: Replace deprecated PIX_FMT names by modern ones 2014-08-02 12:54:37 -07:00
Diego Biurrun
7835c24e19 dv: Update DV-profile-related functions to current public API 2014-08-02 12:54:37 -07:00
Diego Biurrun
ffa4d4ef0b ppc: fft: Build AltiVec optimizations in the standard way 2014-08-02 07:40:37 -07:00
Vittorio Giovara
7ab551f9fd h264: prevent theoretical infinite loop in SEI parsing
Properly address CVE-2011-3946 and parse bitstream as described in the spec.

CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2014-08-01 13:08:32 +01:00
Vittorio Giovara
92a36a6b33 pngdec: correctly indent macros 2014-08-01 13:07:53 +01:00
Diego Biurrun
4da8cdbb91 tscc: Eliminate pointless variable indirections in decode_frame() 2014-08-01 04:08:46 -07:00
Diego Biurrun
5735552f1f pngenc: Drop pointless pointer cast in png_write_row() 2014-08-01 04:08:45 -07:00
Diego Biurrun
a786c8259d idct: Split off Xvid IDCT
The Xvid IDCT is only required to decode some Xvid-encoded MPEG-4 files,
so there is no point in having it as an unconditional part of idctdsp.
2014-08-01 01:25:18 -07:00
Diego Biurrun
03c9f357a4 ppc: idctdsp: Immediately return if no AltiVec is available
This is how all the other init functions operate.
2014-08-01 01:23:11 -07:00
Michael Niedermayer
d98e6c5d5d pgssubdec: Check RLE size before copying
Make sure the buffer size does not exceed the expected
RLE size.

Prevent an out of array bound write.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Bug-Id: CVE-2013-0852

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-01 02:13:32 +02:00
Nidhi Makhijani
ccbf370f20 mpegvideo: move vol_control_parameters to the only place it is used
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-29 09:13:18 -07:00
Diego Biurrun
019a28cd63 sanm: Use correct printf conversion specifiers for POSIX int types 2014-07-28 13:19:04 -07:00
Diego Biurrun
4f8cf0dc4e x86: build: Restore ordering of OBJS lines 2014-07-28 13:19:04 -07:00
Anton Khirnov
e76f2d1197 hevc: eliminate the last element from TransformTree
Replace it by passing an additional parameter to transform_unit()
2014-07-28 08:10:35 +00:00
Anton Khirnov
4aa80808bc hevc: eliminate unnecessary cbf_c{b,r} arrays
They are replaced by passing additional parameters to the transform
functions.
2014-07-28 08:09:18 +00:00
Anton Khirnov
0daa255463 hevc: do not store the transform inter_split flag in the context
It does not need to be preserved.
2014-07-28 08:05:47 +00:00
Anton Khirnov
53a11135f2 hevc: simplify splitting the transform tree blocks 2014-07-28 08:04:19 +00:00
Anton Khirnov
e36a2f4c52 hevc: eliminate an unnecessary array
We do not need to store the value of the split flag.
2014-07-28 08:03:53 +00:00
Anton Khirnov
4b169321b8 codec_desc: fix some typos in long codec names
The rv20 typo spotted by Hendrik Leppkes <h.leppkes@gmail.com>
2014-07-28 08:03:13 +00:00
Anton Khirnov
c5fca0174d lavc: add a property for marking codecs that support frame reordering 2014-07-28 08:02:50 +00:00
Anton Khirnov
541427ab4d eamad: use the bytestream2 API instead of AV_RL
This is safer and possibly fixes invalid reads on truncated data.

CC:libav-stable@libav.org
2014-07-27 07:10:54 +00:00
Diego Biurrun
53abe32409 avcodec: Mark argument in av_{parser|hwaccel|bitstream_filter}_next as const 2014-07-26 14:51:16 -07:00
Pierre Edouard Lepere
1a880b2fb8 hevc: SSE2 and SSSE3 loop filters
Additional contributions by James Almer <jamrial@gmail.com>,
Carl Eugen Hoyos <cehoyos@ag.or.at>, Fiona Glaser <fiona@x264.com> and
Anton Khirnov <anton@khirnov.net>

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-07-26 15:01:01 +00:00
Anton Khirnov
73bb8f61d4 hevcdsp: remove an unneeded variable in the loop filter
beta0 and beta1 will always be the same
2014-07-26 15:00:11 +00:00
Diego Biurrun
d8520d3ee0 mpegvideo: Move QMAT_SHIFT* defines to the only place they are used 2014-07-25 12:00:53 -07:00
Diego Biurrun
4fbb62a21b mpegvideo: Move ME_MAP_* defines to the only place they are used 2014-07-25 12:00:53 -07:00
Diego Biurrun
ff85334375 mpegvideo: Drop unused MPEG_BUF_SIZE and CHROMA_444 defines 2014-07-25 12:00:52 -07:00
Diego Biurrun
165e9df195 fft-test: Pass the right struct members instead of casting 2014-07-25 06:54:37 -07:00
Diego Biurrun
58e65e44f4 vc1dsp: Add wrappers for {avg|put}_vc1_mspel_mc00_c
This avoids invoking the wrapped functions with too many arguments.
2014-07-25 02:52:54 -07:00
Diego Biurrun
7fb993d338 qpeldsp: Mark source pointer in qpel_mc_func function pointer const 2014-07-25 02:52:54 -07:00
Diego Biurrun
060e4a9e06 dct/rdft: Remove duplicate typedefs for context structs
The typedefs also exist in the avfft.h header and since typedefs cannot be
legally redefined in C, the code fails to compile with some compilers.

This reverts commits 11c7155cce and 57f1b1dcc7.
2014-07-25 02:02:15 -07:00
Nidhi Makhijani
436ced244f mpegenccontext: Remove unused opaque pointer
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-24 07:59:44 -07:00
Diego Biurrun
d0de7330b9 fft-test: Pass correct struct members to (i)dct functions
This fixes a number of incompatible pointer type warnings.
2014-07-23 13:05:25 -07:00
Diego Biurrun
6133d65861 fft-test: K&R formatting cosmetics
Also rearrange #includes into canonical order.
2014-07-23 13:05:19 -07:00
Diego Biurrun
c3c96deb5f fft-test: Check memory allocations 2014-07-23 06:05:02 -07:00
Diego Biurrun
7288b34585 fft-test: Drop unnecessary pointer indirection for context structs 2014-07-23 06:05:02 -07:00
Diego Biurrun
d445c865f8 fft-test: Reduce variable scope where sensibly possible
Also merge variable declaration and initialization.
2014-07-23 06:05:02 -07:00
Nidhi Makhijani
eac77fcd56 mpegenccontext: Remove unused dct_unquantize_h261 function pointers
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-23 05:07:21 -07:00
Diego Biurrun
20ec0daaa1 fft-test: Make global exptab variable static 2014-07-23 03:45:33 -07:00
Diego Biurrun
2b6ab3a2bd mpegvideo: Move QUANT_BIAS_SHIFT define to the only place it is used 2014-07-23 03:16:55 -07:00
Diego Biurrun
5be7d8597d fft-test: Comment some #endifs 2014-07-22 11:55:40 -07:00
Diego Biurrun
57f1b1dcc7 fft-test: Drop unnecessary #ifdefs around header includes 2014-07-22 11:55:40 -07:00
Diego Biurrun
11c7155cce dct/rdft: Add missing typedefs for context structs
Without the typedefs there can be trouble depending on #include order.
2014-07-22 11:55:40 -07:00
Diego Biurrun
eba2233b58 build: Add define for SIMD extensions requiring 16-byte aligned buffers 2014-07-22 11:46:35 -07:00
Diego Biurrun
67bc1ba5d7 libxvid: Drop PPC-specific CPU detection hack
It is doubtful if the hack (still) works and Xvid had ten years to fix it.
2014-07-22 11:45:07 -07:00
Diego Biurrun
78670fbf07 imgconvert: cosmetics: Reshuffle defines to reduce ifdeffery 2014-07-21 15:08:01 -07:00
Ben Avison
6869612f5c arm: Macroize the test for 'setend' CPU instruction support
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-21 15:08:01 -07:00
James Yu
16e6652286 aarch64: NEON intrinsics dct_unquantize_h263.
Intrinsics only used on aarch64 since the existing ARMv7 NEON asm
is slightly faster (Cortex-A9, gcc-4.8, micro-benchmarks and full
decoding time).

Signed-off-by: James Yu <james.yu@linaro.org>
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2014-07-21 23:18:29 +02:00
Diego Biurrun
2ce53880bf build: Conditionally compile all avcodec test programs 2014-07-21 05:33:03 -07:00
Diego Biurrun
16b7328058 build: Conditionally build and run DCT test program 2014-07-21 05:32:35 -07:00
Diego Biurrun
bd499d9af6 build: Conditionally build and test iirfilter 2014-07-21 05:32:07 -07:00
Nidhi Makhijani
c3ec963d0d mjpeg: return proper error code
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-21 01:25:33 -07:00
Diego Biurrun
81b9bf3192 dct-test: Move arch-specific bits into arch-specific subdirectories 2014-07-21 01:10:11 -07:00
Janne Grunau
a9f3f5fadb Revert "tiff: support reading gray+alpha at 8 bits"
This reverts commit b31d76e45f as it
uses an unkown pixel format.
2014-07-21 08:35:32 +02:00
Ronald S. Bultje
c39059bea3 h264: Fix direct temporal mvs for bottom-field-first poc order
Such files can be created using the --bff x264 option.

Sample-Id: h264_direct_temporal_mvs_bff.mkv
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-07-20 23:32:13 +01:00
Carl Eugen Hoyos
b31d76e45f tiff: support reading gray+alpha at 8 bits
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-07-20 23:32:13 +01:00
Diego Biurrun
4de8b60684 idct: Move arm-specific declarations to a header in the arm directory 2014-07-20 13:02:17 -07:00
Nidhi Makhijani
9f99a5f1d0 mpegencconetxt: Move rv10-specific orig_width/orig_height where they belong
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-20 05:13:01 -07:00
Diego Biurrun
1a583c0c60 fdct: Move ppc-specific declarations to a header in the ppc directory 2014-07-19 02:38:22 -07:00
Diego Biurrun
5dcc201505 simple_idct: Move x86-specific declarations to a header in the x86 directory 2014-07-19 02:33:36 -07:00
Diego Biurrun
85cabb8d00 fdct: Move x86-specific declarations to a header in the x86 directory 2014-07-19 02:25:59 -07:00
Diego Biurrun
e0a2e60c0a dct-test: Reuse enum idct_permutation_type instead of duplicating it 2014-07-18 13:04:39 -07:00
Diego Biurrun
913fa85a2c dct-test: Skip indirection for MMX IDCT permutation 2014-07-18 09:58:17 -07:00
Diego Biurrun
9e0b29911f x86: dnxhdenc: Eliminate some unnecessary ifdefs 2014-07-18 09:58:17 -07:00
Nidhi Makhijani
b4edbe9a0e libgsm: Split decoder and encoder
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-18 17:27:54 +02:00
Diego Biurrun
8b0dd4942a idctdsp: prettyprinting cosmetics 2014-07-18 07:51:03 -07:00
Diego Biurrun
b4987f7219 idct: Convert IDCT permutation #defines to an enum
Also rename the enum values to be consistent with other DCT permutations.
2014-07-18 07:51:03 -07:00
Diego Biurrun
24af1aa0f7 fft: Convert FFT/MDCT permutation type #defines to enums 2014-07-18 07:29:13 -07:00
Diego Biurrun
746ad4e0df dct-test: Improve CPU flags struct member name 2014-07-18 06:14:43 -07:00
Diego Biurrun
cb44b21da1 dct-test: Move cpu_flags variable out of global scope 2014-07-18 06:14:42 -07:00
Martin Storsjö
7e18a727d2 arm: cosmetics: Consistently use lowercase for shift operators
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-07-18 11:17:40 +03:00
Martin Storsjö
fe67f3fbb5 arm: cosmetics: Fix a misaligned asm operand
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-07-18 11:17:35 +03:00
Ben Avison
87552d54d3 armv6: Accelerate ff_fft_calc for general case (nbits != 4)
The previous implementation targeted DTS Coherent Acoustics, which only
requires nbits == 4 (fft16()). This case was (and still is) linked directly
rather than being indirected through ff_fft_calc_vfp(), but now the full
range from radix-4 up to radix-65536 is available. This benefits other codecs
such as AAC and AC3.

The implementaion is based upon the C version, with each routine larger than
radix-16 calling a hierarchy of smaller FFT functions, then performing a
post-processing pass. This pass benefits a lot from loop unrolling to
counter the long pipelines in the VFP. A relaxed calling standard also
reduces the overhead of the call hierarchy, and avoiding the excessive
inlining performed by GCC probably helps with I-cache utilisation too.

I benchmarked the result by measuring the number of gperftools samples that
hit anywhere in the AAC decoder (starting from aac_decode_frame()) or
specifically in the FFT routines (fft4() to fft512() and pass()) for the
same sample AAC stream:

              Before          After
              Mean   StdDev   Mean   StdDev  Confidence  Change
Audio decode  2245.5 53.1     1599.6 43.8    100.0%      +40.4%
FFT routines  940.6  22.0     348.1  20.8    100.0%      +170.2%

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-07-18 01:34:23 +03:00
Ben Avison
5c22e8e4ad armv6: Accelerate ff_imdct_half for general case (mdct_bits != 6)
The previous implementation targeted DTS Coherent Acoustics, which only
requires mdct_bits == 6. This relatively small size lent itself to
unrolling the loops a small number of times, and encoding offsets
calculated at assembly time within the load/store instructions of each
iteration.

In the more general case (codecs such as AAC and AC3) much larger arrays
are used - mdct_bits == [8, 9, 11]. The old method does not scale for
these cases, so more integer registers are used with non-unrolled versions
of the loops (and with some stack spillage). The postrotation filter loop
is still unrolled by a factor of 2 to permit the double-buffering of some
VFP registers to facilitate overlap of neighbouring iterations.

I benchmarked the result by measuring the number of gperftools samples
that hit anywhere in the AAC decoder (starting from aac_decode_frame())
or specifically in ff_imdct_half_c / ff_imdct_half_vfp, for the same
example AAC stream:

                  Before          After
                  Mean   StdDev   Mean   StdDev  Confidence  Change
aac_decode_frame  2368.1 35.8     2117.2 35.3    100.0%      +11.8%
ff_imdct_half_*   457.5  22.4     251.2  16.2    100.0%      +82.1%

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-07-18 01:34:08 +03:00
Diego Biurrun
2d60444331 dsputil: Split motion estimation compare bits off into their own context 2014-07-17 09:07:10 -07:00
Diego Biurrun
c23ce454b3 x86: dsputil: Coalesce all init files
This makes the init files match the structure of the dsputil split.
2014-07-17 03:32:56 -07:00
Luca Barbato
2db953f846 h264: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-07-17 03:05:24 -07:00
Diego Biurrun
a11ef610ee h264: Remove some commented-out, broken cruft 2014-07-16 12:26:34 -07:00
Diego Biurrun
adff0a8166 arm: dsputil: Coalesce all init files 2014-07-16 06:18:23 -07:00
Vittorio Giovara
14b4e64eab g2meet: allow size changes within original sizes 2014-07-15 20:08:16 -04:00
Diego Biurrun
acf91215c7 x86: dsputil: Avoid pointless CONFIG_ENCODERS indirection
The remaining dsputil bits are encoding-specific anyway.
2014-07-13 07:01:05 -07:00
Diego Biurrun
a8552ee3eb ppc: dsputil: Coalesce all init files 2014-07-13 04:10:13 -07:00
Diego Biurrun
1173320249 dsputil: Drop unused bit_depth parameter from all init functions 2014-07-11 06:38:26 -07:00
Gildas Cocherel
458e7c9483 hevc: implement pic_output_flag handling
Sample-Id: OPFLAG_B_Qualcomm_1.bit, OPFLAG_C_Qualcomm_1.bit
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-07-11 08:52:54 +00:00
Mickaël Raulet
f43789b76e hevc: set the keyframe flag on output frames
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-07-11 08:43:01 +00:00
Mickaël Raulet
1493b237bd hevc: Replace nal type chek with equivalent IS_IRAP macro
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-07-11 08:41:32 +00:00
Anton Khirnov
17e9d52c8c hevc_ps: remove a write-only variable 2014-07-11 08:38:51 +00:00
Diego Biurrun
f46bb608d9 dsputil: Split off pixel block routines into their own context 2014-07-09 08:05:26 -07:00
Vittorio Giovara
0569a7e0bd hevc: parse display orientation SEI message
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-07-09 10:18:06 -04:00
Vittorio Giovara
18e3d61e9e h264: parse display orientation SEI message
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-07-09 10:17:42 -04:00
Anton Khirnov
d5cf5afabb adxdec: get rid of an avpriv function
The only thing the demuxer needs is the sample rate to set the timebase,
which can be simply read with AV_RB32.
2014-07-09 13:37:18 +00:00
Anton Khirnov
f6ee61fb05 lavc: export DV profile API used by muxer/demuxer as public 2014-07-09 13:35:07 +00:00
Martin Storsjö
79fce1ec8a arm: Avoid using the 'setend' instruction on ARMv7 and newer
This instruction is deprecated on ARMv8, and it is serializing on
some ARMv7 cores as well [1].

[1] http://article.gmane.org/gmane.linux.ports.arm.kernel/339293

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-07-08 12:09:09 +03:00
Diego Biurrun
a9aee08d90 dsputil: Split off FDCT bits into their own context 2014-07-07 12:28:45 -07:00
Omer Osman
1e9a93bfca libfdk-aacdec: Decode the first AAC frame to reliably identify the bitstream
For implicit signaling cases (as possible for Spectral Band Replication
and Parametric Stereo Tools), the decoder must decode the first frame to
correctly identify the stream configuration (as called from
avformat_find_stream_info). The mechanism for this is built-in and only
requires adding CODEC_CAP_CHANNEL_CONF to the libfdk-aacdec AVCodec
struct.

Signed-off-by: Omer Osman <omer.osman@iis.fraunhofer.de>
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-07-07 22:09:15 +03:00
Nidhi Makhijani
246f869590 vmd: Split audio and video decoder
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-07 07:45:00 -07:00
Diego Biurrun
3c650efb81 dsputil: Move draw_edges() to mpegvideoencdsp 2014-07-06 14:48:50 -07:00
Diego Biurrun
c166148409 dsputil: Move pix_sum, pix_norm1, shrink function pointers to mpegvideoenc 2014-07-06 14:26:53 -07:00
Diego Biurrun
8d686ca59d dsputil: Split off *_8x8basis to a separate context 2014-07-06 13:09:24 -07:00
Nidhi Makhijani
d6902070c5 dsicin: Split audio and video decoder
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-06 11:27:34 -07:00
Nidhi Makhijani
2fc85fe96e bmv: Split audio and video decoder
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-06 10:58:43 -07:00
Nidhi Makhijani
b0633f83f2 paf: split audio and video decoder
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-06 09:36:17 -07:00
Nidhi Makhijani
373a6dda54 cljr: split decoder and encoder
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-06 09:28:20 -07:00
Diego Biurrun
b0de1c7663 x86: build: Only compile FDCT code if MMX is enabled
All other files containing purely inline assembly are treated the same way.
2014-07-05 04:18:34 -07:00
Diego Biurrun
12f129e545 x86: Unconditionally compile blockdsp and svq1enc init files
This avoids a link failure with MMX disabled as the init functions
are referenced unconditionally.
2014-07-05 04:18:34 -07:00
Diego Biurrun
009331303a x86: huffyuvdsp: Move inline assembly to init file
This avoids a link failure with MMX disabled as now code and
initialization are compiled under the same condition.
2014-07-05 04:18:34 -07:00
Omer Osman
e0bfe34ea8 libfdk-aacdec: Reduce the default decoder delay by one frame
The default error concealment method if none is set via
aacDecoder_SetParam(AAC_CONCEAL_METHOD) is set in
CConcealment_InitCommonData within the fdk-aac library
and is set to Energy Interpolation. This method requires one frame
delay to the output. To reduce the default decoder output delay and
avoid missing the last frame in file based decoding, use Noise
Substitution as the default concealment method.

Signed-off-by: Omer Osman <omer.osman@iis.fraunhofer.de>
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-07-05 00:47:36 +03:00
Diego Biurrun
391ecc961c x86: mpegvideoenc: Change SIMD optimization name suffixes to lowercase 2014-07-03 13:41:41 -07:00
Justin Ruggles
c6698dfe7c webpdec: Fix decoding of the huffman group indices.
Per the specification, "The red and green components of a pixel
define the meta Huffman code used in a particular block of the ARGB
image."
2014-07-03 15:29:01 -04:00
Luca Barbato
df949b645b hevc: Use the local context variable when needed 2014-07-02 23:30:49 -04:00
Diego Biurrun
d0449e7545 vaapi: Update idct_permutation location after dsputil/idctdsp split 2014-07-01 07:36:22 -07:00
Diego Biurrun
79793f8337 Update Fiona's name in copyright statements. 2014-07-01 03:26:51 -07:00
Diego Biurrun
e3fcb14347 dsputil: Split off IDCT bits into their own context 2014-06-30 07:58:46 -07:00
Diego Biurrun
adcb8392c9 mjpeg: Split off bits shared by MJPEG and LJPEG encoders
This obviates a dependency of the LJPEG encoder on mpegvideo.
2014-06-30 07:53:40 -07:00
John Stebbins
253d0be6a1 pgssubdec: handle more complex PGS scenarios
Add ability to handle multiple palettes and objects simultaneously.
Each simultaneous object is given its own AVSubtitleRect.
Note that there can be up to 64 currently valid objects, but only
2 at any one time can be "presented".

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-06-30 12:18:58 +02:00
Diego Biurrun
5dd8c08fd5 mpeg: Change ff_convert_matrix() to take an MpegEncContext parameter
This will come in handy during dsputil splitting.
2014-06-27 05:17:11 -07:00
Diego Biurrun
e63b818dbe dv: Properly split decoder and encoder initialization 2014-06-27 05:03:06 -07:00
Diego Biurrun
d2869aea04 dsputil: Move MMX/SSE2-optimized IDCT bits to the x86 subdirectory 2014-06-26 16:15:07 -07:00
Diego Biurrun
24f45c1622 fate: Add dependencies for dct/fft/mdct/rdft tests 2014-06-26 16:03:21 -07:00
Dirk Ausserhaus
5ec6d152e2 indeo4: B-frames decoding
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
2014-06-26 19:17:33 +02:00
Kostya Shishkov
422e14f721 indeo2: rename stride to pitch for consistency with other Indeo decoders 2014-06-26 19:16:08 +02:00
Anton Khirnov
1b04eb20f7 lavc: do not allocate edges in the default get_buffer2() 2014-06-26 16:02:12 +02:00
Gildas Cocherel
a0e1c3517a hevc: remove unused array min_cb_addr_zs
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-06-26 15:51:54 +02:00
Kieran Kunhya
9b60d91979 hevc: Allow out of bound values for num_reorder_pics
This fixes decoding for a sample that cannot be shared

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-06-26 07:14:57 +02:00
Diego Biurrun
593d2326ef dv: Replace a magic number by sizeof() 2014-06-25 15:32:58 -07:00
Diego Biurrun
5ab03e41e5 x86: h264dsp: Fix link failure with optimizations disabled
With optimzations disabled compilers have trouble doing dead code
elimination on 'if (foo && 0)' expressions, while 'if (0 && foo)'
still works, so use the latter to avoid problems.

Bug-Id: 707
2014-06-25 15:24:51 -07:00
Derek Buitenhuis
2deb614272 mjpegdec: Properly set the context colorspace info
The JPEG spec requires it to be this.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2014-06-24 20:42:40 +01:00
Vittorio Giovara
772d150a6e h264: error out from decode_nal_units() when AV_EF_EXPLODE is set
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-06-23 18:58:57 -04:00
Vittorio Giovara
10306e9c5f jpeg2000: fix dereferencing invalid pointers during cleanup
CC: libav-stable@libav.org
Found-by: Laurent Butti <laurentb@gmail.com>
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-06-23 18:58:29 -04:00
Diego Biurrun
fab9df63a3 dsputil: Split off global motion compensation bits into a separate context 2014-06-23 09:58:17 -07:00
Janne Grunau
f23d26a686 h264: avoid using uninitialized memory in NEON chroma mc
Adapt commit 982b596ea6 for the arm and
aarch64 NEON asm. 5-10% faster on Cortex-A9.
2014-06-23 16:32:15 +02:00
Dirk Ausserhaus
e121ac634b indeo45: use is_indeo4 context flag instead of checking codec ID
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
2014-06-23 09:29:39 +02:00
Diego Biurrun
c67b449beb dsputil: Split bswap*_buf() off into a separate context 2014-06-22 18:22:31 -07:00
Diego Biurrun
7b9ef8d701 mpeg: Split error resilience bits off into a separate file 2014-06-22 17:36:37 -07:00
Justin Ruggles
f2f2e7627f Check mp3 header before calling avpriv_mpegaudio_decode_header().
As indicated in the function documentation, the header MUST be
checked prior to calling it because no consistency check is done
there.

CC:libav-stable@libav.org
2014-06-22 20:31:58 -04:00
Justin Ruggles
44127546b0 Check if an mp3 header is using a reserved sample rate.
Fixes an invalid read past the end of avpriv_mpa_freq_tab.
Fixes divide-by-zero due to sample_rate being set to 0.

Bug-Id: 705

CC:libav-stable@libav.org
2014-06-22 20:31:57 -04:00
Luca Barbato
0ef256d515 libx264: Correctly manage constant rate factor params
By default they are set to -1.
2014-06-22 21:01:07 +02:00
Diego Biurrun
f83896abda ape: Replace memset(0) by zero initialization 2014-06-22 18:43:11 +02:00
Diego Biurrun
8d695dc411 mpeg: Mark ff_mpeg_set_erpic() static
It is not used outside of the file.
2014-06-22 06:28:46 -07:00
Diego Biurrun
c54e118722 build: Have the eatqi decoder depend on the MPEG-1 decoder
eatqi uses more than just the shared mpegvideo bits.
2014-06-22 06:28:46 -07:00
Diego Biurrun
03391b5432 build: Add missing object files for Matroska demuxer 2014-06-22 06:28:46 -07:00
Diego Biurrun
9a9e2f1c8a dsputil: Split audio operations off into a separate context 2014-06-22 06:20:15 -07:00
Vittorio Giovara
ca1e36a8e4 h264: fix build when error resilience is disabled 2014-06-20 12:48:06 -04:00
Justin Ruggles
9e500efdbe Add av_image_check_sar() and use it to validate SAR 2014-06-20 10:39:33 -04:00
Anton Khirnov
d349afb07b dv: cosmetics, reindent 2014-06-20 14:15:39 +02:00
Anton Khirnov
650dee63c8 dv: get rid of global non-const tables
Instead, store them in the context and compute on each parameter change.
2014-06-20 14:15:31 +02:00
Anton Khirnov
778111592b dvenc: initialize the profile only once, at init
We do not allow the frame parameters to change during encoding, so there
is no need to do this for each frame.
2014-06-20 14:15:16 +02:00
Anton Khirnov
874390e163 lavc: add a convenience function for rescaling timestamps in a packet 2014-06-20 14:14:11 +02:00
Dirk Ausserhaus
b2290bf10b i263: skip dummy frames
Intel i263 codec has special 8-byte dummy frames that should not be decoded,
so do not even attempt to decode them and skip them instead.

Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
2014-06-19 13:13:20 +02:00
Diego Biurrun
e74433a8e6 dsputil: Split clear_block*/fill_block* off into a separate context 2014-06-18 14:07:23 -07:00
Luca Barbato
869fc416f7 hevc: Mark num_bins_in_se as unused
Only its size is actually used. Silence a clang warning.
2014-06-18 22:03:40 +02:00
Niels Möller
f2ce63246f dcadec: replace ldexpf with a multiplication by a constant
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-06-18 08:23:15 +02:00
Rafaël Carré
9affa784a0 vp9 encoder: use a decent default speed setting
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-06-17 21:38:43 +02:00
Tristan Matthews
4910684492 tiffenc: fix packet size calculation
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-06-17 21:24:12 +02:00
Diego Biurrun
fe4d5fe936 jpeg2000: Mark static data init functions as av_cold 2014-06-17 08:44:07 -07:00
Diego Biurrun
27631796c9 ac3: Only initialize float_dsp for the float encoder variant 2014-06-13 05:21:34 -07:00
Diego Biurrun
f0ce9913d0 Rename tpel_template.c ---> pel_template.c
The new name more accurately describes what the file is about.
2014-06-13 05:21:34 -07:00
Derek Buitenhuis
ceada893be libx265: Remove unneeded bit depth check
This is no longer needed since the version bump.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2014-06-12 16:45:02 +01:00
Derek Buitenhuis
61a344916d libx265: Add 4:2:2 support
It is also not final yet, so require -strict experimental.

Requires a bump to version 17.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2014-06-12 16:45:02 +01:00
Derek Buitenhuis
180e6b4806 libx265: Actually use X265_API_IMPORTS
It obvously needs to be above the include statement.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2014-06-12 16:45:02 +01:00
Diego Biurrun
dca7ba4bff Remove some unnecessary CONFIG_FOO_COMPONENT ifdefs
The files are only ever compiled if that condition is true.
2014-06-12 07:10:18 -07:00
Luca Barbato
2f4170312f libx264: Support bitrate reconfiguration
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-06-11 22:51:00 +02:00
Janne Grunau
cd62c04d00 h263enc: keep block_last_index always valid during advanced intra coding
Prevents a triggered assert during fate-vsynth{1,2}-rv20 in
dct_unquantize_h263_intra_c().
2014-06-11 21:28:39 +02:00
Janne Grunau
0ddc53dabb mpegvideo: synchronize AVFrame pointers in ERContext fully
Since error resilience uses AVFrame pointers instead of references it
has to copy NULL pointers too. After a codec flush the last/next frame
pointers in MpegEncContext are NULL and the old pointers remaining in
ERContext are invalid. Fixes a crash in vlc for android thumbnailer.
Reported and debugged by Adrien Maglo <magsoft@videolan.org>.
2014-06-11 21:28:27 +02:00
Vittorio Giovara
d7705be961 mpegvideoenc: check color_range
Rework the comparison into something simpler to understand.
2014-06-10 19:41:59 -04:00
Diego Biurrun
27860819d5 ppc: Consistently use convenience macro for runtime CPU detection 2014-06-10 15:13:57 -07:00
Diego Biurrun
205fdd4ea5 ppc: Fix runtime CPU detection for apedsp, huffyuvdsp, svq1enc 2014-06-10 15:13:57 -07:00
Martin Storsjö
570d4b2186 x86: h264: Don't keep data in the redzone across function calls on 64 bit unix
We know that the called function (ff_chroma_inter_body_mmxext)
doesn't touch the redzone, and thus will be kept intact - thus,
this doesn't fix any bug per se.

However, valgrind's memcheck tool intentionally assumes that the
redzone is clobbered on every function call and function return
(see a long comment in valgrind/memcheck/mc_main.c). This avoids
false positives in that tool, at the cost of an extra stack pointer
adjustment.

The other alternative would be a valgrind suppression for this issue,
but that's an extra burden for everybody that wants to run libavcodec
within valgrind.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-06-10 16:31:48 +03:00
Martin Storsjö
0776e0ef6b adpcm: Write the proper predictor in trellis mode in IMA QT
The actual predictor value, set by the trellis code, never
was written back into the variable that was written into
the block header. This was accidentally removed in b304244b.

This significantly improves the audio quality of the trellis
case, which was plain broken since b304244b.

Encoding IMA QT with trellis still actually gives a slightly
worse quality than without trellis, since the trellis encoder
doesn't use the exact same way of rounding as in
adpcm_ima_qt_compress_sample and adpcm_ima_qt_expand_nibble.

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-06-10 16:28:47 +03:00
Martin Storsjö
3d79d0c93e adpcm: Avoid reading out of bounds in the IMA QT trellis encoder
This was broken in 095be4fb - samples+ch (for the previous
non-planar case) equals &samples_p[ch][0]. The confusion
probably stemmed from the IMA WAV case where it originally
was &samples[avctx->channels + ch], which was correctly
changed into &samples_p[ch][1].

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-06-06 19:23:54 +03:00
Marc-Antoine Arnaud
f558f0d2da avcodec options: add enum option for color_range
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2014-06-06 15:40:08 +01:00
Marc-Antoine Arnaud
7c29b7229b avcodec options: add enum option for colorspace
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2014-06-06 15:39:50 +01:00
Marc-Antoine Arnaud
efc2dfe6a0 avcodec options: add enum option for color_trc
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2014-06-06 15:39:34 +01:00
Marc-Antoine Arnaud
bd71c300f9 avcodec options: add enum option for color_primaries
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2014-06-06 15:39:08 +01:00
Marc-Antoine Arnaud
8a06794112 mpeg2: add sequence display extension information
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2014-06-06 15:38:10 +01:00