Anton Khirnov
14e5580246
opusdec: properly handle mismatching configurations in multichannel streams
...
The substreams can have different resampling delays, so an additional
level of buffering is needed to synchronize them.
Bug-Id: 876
2015-08-02 08:43:51 +02:00
Anton Khirnov
90e648c508
fate/mp3: use the f32le format as output
...
Those tests test the float decoder, so it is preferable to dump the
decoder output directly instead of converting it to s16.
2015-07-31 07:11:35 +02:00
Anton Khirnov
a079795052
fate/mp3: specify the number of output samples instead of filesize
...
This is not dependent on the output format.
2015-07-31 07:11:34 +02:00
Anton Khirnov
db21dde3f7
qsvdec_mpeg2: drop an incorrect comment
...
It got copypasted from the h264 decoder, but it does not apply to mpeg2.
2015-07-27 18:09:30 +02:00
Anton Khirnov
f3bd3810d2
qsvdec_*: add missing CODEC_CAP_DR1
2015-07-27 07:44:34 +02:00
Anton Khirnov
41d47ea85f
lavc: add Intel libmfx-based HEVC decoder.
2015-07-25 17:37:01 +02:00
Anton Khirnov
bf52f77391
lavc: add Intel libmfx-based MPEG2 decoder.
2015-07-25 17:36:59 +02:00
Anton Khirnov
f89f78c1c5
lavc: add a HEVC mp4->annex B bitstream filter
2015-07-25 17:26:53 +02:00
Anton Khirnov
96dca089b1
qsvdec: move qsv_process_data() from qsvdec_h264 to the common code
...
It will be shared with the upcoming mpeg2 and hevc decoders.
2015-07-25 17:24:25 +02:00
Anton Khirnov
fa85fcf2b7
qsvenc_hevc: fix enum declaration
...
Declare a named enum, not a variable with anonymous enum type.
2015-07-25 17:24:03 +02:00
Anton Khirnov
22522d9c2c
qsvdec: fix a memleak of async_fifo
...
init() is called whenever format changes, so current code would leak the
fifo in this case.
2015-07-25 17:23:46 +02:00
Anton Khirnov
aa9d15d89b
qsvdec: avoid an infinite loop with no consumed data and no output
...
This is triggerable with the HEVC decoder. It is unclear yet whether the
bug is in the calling code or the MSDK, but it seems better to check for
this in any case.
2015-07-25 17:23:29 +02:00
Anton Khirnov
22ecfcd4c7
af_channelmap: properly set the supported output channel layouts
...
The current code expects query_formats() to be called exactly once, it
will leak if it's not called at all (filter initialized, but never
configured or used) or try to read freed memory if it's called more than
once.
Found-by: James Almer <jamrial@gmail.com >
CC: libav-stable@libav.org
2015-07-23 09:53:55 +02:00
Anton Khirnov
ecee1148af
qsvenc_hevc: use the correct HW plugin UID
2015-07-22 12:11:46 +02:00
Anton Khirnov
69b92f1b99
qsvenc: properly handle asynchronous encoding
...
Wait for async_depth frames before syncing.
2015-07-19 10:06:53 +02:00
Anton Khirnov
f5c4d38c78
qsvdec: properly handle asynchronous decoding
...
Wait for async_depth frames before syncing.
2015-07-19 09:47:45 +02:00
Anton Khirnov
6b15874fc2
af_resample: do not touch the timestamps if we are not resampling
...
This filter currently assumes that the input audio is continuous and
does some timestamps manipulation based on this assumption.
This is unnecessary if we are only converting the channel layout or the
sample format, without resampling. In such a case, just leave the
timestamps as they are.
2015-07-19 09:39:42 +02:00
Anton Khirnov
6d592fbd0d
avconv: split creating and (re-)configuring complex filtergraphs
...
The current code is less than straightforward due to the fact that
output streams can be created based on filtergraph definitions. This
change should make the code simpler and more readable. It will also be
useful in the future commits.
2015-07-19 09:38:53 +02:00
Anton Khirnov
be101bc1e3
avconv: create the complex filtergraphs earlier
...
Since global options are processed before all the other options now, we
do not have to try creating the complex filtergraphs several times
anymore, it is enough to do it once after the input files are opened.
2015-07-19 09:38:44 +02:00
Anton Khirnov
1959351aec
avconv: move the no streams failure to open_output_file()
...
It is a better place for it, there is no reason to wait until
transcode_init().
2015-07-19 09:38:28 +02:00
Anton Khirnov
ab7b038906
avconv: factor out the output stream initialization
2015-07-19 09:38:25 +02:00
Anton Khirnov
bd2ab27c48
avconv: use read_file() for reading the 2pass stats
...
Also, drop the now unused cmdutils_read_file(). There is no reason to
have two functions doing essentially the same thing.
2015-07-19 09:37:11 +02:00
Anton Khirnov
6d5d924604
avconv: move handling the 2pass logfile into avconv_opt
...
It more logically belongs there.
2015-07-19 09:34:24 +02:00
Anton Khirnov
59245e0c5e
avconv: set the encoding/decoding_needed flags earlier
...
This will be useful in the following commits.
2015-07-19 09:34:08 +02:00
Anton Khirnov
56c2f37727
avconv: drop update_sample_fmt()
...
There is only one decoder left that supports this (libopus, which is not
used by default since we have a native one) and this code goes against
the avconv design, since it propagates information back from the encoder
to decoder.
2015-07-19 09:33:51 +02:00
Anton Khirnov
a062a55d37
hevc_parser: fix standalone build with the hevc decoder disabled
...
The parser depends on hevc_ps, which in turn needs some data tables.
Found-by: James Almer <jamrial@gmail.com >
2015-07-13 08:58:21 +02:00
Anton Khirnov
b9f76d19d8
hevc_ps: make sure failing to decode an SPS always returns an error
...
Some of the goto err clauses do not set the error code. It seems better
to fall back on INVALIDDATA instead of adding it everywhere explicitly.
2015-07-13 07:49:03 +02:00
Anton Khirnov
077b559433
hevc: handle a NULL sps in set_sps() properly
...
This can happen in update_thread_context(), when the previous frame was
corrupted.
2015-07-12 18:57:10 +02:00
Anton Khirnov
18156b53f9
hevc: do not pass an entire HEVCContext into export_stream_params()
...
It only needs the parameter sets.
2015-07-12 18:52:02 +02:00
Anton Khirnov
650060dfb6
hevc_parser: parse and export some stream parameters
...
Particularly those that will be needed by the QSV decoder.
More can be added later as necessary.
2015-07-12 18:15:40 +02:00
Anton Khirnov
7f78155dc6
hevc: improve a comment
...
That loop does the actual full decoding, so 'parse' can be misleading.
2015-07-12 18:15:40 +02:00
Anton Khirnov
d82e1adc20
hevc: move splitting the packet into NALUs into a separate function
...
This function is independent of the decoding context, so we'll be able
to use it in the parser.
2015-07-12 18:15:39 +02:00
Anton Khirnov
ae05b48655
hevc: eliminate the second call to hls_nal_unit()
...
Also, make hls_nal_unit() work only on the provided NAL unit, without
requiring a whole decoding context.
This will allow splitting this code for reuse by the parser.
2015-07-12 18:15:39 +02:00
Anton Khirnov
d7bebe4805
hevc: skip invalid/ignored NALUs when splitting the packet
...
There is no need to wait until actually decoding the NALU. This will
allow to get rid of the second hls_nal_unit() call later.
2015-07-12 18:15:39 +02:00
Anton Khirnov
b11acd5732
hevc: remove HEVCContext usage from hevc_ps
...
Factor out the parameter sets into a separate struct and use it instead.
This will allow us to reuse this code in the parser.
2015-07-12 18:15:39 +02:00
Anton Khirnov
ab05ed4c32
mpegvideo_parser: export pixel format and dimensions
2015-07-12 18:15:39 +02:00
Anton Khirnov
a9a2f36130
doc: add a section about building with libmfx
2015-07-12 18:15:39 +02:00
Anton Khirnov
86eee85dad
bytestream2: set the reader to the end when reading more than available
...
This prevents possible infinite loops with the calling code along the
lines of while (bytestream2_get_bytes_left()) { ... }, where the reader
does not advance.
CC: libav-stable@libav.org
2015-07-12 18:15:39 +02:00
Anton Khirnov
66acb76bb0
lavc: add Intel libmfx-based HEVC encoder
2015-07-08 23:40:11 +02:00
Anton Khirnov
3a85397e8b
lavc: add Intel libmfx-based MPEG2 encoder
2015-07-08 23:39:28 +02:00
Anton Khirnov
69ab9f53f9
hevc: split bitstream unescaping to a separate file
...
It will be useful in the QSV HEVC encoder.
2015-07-08 23:38:32 +02:00
Anton Khirnov
fd124d8357
hevc_ps: split the code for parsing the SPS and exporting it into the context
...
This will be useful in the later commits, where we want to parse an SPS
without having a whole decoding context.
2015-07-08 23:36:22 +02:00
Anton Khirnov
0e7c0ec344
lavf/hevc: pad the RBSP buffer as required by the bistream reader
2015-07-08 23:36:10 +02:00
Anton Khirnov
441e8ae5ef
FATE: drop the last truncated frame from the wmapro tests
...
Since it's truncated, the result depends on how specifically the demuxer
and the decoder handle errors.
2015-06-28 10:10:36 +02:00
Anton Khirnov
d3ea79e8a6
FATE: drop the last truncated frame from the wma lossless test
...
Since it's truncated, the result depends on how specifically the demuxer
and the decoder handle errors.
2015-06-28 10:10:07 +02:00
Anton Khirnov
5ec0bdf2c5
h264: do not update the context fields copied between threads after finish_setup()
...
Should fix a large number of possible races with frame threading.
2015-06-27 16:48:48 +02:00
Anton Khirnov
6d4d3fee63
h264: make sure the current picture is not made a long ref multiple times
...
Fixes possible invalid reads, once one of those refs is freed, but the
others remain.
CC: libav-stable@libav.org
2015-06-27 16:46:01 +02:00
Anton Khirnov
9a5e4fbec8
avconv: do not stop processing the input packet on decoding error
...
We still want to flush the filters on EOF and possibly apply streamcopy.
2015-06-27 16:45:41 +02:00
Anton Khirnov
b114f6d48a
avconv: factor out flushing the filters
...
This also ensures this is always done, avoiding infinite loops if an
error occurs at the end of the input.
2015-06-27 16:45:04 +02:00
Anton Khirnov
e49e0f58e2
h264: make sure the slices do not overlap during slice threading
...
Based on a patch by Michael Niedermayer <michaelni@gmx.at >.
CC: libav-stable@libav.org
Found-by: Kieran Kunhya <kierank@obe.tv >
2015-06-27 16:43:22 +02:00
Anton Khirnov and Vittorio Giovara
1b1bb2c4ef
rl: Add error checking to ff_rl_init().
2015-05-28 15:38:43 +01:00
Anton Khirnov and Vittorio Giovara
324e50ee95
rl: Add a function for freeing dynamically allocated tables.
...
Such tables are not used anywhere currently, but that should change.
2015-05-28 15:38:43 +01:00
Anton Khirnov and Vittorio Giovara
6f57375d70
rl: Rename ff_*_rl() to ff_rl_*()
2015-05-28 15:38:43 +01:00
Anton Khirnov and Vittorio Giovara
fa1923f182
mpegvideo: Move ff_*_rl functions to a separate file
2015-05-28 15:38:43 +01:00
Anton Khirnov
3735b5c616
Revert "lavfi: always check av_expr_parse_and_eval() return value"
...
This reverts commit 63be97ec40 .
All those calls were unchecked on purpose, as explained in the comments
in the code.
2015-05-05 16:27:24 +02:00
Anton Khirnov
a09c499a2e
rawenc: properly allocate coded_frame
2015-04-29 05:52:58 +02:00
Anton Khirnov
a0f2946068
h264: use properly allocated AVFrames
2015-04-29 05:52:58 +02:00
Anton Khirnov
7a4f74eed5
h264: embed the DPB in the context
...
It now has a fixed size and is initialized only once, so there is no
point in allocating it separately.
2015-04-29 05:52:58 +02:00
Anton Khirnov
88c612e3a4
h264: merge the init and reinit paths in update_thread_context()
...
There is no real need to handle the init case specially, everything
necessary is initialized in the reinit code as well.
2015-04-29 05:52:58 +02:00
Anton Khirnov
8a66fd4026
h264: drop the reinit parameter from init_slice_header()
...
It is only used to decide whether to call free_tables(), but that
function is safe to call on an uninitialized context as well.
2015-04-29 05:52:58 +02:00
Anton Khirnov
c9ccbc7333
h264: update the current bit depth/chroma type in init_slice_header()
...
With frame threading, it is currently only updated in the context where
the change occurs, but not in any other contexts.
2015-04-29 05:52:58 +02:00
Anton Khirnov
29dcde2b87
h264: copy nal_length_size in update_thread_context
...
It does not make sense to copy is_avc without copying this as well. This
patch should not change anything for now, but will have an effect in
later commits.
2015-04-29 05:52:58 +02:00
Anton Khirnov
440e8dd374
h264: drop a comment that carries no useful information
2015-04-29 05:52:58 +02:00
Anton Khirnov
11f024ef0a
h264: move freeing the escaped RBSP buffer to free_context()
...
It does not logically belong in free_tables(), since it's not allocated
in alloc_tables() and its size has nothing to do with the frame size.
2015-04-29 05:52:58 +02:00
Anton Khirnov
ee62b364be
h264: eliminate ff_h264_set_parameter_from_sps()
...
That function currently does two things -- reinitializing the DSP
contexts and setting low_delay based on the SPS values.
The former more appropriately belongs in h264_slice_header_init(), while
the latter only really makes sense in decode_slice_header().
The third call to ff_h264_set_parameter_from_sps(), done immediately
after parsing a new SPS, appears to serve no useful purpose, so it is
just dropped.
Also, drop now unneeded H264Context.cur_chroma_format_idc.
2015-04-29 05:52:57 +02:00
Anton Khirnov
54986d6db9
h264: move context reinit lower down in update_thread_context()
...
It uses some fields from the SPS, which is not yet set where the reinit
is called currently.
2015-04-29 05:52:57 +02:00
Anton Khirnov
a6cd154463
h264: move the DPB init/uninit to init_context()/free_context()
...
Currently, the DPB is initialized in alloc_tables() and uninitialized in
free_tables(), but those functions manage frame size-dependent
variables, so DPB management does not logically belong in there.
Since we want the init/uninit to happen exactly once per the context
lifetime, init_context()/free_context() are the proper place for this
code.
2015-04-29 05:52:57 +02:00
Anton Khirnov
9d33bab583
h264: drop H264Context.ouputed_poc
...
It is only set, but never used for anything.
2015-04-29 05:52:57 +02:00
Anton Khirnov
27b0e6ebfd
h264: drop needs_realloc
...
It is not needed anymore since switching to refcounted frames.
2015-04-29 05:52:57 +02:00
Anton Khirnov
249796e256
svq3: initialize some required H264Context fields.
...
They are no longer initialized in ff_h264_decode_init() since 43fd3dd ,
so svq3 needs to initialize the manually.
Fixes svq3 decoding, broken since 43fd3dd .
2015-04-05 21:02:56 +02:00
Anton Khirnov
bd737b5178
h264: reset the private data in init_thread_copy()
...
The generic code copies the main context's private data to all the
others. However that is quite dangerous, as it might end up copying some
pointers that are or will become invalid.
Since everything we actually need will be copied later in
update_thread_context(), it's safest to zero the private data in
init_thread_copy(), so it works the same way as init for the main
context.
2015-04-05 12:03:07 +02:00
Anton Khirnov
a939e5b252
h264: remove a commented out nonsense line
2015-04-05 12:03:02 +02:00
Anton Khirnov
65afa65e73
h264: drop redundant initialization of the scaling matrices
...
It will always be initialized when actually parsing the PPS.
2015-04-05 12:02:57 +02:00
Anton Khirnov
e1f907711a
h264: factor out common code from init() and init_thread_copy()
2015-04-05 12:02:35 +02:00
Anton Khirnov
43fd3dd80c
h264: drop redundant initialization in init()
...
There is no real advantage to initializing any of those in init,
assuming yuv420, before the real stream parameters are known.
2015-04-05 12:02:26 +02:00
Anton Khirnov
050324d020
h264: initialize cur_chroma_format_idc
...
This makes sure the various DSP contexts get properly initialized in
ff_h264_set_parameter_from_sps() whatever the value of
raw_bits_per_sample.
2015-04-05 12:02:20 +02:00
Anton Khirnov
84f226a3bc
h264: use the correct SPS during PPS parsing
...
There is in general no reason for the currently active SPS to be the one
referenced by the PPS being parsed.
2015-04-05 12:01:34 +02:00
Anton Khirnov
a4d34e218f
h264: disable ER by default
...
The way it is currently designed is fundamentally unsafe and cannot be
reasonably fixed without completely rewriting it.
2015-04-03 13:14:43 +02:00
Anton Khirnov
3892bdab9b
avconv: do not overwrite the stream codec context for streamcopy
...
Since we are not doing encoding, there is no point in ever touching the
separate encoding context. Always use the stream codec context.
Fixes writing attachments.
CC:libav-devel@libav.org
2015-04-03 13:10:03 +02:00
Anton Khirnov
b2965ec776
FATE: add a test for parameter changes in HEVC
2015-04-03 13:10:03 +02:00
Anton Khirnov
df528b11ac
hevc: make sure no dangling pointers remain around on VPS/SPS change
2015-04-03 13:10:03 +02:00
Anton Khirnov
ce0bc09ee2
hevc: do not change the VPS if its contents are the same
...
This is the same as is done for SPS.
2015-04-03 13:10:03 +02:00
Anton Khirnov
7693ba0a0e
hevc: export stream parameters from extradata
...
This allows the callers to have a hint of the probable stream parameters
without actually decoding anything.
2015-04-03 13:10:03 +02:00
Anton Khirnov
1ae7afd256
hevc: split out setting AVCodecContext parameters
...
Additionally always set the software pixel format, so it's available
even if ff_get_format() is not called later. This will be useful for
exporting stream parameters from init().
2015-04-03 13:10:02 +02:00
Anton Khirnov
72b7441a10
lavc: add Intel libmfx-based H.264 encoder
2015-03-27 22:02:10 +01:00
Anton Khirnov
9ba27c2348
qsvdec: add 'decode' to the non-static function names
2015-03-27 21:57:47 +01:00
Anton Khirnov
d0a63d8b98
qsvdec: split off some code that will be shared with the encoder
2015-03-27 21:57:28 +01:00
Anton Khirnov
b04d009b0e
qsv: rename to qsvdec
...
This is to avoid conflicts with the upcoming QSV encoding support.
2015-03-27 21:56:36 +01:00
Anton Khirnov
c28ed1d743
h264: move [uv]linesize to the per-slice context
...
While it is a per-frame variable, it is only really used in the
low-level decoding code, so it is more efficient to store it in the
slice context.
2015-03-21 11:27:16 +01:00
Anton Khirnov
b53569e068
h264_cabac: remove now unnecessary H264Context function parameters
2015-03-21 11:27:16 +01:00
Anton Khirnov
a12d3188cb
h264: use a smaller struct for the ref lists
...
There is no need to store a whole H264Picture, with a full AVFrame
embedded in it. This should allow getting rid of the embedded AVFrame
later.
2015-03-21 11:27:16 +01:00
Anton Khirnov
94295106d2
h264_mb: remove an unused function parameter
2015-03-21 11:27:16 +01:00
Anton Khirnov
2b4c38d3c6
h264: drop some mpegvideo remnants from draw_horiz_band()
...
This code makes no sense for h.264.
2015-03-21 11:27:16 +01:00
Anton Khirnov
5bf3c0fa49
h264: drop the now unused per-slice H264Contexts
2015-03-21 11:27:16 +01:00
Anton Khirnov
51d8725a6e
h264: use the main H264Context as the parent for all slice contexts
...
There is now no need to have per-slice copies of the H264Context.
2015-03-21 11:27:15 +01:00
Anton Khirnov
92e0b7342c
h264_slice: constify all the uses of H264Context during slice decoding
...
All the variables modified by this code are either per-MB arrays or have
been moved to the per-slice context
2015-03-21 11:27:15 +01:00
Anton Khirnov
3178f4d33f
h264: move rbsp_buffer into the per-slice context
2015-03-21 11:27:15 +01:00
Anton Khirnov
582683b6ac
h264: move remaining ER stuff into the per-slice context
2015-03-21 11:27:15 +01:00
Anton Khirnov
5bc69f38c1
error_resilience: do not require mbintra/skip tables
...
h264dec does not use them at all and only allocates them for ER.
2015-03-21 11:27:15 +01:00
Anton Khirnov
c377e04d8a
h264: move top_borders into the per-slice context
...
Also change the method for allocating to the same one as used by
edge_emu_buffer.
2015-03-21 11:27:15 +01:00