| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
| |
We do not need to do a full setup like for a real frame, just allocate a
buffer and set cur_pic(_ptr).
|
|
|
|
|
| |
That is a more appropriate place for it, since it is not allowed to
change between slices.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
Convert doxygen to multiline and express bitfields more simply.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
|
|
|
|
|
|
|
|
| |
The container cropping is applied only when difference is within 16
pixels, and the smallest value between the two is chosen.
Bug-Id: 383
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
|
|
|
|
|
|
| |
finish_setup()
Should fix a large number of possible races with frame threading.
|
|
|
|
|
|
| |
Based on a patch by Michael Niedermayer <michaelni@gmx.at>.
CC: libav-stable@libav.org
Found-by: Kieran Kunhya <kierank@obe.tv>
|
|
|
|
|
|
|
|
| |
Also use the frame pixel format instead of the one from the codec
context, which is more robust.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
|
|
|
| |
Signed-off-by: Martin Storsjö <martin@martin.st>
|
|
|
|
|
| |
Bug-Id: CVE-2015-3417
CC: libav-stable@libav.org
|
|
|
|
| |
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
|
| |
|
|
|
|
|
| |
There is no real need to handle the init case specially, everything
necessary is initialized in the reinit code as well.
|
|
|
|
|
| |
It is only used to decide whether to call free_tables(), but that
function is safe to call on an uninitialized context as well.
|
|
|
|
|
| |
With frame threading, it is currently only updated in the context where
the change occurs, but not in any other contexts.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
It uses some fields from the SPS, which is not yet set where the reinit
is called currently.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
It is only set, but never used for anything.
|
|
|
|
| |
It is not needed anymore since switching to refcounted frames.
|
| |
|
|
|
|
|
| |
The way it is currently designed is fundamentally unsafe and cannot be
reasonably fixed without completely rewriting it.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
There is now no need to have per-slice copies of the H264Context.
|
|
|
|
|
| |
All the variables modified by this code are either per-MB arrays or have
been moved to the per-slice context
|
| |
|
| |
|
|
|
|
|
| |
Also change the method for allocating to the same one as used by
edge_emu_buffer.
|
|
|
|
|
|
|
| |
Also change the method for allocating them. Instead of two possible
alloc calls from different places, just ensure they are allocated at the
start of each slice. This should be simpler and less bug-prone than the
previous method.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|