Merge commit 'c02d4c1a98aef485be25228b33adb4ce357173e4' into release/1.1
* commit 'c02d4c1a98aef485be25228b33adb4ce357173e4': adpcm: Write the correct number of samples for ima-dk4 imc: Catch a division by zero atrac3: Error on impossible encoding/channel combinations atrac3: set the getbits context the right buffer_end atrac3: fix error handling qdm2: check and reset dithering index per channel qdm2: formatting cosmetics qdm2: use init_static_data westwood_vqa: do not free extradata on error in read_header vqavideo: check the version rmdec: Use the AVIOContext given as parameter in rm_read_metadata() avio: Handle AVERROR_EOF in the same way as the return value 0 Conflicts: libavcodec/adpcm.c libavcodec/qdm2.c libavcodec/vqavideo.c libavformat/rmdec.c libavformat/westwood_vqa.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -665,8 +665,8 @@ static int decode_channel_sound_unit(ATRAC3Context *q, GetBitContext *gb,
|
||||
|
||||
snd->num_components = decode_tonal_components(gb, snd->components,
|
||||
snd->bands_coded);
|
||||
if (snd->num_components == -1)
|
||||
return -1;
|
||||
if (snd->num_components < 0)
|
||||
return snd->num_components;
|
||||
|
||||
num_subbands = decode_spectrum(gb, snd->spectrum);
|
||||
|
||||
@@ -743,7 +743,7 @@ static int decode_frame(AVCodecContext *avctx, const uint8_t *databuf,
|
||||
|
||||
|
||||
/* set the bitstream reader at the start of the second Sound Unit*/
|
||||
init_get_bits(&q->gb, ptr1, avctx->block_align * 8);
|
||||
init_get_bits(&q->gb, ptr1, (avctx->block_align - i) * 8);
|
||||
|
||||
/* Fill the Weighting coeffs delay buffer */
|
||||
memmove(q->weighting_delay, &q->weighting_delay[2],
|
||||
@@ -952,9 +952,11 @@ static av_cold int atrac3_decode_init(AVCodecContext *avctx)
|
||||
|
||||
if (q->coding_mode == STEREO)
|
||||
av_log(avctx, AV_LOG_DEBUG, "Normal stereo detected.\n");
|
||||
else if (q->coding_mode == JOINT_STEREO)
|
||||
else if (q->coding_mode == JOINT_STEREO) {
|
||||
if (avctx->channels != 2)
|
||||
return AVERROR_INVALIDDATA;
|
||||
av_log(avctx, AV_LOG_DEBUG, "Joint stereo detected.\n");
|
||||
else {
|
||||
} else {
|
||||
av_log(avctx, AV_LOG_ERROR, "Unknown channel coding mode %x!\n",
|
||||
q->coding_mode);
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
@@ -451,6 +451,10 @@ static int bit_allocation(IMCContext *q, IMCChannel *chctx,
|
||||
iacc += chctx->bandWidthT[i];
|
||||
summa += chctx->bandWidthT[i] * chctx->flcoeffs4[i];
|
||||
}
|
||||
|
||||
if (!iacc)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
chctx->bandWidthT[BANDS - 1] = 0;
|
||||
summa = (summa * 0.5 - freebits) / iacc;
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -135,8 +135,15 @@ static av_cold int vqa_decode_init(AVCodecContext *avctx)
|
||||
|
||||
/* load up the VQA parameters from the header */
|
||||
s->vqa_version = s->avctx->extradata[0];
|
||||
if (s->vqa_version < 1 || s->vqa_version > 3) {
|
||||
av_log(s->avctx, AV_LOG_ERROR, "unsupported version %d\n", s->vqa_version);
|
||||
switch (s->vqa_version) {
|
||||
case 1:
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
av_log_missing_feature(avctx, "VQA Version 3", 0);
|
||||
return AVERROR_PATCHWELCOME;
|
||||
default:
|
||||
av_log_missing_feature(avctx, "VQA Version", 1);
|
||||
return AVERROR_PATCHWELCOME;
|
||||
}
|
||||
s->width = AV_RL16(&s->avctx->extradata[6]);
|
||||
|
@@ -280,7 +280,7 @@ static inline int retry_transfer_wrapper(URLContext *h, unsigned char *buf, int
|
||||
av_usleep(1000);
|
||||
}
|
||||
} else if (ret < 1)
|
||||
return ret < 0 ? ret : len;
|
||||
return (ret < 0 && ret != AVERROR_EOF) ? ret : len;
|
||||
if (ret)
|
||||
fast_retries = FFMAX(fast_retries, 2);
|
||||
len += ret;
|
||||
|
@@ -106,7 +106,6 @@ static int wsvqa_read_header(AVFormatContext *s)
|
||||
header = (unsigned char *)st->codec->extradata;
|
||||
if (avio_read(pb, st->codec->extradata, VQA_HEADER_SIZE) !=
|
||||
VQA_HEADER_SIZE) {
|
||||
av_free(st->codec->extradata);
|
||||
return AVERROR(EIO);
|
||||
}
|
||||
st->codec->width = AV_RL16(&header[6]);
|
||||
|
Reference in New Issue
Block a user