Anton Khirnov
411ada649f
fftools/ffmpeg_enc: only use fallback framerate when encoding CFR
...
When no output video framerate is specified by the user with -r or can
be inferred from the filtergraph, encoder setup will arbitrarily decide
that the framerate is 25fps. However, making up any framerate value for
VFR encoding is at best unnecessary.
Changes the results of the sub2video tests, where the input timebase is
now used instead of 1/25.
1 year ago
Anton Khirnov
8b6b2518fa
fftools/ffmpeg_enc: reindent after previous commit
1 year ago
Anton Khirnov
d1a2cd1e13
fftools/ffmpeg_enc: factor out setting encoder timebase
...
Mainly this fixes handling special values of -enc_time_base ('demux' or
'filter') for audio. It also prints a warning if -enc_time_base is
specified for subtitles, instead of ignoring it silently (current
subtitle encoding API only works with AV_TIME_BASE_Q).
1 year ago
Anton Khirnov
8ecbb1f9af
fftools/ffmpeg_mux: stop rescaling timestamps in of_streamcopy()
...
This function converts packet timestamps from the input stream timebase
to OutputStream.mux_timebase, which may or may not be equal to the
actual output AVStream timebase (and even when it is, this may not
always be the optimal choice due to bitstream filtering).
Just keep the timestamps in input stream timebase, they will be rescaled
as needed before bitstream filtering and/or sending the packet to the
muxer.
Move the av_rescale_delta() call for audio (needed to preserve accuracy
with coarse demuxer timebases) to write_packet.
Drop now-unused OutputStream.mux_timebase.
1 year ago
Anton Khirnov
ed5caaaf22
fftools/ffmpeg_mux: use correct timebases for bitstream filtering
...
Bitstream filtering input timebase is not always necessarily equal to
OutputStream.mux_timebase. Also, set AVPacket.time_base correctly for
packets output by bitstream filters
Do not rescale at all in of_output_packet() when not doing bitstream
filtering, as it's unnecessary - write_packet() will rescale to the
actual muxer timebase.
1 year ago
Anton Khirnov
b39b6b7456
fftools/ffmpeg: simplify handling input -t for streamcopy
...
Output stream will be closed implicitly after a NULL packet is sent to
it, there is no need to explicitly call close_output_stream().
1 year ago
Anton Khirnov
8f2e7e9dcf
fftools/ffmpeg: stop explicitly closing output streams on input EOF
...
Sending an empty packet already does that implicitly.
1 year ago
Andreas Rheinhardt
9583a2c8eb
fftools/ffprobe: Use proper enum type
...
This is a bit cleaner as int need not be the underlying type
of an enum if a smaller type can hold all its values.
Also declare the children_ids array as const as it never changes.
Reviewed-by: Stefano Sabatini <stefasab@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
1 year ago
Andreas Rheinhardt
739f24d833
fftools/opt_common: Don't add unnecessary " "
...
Before:
D.AIL. smackaudio Smacker audio (decoders: smackaud )
After:
D.AIL. smackaudio Smacker audio (decoders: smackaud)
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
1 year ago
Andreas Rheinhardt
41409405d4
fftools/opt_common: Use %c instead of %s to write single char
...
Also combine multiple printfs.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
1 year ago
Andreas Rheinhardt
0e9956a06e
fftools/ffprobe: Fix memleak
...
Fixes Coverity issue #1524491 .
Regression since e6126abc69
.
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
1 year ago
Anton Khirnov
e8777221f2
fftools/ffprobe: fix handling parse_options() return value
...
Reviewed-by: James Almer <jamrial@gmail.com>
Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: James Almer <jamrial@gmail.com>
1 year ago
Andreas Rheinhardt
071c625ad7
fftools/ffmpeg_opt: Reduce scope of variables for deprecated code
...
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
1 year ago
Andreas Rheinhardt
8bb1bcf47d
fftools/ffmpeg_opt: Fix leak on error
...
Fixes Coverity id #1539096 .
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
1 year ago
Andreas Rheinhardt
0368ded1a9
fftools/opt_common: Fix leak on error
...
Fixes Coverity issue #743443 .
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
1 year ago
Andreas Rheinhardt
2654347d7a
fftools/ffmpeg_opt: Fix leak on error
...
Fixes Coverity issue #1539097 .
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
1 year ago
Andreas Rheinhardt
2a44c4bc9e
fftools/ffmpeg_mux_init: Fix leak on error
...
Fixes Coverity issue #1539098 .
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
1 year ago
Anton Khirnov
ccc6849932
fftools/ffmpeg: stop calling exit_program()
...
Remove exit_program() and register_exit(), as they are no longer used.
1 year ago
Anton Khirnov
a81d9231b9
fftools/ffprobe: stop calling exit_program()
...
Inline the relevant part of ffprobe_cleanup() into main() and drop the
rest.
1 year ago
Anton Khirnov
be49c48282
fftools/ffprobe: inline opt_output_file() into its only caller
...
There is no reason to keep them separate.
Also, replace exit_program() with returning an error code.
1 year ago
Anton Khirnov
411e183360
fftools/opt_common: replace report_and_exit() with returning an error code
...
Remove report_and_exit(), as it has no more users.
1 year ago
Anton Khirnov
78699923ac
fftools/ffplay: replace report_and_exit() with returning an error code
1 year ago
Anton Khirnov
140cb5a742
fftools/ffprobe: replace report_and_exit() with returning error codes
1 year ago
Anton Khirnov
83ace80bfd
fftools/ffmpeg: return an error from MATCH_PER_STREAM_OPT() instead of aborting
1 year ago
Anton Khirnov
2f155b18a1
fftools/ffmpeg: return an error from assert_avoptions() instead of aborting
...
Rename it to check_avoptions().
1 year ago
Anton Khirnov
eda1fac27a
fftools/cmdutils: return AVERROR_EXIT for OPT_EXIT options instead of aborting()
1 year ago
Anton Khirnov
8173623e39
fftools/ffmpeg: consolidate exiting from main() on error
1 year ago
Anton Khirnov
c56fabde27
fftools/ffmpeg_opt: consolidate printing errors in ffmpeg_parse_options()
1 year ago
Anton Khirnov
87f0333af1
fftools/cmdutils: add error handling to filter_codec_opts()
1 year ago
Anton Khirnov
6b8cf2505a
fftools/cmdutils: constify the first parameter of filter_codec_opts()
1 year ago
Anton Khirnov
39d5104332
fftools: handle errors in parse_options()
1 year ago
Anton Khirnov
49ac7fc485
fftools: remove parse_time_or_die()
...
Replace it with calling av_parse_time() directly, which provides
graceful error handling and more accurate error messages.
1 year ago
Anton Khirnov
9cb47c78d6
fftools: return errors from parse_number_or_die() instead of aborting
...
Rename the function to just parse_number().
1 year ago
Anton Khirnov
4adbe2d219
fftools/opt_common: replace exit_program() with returning error codes
1 year ago
Anton Khirnov
a50f90f1c2
fftools/ffmpeg_opt: replace exit_program() with returning error codes
1 year ago
Anton Khirnov
6c6f13baf3
fftools/ffmpeg: return errors from find_codec_or_die() instead of aborting
...
Rename the function to just find_codec().
1 year ago
Anton Khirnov
2e6afa799e
fftools/cmdutils: add error handling to GROW_ARRAY()
1 year ago
Anton Khirnov
b23abb7c48
fftools/cmdutils: add error handling to grow_array()
1 year ago
Anton Khirnov
6be4a29397
fftools/cmdutils: add error handling to allocate_array_elem()
1 year ago
Anton Khirnov
8eb5adeab8
fftools/cmdutils: drop unused ALLOC_ARRAY_ELEM()
1 year ago
Anton Khirnov
26e1e80152
fftools/ffmpeg_opt: reimplement -streamid using a dictionary
...
This does not require an arbitrary limit on the number of streams.
Also, return error codes from opt_streamid() instead of aborting.
1 year ago
Anton Khirnov
37abb3a419
fftools/cmdutils: return error codes from setup_find_stream_info_opts() instead of aborting
1 year ago
Anton Khirnov
13ebc9a0a9
fftools/ffmpeg_filter: replace remaining report_and_exit() with error codes
1 year ago
Anton Khirnov
cb8242db8d
fftools/ffmpeg_filter: return error codes from set_channel_layout() instead of aborting
1 year ago
Anton Khirnov
5ba7aa2ce8
fftools/ffmpeg_filter: return error codes from fg_create() instead of aborting
1 year ago
Anton Khirnov
8db96808bc
fftools/ffmpeg_filter: return error codes from choose_pix_fmts() instead of aborting
1 year ago
Anton Khirnov
8815adfe75
fftools/ffmpeg_filter: replace remaining exit_program() with error codes
1 year ago
Anton Khirnov
a52ee1aa47
fftools/ffmpeg_filter: return error codes from init_input_filter() instead of aborting
1 year ago
Anton Khirnov
ab16e324ea
fftools/ffmpeg_filter: return error codes from ofilter_bind_ost() instead of aborting
1 year ago
Anton Khirnov
6298dd683b
fftools/ffmpeg_dec: drop redundant handling of AVERROR_EXPERIMENTAL
...
Normal error handling does the job just as well.
1 year ago