FFmpeg
hqx.h
Go to the documentation of this file.
1 /*
2  * Canopus HQX 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_HQX_H
22 #define AVCODEC_HQX_H
23 
24 #include <stdint.h>
25 
26 #include "libavutil/frame.h"
27 #include "libavutil/mem.h"
28 #include "get_bits.h"
29 #include "hqxdsp.h"
30 
31 enum HQXACMode {
32  HQX_AC_Q0 = 0,
39 };
40 
41 typedef struct HQXLUT {
42  int16_t lev;
44  int8_t bits;
45 } HQXLUT;
46 
47 typedef struct HQXAC {
49  const HQXLUT *lut;
50 } HQXAC;
51 
52 struct HQXContext;
53 
54 typedef int (*mb_decode_func)(struct HQXContext *ctx,
55  int slice_no, int x, int y);
56 
57 typedef struct HQXSlice {
59  DECLARE_ALIGNED(16, int16_t, block)[16][64];
60 } HQXSlice;
61 
62 typedef struct HQXContext {
64  HQXSlice slice[16];
65 
68 
69  int format, dcb, width, height;
71 
73  unsigned int data_size;
74  uint32_t slice_off[17];
75 
77  VLC dc_vlc[3];
78 } HQXContext;
79 
80 #define HQX_DC_VLC_BITS 9
81 
82 extern const HQXAC ff_hqx_ac[NUM_HQX_AC];
83 
85 
86 #endif /* AVCODEC_HQX_H */
#define extra_bits(eb)
Definition: intrax8.c:159
Definition: hqx.h:47
This structure describes decoded (raw) audio or video data.
Definition: frame.h:300
int interlaced
Definition: hqx.h:70
Memory handling functions.
int(* mb_decode_func)(struct HQXContext *ctx, int slice_no, int x, int y)
Definition: hqx.h:54
GetBitContext gb
Definition: hqx.h:58
Definition: hqx.h:35
mb_decode_func decode_func
Definition: hqx.h:67
int ff_hqx_init_vlcs(HQXContext *ctx)
Definition: hqxvlc.c:2151
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample format(the sample packing is implied by the sample format) and sample rate.The lists are not just lists
Definition: hqx.h:34
const HQXAC ff_hqx_ac[NUM_HQX_AC]
Definition: hqxvlc.c:2132
uint8_t * src
Definition: hqx.h:72
The exact code depends on how similar the blocks are and how related they are to the block
uint8_t
uint8_t run
Definition: hqx.h:43
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
Definition: mem.h:112
#define height
bitstream reader API header.
const HQXLUT * lut
Definition: hqx.h:49
int lut_bits
Definition: hqx.h:48
Definition: hqx.h:62
Definition: vlc.h:26
reference-counted frame API
Definition: hqx.h:57
Definition: hqx.h:36
AVFormatContext * ctx
Definition: movenc.c:48
HQX DSP routines.
HQXACMode
Definition: hqx.h:31
int width
Definition: hqx.h:69
Definition: hqx.h:32
int8_t bits
Definition: hqx.h:44
Definition: hqx.h:41
int16_t lev
Definition: hqx.h:42
int
unsigned int data_size
Definition: hqx.h:73
AVFrame * pic
Definition: hqx.h:66
Definition: hqx.h:38
VLC cbp_vlc
Definition: hqx.h:76
Definition: hqx.h:33
HQXDSPContext hqxdsp
Definition: hqx.h:63