X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fadtsenc.c;h=3c2840c6abefb7cebaf631665ad24afebc56f4ee;hb=a92ca3c07c89855d46c801ef05428b5d86a1b30c;hp=a24f99c4479ea86cf491769485e73065719a6084;hpb=6727cfea5e416c32591563a6e91936629ae16185;p=ffmpeg diff --git a/libavformat/adtsenc.c b/libavformat/adtsenc.c index a24f99c4479..3c2840c6abe 100644 --- a/libavformat/adtsenc.c +++ b/libavformat/adtsenc.c @@ -94,13 +94,15 @@ static int adts_decode_extradata(AVFormatContext *s, ADTSContext *adts, const ui return 0; } -static int adts_write_header(AVFormatContext *s) +static int adts_init(AVFormatContext *s) { ADTSContext *adts = s->priv_data; AVCodecParameters *par = s->streams[0]->codecpar; - if (adts->id3v2tag) - ff_id3v2_write_simple(s, 4, ID3v2_DEFAULT_MAGIC); + if (par->codec_id != AV_CODEC_ID_AAC) { + av_log(s, AV_LOG_ERROR, "Only AAC streams can be muxed by the ADTS muxer\n"); + return AVERROR(EINVAL); + } if (par->extradata_size > 0) return adts_decode_extradata(s, adts, par->extradata, par->extradata_size); @@ -108,6 +110,16 @@ static int adts_write_header(AVFormatContext *s) return 0; } +static int adts_write_header(AVFormatContext *s) +{ + ADTSContext *adts = s->priv_data; + + if (adts->id3v2tag) + ff_id3v2_write_simple(s, 4, ID3v2_DEFAULT_MAGIC); + + return 0; +} + static int adts_write_frame_header(ADTSContext *ctx, uint8_t *buf, int size, int pce_size) { @@ -220,6 +232,7 @@ AVOutputFormat ff_adts_muxer = { .priv_data_size = sizeof(ADTSContext), .audio_codec = AV_CODEC_ID_AAC, .video_codec = AV_CODEC_ID_NONE, + .init = adts_init, .write_header = adts_write_header, .write_packet = adts_write_packet, .write_trailer = adts_write_trailer,