|
|
|
@@ -121,6 +121,9 @@ static int dv_extract_audio(uint8_t* frame, uint8_t* ppcm[4], |
|
|
|
if (quant > 1) |
|
|
|
return -1; /* unsupported quantization */ |
|
|
|
|
|
|
|
if (freq >= FF_ARRAY_ELEMS(dv_audio_frequency)) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
|
|
|
size = (sys->audio_min_samples[freq] + smpls) * 4; /* 2ch, 2bytes */ |
|
|
|
half_ch = sys->difseg_size / 2; |
|
|
|
|
|
|
|
@@ -203,6 +206,12 @@ static int dv_extract_audio_info(DVDemuxContext* c, uint8_t* frame) |
|
|
|
stype = (as_pack[3] & 0x1f); /* 0 - 2CH, 2 - 4CH, 3 - 8CH */ |
|
|
|
quant = as_pack[4] & 0x07; /* 0 - 16bit linear, 1 - 12bit nonlinear */ |
|
|
|
|
|
|
|
if (freq >= FF_ARRAY_ELEMS(dv_audio_frequency)) { |
|
|
|
av_log(c->fctx, AV_LOG_ERROR, |
|
|
|
"Unrecognized audio sample rate index (%d)\n", freq); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
if (stype > 3) { |
|
|
|
av_log(c->fctx, AV_LOG_ERROR, "stype %d is invalid\n", stype); |
|
|
|
c->ach = 0; |
|
|
|
|