Mercurial > libavcodec.hg
annotate dnxhdenc.h @ 11219:872413b133f4 libavcodec
msmpeg4v* encoders depend on h263dec
author | daniel |
---|---|
date | Fri, 19 Feb 2010 21:34:50 +0000 |
parents | 34a65026fa06 |
children | 98970e51365a |
rev | line source |
---|---|
8294 | 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 #include "libavcodec/mpegvideo.h" | |
29 #include "libavcodec/dnxhddata.h" | |
30 | |
31 typedef struct { | |
32 uint16_t mb; | |
33 int value; | |
34 } RCCMPEntry; | |
35 | |
36 typedef struct { | |
37 int ssd; | |
38 int bits; | |
39 } RCEntry; | |
40 | |
41 typedef struct DNXHDEncContext { | |
42 MpegEncContext m; ///< Used for quantization dsp functions | |
43 | |
44 AVFrame frame; | |
45 int cid; | |
46 const CIDEntry *cid_table; | |
47 uint8_t *msip; ///< Macroblock Scan Indexes Payload | |
48 uint32_t *slice_size; | |
10387 | 49 uint32_t *slice_offs; |
8294 | 50 |
51 struct DNXHDEncContext *thread[MAX_THREADS]; | |
52 | |
53 unsigned dct_y_offset; | |
54 unsigned dct_uv_offset; | |
55 int interlaced; | |
56 int cur_field; | |
57 | |
10961
34a65026fa06
Move array specifiers outside DECLARE_ALIGNED() invocations
mru
parents:
10387
diff
changeset
|
58 DECLARE_ALIGNED_16(DCTELEM, blocks)[8][64]; |
8294 | 59 |
60 int (*qmatrix_c) [64]; | |
61 int (*qmatrix_l) [64]; | |
62 uint16_t (*qmatrix_l16)[2][64]; | |
63 uint16_t (*qmatrix_c16)[2][64]; | |
64 | |
65 unsigned frame_bits; | |
66 uint8_t *src[3]; | |
67 | |
68 uint32_t *vlc_codes; | |
69 uint8_t *vlc_bits; | |
70 uint16_t *run_codes; | |
71 uint8_t *run_bits; | |
72 | |
73 /** Rate control */ | |
74 unsigned slice_bits; | |
75 unsigned qscale; | |
76 unsigned lambda; | |
77 | |
78 unsigned thread_size; | |
79 | |
80 uint16_t *mb_bits; | |
81 uint8_t *mb_qscale; | |
82 | |
83 RCCMPEntry *mb_cmp; | |
84 RCEntry (*mb_rc)[8160]; | |
8303 | 85 |
86 void (*get_pixels_8x4_sym)(DCTELEM */*align 16*/, const uint8_t *, int); | |
8294 | 87 } DNXHDEncContext; |
88 | |
89 void ff_dnxhd_init_mmx(DNXHDEncContext *ctx); | |
90 | |
91 #endif /* AVCODEC_DNXHDENC_H */ |