| Commit message (Collapse) | Author | Age |
|
|
|
| |
Signed-off-by: Diego Biurrun <diego@biurrun.de>
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This uses a new MMAL feature, which limits the number of extra frames
that can be buffered within the decoder. VIDEO_MAX_NUM_CALLBACKS can
be defined as positive or negative number. Positive numbers are
absolute, and can lead to deadlocks if the user underestimates the
number of required buffers. Negative numbers specify the number of extra
buffers, e.g. -1 means no extra buffer, (-1-N) means N extra buffers.
Set a gratuitous default of -11 (N=10). This is much lower than the
firmware default, which appears to be 96.
This is backwards compatible, but needs a symbol only present in newer
firmware headers. (It's an enum item, so it requires a check in
configure.)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
|
|
|
| |
Slight simplification. The result is the same. Also, change the
wording of the message as requested in patch review.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
|
|
|
|
| |
Fixes apparent mmal_port_disable() freezes in ffmmal_stop_decoder() when
calling ffmmal_decode() with flush semantics a large number of times in
a row.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
|
|
|
|
|
|
|
| |
The assert in ffmmal_stop_decoder() could trigger sometimes. The
packets_buffered counter was indeed not correctly maintained, and
packets were not subtracted from it if they were still in the waiting
queue.
For some reason, this happened especially with VC-1.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
| |
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
|
|
|
|
|
|
|
| |
Register mmaldec as mpeg2 decoder. Supporting mpeg2 in mmaldec is just a
matter of setting the correct MMAL_ENCODING on the input port. To ease the
addition of further supported mmal codecs a macro is introduced to generate
the decoder and decoder class structs.
Signed-off-by: Julian Scheel <julian@jusst.de>
Signed-off-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
|
|
|
|
|
| |
There is no avpriv_atomic_get, instead avpriv_atomic_int_get is to be used for
integers. This fixes building mmaldec.
Signed-off-by: Julian Scheel <julian@jusst.de>
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
| |
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
| |
|
|
|
|
| |
The original sample was generated with invalid software.
|
|
|
|
| |
Signed-off-by: Martin Storsjö <martin@martin.st>
|
|
|
|
|
|
| |
And simplify and explain the expression.
Fault introduced in f3fdef108eb06b1e71b29152bf6822519e787efe
|
|
|
|
| |
It is always equal to nb_slice_ctx.
|
|
|
|
|
| |
This is more correct and avoids wasting space when frame threading is
used.
|
|
|
|
|
| |
This limit is now unnecessary, we can easily support an arbitrary number
of threads.
|
|
|
|
| |
Those should already be set to the correct values.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
It is not used for anything internally, just exported in the output
frames. So remove the indirection and set it directly in frame_start().
|
| |
|
| |
|
|
|
|
| |
It is no longer called from outside the h264 decoder.
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
This comment used to apply to code that was removed.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
It is very fragile against fields being moved and hides what is actually
being copied. Copy all the fields explicitly instead.
|
| |
|
|
|
|
| |
This will allow decoupling the parser from the decoder.
|
|
|
|
|
| |
Make the SEI parsing independent of the H264Context, to allow
decoupling the parser from the decoder.
|
|
|
|
| |
This will allow decoupling the parser from the 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.
|
|
|
|
| |
It is no longer needed for anything.
|
| |
|
|
|
|
| |
This will allow decoupling the parser from the decoder.
|
|
|
|
| |
It is no longer necessary after 741b494fa8cd28a7d096349bac183893c236e3f9
|
|
|
|
|
| |
It has nothing to do with the reference count and so does not belong in
this function.
|
|
|
|
| |
Remove now unused ff_h264_decode_nal().
|
|
|
|
|
| |
Just pass through the bitstream as is. This is the same as what is done
for HEVC already.
|
| |
|
| |
|
|
|
|
|
|
| |
Avoid the clang warning
"warning: shifting a negative signed value is undefined"
|
|
|
|
|
|
| |
Avoid the clang warning
"warning: shifting a negative signed value is undefined"
|