*/
#define BITSTREAM_READER_LE
-//#define DEBUG
#include <limits.h>
#include "avcodec.h"
#include "get_bits.h"
return -1;
}
if (s->format == FORMAT_ENCRYPTED) {
- av_log_missing_feature(s->avctx, "Encrypted TTA", 0);
+ avpriv_report_missing_feature(s->avctx, "Encrypted TTA");
return AVERROR_PATCHWELCOME;
}
avctx->channels = s->channels = get_bits(&s->gb, 16);
avctx->extradata_size - 26 < total_frames * 4)
av_log(avctx, AV_LOG_WARNING, "Seek table missing or too small\n");
else if (avctx->err_recognition & AV_EF_CRCCHECK) {
- if (tta_check_crc(s, avctx->extradata + 22, total_frames * 4))
+ int ret = tta_check_crc(s, avctx->extradata + 22, total_frames * 4);
+ if (ret < 0 && avctx->err_recognition & AV_EF_EXPLODE)
return AVERROR_INVALIDDATA;
}
skip_bits_long(&s->gb, 32 * total_frames);
int32_t *p;
if (avctx->err_recognition & AV_EF_CRCCHECK) {
- if (buf_size < 4 || tta_check_crc(s, buf, buf_size - 4))
+ if (buf_size < 4 ||
+ (tta_check_crc(s, buf, buf_size - 4) && avctx->err_recognition & AV_EF_EXPLODE))
return AVERROR_INVALIDDATA;
}
AVCodec ff_tta_decoder = {
.name = "tta",
+ .long_name = NULL_IF_CONFIG_SMALL("TTA (True Audio)"),
.type = AVMEDIA_TYPE_AUDIO,
.id = AV_CODEC_ID_TTA,
.priv_data_size = sizeof(TTAContext),
.close = tta_decode_close,
.decode = tta_decode_frame,
.capabilities = CODEC_CAP_DR1,
- .long_name = NULL_IF_CONFIG_SMALL("TTA (True Audio)"),
};