Anton Khirnov
80fb19bc23
avconv: fix a check for av_bsf_get_by_name() return value
2016-05-26 15:40:34 +02:00
Anton Khirnov
9f7590f4e4
avconv_vaapi: use the hwcontext device creation API
2016-05-26 15:40:34 +02:00
Anton Khirnov
18c506e9e6
avconv_dxva2: use the hwcontext device creation API
2016-05-26 15:40:34 +02:00
Anton Khirnov
f72db3f2f3
avconv_vdpau: use the hwcontext device creation API
2016-05-26 15:40:34 +02:00
Anton Khirnov
b8bf9194af
hwcontext_vaapi: implement device creation
2016-05-26 15:40:34 +02:00
Anton Khirnov
8e70385a8e
hwcontext_dxva2: implement device creation
2016-05-26 15:40:33 +02:00
Anton Khirnov
2e219b491b
hwcontext_cuda: implement device creation
2016-05-26 15:40:33 +02:00
Anton Khirnov
38392b2af8
hwcontext_vdpau: implement device creation
2016-05-26 15:40:33 +02:00
Anton Khirnov
1c9e8616c5
hwcontext: add a function for opening devices
2016-05-26 15:40:32 +02:00
Anton Khirnov
ac84e618df
avfiltergraph: check the query_formats() return value
2016-05-23 06:46:18 +02:00
Anton Khirnov
2ef6dab0a7
lavc: document that avcodec_close() should not be used
...
We cannot deprecate it until the new parser API is in place, because of
the way libavformat works. But the majority of the users can already
simply replace it with avcodec_free_context(), which will simplify the
transition once it is finally deprecated.
2016-05-23 06:46:18 +02:00
Anton Khirnov
04fc8e24a0
lavc: deprecate avcodec_get_context_defaults3()
...
This function is supposed to "reset" a codec context to a clean state so
that it can be opened again. The only reason it exists is to allow using
AVStream.codec as a decoding context (after it was already
opened/used/closed by avformat_find_stream_info()). Since that behaviour
is now deprecated, there is no reason for this function to exist
anymore.
2016-05-23 06:46:17 +02:00
Anton Khirnov
5f30ac2779
lavc: deprecate avcodec_copy_context()
...
Since AVCodecContext contains a lot of complex state, copying a codec
context is not a well-defined operation. The purpose for which it is
typically used (which is well-defined) is copying the stream parameters
from one codec context to another. That is now possible with through the
AVCodecParameters API. Therefore, there is no reason for
avcodec_copy_context() to exist.
2016-05-23 06:46:17 +02:00
Anton Khirnov
14634429b9
lavf: update muxing doxy
...
Describe the new AVCodecParameters API.
2016-05-23 06:46:17 +02:00
Anton Khirnov and Diego Biurrun
35c8580668
avconv: stop using AVStream.codec
...
It is now only used by the av_parser_change() call during streamcopy, so
allocate a special AVCodecContext instance for this case. This instance
should go away when the new parser API is finished.
Signed-off-by: Diego Biurrun <diego@biurrun.de >
2016-05-22 20:22:42 +02:00
Anton Khirnov
3399a26d3f
nvenc: allow setting the number of slices
...
Based on a patch by Agatha Hu <ahu@nvidia.com >
2016-05-19 14:17:04 +02:00
Anton Khirnov
9375c97460
nvenc: list the major contributors in the copyright header
2016-05-19 14:17:04 +02:00
Anton Khirnov
6f58b4dc47
nvenc: drop the hard dependency on CUDA
...
The code needs only a few definitions from cuda.h, so define them
directly when CUDA is not enabled. CUDA is still required for accepting
HW frames as input.
Based on the code by Timo Rothenpieler <timo@rothenpieler.org >.
2016-05-19 14:17:03 +02:00
Anton Khirnov
f11ec8cee7
nvenc: only support HW frames when CUDA is enabled
...
hwcontext_cuda.h includes cuda.h, so this will allow building nvenc
without depending on cuda.h
2016-05-19 14:17:03 +02:00
Anton Khirnov
2156c4c300
nvenc: write the VUI signal properties for HEVC
...
Bump the API version requirement to 6.
Based on a patch by Agatha Hu <ahu@nvidia.com >.
2016-05-19 14:17:03 +02:00
Anton Khirnov
a1df786503
nvenc: only write the VUI signal type fields if they are set
...
Based on a patch by Agatha Hu <ahu@nvidia.com >.
2016-05-19 14:17:03 +02:00
Anton Khirnov
9427d92f40
nvenc: add support for lossless encoding
...
Based on a patch by Philip Langdale <philipl@overt.org >
2016-05-19 14:08:55 +02:00
Anton Khirnov
e42b9bc894
nvenc: fix the rc option definitions
2016-05-19 14:08:25 +02:00
Anton Khirnov
65dc7ca4c8
Add release notes for 12.
2016-05-19 13:44:41 +02:00
Anton Khirnov
85ce9636e4
configure: move the hardware accel libs' entries in the configure output
...
Print them as a subsection of the external library section, in line with
what is done for the help text in the previous commit.
2016-05-19 13:43:29 +02:00
Anton Khirnov
c0f4c7db9f
configure: move the hardware accel libs' entries in the help text
...
Group them in a subsection of the external library section. That should
make them easier to find and understand how they fit in the scheme of
things.
Also, rewrite the description text in a similar way as in the previous
commit.
2016-05-19 13:41:51 +02:00
Anton Khirnov
5e2203448a
configure: improve the help text for external libraries
...
Add a more accurate description of what the switches actually do (i.e.
allow using the given library, not enabling the corresponding
codecs etc.).
Replace the library descriptions, in many cases boilerplate text without
useful information, with a short summary of what the library does.
2016-05-19 13:40:53 +02:00
Anton Khirnov
0d95d88fbd
lavc: revert the Makefile part of 330177b
...
There is no real advantage to listing some codecs or subsystems
separately simply because they are somehow "hw-accelerated", on the
contrary it makes them harder to find than in a plain alphabetically
ordered list.
2016-05-19 13:40:53 +02:00
Anton Khirnov
b23613268c
avconv_dxva2: use the hwcontext API
2016-05-17 09:11:34 +02:00
Anton Khirnov
c46db38cde
hwcontext: add a dxva2 implementation
2016-05-17 09:11:25 +02:00
Anton Khirnov
31f6a4b4b8
lavc: mark the old audio/video encoding API as deprecated
2016-05-16 10:31:26 +02:00
Anton Khirnov
8996515b13
avpacket: fix setting AVPacket.data in av_packet_ref()
...
The data field does not necessarily point to the beginning of the
underlying AVBuffer.
CC: libav-stable@libav.org
2016-05-16 10:31:08 +02:00
Anton Khirnov
e62ff72fc1
lavc: make avcodec_open2() fail when the timebase is not set for encoding
...
Many encoders use it. There is also a divide by the timebase lower in
this function, which would crash when it is not set.
2016-05-16 10:30:57 +02:00
Anton Khirnov
2e5bde9565
h264: eliminate max_contexts
...
It is always equal to nb_slice_ctx.
2016-04-24 10:06:25 +02:00
Anton Khirnov
e3c9041cfe
h264: allocate some tables per slice contexts, not threads
...
This is more correct and avoids wasting space when frame threading is
used.
2016-04-24 10:06:25 +02:00
Anton Khirnov
e065279529
h264: remove an artificial restriction on the number of slice threads
...
This limit is now unnecessary, we can easily support an arbitrary number
of threads.
2016-04-24 10:06:25 +02:00
Anton Khirnov
4fd34e639d
h264: remove pointless setting of some variables in loop_filter
...
Those should already be set to the correct values.
2016-04-24 10:06:25 +02:00
Anton Khirnov
9c858ce33f
h264: remove a pointless comment
2016-04-24 10:06:25 +02:00
Anton Khirnov
b77fffa127
h264: make slice threading work with deblocking_filter=1
...
In such a case, decode the MBs in parallel without the loop filter, then
execute the filter serially.
The ref2frm array was previously moved to H264SliceContext. That was
incorrect, since it applies to all the slices and should properly be in
H264Context (it did not actually break decoding, since this distinction
only becomes relevant with slice threading and deblocking_filter=1,
which was not implemented before this commit). The ref2frm array is thus
moved back to H264Context.
2016-04-24 10:06:25 +02:00
Anton Khirnov
370ddc7b38
h264: remove H264Context.pict_type
...
It is not used for anything internally, just exported in the output
frames. So remove the indirection and set it directly in frame_start().
2016-04-24 10:06:25 +02:00
Anton Khirnov
56087ec0a2
h264: drop a pointless indirection
2016-04-24 10:06:25 +02:00
Anton Khirnov
0e7772c5e4
h264: remove unused H264SliceContext.rbsp_buffer
2016-04-24 10:06:25 +02:00
Anton Khirnov
7f045c4429
h264: merge ff_h264_free_context() into h264_decode_end()
...
It is no longer called from outside the h264 decoder.
2016-04-24 10:06:24 +02:00
Anton Khirnov
99c554efc8
h264: eliminate low_delay
...
It is always unconditionally initialized in decode_postinit() and then
immediately used in one place further below. All the other places where
it is accessed are just useless fluff.
2016-04-24 10:06:24 +02:00
Anton Khirnov
5b35b290dd
h264: remove a stale comment
...
This comment used to apply to code that was removed.
2016-04-24 10:06:24 +02:00
Anton Khirnov
89ae244e78
h264_refs: remove an unused parameter from ff_h264_fill_mbaff_ref_list()
2016-04-24 10:06:24 +02:00
Anton Khirnov
755f79f84c
h264_refs: make the H264Context const where possible
2016-04-24 10:06:24 +02:00
Anton Khirnov
a2fd547839
h264_refs: reorder functions to avoid forward declarations
2016-04-24 10:06:24 +02:00
Anton Khirnov
0ba471d7d8
h264: eliminate copy_fields
...
It is very fragile against fields being moved and hides what is actually
being copied. Copy all the fields explicitly instead.
2016-04-24 10:06:24 +02:00
Anton Khirnov
72da8d9bb2
h264_parser: remove the remaining dependencies on the h264 decoder
2016-04-24 10:06:24 +02:00
Anton Khirnov
98c97994c5
h264: decouple extradata parsing from the decoder
...
This will allow decoupling the parser from the decoder.
2016-04-24 10:06:24 +02:00
Anton Khirnov
728d90a0c1
h264: decouple h264_sei from the h264 decoder
...
Make the SEI parsing independent of the H264Context, to allow
decoupling the parser from the decoder.
2016-04-24 10:06:24 +02:00
Anton Khirnov
c8dcff0cdb
h264: factor out calculating the POC count into a separate file
...
This will allow decoupling the parser from the decoder.
2016-04-24 10:06:24 +02:00
Anton Khirnov
113aeee6ae
h264_parser: move the H264DSPContext to the parser context
2016-04-24 10:06:24 +02:00
Anton Khirnov
3176217c60
h264: decouple h264_ps from the h264 decoder
...
Make the SPS/PPS parsing independent of the H264Context, to allow
decoupling the parser from the decoder. The change is modelled after the
one done earlier for HEVC.
Move the dequant buffers to the PPS to avoid complex checks whether they
changed and an expensive copy for frame threads.
2016-04-24 10:06:23 +02:00
Anton Khirnov
44d16df413
h264_parser: eliminate H264SliceContext usage
...
It is no longer needed for anything.
2016-04-24 10:06:23 +02:00
Anton Khirnov
71d3305c27
h264_parse: make sure the ref count is zeroed on all failure paths
2016-04-24 10:06:23 +02:00
Anton Khirnov
a6e27f7add
h264: factor out parsing the reference count into a separate file
...
This will allow decoupling the parser from the decoder.
2016-04-24 10:06:23 +02:00
Anton Khirnov
56b17a33f2
h264: stop testing whether the reference count changes in ff_set_ref_count()
...
It is no longer necessary after 741b494fa8
2016-04-24 10:06:23 +02:00
Anton Khirnov
e9f884416c
h264: move reading direct_spatial_mv_pred out of ff_set_ref_count()
...
It has nothing to do with the reference count and so does not belong in
this function.
2016-04-24 10:06:23 +02:00
Anton Khirnov
8d0cc8ca97
h264_parser: switch to h2645_parse for NAL unescaping
...
Remove now unused ff_h264_decode_nal().
2016-04-24 10:06:23 +02:00
Anton Khirnov
f3ed484953
h264_mp4toannexb_bsf: do not fail on annex B extradata
...
Just pass through the bitstream as is. This is the same as what is done
for HEVC already.
2016-04-24 10:06:23 +02:00
Anton Khirnov
06edef3d5e
Generate the lists of enabled protocols/bsfs from configure.
2016-04-19 13:34:07 +02:00
Anton Khirnov
a0f469da74
hwcontext: initialize sw_format in av_hwframe_ctx_alloc()
2016-04-15 10:15:54 +02:00
Anton Khirnov
5e1a3ea3ba
lavc: move the vaapi encoders further down in the list of codecs
...
Right now they are the first encoders for those codecs in the list, so
they are selected when the caller requests a codec by id.
Since they require special treatment, they should not be selected by
default if there are other encoders (e.g. libx264/5) available.
2016-04-15 10:10:57 +02:00
Anton Khirnov
18019f8cb9
FATE: add an H.264 test with unescaped extradata
...
See commit a7829a2
2016-04-15 10:06:39 +02:00
Anton Khirnov
d7abe900c3
FATE: add an H.264 test with invalid reference lists
...
See commit 9d74012
2016-04-15 10:04:52 +02:00
Anton Khirnov
69a638019f
avconv: fix -frames for video
...
For video, frame_number tracks the number of frames sent to the encoder.
So it should be incremented when we submit a frame, not when we get a
packet back.
2016-03-30 09:13:09 +02:00
Anton Khirnov
ca2f19b9cc
h264: switch to h2645_parse for NAL parsing
2016-03-28 10:16:28 +02:00
Anton Khirnov
a7829a2a3f
h264: reimplement 3aa661ec5 in a more explicit way
...
Instead of handling the problem inside NAL decoding code, add a higher
level wrapper function. This should be more robust against future
changes (and easier to read).
2016-03-28 10:10:18 +02:00
Anton Khirnov
add1467e5e
svq3: drop the build dependency on the h264 decoder
2016-03-28 09:58:26 +02:00
Anton Khirnov
a4d126dc59
svq3: eliminate remaining H264Context usage.
2016-03-28 09:58:14 +02:00
Anton Khirnov
7bbdae81e8
svq3: move block_offset to SVQ3Context
2016-03-28 09:58:07 +02:00
Anton Khirnov
1848a154a4
svq3: stop using H264Context.gb
2016-03-28 09:57:58 +02:00
Anton Khirnov
ea6ab02a17
svq3: move the frame num variables to the SVQ3Context
2016-03-28 09:57:45 +02:00
Anton Khirnov
21b7469322
svq3: eliminate H264Context.cur_pic usage
...
Use the SVQ3Context variable instead
2016-03-28 09:57:24 +02:00
Anton Khirnov
939b388383
svq3: eliminate remaining H264SliceContext usage
2016-03-28 09:56:57 +02:00
Anton Khirnov
5a5db90edf
svq3: move pict_type to the SVQ3Context
2016-03-28 09:56:45 +02:00
Anton Khirnov
12f13ecb2d
svq3: move mb strides/sizes to the SVQ3Context
2016-03-28 09:56:36 +02:00
Anton Khirnov
ad9d3384de
svq3: move the dequant buffer to SVQ3Context
...
Remove now unnecesary call to ff_h264_alloc_tables()
2016-03-28 09:56:09 +02:00
Anton Khirnov
549fc77273
svq3: move mb2br_xy to the SVQ3Context
2016-03-28 09:55:55 +02:00
Anton Khirnov
99dde60391
svq3: move {ref,mv}_cache to the SVQ3Context
2016-03-28 09:55:47 +02:00
Anton Khirnov
89a13998a1
svq3: rip out the svq3-relevant parts of pred_motion() out of h264
2016-03-28 09:55:24 +02:00
Anton Khirnov
8eecae77ff
svq3: move edge_emu_buffer to the SVQ3Context
2016-03-28 09:55:16 +02:00
Anton Khirnov
527bf5f7c6
svq3: move the pred mode variables to SVQ3Context
...
This will allow removing the H264Context dependency in the future.
2016-03-28 09:54:37 +02:00
Anton Khirnov
ecc31f6b08
h264: move ff_h264_check_intra[4x4]_pred_mode() to h264_parse
...
It is shared with svq3.
2016-03-28 09:53:56 +02:00
Anton Khirnov
1877712c58
svq3: move mb_{x,y,xy} to SVQ3Context
...
This will allow removing the H264Context dependency in the future.
2016-03-28 09:53:45 +02:00
Anton Khirnov
c2a4ca944d
svq3: eliminate write_back_intra_pred_mode() usage
...
This function depends on the h264 internals and is so tiny that just
copying the code out is the simplest replacement.
2016-03-28 09:51:10 +02:00
Anton Khirnov
c73fb9efb2
svq3: add all the required dsp contexts into SVQ3Context
...
Stop using the H264Context ones, to allow removing the H264Context
dependency.
2016-03-28 09:50:51 +02:00
Anton Khirnov
15b0517da9
svq3: make the dsp functions static
...
There is no need for them to be extern anymore.
2016-03-28 09:50:41 +02:00
Anton Khirnov
9b30f8dd8f
h264: remove the svq3-specific code
2016-03-28 09:50:25 +02:00
Anton Khirnov
e42ca48a8b
svq3: rip out the mb decoding code shared with h264
...
The ~100 lines of shared code is not worth the pain of svq3 messing with
h264 internals.
2016-03-28 09:49:53 +02:00
Anton Khirnov
e481458bc3
h264: factor out pred weight table parsing into a separate file
...
This will allow decoupling the parser from the decoder.
2016-03-28 09:48:31 +02:00
Anton Khirnov
90ed6c5cf7
h2645_parse: compute the actual data length, without trailing paddding
...
This is required by h264.
2016-03-28 09:47:25 +02:00
Anton Khirnov
b667252a41
h2645_parse: add support for parsing h264
2016-03-28 09:45:04 +02:00
Anton Khirnov
52ec149fbe
h2645_parse: change the AVCodecContext* parameter to void*
...
This should make it more clear that it is not supposed to be used for
anything except logging.
2016-03-28 09:43:31 +02:00
Anton Khirnov
8229eff4b7
h2645_parse: add a function for uninitializing the packet
2016-03-28 09:43:18 +02:00
Anton Khirnov
fa936a307f
hevc_parse: rename into h2645_parse
...
This code will be shared with h264.
2016-03-28 09:42:44 +02:00
Anton Khirnov
704a397697
rtmpdh: add an stdio.h include
...
The test uses printf.
2016-03-25 14:53:37 +01:00
Anton Khirnov
e3dfef8e3c
qsvdec_h2645: switch to the new BSF API
2016-03-25 14:53:37 +01:00