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 "
bswapdsp.h
"
36
#include "
get_bits.h
"
37
#include "
huffyuvdsp.h
"
38
#include "
huffyuvencdsp.h
"
39
#include "
put_bits.h
"
40
#include "
lossless_videodsp.h
"
41
42
#define VLC_BITS 12
43
44
#define MAX_BITS 16
45
#define MAX_N (1<<MAX_BITS)
46
#define MAX_VLC_N 16384
47
48
typedef
enum
Predictor
{
49
LEFT
= 0,
50
PLANE
,
51
MEDIAN
,
52
}
Predictor
;
53
54
typedef
struct
HYuvContext
{
55
AVClass
*
class
;
56
AVCodecContext
*
avctx
;
57
Predictor
predictor
;
58
GetBitContext
gb
;
59
PutBitContext
pb
;
60
int
interlaced
;
61
int
decorrelate
;
62
int
bitstream_bpp
;
63
int
version
;
64
int
yuy2
;
//use yuy2 instead of 422P
65
int
bgr32
;
//use bgr32 instead of bgr24
66
int
bps
;
67
int
n
;
// 1<<bps
68
int
vlc_n
;
// number of vlc codes (FFMIN(1<<bps, MAX_VLC_N))
69
int
alpha
;
70
int
chroma
;
71
int
yuv
;
72
int
chroma_h_shift
;
73
int
chroma_v_shift
;
74
int
width
,
height
;
75
int
flags
;
76
int
context
;
77
int
picture_number
;
78
int
last_slice_end
;
79
uint8_t
*
temp
[3];
80
uint16_t *
temp16
[3];
///< identical to temp but 16bit type
81
uint64_t
stats
[4][
MAX_VLC_N
];
82
uint8_t
len
[4][
MAX_VLC_N
];
83
uint32_t
bits
[4][
MAX_VLC_N
];
84
uint32_t
pix_bgr_map
[1<<
VLC_BITS
];
85
VLC
vlc
[8];
//Y,U,V,A,YY,YU,YV,AA
86
uint8_t
*
bitstream_buffer
;
87
unsigned
int
bitstream_buffer_size
;
88
BswapDSPContext
bdsp
;
89
HuffYUVDSPContext
hdsp
;
90
HuffYUVEncDSPContext
hencdsp
;
91
LLVidDSPContext
llviddsp
;
92
int
non_determ
;
// non-deterministic, multi-threaded encoder allowed
93
}
HYuvContext
;
94
95
void
ff_huffyuv_common_init
(
AVCodecContext
*
s
);
96
void
ff_huffyuv_common_end
(
HYuvContext
*
s
);
97
int
ff_huffyuv_alloc_temp
(
HYuvContext
*
s
);
98
int
ff_huffyuv_generate_bits_table
(uint32_t *dst,
const
uint8_t
*len_table,
int
n
);
99
100
#endif
/* AVCODEC_HUFFYUV_H */
Generated on Sun Sep 14 2014 18:55:57 for FFmpeg by
1.8.2