X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fcfhd.h;h=19e5c7cf03b8504444ecb5389238dcf62a119e8c;hb=b9fff6e15e73dc995695db9be8db084238cca14c;hp=52ce94f066d88fc1de27acecde37630849b1bdc4;hpb=1c6a010e3bc5bf4c08455d9323f3fdc3b0b3c255;p=ffmpeg diff --git a/libavcodec/cfhd.h b/libavcodec/cfhd.h index 52ce94f066d..19e5c7cf03b 100644 --- a/libavcodec/cfhd.h +++ b/libavcodec/cfhd.h @@ -29,11 +29,16 @@ #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, @@ -42,8 +47,10 @@ enum CFHDParam { NumSpatial = 15, FirstWavelet = 16, GroupTrailer = 18, + FrameType = 19, ImageWidth = 20, ImageHeight = 21, + FrameIndex = 23, LowpassSubband = 25, NumLevels = 26, LowpassWidth = 27, @@ -76,16 +83,21 @@ enum CFHDParam { 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; @@ -94,6 +106,7 @@ typedef struct CFHD_RL_VLC_ELEM { } CFHD_RL_VLC_ELEM; #define DWT_LEVELS 3 +#define DWT_LEVELS_3D 6 typedef struct SubBand { ptrdiff_t stride; @@ -101,6 +114,7 @@ typedef struct SubBand { int width; int a_height; int height; + int8_t read_ok; } SubBand; typedef struct Plane { @@ -110,12 +124,13 @@ 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 { @@ -137,6 +152,11 @@ typedef struct CFHDContext { 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; @@ -146,10 +166,12 @@ typedef struct CFHDContext { 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; @@ -160,9 +182,11 @@ typedef struct CFHDContext { 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);