static void gst_exif_writer_init (GstExifWriter * writer, gint byte_order) { gst_byte_writer_init (&writer->tagwriter); gst_byte_writer_init (&writer->datawriter); writer->byte_order = byte_order; writer->tags_total = 0; if (writer->byte_order != G_LITTLE_ENDIAN && writer->byte_order != G_BIG_ENDIAN) { GST_WARNING ("Unexpected byte order %d, using system default: %d", writer->byte_order, G_BYTE_ORDER); writer->byte_order = G_BYTE_ORDER; } }
/** * gst_byte_writer_init_with_size: * @writer: #GstByteWriter instance * @size: Initial size of data * @fixed: If %TRUE the data can't be reallocated * * Initializes @writer with the given initial data size. * * Since: 0.10.26 */ void gst_byte_writer_init_with_size (GstByteWriter * writer, guint size, gboolean fixed) { g_return_if_fail (writer != NULL); gst_byte_writer_init (writer); writer->parent.data = g_malloc (size); writer->alloc_size = size; writer->fixed = fixed; writer->owned = TRUE; }
/** * gst_byte_writer_init_with_data: * @writer: #GstByteWriter instance * @data: Memory area for writing * @size: Size of @data in bytes * @initialized: If %TRUE the complete data can be read from the beginning * * Initializes @writer with the given * memory area. If @initialized is %TRUE it is possible to * read @size bytes from the #GstByteWriter from the beginning. * * Since: 0.10.26 */ void gst_byte_writer_init_with_data (GstByteWriter * writer, guint8 * data, guint size, gboolean initialized) { g_return_if_fail (writer != NULL); gst_byte_writer_init (writer); writer->parent.data = data; writer->parent.size = (initialized) ? size : 0; writer->alloc_size = size; writer->fixed = TRUE; writer->owned = FALSE; }
static GstBuffer * gst_opus_enc_create_id_buffer (gint nchannels, gint n_stereo_streams, gint sample_rate, guint8 channel_mapping_family, const guint8 * channel_mapping) { 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); g_return_val_if_fail (n_stereo_streams <= nchannels - n_stereo_streams, NULL); gst_byte_writer_init (&bw); /* See http://wiki.xiph.org/OggOpus */ hdl &= gst_byte_writer_put_data (&bw, (const guint8 *) "OpusHead", 8); hdl &= gst_byte_writer_put_uint8 (&bw, 0x01); /* 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) { 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; GST_BUFFER_OFFSET_END (buffer) = 0; return buffer; }