Commit Graph
100 Commits
Author SHA1 Message Date
James Almer 7347b44224 avcodec/evc_ps: use unsigned types in structs where corresponds
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-23 08:37:23 -03:00
James Almer 5b966be5b8 avcodec/evc_parse: use unsigned types in structs where corresponds
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-23 08:37:23 -03:00
James Almer 528dd5637d avformat/evc: remove duplicate defines
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-23 08:37:23 -03:00
James Almer 3d1199dff6 avformat/evc: add range checks to evcc_parse_sps and return proper error codes
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-23 08:37:23 -03:00
James Almer 552879d621 avformat/evc: remove duplicate check
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-23 08:37:23 -03:00
James Almer d0fc1b3507 avformat/evc: remove unnecessary struct
And don't use get_ue_golomb_long() for known small values.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-23 08:37:23 -03:00
James Almer b1b45ac9d4 avcodec/evc_frame_merge: ensure the assembled buffer fits in an AVPacket
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-23 08:37:23 -03:00
James Almer 25ce1c8333 avformat/id3v2: check the return value of avio_close_dyn_buf()
Fixes ticket #10424.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-22 21:00:15 -03:00
James Almer 9834660601 avcodec/evc_frame_merge: copy input packet props to output
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-22 16:08:14 -03:00
James Almer daf61a706a avcodec/evc_frame_merge: reindent after previous commit
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-22 16:08:14 -03:00
James Almer e6359b0cc1 avcodec/evc_frame_merge: properly support packets with more than one NALU
Parse through all NALUs in a packet, pull new ones when a complete AU could not
be assembled, or keep them around if an AU was assembled while data remained in
them.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-22 16:08:14 -03:00
James Almer 1bcb8a7338 avcodec/evc_parser: use a GetBitContext to parse entire NALUs
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-21 13:31:14 -03:00
James Almer 7fc6c7633e avcodec/evc_frame_merge: use a GetBitContext to parse entire NALUs
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-21 13:31:14 -03:00
James Almer c7183a22db avformat/evc: move NALU length and type parsing functions to a header
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-21 13:31:14 -03:00
James Almer e5da2ec456 avcodec/evc_parse: pass a GetBitContext to the slice header parsing function
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-21 13:31:14 -03:00
James Almer 2212808a72 avcodec/evc_ps: pass a GetBitContext to the SPS and PPS parsing functions
This is in preparation for the following patch.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-21 13:31:14 -03:00
James Almer d0d20f16ce avformat/evcdec: use an unsigned type for nalu_size
But ensure the value returned by evc_read_nal_unit_length() fits in an int.
Should prevent integer overflows later in the code.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-21 13:31:14 -03:00
James Almer a6a5e53595 avformat/evcdec: flush the bsf on EOF
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-21 13:31:14 -03:00
James Almer 43ace56c7e avformat/evcdec: remove unnecessary av_packet_unref() calls
And return proper error codes.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-21 13:31:14 -03:00
James Almer 2276bcc52a avformat/evcdec: ensure there are enough bytes to seekback
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-21 13:31:14 -03:00
James Almer 98cae37e23 Changelog: mention the recent AC-4 additions
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-20 14:54:11 -03:00
James Almer 3f48815501 avformat/evcdec: don't set AVCodecParameters.framerate
It's not necessary. Setting AVStream.avg_frame_rate is enough.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-20 11:35:21 -03:00
James Almer 5a2ff43384 avformat/evcdec: simplify au_end_found check
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-20 11:35:21 -03:00
James Almer ca8a660176 avformat/evcdec: simplify probe function
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-20 11:35:21 -03:00
James Almer 7ff3dce29a avcodec/evc_parse: use get_bits1() where useful
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 19:43:17 -03:00
James Almer 5b372c7ff2 avcodec/evc_ps: use get_bits1() where useful
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 19:43:12 -03:00
James Almer 17499f43b1 avformat/evc: remove unused variable
And check the correct one. Should fix use of uninitialized value warnings.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 17:34:15 -03:00
James Almer e81eafcb97 avformat/evc: skip nalu header size bytes before parsing sps
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 17:21:19 -03:00
James Almer 048b8bdd5e avformat/evc: use get_bits_long() where needed
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 17:21:19 -03:00
James Almer 377da83b99 avcodec/evc_ps: check valid range for a few more elements
Should prevent overreads on non spec comformant input.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 17:21:14 -03:00
James Almer 199fc04d09 avcodec/evc_ps: use get_bits_long() where needed
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 16:25:13 -03:00
James Almer 921596e677 avcodec/evc_ps: make ff_evc_parse_{sps,pps} return an error code
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 16:00:55 -03:00
James Almer 5cb9ef9300 avcodec/evc_parse: remove ff_evc_parse_nal_unit()
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 12:57:31 -03:00
James Almer 56e52e870d avcodec/evc_frame_merge_bsf: make ff_evc_parse_nal_unit() local to the filter
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 12:57:31 -03:00
James Almer fdd8daf899 avcodec/evc_parser: remove write only variable
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 12:57:31 -03:00
James Almer a5663f2d9a avcodec/evc_parser: make ff_evc_parse_nal_unit() local to the parser
This is in preparation for the following commits.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 12:57:31 -03:00
James Almer ff7a4cdf04 avcodec/evc_parse: split off deriving PoC
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 12:57:31 -03:00
James Almer f7e0af5edc avcodec/evc_parser: stop exporting delay and gop_size
The former is a property a decoder may export, and the latter is only
used in encoding scenarios.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 12:57:31 -03:00
James Almer 1e189fed7a avcodec/evc_parse: split off Parameter Set parsing into its own file
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 12:57:31 -03:00
James Almer 4afee83d35 fate/lavf-container: add a test to remux raw evc into mp4
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 12:57:31 -03:00
James Almer 8ab706677c avcodec/evc_frame_merge_bsf: use av_new_packet()
This ensures the buffer is padded as required by the AVPacket API.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 12:57:31 -03:00
James Almer 96fc192733 avcodec/evc_frame_merge: use av_fast_realloc()
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-19 12:57:31 -03:00
James Almer 5e9986fd2d avformat/evc: use get_ue_golomb_long()
Fixes compilation of shared libraries, as well as correctly parses
width and height values.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-18 23:40:46 -03:00
James Almer dbc4c22890 avcodec/evc_parse: add missing includes
Fixes make checkheaders.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-17 12:43:15 -03:00
James Almer be91c5c80d configure: fix evc related dependencies
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-17 10:16:45 -03:00
James Almer f24064e627 avcodec/evc_frame_merge_bsf: free EVCFMergeContext on flush and close
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-17 10:08:54 -03:00
James Almer b1d0b59d81 avcodec/evc_frame_merge_bsf: check for av_memdup() failure
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-17 10:08:54 -03:00
James Almer 9fc1d9adc8 avcodec/evc_parse: make freeing EVCParserContext buffers a shared function
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-17 10:08:54 -03:00
James Almer 46a9be01b8 avcodec/evc_parse: free pps struct on parsing failure
Prevents future checks for their presence from succeeding.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-17 10:08:54 -03:00
James Almer 811460f5c2 avcodec/evc_parse: use the correct sps when parsing slice headers
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-17 10:08:54 -03:00
James Almer 44f26315c8 avcodec/evc_parse: use a local EVCParserSliceHeader when parsing slices
There's no need to store EVC_MAX_PPS_COUNT amount of slice headers in EVCParserContext.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-17 10:08:54 -03:00
James Almer 57879b23bc avcodec/evc_parse: zero sps, pps and sh structs
Otherwise stale values may remain in place.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-17 10:08:54 -03:00
James Almer da2af70ffa avcodec/evc_parser: export framerate to the AVCodecContext
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-17 10:08:53 -03:00
James Almer f42df8384a avcodec/evc_parse: use the correct struct size when allocating pps
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-16 10:08:32 -03:00
James Almer d00f0eebbd avcodec/evc_parser: remove superfluous memset calls
The entire EVCParserContext will be zeroed during allocation.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-16 09:57:35 -03:00
James Almer a734fa92c8 avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-16 09:57:35 -03:00
James Almer 81b4e4abb0 avformt/version: bump minor after evc muxer and demuxer additions
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-15 11:44:37 -03:00
James Almer 77c5c74375 avcodec/version: bump minor after evc parser and frame_merge bsf additions
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-15 11:44:04 -03:00
James Almer 20584cdd89 avformat/av1: reduce the scope of a variable
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-06 09:26:19 -03:00
James Almer a5e45988ac avformat/av1dec: don't return EIO when the input file is truncated
There was no problem reading the file, so EIO is not correct.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-06 09:26:19 -03:00
James Almer da61ed80fd avformat/av1dec: fix EOF check in Annex-B demuxer
And return any packet buffered by the bsf.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-06 09:26:19 -03:00
James Almer 4da14c302f avcodec/av1dec: reset the fragment on extradata reading failure
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-02 14:07:20 -03:00
James Almer 8c6b931f4c avcodec/av1dec: reset the fragment on reading failure
Fixes: NULL pointer dereference
Fixes: 59359/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AV1_fuzzer-6726080594313216

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-02 14:01:10 -03:00
James Almer da23151eaf avformat/oggparseflac: use the GetByteContext API
All but one read are byte aligned, so there's no point in using the
GetBitContext API.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-06-01 19:51:06 -03:00
James Almer 246bec23a9 avcodec/hevc_ps: remove a unused variable
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-28 23:24:51 -03:00
James Almer fe103ee61f avcodec/vulkan_dec: use PRId64 specifier for an int64_t
Fixes warnings on x86-32 and Windows.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-28 23:18:53 -03:00
James Almer e86e2d5921 fftools/ffmpeg_dec: abort if avcodec_send_packet() returns EAGAIN
As the comment in the code mentions, EAGAIN is not an expected value here
because we call avcodec_receive_frame() until all frames have been returned.
avcodec_send_packet() returning EAGAIN means a packet is still buffered, which
hints that the underlying decoder is buggy and not fetching packets as it
should.

