diff options
author | Diego Biurrun <diego@biurrun.de> | 2017-04-26 18:57:54 +0200 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2017-05-02 18:50:34 +0200 |
commit | b5f19f7478492307e4b4763aeac3180faf50e17f (patch) | |
tree | 0fb69992023b946295a3130e2066256e3caf88fe /libavformat/spdifenc.c | |
parent | 0ac1fec1c3dacedabbf3dd4122ef4bf8523e688c (diff) | |
download | ffmpeg-b5f19f7478492307e4b4763aeac3180faf50e17f.tar.gz |
aac: Split function to parse ADTS header data into public and private part
This makes the currently semi-public avpriv_aac_parse_header() function
private to libavcodec and adds a proper public API function to return
the parts of the ADTS header required in libavformat.
Diffstat (limited to 'libavformat/spdifenc.c')
-rw-r--r-- | libavformat/spdifenc.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/libavformat/spdifenc.c b/libavformat/spdifenc.c index a9b3b522b3..6497a82734 100644 --- a/libavformat/spdifenc.c +++ b/libavformat/spdifenc.c @@ -50,9 +50,9 @@ #include "avio_internal.h" #include "spdif.h" #include "libavcodec/ac3.h" +#include "libavcodec/adts_parser.h" #include "libavcodec/dca.h" #include "libavcodec/dca_syncwords.h" -#include "libavcodec/aacadtsdec.h" #include "libavutil/opt.h" typedef struct IEC61937Context { @@ -349,19 +349,18 @@ static int spdif_header_mpeg(AVFormatContext *s, AVPacket *pkt) static int spdif_header_aac(AVFormatContext *s, AVPacket *pkt) { IEC61937Context *ctx = s->priv_data; - AACADTSHeaderInfo hdr; - GetBitContext gbc; + uint32_t samples; + uint8_t frames; int ret; - init_get_bits(&gbc, pkt->data, AAC_ADTS_HEADER_SIZE * 8); - ret = avpriv_aac_parse_header(&gbc, &hdr); + ret = av_adts_header_parse(pkt->data, &samples, &frames); if (ret < 0) { av_log(s, AV_LOG_ERROR, "Wrong AAC file format\n"); - return AVERROR_INVALIDDATA; + return ret; } - ctx->pkt_offset = hdr.samples << 2; - switch (hdr.num_aac_frames) { + ctx->pkt_offset = samples << 2; + switch (frames) { case 1: ctx->data_type = IEC61937_MPEG2_AAC; break; @@ -373,7 +372,7 @@ static int spdif_header_aac(AVFormatContext *s, AVPacket *pkt) break; default: av_log(s, AV_LOG_ERROR, - "%"PRIu32" samples in AAC frame not supported\n", hdr.samples); + "%"PRIu32" samples in AAC frame not supported\n", samples); return AVERROR(EINVAL); } //TODO Data type dependent info (LC profile/SBR) |