Thomas Siedel
db6e360afb
avformat/mpegts: add ts stream types for H266/VVC
...
Add transport stream stream type 0x33 for vvc.
Add STREAM_TYPE_VIDEO_VVC to MPEG-1/2 and MPEG-2 transport stream.
Add basic transport stream support for TS mux/demux.
Tested with:
ffmpeg -i NovosobornayaSquare_1920x1080.mp4 -c:v libvvenc test.ts && ffmpeg -i test.ts -f null -
ffmpeg -i NovosobornayaSquare_1920x1080.mp4 -c:v copy test.ts && ffmpeg -i test.ts -f md5 -
Signed-off-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Thomas Siedel <thomas.ff@spin-digital.com>
Co-Authored-By: Nuo Mi <nuomi2021@gmail.com>
2024-01-31 22:14:12 +08:00
Nuo Mi
11a57685cd
avformat/mpegtsenc: refact out h26x_prefix_aud
...
Signed-off-by: Marton Balint <cus@passwd.hu>
2024-01-31 22:14:12 +08:00
Nuo Mi
627dbc4e00
avformat/mpegtsenc: refact, remove h264, hevc magic numbers for nal_type
2024-01-31 22:14:12 +08:00
Nuo Mi
d2c4f72016
avformat/mpegtsenc: refact, move h264, hevc startcode checking to check_h26x_startcode
2024-01-31 22:14:12 +08:00
Nuo Mi
8559cce3c3
avformat/mpegtsenc: refact mpegts_check_bitstream to loop up table
...
Signed-off-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2024-01-31 22:14:12 +08:00
Thomas Siedel
aa3155e4c2
avformat/mp4: add muxer support for H266/VVC
...
Add muxer for vvcc byte stream format.
Add AV_CODEC_ID_VVC to ff_mp4_obj_type.
Add AV_CODEC_ID_VVC to ISO Media codec (VvcConfigurationBox vvi1,
vvc1 defined in ISO/IEC 14496-15:2021).
Add VvcConfigurationBox vvcC which extends FullBox type in
ISO/IEC 14496-15:2021.
Tested with:
ffmpeg -i NovosobornayaSquare_1920x1080.mp4 -c:v libvvenc test.mp4 && ffmpeg -i test.mp4 -f null -
ffmpeg -i NovosobornayaSquare_1920x1080.mp4 -c:v copy test.mp4 && ffmpeg -i test.mp4 -f md5 -
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Thomas Siedel <thomas.ff@spin-digital.com>
Co-Authored-By: Nuo Mi <nuomi2021@gmail.com>
2024-01-31 22:14:12 +08:00
Lynne
5860a966d2
lavfi/vsrc_testsrc_vulkan: fix -Wint-conversion
...
While VK_NULL_HANDLE is equivalent to NULL on 64-bit platforms, the same is not
true across all platforms.
Fixes building with gcc-14.
2024-01-31 14:26:26 +01:00
James Almer
9949c1dd78
avformat/avformat: fix group index range check in match_stream_specifier()
...
Fixes segfaults when trying to map a group index with a value equal to the
amount of groups in the file.
Signed-off-by: James Almer <jamrial@gmail.com>
2024-01-30 17:23:20 -03:00
Andreas Rheinhardt
7252e4f8ee
avcodec/aac_defines: Remove unused AAC_RENAME_32
...
Unused since fbe6a51b11
.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2024-01-30 20:43:48 +01:00
Frank Plowman
36a986d9a1
lavc/vvc: Add check to num_multi_layer_olss
...
Check that vps_each_layer_is_an_ols_flag, which indicates that "at
least one OLS specified by the VPS contains more than one layer," is
set if num_multi_layer_olss is non-zero.
Fixes: 65160/clusterfuzz-testcase-minimized-ffmpeg_BSF_VVC_METADATA_fuzzer-4665241535119360
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Frank Plowman <post@frankplowman.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2024-01-30 09:24:03 -03:00
Zhao Zhili
bc944168db
avcodec/mpeg4videodec: Remove write-only variable
...
Fix warning: variable 'time_incr' set but not used.
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2024-01-30 18:25:52 +08:00
Anton Khirnov
093be1fb06
fftools/ffmpeg: cosmetics, vertically align Input{File,Stream}
2024-01-30 09:52:00 +01:00
Anton Khirnov
f4b76a1d6a
fftools/ffmpeg: make InputStream.decoder_opts private to demuxer
...
It is no longer used outside of ffmpeg_demux.
2024-01-30 09:52:00 +01:00
Anton Khirnov
01c71b78eb
fftools/ffmpeg: make InputStream.decoding_needed private to demuxer
...
It is no longer used outside of ffmpeg_demux.
2024-01-30 09:52:00 +01:00
Anton Khirnov
0d00e2e2f7
fftools/ffmpeg_dec: eliminate all remaining InputStream uses
...
Previously, the demuxer would register decoder with the scheduler, using
InputStream as opaque, and pass the scheduling index to the decoder.
Now the registration is done by the decoder itself, using DecoderPriv as
opaque, and the scheduling index is returned to demuxer from dec_open().
decoder_thread() then no longer needs to be accessed from outside of
ffmpeg_dec and can be made static.
2024-01-30 09:52:00 +01:00
Anton Khirnov
fe3be6f78f
fftools/ffmpeg_dec: stop passing InputStream to dec_open()
2024-01-30 09:52:00 +01:00
Anton Khirnov
a0ca99ccb7
fftools/ffmpeg_dec: remove unnecessary InputStream arguments
2024-01-30 09:52:00 +01:00
Anton Khirnov
1b2c539a0f
fftools/ffmpeg_dec: pass AVCodecParameters through DecoderOpts
...
Do not retrieve it from InputStream directly.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
b3d1916ba0
fftools/ffmpeg_dec: pass AVCodec through DecoderOpts
...
Do not retrieve it from InputStream directly.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
d5f9ef766b
fftools/ffmpeg_dec: eliminate InputStream use in hw_device_setup_for_decode()
...
The same information can also be obtained from the decoder itself.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
097f9ddbe9
fftools/ffmpeg_dec: pass decoder name through DecoderOpts
...
Do not build it from InputStream values.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
9ba4bc87e6
fftools/ffmpeg_dec: pass top_field_first through DecoderOpts
...
Do not read it from InputStream directly.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
9702817662
fftools/ffmpeg_dec: pass input timebase through DecoderOpts
...
Do not read it from AVStream directly.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
b27de18e4f
fftools/ffmpeg_dec: move setting compute_edt to demuxer
...
It is done based on demuxer information, so that is the more appropriate
place for this code.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
052c83e356
fftools/ffmpeg_dec: pass forced/estimated framerate though DecoderOpts
...
Stop reading them from InputStream.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
e0a6cb07b2
fftools/ffmpeg_dec: move flags to DecoderOpts
...
Will be useful in the following commit.
2024-01-30 09:52:00 +01:00
Anton Khirnov
4bdffec814
fftools/ffmpeg_dec: pass hwaccel options to the decoder in a separate struct
...
Stop reading them from InputStream.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
a3a9c4ae66
fftools/ffmpeg: move hwaccel_retrieve_data() from ffmpeg_hw to ffmpeg_dec
...
This function is decoding-only and has no interaction with the rest of
ffmpeg_hw. It thus belongs more properly in ffmpeg_dec.
2024-01-30 09:52:00 +01:00
Anton Khirnov
ebb8a58c8f
fftools/ffmpeg_dec: replace InputFile.format_nots with a decoder flag
...
Reduces the need to access InputFile from decoding.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
a938f47916
fftools/ffmpeg: refactor disabling decoder threading for attached pictures
...
* as this decision is based on demuxing information, move it from the
decoder to the demuxer
* as the issue being addressed is latency added by frame threading, we
only need to disable frame threading, not all threading
2024-01-30 09:52:00 +01:00
Anton Khirnov
474ca6c71e
fftools/ffmpeg_dec: stop accesing InputStream.fix_sub_duration
...
Pass this information to dec_open() instead.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
924a6f3cc7
fftools/ffmpeg_dec: override video SAR with AVCodecParameters value
...
Rather than access the AVStream one.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
b2a0a2e6f5
fftools/ffmpeg: move decoder existence check to a more appropriate place
2024-01-30 09:52:00 +01:00
Anton Khirnov
217b8757db
fftools/ffmpeg_dec: drop a useless log message
2024-01-30 09:52:00 +01:00
Anton Khirnov
27de2aacd1
fftools/ffmpeg_dec: drop useless and racy code
...
Setting demuxer's video_delay from the decoder cannot accomplish
anything meaningful and is racy, as they run in different threads.
2024-01-30 09:52:00 +01:00
Anton Khirnov
9be3f80527
fftools/ffmpeg_dec: move decoding counters from InputStream to Decoder
...
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
5b0e4f945e
fftools/ffmpeg_dec: pass decoder options as an argument to dec_open()
...
Rather than access the dictionary in InputStream.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
7ecd45587f
fftools/ffmpeg_dec: add an AVClass to Decoder
...
Log decoder messages to the decoder rather than InputStream.
This is a step towards decoupling Decoder and InputStream.
2024-01-30 09:52:00 +01:00
Anton Khirnov
f2a2094c47
fftools/ffmpeg: make decoding AVCodecContext private to the decoder
2024-01-30 09:52:00 +01:00
Anton Khirnov
d47bb91f8b
fftools/ffmpeg_filter: consolidate decoder/filter type checks
...
Also perform them earlier.
2024-01-30 09:52:00 +01:00
Anton Khirnov
b43d4a0692
fftools/ffmpeg_dec: export subtitle_header in Decoder
...
This way the encoder does not need to access the decoder AVCodecContext,
which will allow to make it private in future commits.
2024-01-30 09:52:00 +01:00
Anton Khirnov
3b84140a1b
fftools/ffmpeg_dec: split Decoder into a private and public part
...
Similar to what is currently done for other components, e.g. (de)muxers.
There is nothing in the public part currently, but that will change in
future commits.
2024-01-30 09:51:57 +01:00
Anton Khirnov
0291b6f824
lavfi/vsrc_ddagrab: add an option to avoid duplicating frames
...
Tested-by: Jiří Eliášek, Misha Aizatulin
2024-01-30 09:32:39 +01:00
James Almer
66f028accb
avcodec/cbs_h266: fix logic setting num_layers_in_ols when vps_ols_mode_idc is 2
...
The old code did not follow the syntax from the spec.
Reviewed-by: Frank Plowman <post@frankplowman.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2024-01-29 20:45:31 -03:00
Frank Plowman
85e031d5bf
lavc/vvc: Increase IntraEdgeParams buffer size
...
The reference line buffers are used with indices in the range
-MAX_TB_SIZE - 3 to refw + FFMAX(1, w/h) * ref_idx + 1, which is
at most 5*MAX_TB_SIZE + 1.
Fixes buffer overflows.
http://fate.ffmpeg.org/report.cgi?slot=armv7-linux-gcc-9&time=20240124051736
Signed-off-by: James Almer <jamrial@gmail.com>
2024-01-29 20:29:57 -03:00
Anton Khirnov
887a7817b6
lavc: move bitstream filters into bsf/ subdir
2024-01-29 18:40:14 +01:00
Anton Khirnov
e0da916b8f
fftools/ffmpeg: optimize inter-thread queue sizes
...
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.
2024-01-28 13:34:56 +01:00
Andreas Rheinhardt
341d0419e1
avcodec/texturedsp: Factor common code out
...
Namely calling avctx->execute2(avctx,...).
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2024-01-28 11:00:01 +01:00
Andreas Rheinhardt
4f58372c10
avcodec/hap: Avoid unnecessary opt.h inclusion
...
It presumably exists because HapContext contains an AVClass*.
Yet AVClass is actually defined in log.h and even this inclusion
can be avoided by struct AVClass*. This avoids opt.h inclusions
in hap.c and hapdec.c.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2024-01-28 10:59:36 +01:00
Andreas Rheinhardt
a3fc9fb9fb
avcodec/texturedsp: Add separate TextureDSPEncContext
...
ff_texturedspenc_init() doesn't support most of the function types
supported for decoding; add a separate context containing only pointers
for the actually supported types.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2024-01-28 10:52:48 +01:00