An example of this behavior was in the libdav1d wrapper before f209614290,
where feeding it split frames (or individual OBUs) would result in the CLI
eventually printing the confusing "Error submitting packet to decoder: Resource
temporarily unavailable" error message, and just keep going until EOF without
returning new frames.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-26 19:47:54 -03:00
James Almer 97f4263457 avcodec/av1dec: convert to receive_frame()
This removes the overhead of inserting the av1_frame_split bsf as part of the
decoding process.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-25 11:21:35 -03:00
James Almer f209614290 avcodec/libdav1d: only return EAGAIN when there are no buffered packets
Fixes decoding packets containing split temporal units, as generated for example
by the av1_frame_split bsf.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-22 16:19:10 -03:00
James Almer b6066ceb8b fate/checkasm: add h264chroma test
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-20 18:26:13 -03:00
James Almer efdc6e8200 avformat/matroskaenc: remove accidental variable shadowing
Should fix use of uninitialized value in a failure path.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-20 09:28:46 -03:00
James Almer bd9d984c11 fate/demux: fix fate-cavs-demux
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-20 00:10:54 -03:00
James Almer d55743c809 avfilter/af_surround: replace double constants with float variants
This is cleaner than the approach in d1ded7310a.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-19 17:12:04 -03:00
James Almer 4d885271bb avutil/mathematics: add missing constants
Including float variants for all of them.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-19 17:10:58 -03:00
James Almer 1b05d27346 avcodec/libdav1d: export decoder frame delay
As this is an AV_CODEC_CAP_OTHER_THREADS decoder, threading is handled by the
underlying library. In this case, the frame delay is calculated by libdav1d
based on the values from avctx->thread_count and the private max_frame_delay
option.
Export said delay reported by the library in AVCodecContext.delay

