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
Anton Khirnov
a638e9184d
vf_fade: make sure the slice end is always in the frame
...
CC: libav-stable@libav.org
2016-03-25 14:53:31 +01:00
Anton Khirnov
8a02a8031e
lavfi: add an NVIDIA NPP-based scaling filter
2016-03-23 19:55:34 +01:00
Anton Khirnov
4426540f0c
avconv: switch to the new BSF API
2016-03-20 08:15:01 +01:00
Anton Khirnov
33d18982fa
lavc: add a new bitstream filtering API
...
Deprecate the current bitstream filtering API.
2016-03-20 08:15:01 +01:00
Anton Khirnov
328e9a15c5
buffer: drop a reference to a non-existing function from the docs
...
This function only ever existed in the draft versions of the API.
2016-03-07 13:57:10 +01:00
Anton Khirnov
7480d00131
pixfmt: fix the AV_PIX_FMT_VAAPI_VLD doxy
2016-03-07 13:57:02 +01:00
Anton Khirnov
84b5dcf275
asfenc: remove an unused variable
2016-03-05 08:45:01 +01:00
Anton Khirnov
ff3db937ef
asfenc: fix some possible integer overflows
...
Store the file duration in the same timebase it arrives (i.e.
milliseconds) and only convert it to the file duration units (100ns)
when it's actually written, thus simplifying some calculations. Also,
store the duration as unsigned, since it cannot be negative.
CC: libav-stable@libav.org
Bug-ID: CVE-2016-2326
2016-03-05 08:43:04 +01:00
Anton Khirnov
1ceb07eb31
avformat_find_stream_info: move duration guessing after updating codec parameters
...
This bitrate might not be known otherwise.
Bug-Id: 926
2016-03-04 08:26:34 +01:00
Anton Khirnov
dbb43b8b83
avpacket: properly reset data/size in av_packet_move_ref()
...
It currently just calls av_init_packet(), which does not touch those
fields.
2016-02-26 09:15:36 +01:00
Anton Khirnov
ba357e9869
avprobe: switch to codecpar
2016-02-26 09:15:29 +01:00
Anton Khirnov
567d6d5f9d
avprobe: add local per-stream state
...
This will be useful in the following commits.
2016-02-26 09:15:20 +01:00
Anton Khirnov
c9478410c6
avprobe: add local per-file state
...
Do not pass just a bare AVFormatContext pointer around, wrap it in
struct. This will be useful in the following commits.
2016-02-26 09:15:06 +01:00
Anton Khirnov
c80344d010
mpegvideo_enc: use avcodec_free_context() instead of av_free()
2016-02-26 09:14:59 +01:00
Anton Khirnov
168a443d43
avprobe: print information from the codec descriptor
...
avprobe is not doing any decoding, so this is more correct than printing
information from a random codec implementation.
2016-02-26 09:14:49 +01:00
Anton Khirnov
e7188a1a84
avprobe: remove a pointless condition and a dead branch
...
AVStream.codec is always non-NULL
2016-02-26 09:14:38 +01:00
Anton Khirnov
dc4983d78a
APIchanges: add missing hashes and dates
...
Also, remove a stray line (apparently fallout from conflict resolution).
2016-02-26 09:14:13 +01:00
Anton Khirnov
3e8fd93b6a
lavf: add a missing bump and APIchanges for the codecpar switch
2016-02-26 09:14:13 +01:00
Anton Khirnov
3c53627ac1
qsvdec: store the sync point in heap memory
...
The reasoning is the same as for the corresponding qsvenc patch.
2016-02-24 10:41:45 +01:00
Anton Khirnov
1138eb5509
vsrc_movie: convert to codecpar
2016-02-24 10:08:37 +01:00
Anton Khirnov
ac6d53589f
examples/transcode_aac: convert to codecpar
2016-02-24 10:08:34 +01:00
Anton Khirnov
a9e1f2cc61
examples/qsvdec: convert to codecpar
2016-02-24 10:08:30 +01:00
Anton Khirnov
9897d9f4e0
examples/output: convert to codecpar
2016-02-24 10:08:24 +01:00
Anton Khirnov
c23152a903
avplay: convert do codecpar
2016-02-24 10:05:43 +01:00
Anton Khirnov
0705f5960c
avplay: do not use AVStream.codec for decoding
...
AVStream.codec is now deprecated. Allocate a separate codec context
instead.
2016-02-24 10:05:31 +01:00
Anton Khirnov
15e84ed3f1
avconv: convert to codecpar
...
The switch is not yet complete because the parsers and the bistream
filters do not have a new AVCodecParam-based API yet.
2016-02-23 17:01:58 +01:00
Anton Khirnov
5b9cdf8cba
avconv: switch opening decoders and encoders
...
Open decoders first, next encoders. This makes sure that that
subtitle_header is always set properly, without relying on
avformat_find_stream_info() setting it.
2016-02-23 17:01:58 +01:00
Anton Khirnov
9200514ad8
lavf: replace AVStream.codec with AVStream.codecpar
...
Currently, AVStream contains an embedded AVCodecContext instance, which
is used by demuxers to export stream parameters to the caller and by
muxers to receive stream parameters from the caller. It is also used
internally as the codec context that is passed to parsers.
In addition, it is also widely used by the callers as the decoding (when
demuxer) or encoding (when muxing) context, though this has been
officially discouraged since Libav 11.
There are multiple important problems with this approach:
- the fields in AVCodecContext are in general one of
* stream parameters
* codec options
* codec state
However, it's not clear which ones are which. It is consequently
unclear which fields are a demuxer allowed to set or a muxer allowed to
read. This leads to erratic behaviour depending on whether decoding or
encoding is being performed or not (and whether it uses the AVStream
embedded codec context).
- various synchronization issues arising from the fact that the same
context is used by several different APIs (muxers/demuxers,
parsers, bitstream filters and encoders/decoders) simultaneously, with
there being no clear rules for who can modify what and the different
processes being typically delayed with respect to each other.
- avformat_find_stream_info() making it necessary to support opening
and closing a single codec context multiple times, thus
complicating the semantics of freeing various allocated objects in the
codec context.
Those problems are resolved by replacing the AVStream embedded codec
context with a newly added AVCodecParameters instance, which stores only
the stream parameters exported by the demuxers or read by the muxers.
2016-02-23 17:01:58 +01:00
Anton Khirnov
a8068346e4
lavc: add a variant of av_get_audio_frame_duration working with AVCodecParameters
2016-02-23 17:01:58 +01:00
Anton Khirnov
998e1b8f52
lavc: add codec parameters API
...
This API is intended to allow passing around codec parameters without
using full AVCodecContext (which also contains codec options and
encoder/decoder state).
2016-02-23 17:01:58 +01:00
Anton Khirnov
ec4c483976
lavf: add a protocol whitelist/blacklist for file opened internally
...
Should make the default behaviour safer for careless callers that open
random untrusted files.
Bug-Id: CVE-2016-1897
Bug-Id: CVE-2016-1898
2016-02-22 11:48:30 +01:00
Anton Khirnov
8c0ceafb0f
urlprotocol: receive a list of protocols from the caller
...
This way, the decisions about which protocols are available for use in
any given situations can be delegated to the caller.
2016-02-22 11:45:31 +01:00
Anton Khirnov
cae448cfbf
aviobuf: add a private data struct for avio_open()ed contexts
...
It will be useful in the following commits.
2016-02-22 11:36:47 +01:00
Anton Khirnov
832a202c47
protocols: make the list of protocols static
...
Disallow other code to touch it directly, now it's only accessible
through a blacklisting/whitelisting function.
2016-02-22 11:35:57 +01:00
Anton Khirnov
7d61dc95d7
lavf: move urlcontext_child_class_next() to protocols.c
...
It needs to access the list of protocols directly, so it more properly
belongs there.
2016-02-22 11:35:52 +01:00
Anton Khirnov
0fa00d0591
lavf: move avio_enum_protocols() to protocols.c
...
It's a more appropriate place for it.
2016-02-22 11:35:46 +01:00
Anton Khirnov
2758cdedfb
lavf: reorganize URLProtocols
...
Instead of a linked list constructed at av_register_all(), store them
in a constant array of pointers.
Since no registration is necessary now, this removes some global state
from lavf. This will also allow the urlprotocol layer caller to limit
the available protocols in a simple and flexible way in the following
commits.
2016-02-22 11:30:58 +01:00
Anton Khirnov
225e84e745
hls: disallow opening nested files in child demuxers
2016-02-22 11:30:33 +01:00
Anton Khirnov
e192cd9ce2
smoothstreamingenc: do not open the files as read+write
...
They are only written to, never read.
2016-02-22 11:30:24 +01:00
Anton Khirnov
d082078a88
dashenc: eliminate ffurl_* usage
...
Now all IO should go through the IO callbacks and be interceptable by
the caller.
2016-02-22 11:29:00 +01:00
Anton Khirnov
7fbb3b5b98
lavf: use the io_open callbacks for files opened from open_input() as well
...
There is no real reason to treat them differently.
2016-02-22 11:28:35 +01:00
Anton Khirnov
5efd91284e
avprobe: do not call avio_close() on a custom context
...
avio_close() can only be called on AVIOContexts created by avio_open(2).
2016-02-22 11:28:26 +01:00
Anton Khirnov
dc6527ed90
nutenc: do not use AVCodecContext.frame_size
...
It will in general not be available. Use block_align if known or fall
back to av_get_audio_frame_duration().
2016-02-22 11:28:00 +01:00
Anton Khirnov
d847a40888
hwcontext_cuda/vdpau: add to skipheaders
2016-02-18 08:47:39 +01:00
Anton Khirnov
9c0bc1e980
qsv: add a missing #include
...
Needed for enum AVCodecID
2016-02-18 08:47:33 +01:00
Anton Khirnov
c15f6098b1
avconv: pass the hw context from filters to the encoder
2016-02-14 22:33:26 +01:00
Anton Khirnov
871d0930d4
nvenc: support CUDA frames as input
2016-02-14 22:31:47 +01:00
Anton Khirnov
7b3214d005
lavc: add a field for passing AVHWFramesContext to encoders
2016-02-14 22:29:52 +01:00
Anton Khirnov
21f7cd4acd
lavfi: add a filter for uploading normal frames to CUDA
2016-02-14 22:25:38 +01:00
Anton Khirnov
1bf3413461
avconv: use the new buffersrc parameters API
...
The timebase change in the zmbv-8bit test is due to the fact that
previously the timebase string was evaluated as floating point, then
converted to a rational. After this commit, the timebase is passed
directly as is.
2016-02-14 22:22:41 +01:00
Anton Khirnov
b3dd30db0b
lavfi: pass the hw frames context through the filter chain
2016-02-14 22:21:00 +01:00
Anton Khirnov
ad884d1002
hwcontext: add a CUDA implementation
2016-02-14 22:08:33 +01:00
Anton Khirnov
7bc780cd44
pixfmt: add a CUDA hwaccelled format
2016-02-14 22:08:22 +01:00
Anton Khirnov
c51b2c79a7
Allow linking to CUDA dynamically instead of dlopen()ing it at runtime
2016-02-14 22:08:13 +01:00
Anton Khirnov
bd49be885e
avconv_vdpau: use the hwcontext API to simplify code
2016-02-14 22:07:44 +01:00
Anton Khirnov
a001ce31bc
hwcontext: add a VDPAU implementation
2016-02-14 22:06:04 +01:00
Anton Khirnov
89923e418b
lavu: add a framework for handling hwaccel frames
2016-02-14 21:36:59 +01:00
Anton Khirnov
721a4efc05
buffer: add support for pools using caller data in allocation
...
This should allow using more complex allocators than simple malloc
wrappers.
2016-02-14 21:24:39 +01:00
Anton Khirnov
c084d6d2cf
buffersrc: default SAR to 0 (unknown) rather than 1
...
It makes more sense to not claim anything about the SAR if we don't know
anything. No changes in the FATE tests, since this is what avconv ends
up doing anyway.
2016-02-14 21:24:24 +01:00
Anton Khirnov
d005ccc630
nvenc: rename a misnamed function
...
This function copies the encoded bistream into the caller's packet,
calling it 'get_frame' is misleading.
2016-02-12 10:20:11 +01:00
Anton Khirnov
118beda355
nvenc: merge input and output surface structs
...
An input frame always corresponds to exactly one output packet, so there
is no point in complicating the situation by managing them separately.
2016-02-12 10:19:40 +01:00