Libav
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavcodec
huffyuv.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2002-2003 Michael Niedermayer <michaelni@gmx.at>
3
*
4
* see http://www.pcisys.net/~melanson/codecs/huffyuv.txt for a description of
5
* the algorithm used
6
*
7
* This file is part of Libav.
8
*
9
* Libav is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU Lesser General Public
11
* License as published by the Free Software Foundation; either
12
* version 2.1 of the License, or (at your option) any later version.
13
*
14
* Libav is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* Lesser General Public License for more details.
18
*
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with Libav; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
*/
23
29
#ifndef AVCODEC_HUFFYUV_H
30
#define AVCODEC_HUFFYUV_H
31
32
#include <stdint.h>
33
34
#include "
avcodec.h
"
35
#include "
dsputil.h
"
36
#include "
get_bits.h
"
37
#include "
put_bits.h
"
38
39
#define VLC_BITS 11
40
41
#if HAVE_BIGENDIAN
42
#define B 3
43
#define G 2
44
#define R 1
45
#define A 0
46
#else
47
#define B 0
48
#define G 1
49
#define R 2
50
#define A 3
51
#endif
52
53
typedef
enum
Predictor
{
54
LEFT
= 0,
55
PLANE
,
56
MEDIAN
,
57
}
Predictor
;
58
59
typedef
struct
HYuvContext
{
60
AVCodecContext
*
avctx
;
61
Predictor
predictor
;
62
GetBitContext
gb
;
63
PutBitContext
pb
;
64
int
interlaced
;
65
int
decorrelate
;
66
int
bitstream_bpp
;
67
int
version
;
68
int
yuy2
;
//use yuy2 instead of 422P
69
int
bgr32
;
//use bgr32 instead of bgr24
70
int
width
,
height
;
71
int
flags
;
72
int
context
;
73
int
picture_number
;
74
int
last_slice_end
;
75
uint8_t
*
temp
[3];
76
uint64_t
stats
[3][256];
77
uint8_t
len
[3][256];
78
uint32_t
bits
[3][256];
79
uint32_t
pix_bgr_map
[1<<
VLC_BITS
];
80
VLC
vlc
[6];
//Y,U,V,YY,YU,YV
81
uint8_t
*
bitstream_buffer
;
82
unsigned
int
bitstream_buffer_size
;
83
DSPContext
dsp
;
84
}
HYuvContext
;
85
86
void
ff_huffyuv_common_init
(
AVCodecContext
*s);
87
void
ff_huffyuv_common_end
(
HYuvContext
*s);
88
int
ff_huffyuv_alloc_temp
(
HYuvContext
*s);
89
int
ff_huffyuv_generate_bits_table
(uint32_t *dst,
const
uint8_t
*len_table);
90
91
#endif
/* AVCODEC_HUFFYUV_H */
Predictor
Predictor
Definition:
huffyuv.h:53
PutBitContext
Definition:
put_bits.h:40
HYuvContext::yuy2
int yuy2
Definition:
huffyuv.h:68
HYuvContext::bitstream_bpp
int bitstream_bpp
Definition:
huffyuv.h:66
Predictor
Definition:
ratecontrol.h:35
HYuvContext::context
int context
Definition:
huffyuv.h:72
HYuvContext::bitstream_buffer_size
unsigned int bitstream_buffer_size
Definition:
huffyuv.h:82
HYuvContext::height
int height
Definition:
huffyuv.h:70
HYuvContext::len
uint8_t len[3][256]
Definition:
huffyuv.h:77
HYuvContext::pix_bgr_map
uint32_t pix_bgr_map[1<< VLC_BITS]
Definition:
huffyuv.h:79
uint8_t
uint8_t
Definition:
audio_convert.c:194
HYuvContext::vlc
VLC vlc[6]
Definition:
huffyuv.h:80
get_bits.h
bitstream reader API header.
ff_huffyuv_alloc_temp
int ff_huffyuv_alloc_temp(HYuvContext *s)
Definition:
huffyuv.c:57
HYuvContext::stats
uint64_t stats[3][256]
Definition:
huffyuv.h:76
PLANE
Definition:
huffyuv.h:55
HYuvContext::bitstream_buffer
uint8_t * bitstream_buffer
Definition:
huffyuv.h:81
HYuvContext::flags
int flags
Definition:
huffyuv.h:71
ff_huffyuv_common_init
void ff_huffyuv_common_init(AVCodecContext *s)
Definition:
huffyuv.c:75
HYuvContext::bgr32
int bgr32
Definition:
huffyuv.h:69
VLC
Definition:
get_bits.h:64
HYuvContext::bits
uint32_t bits[3][256]
Definition:
huffyuv.h:78
VLC_BITS
#define VLC_BITS
Definition:
huffyuv.h:39
HYuvContext
Definition:
huffyuv.h:59
HYuvContext::decorrelate
int decorrelate
Definition:
huffyuv.h:65
HYuvContext::width
int width
Definition:
huffyuv.h:70
HYuvContext::last_slice_end
int last_slice_end
Definition:
huffyuv.h:74
LEFT
Definition:
huffyuv.h:54
ff_huffyuv_common_end
void ff_huffyuv_common_end(HYuvContext *s)
Definition:
huffyuv.c:89
HYuvContext::temp
uint8_t * temp[3]
Definition:
huffyuv.h:75
HYuvContext::picture_number
int picture_number
Definition:
huffyuv.h:73
avcodec.h
Libavcodec external API header.
AVCodecContext
main external API structure.
Definition:
avcodec.h:1054
HYuvContext::interlaced
int interlaced
Definition:
huffyuv.h:64
ff_huffyuv_generate_bits_table
int ff_huffyuv_generate_bits_table(uint32_t *dst, const uint8_t *len_table)
Definition:
huffyuv.c:38
HYuvContext::version
int version
Definition:
huffyuv.h:67
HYuvContext::predictor
Predictor predictor
Definition:
huffyuv.h:61
HYuvContext::avctx
AVCodecContext * avctx
Definition:
huffyuv.h:60
HYuvContext::gb
GetBitContext gb
Definition:
huffyuv.h:62
HYuvContext::pb
PutBitContext pb
Definition:
huffyuv.h:63
MEDIAN
Definition:
huffyuv.h:56
GetBitContext
Definition:
get_bits.h:53
dsputil.h
DSP utils.
HYuvContext::dsp
DSPContext dsp
Definition:
huffyuv.h:83
DSPContext
DSPContext.
Definition:
dsputil.h:124
put_bits.h
bitstream writer API
Generated on Mon Jul 21 2014 05:28:28 for Libav by
1.8.7