LCOV - code coverage report
Current view: top level - src/libavcodec - aac_parser.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 17 17 100.0 %
Date: 2017-01-28 02:43:52 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /*
       2             :  * Audio and Video frame extraction
       3             :  * Copyright (c) 2003 Fabrice Bellard
       4             :  * Copyright (c) 2003 Michael Niedermayer
       5             :  *
       6             :  * This file is part of FFmpeg.
       7             :  *
       8             :  * FFmpeg is free software; you can redistribute it and/or
       9             :  * modify it under the terms of the GNU Lesser General Public
      10             :  * License as published by the Free Software Foundation; either
      11             :  * version 2.1 of the License, or (at your option) any later version.
      12             :  *
      13             :  * FFmpeg is distributed in the hope that it will be useful,
      14             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      15             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      16             :  * Lesser General Public License for more details.
      17             :  *
      18             :  * You should have received a copy of the GNU Lesser General Public
      19             :  * License along with FFmpeg; if not, write to the Free Software
      20             :  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
      21             :  */
      22             : 
      23             : #include "parser.h"
      24             : #include "aac_ac3_parser.h"
      25             : #include "aacadtsdec.h"
      26             : #include "get_bits.h"
      27             : #include "mpeg4audio.h"
      28             : 
      29       32767 : static int aac_sync(uint64_t state, AACAC3ParseContext *hdr_info,
      30             :         int *need_next_header, int *new_frame_start)
      31             : {
      32             :     GetBitContext bits;
      33             :     AACADTSHeaderInfo hdr;
      34             :     int size;
      35             :     union {
      36             :         uint64_t u64;
      37             :         uint8_t  u8[8 + AV_INPUT_BUFFER_PADDING_SIZE];
      38             :     } tmp;
      39             : 
      40       32767 :     tmp.u64 = av_be2ne64(state);
      41       32767 :     init_get_bits(&bits, tmp.u8+8-AAC_ADTS_HEADER_SIZE, AAC_ADTS_HEADER_SIZE * 8);
      42             : 
      43       32767 :     if ((size = avpriv_aac_parse_header(&bits, &hdr)) < 0)
      44       28086 :         return 0;
      45        4681 :     *need_next_header = 0;
      46        4681 :     *new_frame_start  = 1;
      47        4681 :     hdr_info->sample_rate = hdr.sample_rate;
      48        4681 :     hdr_info->channels    = ff_mpeg4audio_channels[hdr.chan_config];
      49        4681 :     hdr_info->samples     = hdr.samples;
      50        4681 :     hdr_info->bit_rate    = hdr.bit_rate;
      51        4681 :     return size;
      52             : }
      53             : 
      54         153 : static av_cold int aac_parse_init(AVCodecParserContext *s1)
      55             : {
      56         153 :     AACAC3ParseContext *s = s1->priv_data;
      57         153 :     s->header_size = AAC_ADTS_HEADER_SIZE;
      58         153 :     s->sync = aac_sync;
      59         153 :     return 0;
      60             : }
      61             : 
      62             : 
      63             : AVCodecParser ff_aac_parser = {
      64             :     .codec_ids      = { AV_CODEC_ID_AAC },
      65             :     .priv_data_size = sizeof(AACAC3ParseContext),
      66             :     .parser_init    = aac_parse_init,
      67             :     .parser_parse   = ff_aac_ac3_parse,
      68             :     .parser_close   = ff_parse_close,
      69             : };

Generated by: LCOV version 1.12