Merge commit '61f9ad2dfcb3f98b7ac5777d19d0e7b61d0be01e'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 10 Feb 2013 11:18:50 +0000 (12:18 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 10 Feb 2013 11:25:40 +0000 (12:25 +0100)
* commit '61f9ad2dfcb3f98b7ac5777d19d0e7b61d0be01e':
  asfdec: read the full Metadata Object, not just aspect ratio information

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavformat/asfdec.c

@@@ -278,11 -290,8 +280,11 @@@ static void get_tag(AVFormatContext *s
  
      if (type == 0) {         // UTF16-LE
          avio_get_str16le(s->pb, len, value, 2 * len + 1);
 +    } else if (type == -1) { // ASCII
 +        avio_read(s->pb, value, len);
 +        value[len]=0;
      } else if (type > 1 && type <= 5) {  // boolean or DWORD or QWORD or WORD
-         uint64_t num = get_value(s->pb, type);
+         uint64_t num = get_value(s->pb, type, type2_size);
          snprintf(value, len, "%"PRIu64, num);
      } else if (type == 1 && !strcmp(key, "WM/Picture")) { // handle cover art
          asf_read_picture(s, len);
@@@ -758,19 -757,8 +761,19 @@@ static int asf_read_header(AVFormatCont
          } else {
              if (!s->keylen) {
                  if (!ff_guidcmp(&g, &ff_asf_content_encryption)) {
 +                    unsigned int len;
 +                    AVPacket pkt;
                      av_log(s, AV_LOG_WARNING,
                             "DRM protected stream detected, decoding will likely fail!\n");
-                     get_tag(s, "ASF_Protection_Type", -1, len);
 +                    len= avio_rl32(pb);
 +                    av_log(s, AV_LOG_DEBUG, "Secret data:\n");
 +                    av_get_packet(pb, &pkt, len); av_hex_dump_log(s, AV_LOG_DEBUG, pkt.data, pkt.size); av_free_packet(&pkt);
 +                    len= avio_rl32(pb);
-                     get_tag(s, "ASF_Key_ID", -1, len);
++                    get_tag(s, "ASF_Protection_Type", -1, len, 32);
 +                    len= avio_rl32(pb);
-                     get_tag(s, "ASF_License_URL", -1, len);
++                    get_tag(s, "ASF_Key_ID", -1, len, 32);
 +                    len= avio_rl32(pb);
++                    get_tag(s, "ASF_License_URL", -1, len, 32);
                  } else if (!ff_guidcmp(&g, &ff_asf_ext_content_encryption)) {
                      av_log(s, AV_LOG_WARNING,
                             "Ext DRM protected stream detected, decoding will likely fail!\n");