Ticket #1043: mpegts.c.TXT

File mpegts.c.TXT, 1.3 KB (added by puck, 5 years ago)
Line 
1mpegts.c
2
3
4static int parse_MP4SLDescrTag(MP4DescrParseContext *d, int64_t off, int len)
5{
6    Mp4Descr *descr = d->active_descr;
7    int predefined;
8    if (!descr)
9        return -1;
10
11    predefined = avio_r8(&d->pb);
12    if (!predefined) {
13        int lengths;
14        int flags = avio_r8(&d->pb);
15        descr->sl.use_au_start       = !!(flags & 0x80);
16        descr->sl.use_au_end         = !!(flags & 0x40);
17        descr->sl.use_rand_acc_pt    = !!(flags & 0x20);
18        descr->sl.use_padding        = !!(flags & 0x08);
19        descr->sl.use_timestamps     = !!(flags & 0x04);
20        descr->sl.use_idle           = !!(flags & 0x02);
21        descr->sl.timestamp_res      = avio_rb32(&d->pb);
22                                       avio_rb32(&d->pb);
23        descr->sl.timestamp_len      = avio_r8(&d->pb);
24        descr->sl.ocr_len            = avio_r8(&d->pb);
25        descr->sl.au_len             = avio_r8(&d->pb);
26        descr->sl.inst_bitrate_len   = avio_r8(&d->pb);
27        lengths                      = avio_rb16(&d->pb);
28        descr->sl.degr_prior_len     = lengths >> 12;
29        descr->sl.au_seq_num_len     = (lengths >> 7) & 0x1f;
30        descr->sl.packet_seq_num_len = (lengths >> 2) & 0x1f;
31    } else {
32        av_log_missing_feature(d->s, "Predefined SLConfigDescriptor\n", 0);
33    }
34    return 0;
35}