Reviewed-by: Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-19 15:29:31 -03:00
James Almer a2a0a81184 avformat/yuvmpegenc: add support for rawvideo input
The demuxer exports rawvideo, so there's no reason for the muxer to only
work with wrapped_avframe.

Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-18 17:31:37 -03:00
James Almer 4adb6da7a6 avutil/frame: remove one layer of indirection in av_frame_replace()
And don't force copy side data.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-18 11:52:16 -03:00
James Almer 4f9799bd88 avcodec/h264_picture: use ff_thread_replace_frame()
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-18 10:52:30 -03:00
James Almer 3fe74c9017 avcodec/utils: add ff_thread_replace_frame()
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-18 10:16:03 -03:00
James Almer 01d444c077 avutil/frame: add av_frame_replace
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-18 10:15:59 -03:00
James Almer 63767b79a5 avutil/frame: deprecate palette_has_changed
Not only this is information that relies on the concept of a sequence of
frames, which is completely out of place as a field in AVFrame, but there are
no known or intended uses of this field.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-18 08:45:23 -03:00
James Almer 6759983bdc avcodec/cbs_av1: add valid range of values for num_units_in_decoding_tick
The spec states "num_units_in_decoding_tick shall be greater than 0".

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-14 17:09:38 -03:00
James Almer b446ea22e9 avfilter/formats: fix format negotiation when multiple channel_layouts are provided
For example
ffmpeg -f lavfi -i sine -af "aformat=cl=stereo|5.1|7.1,lowpass,aformat=cl=7.1|5.1|stereo" -f null -

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-13 18:21:29 -03:00
James Almer 8564b4ab05 avfilter/ccfifo: constify some parameters
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-12 22:33:16 -03:00
James Almer 7f890b2fbb avfilter/ccfifo: remove unnecessary context allocations
This is not public API, no it has no need for an alloc() and free()
functions. The struct can reside on stack.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-12 16:21:18 -03:00
James Almer 63d7ea38c7 fftools/ffprobe: print exported stream AVOptions
Similar to the decoder AVOptions, this is useful to show values from options
exported by the demuxer.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-08 11:04:37 -03:00
James Almer ed3691338b doc/examples/transcode_aac: use av_samples_alloc_array_and_samples to allocate the input samples buffer and pointers
Fixes -Wuse-after-free warnings and simplifies code.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-05 15:28:28 -03:00
James Almer 09b2ca93b4 avcodec/libdav1d: support parsing multiple ITU-T T.35 entries in a picture
This requires the newest libdav1d release.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-05 14:26:52 -03:00
James Almer 6febb2a5ff avfilter/vf_coreimage: add missing semicolon
Fixes compilation after af8db9106c.

Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 22:38:47 -03:00
James Almer 0fc9c1f682 avutil/version: bump minor after recent changes
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 19:20:06 -03:00
James Almer 3e06f6f040 avutil/frame: deprecate key_frame
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 19:20:03 -03:00
James Almer c7a8681860 fftools: use the new AVFrame keyframe flag
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 19:19:18 -03:00
James Almer af8db9106c avfilter: use the new AVFrame key_frame flag in all filters
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 19:19:13 -03:00
James Almer dc7bd7c5a5 avcodec: use the new AVFrame key_frame flag in all decoders and encoders
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 18:48:22 -03:00
James Almer cc11191fda avutil/frame: add a keyframe flag to AVFrame
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 18:16:47 -03:00
James Almer 599abc0f3a avutil/frame: deprecate interlaced_frame and top_field_first
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 18:15:00 -03:00
James Almer 3675dd0e0c fftools: use the new AVFrame interlace flags
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 18:15:00 -03:00
James Almer 36827ea783 avfilter: use the new AVFrame interlace flags in all filters
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 18:14:11 -03:00
James Almer 2f561ba953 avcodec: use the new AVFrame interlace flags in all decoders and encoders
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 18:14:02 -03:00
James Almer 2df4e054d4 avutil/frame: add new interlaced and top_field_first flags
Signed-off-by: James Almer <jamrial@gmail.com>
2023-05-04 17:40:24 -03:00