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 "
bswapdsp.h
"
36
#include "
get_bits.h
"
37
#include "
huffyuvdsp.h
"
38
#include "
huffyuvencdsp.h
"
39
#include "
put_bits.h
"
40
41
#define VLC_BITS 11
42
43
#if HAVE_BIGENDIAN
44
#define B 3
45
#define G 2
46
#define R 1
47
#define A 0
48
#else
49
#define B 0
50
#define G 1
51
#define R 2
52
#define A 3
53
#endif
54
55
typedef
enum
Predictor
{
56
LEFT
= 0,
57
PLANE
,
58
MEDIAN
,
59
}
Predictor
;
60
61
typedef
struct
HYuvContext
{
62
AVCodecContext
*
avctx
;
63
Predictor
predictor
;
64
GetBitContext
gb
;
65
PutBitContext
pb
;
66
int
interlaced
;
67
int
decorrelate
;
68
int
bitstream_bpp
;
69
int
version
;
70
int
yuy2
;
//use yuy2 instead of 422P
71
int
bgr32
;
//use bgr32 instead of bgr24
72
int
width
,
height
;
73
int
flags
;
74
int
context
;
75
int
picture_number
;
76
int
last_slice_end
;
77
uint8_t
*
temp
[3];
78
uint64_t
stats
[3][256];
79
uint8_t
len
[3][256];
80
uint32_t
bits
[3][256];
81
uint32_t
pix_bgr_map
[1<<
VLC_BITS
];
82
VLC
vlc
[6];
//Y,U,V,YY,YU,YV
83
uint8_t
*
bitstream_buffer
;
84
unsigned
int
bitstream_buffer_size
;
85
BswapDSPContext
bdsp
;
86
HuffYUVDSPContext
hdsp
;
87
HuffYUVEncDSPContext
hencdsp
;
88
}
HYuvContext
;
89
90
void
ff_huffyuv_common_init
(
AVCodecContext
*s);
91
void
ff_huffyuv_common_end
(
HYuvContext
*s);
92
int
ff_huffyuv_alloc_temp
(
HYuvContext
*s);
93
int
ff_huffyuv_generate_bits_table
(uint32_t *dst,
const
uint8_t
*len_table);
94
95
#endif
/* AVCODEC_HUFFYUV_H */
Predictor
Predictor
Definition:
huffyuv.h:55
PutBitContext
Definition:
put_bits.h:35
HYuvContext::yuy2
int yuy2
Definition:
huffyuv.h:70
HYuvContext::bitstream_bpp
int bitstream_bpp
Definition:
huffyuv.h:68
huffyuvencdsp.h
Predictor
Definition:
ratecontrol.h:35
HYuvContext::context
int context
Definition:
huffyuv.h:74
HYuvContext::bitstream_buffer_size
unsigned int bitstream_buffer_size
Definition:
huffyuv.h:84
HYuvContext::height
int height
Definition:
huffyuv.h:72
HYuvContext::len
uint8_t len[3][256]
Definition:
huffyuv.h:79
HYuvContext::pix_bgr_map
uint32_t pix_bgr_map[1<< VLC_BITS]
Definition:
huffyuv.h:81
uint8_t
uint8_t
Definition:
audio_convert.c:194
HYuvContext::vlc
VLC vlc[6]
Definition:
huffyuv.h:82
get_bits.h
bitstream reader API header.
ff_huffyuv_alloc_temp
int ff_huffyuv_alloc_temp(HYuvContext *s)
Definition:
huffyuv.c:58
HYuvContext::stats
uint64_t stats[3][256]
Definition:
huffyuv.h:78
PLANE
Definition:
huffyuv.h:57
HYuvContext::bitstream_buffer
uint8_t * bitstream_buffer
Definition:
huffyuv.h:83
HYuvContext::flags
int flags
Definition:
huffyuv.h:73
ff_huffyuv_common_init
void ff_huffyuv_common_init(AVCodecContext *s)
Definition:
huffyuv.c:76
HuffYUVEncDSPContext
Definition:
huffyuvencdsp.h:24
HYuvContext::bgr32
int bgr32
Definition:
huffyuv.h:71
VLC
Definition:
get_bits.h:64
HYuvContext::bits
uint32_t bits[3][256]
Definition:
huffyuv.h:80
VLC_BITS
#define VLC_BITS
Definition:
huffyuv.h:41
HYuvContext
Definition:
huffyuv.h:61
HYuvContext::decorrelate
int decorrelate
Definition:
huffyuv.h:67
HYuvContext::width
int width
Definition:
huffyuv.h:72
HYuvContext::last_slice_end
int last_slice_end
Definition:
huffyuv.h:76
LEFT
Definition:
huffyuv.h:56
huffyuvdsp.h
ff_huffyuv_common_end
void ff_huffyuv_common_end(HYuvContext *s)
Definition:
huffyuv.c:90
HYuvContext::temp
uint8_t * temp[3]
Definition:
huffyuv.h:77
HYuvContext::picture_number
int picture_number
Definition:
huffyuv.h:75
avcodec.h
Libavcodec external API header.
HYuvContext::hdsp
HuffYUVDSPContext hdsp
Definition:
huffyuv.h:86
AVCodecContext
main external API structure.
Definition:
avcodec.h:1050
BswapDSPContext
Definition:
bswapdsp.h:24
HYuvContext::interlaced
int interlaced
Definition:
huffyuv.h:66
ff_huffyuv_generate_bits_table
int ff_huffyuv_generate_bits_table(uint32_t *dst, const uint8_t *len_table)
Definition:
huffyuv.c:39
HYuvContext::hencdsp
HuffYUVEncDSPContext hencdsp
Definition:
huffyuv.h:87
HYuvContext::version
int version
Definition:
huffyuv.h:69
HYuvContext::predictor
Predictor predictor
Definition:
huffyuv.h:63
HYuvContext::avctx
AVCodecContext * avctx
Definition:
huffyuv.h:62
HYuvContext::gb
GetBitContext gb
Definition:
huffyuv.h:64
HYuvContext::pb
PutBitContext pb
Definition:
huffyuv.h:65
MEDIAN
Definition:
huffyuv.h:58
HuffYUVDSPContext
Definition:
huffyuvdsp.h:24
GetBitContext
Definition:
get_bits.h:53
bswapdsp.h
HYuvContext::bdsp
BswapDSPContext bdsp
Definition:
huffyuv.h:85
put_bits.h
bitstream writer API
Generated on Sun Apr 23 2017 21:50:19 for Libav by
1.8.8