Anton Khirnov
2d0432d918
vocdec: put the code not shared with other demuxers under appropriate ifdef
2015-12-12 21:26:55 +01:00
Anton Khirnov
09ae7b81ea
flvdec: do not create any streams in read_header()
...
The current muxer behaviour is to create streams in read_header() based
on the audio/video presence flags, but fill in the stream parameters
later when we actually get some packets for them. This is rather shady,
since other demuxers set the stream parameters immediately when the
stream is created and do not touch the stream codec context after that.
Change the flv demuxer to behave in the same way as other similar
demuxers -- create the streams only when we get a packet for them.
2015-12-12 21:26:48 +01:00
Anton Khirnov
de9e199a03
lavc: make avpriv_mpa_decode_header private on next bump
...
It's not used by anything outside of lavc anymore.
2015-12-12 21:26:29 +01:00
Anton Khirnov
72d658766e
mp3dec: replace avpriv_mpa_decode_header with avpriv_mpegaudio_decode_header
...
The latter does not require a full AVCodecContext and still provides all
the functionality needed here.
2015-12-12 21:26:00 +01:00
Anton Khirnov
955aec3c7c
mpegaudiodecheader: check the header in avpriv_mpegaudio_decode_header
...
Almost all the places from which this function is called already check
the header manually and in the two that don't (the mp3 muxer) the check
should not cause any problems.
2015-12-12 21:25:42 +01:00
Anton Khirnov
cea1eef25c
lavc: get the profile name through the codec descriptor in avcodec_string()
2015-12-12 21:24:29 +01:00
Anton Khirnov
2c6811397b
lavc: add profiles to AVCodecDescriptor
...
The profiles are a property of the codec, so it makes sense to export
them through AVCodecDescriptors, not just the codec implementations.
2015-12-12 21:22:49 +01:00
Anton Khirnov
cdc9ce098e
lavc: print the name of the codec, not its implementation, in avcodec_string
2015-12-12 21:21:54 +01:00
Anton Khirnov
6bf4c1d711
r3d: do not create the audio stream until we know the sample rate
2015-12-12 21:20:33 +01:00
Anton Khirnov
9f1eccb97b
ff_parse_specific_params: do not use AVCodecContext.frame_size
...
It will not be set unless the muxing codec context is also the encoding
context, which is discouraged. When the frame size is not known from
av_get_audio_frame_duration(), the fallback should still be good enough.
2015-12-12 21:19:50 +01:00
Anton Khirnov
1f008f34d5
rmenc: do not use AVCodecContext.frame_size
...
It will not be set if the stream codec context is not the encoding
context. Use av_get_audio_frame_duration() instead, it should work for
all audio codecs supported by the muxer.
2015-12-12 21:19:08 +01:00
Anton Khirnov
458e53f51f
mpegvideo_enc: actually add the side data with vbv_delay to the packet
...
Fixes 2507b5dd67
2015-12-12 21:16:41 +01:00
Anton Khirnov
f1ccd07680
h264: do not call frame_start() for missing frames
...
We do not need to do a full setup like for a real frame, just allocate a
buffer and set cur_pic(_ptr).
2015-12-07 11:42:26 +01:00
Anton Khirnov
d6dc5d15af
aacdec: fix aac_static_table_init() prototype
2015-12-07 11:42:26 +01:00
Anton Khirnov
68e547ae8b
avpacket: use ERANGE instead of EOVERFLOW
...
EOVERFLOW seems to be unavailable on certain platforms.
2015-12-07 11:42:26 +01:00
Anton Khirnov
b8b21dee0f
mxfenc: always assume long gop
...
Checking the codec context parameters to find out this information is
far too unreliable to be useful, so it is safer to assume B-frames are
always present.
2015-12-06 10:28:36 +01:00
Anton Khirnov
e02de9df4b
lavc: export Dirac parsing API used by the ogg demuxer as public
...
Also, stop using AVCodecContext for storing the stream parameters.
2015-12-06 10:28:04 +01:00
Anton Khirnov
8bcadaacc2
mpegenc: use the CPB props side data
...
Do not access the encoder options, since it makes no sense when the
AVStream codec context is not the encoding context.
2015-12-06 10:26:13 +01:00
Anton Khirnov
5845a8273e
movenc: use the CPB props side data
...
Do not access the encoder options, since it makes no sense when the
AVStream codec context is not the encoding context.
2015-12-06 10:26:01 +01:00
Anton Khirnov
825900248b
qsvenc: export CPB props side data
2015-12-06 10:25:49 +01:00
Anton Khirnov
1520c6ff05
nvenc: export CPB props side data
2015-12-06 10:25:43 +01:00
Anton Khirnov
2507b5dd67
mpegvideo_enc: export vbv_delay in side data
...
Deprecate AVCodecContext.vbv_delay
2015-12-06 10:25:23 +01:00
Anton Khirnov
3f5c99fcbb
mpegvideo_enc: export CPB props side data
2015-12-06 10:25:08 +01:00
Anton Khirnov
732a37d146
libx264: export CPB props side data
2015-12-06 10:25:00 +01:00
Anton Khirnov
03afb62e83
libvpxenc: export CPB props side data
2015-12-06 10:24:47 +01:00
Anton Khirnov
11c9bd633f
libopenh264enc: export CPB props side data
2015-12-06 10:24:21 +01:00
Anton Khirnov
f0b769c16d
lavc: add a packet side data type for VBV-like parameters
2015-12-06 10:23:45 +01:00
Anton Khirnov
e63e3797a1
avconv: pass the global codec side data to the muxer
2015-12-06 10:23:21 +01:00
Anton Khirnov
84adab333c
lavc: add stream-global packet side data
...
This is similar to what is done for AVStream.
2015-12-06 10:22:43 +01:00
Anton Khirnov
31c51f7441
avpacket: add a function for wrapping existing data as side data
2015-12-06 10:22:18 +01:00
Anton Khirnov
b09ad37c83
h264: derive the delay from the level when it's not present
...
Fall back to maximum DPB size if the level is unknown.
This should be more spec-compliant and does not depend on the caller
setting has_b_frames before opening the decoder.
The old behaviour, when the delay is supplied by the caller setting
has_b_frames, can still be obtained by setting strict_std_compliance
below normal.
2015-12-06 09:43:52 +01:00
Anton Khirnov
792b9c9dfc
h264: set frame_num in start_frame(), not decode_slice_header()
...
That is a more appropriate place for it, since it is not allowed to
change between slices.
2015-12-06 09:43:45 +01:00
Anton Khirnov
741b494fa8
h264: eliminate default_ref_list
...
According to the spec, the reference list for a slice should be
constructed by first generating an initial (what we now call "default")
reference list and then optionally applying modifications to it.
Our code has an optimization where the initial reference list is
constructed for the first inter slice and then rebuilt for other slices
if needed. This, however, adds complexity to the code, requires an extra
2.5kB array in the codec context and there is no reason to think that it
has any positive effect on performance. Therefore, simplify the code by
generating the reference list from scratch for each slice.
2015-12-06 09:42:39 +01:00
Anton Khirnov
e7078e842d
hevcdsp: add x86 SIMD for MC
2015-12-05 21:11:52 +01:00
Anton Khirnov
0cef06df07
checkasm: add HEVC MC tests
2015-12-05 21:11:21 +01:00
Anton Khirnov
a853388d2f
hevc: change the stride of the MC buffer to be in bytes instead of elements
...
Currently, the frame stride is passed in bytes, while the MC buffer size
is in int16_t elements, This can be confusing, so pass both strides in
bytes.
2015-12-05 21:11:12 +01:00
Anton Khirnov
688417399c
hevcdsp: split the pred functions by width
...
This should allow for more efficient SIMD.
2015-12-05 21:10:41 +01:00
Anton Khirnov
818bfe7f0a
hevcdsp: split the epel functions by width
...
This should allow for more efficient SIMD.
2015-12-05 21:09:57 +01:00
Anton Khirnov
1f821750f0
hevcdsp: split the qpel functions by width instead of by the subpixel fraction
...
This should allow for more efficient SIMD.
Keep the C versions as they are now, to allow the compiler to inline the
interpolation coefficients.
2015-12-05 21:08:04 +01:00
Anton Khirnov
8a9de5c524
doc/encoders: document the QSV option mappings
2015-11-20 09:30:26 +01:00
Anton Khirnov
fc4c27c4ed
qsvenc: expose additional encoding options
2015-11-20 09:29:50 +01:00
Anton Khirnov
e7d7cf86dc
qsvenc: support more RC methods
2015-11-20 09:29:13 +01:00
Anton Khirnov
fb8753ada2
qsvenc: factor out common options
2015-11-20 09:26:12 +01:00
Anton Khirnov
3edac01f79
qsvenc: fix setting maxrate for VBR
2015-11-20 09:25:58 +01:00
Anton Khirnov
4d8f536b53
qsvenc: print the actual video parameters used by MSDK
2015-11-20 09:23:22 +01:00
Anton Khirnov
f6c94457b4
mpegvideo_enc: enable rtp_mode when multiple slices are used
...
Currently, multiple slices with just one thread produce corrupted
output.
Additionally, enable slice structured mode for h263(+)
Bug-Id: 912
CC: libav-stabl@libav.org
2015-11-20 09:22:59 +01:00
Anton Khirnov
d80f0a4ad6
mpevideo_enc: disallow multiple slices for h261 and flv
...
They do not work and produce corrupted output.
CC: libav-stable@libav.org
2015-11-20 09:22:48 +01:00
Anton Khirnov
21ab6fd01b
lavf: document that passing valid timestamps to muxers is now mandatory
...
Also, extend the documentation about setting timestamps.
2015-11-18 11:31:40 +01:00
Anton Khirnov
79f5347a98
avcodec: fix doxy placement
2015-11-09 07:52:20 +01:00
Anton Khirnov
8de1ee9f72
lavf: deprecate compute_pkt_fields2
...
All encoders set pts and dts properly now (and have been doing that for
a while), so there is no good reason to do any timestamp guessing in the
muxer.
The newly added AVStreamInternal will be later used for storing all the
private fields currently living in AVStream.
2015-11-09 07:50:55 +01:00
Anton Khirnov
aeda1121c9
lavf: factor out freeing an AVStream
...
It will be needed in other functions.
2015-11-08 11:49:23 +01:00
Anton Khirnov
3efd71b4d0
avconv: set packet duration for CFR video streams
2015-11-08 11:49:05 +01:00
Anton Khirnov
a0c71a5751
lavf: initialize cur_dts to AV_NOPTS_VALUE for muxing
...
The reasoning for setting it to zero only applies to demuxing.
2015-11-08 11:48:47 +01:00
Anton Khirnov
fb472e1a11
avconv: add support for Intel QSV-accelerated transcoding
...
Signed-off-by: Luca Barbato <lu_zero@gentoo.org >
2015-10-16 20:01:37 +02:00
Anton Khirnov
dc923bc23b
qsvenc: add an API for allocating opaque surfaces
2015-10-16 20:00:40 +02:00
Anton Khirnov
2ec96b6bd5
qsvenc: cosmetics, reindent
2015-10-16 20:00:17 +02:00
Anton Khirnov
f6f32fc93d
qsvenc: set the timestamp for PIX_FMT_QSV frames as well
2015-10-16 20:00:12 +02:00
Anton Khirnov
772c87c5a6
qsvenc: support passing arbitrary external buffers to the encoder
2015-10-16 20:00:02 +02:00
Anton Khirnov and Luca Barbato
a8956eca1f
cabac: Make CABAC states hardcoded
...
There is not much reason to generate such a small table at runtime.
Signed-off-by: Derek Buitenhuis <derekb@vimeo.com >
Signed-off-by: Luca Barbato <lu_zero@gentoo.org >
2015-10-08 21:55:31 +02:00
Anton Khirnov
bb198c4997
d3d11va: make av_d3d11va_alloc_context() available at all times
...
The public API should not depend on the build configuration.
2015-10-03 14:09:23 +02:00
Anton Khirnov
f320287159
d3d11va: check for malloc failure
2015-10-03 14:08:13 +02:00
Anton Khirnov
8aecec8402
qsvdec: make ff_qsv_decode_init() static
...
It is not used outside of qsvdec.c anymore.
2015-09-28 15:46:58 +02:00
Anton Khirnov
539e5ac2ec
examples/qsvdec: free the lavc decoder before closing MFX/VAAPI
...
lavc expects MFX to still be in a usable state on close.
2015-09-28 15:46:10 +02:00
Anton Khirnov
3ee462dca1
examples/qsvdec: do not free the surfaces in the frame_free() callback
...
Even though libmfx might not need them anymore, avcodec might still
access the surfaces. So free them separately at the end.
2015-09-28 15:45:29 +02:00
Anton Khirnov
2c32eace5e
qsvdec: close the MFX decoder on uninit
2015-09-28 15:45:17 +02:00
Anton Khirnov
d0c8c380ec
qsv: document AVQSVContext members
2015-09-28 15:44:47 +02:00
Anton Khirnov
5d2daebf3c
qsvenc: mark the encoders as INIT_CLEANUP
...
Should fix some leaks on init failure.
2015-09-28 15:43:04 +02:00
Anton Khirnov
83847cc8fa
qsvenc: do not try to close the encoder if the session is NULL
2015-09-28 15:42:56 +02:00
Anton Khirnov
741b352b16
qsvdec: list supported pixel formats
...
This is useful for detecting QSV-enabled decoders.
2015-09-28 15:42:46 +02:00
Anton Khirnov
ae25413daf
lavfi: do not exclude hwaccel formats from ff_all_formats()
...
It should be possible to pass hwaccel frames through lavfi.
2015-09-28 15:42:38 +02:00
Anton Khirnov
d8ebb6157d
hevcdsp: fix a function name
...
put_weighted_pred_avg should be put_unweighted_pred_avg, there is no
weighting there.
2015-08-21 08:46:05 +02:00
Anton Khirnov
a1926a29fb
hevc: avoid invalid shifts of negative values
2015-08-21 08:45:37 +02:00
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