X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Flatmenc.c;h=9e85ee5672d65d3483b2a773a50a9c53e339fa7f;hb=3e1a7ae44a97f20bbc9da0eba000663ef74e1890;hp=8d67b5a615162828ad95b370d4ab81ec945a1f91;hpb=f1b5693027d48a9e448f21595fb9247893c225cf;p=ffmpeg diff --git a/libavformat/latmenc.c b/libavformat/latmenc.c index 8d67b5a6151..9e85ee5672d 100644 --- a/libavformat/latmenc.c +++ b/libavformat/latmenc.c @@ -25,6 +25,7 @@ #include "libavcodec/mpeg4audio.h" #include "libavutil/opt.h" #include "avformat.h" +#include "rawenc.h" typedef struct { int off; @@ -75,6 +76,9 @@ static int latm_write_header(AVFormatContext *s) 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; @@ -135,6 +139,9 @@ static int latm_write_packet(AVFormatContext *s, AVPacket *pkt) 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; @@ -180,7 +187,7 @@ AVOutputFormat ff_latm_muxer = { .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,