Anton Khirnov
5fa00b38e6
fftools/ffmpeg: drop an obsolete hack
...
This special handling for decoder flushing has not been needed since
af1761f7b5, as the filtergraph actually is drained after that commit.
2023-05-22 17:10:44 +02:00
Anton Khirnov
37fcbe121d
fftools/cmdutils: constify the argument of get_rotation()
2023-05-22 17:10:44 +02:00
Anton Khirnov
9effea016c
fftools/ffmpeg_filter: embed displaymatrix into private context
...
It has a small fixed size, so it is better to embed it rather than deal
with dynamic allocation.
2023-05-22 17:10:44 +02:00
Anton Khirnov
dcfbfb417c
fftools/ffmpeg_filter: keep track of the real filter input type
...
Avoid extracting it from various remote sources.
2023-05-22 17:10:44 +02:00
Anton Khirnov
f980df2c04
fftools/ffmpeg_filter: move InputFilter.type to private data
...
It is not accessed outside of ffmpeg_filter.
2023-05-22 17:10:44 +02:00
Anton Khirnov
c4a3f7edb8
fftools/ffmpeg_filter: move InputFilter.ist to private data
...
It is not accessed outside of ffmpeg_filter.
2023-05-22 17:10:44 +02:00
Anton Khirnov
0f501b2ad9
fftools/ffmpeg_filter: drop a redundant error message
...
In case no decoder is available, dec_open() called from ist_use() will
fail with 'Decoding requested, but no decoder found', so this check is
redundant.
2023-05-22 17:10:44 +02:00
Anton Khirnov
89b37ae70a
fftools/ffmpeg_filter: make input filter configured parameters private
...
They are not used outside of ffmpeg_filter.
2023-05-22 17:10:44 +02:00
Anton Khirnov
82c75ddfad
fftools/ffmpeg: move ifilter_has_all_input_formats() to ffmpeg_filter
...
That is a more appropriate place for that function.
2023-05-22 17:10:44 +02:00
Anton Khirnov
2628c7049e
fftools/ffmpeg_filter: try configuring graphs from input EOF
...
When a filtergraph input receives EOF but never saw any input frames, we
use the fallback parameters. Currently an attempt to actually configure
the filtergraph will happen elsewhere, but there is no reason to
postpone this.
2023-05-22 17:10:44 +02:00
Anton Khirnov
a16d7171d1
fftools/ffmpeg_filter: only use fallback parameters when necessary
...
With complex filtergraphs it can happen that the filtergraph is
unconfigured because some other filter than the one we just got EOF on
is missing parameters.
Make sure that the fallback parametes for a given input are only used
when that input is unconfigured.
2023-05-22 17:10:44 +02:00
Anton Khirnov
65f3d042a6
fftools/ffmpeg_demux: disallow using disabled input streams
...
This is less ad-hoc than checking explicitly in every place that binds
an input stream to a filter or output.
2023-05-22 17:10:44 +02:00
Anton Khirnov
dfa29ba955
fftools/ffmpeg: return error codes from ist_*_add()
...
Will be useful in future commits.
2023-05-22 17:10:44 +02:00
Anton Khirnov
ede6794d6a
fftools/ffmpeg_filter: split finding an unused stream into a function
...
Avoids filtering code from digging in demuxer internals.
2023-05-22 17:10:44 +02:00
Anton Khirnov
30a3fee24f
fftools/ffmpeg: rework applying input -r
...
Do not use a separate counter for CFR timestamps forced with -r used as
an input option. Set durations properly and let estimation code do the
rest.
2023-05-22 17:10:44 +02:00
Anton Khirnov
1132507327
fftools/ffmpeg_filter: make sure pkt_duration matches duration
...
Otherwise the two values might get desynchronized and lavfi can prefer
the wrong one.
2023-05-22 17:10:44 +02:00
Anton Khirnov
14b9946967
fftools/ffmpeg_filter: convert input frame timestamps
...
Decoder timebase does not always have to match filter timebase.
2023-05-22 17:10:44 +02:00
Anton Khirnov
7b41785eb6
fftools/ffmpeg: replace stream timebase with decoded frame one
...
They are the same for now, but this may change in the future.
2023-05-22 17:10:44 +02:00
Anton Khirnov
1372e81aaa
fftools/ffmpeg: drop a useless local variable
...
Store decoded frame timestamp directly in AVFrame.pts, there is no
advantage to using a separate local variable for it.
2023-05-22 17:10:44 +02:00
Anton Khirnov
94a9647195
fftools/ffmpeg: shorten a variable name
...
There is only one frame used in decode_video() -- the one output by the
decoder. So there is no point in explicitly calling it the _decoded_
frame.
2023-05-22 17:10:44 +02:00
Anton Khirnov
7be945a011
fftools/ffmpeg: rename transcode_init()
...
It does no initialization anymore, except for setting
transcode_init_done - the bulk of the function is printing the
input/output maps. It also cannot fail anymore, so remove the useless
return value.
2023-05-15 13:32:02 +02:00
Anton Khirnov
de6d60117e
fftools/ffmpeg_demux: stop logging to demuxer context
...
Only the demuxer itself should do that.
2023-05-15 13:32:02 +02:00
Anton Khirnov
c5d77dcbf1
fftools/ffmpeg_demux: move InputFile.ts_offset_discont,last_ts to private data
...
They are no longer used outside of ffmpeg_demux.
2023-05-15 13:32:02 +02:00
Anton Khirnov
ab223a4d8c
fftools/ffmpeg: stop accessing input format from decoding code
...
Export the corresponding flag in InputFile instead. This will allow
making the demuxer AVFormatContext private in future commits, similarly
to what was previously done for muxers.
2023-05-15 13:32:02 +02:00
Anton Khirnov
2ab9f247f7
fftools/ffmpeg: log corrupt-frame errors to the appropriate context
2023-05-15 13:32:02 +02:00
Anton Khirnov
a1002bc39c
fftools/ffmpeg: replace print_error() by more meaningful messages
2023-05-15 13:32:01 +02:00
Anton Khirnov
fd980b2615
fftools/ffmpeg_demux: reindent after previous commit
2023-05-15 13:32:01 +02:00
Anton Khirnov
9429624a76
fftools/ffmpeg: move discarding unused programs to ffmpeg_demux
...
This is a more appropriate place for this code.
2023-05-15 13:32:01 +02:00
Anton Khirnov
f9657b7443
fftools/ffmpeg: simplify tracking -readrate start time
...
There is no point in having a per-stream wallclock start time, since
they are all computed at the same instant. Keep a per-file start time
instead, initialized when the demuxer thread starts.
2023-05-15 13:32:01 +02:00
Anton Khirnov
6b0c984f0d
fftools/ffmpeg_demux: move InputStream.streamcopy_needed to private data
...
It is no longer used outside of ffmpeg_demux.
2023-05-15 13:32:01 +02:00
Anton Khirnov
7df3253c5a
fftools/ffmpeg_demux: move InputStream.wrap_correction_done to private data
...
It is no longer used outside of ffmpeg_demux.
2023-05-15 13:32:01 +02:00
Anton Khirnov
df25e21ce7
fftools/ffmpeg_demux: move InputStream.[next_]dts to private data
...
They are no longer used outside of ffmpeg_demux.
2023-05-15 13:32:01 +02:00
Anton Khirnov
6d7b43ed44
fftools/ffmpeg_demux: move InputStream.[saw_]first_d?ts to private data
...
They are no longer used outside of ffmpeg_demux.
2023-05-15 13:32:01 +02:00
Anton Khirnov
57a2b2f886
fftools/ffmpeg_demux: move InputStream.{nb_packets,data_size} to private data
...
They are no longer used outside of ffmpeg_demux.
2023-05-15 13:32:01 +02:00
Anton Khirnov
6fcfe4307c
fftools/ffmpeg: drop unused decode_video() parameter
2023-05-15 13:32:01 +02:00
Anton Khirnov
bfd5e7ef5d
fftools/ffmpeg_demux: reindent after previous commit
2023-05-15 13:32:01 +02:00
Anton Khirnov
2b99c6bfd5
fftools/ffmpeg: move post-demux packet processing to ffmpeg_demux
...
That is a more appropriate place for this code and will allow hiding
more of InputStream.
The value of repeat_pict extracted from libavformat internal parser no
longer needs to be trasmitted outside of the demuxing thread.
Move readrate handling to the demuxer thread. This has to be done in the
same commit, since it reads InputStream.dts,nb_packets, which are now
set in the demuxer thread.
2023-05-15 11:03:15 +02:00
Anton Khirnov
09c686788e
fftools/ffmpeg: attach InputStream.dts to demuxed packets when needed
...
This way computing it and using it for streamcopy does not need to
happen in sync. Will be useful in following commits, where updating
InputStream.dts will be moved to the demuxing thread.
2023-05-15 10:57:19 +02:00
Anton Khirnov
abf9532bda
fftools/ffmpeg_demux: move preparing DemuxMsg to separate function
...
Will be useful in following commits, which will move more code into this
function.
2023-05-15 10:57:19 +02:00
Anton Khirnov
989e87b03c
fftools/ffmpeg: stop using decoder properties in ist_dts_update()
...
This code runs post-demuxing and is not synchronized with the decoder
output (which may be delayed with respect to its input by arbitrary and
unknowable amounts), so accessing any decoder properties is incorrect.
2023-05-15 10:57:19 +02:00
Anton Khirnov
0d25b404d4
fftools/ffmpeg: reindent after previous commit
2023-05-15 10:57:19 +02:00
Anton Khirnov
702ff2d281
fftools/ffmpeg: consolidate InputStream.[next_]dts updates
...
Move them to a separate function called right after timestamp
discontinuity processing. This is now possible, since these values have
no interaction with decoding anymore.
2023-05-15 10:57:19 +02:00
Anton Khirnov
a238ba9c3c
fftools/ffmpeg: stop using deprecated ticks_per_frame
2023-05-15 10:56:48 +02:00
Anton Khirnov
78e84c054a
fftools/ffmpeg: fix computing video frame duration from repeat_pict
...
This field contains the number of _field_ durations by which the
standard frame duration should be extended.
2023-05-15 10:31:55 +02:00
Anton Khirnov
02823210d7
fftools/opt_common: stop printing deprecated AV_CODEC_CAP_SUBFRAMES
2023-05-15 10:24:54 +02:00
James Almer
63d7ea38c7
fftools/ffprobe: print exported stream AVOptions
...
Similar to the decoder AVOptions, this is useful to show values from options
exported by the demuxer.
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-08 11:04:37 -03:00
Anton Khirnov
2d43c23b81
fftools/ffmpeg: discard packets for unused streams in demuxing thread
...
Avoids the pointless overhead of transferring them to the main thread.
2023-05-08 10:38:59 +02:00
Anton Khirnov
a0174a235b
fftools/ffmpeg_filter: use InputFilterPriv.eof instead of InputFile.eof_reached
...
The two checks using eof_reached are testing whether more input can
possibly appear on this filtergraph input. InputFilterPriv.eof is the
more authoritative source for this information.
2023-05-08 10:38:59 +02:00
Anton Khirnov
dd1c67d539
fftools/ffmpeg: move unconfigured graph handling to ffmpeg_filter
...
This code more properly belongs there.
2023-05-08 10:38:59 +02:00
Anton Khirnov
c26a6c5a52
fftools/ffmpeg_filter: use av_buffer_replace() to improve code
...
It is shorter and more efficient.
2023-05-08 10:38:59 +02:00