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
dnxhdenc.h
Go to the documentation of this file.
1
/*
2
* VC3/DNxHD encoder structure definitions and prototypes
3
* Copyright (c) 2007 Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
4
*
5
* VC-3 encoder funded by the British Broadcasting Corporation
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
#ifndef AVCODEC_DNXHDENC_H
25
#define AVCODEC_DNXHDENC_H
26
27
#include <stdint.h>
28
29
#include "
mpegvideo.h
"
30
#include "
dnxhddata.h
"
31
32
typedef
struct
RCCMPEntry
{
33
uint16_t
mb
;
34
int
value
;
35
}
RCCMPEntry
;
36
37
typedef
struct
RCEntry
{
38
int
ssd
;
39
int
bits
;
40
}
RCEntry
;
41
42
typedef
struct
DNXHDEncContext
{
43
AVClass
*
class
;
44
BlockDSPContext
bdsp
;
45
MpegEncContext
m
;
///< Used for quantization dsp functions
46
47
int
cid
;
48
const
CIDEntry
*
cid_table
;
49
uint8_t
*
msip
;
///< Macroblock Scan Indexes Payload
50
uint32_t *
slice_size
;
51
uint32_t *
slice_offs
;
52
53
struct
DNXHDEncContext
*
thread
[
MAX_THREADS
];
54
55
// Because our samples are either 8 or 16 bits for 8-bit and 10-bit
56
// encoding respectively, these refer either to bytes or to two-byte words.
57
unsigned
dct_y_offset
;
58
unsigned
dct_uv_offset
;
59
unsigned
block_width_l2
;
60
61
int
interlaced
;
62
int
cur_field
;
63
64
int
nitris_compat
;
65
unsigned
min_padding
;
66
67
DECLARE_ALIGNED
(16, int16_t,
blocks
)[8][64];
68
69
int (*
qmatrix_c
) [64];
70
int (*
qmatrix_l
) [64];
71
uint16_t (*
qmatrix_l16
)[2][64];
72
uint16_t (*
qmatrix_c16
)[2][64];
73
74
unsigned
frame_bits
;
75
uint8_t
*
src
[3];
76
77
uint32_t *
vlc_codes
;
78
uint8_t
*
vlc_bits
;
79
uint16_t *
run_codes
;
80
uint8_t
*
run_bits
;
81
82
/** Rate control */
83
unsigned
slice_bits
;
84
unsigned
qscale
;
85
unsigned
lambda
;
86
87
uint16_t *
mb_bits
;
88
uint8_t
*
mb_qscale
;
89
90
RCCMPEntry
*
mb_cmp
;
91
RCEntry
(*
mb_rc
)[8160];
92
93
void
(*
get_pixels_8x4_sym
)(int16_t *
/* align 16 */
,
94
const
uint8_t
*, ptrdiff_t);
95
}
DNXHDEncContext
;
96
97
void
ff_dnxhdenc_init_x86
(
DNXHDEncContext
*ctx);
98
99
#endif
/* AVCODEC_DNXHDENC_H */
Generated on Sun Jul 20 2014 23:05:45 for FFmpeg by
1.8.2