Anton Khirnov
a69cedb6a6
fftools/ffmpeg_demux: make InputStream.autorotate private
...
It is no longer accessed outside of ffmpeg_demux.
9 months ago
Anton Khirnov
0edbd00ccf
fftools/ffmpeg_{demux,dec}: pass -bitexact through DecoderFlags
...
Avoids abusing AV_DICT_MULTIKEY and relying on undocumented AVDictionary
ordering behaviour.
9 months ago
Anton Khirnov
da67816128
fftools/ffmpeg_demux: only call filter_codec_opts() when we have a decoder
...
It is pointless otherwise, as decoder options will not be used.
9 months ago
Anton Khirnov
2ee9362419
fftools/ffmpeg: remove unncessary casts for *_thread() return values
...
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.
10 months ago
Anton Khirnov
f5d03b972c
fftools/ffmpeg: simplify propagating fallback parameters from decoders to 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
10 months ago
Anton Khirnov
c4de5778bc
fftools/ffmpeg_dec: factor opening the decoder out of dec_open()
...
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.
10 months ago
Andreas Rheinhardt
6c693da690
fftools/ffmpeg_demux, sync_queue: Constify a bit
...
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
10 months ago
Anton Khirnov
a3f69cdec7
fftools/ffmpeg: cosmetics, vertically align structs
10 months ago
Anton Khirnov
826cfd9997
fftools/ffmpeg_filter: pass framerate through InputFilterOptions
...
Rather than read it directly from InputStream.
This is a step towards avoiding the assumption that filtergraph inputs
are always fed by demuxers.
10 months ago
Anton Khirnov
fef3052df3
fftools/ffmpeg_filter: pass autorotate/reinit flags through InputFilterOptions
...
Rather than read them directly from InputStream.
This is a step towards avoiding the assumption that filtergraph inputs
are always fed by demuxers.
10 months ago
Anton Khirnov
6315f78e0c
fftools/ffmpeg_filter: pass sub2video canvas size through InputFilterOptions
...
Rather than read them directly from InputStream.
This is a step towards avoiding the assumption that filtergraph inputs
are always fed by demuxers.
10 months ago
Anton Khirnov
bd3c1c194b
fftools/ffmpeg_filter: accept a name from its upstream input
...
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.
10 months ago
Anton Khirnov
8f592eb35f
fftools/ffmpeg_filter: compute input trim start/end in demuxer
...
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.
10 months ago
Anton Khirnov
05fc6d3ce7
fftools/ffmpeg_demux: set stream index right before sending packet to scheduler
...
This avoids assuming that it survives unchanged through bitstream
filters, if present.
11 months ago
Anton Khirnov
f4b76a1d6a
fftools/ffmpeg: make InputStream.decoder_opts private to demuxer
...
It is no longer used outside of ffmpeg_demux.
11 months ago
Anton Khirnov
01c71b78eb
fftools/ffmpeg: make InputStream.decoding_needed private to demuxer
...
It is no longer used outside of ffmpeg_demux.
11 months ago
Anton Khirnov
0d00e2e2f7
fftools/ffmpeg_dec: eliminate all remaining InputStream uses
...
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.
11 months ago
Anton Khirnov
fe3be6f78f
fftools/ffmpeg_dec: stop passing InputStream to dec_open()
11 months ago
Anton Khirnov
1b2c539a0f
fftools/ffmpeg_dec: pass AVCodecParameters through DecoderOpts
...
Do not retrieve it from InputStream directly.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
b3d1916ba0
fftools/ffmpeg_dec: pass AVCodec through DecoderOpts
...
Do not retrieve it from InputStream directly.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
097f9ddbe9
fftools/ffmpeg_dec: pass decoder name through DecoderOpts
...
Do not build it from InputStream values.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
9ba4bc87e6
fftools/ffmpeg_dec: pass top_field_first through DecoderOpts
...
Do not read it from InputStream directly.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
9702817662
fftools/ffmpeg_dec: pass input timebase through DecoderOpts
...
Do not read it from AVStream directly.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
b27de18e4f
fftools/ffmpeg_dec: move setting compute_edt to demuxer
...
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.
11 months ago
Anton Khirnov
052c83e356
fftools/ffmpeg_dec: pass forced/estimated framerate though DecoderOpts
...
Stop reading them from InputStream.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
e0a6cb07b2
fftools/ffmpeg_dec: move flags to DecoderOpts
...
Will be useful in the following commit.
11 months ago
Anton Khirnov
4bdffec814
fftools/ffmpeg_dec: pass hwaccel options to the decoder in a separate struct
...
Stop reading them from InputStream.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
ebb8a58c8f
fftools/ffmpeg_dec: replace InputFile.format_nots with a decoder flag
...
Reduces the need to access InputFile from decoding.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
a938f47916
fftools/ffmpeg: refactor disabling decoder threading for attached pictures
...
* 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
11 months ago
Anton Khirnov
474ca6c71e
fftools/ffmpeg_dec: stop accesing InputStream.fix_sub_duration
...
Pass this information to dec_open() instead.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
924a6f3cc7
fftools/ffmpeg_dec: override video SAR with AVCodecParameters value
...
Rather than access the AVStream one.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
b2a0a2e6f5
fftools/ffmpeg: move decoder existence check to a more appropriate place
11 months ago
Anton Khirnov
9be3f80527
fftools/ffmpeg_dec: move decoding counters from InputStream to Decoder
...
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
5b0e4f945e
fftools/ffmpeg_dec: pass decoder options as an argument to dec_open()
...
Rather than access the dictionary in InputStream.
This is a step towards decoupling Decoder and InputStream.
11 months ago
Anton Khirnov
f2a2094c47
fftools/ffmpeg: make decoding AVCodecContext private to the decoder
11 months ago
Anton Khirnov
ae06111d74
fftools/ffmpeg_demux: implement -bsf for input
...
Previously bitstream filters could only be applied right before muxing,
this allows to apply them right after demuxing.
12 months ago
Anton Khirnov
6cb7295abf
fftools/ffmpeg_demux: add demuxing thread private data
...
To be used for data that never needs to be visible outside of the
demuxer thread, similarly as was previously done for other components.
12 months ago
Anton Khirnov
50448ca290
fftools/ffmpeg_demux: only allocate the decoder when actually decoding
...
It is not needed otherwise.
12 months ago
Anton Khirnov
2ee1c6ffb2
fftools/ffmpeg_demux: set options on codec parameters rather than decoder
...
This avoids the requirement to always have a decoder context.
12 months ago
Anton Khirnov
7e33534506
fftools/ffmpeg_demux: do not set bitexact directly on the decoder
...
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.
12 months ago
Anton Khirnov
f8939bad1e
fftools/ffmpeg_demux: replace abort() by av_assert0(0)
...
This is the standard way to mark unreachable cases in a switch
12 months ago
Anton Khirnov
41716214c2
fftools/ffmpeg: improve WARN_MULTIPLE_OPT_USAGE()
...
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.
1 year ago
Anton Khirnov
148fac277a
fftools/ffmpeg: change the MATCH_PER_TYPE_OPT macro into a function
...
There is no reason for it to be a macro anymore, this makes the code
using it cleaner and simpler.
1 year ago
Anton Khirnov
0ba70a6792
fftools/cmdutils: add a struct for a list of SpecifierOpt
...
Significantly simplifies the code dealing with OPT_SPEC.
1 year ago
Anton Khirnov
6916105b11
fftools/ffmpeg_demux: set discard on the AVStream directly
...
Avoid taking an ugly detour through the decoder AVCodecContext.
1 year ago
Anton Khirnov
2c54097614
fftools/ffmpeg_demux: move InputFile.readrate to private data
...
It is not used outside of ffmpeg_demux.
1 year ago
Anton Khirnov
882bc8049d
fftools/ffmpeg: move InputStream.codec_desc to private data
...
It is not used outside of ffmpeg_demux.
1 year ago
Anton Khirnov
9afe3f5274
fftools/ffmpeg: move InputStream.discard to private data
...
It is not used outside of ffmpeg_demux.
1 year ago
Anton Khirnov
0fcea80b2a
fftools/ffmpeg: replace InputStream.file_index by a pointer
...
Reduces the need to use the input_files global array.
1 year ago
Anton Khirnov
9d7000b1be
fftools/ffmpeg: attach wallclock timing information to packets and frames
...
Will become useful in following commits.
1 year ago