X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fadtsenc.c;h=96caf9950e841ed5d8e81447edf4109c0d6b66c5;hb=bc70684e74a185d7b80c8b80bdedda659cb581b8;hp=3c2840c6abefb7cebaf631665ad24afebc56f4ee;hpb=fb4a12cda4033f2f3d3d1039739f6e0e6f9afb82;p=ffmpeg diff --git a/libavformat/adtsenc.c b/libavformat/adtsenc.c index 3c2840c6abe..96caf9950e8 100644 --- a/libavformat/adtsenc.c +++ b/libavformat/adtsenc.c @@ -40,10 +40,11 @@ typedef struct ADTSContext { int pce_size; int apetag; int id3v2tag; + int mpeg_id; uint8_t pce_data[MAX_PCE_SIZE]; } ADTSContext; -#define ADTS_MAX_FRAME_BYTES ((1 << 13) - 1) +#define ADTS_MAX_FRAME_BYTES ((1 << 14) - 1) static int adts_decode_extradata(AVFormatContext *s, ADTSContext *adts, const uint8_t *buf, int size) { @@ -53,7 +54,7 @@ static int adts_decode_extradata(AVFormatContext *s, ADTSContext *adts, const ui int off; init_get_bits(&gb, buf, size * 8); - off = avpriv_mpeg4audio_get_config(&m4ac, buf, size * 8, 1); + off = avpriv_mpeg4audio_get_config2(&m4ac, buf, size, 1, s); if (off < 0) return off; skip_bits_long(&gb, off); @@ -136,7 +137,7 @@ static int adts_write_frame_header(ADTSContext *ctx, /* adts_fixed_header */ put_bits(&pb, 12, 0xfff); /* syncword */ - put_bits(&pb, 1, 0); /* ID */ + put_bits(&pb, 1, ctx->mpeg_id); /* ID */ put_bits(&pb, 2, 0); /* layer */ put_bits(&pb, 1, 1); /* protection_absent */ put_bits(&pb, 2, ctx->objecttype); /* profile_objecttype */ @@ -169,7 +170,8 @@ static int adts_write_packet(AVFormatContext *s, AVPacket *pkt) return 0; if (!par->extradata_size) { uint8_t *side_data; - int side_data_size = 0, ret; + size_t side_data_size; + int ret; side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, &side_data_size); @@ -212,8 +214,9 @@ static int adts_write_trailer(AVFormatContext *s) #define ENC AV_OPT_FLAG_ENCODING_PARAM #define OFFSET(obj) offsetof(ADTSContext, obj) static const AVOption options[] = { - { "write_id3v2", "Enable ID3v2 tag writing", OFFSET(id3v2tag), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, ENC}, - { "write_apetag", "Enable APE tag writing", OFFSET(apetag), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, ENC}, + { "write_id3v2", "Enable ID3v2 tag writing", OFFSET(id3v2tag), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, ENC}, + { "write_apetag", "Enable APE tag writing", OFFSET(apetag), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, ENC}, + { "write_mpeg2", "Set MPEG version to MPEG-2", OFFSET(mpeg_id), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, ENC}, { NULL }, }; @@ -224,7 +227,7 @@ static const AVClass adts_muxer_class = { .version = LIBAVUTIL_VERSION_INT, }; -AVOutputFormat ff_adts_muxer = { +const AVOutputFormat ff_adts_muxer = { .name = "adts", .long_name = NULL_IF_CONFIG_SMALL("ADTS AAC (Advanced Audio Coding)"), .mime_type = "audio/aac",