27 #define RTP_VP9_DESC_REQUIRED_SIZE 1
38 "RTP/VP9 support is still experimental\n");
48 int has_pic_id, has_layer_idc, has_ref_idc, has_ss_data, has_su_data;
49 av_unused int pic_id = 0, non_key_frame = 0;
50 av_unused int layer_temporal = -1, layer_spatial = -1, layer_quality = -1;
51 int ref_fields = 0, has_ref_field_ext_pic_id = 0;
52 int first_fragment, last_fragment;
57 if (rtp_vp9_ctx->
buf && rtp_vp9_ctx->
timestamp != *timestamp)
82 has_pic_id = !!(buf[0] & 0x80);
83 has_layer_idc = !!(buf[0] & 0x40);
84 has_ref_idc = !!(buf[0] & 0x20);
85 first_fragment = !!(buf[0] & 0x10);
86 last_fragment = !!(buf[0] & 0x08);
87 has_ss_data = !!(buf[0] & 0x04);
88 has_su_data = !!(buf[0] & 0x02);
93 if (last_fragment != rtp_m) {
94 av_log(ctx,
AV_LOG_ERROR,
"Invalid combination of B and M marker (%d != %d)\n", last_fragment, rtp_m);
127 pic_id =
AV_RB16(buf) & 0x7fff;
131 pic_id = buf[0] & 0x7f;
154 layer_temporal = buf[0] & 0xC0;
155 layer_spatial = buf[0] & 0x30;
156 layer_quality = buf[0] & 0x0C;
158 ref_fields = buf[0] & 0x03;
187 has_ref_field_ext_pic_id = buf[0] & 0x10;
190 if (has_ref_field_ext_pic_id) {
258 if (!rtp_vp9_ctx->
buf) {
260 if (first_fragment) {