annotate ffmpeg/libavcodec/huffyuv.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 * Copyright (c) 2002-2003 Michael Niedermayer <michaelni@gmx.at>
yading@10 3 *
yading@10 4 * see http://www.pcisys.net/~melanson/codecs/huffyuv.txt for a description of
yading@10 5 * the algorithm used
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 /**
yading@10 25 * @file
yading@10 26 * huffyuv codec for libavcodec.
yading@10 27 */
yading@10 28
yading@10 29 #ifndef AVCODEC_HUFFYUV_H
yading@10 30 #define AVCODEC_HUFFYUV_H
yading@10 31
yading@10 32 #include <stdint.h>
yading@10 33
yading@10 34 #include "avcodec.h"
yading@10 35 #include "dsputil.h"
yading@10 36 #include "get_bits.h"
yading@10 37 #include "put_bits.h"
yading@10 38
yading@10 39 #define VLC_BITS 11
yading@10 40
yading@10 41 #if HAVE_BIGENDIAN
yading@10 42 #define B 3
yading@10 43 #define G 2
yading@10 44 #define R 1
yading@10 45 #define A 0
yading@10 46 #else
yading@10 47 #define B 0
yading@10 48 #define G 1
yading@10 49 #define R 2
yading@10 50 #define A 3
yading@10 51 #endif
yading@10 52
yading@10 53 typedef enum Predictor {
yading@10 54 LEFT = 0,
yading@10 55 PLANE,
yading@10 56 MEDIAN,
yading@10 57 } Predictor;
yading@10 58
yading@10 59 typedef struct HYuvContext {
yading@10 60 AVCodecContext *avctx;
yading@10 61 Predictor predictor;
yading@10 62 GetBitContext gb;
yading@10 63 PutBitContext pb;
yading@10 64 int interlaced;
yading@10 65 int decorrelate;
yading@10 66 int bitstream_bpp;
yading@10 67 int version;
yading@10 68 int yuy2; //use yuy2 instead of 422P
yading@10 69 int bgr32; //use bgr32 instead of bgr24
yading@10 70 int width, height;
yading@10 71 int flags;
yading@10 72 int context;
yading@10 73 int picture_number;
yading@10 74 int last_slice_end;
yading@10 75 uint8_t *temp[3];
yading@10 76 uint64_t stats[3][256];
yading@10 77 uint8_t len[3][256];
yading@10 78 uint32_t bits[3][256];
yading@10 79 uint32_t pix_bgr_map[1<<VLC_BITS];
yading@10 80 VLC vlc[6]; //Y,U,V,YY,YU,YV
yading@10 81 AVFrame picture;
yading@10 82 uint8_t *bitstream_buffer;
yading@10 83 unsigned int bitstream_buffer_size;
yading@10 84 DSPContext dsp;
yading@10 85 } HYuvContext;
yading@10 86
yading@10 87 void ff_huffyuv_common_init(AVCodecContext *s);
yading@10 88 void ff_huffyuv_common_end(HYuvContext *s);
yading@10 89 int ff_huffyuv_alloc_temp(HYuvContext *s);
yading@10 90 int ff_huffyuv_generate_bits_table(uint32_t *dst, const uint8_t *len_table);
yading@10 91
yading@10 92 #endif /* AVCODEC_HUFFYUV_H */