Commit a736eb4a authored by Reimar Döffinger's avatar Reimar Döffinger

latmenc: Fix ALS in LATM.

"Fix" in so far as at least it will no longer overread and possibly
crash and makes somewhat sense, but no idea whether there is anything
that can play the resulting files (FFmpeg can't).
Signed-off-by: 's avatarReimar Döffinger <Reimar.Doeffinger@gmx.de>
parent fa8a6385
......@@ -57,6 +57,11 @@ static int latm_decode_extradata(LATMContext *ctx, uint8_t *buf, int size)
if (ctx->off < 0)
return ctx->off;
if (ctx->object_type == AOT_ALS && (ctx->off & 7)) {
// as long as avpriv_mpeg4audio_get_config works correctly this is impossible
av_log(ctx, AV_LOG_ERROR, "BUG: ALS offset is not byte-aligned\n");
return AVERROR_INVALIDDATA;
}
/* FIXME: are any formats not allowed in LATM? */
if (m4ac.object_type > AOT_SBR && m4ac.object_type != AOT_ALS) {
......@@ -106,8 +111,8 @@ static void latm_write_frame_header(AVFormatContext *s, PutBitContext *bs)
/* AudioSpecificConfig */
if (ctx->object_type == AOT_ALS) {
header_size = avctx->extradata_size-(ctx->off + 7) >> 3;
avpriv_copy_bits(bs, &avctx->extradata[ctx->off], header_size);
header_size = avctx->extradata_size-(ctx->off >> 3);
avpriv_copy_bits(bs, &avctx->extradata[ctx->off >> 3], header_size);
} else {
avpriv_copy_bits(bs, avctx->extradata, ctx->off + 3);
......
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