#include "bytestream.h"
#include "get_bits.h"
#include "vlc.h"
+#include "cfhddsp.h"
enum CFHDParam {
SampleType = 1,
SampleIndexTable = 2,
BitstreamMarker = 4,
+ VersionMajor = 5,
+ VersionMinor = 6,
+ VersionRevision = 7,
+ VersionEdit = 8,
TransformType = 10,
NumFrames = 11,
ChannelCount = 12,
NumSpatial = 15,
FirstWavelet = 16,
GroupTrailer = 18,
+ FrameType = 19,
ImageWidth = 20,
ImageHeight = 21,
+ FrameIndex = 23,
LowpassSubband = 25,
NumLevels = 26,
LowpassWidth = 27,
BandTrailer = 56,
ChannelNumber = 62,
SampleFlags = 68,
+ FrameNumber = 69,
Precision = 70,
+ InputFormat = 71,
BandCodingFlags = 72,
+ PeakLevel = 74,
+ PeakOffsetLow = 75,
+ PeakOffsetHigh = 76,
+ Version = 79,
+ BandSecondPass = 82,
PrescaleTable = 83,
EncodedFormat = 84,
- BitsPerComponent = 101,
+ DisplayHeight = 85,
ChannelWidth = 104,
ChannelHeight = 105,
- PrescaleShift = 109,
};
#define VLC_BITS 9
#define SUBBAND_COUNT 10
+#define SUBBAND_COUNT_3D 17
typedef struct CFHD_RL_VLC_ELEM {
int16_t level;
} CFHD_RL_VLC_ELEM;
#define DWT_LEVELS 3
+#define DWT_LEVELS_3D 6
typedef struct SubBand {
- int level;
- int orientation;
ptrdiff_t stride;
int a_width;
int width;
int a_height;
int height;
- int pshift;
- int quant;
- uint8_t *ibuf;
+ int8_t read_ok;
} SubBand;
typedef struct Plane {
int16_t *idwt_buf;
int16_t *idwt_tmp;
+ int idwt_size;
/* TODO: merge this into SubBand structure */
- int16_t *subband[SUBBAND_COUNT];
- int16_t *l_h[8];
+ int16_t *subband[SUBBAND_COUNT_3D];
+ int16_t *l_h[10];
- SubBand band[DWT_LEVELS][4];
+ SubBand band[DWT_LEVELS_3D][4];
} Plane;
typedef struct Peak {
GetBitContext gb;
+ int planes;
+ int frame_type;
+ int frame_index;
+ int sample_type;
+ int transform_type;
int coded_width;
int coded_height;
int cropped_height;
int a_width;
int a_height;
int a_format;
+ int a_transform_type;
int bpc; // bits per channel/component
int channel_cnt;
int subband_cnt;
+ int band_encoding;
int channel_num;
uint8_t lowpass_precision;
uint16_t quantisation;
- int wavelet_depth;
- int pshift;
int codebook;
int difference_coding;
int level;
int subband_num_actual;
- uint8_t prescale_shift[3];
+ uint8_t prescale_table[8];
Plane plane[4];
Peak peak;
+
+ CFHDDSPContext dsp;
} CFHDContext;
int ff_cfhd_init_vlcs(CFHDContext *s);