Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * MPEG-4 Audio common header
  3.  * Copyright (c) 2008 Baptiste Coudurier <baptiste.coudurier@free.fr>
  4.  *
  5.  * This file is part of FFmpeg.
  6.  *
  7.  * FFmpeg is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * FFmpeg is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with FFmpeg; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20.  */
  21.  
  22. #ifndef AVCODEC_MPEG4AUDIO_H
  23. #define AVCODEC_MPEG4AUDIO_H
  24.  
  25. #include <stdint.h>
  26. #include "get_bits.h"
  27. #include "put_bits.h"
  28.  
  29. typedef struct MPEG4AudioConfig {
  30.     int object_type;
  31.     int sampling_index;
  32.     int sample_rate;
  33.     int chan_config;
  34.     int sbr; ///< -1 implicit, 1 presence
  35.     int ext_object_type;
  36.     int ext_sampling_index;
  37.     int ext_sample_rate;
  38.     int ext_chan_config;
  39.     int channels;
  40.     int ps;  ///< -1 implicit, 1 presence
  41. } MPEG4AudioConfig;
  42.  
  43. extern av_export const int avpriv_mpeg4audio_sample_rates[16];
  44. extern const uint8_t ff_mpeg4audio_channels[8];
  45.  
  46. /**
  47.  * Parse MPEG-4 systems extradata to retrieve audio configuration.
  48.  * @param[in] c        MPEG4AudioConfig structure to fill.
  49.  * @param[in] buf      Extradata from container.
  50.  * @param[in] bit_size Extradata size in bits.
  51.  * @param[in] sync_extension look for a sync extension after config if true.
  52.  * @return On error -1 is returned, on success AudioSpecificConfig bit index in extradata.
  53.  */
  54. int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf,
  55.                                  int bit_size, int sync_extension);
  56.  
  57. enum AudioObjectType {
  58.     AOT_NULL,
  59.                                // Support?                Name
  60.     AOT_AAC_MAIN,              ///< Y                       Main
  61.     AOT_AAC_LC,                ///< Y                       Low Complexity
  62.     AOT_AAC_SSR,               ///< N (code in SoC repo)    Scalable Sample Rate
  63.     AOT_AAC_LTP,               ///< Y                       Long Term Prediction
  64.     AOT_SBR,                   ///< Y                       Spectral Band Replication
  65.     AOT_AAC_SCALABLE,          ///< N                       Scalable
  66.     AOT_TWINVQ,                ///< N                       Twin Vector Quantizer
  67.     AOT_CELP,                  ///< N                       Code Excited Linear Prediction
  68.     AOT_HVXC,                  ///< N                       Harmonic Vector eXcitation Coding
  69.     AOT_TTSI             = 12, ///< N                       Text-To-Speech Interface
  70.     AOT_MAINSYNTH,             ///< N                       Main Synthesis
  71.     AOT_WAVESYNTH,             ///< N                       Wavetable Synthesis
  72.     AOT_MIDI,                  ///< N                       General MIDI
  73.     AOT_SAFX,                  ///< N                       Algorithmic Synthesis and Audio Effects
  74.     AOT_ER_AAC_LC,             ///< N                       Error Resilient Low Complexity
  75.     AOT_ER_AAC_LTP       = 19, ///< N                       Error Resilient Long Term Prediction
  76.     AOT_ER_AAC_SCALABLE,       ///< N                       Error Resilient Scalable
  77.     AOT_ER_TWINVQ,             ///< N                       Error Resilient Twin Vector Quantizer
  78.     AOT_ER_BSAC,               ///< N                       Error Resilient Bit-Sliced Arithmetic Coding
  79.     AOT_ER_AAC_LD,             ///< N                       Error Resilient Low Delay
  80.     AOT_ER_CELP,               ///< N                       Error Resilient Code Excited Linear Prediction
  81.     AOT_ER_HVXC,               ///< N                       Error Resilient Harmonic Vector eXcitation Coding
  82.     AOT_ER_HILN,               ///< N                       Error Resilient Harmonic and Individual Lines plus Noise
  83.     AOT_ER_PARAM,              ///< N                       Error Resilient Parametric
  84.     AOT_SSC,                   ///< N                       SinuSoidal Coding
  85.     AOT_PS,                    ///< N                       Parametric Stereo
  86.     AOT_SURROUND,              ///< N                       MPEG Surround
  87.     AOT_ESCAPE,                ///< Y                       Escape Value
  88.     AOT_L1,                    ///< Y                       Layer 1
  89.     AOT_L2,                    ///< Y                       Layer 2
  90.     AOT_L3,                    ///< Y                       Layer 3
  91.     AOT_DST,                   ///< N                       Direct Stream Transfer
  92.     AOT_ALS,                   ///< Y                       Audio LosslesS
  93.     AOT_SLS,                   ///< N                       Scalable LosslesS
  94.     AOT_SLS_NON_CORE,          ///< N                       Scalable LosslesS (non core)
  95.     AOT_ER_AAC_ELD,            ///< N                       Error Resilient Enhanced Low Delay
  96.     AOT_SMR_SIMPLE,            ///< N                       Symbolic Music Representation Simple
  97.     AOT_SMR_MAIN,              ///< N                       Symbolic Music Representation Main
  98.     AOT_USAC_NOSBR,            ///< N                       Unified Speech and Audio Coding (no SBR)
  99.     AOT_SAOC,                  ///< N                       Spatial Audio Object Coding
  100.     AOT_LD_SURROUND,           ///< N                       Low Delay MPEG Surround
  101.     AOT_USAC,                  ///< N                       Unified Speech and Audio Coding
  102. };
  103.  
  104. #define MAX_PCE_SIZE 304 ///<Maximum size of a PCE including the 3-bit ID_PCE
  105.                          ///<marker and the comment
  106.  
  107. int avpriv_copy_pce_data(PutBitContext *pb, GetBitContext *gb);
  108.  
  109. #endif /* AVCODEC_MPEG4AUDIO_H */
  110.