diff options
author | Xiang, Haihao <haihao.xiang@intel.com> | 2012-01-12 10:09:44 +0800 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2012-01-12 13:36:55 +0800 |
commit | 17c4703c5492436c2256ed765018508e1b9aa6ca (patch) | |
tree | 2f58a16f6a37d219aaa583fa523e3d1f1fe64bae | |
parent | 31276a1ab151268d24eb2126a8ae67d20b4c4df0 (diff) | |
download | libva-17c4703c5492436c2256ed765018508e1b9aa6ca.tar.gz |
Modify the interface of Huffman table for JPEG decoding
The user application will send up to 4 huffman table to driver,
and driver will select the right huffman table for each component
via dc_selector and ac_selector.
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
-rw-r--r-- | va/va.h | 28 |
1 files changed, 10 insertions, 18 deletions
@@ -778,27 +778,17 @@ typedef struct _VAPictureParameterBufferJPEG int rotation; } VAPictureParameterBufferJPEG; -/* Indexes for JPEG HUFFMAN TABLE */ -#define VA_JPEG_HUFFMAN_TABLE_Y 0 -#define VA_JPEG_HUFFMAN_TABLE_U 1 -#define VA_JPEG_HUFFMAN_TABLE_V 2 -#define VA_JPEG_HUFFMAN_TABLE_A 3 - -/* Maskes for JPEG HUFFMAN TABLE */ -#define VA_JPEG_HUFFMAN_TABLE_MASK_Y (1 << VA_JPEG_HUFFMAN_TABLE_Y) -#define VA_JPEG_HUFFMAN_TABLE_MASK_U (1 << VA_JPEG_HUFFMAN_TABLE_U) -#define VA_JPEG_HUFFMAN_TABLE_MASK_V (1 << VA_JPEG_HUFFMAN_TABLE_V) -#define VA_JPEG_HUFFMAN_TABLE_MASK_A (1 << VA_JPEG_HUFFMAN_TABLE_A) - typedef struct _VAHuffmanTableBufferJPEG { - unsigned int huffman_table_mask; struct { - unsigned char dc_bits[12]; - unsigned char dc_huffval[12]; - unsigned char ac_bits[16]; - unsigned char ac_huffval[256]; /* only the first 162 bytes are available */ - } huffman_table[4]; + unsigned char dc_bits[16]; /* Number of Huffman codes of length i for DC */ + unsigned char dc_huffval[20]; /* Value associated with each Huffman code for DC */ + unsigned char ac_bits[16]; /* Number of Huffman codes of length i for AC */ + unsigned char ac_huffval[256]; /* Value associated with each Huffman code for AC */ + } huffman_table[4]; /* Up to 4 huffman tables, huffman_table[Th](Th=0,1,2,3) + * specifies a buffman table for destination Th. + */ + } VAHuffmanTableBufferJPEG; /* JPEG Scan Parameter Buffer, The Scan of is similar to @@ -814,6 +804,8 @@ typedef struct _VASliceParameterBufferJPEG unsigned int num_components; struct { int index; /* index to the ARRAY components in VAPictureParameterBufferJPEG */ + int dc_selector; /* Tdj(0,1,2,3) */ + int ac_selector; /* Taj(0,1,2,3) */ } components[4]; int restart_interval; /* specifies the number of MCUs in restart interval, defined in DRI marker */ |