Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Common Ut Video header
  3.  * Copyright (c) 2011 Konstantin Shishkov
  4.  *
  5.  * This file is part of FFmpeg.
  6.  *
  7.  * FFmpeg is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * FFmpeg is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with FFmpeg; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20.  */
  21.  
  22. #ifndef AVCODEC_UTVIDEO_H
  23. #define AVCODEC_UTVIDEO_H
  24.  
  25. /**
  26.  * @file
  27.  * Common Ut Video header
  28.  */
  29.  
  30. #include "libavutil/common.h"
  31. #include "avcodec.h"
  32. #include "bswapdsp.h"
  33. #include "huffyuvencdsp.h"
  34.  
  35. enum {
  36.     PRED_NONE = 0,
  37.     PRED_LEFT,
  38.     PRED_GRADIENT,
  39.     PRED_MEDIAN,
  40. };
  41.  
  42. enum {
  43.     COMP_NONE = 0,
  44.     COMP_HUFF,
  45. };
  46.  
  47. /*
  48.  * "Original format" markers.
  49.  * Based on values gotten from the official VFW encoder.
  50.  * They are not used during decoding, but they do have
  51.  * an informative role on seeing what was input
  52.  * to the encoder.
  53.  */
  54. enum {
  55.     UTVIDEO_RGB  = MKTAG(0x00, 0x00, 0x01, 0x18),
  56.     UTVIDEO_RGBA = MKTAG(0x00, 0x00, 0x02, 0x18),
  57.     UTVIDEO_420  = MKTAG('Y', 'V', '1', '2'),
  58.     UTVIDEO_422  = MKTAG('Y', 'U', 'Y', '2'),
  59. };
  60.  
  61. /* Mapping of libavcodec prediction modes to Ut Video's */
  62. extern const int ff_ut_pred_order[5];
  63.  
  64. /* Order of RGB(A) planes in Ut Video */
  65. extern const int ff_ut_rgb_order[4];
  66.  
  67. typedef struct UtvideoContext {
  68.     AVCodecContext *avctx;
  69.     BswapDSPContext bdsp;
  70.     HuffYUVEncDSPContext hdsp;
  71.  
  72.     uint32_t frame_info_size, flags, frame_info;
  73.     int      planes;
  74.     int      slices;
  75.     int      compression;
  76.     int      interlaced;
  77.     int      frame_pred;
  78.  
  79.     int      slice_stride;
  80.     uint8_t *slice_bits, *slice_buffer[4];
  81.     int      slice_bits_size;
  82. } UtvideoContext;
  83.  
  84. typedef struct HuffEntry {
  85.     uint8_t  sym;
  86.     uint8_t  len;
  87.     uint32_t code;
  88. } HuffEntry;
  89.  
  90. /* Compare huffman tree nodes */
  91. int ff_ut_huff_cmp_len(const void *a, const void *b);
  92.  
  93. #endif /* AVCODEC_UTVIDEO_H */
  94.