Ejemplo n.º 1
0
static GstFlowReturn
gst_fd_sink_render_buffers (GstFdSink * sink, GstBuffer ** buffers,
    guint num_buffers, guint8 * mem_nums, guint total_mems)
{
  GstFlowReturn ret;
  guint64 skip = 0;

  for (;;) {
    guint64 bytes_written = 0;

    ret = gst_writev_buffers (GST_OBJECT_CAST (sink), sink->fd, sink->fdset,
        buffers, num_buffers, mem_nums, total_mems, &bytes_written, skip);

    sink->bytes_written += bytes_written;
    sink->current_pos += bytes_written;
    skip += bytes_written;

    if (!sink->unlock)
      break;

    ret = gst_base_sink_wait_preroll (GST_BASE_SINK (sink));
    if (ret != GST_FLOW_OK)
      return ret;
  }

  return ret;
}
Ejemplo n.º 2
0
static GstFlowReturn
gst_file_sink_render_buffers (GstFileSink * sink, GstBuffer ** buffers,
    guint num_buffers, guint8 * mem_nums, guint total_mems)
{
  GST_DEBUG_OBJECT (sink,
      "writing %u buffers (%u memories) at position %" G_GUINT64_FORMAT,
      num_buffers, total_mems, sink->current_pos);

  return gst_writev_buffers (GST_OBJECT_CAST (sink), fileno (sink->file), NULL,
      buffers, num_buffers, mem_nums, total_mems, NULL, &sink->current_pos);
}