35c6ce76 |
/*
* Canopus HQX decoder
* |
2cf52171 |
* This file is part of FFmpeg. |
35c6ce76 |
* |
2cf52171 |
* FFmpeg is free software; you can redistribute it and/or |
35c6ce76 |
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* |
2cf52171 |
* FFmpeg is distributed in the hope that it will be useful, |
35c6ce76 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public |
2cf52171 |
* License along with FFmpeg; if not, write to the Free Software |
35c6ce76 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVCODEC_HQX_H
#define AVCODEC_HQX_H
#include <stdint.h> |
453642f8 |
#include "libavutil/frame.h" |
35c6ce76 |
#include "libavutil/mem.h"
#include "get_bits.h" |
ea031b75 |
#include "hqxdsp.h" |
35c6ce76 |
enum HQXACMode {
HQX_AC_Q0 = 0,
HQX_AC_Q8,
HQX_AC_Q16,
HQX_AC_Q32,
HQX_AC_Q64,
HQX_AC_Q128,
NUM_HQX_AC
};
typedef struct HQXLUT {
int16_t lev;
uint8_t run;
int8_t bits;
} HQXLUT;
typedef struct HQXAC {
int lut_bits, extra_bits;
const HQXLUT *lut;
} HQXAC;
|
453642f8 |
struct HQXContext;
|
5b5338f6 |
typedef int (*mb_decode_func)(struct HQXContext *ctx,
int slice_no, int x, int y);
typedef struct HQXSlice {
GetBitContext gb;
DECLARE_ALIGNED(16, int16_t, block)[16][64];
} HQXSlice; |
453642f8 |
|
35c6ce76 |
typedef struct HQXContext { |
ea031b75 |
HQXDSPContext hqxdsp; |
5b5338f6 |
HQXSlice slice[16]; |
ea031b75 |
|
453642f8 |
AVFrame *pic;
mb_decode_func decode_func;
|
35c6ce76 |
int format, dcb, width, height;
int interlaced;
|
453642f8 |
uint8_t *src;
unsigned int data_size;
uint32_t slice_off[17];
|
35c6ce76 |
VLC cbp_vlc;
VLC dc_vlc[3];
} HQXContext;
#define HQX_DC_VLC_BITS 9
extern const HQXAC ff_hqx_ac[NUM_HQX_AC];
int ff_hqx_init_vlcs(HQXContext *ctx);
#endif /* AVCODEC_HQX_H */ |