Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
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 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
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
{
33
uint16_t
mb
;
34
int
value
;
35
}
RCCMPEntry
;
36
37
typedef
struct
{
38
int
ssd
;
39
int
bits
;
40
}
RCEntry
;
41
42
typedef
struct
DNXHDEncContext
{
43
AVClass
*
class
;
44
MpegEncContext
m
;
45
46
AVFrame
frame
;
47
int
cid
;
48
const
CIDEntry
*
cid_table
;
49
uint8_t *
msip
;
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,
DCTELEM
,
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
83
unsigned
slice_bits
;
84
unsigned
qscale
;
85
unsigned
lambda
;
86
87
unsigned
thread_size
;
88
89
uint16_t *
mb_bits
;
90
uint8_t *
mb_qscale
;
91
92
RCCMPEntry
*
mb_cmp
;
93
RCEntry
(*
mb_rc
)[8160];
94
95
void
(*
get_pixels_8x4_sym
)(
DCTELEM
*
/*align 16*/
,
const
uint8_t *, int);
96
}
DNXHDEncContext
;
97
98
void
ff_dnxhd_init_mmx
(
DNXHDEncContext
*ctx);
99
100
#endif
/* AVCODEC_DNXHDENC_H */