Go to the documentation of this file.
1 /*
2  * DCA compatible decoder - huffman tables
3  * Copyright (C) 2004 Gildas Bazin
4  * Copyright (C) 2007 Konstantin Shishkov
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with FFmpeg; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
26 #include "libavutil/common.h"
28 #include "avcodec.h"
29 #include "get_bits.h"
30 #include "put_bits.h"
32 #define DCA_CODE_BOOKS 10
33 #define DCA_BITALLOC_12_COUNT 5
35 typedef struct DCAVLC {
36  int offset; ///< Code values offset
37  int max_depth; ///< Parameter for get_vlc2()
38  VLC vlc[7]; ///< Actual codes
39 } DCAVLC;
46 extern VLC ff_dca_vlc_tnl_grp[5];
47 extern VLC ff_dca_vlc_tnl_scf;
48 extern VLC ff_dca_vlc_damp;
49 extern VLC ff_dca_vlc_dph;
52 extern VLC ff_dca_vlc_rsd_amp;
53 extern VLC ff_dca_vlc_avg_g3;
54 extern VLC ff_dca_vlc_st_grid;
55 extern VLC ff_dca_vlc_grid_2;
56 extern VLC ff_dca_vlc_grid_3;
57 extern VLC ff_dca_vlc_rsd;
59 av_cold void ff_dca_init_vlcs(void);
60 uint32_t ff_dca_vlc_calc_quant_bits(int *values, uint8_t n, uint8_t sel, uint8_t abits);
61 void ff_dca_vlc_enc_quant(PutBitContext *pb, int *values, uint8_t n, uint8_t sel, uint8_t abits);
62 uint32_t ff_dca_vlc_calc_alloc_bits(int *values, uint8_t n, uint8_t sel);
65 #endif /* AVCODEC_DCAHUFF_H */
VLC vlc[7]
Actual codes.
Definition: dcahuff.h:38
VLC ff_dca_vlc_dph
Definition: dcahuff.c:1253
DCAVLC ff_dca_vlc_quant_index[DCA_CODE_BOOKS]
Definition: dcahuff.c:1248
VLC ff_dca_vlc_rsd_amp
Definition: dcahuff.c:1256
#define av_cold
Definition: attributes.h:88
bitstream reader API header.
uint32_t ff_dca_vlc_calc_quant_bits(int *values, uint8_t n, uint8_t sel, uint8_t abits)
Definition: dcahuff.c:1338
VLC ff_dca_vlc_avg_g3
Definition: dcahuff.c:1257
DCAVLC ff_dca_vlc_bit_allocation
Definition: dcahuff.c:1245
VLC ff_dca_vlc_st_grid
Definition: dcahuff.c:1258
uint32_t ff_dca_vlc_calc_alloc_bits(int *values, uint8_t n, uint8_t sel)
Definition: dcahuff.c:1360
VLC ff_dca_vlc_rsd_apprx
Definition: dcahuff.c:1255
int offset
Code values offset.
Definition: dcahuff.h:36
DCAVLC ff_dca_vlc_transition_mode
Definition: dcahuff.c:1246
Definition: vlc.h:26
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return values
VLC ff_dca_vlc_tnl_grp[5]
Definition: dcahuff.c:1250
av_cold void ff_dca_init_vlcs(void)
Definition: dcahuff.c:1263
void ff_dca_vlc_enc_quant(PutBitContext *pb, int *values, uint8_t n, uint8_t sel, uint8_t abits)
Definition: dcahuff.c:1350
Libavcodec external API header.
Definition: dcahuff.h:32
void ff_dca_vlc_enc_alloc(PutBitContext *pb, int *values, uint8_t n, uint8_t sel)
Definition: dcahuff.c:1371
VLC ff_dca_vlc_grid_2
Definition: dcahuff.c:1259
VLC ff_dca_vlc_fst_rsd_amp
Definition: dcahuff.c:1254
common internal and external API header
int max_depth
Parameter for get_vlc2()
Definition: dcahuff.h:37
VLC ff_dca_vlc_grid_3
Definition: dcahuff.c:1260
VLC ff_dca_vlc_tnl_scf
Definition: dcahuff.c:1251
DCAVLC ff_dca_vlc_scale_factor
Definition: dcahuff.c:1247
VLC ff_dca_vlc_rsd
Definition: dcahuff.c:1261
VLC ff_dca_vlc_damp
Definition: dcahuff.c:1252
Definition: dcahuff.h:35
bitstream writer API