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 Sep 14 2014 18:55:54 for FFmpeg by
1.8.2