| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
channel layout
The code only set the channel layout of the AVFormatContext, so the user could
not override the channel layout if the demuxer did not have such parameter.
This used to work via the respective AVCodecContext option, but since
639c2f00497257cb60ecaeeac1aacfa80df3be06 it no longer gets passed to the
decoders. It is actually better if we set it manually, instead of using the
codec option because that way we can also override it on the stream level, so
it will also work for stream copy or bitstream filtering.
We don't allow changing the number of channels, because that can cause
unexpected results. We disable layout guessing, if a channel layout is
specified.
Fixes ticket #11016.
Signed-off-by: Marton Balint <cus@passwd.hu>
|
|
|
|
|
|
|
|
|
|
|
| |
There are lots of files that don't need it: The number of object
files that actually need it went down from 2011 to 884 here.
Keep it for external users in order to not cause breakages.
Also improve the other headers a bit while just at it.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
|
|
|
|
| |
It is no longer accessed outside of ffmpeg_demux.
|
|
|
|
|
| |
Avoids abusing AV_DICT_MULTIKEY and relying on undocumented AVDictionary
ordering behaviour.
|
|
|
|
| |
It is pointless otherwise, as decoder options will not be used.
|
|
|
|
|
|
| |
These functions used to be passed directly to pthread_create(), which
required them to return void*. This is no longer the case, so they can
return a plain int.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
filters
Current callstack looks like this:
* ifilter_bind_ist() (filter) calls ist_filter_add() (demuxer);
* ist_filter_add() opens the decoder, and then calls
dec_add_filter() (decoder);
* dec_add_filter() calls ifilter_parameters_from_dec() (i.e. back into
the filtering code) in order to give post-avcodec_open2() parameters
to the filter.
This is unnecessarily complicated. Pass the parameters as follows
instead:
* dec_init() (which opens the decoder) returns post-avcodec_open2()
parameters to its caller (i.e. the demuxer) in a parameter-only
AVFrame
* the demuxer passes these parameters to the filter in
InputFilterOptions, together with other filter options
|
|
|
|
|
|
|
|
| |
Rename dec_open to dec_init(), as it is more descriptive of its new
purpose.
Will be useful in following commits, which will add a new path for
opening decoders.
|
|
|
|
| |
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
|
| |
|
|
|
|
|
|
|
| |
Rather than read it directly from InputStream.
This is a step towards avoiding the assumption that filtergraph inputs
are always fed by demuxers.
|
|
|
|
|
|
|
| |
Rather than read them directly from InputStream.
This is a step towards avoiding the assumption that filtergraph inputs
are always fed by demuxers.
|
|
|
|
|
|
|
| |
Rather than read them directly from InputStream.
This is a step towards avoiding the assumption that filtergraph inputs
are always fed by demuxers.
|
|
|
|
|
|
|
| |
Do not construct the name manually from input file/stream indices.
This is a step towards avoiding the assumption that filtergraph inputs
are always fed by demuxers.
|
|
|
|
|
|
| |
The computation is based on demuxer properties, so that is the more
appropriate place for it. Filter code just receives the desired
start time/duration.
|
|
|
|
|
| |
This avoids assuming that it survives unchanged through bitstream
filters, if present.
|
|
|
|
| |
It is no longer used outside of ffmpeg_demux.
|
|
|
|
| |
It is no longer used outside of ffmpeg_demux.
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the demuxer would register decoder with the scheduler, using
InputStream as opaque, and pass the scheduling index to the decoder.
Now the registration is done by the decoder itself, using DecoderPriv as
opaque, and the scheduling index is returned to demuxer from dec_open().
decoder_thread() then no longer needs to be accessed from outside of
ffmpeg_dec and can be made static.
|
| |
|
|
|
|
|
|
| |
Do not retrieve it from InputStream directly.
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
|
|
| |
Do not retrieve it from InputStream directly.
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
|
|
| |
Do not build it from InputStream values.
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
|
|
| |
Do not read it from InputStream directly.
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
|
|
| |
Do not read it from AVStream directly.
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
|
|
|
| |
It is done based on demuxer information, so that is the more appropriate
place for this code.
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
|
|
| |
Stop reading them from InputStream.
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
| |
Will be useful in the following commit.
|
|
|
|
|
|
| |
Stop reading them from InputStream.
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
|
|
| |
Reduces the need to access InputFile from decoding.
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
|
|
|
| |
* as this decision is based on demuxing information, move it from the
decoder to the demuxer
* as the issue being addressed is latency added by frame threading, we
only need to disable frame threading, not all threading
|
|
|
|
|
|
| |
Pass this information to dec_open() instead.
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
|
|
| |
Rather than access the AVStream one.
This is a step towards decoupling Decoder and InputStream.
|
| |
|
|
|
|
| |
This is a step towards decoupling Decoder and InputStream.
|
|
|
|
|
|
| |
Rather than access the dictionary in InputStream.
This is a step towards decoupling Decoder and InputStream.
|
| |
|
|
|
|
|
| |
Previously bitstream filters could only be applied right before muxing,
this allows to apply them right after demuxing.
|
|
|
|
|
| |
To be used for data that never needs to be visible outside of the
demuxer thread, similarly as was previously done for other components.
|
|
|
|
| |
It is not needed otherwise.
|
|
|
|
| |
This avoids the requirement to always have a decoder context.
|
|
|
|
|
|
| |
Add it to decoder options instead, to be processed when opening the
decoder. This way it won't be overridden by flags the user might be
setting otherwise.
|
|
|
|
| |
This is the standard way to mark unreachable cases in a switch
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently it requires every single OPT_SPEC option to be accompanied by
an array of alternate names for this option. The vast majority of
options have no alternate names, resulting in a large numbers of
unnecessary single-element arrays that merely contain the option name.
Extend the option parsing API to allow marking options as having
alternate names, or as being the canonical name for some existing
alternatives. Use this new information to avoid the need for
abovementioned unnecessary single-element arrays.
|
|
|
|
|
| |
There is no reason for it to be a macro anymore, this makes the code
using it cleaner and simpler.
|
|
|
|
| |
Significantly simplifies the code dealing with OPT_SPEC.
|
|
|
|
| |
Avoid taking an ugly detour through the decoder AVCodecContext.
|
|
|
|
| |
It is not used outside of ffmpeg_demux.
|
|
|
|
| |
It is not used outside of ffmpeg_demux.
|
|
|
|
| |
It is not used outside of ffmpeg_demux.
|