/* buffer must be started */
if (gst_ring_buffer_prepare_read (buf, &readseg, &readptr, &len)) {
- gint written = 0;
+ gint written;
left = len;
do {
- written = writefunc (sink, readptr + written, left);
+ written = writefunc (sink, readptr, left);
GST_LOG_OBJECT (sink, "transfered %d bytes of %d from segment %d",
written, left, readseg);
if (written < 0 || written > left) {
break;
}
left -= written;
+ readptr += written;
} while (left > 0);
/* clear written samples */
gint readseg;
if (gst_ring_buffer_prepare_read (buf, &readseg, &readptr, &len)) {
- gint read = 0;
+ gint read;
left = len;
do {
- read = readfunc (src, readptr + read, left);
+ read = readfunc (src, readptr, left);
GST_LOG_OBJECT (src, "transfered %d bytes of %d to segment %d", read,
left, readseg);
if (read < 0 || read > left) {
GST_WARNING_OBJECT (src,
- "error reading data (reason: %s), skipping segment",
+ "error reading data %d (reason: %s), skipping segment", read,
g_strerror (errno));
break;
}
left -= read;
+ readptr += read;
} while (left > 0);
/* we read one segment */