|
|
|
@ -147,18 +147,6 @@ AvifDecoder::~AvifDecoder() { |
|
|
|
|
|
|
|
|
|
size_t AvifDecoder::signatureLength() const { return kAvifSignatureSize; } |
|
|
|
|
|
|
|
|
|
bool AvifDecoder::checkSignature(const String &signature) const { |
|
|
|
|
avifDecoder *decoder = avifDecoderCreate(); |
|
|
|
|
if (!decoder) return false; |
|
|
|
|
avifDecoderSetIOMemory(decoder, |
|
|
|
|
reinterpret_cast<const uint8_t *>(signature.c_str()), |
|
|
|
|
signature.size()); |
|
|
|
|
decoder->io->sizeHint = 1e9; |
|
|
|
|
const avifResult status = avifDecoderParse(decoder); |
|
|
|
|
avifDecoderDestroy(decoder); |
|
|
|
|
return (status == AVIF_RESULT_OK || status == AVIF_RESULT_TRUNCATED_DATA); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define OPENCV_AVIF_CHECK_STATUS(X, ENCDEC) \ |
|
|
|
|
{ \
|
|
|
|
|
const avifResult status = (X); \
|
|
|
|
@ -170,6 +158,20 @@ bool AvifDecoder::checkSignature(const String &signature) const { |
|
|
|
|
} \
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool AvifDecoder::checkSignature(const String &signature) const { |
|
|
|
|
avifDecoder *decoder = avifDecoderCreate(); |
|
|
|
|
if (!decoder) return false; |
|
|
|
|
OPENCV_AVIF_CHECK_STATUS( |
|
|
|
|
avifDecoderSetIOMemory( |
|
|
|
|
decoder, reinterpret_cast<const uint8_t *>(signature.c_str()), |
|
|
|
|
signature.size()), |
|
|
|
|
decoder); |
|
|
|
|
decoder->io->sizeHint = 1e9; |
|
|
|
|
const avifResult status = avifDecoderParse(decoder); |
|
|
|
|
avifDecoderDestroy(decoder); |
|
|
|
|
return (status == AVIF_RESULT_OK || status == AVIF_RESULT_TRUNCATED_DATA); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ImageDecoder AvifDecoder::newDecoder() const { return makePtr<AvifDecoder>(); } |
|
|
|
|
|
|
|
|
|
bool AvifDecoder::readHeader() { |
|
|
|
|