| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
Make all relevant state per-filtergraph input, rather than per-input
stream. Refactor the code to make it work and avoid leaking memory when
a single subtitle stream is sent to multiple filters.
|
|
|
|
|
|
| |
Set them in ifilter_parameters_from_dec(), similarly to audio/video
streams. This reduces the extent to which sub2video filters need to be
treated specially.
|
|
|
|
| |
Allows simplifying the log message.
|
|
|
|
| |
This allows to avoid access to the underlying AVStream in many places.
|
|
|
|
| |
It is purely internal to decoding.
|
|
|
|
| |
It is purely internal to decoding.
|
|
|
|
|
|
|
| |
Move InputStream.decoded_frame to it.
Analogous to what has been previously done for all the other major
components.
|
|
|
|
| |
No useful information can be printed for them.
|
|
|
|
|
| |
Fixes spurious new-stream warnings for unused streams after
9429624a76107020b5911f8307f366fed386b336
|
|
|
|
|
| |
If the transcoding process never got to reading any packets from this
input then printing stats is just pointless noise.
|
| |
|
|
|
|
|
| |
Replace the decode_error_stat global with a per-input-stream variable.
Also, print an error message when the error rate is exceeded.
|
|
|
|
|
| |
This is less ad-hoc than checking explicitly in every place that binds
an input stream to a filter or output.
|
|
|
|
| |
Will be useful in future commits.
|
|
|
|
| |
Avoids filtering code from digging in demuxer internals.
|
|
|
|
| |
Only the demuxer itself should do that.
|
|
|
|
| |
They are no longer used outside of ffmpeg_demux.
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
| |
This is a more appropriate place for this code.
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
It is no longer used outside of ffmpeg_demux.
|
|
|
|
| |
It is no longer used outside of ffmpeg_demux.
|
|
|
|
| |
They are no longer used outside of ffmpeg_demux.
|
|
|
|
| |
They are no longer used outside of ffmpeg_demux.
|
|
|
|
| |
They are no longer used outside of 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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Will be useful in following commits, which will move more code into this
function.
|
| |
|
|
|
|
| |
Avoids the pointless overhead of transferring them to the main thread.
|
|
|
|
|
|
|
|
|
|
| |
When an input stream terminates and no frames were successfully decoded,
filtering code will currently configure the filtergraph using demuxer
stream parameters. Use decoder parameters instead, which should be more
reliable. Also, initialize them immediately when an input stream is
bound to a filtergraph input, so that these parameters are always
available (if at all) and filtering code does not need to reach into the
decoder at some arbitrary later point.
|
|
|
|
|
| |
They are exactly equivalent, so there is no point in maintaining a
separate flag for -re.
|
|
|
|
| |
Use it to replace a hack added in 6f206852289.
|
|
|
|
|
|
| |
enforced
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
| |
They are no longer used for anything.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Stop using InputStream.dts for generating missing timestamps for decoded
frames, because it contains pre-decoding timestamps and there may be
arbitrary amount of delay between input packets and output frames (e.g.
dependent on the thread count when frame threading is used). It is also
in AV_TIME_BASE (i.e. microseconds), which may introduce unnecessary
rounding issues.
New code maintains a timebase that is the inverse of the LCM of all the
samplerates seen so far, and thus can accurately represent every audio
sample. This timebase is used to generate missing timestamps after
decoding.
Changes the result of the following FATE tests
* pcm_dvd-16-5.1-96000
* lavf-smjpeg
* adpcm-ima-smjpeg
In all of these the timestamps now better correspond to actual frame
durations.
|
|
|
|
| |
Will allow initializing subtitle encoding earlier.
|
|
|
|
|
|
| |
Set InputStream.decoding_needed/discard/etc. only from
ist_{filter,output},add() functions. Reduces the knowledge of
InputStream internals in muxing/filtering code.
|
|
|
|
|
| |
This way filtering code does not directly mess with InputStream
internals. Will become more useful in following commits.
|
|
|
|
| |
Fixes #10319 and #10309.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When no timestamps are available from the container, the video decoding
code will currently use fake dts values - generated in
process_input_packet() based on a combination of information from the
decoder and the parser (obtained via the demuxer) - to generate
timestamps during decoder flushing. This is fragile, hard to follow, and
unnecessarily convoluted, since more reliable information can be
obtained directly from post-decoding values.
The new code keeps track of the last decoded frame pts and estimates its
duration based on a number of heuristics. Timestamps generated when both
pts and pkt_dts are missing are then simple pts+duration of the last frame.
The heuristics are somewhat complicated by the fact that lavf insists on
making up packet timestamps based on its highly incomplete information.
That should be removed in the future, allowing to further simplify this
code.
The results of the following tests change:
* h264-3386 now requires -fps_mode passthrough to avoid dropping frames
at the end; this is a pathology of the interaction of the new and old
code, and the fact that the sample switches from field to frame coding
in the last packet, and will be fixed in following commits
* hevc-conformance-DELTAQP_A_BRCM_4 stops inventing an arbitrary
timestamp gap at the end
* hevc-small422chroma - the single frame output by this test now has a
timestamp of 0, rather than an arbitrary 7
|
|
|
|
|
| |
Simplifies tracking what timebase are the timestamps in. Will be useful
in following commits.
|
|
|
|
|
|
|
| |
Currently, output streams where an input stream is sent directly (i.e.
not through lavfi) are determined by iterating over ALL the output
streams and skipping the irrelevant ones. This is awkward and
inefficient.
|
| |
|
| |
|
|
|
|
| |
This is a more appropriate place for this.
|
|
|
|
|
| |
They are initialized to constants, so it makes most sense to do it as
soon as possible.
|