27 #define RTP_H261_PAYLOAD_HEADER_SIZE 4
51 int sbit, ebit, gobn, mbap,
quant;
55 if (rtp_h261_ctx->
buf && rtp_h261_ctx->
timestamp != *timestamp) {
86 sbit = (buf[0] >> 5) & 0x07;
87 ebit = (buf[0] >> 2) & 0x07;
88 gobn = (buf[1] >> 4) & 0x0f;
89 mbap = ((buf[1] << 1) & 0x1e) | ((buf[2] >> 7) & 0x01);
90 quant = (buf[2] >> 2) & 0x1f;
97 if (!rtp_h261_ctx->
buf) {
99 if (!gobn && !sbit && !mbap && !quant) {
114 rtp_h261_ctx->
endbyte |= buf[0] & (0xff >> sbit);
142 rtp_h261_ctx->
endbyte = buf[len - 1] & (0xff << ebit);
173 .static_payload_id = 31,
RTPDynamicProtocolHandler ff_h261_dynamic_handler
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
RTP/JPEG specific private data.
int index
stream index in AVFormatContext
int avio_open_dyn_buf(AVIOContext **s)
Open a write only memory stream.
bitstream reader API header.
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
static int get_bits_left(GetBitContext *gb)
uint32_t timestamp
current frame timestamp
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define RTP_FLAG_MARKER
RTP marker bit was set for this packet.
static av_cold void h261_close_context(PayloadContext *pl_ctx)
#define RTP_H261_PAYLOAD_HEADER_SIZE
void ffio_free_dyn_buf(AVIOContext **s)
Free a dynamic buffer.
void avio_w8(AVIOContext *s, int b)
static void skip_bits(GetBitContext *s, int n)
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext.
uint8_t * buf
the temporary storage buffer
int ff_rtp_finalize_packet(AVPacket *pkt, AVIOContext **dyn_buf, int stream_idx)
Close the dynamic buffer and make a packet from it.
static int h261_handle_packet(AVFormatContext *ctx, PayloadContext *rtp_h261_ctx, AVStream *st, AVPacket *pkt, uint32_t *timestamp, const uint8_t *buf, int len, uint16_t seq, int flags)
This structure stores compressed data.