Go to the documentation of this file.
   70     int start_partition, end_packet;
 
   71     int extended_bits, part_id;
 
   72     int pictureid_present = 0, tl0picidx_present = 0, tid_present = 0,
 
   74     int pictureid = -1, pictureid_mask = 0;
 
   75     int returned_old_frame = 0;
 
   76     uint32_t old_timestamp = 0;
 
   94     extended_bits   = buf[0] & 0x80;
 
   95     start_partition = buf[0] & 0x10;
 
   96     part_id         = buf[0] & 0x0f;
 
  103         pictureid_present = buf[0] & 0x80;
 
  104         tl0picidx_present = buf[0] & 0x40;
 
  105         tid_present       = buf[0] & 0x20;
 
  106         keyidx_present    = buf[0] & 0x10;
 
  110     if (pictureid_present) {
 
  116             pictureid = 
AV_RB16(buf) & 0x7fff;
 
  117             pictureid_mask = 0x7fff;
 
  121             pictureid = buf[0] & 0x7f;
 
  122             pictureid_mask = 0x7f;
 
  127     if (tl0picidx_present) {
 
  132     if (tid_present || keyidx_present) {
 
  140     if (start_partition && part_id == 0 && 
len >= 3) {
 
  142         int non_key = buf[0] & 0x01;
 
  156             if (pictureid >= 0) {
 
  159                                                "Missed a picture, sequence broken\n");
 
  161                     if (vp8->
data && !can_continue)
 
  163                                                    "Missed a picture, sequence broken\n");
 
  166                 uint16_t expected_seq = vp8->
prev_seq + 1;
 
  167                 int16_t 
diff = seq - expected_seq;
 
  176                     if ((
diff == 0 || 
diff == 1) && can_continue) {
 
  180                                                    "Missed too much, sequence broken\n");
 
  185                                                    "Missed unknown data, sequence broken\n");
 
  195                     returned_old_frame = 1;
 
  211         uint16_t expected_seq = vp8->
prev_seq + 1;
 
  219                                        "Received no start marker; dropping frame\n");
 
  222         if (seq != expected_seq) {
 
  225                                            "Missed part of a keyframe, sequence broken\n");
 
  231                                            "Missed part of the first partition, sequence broken\n");
 
  243     if (returned_old_frame) {
 
  244         *timestamp = old_timestamp;
 
  245         return end_packet ? 1 : 0;
 
  
#define AV_LOG_WARNING
Something somehow does not look correct.
 
static av_cold int init(AVCodecContext *avctx)
 
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
 
static void vp8_close_context(PayloadContext *vp8)
 
#define RTP_FLAG_MARKER
RTP marker bit was set for this packet.
 
const RTPDynamicProtocolHandler ff_vp8_dynamic_handler
 
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
 
int ff_rtp_finalize_packet(AVPacket *pkt, AVIOContext **dyn_buf, int stream_idx)
Close the dynamic buffer and make a packet from it.
 
uint32_t timestamp
current frame timestamp
 
static int vp8_need_keyframe(PayloadContext *vp8)
 
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
 
#define AV_PKT_FLAG_CORRUPT
The packet content is corrupted.
 
int avio_open_dyn_buf(AVIOContext **s)
Open a write only memory stream.
 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_RL16
 
static int vp8_broken_sequence(AVFormatContext *ctx, PayloadContext *vp8, const char *msg)
 
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
 
int flags
A combination of AV_PKT_FLAG values.
 
void ffio_free_dyn_buf(AVIOContext **s)
Free a dynamic buffer.
 
int index
stream index in AVFormatContext
 
static int vp8_handle_packet(AVFormatContext *ctx, PayloadContext *vp8, AVStream *st, AVPacket *pkt, uint32_t *timestamp, const uint8_t *buf, int len, uint16_t seq, int flags)
 
static av_always_inline int diff(const uint32_t a, const uint32_t b)
 
This structure stores compressed data.
 
#define flags(name, subs,...)
 
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
 
static av_cold int vp8_init(AVFormatContext *s, int st_index, PayloadContext *vp8)
 
RTP/JPEG specific private data.
 
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