FFmpeg
4.4.5
libavcodec
hq_hqa.h
Go to the documentation of this file.
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 "
libavutil/mem_internal.h
"
27
28
#include "
avcodec.h
"
29
#include "
bytestream.h
"
30
#include "
hq_hqadsp.h
"
31
#include "
vlc.h
"
32
33
#define NUM_HQ_AC_ENTRIES 746
34
#define NUM_HQ_PROFILES 22
35
#define NUM_HQ_QUANTS 16
36
37
typedef
struct
HQContext
{
38
AVCodecContext
*
avctx
;
39
HQDSPContext
hqhqadsp
;
40
GetByteContext
gbc
;
41
42
VLC
hq_ac_vlc
;
43
VLC
hqa_cbp_vlc
;
44
DECLARE_ALIGNED
(16, int16_t,
block
)[12][64];
45
}
HQContext
;
46
47
typedef
struct
HQProfile
{
48
const
uint8_t
*
perm_tab
;
49
int
width
,
height
;
50
int
num_slices
;
51
int
tab_w
,
tab_h
;
52
}
HQProfile
;
53
54
extern
const
int32_t
*
const
ff_hq_quants
[16][2][4];
55
extern
const
HQProfile
ff_hq_profile
[
NUM_HQ_PROFILES
];
56
57
extern
const
uint8_t
ff_hq_ac_skips
[
NUM_HQ_AC_ENTRIES
];
58
extern
const
int16_t
ff_hq_ac_syms
[
NUM_HQ_AC_ENTRIES
];
59
60
int
ff_hq_init_vlcs
(
HQContext
*
c
);
61
62
#endif
/* AVCODEC_HQ_HQA_H */
uint8_t
uint8_t
Definition:
audio_convert.c:194
int32_t
int32_t
Definition:
audio_convert.c:194
avcodec.h
Libavcodec external API header.
bytestream.h
DECLARE_ALIGNED
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
Definition:
mem.h:117
ff_hq_profile
const HQProfile ff_hq_profile[NUM_HQ_PROFILES]
Definition:
hq_hqadata.c:8343
ff_hq_quants
const int32_t *const ff_hq_quants[16][2][4]
Definition:
hq_hqadata.c:1126
NUM_HQ_AC_ENTRIES
#define NUM_HQ_AC_ENTRIES
Definition:
hq_hqa.h:33
NUM_HQ_PROFILES
#define NUM_HQ_PROFILES
Definition:
hq_hqa.h:34
ff_hq_ac_skips
const uint8_t ff_hq_ac_skips[NUM_HQ_AC_ENTRIES]
Definition:
hq_hqadata.c:1292
ff_hq_init_vlcs
int ff_hq_init_vlcs(HQContext *c)
Definition:
hq_hqadata.c:8368
ff_hq_ac_syms
const int16_t ff_hq_ac_syms[NUM_HQ_AC_ENTRIES]
Definition:
hq_hqadata.c:1342
hq_hqadsp.h
HQ/HQA variant of AAN IDCT It differs from the standard AAN IDCT in precision and in the second stage...
mem_internal.h
AVCodecContext
main external API structure.
Definition:
avcodec.h:536
GetByteContext
Definition:
bytestream.h:33
HQContext
Definition:
hq_hqa.h:37
HQContext::avctx
AVCodecContext * avctx
Definition:
hq_hqa.h:38
HQContext::gbc
GetByteContext gbc
Definition:
hq_hqa.h:40
HQContext::hqhqadsp
HQDSPContext hqhqadsp
Definition:
hq_hqa.h:39
HQContext::hq_ac_vlc
VLC hq_ac_vlc
Definition:
hq_hqa.h:42
HQContext::hqa_cbp_vlc
VLC hqa_cbp_vlc
Definition:
hq_hqa.h:43
HQContext::block
int16_t block[12][64]
Definition:
hq_hqa.h:44
HQDSPContext
Definition:
hq_hqadsp.h:32
HQProfile
Definition:
hq_hqa.h:47
HQProfile::perm_tab
const uint8_t * perm_tab
Definition:
hq_hqa.h:48
HQProfile::num_slices
int num_slices
Definition:
hq_hqa.h:50
HQProfile::width
int width
Definition:
hq_hqa.h:49
HQProfile::height
int height
Definition:
hq_hqa.h:49
HQProfile::tab_h
int tab_h
Definition:
hq_hqa.h:51
HQProfile::tab_w
int tab_w
Definition:
hq_hqa.h:51
VLC
Definition:
vlc.h:26
vlc.h
c
static double c[64]
Definition:
vsrc_mptestsrc.c:92
Generated on Mon Jul 29 2024 05:33:29 for FFmpeg by
1.9.1