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;
68 uint32_t *timestamp,
const uint8_t *buf,
71 unsigned adu_size, continuation;
75 buf = &
data->split_buf[
data->split_pos];
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;
103 if (
data->split_pos ==
data->split_buf_size) {
120 if (!continuation && adu_size <=
len) {
129 memcpy(
pkt->
data, buf, adu_size);
137 if (!
data->split_buf) {
142 memcpy(
data->split_buf, buf,
data->split_buf_size);
146 }
else if (!continuation) {
150 data->adu_size = adu_size;
152 data->timestamp = *timestamp;
164 if (!
data->fragment) {
166 "Received packet without a start fragment; dropping.\n");
169 if (adu_size !=
data->adu_size ||
170 data->timestamp != *timestamp) {
179 if (
data->cur_size <
data->adu_size)
185 "Error occurred when getting fragment buffer.\n");
Macro definitions for various function/variable attributes.
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
int avio_open_dyn_buf(AVIOContext **s)
Open a write only memory stream.
void ffio_free_dyn_buf(AVIOContext **s)
Free a dynamic buffer.
#define flags(name, subs,...)
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_LOG_WARNING
Something somehow does not look correct.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int ff_rtp_finalize_packet(AVPacket *pkt, AVIOContext **dyn_buf, int stream_idx)
Close the dynamic buffer and make a packet from it.
static void mpa_robust_close_context(PayloadContext *data)
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)
static int mpa_robust_parse_rtp_header(AVFormatContext *ctx, const uint8_t *buf, int len, unsigned *adu_size, unsigned *cont)
const RTPDynamicProtocolHandler ff_mpeg_audio_robust_dynamic_handler
This structure stores compressed data.
int index
stream index in AVFormatContext
RTP/JPEG specific private data.
AVIOContext * fragment
buffer for split payloads
uint32_t timestamp
current frame timestamp