Statistics
| Branch: | Revision:

ffmpeg / libavcodec / ac3enc_fixed.h @ 2912e87a

History | View | Annotate | Download (1.96 KB)

1
/*
2
 * The simplest AC-3 encoder
3
 * Copyright (c) 2000 Fabrice Bellard
4
 * Copyright (c) 2006-2010 Justin Ruggles <justin.ruggles@gmail.com>
5
 * Copyright (c) 2006-2010 Prakash Punnoor <prakash@punnoor.de>
6
 *
7
 * This file is part of Libav.
8
 *
9
 * Libav is free software; you can redistribute it and/or
10
 * modify it under the terms of the GNU Lesser General Public
11
 * License as published by the Free Software Foundation; either
12
 * version 2.1 of the License, or (at your option) any later version.
13
 *
14
 * Libav is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
 * Lesser General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Lesser General Public
20
 * License along with Libav; if not, write to the Free Software
21
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
 */
23

    
24
/**
25
 * @file
26
 * fixed-point AC-3 encoder header.
27
 */
28

    
29
#ifndef AVCODEC_AC3ENC_FIXED_H
30
#define AVCODEC_AC3ENC_FIXED_H
31

    
32
#include <stdint.h>
33

    
34

    
35
typedef int16_t SampleType;
36
typedef int32_t CoefType;
37
typedef int64_t CoefSumType;
38

    
39
#define MAC_COEF(d,a,b) MAC64(d,a,b)
40

    
41

    
42
/**
43
 * Compex number.
44
 * Used in fixed-point MDCT calculation.
45
 */
46
typedef struct IComplex {
47
    int16_t re,im;
48
} IComplex;
49

    
50
typedef struct AC3MDCTContext {
51
    const int16_t *window;                  ///< MDCT window function
52
    int nbits;                              ///< log2(transform size)
53
    int16_t *costab;                        ///< FFT cos table
54
    int16_t *sintab;                        ///< FFT sin table
55
    int16_t *xcos1;                         ///< MDCT cos table
56
    int16_t *xsin1;                         ///< MDCT sin table
57
    int16_t *rot_tmp;                       ///< temp buffer for pre-rotated samples
58
    IComplex *cplx_tmp;                     ///< temp buffer for complex pre-rotated samples
59
} AC3MDCTContext;
60

    
61
#endif /* AVCODEC_AC3ENC_FIXED_H */