Seek support in GstCurlBaseSink

Vinod Kesti vinodkesti at yahoo.com
Tue Jul 4 04:17:12 UTC 2017


All,

This question in specific to curl but some one familiar with curl can help
me here.

I am trying to add seek support in GstCurlBaseSink plugin for mp4 file
fragment push.

Curl has APIs for SEEK operation. One API to register the SEEK function and
other for private data. But I don't know how to trigger the seek event.
Below links have   API details.
https://curl.haxx.se/libcurl/c/CURLOPT_SEEKDATA.html
https://curl.haxx.se/libcurl/c/CURLOPT_SEEKFUNCTION.html

Can any one help me to understand how to use these APIs ?
API doc describes only about the input seek. Does curl SEEK API support
output file seek also ?
----------------------------------------------------------------------------------

I tried to implement seek operation similar to file sink through lseek()
using the fd(Curl file descriptor). But seek operation is failing. errno
returned is invalid argument.

What wrong here ??

Seek code function.
static gboolean
gst_curl_sink_do_seek (GstCurlBaseSink * sink, guint64 new_offset)
{
  GST_DEBUG_OBJECT (sink, "Seeking to offset %" G_GUINT64_FORMAT
      " using " __GST_STDIO_SEEK_FUNCTION, new_offset);
  if(sink->fd.fd == -1)
      return TRUE;
  if (fsync(sink->fd.fd) < 0)
    goto flush_failed;
#if defined (G_OS_UNIX) || defined (G_OS_WIN32)
  if (lseek (sink->fd.fd, (off_t) new_offset,
          SEEK_SET) == (off_t) - 1)
    goto seek_failed;
#else
    goto seek_failed;
#endif

  return TRUE;

  /* ERRORS */
flush_failed:
  {
    GST_DEBUG_OBJECT (sink, "Flush failed: %s", g_strerror (errno));
    return FALSE;
  }
seek_failed:
  {
    GST_DEBUG_OBJECT (sink, "Seeking failed: %s", g_strerror (errno));
    return FALSE;
  }
}




--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Seek-support-in-GstCurlBaseSink-tp4683665.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list