FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
huffyuv.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2002-2014 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 FFmpeg.
8
*
9
* FFmpeg 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
* FFmpeg 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 FFmpeg; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
*/
23
24
/**
25
* @file
26
* huffyuv codec for libavcodec.
27
*/
28
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
#include "
lossless_videodsp.h
"
39
40
#define VLC_BITS 11
41
42
#define MAX_BITS 16
43
#define MAX_N (1<<MAX_BITS)
44
#define MAX_VLC_N 16384
45
46
#if HAVE_BIGENDIAN
47
#define B 3
48
#define G 2
49
#define R 1
50
#define A 0
51
#else
52
#define B 0
53
#define G 1
54
#define R 2
55
#define A 3
56
#endif
57
58
typedef
enum
Predictor
{
59
LEFT
= 0,
60
PLANE
,
61
MEDIAN
,
62
}
Predictor
;
63
64
typedef
struct
HYuvContext
{
65
AVCodecContext
*
avctx
;
66
Predictor
predictor
;
67
GetBitContext
gb
;
68
PutBitContext
pb
;
69
int
interlaced
;
70
int
decorrelate
;
71
int
bitstream_bpp
;
72
int
version
;
73
int
yuy2
;
//use yuy2 instead of 422P
74
int
bgr32
;
//use bgr32 instead of bgr24
75
int
bps
;
76
int
n
;
// 1<<bps
77
int
vlc_n
;
// number of vlc codes (FFMIN(1<<bps, MAX_VLC_N))
78
int
alpha
;
79
int
chroma
;
80
int
yuv
;
81
int
chroma_h_shift
;
82
int
chroma_v_shift
;
83
int
width
,
height
;
84
int
flags
;
85
int
context
;
86
int
picture_number
;
87
int
last_slice_end
;
88
uint8_t
*
temp
[3];
89
uint16_t *
temp16
[3];
///< identical to temp but 16bit type
90
uint64_t
stats
[4][
MAX_VLC_N
];
91
uint8_t
len
[4][
MAX_VLC_N
];
92
uint32_t
bits
[4][
MAX_VLC_N
];
93
uint32_t
pix_bgr_map
[1<<
VLC_BITS
];
94
VLC
vlc
[8];
//Y,U,V,A,YY,YU,YV,AA
95
uint8_t
*
bitstream_buffer
;
96
unsigned
int
bitstream_buffer_size
;
97
DSPContext
dsp
;
98
LLVidDSPContext
llviddsp
;
99
}
HYuvContext
;
100
101
void
ff_huffyuv_common_init
(
AVCodecContext
*
s
);
102
void
ff_huffyuv_common_end
(
HYuvContext
*
s
);
103
int
ff_huffyuv_alloc_temp
(
HYuvContext
*
s
);
104
int
ff_huffyuv_generate_bits_table
(uint32_t *dst,
const
uint8_t
*len_table,
int
n
);
105
106
#endif
/* AVCODEC_HUFFYUV_H */
Generated on Sun Mar 23 2014 23:49:57 for FFmpeg by
1.8.2