diff options
Diffstat (limited to 'gst-libs/gst/riff/riff-read.c')
-rw-r--r-- | gst-libs/gst/riff/riff-read.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/gst-libs/gst/riff/riff-read.c b/gst-libs/gst/riff/riff-read.c index 0eed6242..a86ec866 100644 --- a/gst-libs/gst/riff/riff-read.c +++ b/gst-libs/gst/riff/riff-read.c @@ -458,7 +458,8 @@ gst_riff_read_strh (GstRiffRead * riff, gst_riff_strh ** header) } gboolean -gst_riff_read_strf_vids (GstRiffRead * riff, gst_riff_strf_vids ** header) +gst_riff_read_strf_vids_with_data (GstRiffRead * riff, + gst_riff_strf_vids ** header, GstBuffer ** extradata) { guint32 tag; GstBuffer *buf; @@ -496,10 +497,14 @@ gst_riff_read_strf_vids (GstRiffRead * riff, gst_riff_strf_vids ** header) #endif /* size checking */ + *extradata = NULL; if (strf->size > GST_BUFFER_SIZE (buf)) { g_warning ("strf_vids header gave %d bytes data, only %d available", strf->size, GST_BUFFER_SIZE (buf)); strf->size = GST_BUFFER_SIZE (buf); + } else if (strf->size < GST_BUFFER_SIZE (buf)) { + *extradata = gst_buffer_create_sub (buf, strf->size, + GST_BUFFER_SIZE (buf) - strf->size); } /* debug */ @@ -516,6 +521,8 @@ gst_riff_read_strf_vids (GstRiffRead * riff, gst_riff_strf_vids ** header) GST_INFO (" ypels_meter %d", strf->ypels_meter); GST_INFO (" num_colors %d", strf->num_colors); GST_INFO (" imp_colors %d", strf->imp_colors); + if (*extradata) + GST_INFO (" %d bytes extra_data", GST_BUFFER_SIZE (*extradata)); gst_buffer_unref (buf); @@ -524,6 +531,23 @@ gst_riff_read_strf_vids (GstRiffRead * riff, gst_riff_strf_vids ** header) return TRUE; } +/* + * Obsolete, use gst_riff_read_strf_vids_with_data (). + */ + +gboolean +gst_riff_read_strf_vids (GstRiffRead * riff, gst_riff_strf_vids ** header) +{ + GstBuffer *data = NULL; + gboolean ret; + + ret = gst_riff_read_strf_vids_with_data (riff, header, &data); + if (data) + gst_buffer_unref (data); + + return ret; +} + gboolean gst_riff_read_strf_auds (GstRiffRead * riff, gst_riff_strf_auds ** header) { |