blob: 608e2ca1a6efdbba44d3ff5b698c18da61916de4
1 | /* |
2 | * Canopus HQ/HQA decoder |
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_HQ_HQA_H |
22 | #define AVCODEC_HQ_HQA_H |
23 | |
24 | #include <stdint.h> |
25 | |
26 | #include "avcodec.h" |
27 | #include "bytestream.h" |
28 | #include "hq_hqadsp.h" |
29 | #include "vlc.h" |
30 | |
31 | #define NUM_HQ_AC_ENTRIES 746 |
32 | #define NUM_HQ_PROFILES 22 |
33 | #define NUM_HQ_QUANTS 16 |
34 | |
35 | typedef struct HQContext { |
36 | AVCodecContext *avctx; |
37 | HQDSPContext hqhqadsp; |
38 | GetByteContext gbc; |
39 | |
40 | VLC hq_ac_vlc; |
41 | VLC hqa_cbp_vlc; |
42 | DECLARE_ALIGNED(16, int16_t, block)[12][64]; |
43 | } HQContext; |
44 | |
45 | typedef struct HQProfile { |
46 | const uint8_t *perm_tab; |
47 | int width, height; |
48 | int num_slices; |
49 | int tab_w, tab_h; |
50 | } HQProfile; |
51 | |
52 | extern const int32_t * const ff_hq_quants[16][2][4]; |
53 | extern const HQProfile ff_hq_profile[NUM_HQ_PROFILES]; |
54 | |
55 | extern const uint8_t ff_hq_ac_skips[NUM_HQ_AC_ENTRIES]; |
56 | extern const int16_t ff_hq_ac_syms [NUM_HQ_AC_ENTRIES]; |
57 | |
58 | int ff_hq_init_vlcs(HQContext *c); |
59 | |
60 | #endif /* AVCODEC_HQ_HQA_H */ |
61 |