summaryrefslogtreecommitdiff
path: root/libavcodec/ffv1.h
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2012-10-19 12:14:22 +0200
committerLuca Barbato <lu_zero@gentoo.org>2012-10-20 18:14:52 +0200
commit0f13cd3187192ba0cc2b043430de6e279e7b97c3 (patch)
tree604398111a32e7515ffac7284dde79ae2b50b2ed /libavcodec/ffv1.h
parent4a2a4524a3f50ed302820ba971ddd48e78c7436f (diff)
ffv1: update to ffv1 version 3
Based on code from Carl Eugen Hoyos, Michael Niedermayer and Paul B Mahol.
Diffstat (limited to 'libavcodec/ffv1.h')
-rw-r--r--libavcodec/ffv1.h22
1 files changed, 17 insertions, 5 deletions
diff --git a/libavcodec/ffv1.h b/libavcodec/ffv1.h
index 7676c61be3..74f1159537 100644
--- a/libavcodec/ffv1.h
+++ b/libavcodec/ffv1.h
@@ -1,7 +1,7 @@
/*
* FFV1 codec for libavcodec
*
- * Copyright (c) 2012 Michael Niedermayer <michaelni@gmx.at>
+ * Copyright (c) 2003-2012 Michael Niedermayer <michaelni@gmx.at>
*
* This file is part of Libav.
*
@@ -57,6 +57,7 @@ typedef struct PlaneContext {
#define MAX_SLICES 256
typedef struct FFV1Context {
+ AVClass *class;
AVCodecContext *avctx;
RangeCoder c;
GetBitContext gb;
@@ -64,13 +65,17 @@ typedef struct FFV1Context {
uint64_t rc_stat[256][2];
uint64_t (*rc_stat2[MAX_QUANT_TABLES])[32][2];
int version;
+ int minor_version;
int width, height;
+ int chroma_planes;
int chroma_h_shift, chroma_v_shift;
+ int transparency;
int flags;
int picture_number;
- AVFrame picture;
+ AVFrame picture, last_picture;
int plane_count;
int ac; // 1 = range coder <-> 0 = golomb rice
+ int ac_byte_count; // number of bytes used for AC coding
PlaneContext plane[MAX_PLANES];
int16_t quant_table[MAX_CONTEXT_INPUTS][256];
int16_t quant_tables[MAX_QUANT_TABLES][MAX_CONTEXT_INPUTS][256];
@@ -80,8 +85,15 @@ typedef struct FFV1Context {
int run_index;
int colorspace;
int16_t *sample_buffer;
- int gob_count;
+ int ec;
+ int slice_damaged;
+ int key_frame_ok;
+
+ int bits_per_raw_sample;
+ int packed_at_lsb;
+
+ int gob_count;
int quant_table_count;
DSPContext dsp;
@@ -175,10 +187,10 @@ static inline void update_vlc_state(VlcState *const state, const int v)
}
int ffv1_common_init(AVCodecContext *avctx);
-int ffv1_init_slice_state(FFV1Context *f);
+int ffv1_init_slice_state(FFV1Context *f, FFV1Context *fs);
int ffv1_init_slice_contexts(FFV1Context *f);
int ffv1_allocate_initial_states(FFV1Context *f);
-void ffv1_clear_state(FFV1Context *f);
+void ffv1_clear_slice_state(FFV1Context *f, FFV1Context *fs);
int ffv1_close(AVCodecContext *avctx);
#endif /* AVCODEC_FFV1_H */