[FFmpeg-cvslog] r24217 - in trunk: configure libavcodec/Makefile libavcodec/aac_adtstoasc_bsf.c libavcodec/aac_parser.c libavcodec/aac_parser.h libavcodec/aacadtsdec.c libavcodec/aacadtsdec.h libavcodec/aacdec.c l...
alexc
subversion
Mon Jul 12 20:52:04 CEST 2010
Author: alexc
Date: Mon Jul 12 20:52:03 2010
New Revision: 24217
Log:
Split the ADTS header decoder off of the ADTS parser.
The AAC decoder and ADTS-to-ASC BSF both require the header decoder
but not full parsing capabilities.
Added:
trunk/libavcodec/aacadtsdec.c
- copied, changed from r24213, trunk/libavcodec/aac_parser.c
trunk/libavcodec/aacadtsdec.h
- copied, changed from r24213, trunk/libavcodec/aac_parser.h
Deleted:
trunk/libavcodec/aac_parser.h
Modified:
trunk/configure
trunk/libavcodec/Makefile
trunk/libavcodec/aac_adtstoasc_bsf.c
trunk/libavcodec/aac_parser.c
trunk/libavcodec/aacdec.c
trunk/libavformat/spdif.c
Modified: trunk/configure
==============================================================================
--- trunk/configure Mon Jul 12 20:36:07 2010 (r24216)
+++ trunk/configure Mon Jul 12 20:52:03 2010 (r24217)
@@ -1162,7 +1162,7 @@ mdct_select="fft"
rdft_select="fft"
# decoders / encoders / hardware accelerators
-aac_decoder_select="mdct rdft aac_parser"
+aac_decoder_select="mdct rdft"
aac_encoder_select="mdct"
ac3_decoder_select="mdct ac3_parser"
alac_encoder_select="lpc"
@@ -1294,9 +1294,6 @@ vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x1
# parsers
h264_parser_select="golomb h264dsp"
-# bitstream_filters
-aac_adtstoasc_bsf_select="aac_parser"
-
# external libraries
libdirac_decoder_deps="libdirac !libschroedinger"
libdirac_encoder_deps="libdirac"
Modified: trunk/libavcodec/Makefile
==============================================================================
--- trunk/libavcodec/Makefile Mon Jul 12 20:36:07 2010 (r24216)
+++ trunk/libavcodec/Makefile Mon Jul 12 20:52:03 2010 (r24217)
@@ -42,7 +42,8 @@ OBJS-$(CONFIG_VAAPI) +
OBJS-$(CONFIG_VDPAU) += vdpau.o
# decoders/encoders/hardware accelerators
-OBJS-$(CONFIG_AAC_DECODER) += aacdec.o aactab.o aacsbr.o aacps.o
+OBJS-$(CONFIG_AAC_DECODER) += aacdec.o aactab.o aacsbr.o aacps.o \
+ aacadtsdec.o mpeg4audio.o
OBJS-$(CONFIG_AAC_ENCODER) += aacenc.o aaccoder.o \
aacpsy.o aactab.o \
psymodel.o iirfilter.o \
@@ -550,7 +551,7 @@ OBJS-$(CONFIG_LIBXVID)
# parsers
OBJS-$(CONFIG_AAC_PARSER) += aac_parser.o aac_ac3_parser.o \
- mpeg4audio.o
+ aacadtsdec.o mpeg4audio.o
OBJS-$(CONFIG_AC3_PARSER) += ac3_parser.o ac3tab.o \
aac_ac3_parser.o
OBJS-$(CONFIG_CAVSVIDEO_PARSER) += cavs_parser.o
@@ -586,7 +587,8 @@ OBJS-$(CONFIG_VP3_PARSER) +
OBJS-$(CONFIG_VP8_PARSER) += vp8_parser.o
# bitstream filters
-OBJS-$(CONFIG_AAC_ADTSTOASC_BSF) += aac_adtstoasc_bsf.o
+OBJS-$(CONFIG_AAC_ADTSTOASC_BSF) += aac_adtstoasc_bsf.o aacadtsdec.o \
+ mpeg4audio.o
OBJS-$(CONFIG_CHOMP_BSF) += chomp_bsf.o
OBJS-$(CONFIG_DUMP_EXTRADATA_BSF) += dump_extradata_bsf.o
OBJS-$(CONFIG_H264_MP4TOANNEXB_BSF) += h264_mp4toannexb_bsf.o
Modified: trunk/libavcodec/aac_adtstoasc_bsf.c
==============================================================================
--- trunk/libavcodec/aac_adtstoasc_bsf.c Mon Jul 12 20:36:07 2010 (r24216)
+++ trunk/libavcodec/aac_adtstoasc_bsf.c Mon Jul 12 20:52:03 2010 (r24217)
@@ -20,7 +20,7 @@
*/
#include "avcodec.h"
-#include "aac_parser.h"
+#include "aacadtsdec.h"
#include "put_bits.h"
#include "get_bits.h"
#include "mpeg4audio.h"
Modified: trunk/libavcodec/aac_parser.c
==============================================================================
--- trunk/libavcodec/aac_parser.c Mon Jul 12 20:36:07 2010 (r24216)
+++ trunk/libavcodec/aac_parser.c Mon Jul 12 20:52:03 2010 (r24217)
@@ -22,53 +22,10 @@
#include "parser.h"
#include "aac_ac3_parser.h"
-#include "aac_parser.h"
+#include "aacadtsdec.h"
#include "get_bits.h"
#include "mpeg4audio.h"
-int ff_aac_parse_header(GetBitContext *gbc, AACADTSHeaderInfo *hdr)
-{
- int size, rdb, ch, sr;
- int aot, crc_abs;
-
- if(get_bits(gbc, 12) != 0xfff)
- return AAC_AC3_PARSE_ERROR_SYNC;
-
- skip_bits1(gbc); /* id */
- skip_bits(gbc, 2); /* layer */
- crc_abs = get_bits1(gbc); /* protection_absent */
- aot = get_bits(gbc, 2); /* profile_objecttype */
- sr = get_bits(gbc, 4); /* sample_frequency_index */
- if(!ff_mpeg4audio_sample_rates[sr])
- return AAC_AC3_PARSE_ERROR_SAMPLE_RATE;
- skip_bits1(gbc); /* private_bit */
- ch = get_bits(gbc, 3); /* channel_configuration */
-
- skip_bits1(gbc); /* original/copy */
- skip_bits1(gbc); /* home */
-
- /* adts_variable_header */
- skip_bits1(gbc); /* copyright_identification_bit */
- skip_bits1(gbc); /* copyright_identification_start */
- size = get_bits(gbc, 13); /* aac_frame_length */
- if(size < AAC_ADTS_HEADER_SIZE)
- return AAC_AC3_PARSE_ERROR_FRAME_SIZE;
-
- skip_bits(gbc, 11); /* adts_buffer_fullness */
- rdb = get_bits(gbc, 2); /* number_of_raw_data_blocks_in_frame */
-
- hdr->object_type = aot + 1;
- hdr->chan_config = ch;
- hdr->crc_absent = crc_abs;
- hdr->num_aac_frames = rdb + 1;
- hdr->sampling_index = sr;
- hdr->sample_rate = ff_mpeg4audio_sample_rates[sr];
- hdr->samples = (rdb + 1) * 1024;
- hdr->bit_rate = size * 8 * hdr->sample_rate / hdr->samples;
-
- return size;
-}
-
static int aac_sync(uint64_t state, AACAC3ParseContext *hdr_info,
int *need_next_header, int *new_frame_start)
{
Copied and modified: trunk/libavcodec/aacadtsdec.c (from r24213, trunk/libavcodec/aac_parser.c)
==============================================================================
--- trunk/libavcodec/aac_parser.c Mon Jul 12 14:32:24 2010 (r24213, copy source)
+++ trunk/libavcodec/aacadtsdec.c Mon Jul 12 20:52:03 2010 (r24217)
@@ -2,6 +2,7 @@
* Audio and Video frame extraction
* Copyright (c) 2003 Fabrice Bellard
* Copyright (c) 2003 Michael Niedermayer
+ * Copyright (c) 2009 Alex Converse
*
* This file is part of FFmpeg.
*
@@ -20,9 +21,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "parser.h"
#include "aac_ac3_parser.h"
-#include "aac_parser.h"
+#include "aacadtsdec.h"
#include "get_bits.h"
#include "mpeg4audio.h"
@@ -68,45 +68,3 @@ int ff_aac_parse_header(GetBitContext *g
return size;
}
-
-static int aac_sync(uint64_t state, AACAC3ParseContext *hdr_info,
- int *need_next_header, int *new_frame_start)
-{
- GetBitContext bits;
- AACADTSHeaderInfo hdr;
- int size;
- union {
- uint64_t u64;
- uint8_t u8[8];
- } tmp;
-
- tmp.u64 = av_be2ne64(state);
- init_get_bits(&bits, tmp.u8+8-AAC_ADTS_HEADER_SIZE, AAC_ADTS_HEADER_SIZE * 8);
-
- if ((size = ff_aac_parse_header(&bits, &hdr)) < 0)
- return 0;
- *need_next_header = 0;
- *new_frame_start = 1;
- hdr_info->sample_rate = hdr.sample_rate;
- hdr_info->channels = ff_mpeg4audio_channels[hdr.chan_config];
- hdr_info->samples = hdr.samples;
- hdr_info->bit_rate = hdr.bit_rate;
- return size;
-}
-
-static av_cold int aac_parse_init(AVCodecParserContext *s1)
-{
- AACAC3ParseContext *s = s1->priv_data;
- s->header_size = AAC_ADTS_HEADER_SIZE;
- s->sync = aac_sync;
- return 0;
-}
-
-
-AVCodecParser aac_parser = {
- { CODEC_ID_AAC },
- sizeof(AACAC3ParseContext),
- aac_parse_init,
- ff_aac_ac3_parse,
- ff_parse_close,
-};
Copied and modified: trunk/libavcodec/aacadtsdec.h (from r24213, trunk/libavcodec/aac_parser.h)
==============================================================================
--- trunk/libavcodec/aac_parser.h Mon Jul 12 14:32:24 2010 (r24213, copy source)
+++ trunk/libavcodec/aacadtsdec.h Mon Jul 12 20:52:03 2010 (r24217)
@@ -1,5 +1,5 @@
/*
- * AAC parser prototypes
+ * AAC ADTS header decoding prototypes and structures
* Copyright (c) 2003 Fabrice Bellard
* Copyright (c) 2003 Michael Niedermayer
*
@@ -20,11 +20,10 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef AVCODEC_AAC_PARSER_H
-#define AVCODEC_AAC_PARSER_H
+#ifndef AVCODEC_AACADTSDEC_H
+#define AVCODEC_AACADTSDEC_H
#include <stdint.h>
-#include "aac_ac3_parser.h"
#include "get_bits.h"
#define AAC_ADTS_HEADER_SIZE 7
@@ -52,4 +51,4 @@ typedef struct {
*/
int ff_aac_parse_header(GetBitContext *gbc, AACADTSHeaderInfo *hdr);
-#endif /* AVCODEC_AAC_PARSER_H */
+#endif /* AVCODEC_AACADTSDEC_H */
Modified: trunk/libavcodec/aacdec.c
==============================================================================
--- trunk/libavcodec/aacdec.c Mon Jul 12 20:36:07 2010 (r24216)
+++ trunk/libavcodec/aacdec.c Mon Jul 12 20:52:03 2010 (r24217)
@@ -90,7 +90,7 @@
#include "sbr.h"
#include "aacsbr.h"
#include "mpeg4audio.h"
-#include "aac_parser.h"
+#include "aacadtsdec.h"
#include <assert.h>
#include <errno.h>
Modified: trunk/libavformat/spdif.c
==============================================================================
--- trunk/libavformat/spdif.c Mon Jul 12 20:36:07 2010 (r24216)
+++ trunk/libavformat/spdif.c Mon Jul 12 20:52:03 2010 (r24217)
@@ -43,7 +43,7 @@
#include "avformat.h"
#include "libavcodec/ac3.h"
#include "libavcodec/dca.h"
-#include "libavcodec/aac_parser.h"
+#include "libavcodec/aacadtsdec.h"
#define SYNCWORD1 0xF872
#define SYNCWORD2 0x4E1F
More information about the ffmpeg-cvslog
mailing list