gchar layout[7] = { 0, };
gint law = 0, depth = 0, ieee = 0;
- head = (guint8 *) gst_adapter_peek (auparse->adapter, 24);
+ head = (guint8 *) gst_adapter_map (auparse->adapter, 24);
g_assert (head != NULL);
GST_DEBUG_OBJECT (auparse, "[%c%c%c%c]", head[0], head[1], head[2], head[3]);
goto add_pad_failed;
GST_DEBUG_OBJECT (auparse, "offset=%" G_GINT64_FORMAT, auparse->offset);
- gst_adapter_flush (auparse->adapter, auparse->offset);
+ gst_adapter_unmap (auparse->adapter, auparse->offset);
gst_caps_unref (tempcaps);
return GST_FLOW_OK;
/* ERRORS */
unknown_header:
{
+ gst_adapter_unmap (auparse->adapter, 0);
GST_ELEMENT_ERROR (auparse, STREAM, WRONG_TYPE, (NULL), (NULL));
return GST_FLOW_ERROR;
}
unsupported_sample_rate:
{
+ gst_adapter_unmap (auparse->adapter, 0);
GST_ELEMENT_ERROR (auparse, STREAM, FORMAT, (NULL),
("Unsupported samplerate: %u", auparse->samplerate));
return GST_FLOW_ERROR;
}
unsupported_number_of_channels:
{
+ gst_adapter_unmap (auparse->adapter, 0);
GST_ELEMENT_ERROR (auparse, STREAM, FORMAT, (NULL),
("Unsupported number of channels: %u", auparse->channels));
return GST_FLOW_ERROR;
}
unknown_format:
{
+ gst_adapter_unmap (auparse->adapter, 0);
GST_ELEMENT_ERROR (auparse, STREAM, FORMAT, (NULL),
("Unsupported encoding: %u", auparse->encoding));
return GST_FLOW_ERROR;
}
add_pad_failed:
{
+ gst_adapter_unmap (auparse->adapter, 0);
GST_ELEMENT_ERROR (auparse, STREAM, FAILED, (NULL),
("Failed to add srcpad"));
gst_caps_unref (tempcaps);
gint64 timestamp;
gint64 duration;
gint64 offset;
+ GstSegment segment;
auparse = GST_AU_PARSE (gst_pad_get_parent (pad));
- GST_LOG_OBJECT (auparse, "got buffer of size %u", GST_BUFFER_SIZE (buf));
+ GST_LOG_OBJECT (auparse, "got buffer of size %u", gst_buffer_get_size (buf));
gst_adapter_push (auparse->adapter, buf);
buf = NULL;
if (ret != GST_FLOW_OK)
goto out;
- gst_pad_push_event (auparse->srcpad,
- gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME,
- 0, GST_CLOCK_TIME_NONE, 0));
+ gst_segment_init (&segment, GST_FORMAT_TIME);
+ gst_pad_push_event (auparse->srcpad, gst_event_new_segment (&segment));
}
avail = gst_adapter_available (auparse->adapter);
if (sendnow > 0) {
GstBuffer *outbuf;
- const guint8 *data;
gint64 pos;
- ret = gst_pad_alloc_buffer_and_set_caps (auparse->srcpad,
- auparse->buffer_offset, sendnow, GST_PAD_CAPS (auparse->srcpad),
- &outbuf);
-
- if (ret != GST_FLOW_OK) {
- GST_DEBUG_OBJECT (auparse, "pad alloc flow: %s", gst_flow_get_name (ret));
- goto out;
- }
-
- data = gst_adapter_peek (auparse->adapter, sendnow);
- memcpy (GST_BUFFER_DATA (outbuf), data, sendnow);
- gst_adapter_flush (auparse->adapter, sendnow);
+ outbuf = gst_adapter_take_buffer (auparse->adapter, sendnow);
+ outbuf = gst_buffer_make_writable (outbuf);
pos = auparse->buffer_offset - auparse->offset;
pos = MAX (pos, 0);
auparse = GST_AU_PARSE (gst_pad_get_parent (pad));
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_SEGMENT:
{
- GstFormat format;
- gdouble rate, arate;
- gint64 start, stop, time, offset = 0;
- gboolean update;
+ gint64 start, stop, offset = 0;
GstSegment segment;
GstEvent *new_event = NULL;
- gst_segment_init (&segment, GST_FORMAT_UNDEFINED);
- gst_event_parse_new_segment_full (event, &update, &rate, &arate, &format,
- &start, &stop, &time);
- gst_segment_set_newsegment_full (&segment, update, rate, arate, format,
- start, stop, time);
+ /* some debug output */
+ gst_event_copy_segment (event, &segment);
+ GST_DEBUG_OBJECT (auparse, "received newsegment %" GST_SEGMENT_FORMAT,
+ &segment);
+ start = segment.start;
+ stop = segment.stop;
if (auparse->sample_size > 0) {
if (start > 0) {
offset = start;
"new segment: %" GST_TIME_FORMAT " ... %" GST_TIME_FORMAT,
GST_TIME_ARGS (start), GST_TIME_ARGS (stop));
- new_event = gst_event_new_new_segment_full (update, rate, arate,
- GST_FORMAT_TIME, start, stop, start);
+ gst_segment_init (&segment, GST_FORMAT_TIME);
+ segment.start = segment.time = start;
+ segment.stop = stop;
+ new_event = gst_event_new_segment (&segment);
ret = gst_pad_push_event (auparse->srcpad, new_event);
}