From c00bdd866b8be043271a13f64740bbab9cf596d8 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Wed, 4 Apr 2012 11:51:28 +0200 Subject: [PATCH] opus: Handle GstByteWriter return values --- ext/opus/gstopusheader.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/ext/opus/gstopusheader.c b/ext/opus/gstopusheader.c index 2de891db4b..8dc5d27199 100644 --- a/ext/opus/gstopusheader.c +++ b/ext/opus/gstopusheader.c @@ -33,6 +33,7 @@ gst_opus_enc_create_id_buffer (gint nchannels, gint n_stereo_streams, { GstBuffer *buffer; GstByteWriter bw; + gboolean hdl = TRUE; g_return_val_if_fail (nchannels > 0 && nchannels < 256, NULL); g_return_val_if_fail (n_stereo_streams >= 0, NULL); @@ -41,19 +42,22 @@ gst_opus_enc_create_id_buffer (gint nchannels, gint n_stereo_streams, gst_byte_writer_init (&bw); /* See http://wiki.xiph.org/OggOpus */ - gst_byte_writer_put_data (&bw, (const guint8 *) "OpusHead", 8); - gst_byte_writer_put_uint8 (&bw, 0); /* version number */ - gst_byte_writer_put_uint8 (&bw, nchannels); - gst_byte_writer_put_uint16_le (&bw, 0); /* pre-skip */ - gst_byte_writer_put_uint32_le (&bw, sample_rate); - gst_byte_writer_put_uint16_le (&bw, 0); /* output gain */ - gst_byte_writer_put_uint8 (&bw, channel_mapping_family); + hdl &= gst_byte_writer_put_data (&bw, (const guint8 *) "OpusHead", 8); + hdl &= gst_byte_writer_put_uint8 (&bw, 0); /* version number */ + hdl &= gst_byte_writer_put_uint8 (&bw, nchannels); + hdl &= gst_byte_writer_put_uint16_le (&bw, 0); /* pre-skip */ + hdl &= gst_byte_writer_put_uint32_le (&bw, sample_rate); + hdl &= gst_byte_writer_put_uint16_le (&bw, 0); /* output gain */ + hdl &= gst_byte_writer_put_uint8 (&bw, channel_mapping_family); if (channel_mapping_family > 0) { - gst_byte_writer_put_uint8 (&bw, nchannels - n_stereo_streams); - gst_byte_writer_put_uint8 (&bw, n_stereo_streams); - gst_byte_writer_put_data (&bw, channel_mapping, nchannels); + hdl &= gst_byte_writer_put_uint8 (&bw, nchannels - n_stereo_streams); + hdl &= gst_byte_writer_put_uint8 (&bw, n_stereo_streams); + hdl &= gst_byte_writer_put_data (&bw, channel_mapping, nchannels); } + if (!hdl) + GST_WARNING ("Error creating header"); + buffer = gst_byte_writer_reset_and_get_buffer (&bw); GST_BUFFER_OFFSET (buffer) = 0;