~ppsspp/ppsspp/ffmpeg-upstream

1 by Sérgio Benjamim
FFmpeg 2.7.1 source for ppsspp.
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 "get_bits.h"
28
#include "bytestream.h"
29
#include "hq_hqadsp.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 */