DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

CURLOPT_INTERLEAVEFUNCTION(3)





CURLOPT_INTERLEAVEFUNCTION(3curl_easy_setopt optionCURLOPT_INTERLEAVEFUNCTION(3)



NAME

     CURLOPT_INTERLEAVEFUNCTION  -  callback  function  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 prototype 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 dollar 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 inter-
     leaving  behaves. If unset or set to NULL, curl will use the
     default write function.

     Interleaved RTP poses some challenges for the client  appli-
     cation.  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_WRITEDATA(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)

libcurl 7.58.0   Last change: September 15, 2017                1


CURLOPT_INTERLEAVEFUNCTION(3curl_easy_setopt optionCURLOPT_INTERLEAVEFUNCTION(3)


     {
       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.


SEE ALSO

     CURLOPT_INTERLEAVEDATA(3), CURLOPT_RTSP_REQUEST(3),

libcurl 7.58.0   Last change: September 15, 2017                2


Man(1) output converted with man2html