FFmpeg
libavcodec
ac3_parser_internal.h
Go to the documentation of this file.
1
/*
2
* AC-3 parser internal code
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#ifndef AVCODEC_AC3_PARSER_INTERNAL_H
22
#define AVCODEC_AC3_PARSER_INTERNAL_H
23
24
#include <stddef.h>
25
#include <stdint.h>
26
27
#include "
ac3defs.h
"
28
#include "
get_bits.h
"
29
30
/**
31
* @struct AC3HeaderInfo
32
* Coded AC-3 header values up to the lfeon element, plus derived values.
33
*/
34
typedef
struct
AC3HeaderInfo
{
35
/** @name Coded elements
36
* @{
37
*/
38
uint16_t
sync_word
;
39
uint16_t
crc1
;
40
uint8_t
sr_code
;
41
uint8_t
bitstream_id
;
42
uint8_t
bitstream_mode
;
43
uint8_t
channel_mode
;
44
uint8_t
lfe_on
;
45
uint8_t
frame_type
;
46
int
substreamid
;
///< substream identification
47
int
center_mix_level
;
///< Center mix level index
48
int
surround_mix_level
;
///< Surround mix level index
49
uint16_t
channel_map
;
50
int
num_blocks
;
///< number of audio blocks
51
int
dolby_surround_mode
;
52
/** @} */
53
54
/** @name Derived values
55
* @{
56
*/
57
uint8_t
sr_shift
;
58
uint16_t
sample_rate
;
59
uint32_t
bit_rate
;
60
uint8_t
channels
;
61
uint16_t
frame_size
;
62
uint64_t
channel_layout
;
63
int8_t
ac3_bit_rate_code
;
64
/** @} */
65
}
AC3HeaderInfo
;
66
67
typedef
enum
{
68
AC3_PARSE_ERROR_SYNC
= -0x1030c0a,
69
AC3_PARSE_ERROR_BSID
= -0x2030c0a,
70
AC3_PARSE_ERROR_SAMPLE_RATE
= -0x3030c0a,
71
AC3_PARSE_ERROR_FRAME_SIZE
= -0x4030c0a,
72
AC3_PARSE_ERROR_FRAME_TYPE
= -0x5030c0a,
73
AC3_PARSE_ERROR_CRC
= -0x6030c0a,
74
}
AC3ParseError
;
75
76
/**
77
* Parse AC-3 frame header.
78
* Parse the header up to the lfeon element, which is the first 52 or 54 bits
79
* depending on the audio coding mode.
80
* @param[in] gbc BitContext containing the first 54 bits of the frame.
81
* @param[out] hdr Pointer to struct where header info is written.
82
* @return 0 on success and AC3_PARSE_ERROR_* values otherwise.
83
*/
84
int
ff_ac3_parse_header
(
GetBitContext
*gbc,
AC3HeaderInfo
*hdr);
85
86
int
avpriv_ac3_parse_header
(
AC3HeaderInfo
**hdr,
const
uint8_t *buf,
87
size_t
size
);
88
89
int
ff_ac3_find_syncword
(
const
uint8_t *buf,
int
buf_size);
90
91
#endif
/* AVCODEC_AC3_PARSER_INTERNAL_H */
AC3HeaderInfo::center_mix_level
int center_mix_level
Center mix level index.
Definition:
ac3_parser_internal.h:47
AC3HeaderInfo::frame_type
uint8_t frame_type
Definition:
ac3_parser_internal.h:45
AC3HeaderInfo::dolby_surround_mode
int dolby_surround_mode
Definition:
ac3_parser_internal.h:51
AC3_PARSE_ERROR_FRAME_TYPE
@ AC3_PARSE_ERROR_FRAME_TYPE
Definition:
ac3_parser_internal.h:72
AC3HeaderInfo::channel_layout
uint64_t channel_layout
Definition:
ac3_parser_internal.h:62
GetBitContext
Definition:
get_bits.h:108
AC3HeaderInfo
Definition:
ac3_parser_internal.h:34
AC3HeaderInfo::frame_size
uint16_t frame_size
Definition:
ac3_parser_internal.h:61
AC3HeaderInfo::channel_mode
uint8_t channel_mode
Definition:
ac3_parser_internal.h:43
AC3HeaderInfo::sync_word
uint16_t sync_word
Definition:
ac3_parser_internal.h:38
AC3_PARSE_ERROR_SYNC
@ AC3_PARSE_ERROR_SYNC
Definition:
ac3_parser_internal.h:68
AC3HeaderInfo::crc1
uint16_t crc1
Definition:
ac3_parser_internal.h:39
get_bits.h
AC3HeaderInfo::sample_rate
uint16_t sample_rate
Definition:
ac3_parser_internal.h:58
ac3defs.h
AC3HeaderInfo::substreamid
int substreamid
substream identification
Definition:
ac3_parser_internal.h:46
AC3HeaderInfo::num_blocks
int num_blocks
number of audio blocks
Definition:
ac3_parser_internal.h:50
AC3HeaderInfo::channels
uint8_t channels
Definition:
ac3_parser_internal.h:60
AC3HeaderInfo::lfe_on
uint8_t lfe_on
Definition:
ac3_parser_internal.h:44
size
int size
Definition:
twinvq_data.h:10344
AC3_PARSE_ERROR_CRC
@ AC3_PARSE_ERROR_CRC
Definition:
ac3_parser_internal.h:73
AC3HeaderInfo::bitstream_mode
uint8_t bitstream_mode
Definition:
ac3_parser_internal.h:42
AC3HeaderInfo::ac3_bit_rate_code
int8_t ac3_bit_rate_code
Definition:
ac3_parser_internal.h:63
AC3_PARSE_ERROR_BSID
@ AC3_PARSE_ERROR_BSID
Definition:
ac3_parser_internal.h:69
ff_ac3_find_syncword
int ff_ac3_find_syncword(const uint8_t *buf, int buf_size)
AC3HeaderInfo::channel_map
uint16_t channel_map
Definition:
ac3_parser_internal.h:49
ff_ac3_parse_header
int ff_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr)
Parse AC-3 frame header.
AC3_PARSE_ERROR_SAMPLE_RATE
@ AC3_PARSE_ERROR_SAMPLE_RATE
Definition:
ac3_parser_internal.h:70
AC3ParseError
AC3ParseError
Definition:
ac3_parser_internal.h:67
avpriv_ac3_parse_header
int avpriv_ac3_parse_header(AC3HeaderInfo **hdr, const uint8_t *buf, size_t size)
Definition:
ac3_parser.c:267
AC3HeaderInfo::bitstream_id
uint8_t bitstream_id
Definition:
ac3_parser_internal.h:41
AC3_PARSE_ERROR_FRAME_SIZE
@ AC3_PARSE_ERROR_FRAME_SIZE
Definition:
ac3_parser_internal.h:71
AC3HeaderInfo::sr_shift
uint8_t sr_shift
Definition:
ac3_parser_internal.h:57
AC3HeaderInfo::sr_code
uint8_t sr_code
Definition:
ac3_parser_internal.h:40
AC3HeaderInfo::bit_rate
uint32_t bit_rate
Definition:
ac3_parser_internal.h:59
AC3HeaderInfo::surround_mix_level
int surround_mix_level
Surround mix level index.
Definition:
ac3_parser_internal.h:48
Generated on Thu Oct 3 2024 19:21:16 for FFmpeg by
1.8.17