102 #define ASF_MAX_STREAMS 127 
  103 #define FRAME_HEADER_SIZE 16 
  108     0xce, 0x75, 0xf8, 0x7b, 0x8d, 0x46, 0xd1, 0x11, 0x8d, 0x82, 0x00, 0x60, 0x97, 0xc9, 0xa2, 0xb2
 
  111 #define PRINT_IF_GUID(g, cmp) \ 
  112     if (!ff_guidcmp(g, &cmp)) \ 
  113         av_dlog(NULL, "(GUID: %s) ", # cmp) 
  141     else PRINT_IF_GUID(g, stream_bitrate_guid);
 
  145     for (i = 0; i < 16; i++)
 
  151 #define print_guid(g) 
  191     int ret, 
type, picsize, desc_len;
 
  194     if (len < 1 + 4 + 2 + 2) {
 
  214         if (!strncmp(mime->
str, mimetype, 
sizeof(mimetype))) {
 
  226     if (picsize >= len) {
 
  233     desc_len = (len - picsize) * 2 + 1;
 
  275     if (id3v2_extra_meta)
 
  287     if ((
unsigned)len >= (UINT_MAX - 
LEN) / 2)
 
  290     if (!asf->
export_xmp && !strncmp(key, 
"xmp", 3))
 
  299     } 
else if (type == -1) { 
 
  302     } 
else if (type == 1) {  
 
  303         if (!strcmp(key, 
"WM/Picture")) { 
 
  305         } 
else if (!strcmp(key, 
"ID3")) { 
 
  311     } 
else if (type > 1 && type <= 5) {  
 
  314     } 
else if (type == 6) { 
 
  319                "Unsupported value type %d in tag %s.\n", type, key);
 
  362     int type_specific_size, sizeX;
 
  365     int test_for_ext_stream_audio, is_dvr_ms_audio = 0;
 
  385                        (10000000 / 1000) - start_time;
 
  389     test_for_ext_stream_audio = 0;
 
  400         test_for_ext_stream_audio = 1;
 
  416     if (test_for_ext_stream_audio) {
 
  435         if (is_dvr_ms_audio) {
 
  447         if (size >= (pos2 + 8 - pos1 + 24)) {
 
  461                size - (
avio_tell(pb) - pos1 + 24) >= 51) {
 
  500         if (tag1 == 
MKTAG(
'D', 
'V', 
'R', 
' ')) {
 
  516     avio_skip(pb, size - (pos2 - pos1 + 24));
 
  526     int ext_len, payload_ext_ct, stream_ct, i;
 
  527     uint32_t leak_rate, stream_num;
 
  528     unsigned int stream_languageid_index;
 
  543     if (stream_num < 128)
 
  550     if (stream_num < 128) {
 
  555     for (i = 0; i < stream_ct; i++) {
 
  561     for (i = 0; i < payload_ext_ct; i++) {
 
  582     int len1, len2, len3, len4, len5;
 
  589     get_tag(s, 
"title", 0, len1, 32);
 
  590     get_tag(s, 
"author", 0, len2, 32);
 
  591     get_tag(s, 
"copyright", 0, len3, 32);
 
  592     get_tag(s, 
"comment", 0, len4, 32);
 
  602     int desc_count, i, 
ret;
 
  605     for (i = 0; i < desc_count; i++) {
 
  606         int name_len, value_type, value_len;
 
  616         if (!value_type && value_len % 2)
 
  621         if (!strcmp(name, 
"AspectRatioX"))
 
  623         else if (!strcmp(name, 
"AspectRatioY"))
 
  626             get_tag(s, name, value_type, value_len, 32);
 
  638     for (j = 0; j < stream_count; j++) {
 
  640         unsigned int lang_len = 
avio_r8(pb);
 
  642                                     sizeof(lang))) < lang_len)
 
  656     int n, stream_num, name_len, value_len;
 
  660     for (i = 0; i < 
n; i++) {
 
  672         av_dlog(s, 
"%d stream %d name_len %2d type %d len %4d <%s>\n",
 
  673                 i, stream_num, name_len, value_type, value_len, name);
 
  675         if (!strcmp(name, 
"AspectRatioX")){
 
  678                 asf->
dar[stream_num].
num = aspect_x;
 
  679         } 
else if(!strcmp(name, 
"AspectRatioY")){
 
  682                 asf->
dar[stream_num].
den = aspect_y;
 
  684             get_tag(s, name, value_type, value_len, 16);
 
  703     for (i = 0; i < name_len; i++)
 
  706     for (i = 0; i < 
count; i++) {
 
  718                                     sizeof(name))) < name_len)
 
  744     for (i = 0; i<128; i++)
 
  756             if (!(asf->
hdr.
flags & 0x01) && gsize >= 100)
 
  803                            "DRM protected stream detected, decoding will likely fail!\n");
 
  812                     get_tag(s, 
"ASF_Protection_Type", -1, len, 32);
 
  814                     get_tag(s, 
"ASF_Key_ID", -1, len, 32);
 
  816                     get_tag(s, 
"ASF_License_URL", -1, len, 32);
 
  819                            "Ext DRM protected stream detected, decoding will likely fail!\n");
 
  828                    "gpos mismatch our pos=%"PRIu64
", end=%"PRId64
"\n",
 
  841     for (i = 0; i < 128; i++) {
 
  843         if (stream_num >= 0) {
 
  851             } 
else if ((asf->
dar[0].
num > 0) && (asf->
dar[0].
den > 0) &&
 
  858             av_dlog(s, 
"i=%d, st->codec->codec_type:%d, asf->dar %d:%d sar=%d:%d\n",
 
  865                 if (rfc1766 && strlen(rfc1766) > 1) {
 
  866                     const char primary_tag[3] = { rfc1766[0], rfc1766[1], 
'\0' }; 
 
  881 #define DO_2BITS(bits, var, defval)             \ 
  882     switch (bits & 3) {                         \ 
  884         var = avio_rl32(pb);                    \ 
  888         var = avio_rl16(pb);                    \ 
  909     uint32_t packet_length, padsize;
 
  925         if (c == 0x82 && !d && !e)
 
  938                    "ff asf bad header %x  at:%"PRId64
"\n", c, 
avio_tell(pb));
 
  940     if ((c & 0x8f) == 0x82) {
 
  961     if (!packet_length || packet_length >= (1
U << 29)) {
 
  963                "invalid packet_length %"PRIu32
" at:%"PRId64
"\n",
 
  967     if (padsize >= packet_length) {
 
  969                "invalid padsize %"PRIu32
" at:%"PRId64
"\n", padsize, 
avio_tell(pb));
 
  985     if (rsize > packet_length - padsize) {
 
  988                "invalid packet header length %d for pktlen %"PRIu32
"-%"PRIu32
" at %"PRId64
"\n",
 
  989                rsize, packet_length, padsize, 
avio_tell(pb));
 
  993     if (packet_length < asf->hdr.min_pktsize)
 
  996     av_dlog(s, 
"packet: size=%d padsize=%d  left=%d\n",
 
 1017     asfst                 = &asf->
streams[num & 0x7f];
 
 1022     av_dlog(asf, 
"key:%d stream:%d seq:%d offset:%d replic_size:%d\n",
 
 1181             av_dlog(s, 
"skipping asf data pkt with fragment offset for " 
 1182                     "stream:%d, expected:%d but got %d from pkt)\n",
 
 1213                        "freeing incomplete packet size %d, new %d\n",
 
 1241             av_dlog(asf, 
"new packet: stream:%d key:%d packet_key:%d audio:%d size:%d\n",
 
 1253         av_dlog(asf, 
"READ PACKET s:%d  os:%d  o:%d,%d  l:%d   DATA:%p\n",
 
 1263                    "packet fragment position invalid %u,%u not in %u\n",
 
 1277             if (ret < 0 || asf->packet_frag_offset + ret == 0)
 
 1316                            "pkt.size != ds_packet_size * ds_span (%d %d %d)\n",
 
 1326                         memset(newdata + asf_st->
pkt.
size, 0,
 
 1328                         while (offset < asf_st->pkt.
size) {
 
 1330                             int row = off / asf_st->
ds_span;
 
 1331                             int col = off % asf_st->
ds_span;
 
 1335                             memcpy(newdata + offset,
 
 1348 #if FF_API_DESTRUCT_PACKET 
 1407     for (i = 0; i < 128; i++) {
 
 1422     for (i = 0; i < 128; i++) {
 
 1440                             int64_t *ppos, int64_t pos_limit)
 
 1446     int64_t pos = *ppos;
 
 1520         int64_t itime, last_pos = -1;
 
 1530                "itime:0x%"PRIx64
", pct:%d, ict:%d\n", itime, pct, ict);
 
 1532         for (i = 0; i < ict; i++) {
 
 1538             if (pos != last_pos) {
 
 1540                        pktnum, pktct, index_pts);
 
 1622     .priv_class     = &asf_class,