annotate aac_ac3_parser.h @ 12089:5638941ec8ef libavcodec

PPC: convert Altivec FFT to pure assembler On PPC a leaf function has a 288-byte red zone below the stack pointer, sparing these functions the chore of setting up a full stack frame. When a function call is disguised within an inline asm block, the compiler might not adjust the stack pointer as required before a function call, resulting in the red zone being clobbered. Moving the entire function to pure asm avoids this problem and also results in somewhat better code.
author mru
date Sun, 04 Jul 2010 18:33:47 +0000
parents ba5d9a97ab2f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
1 /*
7470
1a93d3bbe3ee cosmetics: make all references to AC-3 capitalized and hyphenated
jbr
parents: 7138
diff changeset
2 * Common AAC and AC-3 parser prototypes
8629
04423b2f6e0b cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 8545
diff changeset
3 * Copyright (c) 2003 Fabrice Bellard
04423b2f6e0b cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 8545
diff changeset
4 * Copyright (c) 2003 Michael Niedermayer
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
5 *
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
6 * This file is part of FFmpeg.
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
7 *
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
12 *
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
16 * Lesser General Public License for more details.
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
17 *
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
21 */
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
22
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7470
diff changeset
23 #ifndef AVCODEC_AAC_AC3_PARSER_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7470
diff changeset
24 #define AVCODEC_AAC_AC3_PARSER_H
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
25
5162
4394344397d8 include all prerequisites in header files
mru
parents: 4942
diff changeset
26 #include <stdint.h>
4394344397d8 include all prerequisites in header files
mru
parents: 4942
diff changeset
27 #include "avcodec.h"
6735
459fe563a4dc add necessary #includes in headers
mru
parents: 6643
diff changeset
28 #include "parser.h"
5162
4394344397d8 include all prerequisites in header files
mru
parents: 4942
diff changeset
29
8545
a5402e89a80c Factorise enum of AC3 error types to be usable by AAC in the ADTS patch that
superdump
parents: 7760
diff changeset
30 typedef enum {
a5402e89a80c Factorise enum of AC3 error types to be usable by AAC in the ADTS patch that
superdump
parents: 7760
diff changeset
31 AAC_AC3_PARSE_ERROR_SYNC = -1,
a5402e89a80c Factorise enum of AC3 error types to be usable by AAC in the ADTS patch that
superdump
parents: 7760
diff changeset
32 AAC_AC3_PARSE_ERROR_BSID = -2,
a5402e89a80c Factorise enum of AC3 error types to be usable by AAC in the ADTS patch that
superdump
parents: 7760
diff changeset
33 AAC_AC3_PARSE_ERROR_SAMPLE_RATE = -3,
a5402e89a80c Factorise enum of AC3 error types to be usable by AAC in the ADTS patch that
superdump
parents: 7760
diff changeset
34 AAC_AC3_PARSE_ERROR_FRAME_SIZE = -4,
a5402e89a80c Factorise enum of AC3 error types to be usable by AAC in the ADTS patch that
superdump
parents: 7760
diff changeset
35 AAC_AC3_PARSE_ERROR_FRAME_TYPE = -5,
a5402e89a80c Factorise enum of AC3 error types to be usable by AAC in the ADTS patch that
superdump
parents: 7760
diff changeset
36 AAC_AC3_PARSE_ERROR_CRC = -6,
a5402e89a80c Factorise enum of AC3 error types to be usable by AAC in the ADTS patch that
superdump
parents: 7760
diff changeset
37 AAC_AC3_PARSE_ERROR_CHANNEL_CFG = -7,
a5402e89a80c Factorise enum of AC3 error types to be usable by AAC in the ADTS patch that
superdump
parents: 7760
diff changeset
38 } AACAC3ParseError;
a5402e89a80c Factorise enum of AC3 error types to be usable by AAC in the ADTS patch that
superdump
parents: 7760
diff changeset
39
4942
b42e963c8149 cosmetics: rename for consistency after previous aac and ac3 parsers move
aurel
parents: 4941
diff changeset
40 typedef struct AACAC3ParseContext {
7138
1f85910c9ab2 Close parse context.
benoit
parents: 6735
diff changeset
41 ParseContext pc;
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
42 int frame_size;
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
43 int header_size;
6643
4d04fcb5e1e4 Add new_frame_start and need_next_header.
michael
parents: 6642
diff changeset
44 int (*sync)(uint64_t state, struct AACAC3ParseContext *hdr_info,
4d04fcb5e1e4 Add new_frame_start and need_next_header.
michael
parents: 6642
diff changeset
45 int *need_next_header, int *new_frame_start);
6527
32b984487899 Pass AACAC3ParseContext to sync() instead of individual arguments. Patch by
jbr
parents: 5830
diff changeset
46
32b984487899 Pass AACAC3ParseContext to sync() instead of individual arguments. Patch by
jbr
parents: 5830
diff changeset
47 int channels;
32b984487899 Pass AACAC3ParseContext to sync() instead of individual arguments. Patch by
jbr
parents: 5830
diff changeset
48 int sample_rate;
32b984487899 Pass AACAC3ParseContext to sync() instead of individual arguments. Patch by
jbr
parents: 5830
diff changeset
49 int bit_rate;
32b984487899 Pass AACAC3ParseContext to sync() instead of individual arguments. Patch by
jbr
parents: 5830
diff changeset
50 int samples;
9512
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 8977
diff changeset
51 int64_t channel_layout;
6642
866b9ade048c Change aac and ac3 parsers to use ff_combine_frame().
michael
parents: 6639
diff changeset
52
866b9ade048c Change aac and ac3 parsers to use ff_combine_frame().
michael
parents: 6639
diff changeset
53 int remaining_size;
866b9ade048c Change aac and ac3 parsers to use ff_combine_frame().
michael
parents: 6639
diff changeset
54 uint64_t state;
6643
4d04fcb5e1e4 Add new_frame_start and need_next_header.
michael
parents: 6642
diff changeset
55
4d04fcb5e1e4 Add new_frame_start and need_next_header.
michael
parents: 6642
diff changeset
56 int need_next_header;
8977
82ab0b77695b Allow AC-3 parser to modify codec_id.
jbr
parents: 8629
diff changeset
57 enum CodecID codec_id;
4942
b42e963c8149 cosmetics: rename for consistency after previous aac and ac3 parsers move
aurel
parents: 4941
diff changeset
58 } AACAC3ParseContext;
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
59
4942
b42e963c8149 cosmetics: rename for consistency after previous aac and ac3 parsers move
aurel
parents: 4941
diff changeset
60 int ff_aac_ac3_parse(AVCodecParserContext *s1,
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
61 AVCodecContext *avctx,
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
62 const uint8_t **poutbuf, int *poutbuf_size,
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
63 const uint8_t *buf, int buf_size);
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
64
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7470
diff changeset
65 #endif /* AVCODEC_AAC_AC3_PARSER_H */