#include "libavcodec/mpeg4audio.h"
#include "libavutil/opt.h"
#include "avformat.h"
+#include "rawenc.h"
typedef struct {
AVClass *av_class;
static const AVOption options[] = {
{"smc-interval", "StreamMuxConfig interval.",
- offsetof(LATMContext, mod), FF_OPT_TYPE_INT, {.dbl = 0x0014}, 0x0001, 0xffff, AV_OPT_FLAG_ENCODING_PARAM},
+ offsetof(LATMContext, mod), AV_OPT_TYPE_INT, {.dbl = 0x0014}, 0x0001, 0xffff, AV_OPT_FLAG_ENCODING_PARAM},
{NULL},
};
MPEG4AudioConfig m4ac;
init_get_bits(&gb, buf, size * 8);
- ctx->off = ff_mpeg4audio_get_config(&m4ac, buf, size);
+ ctx->off = avpriv_mpeg4audio_get_config(&m4ac, buf, size * 8, 1);
if (ctx->off < 0)
return ctx->off;
skip_bits_long(&gb, ctx->off);
LATMContext *ctx = s->priv_data;
AVCodecContext *avctx = s->streams[0]->codec;
+ if (avctx->codec_id == CODEC_ID_AAC_LATM)
+ return 0;
+
if (avctx->extradata_size > 0 &&
latm_decode_extradata(ctx, avctx->extradata, avctx->extradata_size) < 0)
return AVERROR_INVALIDDATA;
/* AudioSpecificConfig */
if (ctx->object_type == AOT_ALS) {
header_size = avctx->extradata_size-(ctx->off + 7) >> 3;
- ff_copy_bits(bs, &avctx->extradata[ctx->off], header_size);
+ avpriv_copy_bits(bs, &avctx->extradata[ctx->off], header_size);
} else {
- ff_copy_bits(bs, avctx->extradata, ctx->off + 3);
+ avpriv_copy_bits(bs, avctx->extradata, ctx->off + 3);
if (!ctx->channel_conf) {
- ff_copy_pce_data(bs, &gb);
+ avpriv_copy_pce_data(bs, &gb);
}
}
uint8_t loas_header[] = "\x56\xe0\x00";
uint8_t *buf;
+ if (s->streams[0]->codec->codec_id == CODEC_ID_AAC_LATM)
+ return ff_raw_write_packet(s, pkt);
+
if (pkt->size > 2 && pkt->data[0] == 0xff && (pkt->data[1] >> 4) == 0xf) {
av_log(s, AV_LOG_ERROR, "ADTS header detected - ADTS will not be incorrectly muxed into LATM\n");
return AVERROR_INVALIDDATA;
for (i = 0; i < pkt->size; i++)
put_bits(&bs, 8, pkt->data[i]);
- align_put_bits(&bs);
+ avpriv_align_put_bits(&bs);
flush_put_bits(&bs);
len = put_bits_count(&bs) >> 3;
.name = "latm",
.long_name = NULL_IF_CONFIG_SMALL("LOAS/LATM"),
.mime_type = "audio/MP4A-LATM",
- .extensions = "latm",
+ .extensions = "latm,loas",
.priv_data_size = sizeof(LATMContext),
.audio_codec = CODEC_ID_AAC,
.video_codec = CODEC_ID_NONE,