Imported Upstream version 6.1
[platform/upstream/ffmpeg.git] / libavcodec / huffyuv.h
index 83309d4..22a7666 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2002-2014 Michael Niedermayer <michaelni@gmx.at>
  *
- * see http://www.pcisys.net/~melanson/codecs/huffyuv.txt for a description of
+ * see https://multimedia.cx/huffyuv.txt for a description of
  * the algorithm used
  *
  * This file is part of FFmpeg.
 
 #include <stdint.h>
 
-#include "avcodec.h"
-#include "bswapdsp.h"
-#include "get_bits.h"
-#include "huffyuvdsp.h"
-#include "huffyuvencdsp.h"
-#include "put_bits.h"
-#include "lossless_videodsp.h"
-#include "lossless_videoencdsp.h"
+#include "config.h"
 
-#define VLC_BITS 12
+#if HAVE_BIGENDIAN
+#define B 3
+#define G 2
+#define R 1
+#define A 0
+#else
+#define B 0
+#define G 1
+#define R 2
+#define A 3
+#endif
 
 #define MAX_BITS 16
 #define MAX_N (1<<MAX_BITS)
@@ -52,51 +55,8 @@ typedef enum Predictor {
     MEDIAN,
 } Predictor;
 
-typedef struct HYuvContext {
-    AVClass *class;
-    AVCodecContext *avctx;
-    Predictor predictor;
-    GetBitContext gb;
-    PutBitContext pb;
-    int interlaced;
-    int decorrelate;
-    int bitstream_bpp;
-    int version;
-    int yuy2;                               //use yuy2 instead of 422P
-    int bgr32;                              //use bgr32 instead of bgr24
-    int bps;
-    int n;                                  // 1<<bps
-    int vlc_n;                              // number of vlc codes (FFMIN(1<<bps, MAX_VLC_N))
-    int alpha;
-    int chroma;
-    int yuv;
-    int chroma_h_shift;
-    int chroma_v_shift;
-    int width, height;
-    int flags;
-    int context;
-    int picture_number;
-    int last_slice_end;
-    uint8_t *temp[3];
-    uint16_t *temp16[3];                    ///< identical to temp but 16bit type
-    uint64_t stats[4][MAX_VLC_N];
-    uint8_t len[4][MAX_VLC_N];
-    uint32_t bits[4][MAX_VLC_N];
-    uint32_t pix_bgr_map[1<<VLC_BITS];
-    VLC vlc[8];                             //Y,U,V,A,YY,YU,YV,AA
-    uint8_t *bitstream_buffer;
-    unsigned int bitstream_buffer_size;
-    BswapDSPContext bdsp;
-    HuffYUVDSPContext hdsp;
-    HuffYUVEncDSPContext hencdsp;
-    LLVidDSPContext llviddsp;
-    LLVidEncDSPContext llvidencdsp;
-    int non_determ; // non-deterministic, multi-threaded encoder allowed
-} HYuvContext;
-
-void ff_huffyuv_common_init(AVCodecContext *s);
-void ff_huffyuv_common_end(HYuvContext *s);
-int  ff_huffyuv_alloc_temp(HYuvContext *s);
+void ff_huffyuv_common_end(uint8_t *temp[3], uint16_t *temp16[3]);
+int  ff_huffyuv_alloc_temp(uint8_t *temp[3], uint16_t *temp16[3], int width);
 int ff_huffyuv_generate_bits_table(uint32_t *dst, const uint8_t *len_table, int n);
 
 #endif /* AVCODEC_HUFFYUV_H */