45 unsigned *adu_size,
unsigned *cont)
54 *cont = !!(buf[0] & 0x80);
55 if (!(buf[0] & 0x40)) {
57 *adu_size = buf[0] & ~0xc0;
60 *adu_size =
AV_RB16(buf) & ~0xc000;
71 unsigned adu_size, continuation;
80 if (header_size < 0) {
87 if (continuation || adu_size > len) {
99 memcpy(pkt->
data, buf, adu_size);
101 data->
split_pos += header_size + adu_size;
120 if (!continuation && adu_size <= len) {
129 memcpy(pkt->
data, buf, adu_size);
146 }
else if (!continuation) {
166 "Received packet without a start fragment; dropping.\n");
185 "Error occurred when getting fragment buffer.\n");
RTPDynamicProtocolHandler ff_mpeg_audio_robust_dynamic_handler
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
ptrdiff_t const GLvoid * data
#define AV_LOG_WARNING
Something somehow does not look correct.
RTP/JPEG specific private data.
int index
stream index in AVFormatContext
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_WB32 unsigned int_TMPL AV_WB24 unsigned int_TMPL AV_RB16
int avio_open_dyn_buf(AVIOContext **s)
Open a write only memory stream.
Macro definitions for various function/variable attributes.
static int mpa_robust_parse_rtp_header(AVFormatContext *ctx, const uint8_t *buf, int len, unsigned *adu_size, unsigned *cont)
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values.
uint32_t timestamp
current frame timestamp
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static void mpa_robust_close_context(PayloadContext *data)
void ffio_free_dyn_buf(AVIOContext **s)
Free a dynamic buffer.
AVIOContext * fragment
buffer for split payloads
static int mpa_robust_parse_packet(AVFormatContext *ctx, PayloadContext *data, AVStream *st, AVPacket *pkt, uint32_t *timestamp, const uint8_t *buf, int len, uint16_t seq, int flags)
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
int ff_rtp_finalize_packet(AVPacket *pkt, AVIOContext **dyn_buf, int stream_idx)
Close the dynamic buffer and make a packet from it.
This structure stores compressed data.