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
28
31
37 int sbr;
///< -1 implicit, 1 presence
43 int ps;
///< -1 implicit, 1 presence
46
49
50 /**
51 * Parse MPEG-4 systems extradata from a potentially unaligned GetBitContext to retrieve audio configuration.
52 * @param[in] c MPEG4AudioConfig structure to fill.
53 * @param[in] gb Extradata from container.
54 * @param[in] sync_extension look for a sync extension after config if true.
55 * @param[in] logctx opaque struct starting with an AVClass element, used for logging.
56 * @return negative AVERROR code on error, on success AudioSpecificConfig bit index in extradata.
57 */
59 int sync_extension, void *logctx);
60
61 /**
62 * Parse MPEG-4 systems extradata from a raw buffer to retrieve audio configuration.
63 * @param[in] c MPEG4AudioConfig structure to fill.
64 * @param[in] buf Extradata from container.
65 * @param[in] size Extradata size in bytes.
66 * @param[in] sync_extension look for a sync extension after config if true.
67 * @param[in] logctx opaque struct starting with an AVClass element, used for logging.
68 * @return negative AVERROR code on error, AudioSpecificConfig bit index in extradata on success.
69 */
71 int size,
int sync_extension,
void *logctx);
72
75 // Support? Name
83 AOT_CELP,
///< N Code Excited Linear Prediction
84 AOT_HVXC,
///< N Harmonic Vector eXcitation Coding
89 AOT_SAFX,
///< N Algorithmic Synthesis and Audio Effects
94 AOT_ER_BSAC,
///< N Error Resilient Bit-Sliced Arithmetic Coding
96 AOT_ER_CELP,
///< N Error Resilient Code Excited Linear Prediction
97 AOT_ER_HVXC,
///< N Error Resilient Harmonic Vector eXcitation Coding
98 AOT_ER_HILN,
///< N Error Resilient Harmonic and Individual Lines plus Noise
118 };
119
120 #define MAX_PCE_SIZE 320 ///<Maximum size of a PCE including the 3-bit ID_PCE
121 ///<marker and the comment
122
126 {
129 return el;
130 }
131
133 {
134 int five_bit_ch, four_bit_ch, comment_size,
bits;
136
150 for (
bits = five_bit_ch*5+four_bit_ch*4;
bits > 16;
bits -= 16)
157 for (; comment_size > 0; comment_size--)
159
161 }
162
163 #endif /* AVCODEC_MPEG4AUDIO_H */