summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiang, Haihao <haihao.xiang@intel.com>2012-01-12 10:09:44 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2012-01-12 13:36:55 +0800
commit17c4703c5492436c2256ed765018508e1b9aa6ca (patch)
tree2f58a16f6a37d219aaa583fa523e3d1f1fe64bae
parent31276a1ab151268d24eb2126a8ae67d20b4c4df0 (diff)
downloadlibva-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.h28
1 files changed, 10 insertions, 18 deletions
diff --git a/va/va.h b/va/va.h
index 5fa7e2d..4925108 100644
--- a/va/va.h
+++ b/va/va.h
@@ -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 */