54 int f, p,
i, sbit, ebit,
src,
r;
61 if (
data->buf &&
data->timestamp != *timestamp) {
64 data->endbyte_bits = 0;
78 r = ((buf[1] & 0x01) << 3) | ((buf[2] & 0xe0) >> 5);
82 if (
len < header_size) {
84 "Too short H.263 RTP packet: %d bytes, %d header bytes\n",
93 if (
len < header_size) {
95 "Too short H.263 RTP packet: %d bytes, %d header bytes\n",
102 sbit = (buf[0] >> 3) & 0x7;
104 src = (buf[1] & 0xe0) >> 5;
105 if (!(buf[0] & 0xf8)) {
106 if ((
src == 0 ||
src >= 6) &&
r) {
110 "Interpreting H.263 RTP data as RFC 2429/4629 even though "
111 "signalled with a static payload type.\n");
128 data->timestamp = *timestamp;
135 if (
data->endbyte_bits || sbit) {
136 if (
data->endbyte_bits == sbit) {
137 data->endbyte |= buf[0] & (0xff >> sbit);
138 data->endbyte_bits = 0;
147 if (
data->endbyte_bits) {
154 if (
data->endbyte_bits)
156 (8 -
data->endbyte_bits);
164 data->endbyte_bits = 8 - ebit;
165 data->endbyte = buf[
len - 1] & (0xff << ebit);
173 if (
data->endbyte_bits)
175 data->endbyte_bits = 0;
193 .static_payload_id = 34,
Macro definitions for various function/variable attributes.
void avio_w8(AVIOContext *s, int b)
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,...)
bitstream reader API header.
static int get_bits_left(GetBitContext *gb)
static void skip_bits(GetBitContext *s, int n)
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext.
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
#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.
#define RTP_FLAG_MARKER
RTP marker bit was set for this packet.
static int h263_handle_packet(AVFormatContext *ctx, PayloadContext *data, AVStream *st, AVPacket *pkt, uint32_t *timestamp, const uint8_t *buf, int len, uint16_t seq, int flags)
const RTPDynamicProtocolHandler ff_h263_rfc2190_dynamic_handler
static void h263_close_context(PayloadContext *data)
This structure stores compressed data.
int flags
A combination of AV_PKT_FLAG values.
int index
stream index in AVFormatContext
RTP/JPEG specific private data.
uint32_t timestamp
current frame timestamp
uint8_t * buf
the temporary storage buffer
enum AVMediaType codec_type