Module: wine Branch: master Commit: 84253b011d77a243123000e99bcfe36d9be4308a URL: http://source.winehq.org/git/wine.git/?a=commit;h=84253b011d77a243123000e99b...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Oct 23 23:38:31 2006 +0200
urlmon: Added video/avi mime filter implementation.
---
dlls/urlmon/tests/misc.c | 15 ++++++++++++++- dlls/urlmon/urlmon_main.c | 13 ++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/dlls/urlmon/tests/misc.c b/dlls/urlmon/tests/misc.c index 17657e7..5cfe701 100644 --- a/dlls/urlmon/tests/misc.c +++ b/dlls/urlmon/tests/misc.c @@ -336,6 +336,7 @@ static const WCHAR mimeImageGif[] = {'i' static const WCHAR mimeImageBmp[] = {'i','m','a','g','e','/','b','m','p',0}; static const WCHAR mimeImageXPng[] = {'i','m','a','g','e','/','x','-','p','n','g',0}; static const WCHAR mimeImageTiff[] = {'i','m','a','g','e','/','t','i','f','f',0}; +static const WCHAR mimeVideoAvi[] = {'v','i','d','e','o','/','a','v','i',0};
static const struct { LPCWSTR url; @@ -393,6 +394,12 @@ static BYTE data40[] = {0x4d,0x4d,0x00,0 static BYTE data41[] = {0x4d,0x4d,0xff}; static BYTE data42[] = {0x4d,0x4d}; static BYTE data43[] = {0x00,0x4d,0x4d,0x00}; +static BYTE data44[] = {'R','I','F','F',0xff,0xff,0xff,0xff,'A','V','I',0x20,0xff}; +static BYTE data45[] = {'R','I','F','f',0xff,0xff,0xff,0xff,'A','V','I',0x20,0xff}; +static BYTE data46[] = {'R','I','F','F',0xff,0xff,0xff,0xff,'A','V','I',0x20}; +static BYTE data47[] = {'R','I','F','F',0xff,0xff,0xff,0xff,'A','V','I',0x21,0xff}; +static BYTE data48[] = {'R','I','F','F',0xff,0xff,0xff,0xff,'A','V','I',0x20,'<','h','t','m','l','>'}; +static BYTE data49[] = {'R','I','F','F',0x0f,0x0f,0xf0,0xf0,'A','V','I',0x20,0xf0,0x00};
static const struct { BYTE *data; @@ -441,7 +448,13 @@ static const struct { {data40, sizeof(data40), mimeTextHtml}, {data41, sizeof(data41), mimeImageTiff}, {data42, sizeof(data42), mimeTextPlain}, - {data43, sizeof(data43), mimeAppOctetStream} + {data43, sizeof(data43), mimeAppOctetStream}, + {data44, sizeof(data44), mimeVideoAvi}, + {data45, sizeof(data45), mimeTextPlain}, + {data46, sizeof(data46), mimeTextPlain}, + {data47, sizeof(data47), mimeTextPlain}, + {data48, sizeof(data48), mimeTextHtml}, + {data49, sizeof(data49), mimeVideoAvi} };
static void test_FindMimeFromData(void) diff --git a/dlls/urlmon/urlmon_main.c b/dlls/urlmon/urlmon_main.c index 044c2f8..916747b 100644 --- a/dlls/urlmon/urlmon_main.c +++ b/dlls/urlmon/urlmon_main.c @@ -459,6 +459,15 @@ static BOOL image_bmp_filter(LPVOID buf, && *(DWORD*)((BYTE*)buf+6) == 0; }
+static BOOL video_avi_filter(LPVOID buf, DWORD size) +{ + const BYTE const *b = buf; + + return size > 12 + && b[0] == 'R' && b[1] == 'I' && b[2] == 'F' && b[3] == 'F' + && b[8] == 'A' && b[9] == 'V' && b[10] == 'I' && b[11] == 0x20; +} + static BOOL text_plain_filter(LPVOID buf, DWORD size) { UCHAR *ptr; @@ -516,6 +525,7 @@ HRESULT WINAPI FindMimeFromData(LPBC pBC static const WCHAR wszImageTiff[] = {'i','m','a','g','e','/','t','i','f','f',0}; static const WCHAR wszImageXPng[] = {'i','m','a','g','e','/','x','-','p','n','g',0}; static const WCHAR wszImageBmp[] = {'i','m','a','g','e','/','b','m','p',0}; + static const WCHAR wszVideoAvi[] = {'v','i','d','e','o','/','a','v','i',0}; static const WCHAR wszTextPlain[] = {'t','e','x','t','/','p','l','a','i','n','\0'}; static const WCHAR wszAppOctetStream[] = {'a','p','p','l','i','c','a','t','i','o','n','/', 'o','c','t','e','t','-','s','t','r','e','a','m','\0'}; @@ -530,6 +540,7 @@ HRESULT WINAPI FindMimeFromData(LPBC pBC {wszImageTiff, image_tiff_filter}, {wszImageXPng, image_xpng_filter}, {wszImageBmp, image_bmp_filter}, + {wszVideoAvi, video_avi_filter}, {wszTextPlain, text_plain_filter}, {wszAppOctetStream, application_octet_stream_filter} }; @@ -564,7 +575,7 @@ HRESULT WINAPI FindMimeFromData(LPBC pBC ret = pwzMimeProposed;
/* text/html is a special case */ - if(!strcmpW(pwzMimeProposed, wszTextHtml) && !strcmpW(ret, wszTextPlain)) + if(!strcmpW(pwzMimeProposed, wszTextHtml) && !strcmpW(ret, wszTextPlain)) ret = wszTextHtml; }