Guest User

Untitled

a guest
Aug 10th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.92 KB | None | 0 0
  1. /*
  2.  * Copyright (c) 2015 Kieran Kunhya
  3.  *
  4.  * This file is part of FFmpeg.
  5.  *
  6.  * FFmpeg is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU Lesser General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * FFmpeg is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * Lesser General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Lesser General Public
  17.  * License along with FFmpeg; if not, write to the Free Software
  18.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  19.  */
  20.  
  21. #ifndef AVCODEC_CFHD_H
  22. #define AVCODEC_CFHD_H
  23.  
  24. #include <stdint.h>
  25.  
  26. #include "libavutil/avassert.h"
  27.  
  28. #include "avcodec.h"
  29. #include "get_bits.h"
  30. #include "vlc.h"
  31. #include "thread.h"
  32.  
  33. #define VLC_BITS       9
  34. #define SUBBAND_COUNT 17
  35. typedef struct CFHD_RL_VLC_ELEM {
  36.     int16_t level;
  37.     int8_t len;
  38.     uint16_t run;
  39. } CFHD_RL_VLC_ELEM;
  40.  
  41. #define DWT_LEVELS 6
  42.  
  43. typedef struct SubBand {
  44.     int level;
  45.     int orientation;
  46.     ptrdiff_t stride;
  47.     int a_width;
  48.     int width;
  49.     int a_height;
  50.     int height;
  51.     int pshift;
  52.     int quant;
  53.     uint8_t *ibuf;
  54. } SubBand;
  55.  
  56. typedef struct Plane {
  57.     int width;
  58.     int height;
  59.     ptrdiff_t stride;
  60.  
  61.     int16_t *idwt_buf;
  62.     int16_t *idwt_tmp;
  63.  
  64.     /* TODO: merge this into SubBand structure */
  65.     int16_t *subband[SUBBAND_COUNT];
  66.     int16_t *l_h[10];
  67.  
  68.     SubBand band[DWT_LEVELS][4];
  69. } Plane;
  70.  
  71. typedef struct Peak {
  72.     int level;
  73.     int offset;
  74.     const int16_t *base;
  75. } Peak;
  76.  
  77. typedef struct CFHDContext {
  78.     AVCodecContext *avctx;
  79.     ThreadFrame i_frame;
  80.     ThreadFrame p_frame;
  81.     ThreadFrame *connection;
  82.     ThreadFrame *picture;
  83.  
  84.     CFHD_RL_VLC_ELEM table_9_rl_vlc[2088];
  85.     VLC vlc_9;
  86.  
  87.     CFHD_RL_VLC_ELEM table_18_rl_vlc[4572];
  88.     VLC vlc_18;
  89.     GetBitContext gb;
  90.  
  91.     int sample_type;
  92.     int transform_type;
  93.     int num_spatial;
  94.     int num_frames;
  95.     int encode_method;
  96.     int first_wavelet;
  97.     int pframe;
  98.     int coded_width;
  99.     int coded_height;
  100.     int cropped_height;
  101.     enum AVPixelFormat coded_format;
  102.     int progressive;
  103.  
  104.     int a_width;
  105.     int a_height;
  106.     int a_format;
  107.  
  108.     int bpc; // bits per channel/component
  109.     int channel_cnt;
  110.     int subband_cnt;
  111.     int channel_num;
  112.     uint8_t lowpass_precision;
  113.     uint16_t quantisation;
  114.     int wavelet_depth;
  115.     int pshift;
  116.  
  117.     int codebook;
  118.     int difference_coding;
  119.     int subband_num;
  120.     int level;
  121.     int subband_num_actual;
  122.  
  123.     uint8_t prescale_shift[3];
  124.     Plane plane[4];
  125.     Plane *buffers;
  126.     Peak peak;
  127. } CFHDContext;
  128.  
  129. int ff_cfhd_init_vlcs(CFHDContext *s);
  130.  
  131. #endif /* AVCODEC_CFHD_H */
Add Comment
Please, Sign In to add comment