Anton Khirnov
bdc1bdf3f5
FATE: allow multithreaded filtering
2021-08-29 18:44:38 +02:00
Anton Khirnov
834b8ad8a3
ffmpeg_filter: do not override -filter_threads with -threads
...
When both -filter_threads and -threads are specified, the latter takes
effect. Since -threads is an encoder option and -filter_threads is a
filter option, it makes sense for the -filter_threads to take
precedence.
2021-08-29 18:44:09 +02:00
Anton Khirnov
4a0d918c9e
ffmpeg: reset the dict iterator before use
2021-08-29 18:43:01 +02:00
Anton Khirnov
5fdb5ed613
FATE: add a test for sliced scaling
2021-08-08 19:26:05 +02:00
Anton Khirnov
94170e0411
tools/venc_data_dump: factor out demux/decode code
...
It can be shared with other simple demux/decode tools.
2021-08-08 19:21:39 +02:00
Anton Khirnov
a948e47960
lavfi/vf_scale: forward errors from swscale
2021-07-12 12:49:25 +02:00
Anton Khirnov
6d51d65fb9
lavfi/vf_scale: pass only the private context to scale_slice()
...
Not the input link. The function does nothing with the link except
extract the private context from it.
2021-07-12 12:49:07 +02:00
Anton Khirnov
37c0fe49b7
sws: move updating the palette higher up
...
It does not interact in any way with the code setting up the image
pointers/strides, so it should not be intermixed with it.
2021-07-03 16:13:40 +02:00
Anton Khirnov
d6649d9a3b
sws: move initializing dither_error higher up
...
It does not interact in any way with the code setting up the image
pointers/strides, so it should not be intermixed with it.
2021-07-03 16:13:10 +02:00
Anton Khirnov
e188985598
sws: move the early return for zero-sized slices higher up
...
Place it right after the input parameter validation. There is no point
in performing any setup if the sws_scale() call won't do anything.
2021-07-03 16:09:43 +02:00
Anton Khirnov
a91e6c927e
sws: simplify setting sliceDir
2021-07-03 16:09:21 +02:00
Anton Khirnov
ff753f41dd
sws: merge handling frame start into a single block
...
Also, return an error code on failure rather than 0.
2021-07-03 16:09:07 +02:00
Anton Khirnov
1b11a324fe
sws: make checking for the start of a new frame more explicit
2021-07-03 16:07:22 +02:00
Anton Khirnov
0fb014b7bb
sws: reset sliceDir at the end of sws_scale()
...
Makes it more clear that resetting it does not interact with the scaling
code that it is currently intermixed with.
2021-07-03 16:05:39 +02:00
Anton Khirnov
1f80789bf7
sws: rename SwsContext.swscale to convert_unscaled
...
That function pointer is now used only for unscaled conversion.
2021-07-03 15:57:53 +02:00
Anton Khirnov
fe490ec165
sws: separate the calls to scaled vs unscaled conversion
...
Call the scaler function directly rather than through a function
pointer. Drop the now-unused return value from ff_getSwsFunc() and
rename the function to reflect its new role.
This will be useful in the following commits, where it will become
important that the amount of output is different for scaled vs unscaled
case.
2021-07-03 15:57:13 +02:00
Anton Khirnov
0f8e0957d2
sws: do not reallocate scratch buffers for each slice
2021-07-03 15:56:16 +02:00
Anton Khirnov
2730639259
sws: group the parameters validity checks together
...
Also, fail with an error code rather than 0.
2021-07-03 15:31:18 +02:00
Anton Khirnov
c05cab34a9
sws: initialize {src,dst}Stride2 consistently with {src,dst}2
2021-07-03 15:31:08 +02:00
Anton Khirnov
d3d8e09640
sws: cosmetics
...
Reindent after previous commit, rewrap long lines.
2021-07-03 15:30:56 +02:00
Anton Khirnov
f136493d03
sws: factor out cascaded scaling
2021-07-03 15:30:34 +02:00
Anton Khirnov
a2254aedc9
sws: cosmetics
...
Reindent after previous commit, split long lines.
2021-07-03 15:30:20 +02:00
Anton Khirnov
44f12718bf
sws: factor out gamma-correct scaling
2021-07-03 15:29:50 +02:00
Anton Khirnov
e355af9be9
sws: return an error code on invalid parameters to sws_scale()
2021-07-03 15:29:35 +02:00
Anton Khirnov
21a4e48f88
sws: reindent after previous commit
2021-07-03 15:29:22 +02:00
Anton Khirnov
27acca1af0
sws: factor out updating the palette
2021-07-03 15:28:46 +02:00
Anton Khirnov
f8c21ccbfc
sws: remove unnecessary braces
...
There used to be more code inside them, but it was removed in
6de58b4903 .
2021-07-03 15:28:36 +02:00
Anton Khirnov
296dc876ec
lavc: fix and extend AVCodecContext.get_format doxy
...
Remove some incorrect (or at least misleading) statements, such as the
formats being ordered by quality, or the first format being the native
one. Neither of those are true for hardware acceleration, which is the
main use of this callback.
2021-06-26 19:33:42 +02:00
Anton Khirnov
580e168a94
lavu/mem: un-inline av_size_mult()
...
There seems to be no compelling reason for it to be inline.
2021-06-11 19:42:47 +02:00
Anton Khirnov
71c0ef882e
lavf: clarify probesize/format_probesize doxy
...
probesize is not used for probing the input format, but its
documentation claims it does.
2021-06-11 19:42:24 +02:00
Anton Khirnov
5384ee486a
doc: fix generating doxy with out-of-tree builds
...
Broken in 753930bc73 , as the path to
Doxyfile passed to doxy-wrapper.sh is relative to the build dir, while
the recipe cd's to the source dir before invoking the wrapper.
2021-06-11 19:28:27 +02:00
Anton Khirnov
c8778606b3
lavu/video_enc_params: make sure blocks are properly aligned
2021-06-10 16:59:50 +02:00
Anton Khirnov
1256b71ba9
lavf/mp3dec: avoid avcodec.h dependency
2021-06-10 16:51:44 +02:00
Anton Khirnov
c9642265f8
lavf/mov_chan: avoid avcodec.h dependency
2021-06-10 16:51:44 +02:00
Anton Khirnov
823ca1ba84
lavf/matroska: avoid avcodec.h dependency
2021-06-10 16:51:44 +02:00
Anton Khirnov
f3dafe6a41
lavf/latmenc: avoid avcodec.h dependency
2021-06-10 16:51:44 +02:00
Anton Khirnov
e246625b01
lavf/id3v1: drop unnecessary avcodec.h include
2021-06-10 16:51:44 +02:00
Anton Khirnov
5620d18e66
lavf/hevc: drop unnecessary avcodec.h include
2021-06-10 16:51:44 +02:00
Anton Khirnov
f79d009b7c
lavf/framecrcenc: avoid avcodec.h dependency
2021-06-10 16:51:44 +02:00
Anton Khirnov
239b7d2e40
lavf/adtsenc: avoid avcodec.h dependency
2021-06-10 16:51:44 +02:00
Anton Khirnov
e7196afe28
lavf/a64: avoid avcodec.h dependency
2021-06-10 16:51:44 +02:00
Anton Khirnov
e67e02d156
lavf/avformat.h: drop the avcodec.h include
...
Since AVStream.codec is gone, avformat.h does not require anything from
avcodec.h.
2021-06-10 16:51:44 +02:00
Anton Khirnov
ed728da3af
tools/uncoded_frame: include required headers explicitly
2021-06-10 16:51:44 +02:00
Anton Khirnov
51200769c3
lavf/icoenc: include required headers explicitly
2021-06-10 16:51:44 +02:00
Anton Khirnov
c4c6c83421
lavf/internal: include avcodec.h explicitly
...
Do not depend on avformat.h to provide it.
2021-06-10 16:51:44 +02:00
Anton Khirnov
5d920255aa
lavfi/lavfutils: include required headers explicitly
2021-06-10 16:51:44 +02:00
Anton Khirnov
c28823ff97
lavc/get_bits: avoid avcodec.h dependency
...
Include only defs.h, needed for AV_INPUT_BUFFER_PADDING_SIZE.
2021-06-10 16:51:44 +02:00
Anton Khirnov
58a39e3436
lavc/hevc_sei: include buffer.h explicitly
...
Do not rely on including it indirectly through get_bits.h->avcodec.h
2021-06-10 16:51:44 +02:00
Anton Khirnov
43002487cb
lavc/mlp_parse: add required includes explicitly
2021-06-10 16:51:44 +02:00
Anton Khirnov
93822dacb9
lavc/dolby_e_parser: #include avcodec.h explicitly
...
This file uses definitions from it, but relies on an indirect include
through get_bits.h
2021-06-10 16:51:44 +02:00
Anton Khirnov
9dbdabe0e0
lavc/cbs_internal: clean up headers
...
Include all required headers explicitly, avoid avcodec.h dependency.
2021-06-10 16:51:44 +02:00
Anton Khirnov
e91901adf6
lavc/cbs: avoid avcodec.h dependency
...
Include only the headers that are actually needed.
2021-06-10 16:51:44 +02:00
Anton Khirnov
f3f404edd2
lavc/cbs_bsf.h: explicitly #include all required headers
2021-06-10 16:51:44 +02:00
Anton Khirnov
7c9763070d
lavc: move av_get_profile_name() from avcodec.h to codec.h
2021-06-10 16:51:44 +02:00
Anton Khirnov
bb3648e676
lavc: move av_get_audio_frame_duration2() from avcodec.h to codec_par.h
2021-06-10 16:51:44 +02:00
Anton Khirnov
881db34f6a
lavc: move av_get_pcm_codec() from avcodec.h to codec_id.h
2021-06-10 16:51:44 +02:00
Anton Khirnov
2628dff366
lavc: move avcodec_profile_name() from avcodec.h to codec_id.h
2021-06-10 16:51:44 +02:00
Anton Khirnov
000f35125f
lavc: move av_get_[exact_]bits_per_sample() to codec_id.h
2021-06-10 16:51:44 +02:00
Anton Khirnov
ff0a96046d
lavc: move small misc definitions into a separate header
...
This will allow to avoid #including the entire avcodec.h in some places.
2021-06-10 16:51:44 +02:00
Anton Khirnov
9d4c018497
avio: do not export avpriv_io_{move,delete}
...
They are private and not used by anything outside of lavf. There is no
reason for them to be exported.
2021-05-22 15:27:55 +02:00
Anton Khirnov
ef58f48d59
fate: add a more extensive test for APNG_DISPOSE_OP_BACKGROUND
...
Uses the sample from #9184 .
2021-05-14 11:15:13 +02:00
Anton Khirnov
aa726eaed9
lavc/pngdec: fix updating reference frames for APNG_DISPOSE_OP_BACKGROUND
...
They should be treated the same as APNG_DISPOSE_OP_NONE.
Broken in 5663301560 .
Fixes #9184 .
2021-05-14 11:15:13 +02:00
Anton Khirnov
6a9a4f34bd
lavf/flvdec: normalize exporting date metadata
...
Export them in UTC, not the local timezone. This way the output is
the same everywhere. The timezone information stored in the file is
still ignored, since there seems to be no simple way to export it
correctly.
Format them according to ISO 8601, which we generally use for exporting
dates.
Fixes fate-flv-demux, which was broken since
958bea5248 on some platforms.
2021-05-12 20:19:02 +02:00
Anton Khirnov
c6ae560a18
lavf/framecrcenc: do not hash side data
...
There are no guarantees that all side data types have the same
representation on all platforms.
Tests that change output due to this:
id3v2-priv-remux, cover-art-mp3-id3v2-remux, gapless-mp3: SKIP_SAMPLES,
which is tested by fate-gapless-mp3-side-data
matroska-vp8-alpha-remux: MATROSKA_BLOCKADDITIONAL, which is tested by
remux itself (side data is written into output)
matroska-mastering-display-metadata: MASTERING_DISPLAY_METADATA and
CONTENT_LIGHT_LEVEL, which are tested by ffprobe invocation in the same
test
matroska-spherical-mono-remux: STEREO3D and SPHERICAL, which are tested
by ffprobe invocation in the same test
segment-mp4-to-ts: MPEGTS_STREAM_ID, which is tested by ts remuxing
tests
webm-webvtt-remux: WEBVTT_IDENTIFIER/SETTINGS, which is tested by the
ffprobe invocation in the same test
mxf-d10-user-comments: CPB_PROPERTIES, which is tested by mxf-probe-d10
mov-cover-image: SKIP_SAMPLES, which is tested for mov by
mov-aac-2048-priming
copy-trac3074: AUDIO_SERVICE_TYPE, which is tested by fate-hls-fmp4_ac3
2021-05-09 11:07:20 +02:00
Anton Khirnov
4d28a6756c
fate: drop the vp8-alpha test
...
It is redundant with matroska-vp8-alpha-remux.
2021-05-09 11:07:20 +02:00
Anton Khirnov
af607a8838
fate-run.sh: print stream side data in probeaudiostream()
...
Adds a test for reading AUDIO_SERVICE_TYPE in fate-hls-fmp4_ac3
2021-05-09 11:07:20 +02:00
Anton Khirnov
1b3bd52e54
fate-webm-webvtt-remux: print packet side data in ffprobe output
2021-05-09 11:07:20 +02:00
Anton Khirnov
958bea5248
fate/demux: convert flv-demux to ffprobe
...
It can handle side data cleanly.
2021-05-09 11:07:20 +02:00
Anton Khirnov
471a9e706b
fate-ts-demux: convert to ffprobe
...
It can handle side data cleanly.
2021-05-09 11:07:20 +02:00
Anton Khirnov
c89460f096
fate-ts-opus-demux: convert to ffprobe
...
It can handle side data cleanly.
2021-05-09 11:07:20 +02:00
Anton Khirnov
99fb6ffd82
fate-ts-small-demux: convert to ffprobe
...
It can handle side data cleanly.
2021-05-09 11:07:19 +02:00
Anton Khirnov
40b33ee693
fate/gapless: add a test for skip samples side data
2021-05-09 11:07:17 +02:00
Anton Khirnov
b8041fb838
fate-oggopus-demux: convert to ffprobe
...
It can print side data cleanly.
2021-05-09 10:59:21 +02:00
Anton Khirnov
677a030b26
ffprobe: support printing more packet side data types
...
Specifically WebVTT subtitle data, CPB properties, audio service type
and mpegts stream id.
2021-05-09 10:59:21 +02:00
Anton Khirnov
544631cab1
ffprobe: only hash extradata when it is present
...
Passing zero-sized/NULL buffers to av_hash_update() is invalid and may
crash with certain hashes.
2021-05-09 10:59:21 +02:00
Anton Khirnov
85ba17f36d
Bump major versions of all libraries.
...
Signed-off-by: James Almer <jamrial@gmail.com >
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com >
2021-04-27 11:48:05 -03:00
Anton Khirnov
95054bfa48
Disable vf_uspp/mcdeint.
...
These filters depend on avcodec APIs that are to be removed. Some people
have expressed potential interest in updating these filters, so they are
merely disabled for now instead of being removed.
Signed-off-by: James Almer <jamrial@gmail.com >
2021-04-27 10:43:11 -03:00
Anton Khirnov
878e45e0fb
tests/fate: add a test for APNG_DISPOSE_OP_BACKGROUND
2021-04-24 13:02:54 +02:00
Anton Khirnov
d43b26b30d
lavc/libaomdec: fix build with 1.0.0
...
aom_codec_frame_flags_t in libaom 1.0.0 is defined in aom_encoder.h,
whereas for newer versions it was moved to aom_codec.h
2021-04-18 08:36:17 +02:00
Anton Khirnov
b593abda6c
lavc/pngdec: always create a copy for APNG_DISPOSE_OP_BACKGROUND
...
Calling av_frame_make_writable() from decoders is tricky, especially
when frame threading is used. It is much simpler and safer to just make
a private copy of the frame.
This is not expected to have a major performance impact, since
APNG_DISPOSE_OP_BACKGROUND is not used often and
av_frame_make_writable() would typically make a copy anyway.
Found-by: James Almer <jamrial@gmail.com >
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2021-04-08 22:40:26 +02:00
Anton Khirnov
f6ea2ee005
fftools/ffmpeg: copy average framerate for streamcopy, when known
2021-04-08 11:03:15 +02:00
Anton Khirnov
04feb1c038
lavf: do not derive timebase from avg_frame_rate
...
avg_frame_rate is the _average_ framerate, its presence does not
guarantee that the stream is CFR, so it should not be used for setting
the timebase.
2021-04-08 11:03:15 +02:00
Anton Khirnov
0214da22ca
fftools/ffmpeg: when framerate is set, prefer its inverse as output timebase
...
Codec timebase is not well-defined for streamcopy, so it should only be
used as the last resort.
2021-04-08 11:03:15 +02:00
Anton Khirnov
7ec8229982
lavf/movenc: use framerate correctly in mov_write_tmcd_tag
...
Current code uses its inverse.
2021-04-08 11:03:15 +02:00
Anton Khirnov
6ad79047a7
lavc: postpone FF_API_AVCTX_TIMEBASE
...
There are still several decoders setting it and the situation is
non-trivial to resolve.
2021-04-08 11:03:15 +02:00
Anton Khirnov
270ddc2baf
lavf: postpone removal of FF_API_COMPUTE_PKT_FIELDS2
...
The infrastructure to fully handle generating timestamps e.g. for raw
video streamcopy is still not present.
2021-04-08 11:03:15 +02:00
Anton Khirnov
9168a1c0e6
lavf/webvttenc: fix avio_printf argument types after bump
...
Field precision supplied with the '*' specification must be an int.
2021-04-08 11:03:15 +02:00
Anton Khirnov
2822bfbbfb
lavf/matroskaenc: fix avio_printf argument types after bump
...
Field precision supplied with the '*' specification must be an int.
Also, make sure converting those fields to int does not overflow.
2021-04-08 11:03:15 +02:00
Anton Khirnov
19e8103406
lavc/pngdec: use a separate bytestream reader for each chunk
...
This makes sure that reading a truncated chunk will never overflow into
the following chunk. It also allows to remove many repeated lines
skipping over the trailing crc checksum.
2021-04-08 11:03:15 +02:00
Anton Khirnov
ae08eec6a1
lavc/pngdec: improve chunk length check
...
The length does not cover the chunk type or CRC.
2021-04-08 11:03:15 +02:00
Anton Khirnov
8e4390de48
tests/fate: add tests for PNG side/meta data
2021-04-08 11:03:15 +02:00
Anton Khirnov
8d74baccff
lavc/pngdec: restructure exporting frame meta/side data
...
This data cannot be stored in PNGDecContext.picture, because the
corresponding chunks may be read after the call to
ff_thread_finish_setup(), at which point modifying shared context data
is a race.
Store intermediate state in the context and then write it directly to
the output frame.
Fixes exporting frame metadata after 5663301560
Fixes #8972
Found-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
2021-04-08 11:03:15 +02:00
Anton Khirnov
89ea5057bf
lavc/pngdec: remove unnecessary context variables
...
Do not store the image buffer pointer/linesize in the context, just
access them directly from the frame.
Stop assuming that linesize is the same for the current and last frame.
2021-04-08 11:03:15 +02:00
Anton Khirnov
5a50bd88db
lavc/pngdec: perform APNG blending in-place
...
Saves an allocation+free and two frame copies per each frame.
2021-04-08 11:03:15 +02:00
Anton Khirnov
30a69b1625
lavc: drop unused argument from lock_avcodec()
2021-03-16 11:09:58 +01:00
Anton Khirnov
55c083f08a
lavc: drop ff_ prefix from ff_(un)lock_avcodec
...
It is unnecessary and misleading, as those are static functions.
2021-03-16 11:09:48 +01:00
Anton Khirnov
b006a84a97
lavc: move decoder bsf init into decoder-specific code
2021-03-16 11:09:44 +01:00
Anton Khirnov
20aec597d0
lavc: factor decoder validation/setup from avcodec_open2()
2021-03-16 11:09:36 +01:00
Anton Khirnov
dbb1dfabb7
lavc/encode: reindent after previous commit
2021-03-16 11:09:30 +01:00
Anton Khirnov
3f53c84847
lavc: factor out encoder init/validation from avcodec_open2()
...
avcodec_open2() is massive, splitting it makes it more readable.
Also, add a missing error code to ticks_per_frame sanity check.
2021-03-16 10:52:27 +01:00