annotate ffmpeg/libavcodec/dnxhdenc.h @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents 6840f77b83aa
children
rev   line source
yading@10 1 /*
yading@10 2 * VC3/DNxHD encoder structure definitions and prototypes
yading@10 3 * Copyright (c) 2007 Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
yading@10 4 *
yading@10 5 * VC-3 encoder funded by the British Broadcasting Corporation
yading@10 6 *
yading@10 7 * This file is part of FFmpeg.
yading@10 8 *
yading@10 9 * FFmpeg is free software; you can redistribute it and/or
yading@10 10 * modify it under the terms of the GNU Lesser General Public
yading@10 11 * License as published by the Free Software Foundation; either
yading@10 12 * version 2.1 of the License, or (at your option) any later version.
yading@10 13 *
yading@10 14 * FFmpeg is distributed in the hope that it will be useful,
yading@10 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
yading@10 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
yading@10 17 * Lesser General Public License for more details.
yading@10 18 *
yading@10 19 * You should have received a copy of the GNU Lesser General Public
yading@10 20 * License along with FFmpeg; if not, write to the Free Software
yading@10 21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
yading@10 22 */
yading@10 23
yading@10 24 #ifndef AVCODEC_DNXHDENC_H
yading@10 25 #define AVCODEC_DNXHDENC_H
yading@10 26
yading@10 27 #include <stdint.h>
yading@10 28
yading@10 29 #include "mpegvideo.h"
yading@10 30 #include "dnxhddata.h"
yading@10 31
yading@10 32 typedef struct RCCMPEntry {
yading@10 33 uint16_t mb;
yading@10 34 int value;
yading@10 35 } RCCMPEntry;
yading@10 36
yading@10 37 typedef struct RCEntry {
yading@10 38 int ssd;
yading@10 39 int bits;
yading@10 40 } RCEntry;
yading@10 41
yading@10 42 typedef struct DNXHDEncContext {
yading@10 43 AVClass *class;
yading@10 44 MpegEncContext m; ///< Used for quantization dsp functions
yading@10 45
yading@10 46 AVFrame frame;
yading@10 47 int cid;
yading@10 48 const CIDEntry *cid_table;
yading@10 49 uint8_t *msip; ///< Macroblock Scan Indexes Payload
yading@10 50 uint32_t *slice_size;
yading@10 51 uint32_t *slice_offs;
yading@10 52
yading@10 53 struct DNXHDEncContext *thread[MAX_THREADS];
yading@10 54
yading@10 55 // Because our samples are either 8 or 16 bits for 8-bit and 10-bit
yading@10 56 // encoding respectively, these refer either to bytes or to two-byte words.
yading@10 57 unsigned dct_y_offset;
yading@10 58 unsigned dct_uv_offset;
yading@10 59 unsigned block_width_l2;
yading@10 60
yading@10 61 int interlaced;
yading@10 62 int cur_field;
yading@10 63
yading@10 64 int nitris_compat;
yading@10 65 unsigned min_padding;
yading@10 66
yading@10 67 DECLARE_ALIGNED(16, int16_t, blocks)[8][64];
yading@10 68
yading@10 69 int (*qmatrix_c) [64];
yading@10 70 int (*qmatrix_l) [64];
yading@10 71 uint16_t (*qmatrix_l16)[2][64];
yading@10 72 uint16_t (*qmatrix_c16)[2][64];
yading@10 73
yading@10 74 unsigned frame_bits;
yading@10 75 uint8_t *src[3];
yading@10 76
yading@10 77 uint32_t *vlc_codes;
yading@10 78 uint8_t *vlc_bits;
yading@10 79 uint16_t *run_codes;
yading@10 80 uint8_t *run_bits;
yading@10 81
yading@10 82 /** Rate control */
yading@10 83 unsigned slice_bits;
yading@10 84 unsigned qscale;
yading@10 85 unsigned lambda;
yading@10 86
yading@10 87 uint16_t *mb_bits;
yading@10 88 uint8_t *mb_qscale;
yading@10 89
yading@10 90 RCCMPEntry *mb_cmp;
yading@10 91 RCEntry (*mb_rc)[8160];
yading@10 92
yading@10 93 void (*get_pixels_8x4_sym)(int16_t * /*align 16*/, const uint8_t *, int);
yading@10 94 } DNXHDEncContext;
yading@10 95
yading@10 96 void ff_dnxhdenc_init_x86(DNXHDEncContext *ctx);
yading@10 97
yading@10 98 #endif /* AVCODEC_DNXHDENC_H */