Index: libavformat/asf.c =================================================================== --- libavformat/asf.c (revision 10667) +++ libavformat/asf.c (working copy) @@ -707,8 +707,22 @@ return 0; } +static uint8_t hexkey[20] = { + 0x13, 0x73, 0x81, 0x53, 0x8c, 0x84, 0xc0, 0x68, + 0x11, 0x19, 0x02, 0xa5, 0x9c, 0x5c, 0xf6, 0xc3, + 0x40, 0x24, 0x7c, 0x39 +}; + +static wchar_t base64key[] = { + 'E', '3', 'O', 'B', 'U', '4', 'y', 'E', 'w', 'G', 'g', 'R', 'G', + 'Q', 'K', 'l', 'n', 'F', 'z', '2', 'w', '0', 'A', 'k', 'f', 'D', 'k', '=' +}; + +#include "msdrm.h" + static int asf_read_packet(AVFormatContext *s, AVPacket *pkt) { +CONTKEY key; ASFContext *asf = s->priv_data; ASFStream *asf_st = 0; ByteIOContext *pb = &s->pb; @@ -823,6 +837,8 @@ get_buffer(pb, asf_st->pkt.data + asf->packet_frag_offset, asf->packet_frag_size); +MSDRM_setup(1, base64key, &key); +MSDRM_decr_packet(asf_st->pkt.data + asf->packet_frag_offset, asf->packet_frag_size, &key); asf_st->frag_offset += asf->packet_frag_size; /* test if whole packet is read */ if (asf_st->frag_offset == asf_st->pkt.size) {