mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
matroskademux: Store alpha stream in VideoCodecAlphaMeta
This generalize the feature over using mini object quark data. If that feature was Matroska specifc, using the new CustomMeta would have been enough and arguably cleaner then QData, though it seems that similar technique is use with AV1 Image Format (AVIF). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/968>
This commit is contained in:
parent
b84bad6ac3
commit
b2e857efc6
1 changed files with 14 additions and 7 deletions
|
@ -64,6 +64,7 @@
|
|||
#include <gst/audio/audio.h>
|
||||
#include <gst/tag/tag.h>
|
||||
#include <gst/pbutils/pbutils.h>
|
||||
#include <gst/video/gstvideocodecalphameta.h>
|
||||
#include <gst/video/video.h>
|
||||
|
||||
#include "gstmatroskaelements.h"
|
||||
|
@ -4982,14 +4983,20 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux,
|
|||
|
||||
while ((blockadd = g_queue_pop_head (&additions))) {
|
||||
if (blockadd->id == 1
|
||||
&& !strcmp (stream->codec_id, GST_MATROSKA_CODEC_ID_VIDEO_VP8)) {
|
||||
GST_TRACE_OBJECT (demux, "adding block addition %u as VP8 alpha "
|
||||
"qdata to buffer %p, %u bytes", (guint) blockadd->id, buf,
|
||||
&& (!strcmp (stream->codec_id, GST_MATROSKA_CODEC_ID_VIDEO_VP8)
|
||||
|| !strcmp (stream->codec_id,
|
||||
GST_MATROSKA_CODEC_ID_VIDEO_VP9))) {
|
||||
GstBuffer *alpha_buffer;
|
||||
|
||||
GST_TRACE_OBJECT (demux, "adding block addition %u as VP8/VP9 "
|
||||
"alpha meta to buffer %p, %u bytes", (guint) blockadd->id, buf,
|
||||
(guint) blockadd->size);
|
||||
gst_mini_object_set_qdata (GST_MINI_OBJECT (sub),
|
||||
matroska_block_additional_quark,
|
||||
g_bytes_new_take (blockadd->data, blockadd->size),
|
||||
(GDestroyNotify) g_bytes_unref);
|
||||
|
||||
alpha_buffer = gst_buffer_new_wrapped (blockadd->data,
|
||||
blockadd->size);
|
||||
gst_buffer_copy_into (alpha_buffer, sub,
|
||||
GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS, 0, -1);
|
||||
gst_buffer_add_video_codec_alpha_meta (sub, alpha_buffer);
|
||||
} else {
|
||||
g_free (blockadd->data);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue