LCOV - code coverage report
Current view: top level - libavcodec - aac_parser.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 17 17 100.0 %
Date: 2017-12-16 21:16:39 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 "adts_header.h"
      26             : #include "adts_parser.h"
      27             : #include "get_bits.h"
      28             : #include "mpeg4audio.h"
      29             : 
      30       38353 : static int aac_sync(uint64_t state, AACAC3ParseContext *hdr_info,
      31             :         int *need_next_header, int *new_frame_start)
      32             : {
      33             :     GetBitContext bits;
      34             :     AACADTSHeaderInfo hdr;
      35             :     int size;
      36             :     union {
      37             :         uint64_t u64;
      38             :         uint8_t  u8[8 + AV_INPUT_BUFFER_PADDING_SIZE];
      39             :     } tmp;
      40             : 
      41       38353 :     tmp.u64 = av_be2ne64(state);
      42       38353 :     init_get_bits(&bits, tmp.u8 + 8 - AV_AAC_ADTS_HEADER_SIZE,
      43             :                   AV_AAC_ADTS_HEADER_SIZE * 8);
      44             : 
      45       38353 :     if ((size = ff_adts_header_parse(&bits, &hdr)) < 0)
      46       32874 :         return 0;
      47        5479 :     *need_next_header = 0;
      48        5479 :     *new_frame_start  = 1;
      49        5479 :     hdr_info->sample_rate = hdr.sample_rate;
      50        5479 :     hdr_info->channels    = ff_mpeg4audio_channels[hdr.chan_config];
      51        5479 :     hdr_info->samples     = hdr.samples;
      52        5479 :     hdr_info->bit_rate    = hdr.bit_rate;
      53        5479 :     return size;
      54             : }
      55             : 
      56         163 : static av_cold int aac_parse_init(AVCodecParserContext *s1)
      57             : {
      58         163 :     AACAC3ParseContext *s = s1->priv_data;
      59         163 :     s->header_size = AV_AAC_ADTS_HEADER_SIZE;
      60         163 :     s->sync = aac_sync;
      61         163 :     return 0;
      62             : }
      63             : 
      64             : 
      65             : AVCodecParser ff_aac_parser = {
      66             :     .codec_ids      = { AV_CODEC_ID_AAC },
      67             :     .priv_data_size = sizeof(AACAC3ParseContext),
      68             :     .parser_init    = aac_parse_init,
      69             :     .parser_parse   = ff_aac_ac3_parse,
      70             :     .parser_close   = ff_parse_close,
      71             : };

Generated by: LCOV version 1.13