| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Removes unnecessary allocations.
Signed-off-by: James Almer <jamrial@gmail.com>
|
| |
|
|
|
|
| |
That is a more appropriate place for it.
|
|
|
|
|
|
|
|
|
|
|
|
| |
To streamcopy_init().
This will allow to simplify the control flow in ost_add() by moving the
ost_get_filters() call (which previously had to handle both encoding and
streamcopy streams) to ost_bind_filter() (which is only called for
audio/video encoding).
Also, return EINVAL rather than ENOSYS, as trying to combine filtering
with streamcopy is a parameter error.
|
|
|
|
| |
It is only used in this file.
|
|
|
|
|
| |
The encoding AVCodecContext is a part of the encoder, and so should live
there.
|
|
|
|
| |
It is now a trivial wrapper over ist_use(), so export that directly.
|
|
|
|
|
|
|
|
|
| |
init_simple_filtergraph()
With this, nothing in ffmpeg_filter acesses OutputStream anymore, thus
there are no more direct ties between filtering and muxing.
Rename init_simple_filtergraph() to fg_create_simple() for consistency.
|
|
|
|
|
|
| |
It is no longer used for anything besides a sanity-checking assert.
Rename the function to ofilter_bind_enc(), as it no longer has any
assumptions about the target being an output stream.
|
|
|
|
|
|
|
|
| |
Pass them to ofilter_bind_ost() via OutputFilterOptions, as is done for
most other data it needs. OutputStream.[max_]frame_rate/force_fps are no
longer used outside of ffmpeg_mux*, and so can be made private.
This is a step toward decoupling encoders from muxers.
|
|
|
|
|
|
|
|
| |
This code uses no encoder properties or state besides its name, and is
mostly muxer logic, and thus belongs more properly into the muxer.
The results of several test change due to different metadata tag order
(the "encoder" tag is now set first).
|
|
|
|
|
|
|
|
|
|
| |
Have the muxer code read them out of the encoder context in
of_stream_init() instead.
OutputStream.par_in no longer needs to be public, so can be moved to
MuxStream.
This is a step towards decoupling encoders from muxers.
|
|
|
|
|
|
|
|
| |
Instead, pass the encoder context to of_stream_init() and have the muxer
take the timebase from there. Note that the muxer can currently access
the codec context directly, but that will change in future commits.
This is a step towards decoupling encoders from muxers.
|
|
|
|
|
|
|
| |
Log decoder messages to the encoder rather than OutputStream.
This is a step towards decoupling encoders from muxers, similarly to
what was previously done to decoders and demuxers.
|
|
|
|
|
|
|
|
| |
This extends the syntax for specifying input streams in -map and complex
filtergraph labels, to allow selecting a view by view ID, index, or
position. The corresponding decoder is then set up to decode the
appropriate view and send frames for that view to the correct
filtergraph input(s).
|
|
|
|
| |
Will be useful for multilayer video.
|
|
|
|
| |
The option is enc_time_base, not enc_timebase
|
| |
|
|
|
|
| |
This dict is declared and freed but nothing is ever written to it.
|
|
|
|
|
|
|
|
|
|
|
|
| |
When ret is checked here, it was never assigned anything, making this
check useless, as highlighted by Coverity.
It seems to be a copy paste mistake given that opt_match_per_stream_str
does not return an error code that could be checked and the previous
value assigned to ret is already checked above. So just remove this
check.
Fixes: CID1616292
|
|
|
|
|
|
|
| |
This is no longer needed, since we now correctly negotiate the required
range from the mjpeg encoder via avcodec_get_supported_config().
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
|
|
|
| |
To convert between color spaces/ranges, if needed by the codec
properties.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
| |
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix "ost->st->avg_frame_rate = ost->frame_rate" in streamcopy_init()
being reset to input's frame rate a few lines below.
Note that in current code, there are some discrepancies amongst the
muxers. For example, avienc relies on time_base, so it is not affected
by this patch, whereas mxfenc and matroskaenc do use avg_frame_rate,
so this patch fixes -r being honored.
In the updated fate test, the input is (wrongly) probed as 50fps. With
this patch, the correct value (25fps) is successfully forced with -r.
Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
|
|
|
| |
Removes a lot of error checking code, as matching cannot fail.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This has multiple advantages:
* The macro has multiple parameters that often have similar or identical
values, yet very different meanings (one is the name of the
OptionsContext member where the parsed options are stored, the other
the name of the variable into which the result is written); this
change makes each of these explicit.
* The macro returns on failure, which may cause leaks - this was the
reason for adding MATCH_PER_STREAM_OPT_CLEAN(), also ost_add()
currently leaks encoder_opts. The new function returns failure to its
caller, which decides how to deal with it. While that adds a lot of
error checks/forwards for now, those will be reduced in following
commits.
* new code is type- and const- correct
Invocations of MATCH_PER_STREAM_OPT() with other types will be converted
in following commits.
|
|
|
|
|
| |
Stop trying to invent some "framerate-based" timebase when there is no
reason to think the stream is CFR at all.
|
|
|
|
| |
It is no longer needed after this function returns.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Do not pass an options dictionary to the avcodec_open2() in enc_open().
This is cleaner and more robust, as previously various bits of code
would try to interpret the contents of the options dictionary, with
varying degrees of correctness. Now they can just access the encoder
AVCodecContext directly.
Cf. 372c78dd42f2b1ca743473b9c32fad71c65919e0 - analogous change for
decoding.
A non-progressive field order is now written on the container level in
interlaced ProRes encoding tests.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
Fixes: CID1539099 Resource leak
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add external encoder VVenC for H266/VVC encoding.
Register new encoder libvvenc.
Add libvvenc to wrap the vvenc interface.
libvvenc implements encoder option: preset,qp,qpa,period,
passlogfile,stats,vvenc-params,level,tier.
Enable encoder by adding --enable-libvvenc in configure step.
Co-authored-by: Christian Bartnik chris10317h5@gmail.com
Signed-off-by: Thomas Siedel <thomas.ff@spin-digital.com>
|
|
|
|
|
| |
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
|
|
|
|
|
|
|
|
|
| |
Currently it may return an uninitialized value.
Introduced in 840f2bc18eddd72fa886aec30efc82991b920c45.
Fixes Coverity issue #1603565.
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
|
|
|
|
|
|
|
| |
Fixes: CID1538863 Resource leak
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
|
|
|
| |
Signed-off-by: James Almer <jamrial@gmail.com>
|
|
|
|
| |
Signed-off-by: James Almer <jamrial@gmail.com>
|
|
|
|
| |
Signed-off-by: James Almer <jamrial@gmail.com>
|
|
|
|
|
| |
All remaining code accessing it only needs to know whether this
filtergraph output has been bound or not.
|
|
|
|
|
|
| |
Stop digging through encoder options manually.
Will allow decoupling filtering from encoding in future commits.
|
|
|
|
|
| |
It is no longer used outside of the muxing code (where we can access the
muxer directly).
|
|
|
|
| |
It is no longer needed outside of of_open() and its children.
|
|
|
|
|
|
| |
The decision whether -apad actually does anything is made based on muxer
properties, and so more properly belongs there. Filtering code only
receives the result.
|
|
|
|
|
|
| |
Do not read them from OutputStream directly.
Will allow decoupling filtering from encoding in future commits.
|
|
|
|
|
|
| |
Do not read it from OutputStream directly.
Will allow decoupling filtering from encoding in future commits.
|
|
|
|
|
|
| |
Do not read them from OutputStream directly.
Will allow decoupling filtering from encoding in future commits.
|
|
|
|
|
|
| |
Do not construct it from OutputStream manually.
Will allow decoupling filtering from encoding in future commits.
|