diff options
author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2004-04-16 01:20:44 +0000 |
---|---|---|
committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2004-04-16 01:20:44 +0000 |
commit | b38e44828eabca21063f3cc570993d61ca419b7c (patch) | |
tree | 3a03c2b46f4e30a10ce090227b6a23e19e79acc8 /gst-libs/gst/riff/riff-read.c | |
parent | ceb0d7b4a2ca7335023a74fdc87884e017614b5d (diff) | |
download | gst-plugins-bad-b38e44828eabca21063f3cc570993d61ca419b7c.tar.gz gst-plugins-bad-b38e44828eabca21063f3cc570993d61ca419b7c.tar.bz2 gst-plugins-bad-b38e44828eabca21063f3cc570993d61ca419b7c.zip |
gst/: Add MS RLE support. I added some functions to read out strf chunks into strf chunks and the data behind it. Thi...
Original commit message from CVS:
reviewed by: <delete if not using a buddy>
* gst-libs/gst/riff/riff-media.c:
(gst_riff_create_video_caps_with_data),
(gst_riff_create_video_caps), (gst_riff_create_audio_caps),
(gst_riff_create_video_template_caps),
(gst_riff_create_audio_template_caps):
* gst-libs/gst/riff/riff-media.h:
* gst-libs/gst/riff/riff-read.c:
(gst_riff_read_strf_vids_with_data), (gst_riff_read_strf_vids):
* gst-libs/gst/riff/riff-read.h:
* gst/avi/gstavidemux.c: (gst_avi_demux_add_stream):
Add MS RLE support. I added some functions to read out strf chunks
into strf chunks and the data behind it. This is usually color
palettes (as in RLE, but also in 8-bit RGB). Also use those during
caps creation. Lastly, add ADPCM (similar to wavparse - which
should eventually be rifflib based).
* gst/matroska/matroska-demux.c: (gst_matroska_demux_class_init),
(gst_matroska_demux_init), (gst_matroska_demux_reset):
* gst/matroska/matroska-demux.h:
Remove placeholders for some prehistoric tagging system. Didn't add
support for any tag system really anyway.
* gst/qtdemux/qtdemux.c:
Add support for audio/x-m4a (MPEG-4) through spider.
* gst/wavparse/gstwavparse.c: (gst_wavparse_parse_fmt),
(gst_wavparse_loop):
ADPCM support (#135862). Increase max. buffer size because we
cannot split buffers for ADPCM (screws references) and I've seen
files with 2048 byte chunks. 4096 seems safe for now.
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) { |