FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
dcadec.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016 foo86
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_DCADEC_H
22 #define AVCODEC_DCADEC_H
23 
24 #include "libavutil/common.h"
25 #include "libavutil/float_dsp.h"
26 
27 #include "avcodec.h"
28 #include "get_bits.h"
29 #include "dca.h"
30 #include "dcadsp.h"
31 #include "dca_core.h"
32 #include "dca_exss.h"
33 #include "dca_xll.h"
34 
35 #define DCA_BUFFER_PADDING_SIZE 1024
36 
37 #define DCA_PACKET_CORE 0x01
38 #define DCA_PACKET_EXSS 0x02
39 #define DCA_PACKET_XLL 0x04
40 #define DCA_PACKET_RECOVERY 0x08
41 
42 typedef struct DCAContext {
43  const AVClass *class; ///< class for AVOptions
45 
46  DCACoreDecoder core; ///< Core decoder context
47  DCAExssParser exss; ///< EXSS parser context
48  DCAXllDecoder xll; ///< XLL decoder context
49 
51 
52  uint8_t *buffer; ///< Packet buffer
53  unsigned int buffer_size;
54 
55  int packet; ///< Packet flags
56 
57  int core_residual_valid; ///< Core valid for residual decoding
58 
59  int request_channel_layout; ///< Converted from avctx.request_channel_layout
60  int core_only; ///< Core only decoding flag
61 } DCAContext;
62 
63 int ff_dca_set_channel_layout(AVCodecContext *avctx, int *ch_remap, int dca_mask);
64 
65 int ff_dca_check_crc(GetBitContext *s, int p1, int p2);
66 
68  int *coeff_l, int nsamples, int ch_mask);
69 void ff_dca_downmix_to_stereo_float(AVFloatDSPContext *fdsp, float **samples,
70  int *coeff_l, int nsamples, int ch_mask);
71 
72 static inline int ff_dca_seek_bits(GetBitContext *s, int p)
73 {
74  if (p < s->index || p > s->size_in_bits)
75  return -1;
76  s->index = p;
77  return 0;
78 }
79 
80 #endif
static int ff_dca_seek_bits(GetBitContext *s, int p)
Definition: dcadec.h:72
const char * s
Definition: avisynth_c.h:631
DCACoreDecoder core
Core decoder context.
Definition: dcadec.h:46
int core_only
Core only decoding flag.
Definition: dcadec.h:60
int packet
Packet flags.
Definition: dcadec.h:55
uint8_t * buffer
Packet buffer.
Definition: dcadec.h:52
uint8_t
void ff_dca_downmix_to_stereo_float(AVFloatDSPContext *fdsp, float **samples, int *coeff_l, int nsamples, int ch_mask)
Definition: dcadec.c:137
bitstream reader API header.
AVCodecContext * avctx
Definition: dcadec.h:44
DCAExssParser exss
EXSS parser context.
Definition: dcadec.h:47
void ff_dca_downmix_to_stereo_fixed(DCADSPContext *dcadsp, int32_t **samples, int *coeff_l, int nsamples, int ch_mask)
Definition: dcadec.c:106
int size_in_bits
Definition: get_bits.h:57
int32_t
DCAXllDecoder xll
XLL decoder context.
Definition: dcadec.h:48
int core_residual_valid
Core valid for residual decoding.
Definition: dcadec.h:57
int ff_dca_set_channel_layout(AVCodecContext *avctx, int *ch_remap, int dca_mask)
Definition: dcadec.c:32
Libavcodec external API header.
main external API structure.
Definition: avcodec.h:1532
Describe the class of an AVClass context structure.
Definition: log.h:67
int index
Definition: gxfenc.c:89
DCADSPContext dcadsp
Definition: dcadec.h:50
common internal and external API header
int request_channel_layout
Converted from avctx.request_channel_layout.
Definition: dcadec.h:59
unsigned int buffer_size
Definition: dcadec.h:53
int ff_dca_check_crc(GetBitContext *s, int p1, int p2)
Definition: dcadec.c:97