Commit c3bbd0b5 authored by Ronald S. Bultje's avatar Ronald S. Bultje

alac: convert extradata reading to bytestream2.

parent 62ce9def
...@@ -571,29 +571,30 @@ buf_alloc_fail: ...@@ -571,29 +571,30 @@ buf_alloc_fail:
static int alac_set_info(ALACContext *alac) static int alac_set_info(ALACContext *alac)
{ {
const unsigned char *ptr = alac->avctx->extradata; GetByteContext gb;
ptr += 4; /* size */ bytestream2_init(&gb, alac->avctx->extradata,
ptr += 4; /* alac */ alac->avctx->extradata_size);
ptr += 4; /* version */
if(AV_RB32(ptr) >= UINT_MAX/4){ bytestream2_skipu(&gb, 12); // size:4, alac:4, version:4
av_log(alac->avctx, AV_LOG_ERROR, "setinfo_max_samples_per_frame too large\n");
return -1;
}
/* buffer size / 2 ? */ /* buffer size / 2 ? */
alac->setinfo_max_samples_per_frame = bytestream_get_be32(&ptr); alac->setinfo_max_samples_per_frame = bytestream2_get_be32u(&gb);
ptr++; /* compatible version */ if (alac->setinfo_max_samples_per_frame >= UINT_MAX/4){
alac->setinfo_sample_size = *ptr++; av_log(alac->avctx, AV_LOG_ERROR,
alac->setinfo_rice_historymult = *ptr++; "setinfo_max_samples_per_frame too large\n");
alac->setinfo_rice_initialhistory = *ptr++; return AVERROR_INVALIDDATA;
alac->setinfo_rice_kmodifier = *ptr++; }
alac->numchannels = *ptr++; bytestream2_skipu(&gb, 1); // compatible version
bytestream_get_be16(&ptr); /* maxRun */ alac->setinfo_sample_size = bytestream2_get_byteu(&gb);
bytestream_get_be32(&ptr); /* max coded frame size */ alac->setinfo_rice_historymult = bytestream2_get_byteu(&gb);
bytestream_get_be32(&ptr); /* average bitrate */ alac->setinfo_rice_initialhistory = bytestream2_get_byteu(&gb);
bytestream_get_be32(&ptr); /* samplerate */ alac->setinfo_rice_kmodifier = bytestream2_get_byteu(&gb);
alac->numchannels = bytestream2_get_byteu(&gb);
bytestream2_get_be16u(&gb); // maxRun
bytestream2_get_be32u(&gb); // max coded frame size
bytestream2_get_be32u(&gb); // average bitrate
bytestream2_get_be32u(&gb); // samplerate
return 0; return 0;
} }
......
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