Man Linux: Main Page and Category List

NAME

       MP4ReadRtpPacket - Read an RTP packet

SYNTAX

       #include <mp4.h>

       bool MP4ReadRtpPacket(
            MP4FileHandle hFile,
            MP4TrackId trackId,
            u_int16_t packetIndex,
            u_int8_t** ppBytes,
            u_int32_t* pNumBytes,
            u_int32_t ssrc = 0,
            bool includeHeader = true,
            bool includePayload = true
       );

ARGUMENTS

       hFile  Specifies the mp4 file to which the operation applies.

       trackId
              Specifies the hint track to which the operation applies.

       packetIndex
              Specifies  which  packet  is to be read. Valid values range from
              zero to the number of packets in this hint minus one.

       pNumPackets
              Pointer to variable that will be hold the number of  packets  in
              the hint.

       ppBytes
              Pointer  to  the pointer to the packet data. See DESCRIPTION for
              details on this argument.

       pNumBytes
              Pointer to variable that will be hold the size in bytes  of  the
              packet.

       ssrc   Specifies  the  RTP  SSRC  to  be used when constructing the RTP
              packet header.

       includeHeader
              Specifies whether the library should  include  the  standard  12
              byte   RTP   header  to  the  returned  packet.  The  header  is
              constructed from the information in  the  hint  sample  and  the
              specified ssrc.

       includePayload
              Specifies  whether the library should include the packet payload
              (RTP payload header and media data) in the returned packet.

RETURN VALUES

       Upon success, true (1). Upon an error, false (0).

DESCRIPTION

       MP4ReadRtpPacket reads the  specified  packet  from  the  current  hint
       sample, as previously read by MP4ReadRtpHint().

       The   argument,   ppBytes,  allows  for  two  possible  approaches  for
       buffering:

       If the calling application wishes to handle its own  buffering  it  can
       set *ppBytes to the buffer it wishes to use. The calling application is
       responsible for ensuring that the buffer is large enough  to  hold  the
       packet.  This  can  be done by using MP4GetRtpPayload() to retrieve the
       maximum packet payload size and hence how large  the  receiving  buffer
       must be. Caveat: the value returned by MP4GetRtpPayload is the maxiumum
       payload size, if the RTP packet header is going to be included  by  the
       library this value should be incremented by 12.

       If the value of *ppBytes is NULL, then an appropriately sized buffer is
       automatically malloc’ed for the sample data and *ppBytes  set  to  this
       pointer.  The  calling  application  is  responsible  for free’ing this
       memory.

       The application is expected to  provide  the  value  of  the  RTP  SSRC
       identifier  which  uniquely  identifies  the  originator  of  the media
       stream. For most applications, a single random value can  be  provided.
       The  value  should  be the same for all packets for the duration of the
       RTP transmission. If the parameter "includeHeader" is false, then  this
       value has no effect.

       By  default the library constructs the standard 12 byte RTP header from
       the information in the hint sample, and the  specified  SSRC.  It  then
       concatenates  the  RTP  header with the packet payload, that is the RTP
       payload specific  header  and  the  media  data  for  the  packet.  The
       "includeHeader"  and  "includePayload"  parameters  allow  control over
       these steps, so that either just the packet payloads or  just  the  RTP
       headers  can  be  returned.  A  potential use of this feature is if the
       calling application wishes to construct an  extended  RTP  header  with
       non-standard options.

SEE ALSO

       MP4(3) MP4ReadRtpHint(3)