Exercise empty input and short streams around the decode delay without requiring hardware. Print results for FATE comparison, including the EOF state and timestamp difference.
Assisted-by: Fairy
The Broadcasting profile codes its macroblock layer with the arithmetic
coder of clause 8.4. This is the decoder only; its renormalization loops
end with the buffer, so truncated input terminates.
Signed-off-by: Rainbaby <r@bgr.jp>
The parsing logic for this already existed in libavcodec, but was unused
until now. This commit adds the APP2 extraction logic and the necessary
scaffolding to make this metadata survive the decoder.
Since the base layer of a JPEG Ultra HDR image also contains a stub
copy of the same gain map params struct, we ignore that one here. (It's
only useful for the demuxer, not the decoder)
Signed-off-by: Niklas Haas <git@haasn.dev>
Walk all the side data types: each one has to have a handle, which has to
find the type again and not be shared. The handles are compared with the
reference, so that a new type fails the test until it gets one and a
released handle cannot change unnoticed.
This is a new library, separate from the existing fdk-aac (but
built from the same upstream repo), for encoding xHE-AAC.
This library has the same traits as fdk-aac; it's being distributed
from Fraunhofer to Android Open Source Project, and further
repackaged and distributed through opencore-amr [1] (and in a
personal repo on github at [2]). It is distributed under the
same license as fdk-aac.
This is an initial, barebones wrapper around the library - not
all features of the library are hooked up currently.
In particular, do note that the wrapper currently only handles
loudness in the live operating mode (single pass), where encoding
is done with a single loudness level set before encoding. This may
affect the dynamics of the input.
The preferred and intended mode of use for the fdk-xhe-aac encoder
is for it to be used in two pass mode, which handles the loudness
properly. The two pass operation mode is not set up in the
encoder wrapper yet, but may be added later.
[1] https://sourceforge.net/projects/opencore-amr/
[2] https://github.com/mstorsjo/fdk-aac
Supports RawFormat 8, used by the S1II, S5II and GH6. Outputs the Bayer
mosaic, with the sensor borders as cropping and the black and white
levels as raw color params side data.
The as-shot white balance (tags 0x24 - 0x26) is exported as
AVRW2RawColorParams, and the TIFF and EXIF tags of IFD0 and its sub-IFDs
as EXIF side data, gathered during the single header walk and attached
without re-parsing. The orientation becomes a display matrix; Panasonic's
raw parameters, the previews and the strip pointers are left out.
The whole file is given as one packet.
Bit-exact with LibRaw on 801 S1II files, at 3x its speed per thread.
This is automatically emitted as an APP2 blob following the ISO 21496-1
specification. To ensure that writing the gain map will succeed, we validate
the paramaters when allocating space, and error out if invalid data is
encountered.
Signed-off-by: Niklas Haas <git@haasn.dev>
MPADecodeHeader is allocated by callers in other libraries, on the stack
among other places, so fields cannot be added to it. Add MPADecodeHeader2,
which holds every field of the header and which libavcodec itself
allocates, along with a packer turning it back into header bits.
A test program walks the frames of a file, checks that every header
encodes back to its original bits and prints the header fields.
Add the ASTC codec ID and descriptor together with encoder and decoder
wrappers for Arm's astc-encoder library. Support the four ASTC profiles,
2D and 3D block footprints, LDR RGB/RGBA input, and floating-point HDR
input without clamping the decoded result to 8-bit.
Keep the ASTC image dimensions and compressed block sizes bounded by the
format and packet limits, and pass KTX-provided color profile metadata to
the decoder when no explicit profile was selected.
libastcenc is distributed under the Apache License 2.0, so the library is
only available when FFmpeg is built with --enable-version3; list it with
the other libraries that require that option.
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
cover band boundaries, partial ranges and exponent limits
before changing the bit allocation code.
Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
AV_SAMPLE_FMT_DSD frames are already the bitstream, so the dsd_msbf
"encoder" is a plain copy of the samples into packets.
Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
It doesn't use any internals of lavc. Converting it to an API
test tool reduces disk usage for shared builds.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Decodes the LPCM variant found in DVD-Audio AOB streams. Unlike
DVD-Video LPCM it supports up to 192 kHz sample rates and splits
channels in two channel groups, which may use different quantization.
Samples are grouped in sets of 2 samples over all channels, with the
second channel group's data stored first within each set, as 16-bit
big-endian most significant parts followed by the remaining bits.
Based on information from expired US 6,580,671 patent et al.
Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Add CUARRAY hwaccel structs (ff_<codec>_nvdec_cuarray_hwaccel) and the
corresponding AV_PIX_FMT_CUARRAY entries in each decoder's pixel format
negotiation list. This allows decoders to advertise CUARRAY as a
supported hardware output format alongside AV_PIX_FMT_CUDA.
Codecs: H.264, HEVC, AV1, MPEG-1, MPEG-2, MPEG-4, VC-1, WMV3, VP8, VP9.
Signed-off-by: Diego de Souza <ddesouza@nvidia.com>
The original plan from commit d89fbfd4df
(merged on 2024-11-25) was to remove the encoders on the then next
major version bump (i.e. the bump to lavc 62, the current version)
and to disable the decoders by default on said bump. Both did not
happen; one deadline has already passed and the other is right upon us,
so just remove all sonic codecs now.
Note: Codec IDs and descriptors are kept.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
libcelt, which it depends on, was not updated in a very long time and is
considered deprecated, as Opus exists which has a CELT mode. Therefore
remove standalone CELT decoding support.
It was already broken since b8604a9761,
11 years ago, and no one noticed and complained.
Add a native encoder for the Playdate PDV format.
Supports monob (1-bit) video, producing zlib-compressed intra frames
and XOR-based delta frames.
Includes bounds checking, overflow guards, correct linesize handling
using ptrdiff_t, and proper buffer allocation ordering.
Mark the encoder as experimental by setting AV_CODEC_CAP_EXPERIMENTAL,
since it has not been validated against Panic's official Playdate
player or SDK.
It only tests MMX (me_cmp does not have pure MMX functions any more)
and MMXEXT and is therefore x86-only. Furthermore, checkasm is superior
in every regard.
Removing it also fixes a build failure (there is no dependency of this
tool on me_cmp).
Reviewed-by: Kacper Michajłow <kasper93@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This file is becoming too bloated and hard to read, so split it into separate
files, each having codec specific methods.
This will also speed up compilation when using several concurrent jobs.
Signed-off-by: James Almer <jamrial@gmail.com>