android_external_ffmpeg/fftools
Anton Khirnov 46cbe4ab5c fftools/cmdutils: split stream specifier parsing and matching
This approach has the major advantage that only parsing can fail (due to
a malformed specifier or memory allocation failure). Since parsing is
done generically, while matching is per-option, this will allow to
remove substantial amounts of error checking code in following commits.

The new code also explicitly allows stream specifiers to be followed by
additional characters, which should allow cleaner handling of optional
maps, i.e. -map <stream_specifier>?, which is currently implemented in a
hacky way that breaks when the stream specifier itself contains the '?'
character (this can happen when matching metadata). It will also allow
further extending the syntax, which will be useful in following commits.

This introduces some minor behaviour changes:
* Matching metadata tags now requires the ':' character in keys or
  values to be escaped. Previously it could not be present in keys, and
  would be used verbatim in values. The change is required in order to
  know where the value terminates.
* Multiple stream types in a single specifier are now rejected - such a
  specifier makes no sense.
* Non-existent stream group ID or index is now ignored with a warning
  rather than causing a failure. This is consistent with program
  handling and is required to make matching fail-free.
2024-08-13 10:28:54 +02:00
..
cmdutils.c fftools/cmdutils: split stream specifier parsing and matching 2024-08-13 10:28:54 +02:00
cmdutils.h fftools/cmdutils: split stream specifier parsing and matching 2024-08-13 10:28:54 +02:00
ffmpeg.c ffmpeg: don't truncate getmaxrss value 2024-07-15 15:15:55 +05:30
ffmpeg.h fftools/ffmpeg: replace remaining uses of MATCH_PER_STREAM_OPT() 2024-08-13 10:28:54 +02:00
ffmpeg_dec.c fftools/ffmpeg_dec: improve detection of lavf-guessed durations 2024-07-09 11:14:08 +02:00
ffmpeg_demux.c fftools/ffmpeg: replace remaining uses of MATCH_PER_STREAM_OPT() 2024-08-13 10:28:54 +02:00
ffmpeg_enc.c fftools/ffmpeg_mux_init: apply encoder options manually 2024-07-03 11:38:52 +02:00
ffmpeg_filter.c fftools/ffmpeg_filter: use the correct specifier for crop arguments 2024-07-18 23:27:20 -03:00
ffmpeg_hw.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
ffmpeg_mux.c fftools/ffmpeg_mux_init: make encoder_opts local to ost_add() 2024-07-03 11:38:52 +02:00
ffmpeg_mux.h fftools/ffmpeg: replace MATCH_PER_STREAM_OPT(.., str, ..) with a function 2024-08-13 10:28:54 +02:00
ffmpeg_mux_init.c fftools/ffmpeg: replace remaining uses of MATCH_PER_STREAM_OPT() 2024-08-13 10:28:54 +02:00
ffmpeg_opt.c fftools/ffmpeg: replace remaining uses of MATCH_PER_STREAM_OPT() 2024-08-13 10:28:54 +02:00
ffmpeg_sched.c fftools/ffmpeg_sched: Remove dead assignments in sch_dec_send() 2024-07-02 21:57:20 +02:00
ffmpeg_sched.h fftools/ffmpeg_sched: allow filtergraphs to send to filtergraphs 2024-04-09 10:34:18 +02:00
ffmpeg_utils.h fftools/ffmpeg: prefer real errors over EOF in err_merge() 2024-07-24 08:20:21 +02:00
ffplay.c fftools/ffmpeg: rewrite checking whether codec AVOptions have been used 2024-07-03 11:38:52 +02:00
ffplay_renderer.c fftools/ffplay_renderer: use correct NULL value for Vulkan type 2024-06-25 00:19:03 +02:00
ffplay_renderer.h fftools/ffplay: add hwaccel decoding support 2023-11-15 01:20:11 +08:00
ffprobe.c fftools/ffprobe: implement dv_md_compression 2024-07-28 12:20:07 +02:00
fftools.manifest fftools: add DPI awareness manifest 2022-08-13 14:42:52 +02:00
fftoolsres.rc fftools: add DPI awareness manifest 2022-08-13 14:42:52 +02:00
fopen_utf8.h avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
Makefile fftools/ffmpeg: add thread-aware transcode scheduling infrastructure 2023-12-12 08:24:18 +01:00
objpool.c fftools/objpool: Don't use return with expression when returning void 2022-07-23 18:58:35 +02:00
objpool.h fftools: add an object pool 2022-07-23 11:53:19 +02:00
opt_common.c tools/opt_common: Check for malloc failure 2024-05-09 16:17:40 +02:00
opt_common.h fftools/cmdutils: hide some information listing options from basic help 2024-01-20 10:37:32 +01:00
sync_queue.c fftools/ffmpeg_demux, sync_queue: Constify a bit 2024-03-02 02:51:59 +01:00
sync_queue.h fftools/sync_queue: add debug logging 2023-05-28 10:47:59 +02:00
thread_queue.c fftools/thread_queue: count receive-finished streams as finished 2023-11-14 18:18:26 +01:00
thread_queue.h fftools: add a multistream thread-safe queue 2022-07-23 11:53:19 +02:00