Lines Matching defs:qdm

76 static int qdm2_parse_config(PayloadContext *qdm, AVStream *st,
92 /* FIXME: set default qdm->block_size */
97 qdm->subpkts_per_block = p[2];
102 qdm->block_type = AV_RB16(p + 2);
121 qdm->block_size = AV_RB32(p + 26);
146 * or more superblocks (containing qdm->subpkts_per_block subpackets
153 static int qdm2_parse_subpacket(PayloadContext *qdm, AVStream *st,
175 to_copy = FFMIN(len + (p - &buf[1]), 0x800 - qdm->len[id]);
176 memcpy(&qdm->buf[id][qdm->len[id]], buf + 1, to_copy);
177 qdm->len[id] += to_copy;
187 static int qdm2_restore_block(PayloadContext *qdm, AVStream *st, AVPacket *pkt)
193 av_assert0(qdm->cache > 0);
195 if (qdm->len[n] > 0)
199 if ((res = av_new_packet(pkt, qdm->block_size)) < 0)
206 if (qdm->len[n] > 0xff) {
207 *p++ = qdm->block_type | 0x80;
208 AV_WB16(p, qdm->len[n]);
211 *p++ = qdm->block_type;
212 *p++ = qdm->len[n];
214 if ((include_csum = (qdm->block_type == 2 || qdm->block_type == 4))) {
220 to_copy = FFMIN(qdm->len[n], pkt->size - (p - pkt->data));
221 memcpy(p, qdm->buf[n], to_copy);
222 qdm->len[n] = 0;
229 for (q = pkt->data; q < &pkt->data[qdm->block_size]; q++)
238 static int qdm2_parse_packet(AVFormatContext *s, PayloadContext *qdm,
253 if (qdm->n_pkts > 0) {
256 qdm->n_pkts = 0;
257 memset(qdm->len, 0, sizeof(qdm->len));
260 if ((res = qdm2_parse_config(qdm, st, ++p, end)) < 0)
276 if ((res = qdm2_parse_subpacket(qdm, st, p, end)) < 0)
281 qdm->timestamp = *timestamp;
282 if (++qdm->n_pkts < qdm->subpkts_per_block)
284 qdm->cache = 0;
286 if (qdm->len[n] > 0)
287 qdm->cache++;
291 if (!qdm->cache || (res = qdm2_restore_block(qdm, st, pkt)) < 0)
293 if (--qdm->cache == 0)
294 qdm->n_pkts = 0;
296 *timestamp = qdm->timestamp;
297 qdm->timestamp = RTP_NOTS_VALUE;
299 return (qdm->cache > 0) ? 1 : 0;