mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Detect Windows Media DRM protected files and display warning if no key
was provided. Patch by Daniel G. Taylor, dan programmer-art org Originally committed as revision 20209 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
0115b3eadb
commit
febd1c90a6
@ -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
|
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[] = {
|
const AVMetadataConv ff_asf_metadata_conv[] = {
|
||||||
{ "AlbumArtist", "artist" },
|
{ "AlbumArtist", "artist" },
|
||||||
{ "AlbumTitle" , "album" },
|
{ "AlbumTitle" , "album" },
|
||||||
|
@ -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_metadata_header;
|
||||||
extern const ff_asf_guid ff_asf_my_guid;
|
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_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[];
|
extern const AVMetadataConv ff_asf_metadata_conv[];
|
||||||
|
|
||||||
|
@ -532,6 +532,15 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
|||||||
} else if (url_feof(pb)) {
|
} else if (url_feof(pb)) {
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} 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);
|
url_fseek(pb, gsize - 24, SEEK_CUR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user