diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-08-20 17:15:15 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-08-20 17:31:55 +0200 |
commit | bb3ed3bae6a9e6e2dbe8deeb45088453f214b770 (patch) | |
tree | 2cb536f24abb5d9cfc275848da43d93d4302d0d2 /libavcodec/utvideo.h | |
parent | aee51039ee204197fdb4c924f8ee433b803ab1e1 (diff) | |
parent | b96509c93ce6ebb0e997e0b2a55cf10c786a2812 (diff) | |
download | ffmpeg-bb3ed3bae6a9e6e2dbe8deeb45088453f214b770.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
fate: Add FATE tests for the Ut Video encoder
lavc: add Ut Video encoder
mpegvideo_enc: remove stray duplicate line from 7f9aaa4
swscale: x86: fix #endif comments in rgb2rgb template file
avconv: mark more options as expert.
avconv: split printing "main options" into global and per-file.
avconv: refactor help printing.
Conflicts:
Changelog
ffmpeg_opt.c
ffserver.c
libavcodec/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/utvideo.h')
-rw-r--r-- | libavcodec/utvideo.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/libavcodec/utvideo.h b/libavcodec/utvideo.h new file mode 100644 index 0000000000..00c44be9a9 --- /dev/null +++ b/libavcodec/utvideo.h @@ -0,0 +1,91 @@ +/* + * Common Ut Video header + * Copyright (c) 2011 Konstantin Shishkov + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_UTVIDEO_H +#define AVCODEC_UTVIDEO_H + +/** + * @file + * Common Ut Video header + */ + +#include "libavutil/common.h" +#include "avcodec.h" +#include "dsputil.h" + +enum { + PRED_NONE = 0, + PRED_LEFT, + PRED_GRADIENT, + PRED_MEDIAN, +}; + +enum { + COMP_NONE = 0, + COMP_HUFF, +}; + +/* + * "Original format" markers. + * Based on values gotten from the official VFW encoder. + * They are not used during decoding, but they do have + * an informative role on seeing what was input + * to the encoder. + */ +enum { + UTVIDEO_RGB = MKTAG(0x00, 0x00, 0x01, 0x18), + UTVIDEO_RGBA = MKTAG(0x00, 0x00, 0x02, 0x18), + UTVIDEO_420 = MKTAG('Y', 'V', '1', '2'), + UTVIDEO_422 = MKTAG('Y', 'U', 'Y', '2'), +}; + +/* Mapping of libavcodec prediction modes to Ut Video's */ +extern const int ff_ut_pred_order[5]; + +/* Order of RGB(A) planes in Ut Video */ +extern const int ff_ut_rgb_order[4]; + +typedef struct UtvideoContext { + AVCodecContext *avctx; + AVFrame pic; + DSPContext dsp; + + uint32_t frame_info_size, flags, frame_info; + int planes; + int slices; + int compression; + int interlaced; + int frame_pred; + + uint8_t *slice_bits, *slice_buffer; + int slice_bits_size; +} UtvideoContext; + +typedef struct HuffEntry { + uint8_t sym; + uint8_t len; + uint32_t code; +} HuffEntry; + +/* Compare huffman tree nodes */ +int ff_ut_huff_cmp_len(const void *a, const void *b); + +#endif /* AVCODEC_UTVIDEO_H */ |