Anton Khirnov and Diego Biurrun
4adbb44ad1
tta: avoid undefined shifts
...
Signed-off-by: Diego Biurrun <diego@biurrun.de >
2016-11-25 21:42:33 +01:00
Anton Khirnov and Diego Biurrun
dc4b625028
tta: use get_unary() instead of a custom implementation
...
Signed-off-by: Diego Biurrun <diego@biurrun.de >
2016-11-25 21:42:33 +01:00
Anton Khirnov
c7ab0eb305
examples/decode_video: allocate the packet dynamically
...
AVPackets on stack are discouraged.
2016-11-23 13:11:17 +01:00
Anton Khirnov
728ea23cce
examples/decode_video: switch to the new decoding API
2016-11-23 13:10:54 +01:00
Anton Khirnov
f78d360bba
examples/decode_video: use a parser for splitting the input
...
Do not rely on the decoder handling this, as it's not guaranteed to
work.
2016-11-23 13:10:28 +01:00
Anton Khirnov
59ab9e8ba1
examples/encode_video: allocate the packet dynamically
...
AVPackets on stack are discouraged.
2016-11-23 13:10:22 +01:00
Anton Khirnov
5f102a9559
examples/encode_video: switch to the new encoding API
2016-11-23 13:10:16 +01:00
Anton Khirnov
fee0f1de2c
examples/decode_audio: flush the decoder
2016-11-23 13:10:10 +01:00
Anton Khirnov
9a38184a14
examples/decode_audio: allocate the packet dynamically
...
AVPackets on stack are discouraged now.
2016-11-23 13:10:05 +01:00
Anton Khirnov
45a1ce2ff7
examples/decode_audio: handle planar audio now produced by the MP2 decoder
2016-11-23 13:10:00 +01:00
Anton Khirnov
3d66717f7c
examples/decode_audio: use the new audio decoding API
2016-11-23 13:09:55 +01:00
Anton Khirnov
0946c754d9
examples/decode_audio: use a parser for splitting the input
...
Do not rely on the decoder handling this, as it's not guaranteed to
work.
2016-11-23 13:09:41 +01:00
Anton Khirnov
f27e262dbd
examples/encode_audio: switch to the new audio encoding API
2016-11-23 13:08:50 +01:00
Anton Khirnov
44c9f374f1
examples/qsvdec: convert to the new decoding API
2016-11-23 13:08:43 +01:00
Anton Khirnov
1dd2b6c91c
examples/qsvdec: switch to the hwcontext API
...
The code now does not depend on VA and will work on windows as well.
2016-11-23 13:08:33 +01:00
Anton Khirnov
e18ba2dfd2
hwcontext_dxva2: make sure the sw frame format is the right one during transfer
2016-11-18 10:31:53 +01:00
Anton Khirnov
5a1d605cea
hwcontext_dxva2: split transfer_data() into upload/download functions
...
Just the presence of a hw frames context is not enough to detect whether
the transfer is an upload or a download, because hw frames mapped to
system memory will have a hw frames context attached.
2016-11-18 10:31:53 +01:00
Anton Khirnov
9d7026574b
hwcontext_dxva2: fix handling of the mapping flags
...
D3DLOCK_READONLY properly corresponds to the absence of the write flag,
not to the presence of the read flag, while D3DLOCK_DISCARD is
equivalent to the overwrite flag.
2016-11-18 10:31:53 +01:00
Anton Khirnov
0d3176e32f
hwcontext_dxva2: do not assume the destination format during mapping is always the right one
...
Handle the cases where it is unsupported or unset.
2016-11-18 10:31:53 +01:00
Anton Khirnov
84f225684c
pthread_frame: properly propagate the hw frame context across frame threads
2016-11-10 09:00:11 +01:00
Anton Khirnov
4ab61cd983
qsv{enc,dec}: extend the internal frame allocator
...
Handle the internal frame requests, which is required by the HEVC
encoding plugin.
Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com >
2016-11-07 12:48:00 +01:00
Anton Khirnov
00aeedd841
qsv{dec,enc}: use a struct as a memory id with internal memory allocator
...
This will allow implementing the allocator more fully, which is needed
by the HEVC encoder plugin with video memory input.
Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com >
2016-11-07 12:47:54 +01:00
Anton Khirnov
404e51478e
qsv{dec,enc}: always use an internal mfxFrameSurface1
...
For encoding, this avoids modifying the input surface, which we are not
allowed to do.
This will also be useful in the following commits.
Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com >
2016-11-07 12:47:46 +01:00
Anton Khirnov
e8bbacbf52
hwcontext_qsv: support frame mapping
...
Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com >
2016-11-07 12:47:40 +01:00
Anton Khirnov
8ea15afbf2
hwcontext_qsv: transfer data through the child context when VPP fails
...
Uploading/downloading data through VPP may not work for some formats, in
that case we can still try to call av_hwframe_transfer_data() on the
child context.
Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com >
2016-11-07 12:47:33 +01:00
Anton Khirnov
b91ce48600
hwcontext_qsv: do not fail when download/upload VPP session creation fails
...
Certain pixel formats (e.g. P8) might not be supported for
download/upload through VPP operations, but can still be used otherwise.
Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com >
2016-11-07 12:47:26 +01:00
Anton Khirnov
b115a35ea6
hwcontext_qsv: add support for the P8 format
...
When using GPU surfaces with QSV, one needs to supply a frame allocator,
which will be invoked to pass surface pools to libmfx.
For encoding, this allocator gets invoked not only for the pool of input
frames, but also for a separate pool of (apparently) reconstructed frames
and another pool of MFX_FOURCC_P8, which on Windows needs to return
D3DFMT_P8 D3D surfaces. Those are probably used to store the encoded
bitstream on the GPU.
Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com >
2016-11-07 12:47:20 +01:00
Anton Khirnov
10065d9324
hwcontext_dxva2: add support for the P8 format
...
This format is used internally by the QSV encoder to store the encoded
bitstream.
Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com >
2016-11-07 12:47:14 +01:00
Anton Khirnov
9109737654
hwcontext_dxva2: frame mapping support
...
Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com >
2016-11-07 12:46:59 +01:00
Anton Khirnov
636515c324
examples/decode_video: remove a stray unrelated comment
2016-11-02 10:20:41 +01:00
Anton Khirnov
8191f960a6
examples/decode_video: constify the AVCodec instance
2016-11-02 10:20:25 +01:00
Anton Khirnov
5b4d7ac7ae
examples/encode_video: use the AVFrame API for allocating the frame
...
It is more efficient and so preferred over allocating the buffers
manually.
2016-11-02 10:20:01 +01:00
Anton Khirnov
d0a603a534
examples/encode_video: set the framerate
2016-11-02 10:19:37 +01:00
Anton Khirnov
e02524025b
examples/encode_video: constify the AVCodec instance
2016-11-02 10:18:34 +01:00
Anton Khirnov
7b1f03477f
examples/avcodec: split the remaining two examples into separate files
2016-11-02 10:16:04 +01:00
Anton Khirnov
90265814f9
examples/decode_audio: constify the AVCodec instance
2016-11-02 10:13:37 +01:00
Anton Khirnov
f5df897c4b
examples/avcodec: split audio decoding into a separate example
...
The four examples (audio/video encoding/decoding) are completely
independent so it makes little sense to have them all in one file.
2016-11-02 10:13:27 +01:00
Anton Khirnov
f76698e759
examples/encode_audio: use the AVFrame API for allocating the data
...
It is simpler and more efficient.
2016-11-02 10:12:39 +01:00
Anton Khirnov
c00a11ab38
examples/encode_audio: constify AVCodec instances
2016-11-02 10:11:48 +01:00
Anton Khirnov
40aaa8dadf
examples/avcodec: split audio encoding into a separate example
...
The four examples (audio/video encoding/decoding) are completely
independent so it makes little sense to have them all in one file.
2016-11-02 10:11:46 +01:00
Anton Khirnov
7c9e2b295e
Makefile: fix checking whether reconfiguring is required
...
It didn't take into account the new pattern used for bitstream filters
and protocols.
2016-10-21 10:11:36 +02:00
Anton Khirnov
59c90097a0
hevc: factor out a repeated condition
2016-10-21 10:11:20 +02:00
Anton Khirnov
0bfdcce4d4
hevc: move the SliceType enum to hevc.h
...
Those values are decoder-independent and are also use by the VA-API
encoder.
2016-10-21 10:11:20 +02:00
Anton Khirnov
096a8effa3
lavf: check that the codec is supported by extract_extradata
...
Avoids superfluous error message spam after
8e2ea69135
2016-10-21 10:11:20 +02:00
Anton Khirnov
8e2ea69135
lavf: use the new bitstream filter for extracting extradata
...
This also fixes a minor bug introduced in the codecpar conversion, where
the termination condition for extracting the extradata does not match
the actual extradata setting code. As a result, the packet durations
made up by lavf go back to their values before the codecpar conversion.
That is of little consequence since that code should eventually be
dropped completely.
2016-10-16 20:27:30 +02:00
Anton Khirnov
89b35a139e
lavc: add a bitstream filter for extracting extradata from packets
...
This is intended as a replacement for the 'split' function exported by
some parsers.
2016-10-16 20:27:16 +02:00
Anton Khirnov
f6e2f8a9ff
hevcdec: move parameter set parsing into a separate header
...
This code is independent from the decoder, so it makes more sense for it
to to have its own header.
2016-10-16 20:26:47 +02:00
Anton Khirnov
150c896a9e
hevcdec: split ff_hevc_diag_scan* declarations into a separate header
...
This will be useful in the following commits.
2016-10-16 20:26:40 +02:00
Anton Khirnov
645c6ff423
hevcdec: drop the prototype of a non-existing function
2016-10-16 20:26:35 +02:00
Anton Khirnov
c359d624d3
hevcdec: move decoder-independent declarations into a separate header
...
This way they can be reused by other code without including the whole
decoder-specific hevcdec.h
Also, add the HEVC_ prefix to them, since similarly named values exist
for H.264 as well and are sometimes used in the same code.
2016-10-16 20:26:28 +02:00
Anton Khirnov
4abe3b049d
hevc: rename hevc.[ch] to hevcdec.[ch]
...
This is more consistent with the rest of libav and frees up the hevc.h
name for decoder-independent shared declarations.
2016-10-16 20:26:17 +02:00
Anton Khirnov
20b75970e4
file protocol: handle the file: protocol string in file_check
...
This is consistent with what file_open() does.
CC: libav-stable@libav.org
2016-10-16 18:47:25 +02:00
Anton Khirnov
e4128c08d7
Revert "hevc: x86: Refactor IDCT macro declarations"
...
This reverts commit d9dccc0389 . There were
outstanding objections to this commit.
2016-10-06 15:24:04 +02:00
Anton Khirnov
5cc0057f49
lavu: remove the custom atomic API
...
It has been replaced by C11 stdatomic.h and is now unused.
2016-10-02 19:35:55 +02:00
Anton Khirnov
59c7022740
pthread_frame: use atomics for frame progress
2016-10-02 19:35:46 +02:00
Anton Khirnov
64a31b2854
pthread_frame: use atomics for PerThreadContext.state
2016-10-02 19:35:34 +02:00
Anton Khirnov
db2733256d
pthread_frame: use a thread-safe way for signalling threads to die
...
Current code uses a plain int in a racy way, which is UB.
2016-10-02 19:35:23 +02:00
Anton Khirnov
8385ba53f1
mmaldec: convert to stdatomic
2016-10-02 19:35:12 +02:00
Anton Khirnov
3a165c187d
v4l2: convert to stdatomic
2016-10-02 19:34:57 +02:00
Anton Khirnov
27079a426c
buffer: convert to stdatomic
2016-10-02 18:58:04 +02:00
Anton Khirnov
eb34d40354
Add a compat dummy stdatomic.h used when threading is disabled
...
Adapted from the code by Rémi Denis-Courmont from VLC
2016-10-02 18:57:56 +02:00
Anton Khirnov
f9a6a80e06
Add a compat stdatomic.h implementation based on pthreads
...
Adapted from the code by Rémi Denis-Courmont from VLC
2016-10-02 18:56:52 +02:00
Anton Khirnov
bb81ed4765
Add a compat stdatomic.h implementation based on suncc atomics
...
Adapted from the code by Rémi Denis-Courmont from VLC
2016-10-02 18:55:41 +02:00
Anton Khirnov
c2755864af
Add a compat stdatomic.h implementation based on windows atomics
...
Adapted from the code by Rémi Denis-Courmont from VLC
2016-10-02 18:54:28 +02:00
Anton Khirnov
4e928ef340
Add a compat stdatomic.h implementation based on GCC atomics
...
Adapted from the code by Rémi Denis-Courmont from VLC
2016-10-02 18:52:08 +02:00
Anton Khirnov
13f5d2bf75
configure: check for stdatomic.h
...
Since this is a C11 feature, it requires -std=c11.
Not actually used for anything yet, that will be added in the following
commits.
2016-10-02 18:49:14 +02:00
Anton Khirnov
27085d1b47
avconv: only retry decoding on actual decoding errors
...
Errors during decoding are currently considered non-fatal and do not
terminate transcoding, so even if parts of the data are corrupted, the
rest may be decodable.
However, that should apply only to the actual decoding calls, not to the
failures elsewhere (e.g. configuring filters).
2016-10-02 11:41:45 +02:00
Anton Khirnov
f6772e9bf8
avconv: make sure the filtergraph is freed on init failure
...
The filtergraph's existence is used in several places to mean that the
filtergraph is fully configured. This causes problems if it's allocated,
but the initialization fails (e.g. if a non-existent filter is
specified).
2016-10-02 11:41:45 +02:00
Anton Khirnov
d10102d23c
avconv: set the encoding framerate when the output is CFR
2016-10-02 11:41:45 +02:00
Anton Khirnov
5bf2454e7c
h264dec: support broken files with mp4 extradata/annex b data
...
Bug-Id: 966
2016-10-02 11:41:45 +02:00
Anton Khirnov
2124711b95
hwcontext_vaapi: add a quirk for the missing MemoryType attribute
...
The Intel binary iHD driver does not support the
VASurfaceAttribMemoryType, so surface allocation will fail when using
it.
2016-10-02 11:41:45 +02:00
Anton Khirnov
8ea35af762
avio: add a new flag for marking streams seekable by timestamp
2016-09-30 16:55:45 +02:00
Anton Khirnov
75c1db6152
avio: cosmetics, prettify AVIO_SEEKABLE_NORMAL
...
Move the doxy above the definition, change the value itself to the
(1 << n) pattern, which is more readable for flags.
2016-09-30 16:54:55 +02:00
Anton Khirnov
83548fe894
lavf: fix usage of AVIOContext.seekable
...
It is supposed to be a flag. The only currently defined value is
AVIO_SEEKABLE_NORMAL, but other ones may be added in the future.
However all the current lavf code treats this field as a bool (mainly
for historical reasons).
Change all those cases to properly check for AVIO_SEEKABLE_NORMAL.
2016-09-30 16:54:33 +02:00
Anton Khirnov
67d28f4a0f
examples/output: switch to the new encoding API
2016-09-28 10:01:52 +02:00
Anton Khirnov
7bf8db4db6
tdsc: use the new decoding API
2016-09-28 10:01:52 +02:00
Anton Khirnov
de2ae3c1fa
lavc: add clobber tests for the new encoding/decoding API
2016-09-28 10:01:52 +02:00
Anton Khirnov
68811a41c7
mpegvideo_enc: use the new encoding API for b_strategy=2
2016-09-28 10:01:52 +02:00
Anton Khirnov
f03f78bc1c
mpegvideo_enc: handle encoding errors with b_strategy=2
2016-09-28 10:01:52 +02:00
Anton Khirnov
6f733ecab6
mpegvideo_enc: add const to the AVCodec instance
2016-09-28 10:01:52 +02:00
Anton Khirnov
6c09af7e46
APIchanges: fix a typo in the version number
2016-09-28 10:01:51 +02:00
Anton Khirnov
12004a9a7f
audiodsp/x86: yasmify vector_clipf_sse
2016-09-22 09:47:52 +02:00
Anton Khirnov
683da86aab
audiodsp: reorder arguments for vector_clipf
...
This will make the x86 asm simpler.
ARM conversion by Martin Storsjö <martin@martin.st > and Janne Grunau
<janne-libav@jannau.net >
2016-09-22 09:47:52 +02:00
Anton Khirnov
bf58545aac
audiodsp: fix vector_clipf documentation
...
The x86 version processes 16 floats per iteration, so len must be a
multiple of 16.
2016-09-22 09:47:52 +02:00
Anton Khirnov
e9ef617139
checkasm: add tests for audiodsp
2016-09-22 09:47:52 +02:00
Anton Khirnov
2eb97af66a
checkasm: add a test for blockdsp
2016-09-22 09:47:52 +02:00
Anton Khirnov
eea9857bfd
blockdsp: drop the high_bit_depth parameter
...
It has no effect, since the code is supposed to operate the same way for
any bit depth.
2016-09-22 09:47:52 +02:00
Anton Khirnov
75d98e30af
audiodsp/x86: clear the high bits of the order parameter on 64bit
...
Also change shl to add, since it can be faster on some CPUs.
CC: libav-stable@libav.org
2016-09-19 19:18:07 +02:00
Anton Khirnov
1d6c76e11f
audiodsp/x86: fix ff_vector_clip_int32_sse2
...
This version, which is the only one doing two processing cycles per loop
iteration, computes the load/store indices incorrectly for the second
cycle.
CC: libav-stable@libav.org
2016-09-19 19:18:07 +02:00
Anton Khirnov
f01f7a7846
hwcontext_dxva2: use the special UC copy for downloading frames
2016-08-31 08:22:52 +02:00
Anton Khirnov
d7bc52bf45
imgutils: add a function for copying image data from GPU mapped memory
...
See https://software.intel.com/en-us/articles/copying-accelerated-video-decode-frame-buffers
2016-08-31 08:15:47 +02:00
Anton Khirnov
24da430324
Changelog: mark the release 12 branch
2016-08-31 08:08:32 +02:00
Anton Khirnov
6755eb5b21
mss12: validate display dimensions
...
The code currently reads the coded dimensions from the extradata, but
expects the display dimensions to be set by the caller, and does not
check that they are compatible (i.e. that the displayed size is smaller
than the coded size).
Make sure that when the display dimensions are set, they are also valid.
Fixes possible invalid memory access.
CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2016-08-18 17:06:46 +02:00
Anton Khirnov
33f10546ec
vc1: check that slices have a positive height
...
Fixes possible invalid reads.
CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2016-08-18 17:06:46 +02:00
Anton Khirnov
09b23786b3
pcx: use the bytestream2 API for reading from input
...
Fixes possible invalid reads.
CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2016-08-18 17:06:46 +02:00
Anton Khirnov
221402c1c8
pcx: check that the packet is large enough before reading the header
...
Fixes possible invalid reads.
CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2016-08-18 17:06:46 +02:00
Anton Khirnov
15ee419b7a
pcx: properly pad the scanline
...
It is passed to the get_bits API, which requires buffers to be padded.
Fixes possible invalid reads.
CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2016-08-18 17:06:46 +02:00
Anton Khirnov
409d1cd2c9
cook: use the bytestream2 API for reading extradata
...
Fixes possible invalid reads in corrupted files.
CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2016-08-18 17:06:46 +02:00
Anton Khirnov
bba9d8bdfb
qpeg: fix an off by 1 error in the MV check
...
height - me_y is the line from which we read, so it must be strictly
smaller than the frame height. Fixes possible invalid reads in corrupted
files.
Also, use a proper context for logging the error.
CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2016-08-18 17:06:46 +02:00
Anton Khirnov
796dca027b
alac: do not return success if nothing was decoded
...
If we encounter an END element before anything is decoded, we would
return success even though the output frame has not been allocated,
which is invalid.
CC: libav-stable@libav.org
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2016-08-18 17:06:46 +02:00