summaryrefslogtreecommitdiff
path: root/gst-libs/gst/vaapi/gstvaapicodec_objects.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst-libs/gst/vaapi/gstvaapicodec_objects.c')
-rw-r--r--gst-libs/gst/vaapi/gstvaapicodec_objects.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapicodec_objects.c b/gst-libs/gst/vaapi/gstvaapicodec_objects.c
index fd4822da..e79341d0 100644
--- a/gst-libs/gst/vaapi/gstvaapicodec_objects.c
+++ b/gst-libs/gst/vaapi/gstvaapicodec_objects.c
@@ -243,3 +243,64 @@ gst_vaapi_bitplane_new(GstVaapiDecoder *decoder, guint8 *data, guint data_size)
return NULL;
return GST_VAAPI_BITPLANE_CAST(object);
}
+
+/* ------------------------------------------------------------------------- */
+/* --- JPEG Huffman Tables --- */
+/* ------------------------------------------------------------------------- */
+
+#if USE_JPEG_DECODER
+GST_VAAPI_CODEC_DEFINE_TYPE(GstVaapiHuffmanTable,
+ gst_vaapi_huffman_table,
+ GST_VAAPI_TYPE_CODEC_OBJECT)
+
+static void
+gst_vaapi_huffman_table_destroy(GstVaapiHuffmanTable *huf_table)
+{
+ vaapi_destroy_buffer(GET_VA_DISPLAY(huf_table), &huf_table->param_id);
+ huf_table->param = NULL;
+}
+
+static gboolean
+gst_vaapi_huffman_table_create(
+ GstVaapiHuffmanTable *huf_table,
+ const GstVaapiCodecObjectConstructorArgs *args
+)
+{
+ return vaapi_create_buffer(GET_VA_DISPLAY(huf_table),
+ GET_VA_CONTEXT(huf_table),
+ VAHuffmanTableBufferType,
+ args->param_size,
+ args->param,
+ &huf_table->param_id,
+ (void **)&huf_table->param);
+}
+
+static void
+gst_vaapi_huffman_table_init(GstVaapiHuffmanTable *huf_table)
+{
+ huf_table->param = NULL;
+ huf_table->param_id = VA_INVALID_ID;
+}
+
+GstVaapiHuffmanTable *
+gst_vaapi_huffman_table_new(
+ GstVaapiDecoder *decoder,
+ guint8 *data,
+ guint data_size
+)
+{
+ GstVaapiCodecObject *object;
+
+ g_return_val_if_fail(GST_VAAPI_IS_DECODER(decoder), NULL);
+
+ object = gst_vaapi_codec_object_new(
+ GST_VAAPI_TYPE_HUFFMAN_TABLE,
+ GST_VAAPI_CODEC_BASE(decoder),
+ data, data_size,
+ NULL, 0
+ );
+ if (!object)
+ return NULL;
+ return GST_VAAPI_HUFFMAN_TABLE_CAST(object);
+}
+#endif