Commit 41572ac6 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit 'f3e04526'

* commit 'f3e04526':
  qdm2: Return meaningful error codes
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents d128794f f3e04526
...@@ -1646,7 +1646,7 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx) ...@@ -1646,7 +1646,7 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx)
if (!avctx->extradata || (avctx->extradata_size < 48)) { if (!avctx->extradata || (avctx->extradata_size < 48)) {
av_log(avctx, AV_LOG_ERROR, "extradata missing or truncated\n"); av_log(avctx, AV_LOG_ERROR, "extradata missing or truncated\n");
return -1; return AVERROR_INVALIDDATA;
} }
extradata = avctx->extradata; extradata = avctx->extradata;
...@@ -1662,18 +1662,18 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx) ...@@ -1662,18 +1662,18 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx)
if (extradata_size < 12) { if (extradata_size < 12) {
av_log(avctx, AV_LOG_ERROR, "not enough extradata (%i)\n", av_log(avctx, AV_LOG_ERROR, "not enough extradata (%i)\n",
extradata_size); extradata_size);
return -1; return AVERROR_INVALIDDATA;
} }
if (memcmp(extradata, "frmaQDM", 7)) { if (memcmp(extradata, "frmaQDM", 7)) {
av_log(avctx, AV_LOG_ERROR, "invalid headers, QDM? not found\n"); av_log(avctx, AV_LOG_ERROR, "invalid headers, QDM? not found\n");
return -1; return AVERROR_INVALIDDATA;
} }
if (extradata[7] == 'C') { if (extradata[7] == 'C') {
// s->is_qdmc = 1; // s->is_qdmc = 1;
av_log(avctx, AV_LOG_ERROR, "stream is QDMC version 1, which is not supported\n"); avpriv_report_missing_feature(avctx, "QDMC version 1");
return -1; return AVERROR_PATCHWELCOME;
} }
extradata += 8; extradata += 8;
...@@ -1684,14 +1684,14 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx) ...@@ -1684,14 +1684,14 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx)
if(size > extradata_size){ if(size > extradata_size){
av_log(avctx, AV_LOG_ERROR, "extradata size too small, %i < %i\n", av_log(avctx, AV_LOG_ERROR, "extradata size too small, %i < %i\n",
extradata_size, size); extradata_size, size);
return -1; return AVERROR_INVALIDDATA;
} }
extradata += 4; extradata += 4;
av_log(avctx, AV_LOG_DEBUG, "size: %d\n", size); av_log(avctx, AV_LOG_DEBUG, "size: %d\n", size);
if (AV_RB32(extradata) != MKBETAG('Q','D','C','A')) { if (AV_RB32(extradata) != MKBETAG('Q','D','C','A')) {
av_log(avctx, AV_LOG_ERROR, "invalid extradata, expecting QDCA\n"); av_log(avctx, AV_LOG_ERROR, "invalid extradata, expecting QDCA\n");
return -1; return AVERROR_INVALIDDATA;
} }
extradata += 8; extradata += 8;
...@@ -1760,8 +1760,8 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx) ...@@ -1760,8 +1760,8 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx)
// Fail on unknown fft order // Fail on unknown fft order
if ((s->fft_order < 7) || (s->fft_order > 9)) { if ((s->fft_order < 7) || (s->fft_order > 9)) {
av_log(avctx, AV_LOG_ERROR, "Unknown FFT order (%d), contact the developers!\n", s->fft_order); avpriv_request_sample(avctx, "Unknown FFT order %d", s->fft_order);
return -1; return AVERROR_PATCHWELCOME;
} }
if (s->fft_size != (1 << (s->fft_order - 1))) { if (s->fft_size != (1 << (s->fft_order - 1))) {
av_log(avctx, AV_LOG_ERROR, "FFT size %d not power of 2.\n", s->fft_size); av_log(avctx, AV_LOG_ERROR, "FFT size %d not power of 2.\n", s->fft_size);
...@@ -1869,8 +1869,8 @@ static int qdm2_decode_frame(AVCodecContext *avctx, void *data, ...@@ -1869,8 +1869,8 @@ static int qdm2_decode_frame(AVCodecContext *avctx, void *data,
out = (int16_t *)frame->data[0]; out = (int16_t *)frame->data[0];
for (i = 0; i < 16; i++) { for (i = 0; i < 16; i++) {
if (qdm2_decode(s, buf, out) < 0) if ((ret = qdm2_decode(s, buf, out)) < 0)
return -1; return ret;
out += s->channels * s->frame_size; out += s->channels * s->frame_size;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment