From 8e9175744e9c5528f9c44836b43381181976ce13 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Tue, 15 Aug 2017 11:52:26 -0400 Subject: [PATCH] st/va: add huffman table handling for MJPEG MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Leo Liu Reviewed-by: Christian König --- src/gallium/state_trackers/va/picture_mjpeg.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/gallium/state_trackers/va/picture_mjpeg.c b/src/gallium/state_trackers/va/picture_mjpeg.c index 09b2efc..17f0779 100644 --- a/src/gallium/state_trackers/va/picture_mjpeg.c +++ b/src/gallium/state_trackers/va/picture_mjpeg.c @@ -63,7 +63,24 @@ void vlVaHandleIQMatrixBufferMJPEG(vlVaContext *context, vlVaBuffer *buf) void vlVaHandleHuffmanTableBufferType(vlVaContext *context, vlVaBuffer *buf) { - /* TODO */ + VAHuffmanTableBufferJPEGBaseline *mjpeg = buf->data; + int i; + + assert(buf->size >= sizeof(VASliceParameterBufferJPEGBaseline) && buf->num_elements == 1); + + for (i = 0; i < 2; ++i) { + context->desc.mjpeg.huffman_table.load_huffman_table[i] = mjpeg->load_huffman_table[i]; + + memcpy(&context->desc.mjpeg.huffman_table.table[i].num_dc_codes, + mjpeg->huffman_table[i].num_dc_codes, 16); + memcpy(&context->desc.mjpeg.huffman_table.table[i].dc_values, + mjpeg->huffman_table[i].dc_values, 12); + memcpy(&context->desc.mjpeg.huffman_table.table[i].num_ac_codes, + mjpeg->huffman_table[i].num_ac_codes, 16); + memcpy(&context->desc.mjpeg.huffman_table.table[i].ac_values, + mjpeg->huffman_table[i].ac_values, 162); + memcpy(&context->desc.mjpeg.huffman_table.table[i].pad, mjpeg->huffman_table[i].pad, 2); + } } void vlVaHandleSliceParameterBufferMJPEG(vlVaContext *context, vlVaBuffer *buf) -- 2.7.4