| Commit message (Collapse) | Author | Age |
|
|
|
| |
Signed-off-by: James Almer <jamrial@gmail.com>
|
|
|
|
|
| |
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: James Almer <jamrial@gmail.com>
|
|
|
|
|
|
| |
Share the code between encoding and decoding. Instead of checking every
stream's options dictionary (which is also used for other purposes),
track all used options in a dedicated dictionary.
|
|
|
|
| |
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
|
|
|
|
|
|
|
| |
First bind all inputs in all filtergraphs, only then check that all
outputs are bound.
Needed by the following commit.
|
|
|
|
|
|
|
|
|
|
|
| |
There are lots of files that don't need it: The number of object
files that actually need it went down from 2011 to 884 here.
Keep it for external users in order to not cause breakages.
Also improve the other headers a bit while just at it.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
|
|
|
|
|
|
|
|
|
|
|
| |
OptionDef.u is only an offset (i.e. its off member) iff OPT_FLAG_OFFSET
is true. Otherwise, the pointer arithmetic can be undefined behaviour.
UBSan warns about this (on 32bit arches):
src/fftools/ffmpeg_opt.c:102:15: runtime error: pointer index expression with base 0xffa4db10 overflowed to 0x56059a50
This commit fixes this by checking for OPT_FLAG_OFFSET first.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
|
|
|
|
|
| |
This allows to send an encoder's output back to decoding and feed the
result into a complex filtergraph.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The first of these binds inputs of complex filtergraphs to demuxer
streams (with a misleading comment claiming it *creates* complex
filtergraphs).
The second ensures that all filtergraph outputs are connected to an
encoder.
Merge them into a single function, which simplifies the ffmpeg_filter
API, is shorter, and will also be useful in following commits.
Also, rename misleadingly-named init_input_filter() to
fg_complex_bind_input().
|
| |
|
|
|
|
|
|
|
| |
Use 8 packets/frames by default rather than 1, which seems to provide
better throughput.
Allow -thread_queue_size to set the muxer queue size manually again.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Split the "Per-file main options" section into
* per-file input and output
* per-file input-only
* per-file output-only
* per-stream
|
|
|
|
|
| |
No user sets it to more than one flag, so it is redundant with
req_flags.
|
|
|
|
|
| |
Not all OPT_SPEC options are per-stream, this will allow identifying
those that are, which will be useful in following commits.
|
|
|
|
| |
They are for advanced usage only and should not clutter basic output.
|
|
|
|
|
|
|
| |
Some callers assume that item_name is always set, so this may be
considered an API break.
This reverts commit 0c6203c97a99f69dbaa6e4011d48c331e1111f5e.
|
|
|
|
| |
It is equivalent to -/filter.
|
|
|
|
| |
It is equivalent to -/filter_complex.
|
|
|
|
| |
Aligned with analogous feature for filter options in ffmpeg CLI.
|
|
|
|
|
| |
Do not store the supplied arg pointer directly. While that is valid for
now, it will become ephemeral in the future commits.
|
| |
|
|
|
|
|
| |
Previously bitstream filters could only be applied right before muxing,
this allows to apply them right after demuxing.
|
|
|
|
|
|
|
|
| |
Unnecessary since acf63d5350adeae551d412db699f8ca03f7e76b9;
also avoids relocations.
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
|
|
|
|
| |
They were marked as deprecated over 10 years ago.
|
|
|
|
| |
It has already been deprecated over a year ago.
|
|
|
|
| |
It's a data, not video option.
|
|
|
|
|
| |
Only show it with show_advanced (triggered by -h long), since data
streams themselves are an advanced topic.
|
|
|
|
|
|
| |
* filter subtitle/data options out of main, video and audio sections
* add filters that were missing entirely from the subtitle section
* add a missing section for advanced subtitle options
|
|
|
|
|
| |
Reduces the basic help output to a reasonable size and stops confusing
users with options the vast majority will not need.
|
|
|
|
| |
Cf. 2244722f1f3
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
There is no reason for it to be a macro anymore, this makes the code
using it cleaner and simpler.
|
|
|
|
| |
Significantly simplifies the code dealing with OPT_SPEC.
|
|
|
|
|
| |
And analogously OPT_OFFSET in OPT_SPEC. Previously the inclusion would
be implicit and required all code to remember this.
|
|
|
|
|
| |
For consistent namespacing with other option flags. Also, document and
enforce that it can only be set for func-type options.
|
|
|
|
|
| |
These values are not actually flags, as only one of them can be
meaningfully set.
|
|
|
|
| |
This way they don't clutter this already-cluttered code even further.
|
|
|
|
|
|
|
|
|
|
| |
This option flag only carries nontrivial information for options that
call a function, in all other cases its presence can be inferred from
the option type (bool options do not have arguments, all other types do)
and is thus nothing but useless clutter.
Change the option parsing code to infer its value when it can, and drop
the flag from options where it's not needed.
|
|
|
|
|
|
|
|
|
|
|
| |
It causes those options to be parsed as either
* -autofoo 0/1 (with an argument)
* -noautofoo (without an argument)
This is unnecessary, confusing, and against the documentation; these are
also the only two bool options that take an argument.
This should not affect the users, as these options are on by default,
and are supposed to be used as -nofoo per the documentation.
|
|
|
|
|
|
| |
Starting with IAMF support.
Signed-off-by: James Almer <jamrial@gmail.com>
|
|
|
|
|
| |
It depends on the ability of muxers to generate timestamps, which is
itself deprecated.
|
|
|
|
|
|
|
|
|
|
| |
Change the main loop and every component (demuxers, decoders, filters,
encoders, muxers) to use the previously added transcode scheduler. Every
instance of every such component was already running in a separate
thread, but now they can actually run in parallel.
Changes the results of ffmpeg-fix_sub_duration_heartbeat - tested by
JEEB to be more correct and deterministic.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
See the comment block at the top of fftools/ffmpeg_sched.h for more
details on what this scheduler is for.
This commit adds the scheduling code itself, along with minimal
integration with the rest of the program:
* allocating and freeing the scheduler
* passing it throughout the call stack in order to register the
individual components (demuxers/decoders/filtergraphs/encoders/muxers)
with the scheduler
The scheduler is not actually used as of this commit, so it should not
result in any change in behavior. That will change in future commits.
|
|
|
|
|
|
| |
It is badly named (should have been -top_field_first, or at least -tff),
underdocumented and underspecified, and (most importantly) entirely
redundant with the setfield filter.
|
|
|
|
|
| |
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
|
|
|
|
|
|
|
| |
Fixes Coverity id #1539096.
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
|
|
|
|
|
|
|
| |
Fixes Coverity issue #1539097.
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
|
| |
|