diff options
-rw-r--r-- | libavformat/asf.c | 12 | ||||
-rw-r--r-- | libavformat/asf.h | 3 | ||||
-rw-r--r-- | libavformat/asfdec.c | 9 |
3 files changed, 24 insertions, 0 deletions
diff --git a/libavformat/asf.c b/libavformat/asf.c index 79ef61444b..cf01e07326 100644 --- a/libavformat/asf.c +++ b/libavformat/asf.c @@ -116,6 +116,18 @@ const ff_asf_guid ff_asf_language_guid = { 0xa9, 0x46, 0x43, 0x7c, 0xe0, 0xef, 0xfc, 0x4b, 0xb2, 0x29, 0x39, 0x3e, 0xde, 0x41, 0x5c, 0x85 }; +const ff_asf_guid ff_asf_content_encryption = { + 0xfb, 0xb3, 0x11, 0x22, 0x23, 0xbd, 0xd2, 0x11, 0xb4, 0xb7, 0x00, 0xa0, 0xc9, 0x55, 0xfc, 0x6e +}; + +const ff_asf_guid ff_asf_ext_content_encryption = { + 0x14, 0xe6, 0x8a, 0x29, 0x22, 0x26, 0x17, 0x4c, 0xb9, 0x35, 0xda, 0xe0, 0x7e, 0xe9, 0x28, 0x9c +}; + +const ff_asf_guid ff_asf_digital_signature = { + 0xfc, 0xb3, 0x11, 0x22, 0x23, 0xbd, 0xd2, 0x11, 0xb4, 0xb7, 0x00, 0xa0, 0xc9, 0x55, 0xfc, 0x6e +}; + const AVMetadataConv ff_asf_metadata_conv[] = { { "AlbumArtist", "artist" }, { "AlbumTitle" , "album" }, diff --git a/libavformat/asf.h b/libavformat/asf.h index 314c0f8882..dd623e8f34 100644 --- a/libavformat/asf.h +++ b/libavformat/asf.h @@ -160,6 +160,9 @@ extern const ff_asf_guid ff_asf_ext_stream_audio_stream; extern const ff_asf_guid ff_asf_metadata_header; extern const ff_asf_guid ff_asf_my_guid; extern const ff_asf_guid ff_asf_language_guid; +extern const ff_asf_guid ff_asf_content_encryption; +extern const ff_asf_guid ff_asf_ext_content_encryption; +extern const ff_asf_guid ff_asf_digital_signature; extern const AVMetadataConv ff_asf_metadata_conv[]; diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c index 08f0d6586b..543faf29d4 100644 --- a/libavformat/asfdec.c +++ b/libavformat/asfdec.c @@ -532,6 +532,15 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap) } else if (url_feof(pb)) { return -1; } else { + if (!s->keylen) { + if (!guidcmp(&g, &ff_asf_content_encryption)) { + av_log(s, AV_LOG_WARNING, "DRM protected stream detected, decoding will likely fail!\n"); + } else if (!guidcmp(&g, &ff_asf_ext_content_encryption)) { + av_log(s, AV_LOG_WARNING, "Ext DRM protected stream detected, decoding will likely fail!\n"); + } else if (!guidcmp(&g, &ff_asf_digital_signature)) { + av_log(s, AV_LOG_WARNING, "Digital signature detected, decoding will likely fail!\n"); + } + } url_fseek(pb, gsize - 24, SEEK_CUR); } } |