Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

CURLOPT_INTERLEAVEFUNCTION (3)

Name

CURLOPT_INTERLEAVEFUNCTION - callback for RTSP interleaved data

Synopsis

#include <curl/curl.h>

size_t interleave_callback(void *ptr, size_t size, size_t nmemb,
void *userdata);

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEFUNCTION,
interleave_callback);

Description

curl_easy_setopt options                         CURLOPT_INTERLEAVEFUNCTION(3)



NAME
       CURLOPT_INTERLEAVEFUNCTION - callback for RTSP interleaved data

SYNOPSIS
       #include <curl/curl.h>

       size_t interleave_callback(void *ptr, size_t size, size_t nmemb,
                                  void *userdata);

       CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEFUNCTION,
                                 interleave_callback);

DESCRIPTION
       Pass a pointer to your callback function, which should match the proto-
       type shown above.

       This callback function gets  called  by  libcurl  as  soon  as  it  has
       received  interleaved  RTP  data.  This function gets called for each $
       block and therefore contains  exactly  one  upper-layer  protocol  unit
       (e.g.   one  RTP packet). Curl writes the interleaved header as well as
       the included data for each call. The first byte is always an ASCII dol-
       lar  sign. The dollar sign is followed by a one byte channel identifier
       and then a 2 byte integer length in network  byte  order.  See  RFC2326
       Section  10.12 for more information on how RTP interleaving behaves. If
       unset or set to NULL, curl will use the default write function.

       Interleaved RTP poses some challenges for the client application. Since
       the  stream data is sharing the RTSP control connection, it is critical
       to service the RTP in a timely fashion. If the RTP data is not  handled
       quickly, subsequent response processing may become unreasonably delayed
       and   the   connection   may   close.   The   application    may    use
       CURL_RTSPREQ_RECEIVE  to service RTP data when no requests are desired.
       If the application makes a request, (e.g.  CURL_RTSPREQ_PAUSE) then the
       response  handler  will process any pending RTP data before marking the
       request as finished.

       The CURLOPT_INTERLEAVEDATA(3) is passed in the userdata argument in the
       callback.

DEFAULT
       NULL, the interleave data is then passed to the regular write function:
       CURLOPT_WRITEFUNCTION(3).

PROTOCOLS
       RTSP

EXAMPLE
       static size_t rtp_write(void *ptr, size_t size, size_t nmemb, void *user)
       {
         struct local *l = (struct local *)user;
         /* take care of the packet in 'ptr', then return... */
         return size * nmemb;
       }
       {
         struct local rtp_data;
         curl_easy_setopt(curl, CURLOPT_INTERLEAVEFUNCTION, rtp_write);
         curl_easy_setopt(curl, CURLOPT_INTERLEAVEDATA, &rtp_data);
       }

AVAILABILITY
       Added in 7.20.0

RETURN VALUE
       Returns CURLE_OK if the option is supported,  and  CURLE_UNKNOWN_OPTION
       if not.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+------------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE  |
       +---------------+------------------+
       |Availability   | web/curl         |
       +---------------+------------------+
       |Stability      | Uncommitted      |
       +---------------+------------------+

SEE ALSO
       CURLOPT_INTERLEAVEDATA(3), CURLOPT_RTSP_REQUEST(3),



NOTES
       Source  code  for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source       was       downloaded      from       https://curl.se/down-
       load/curl-7.83.1.tar.bz2.

       Further information about this software can be found on the open source
       community website at http://curl.haxx.se/.



libcurl 7.83.1                September 08, 2021
                                                 CURLOPT_INTERLEAVEFUNCTION(3)