#include "libavcodec/avcodec.h"
#include "libavcodec/mpeg4audio.h"
#include "avformat.h"
-#include "adts.h"
+
+#define ADTS_HEADER_SIZE 7
+
+typedef struct {
+ int write_adts;
+ int objecttype;
+ int sample_rate_index;
+ int channel_conf;
+ int pce_size;
+ uint8_t pce_data[MAX_PCE_SIZE];
+} ADTSContext;
#define ADTS_MAX_FRAME_BYTES ((1 << 13) - 1)
-int ff_adts_decode_extradata(AVFormatContext *s, ADTSContext *adts, uint8_t *buf, int size)
+static int adts_decode_extradata(AVFormatContext *s, ADTSContext *adts, uint8_t *buf, int size)
{
GetBitContext gb;
PutBitContext pb;
int off;
init_get_bits(&gb, buf, size * 8);
- off = avpriv_mpeg4audio_get_config(&m4ac, buf, size);
+ off = avpriv_mpeg4audio_get_config(&m4ac, buf, size * 8, 1);
if (off < 0)
return off;
skip_bits_long(&gb, off);
AVCodecContext *avc = s->streams[0]->codec;
if (avc->extradata_size > 0 &&
- ff_adts_decode_extradata(s, adts, avc->extradata, avc->extradata_size) < 0)
+ adts_decode_extradata(s, adts, avc->extradata, avc->extradata_size) < 0)
return -1;
return 0;
}
-int ff_adts_write_frame_header(ADTSContext *ctx,
- uint8_t *buf, int size, int pce_size)
+static int adts_write_frame_header(ADTSContext *ctx,
+ uint8_t *buf, int size, int pce_size)
{
PutBitContext pb;
if (!pkt->size)
return 0;
if (adts->write_adts) {
- int err = ff_adts_write_frame_header(adts, buf, pkt->size,
+ int err = adts_write_frame_header(adts, buf, pkt->size,
adts->pce_size);
if (err < 0)
return err;
AVOutputFormat ff_adts_muxer = {
.name = "adts",
- .long_name = NULL_IF_CONFIG_SMALL("ADTS AAC"),
+ .long_name = NULL_IF_CONFIG_SMALL("ADTS AAC (Advanced Audio Coding)"),
.mime_type = "audio/aac",
.extensions = "aac,adts",
.priv_data_size = sizeof(ADTSContext),
- .audio_codec = CODEC_ID_AAC,
- .video_codec = CODEC_ID_NONE,
+ .audio_codec = AV_CODEC_ID_AAC,
+ .video_codec = AV_CODEC_ID_NONE,
.write_header = adts_write_header,
.write_packet = adts_write_packet,
};