aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/libfdk-aacdec.c
Commit message (Collapse)AuthorAgeFilesLines
* avcodec/libfdk-aacdec: set keyframe flag and profile in output framesJames Almer2024-11-241-2/+5
| | | | | | | Don't depend on the generic code setting this. This is in preparation for a following change. Signed-off-by: James Almer <jamrial@gmail.com>
* avutil/common: Don't auto-include mem.hAndreas Rheinhardt2024-03-311-0/+1
| | | | | | | | | | | 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>
* avutil: remove deprecated FF_API_OLD_CHANNEL_LAYOUTJames Almer2024-03-071-8/+0
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* all: use designated initializers for AVOption.unitAnton Khirnov2024-02-141-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | Makes it robust against adding fields before it, which will be useful in following commits. Majority of the patch generated by the following Coccinelle script: @@ typedef AVOption; identifier arr_name; initializer list il; initializer list[8] il1; expression tail; @@ AVOption arr_name[] = { il, { il1, - tail + .unit = tail }, ... }; with some manual changes, as the script: * has trouble with options defined inside macros * sometimes does not handle options under an #else branch * sometimes swallows whitespace
* Revert "all: Don't set AVClass.item_name to its default value"Anton Khirnov2024-01-201-0/+1
| | | | | | | Some callers assume that item_name is always set, so this may be considered an API break. This reverts commit 0c6203c97a99f69dbaa6e4011d48c331e1111f5e.
* all: Don't set AVClass.item_name to its default valueAndreas Rheinhardt2023-12-221-1/+0
| | | | | | | | Unnecessary since acf63d5350adeae551d412db699f8ca03f7e76b9; also avoids relocations. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/codec_internal: Add macro to set AVCodec.long_nameAndreas Rheinhardt2022-09-031-1/+1
| | | | | | | | It reduces typing: Before this patch, there were 105 codecs whose long_name-definition exceeded the 80 char line length limit. Now there are only nine of them. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/internal: Move ff_get_buffer() to decode.hAndreas Rheinhardt2022-08-271-1/+1
| | | | | | | | | Only used by decoders (encoders have ff_encode_alloc_frame()). Also clean up the other headers a bit while removing now redundant internal.h inclusions. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec: Make init-threadsafety the defaultAndreas Rheinhardt2022-07-181-2/+1
| | | | | | | | | | | and remove FF_CODEC_CAP_INIT_THREADSAFE All our native codecs are already init-threadsafe (only wrappers for external libraries and hwaccels are typically not marked as init-threadsafe yet), so it is only natural for this to also be the default state. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/codec_internal: Use union for FFCodec decode/encode callbacksAndreas Rheinhardt2022-04-051-1/+1
| | | | | | | | | | | This is possible, because every given FFCodec has to implement exactly one of these. Doing so decreases sizeof(FFCodec) and therefore decreases the size of the binary. Notice that in case of position-independent code the decrease is in .data.rel.ro, so that this translates to decreased memory consumption. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/codec_internal: Make FFCodec.decode use AVFrame*Andreas Rheinhardt2022-04-051-2/+1
| | | | | | | | This increases type-safety by avoiding conversions from/through void*. It also avoids the boilerplate "AVFrame *frame = data;" line for non-subtitle decoders. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/codec_internal: Add FFCodec, hide internal part of AVCodecAndreas Rheinhardt2022-03-211-8/+8
| | | | | | | | | | | | | | | | Up until now, codec.h contains both public and private parts of AVCodec. This exposes the internals of AVCodec to users and leads them into the temptation of actually using them and forces us to forward-declare structures and types that users can't use at all. This commit changes this by adding a new structure FFCodec to codec_internal.h that extends AVCodec, i.e. contains the public AVCodec as first member; the private fields of AVCodec are moved to this structure, leaving codec.h clean. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/internal: Move FF_CODEC_CAP_* to a new header codec_internal.hAndreas Rheinhardt2022-03-211-0/+1
| | | | | | | | | | Also move FF_CODEC_TAGS_END as well as struct AVCodecDefault. This reduces the amount of files that have to include internal.h (which comes with quite a lot of indirect inclusions), as e.g. most encoders don't need it. It is furthemore in preparation for moving the private part of AVCodec out of the public codec.h. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* libfdk-aac: convert to new channel layout APIVittorio Giovara2022-03-151-13/+21
| | | | | Signed-off-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: James Almer <jamrial@gmail.com>
* libfdk-aacdec: Flush delayed samples at the endMartin Storsjö2022-02-031-15/+65
| | | | | | | | | | | | | | The fdk-aac decoder can return decoded audio data with a delay. (Whether it does this or not depends on the options set; by default it does add some delay.) Previously, this delay was handled by adjusting the timestamps of the decoded frames, but the last delayed samples weren't returned. Set the AV_CODEC_CAP_DELAY flag to indicate that the caller should flush remaining samples at the end. Also trim off the corresponding amount of samples at the start instead of adjusting timestamps. Signed-off-by: Martin Storsjö <martin@martin.st>
* libfdk-aacdec: Add an option for setting the decoder's DRC album modeMartin Storsjö2022-02-031-0/+14
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* avcodec: Constify AVCodecsAndreas Rheinhardt2021-04-271-1/+1
| | | | | | | | | | Given that the AVCodec.next pointer has now been removed, most of the AVCodecs are not modified at all any more and can therefore be made const (as this patch does); the only exceptions are the very few codecs for external libraries that have a init_static_data callback. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* libfdk-aacdec: Allow explicitly disabling the DRC reference level optionMartin Storsjö2020-02-111-2/+8
| | | | | | | | | Previously, it was always left in the automatic mode, if the option was set to the only special (negative) value. Now there's two separate special values for this option, -1 for automatic (metadata based) and -2 for explicitly disabled. Signed-off-by: Martin Storsjö <martin@martin.st>
* libfdk-aacdec: Use the decoder's default level limiter settingsMartin Storsjö2020-02-111-1/+3
| | | | | | | | It was disabled by default in 2dbd35b00c6433e587d5f44d5dbc8972ebbaa88e as it added delay, but now we compensate for the delay properly by offsetting timestamps. Signed-off-by: Martin Storsjö <martin@martin.st>
* libfdk-aacdec: Apply the decoder's output delay on timestampsMartin Storsjö2020-02-111-0/+9
| | | | | | | The delay is normally zero when the level limiter is disabled, but if enabled, there's a small delay. Signed-off-by: Martin Storsjö <martin@martin.st>
* Merge commit '2a9e1c122eed66be1b26b747342b848300b226c7'James Almer2018-09-131-3/+6
|\ | | | | | | | | | | | | * commit '2a9e1c122eed66be1b26b747342b848300b226c7': libfdk-aac: Don't use defined() in a #define Merged-by: James Almer <jamrial@gmail.com>
| * libfdk-aac: Don't use defined() in a #defineMartin Storsjö2018-09-131-3/+6
| | | | | | | | | | | | | | | | | | | | | | MSVC expands the preprocessor directives differently, making the version check fail in the previous form. Clang can warn about this with -Wexpansion-to-defined (not currently enabled by default): warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined] Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '2edaafe5b93832715781851dfe2663da228a05ad'James Almer2018-09-111-0/+14
|\| | | | | | | | | | | | | * commit '2edaafe5b93832715781851dfe2663da228a05ad': libfdk-aacdec: Allow setting the new dynamic range control effect setting Merged-by: James Almer <jamrial@gmail.com>
| * libfdk-aacdec: Allow setting the new dynamic range control effect settingMartin Storsjö2018-09-051-0/+14
| | | | | | | | | | | | This is a new setting in FDK v2. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'ffb9b7a6bab6c6bfd3dd9a7c32e3724209824999'James Almer2018-09-111-5/+8
|\| | | | | | | | | | | | | * commit 'ffb9b7a6bab6c6bfd3dd9a7c32e3724209824999': libfdk-aac: Consistently use a proper version check macro for detecting features Merged-by: James Almer <jamrial@gmail.com>
| * libfdk-aac: Consistently use a proper version check macro for detecting featuresMartin Storsjö2018-09-051-5/+8
| | | | | | | | | | | | | | | | | | | | The previous version checks checked explicitly for the version where the version define was added to the installed headers, making an "#ifdef AACDECODER_LIB_VL0" enough. Now that we have a need for more diverse version checks than this, convert all checks to such checks. Signed-off-by: Martin Storsjö <martin@martin.st>
| * avcodec: add metadata to identify wrappers and hardware decoderswm42017-12-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Explicitly identify decoder/encoder wrappers with a common name. This saves API users from guessing by the name suffix. For example, they don't have to guess that "h264_qsv" is the h264 QSV implementation, and instead they can just check the AVCodec .codec and .wrapper_name fields. Explicitly mark AVCodec entries that are hardware decoders or most likely hardware decoders with new AV_CODEC_CAPs. The purpose is allowing API users listing hardware decoders in a more generic way. The proposed AVCodecHWConfig does not provide this information fully, because it's concerned with decoder configuration, not information about the fact whether the hardware is used or not. AV_CODEC_CAP_HYBRID exists specifically for QSV, which can have software implementations in case the hardware is not capable. Based on a patch by Philip Langdale <philipl@overt.org>. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
| * libfdk-aacdec: Correct buffer_size parameterMichael Niedermayer2017-06-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The timeDataSize argument to aacDecoder_DecodeFrame() seems undocumented and until 2016 04 (203e3f28fbebec7011342017fafc2a0bda0ce530) unused. After that commit libfdk-aacdec interprets it as size in sample units and memsets that on error. FFmpeg as well as others (like GStreamer) did interpret it as size in bytes. Fixes: 1442/clusterfuzz-testcase-minimized-4540199973421056 (This requires recent libfdk to reproduce) Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Martin Storsjö <martin@martin.st>
* | avcodec: add metadata to identify wrappers and hardware decoderswm42017-12-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Explicitly identify decoder/encoder wrappers with a common name. This saves API users from guessing by the name suffix. For example, they don't have to guess that "h264_qsv" is the h264 QSV implementation, and instead they can just check the AVCodec .codec and .wrapper_name fields. Explicitly mark AVCodec entries that are hardware decoders or most likely hardware decoders with new AV_CODEC_CAPs. The purpose is allowing API users listing hardware decoders in a more generic way. The proposed AVCodecHWConfig does not provide this information fully, because it's concerned with decoder configuration, not information about the fact whether the hardware is used or not. AV_CODEC_CAP_HYBRID exists specifically for QSV, which can have software implementations in case the hardware is not capable. Based on a patch by Philip Langdale <philipl@overt.org>. Merges Libav commit 47687a2f8aca3f65b6fdd117b1cb66a7409a7fd1.
* | Merge commit '97cfe1d8bd1968143e2ba9aa46ebe9504a835e24'James Almer2017-11-011-1/+4
|\| | | | | | | | | | | | | * commit '97cfe1d8bd1968143e2ba9aa46ebe9504a835e24': Convert all AVClass struct declarations to designated initializers. Merged-by: James Almer <jamrial@gmail.com>
| * Convert all AVClass struct declarations to designated initializers.Diego Biurrun2017-06-121-1/+4
| |
| * libfdk-aacdec: Remove unused variableVittorio Giovara2015-08-311-1/+0
| |
* | avcodec/libfdk-aacdec: Correct buffer_size parameterMichael Niedermayer2017-05-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | the timeDataSize argument to aacDecoder_DecodeFrame() seems undocumented and until 2016 04 (203e3f28fbebec7011342017fafc2a0bda0ce530) unused. after that commit libfdk-aacdec interprets it as size in sample units and memsets that on error. FFmpeg as well as others (like GStreamer) did interpret it as size in bytes Fixes: 1442/clusterfuzz-testcase-minimized-4540199973421056 (This requires recent libfdk to reproduce) Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | avcodec/libfdk-aacdec: Remove unused variableMichael Niedermayer2015-09-041-1/+0
| | | | | | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | Merge commit 'f34b152eb7b7e8d2aee57c710a072cf74173fbe1'Hendrik Leppkes2015-08-181-11/+6
|\| | | | | | | | | | | | | * commit 'f34b152eb7b7e8d2aee57c710a072cf74173fbe1': libfdk-aacdec: Clean up properly if the init fails Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * libfdk-aacdec: Clean up properly if the init failsMartin Storsjö2015-08-161-11/+6
| | | | | | | | | | | | | | | | | | Previously most of the error paths leaked. Also add FF_CODEC_CAP_INIT_THREADSAFE while adding caps_internal; this decoder wrapper doesn't have any static data that is initialized. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '1b90433f79de857550d4d8c35c89fbe954920594'Hendrik Leppkes2015-08-181-46/+17
|\| | | | | | | | | | | | | | | | | | | * commit '1b90433f79de857550d4d8c35c89fbe954920594': libfdk-aacdec: Always decode into an intermediate buffer Conflicts: libavcodec/libfdk-aacdec.c Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * libfdk-aacdec: Always decode into an intermediate bufferMartin Storsjö2015-08-161-50/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For ADTS streams, the output format (number of channels, frame size) can change at any point (with the latest version of fdk-aac, the decoder seems to change format after a handful of frames, not outputting the right format immediately, for cases that worked fine with the earlier version of the lib). Previously, the decoder decoded straight into the output frame once the number of channels and frame size was known. This obviously does not work if the number of channels or frame size changes. The alternative would be to allocate the AVFrame with the maximum number of channels and frame size, and change them afterward decoding into it, but that may cause confusion to users e.g. of the get_buffer callback. This solution should be more robust. CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '87de6ddb7b7674e329d5c96677bd8685bc7f7855'Hendrik Leppkes2015-08-181-1/+1
|\| | | | | | | | | | | | | * commit '87de6ddb7b7674e329d5c96677bd8685bc7f7855': libfdk-aacdec: Bump the max number of channels to 8 Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * libfdk-aacdec: Bump the max number of channels to 8Martin Storsjö2015-08-161-1/+1
| | | | | | | | | | | | | | | | | | In the latest version of fdk-aac, the decoder can output up to 8 channels; take this into account when preallocating buffers that need to fit the output from any packet. CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'def97856de6021965db86c25a732d78689bd6bb0'Michael Niedermayer2015-07-271-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'def97856de6021965db86c25a732d78689bd6bb0': lavc: AV-prefix all codec capabilities Conflicts: cmdutils.c ffmpeg.c ffplay.c libavcodec/8svx.c libavcodec/aacenc.c libavcodec/ac3dec.c libavcodec/adpcm.c libavcodec/alac.c libavcodec/atrac3plusdec.c libavcodec/bink.c libavcodec/dnxhddec.c libavcodec/dvdec.c libavcodec/dvenc.c libavcodec/ffv1dec.c libavcodec/ffv1enc.c libavcodec/fic.c libavcodec/flacdec.c libavcodec/flacenc.c libavcodec/flvdec.c libavcodec/fraps.c libavcodec/frwu.c libavcodec/gifdec.c libavcodec/h261dec.c libavcodec/hevc.c libavcodec/iff.c libavcodec/imc.c libavcodec/libopenjpegdec.c libavcodec/libvo-aacenc.c libavcodec/libvorbisenc.c libavcodec/libvpxdec.c libavcodec/libvpxenc.c libavcodec/libx264.c libavcodec/mjpegbdec.c libavcodec/mjpegdec.c libavcodec/mpegaudiodec_float.c libavcodec/msmpeg4dec.c libavcodec/mxpegdec.c libavcodec/nvenc_h264.c libavcodec/nvenc_hevc.c libavcodec/pngdec.c libavcodec/qpeg.c libavcodec/ra288.c libavcodec/rv10.c libavcodec/s302m.c libavcodec/sp5xdec.c libavcodec/takdec.c libavcodec/tiff.c libavcodec/tta.c libavcodec/utils.c libavcodec/v210dec.c libavcodec/vp6.c libavcodec/vp9.c libavcodec/wavpack.c libavcodec/yop.c Merged-by: Michael Niedermayer <michael@niedermayer.cc>
| * lavc: AV-prefix all codec capabilitiesVittorio Giovara2015-07-271-1/+1
| | | | | | | | | | | | Express bitfields more simply. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | avcodec/libfdk-aacdec: Change conceal_method to int, its accessed via ↵Michael Niedermayer2015-03-021-1/+1
| | | | | | | | | | | | | | | | AVOption as int This fixes depending on implementation defined behavior Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '2dbd35b00c6433e587d5f44d5dbc8972ebbaa88e'Michael Niedermayer2015-01-081-0/+11
|\| | | | | | | | | | | | | * commit '2dbd35b00c6433e587d5f44d5dbc8972ebbaa88e': libfdk-aacdec: Make sure decoding doesn't add any extra delay in the latest version of fdk-aac Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * libfdk-aacdec: Make sure decoding doesn't add any extra delay in the latest ↵Martin Storsjö2015-01-081-0/+11
| | | | | | | | | | | | | | | | | | | | | | version of fdk-aac The latest version added support for a new option for enabling a signal level limiter, which adds some extra delay. In fdk-aac, this is enabled by default, but disable it by default here since we'd rather have zero-delay decoding. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'c7921a480467876ece06566e0efd8f6bce9d1903'Michael Niedermayer2014-12-111-1/+1
|\| | | | | | | | | | | | | * commit 'c7921a480467876ece06566e0efd8f6bce9d1903': libfdk-aacdec: Fix a boundary check Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * libfdk-aacdec: Fix a boundary checkMartin Storsjö2014-12-101-1/+1
| | | | | | | | | | | | | | | | | | This avoids potential out of bounds writes, with potential future versions of the library. Bug-Id: CID 1254945 CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
| * libfdk-aacdec: Support building with the latest version of fdk-aacMartin Storsjö2014-11-101-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The latest fdk-aac code drop (from android 5.0) changed the channel layout enums (changing the value of existing enum constants), and renamed the option for downmixing. The failsafe comparison between ctype and FF_ARRAY_ELEMS(channel_counts) can trigger warnings (-Wtautological-constant-out-of-range-compare) when building with the old FDK AAC releases, where it can't be out of range with the enum values used there. CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
* | libfdk-aacdec: Support building with the latest version of fdk-aacMartin Storsjö2014-11-101-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | The latest fdk-aac code drop (from android 5.0) changed the channel layout enums (changing the value of existing enum constants), and renamed the option for downmixing. The failsafe comparison between ctype and FF_ARRAY_ELEMS(channel_counts) can trigger warnings (-Wtautological-constant-out-of-range-compare) when building with the old FDK AAC releases, where it can't be out of range with the enum values used there. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '66e9f839536238945fbfe9d2041b6891cb150e45'Michael Niedermayer2014-10-171-0/+40
|\| | | | | | | | | | | | | | | | | | | * commit '66e9f839536238945fbfe9d2041b6891cb150e45': libfdk-aacdec: Enable Dynamic Range Control Metadata Support Conflicts: libavcodec/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>