[PATCH 2/2] quartz/tests: Add test AVI and MPG files.
Zebediah Figura <[email protected]> Thu, 9 Nov 2017 19:09:53 -0600
| Newsgroups | gmane.comp.emulators.wine.patches |
|---|---|
| Message-ID | <[email protected]> |
Generated with ffmpeg using the following commands: ffmpeg -f lavfi -i smptebars -t 1 -r 1 -f avi -vcodec rawvideo -pix_fmt yuv420p -vf scale=32x24 test.avi ffmpeg -f lavfi -i smptebars -f lavfi -i "sine=frequency=1000" -t 0.04 -r 25 -f mpeg -vcodec mpeg1video -vf scale=32x24 -acodec mp2 test.mpg Signed-off-by: Zebediah Figura <[email protected]> --- dlls/quartz/tests/Makefile.in | 3 +++ dlls/quartz/tests/avisplitter.c | 44 ++++++++++++++++++++++++++++++------ dlls/quartz/tests/filtergraph.c | 48 +++++++++++++++++++++++++++++++++++----- dlls/quartz/tests/rsrc.rc | 27 ++++++++++++++++++++++ dlls/quartz/tests/test.avi | Bin 0 -> 6938 bytes dlls/quartz/tests/test.mpg | Bin 0 -> 6144 bytes 6 files changed, 110 insertions(+), 12 deletions(-) create mode 100644 dlls/quartz/tests/rsrc.rc create mode 100644 dlls/quartz/tests/test.avi create mode 100644 dlls/quartz/tests/test.mpg diff --git a/dlls/quartz/tests/Makefile.in b/dlls/quartz/tests/Makefile.in index ebded4b..2ff1b47 100644 --- a/dlls/quartz/tests/Makefile.in +++ b/dlls/quartz/tests/Makefile.in @@ -13,3 +13,6 @@ C_SRCS = \ videorenderer.c IDL_SRCS = fil_data.idl + +RC_SRCS = \ + rsrc.rc diff --git a/dlls/quartz/tests/avisplitter.c b/dlls/quartz/tests/avisplitter.c index 874036d..23167b5 100644 --- a/dlls/quartz/tests/avisplitter.c +++ b/dlls/quartz/tests/avisplitter.c @@ -270,8 +270,32 @@ static void test_filesourcefilter(void) } } -static const WCHAR wfile[] = {'t','e','s','t','.','a','v','i',0}; -static const char afile[] = "test.avi"; +static const WCHAR avifile[] = {'t','e','s','t','.','a','v','i',0}; + +static WCHAR *load_resource(const WCHAR *name) +{ + static WCHAR pathW[MAX_PATH]; + DWORD written; + HANDLE file; + HRSRC res; + void *ptr; + + GetTempPathW(sizeof(pathW)/sizeof(WCHAR), pathW); + lstrcatW(pathW, name); + + file = CreateFileW(pathW, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0); + ok(file != INVALID_HANDLE_VALUE, "file creation failed, at %s, error %d\n", wine_dbgstr_w(pathW), + GetLastError()); + + res = FindResourceW(NULL, name, (LPCWSTR)RT_RCDATA); + ok( res != 0, "couldn't find resource\n" ); + ptr = LockResource( LoadResource( GetModuleHandleA(NULL), res )); + WriteFile( file, ptr, SizeofResource( GetModuleHandleA(NULL), res ), &written, NULL ); + ok( written == SizeofResource( GetModuleHandleA(NULL), res ), "couldn't write resource\n" ); + CloseHandle( file ); + + return pathW; +} static void test_filter_graph(void) { @@ -286,11 +310,14 @@ static void test_filter_graph(void) DWORD readbytes; FILTER_STATE state; - file = CreateFileW(wfile, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, + WCHAR *filename = load_resource(avifile); + + file = CreateFileW(filename, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if (file == INVALID_HANDLE_VALUE) { - skip("Could not read test file \"%s\", skipping test\n", afile); + skip("Could not read test file \"%s\", skipping test\n", wine_dbgstr_w(filename)); + DeleteFileW(filename); return; } @@ -301,7 +328,8 @@ static void test_filter_graph(void) if (strncmp(buffer, "RIFF", 4) || strcmp(buffer + 8, "AVI ")) { skip("%s is not an avi riff file, not doing the avi splitter test\n", - afile); + wine_dbgstr_w(filename)); + DeleteFileW(filename); return; } @@ -331,10 +359,10 @@ static void test_filter_graph(void) if (hr != S_OK) goto fail; - hr = IFileSourceFilter_Load(pfile, wfile, NULL); + hr = IFileSourceFilter_Load(pfile, filename, NULL); if (hr != S_OK) { - trace("Could not load file\n"); + trace("Could not load file: %08x\n", hr); goto fail; } @@ -509,6 +537,8 @@ fail: IBaseFilter_Release(pavi); if (pfile) IFileSourceFilter_Release(pfile); + + DeleteFileW(filename); } START_TEST(avisplitter) diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c index f9c95ae..e66dc40 100644 --- a/dlls/quartz/tests/filtergraph.c +++ b/dlls/quartz/tests/filtergraph.c @@ -42,6 +42,31 @@ typedef struct TestFilterImpl static const WCHAR avifile[] = {'t','e','s','t','.','a','v','i',0}; static const WCHAR mpegfile[] = {'t','e','s','t','.','m','p','g',0}; +static WCHAR *load_resource(const WCHAR *name) +{ + static WCHAR pathW[MAX_PATH]; + DWORD written; + HANDLE file; + HRSRC res; + void *ptr; + + GetTempPathW(sizeof(pathW)/sizeof(WCHAR), pathW); + lstrcatW(pathW, name); + + file = CreateFileW(pathW, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0); + ok(file != INVALID_HANDLE_VALUE, "file creation failed, at %s, error %d\n", wine_dbgstr_w(pathW), + GetLastError()); + + res = FindResourceW(NULL, name, (LPCWSTR)RT_RCDATA); + ok( res != 0, "couldn't find resource\n" ); + ptr = LockResource( LoadResource( GetModuleHandleA(NULL), res )); + WriteFile( file, ptr, SizeofResource( GetModuleHandleA(NULL), res ), &written, NULL ); + ok( written == SizeofResource( GetModuleHandleA(NULL), res ), "couldn't write resource\n" ); + CloseHandle( file ); + + return pathW; +} + static IGraphBuilder *pgraph; static int createfiltergraph(void) @@ -355,26 +380,39 @@ static void test_render_run(const WCHAR *file) HANDLE h; HRESULT hr; - h = CreateFileW(file, 0, 0, NULL, OPEN_EXISTING, 0, NULL); + WCHAR *filename = load_resource(file); + + h = CreateFileW(filename, 0, 0, NULL, OPEN_EXISTING, 0, NULL); if (h == INVALID_HANDLE_VALUE) { skip("Could not read test file %s, skipping test\n", wine_dbgstr_w(file)); + DeleteFileW(filename); return; } CloseHandle(h); if (!createfiltergraph()) + { + DeleteFileW(filename); return; + } - hr = IGraphBuilder_RenderFile(pgraph, file, NULL); - ok(hr == S_OK, "RenderFile returned: %x\n", hr); - rungraph(); + hr = IGraphBuilder_RenderFile(pgraph, filename, NULL); + if (hr == VFW_E_CANNOT_RENDER) + skip("%s: codec not supported; skipping test\n", wine_dbgstr_w(file)); + else + { + ok(hr == S_OK || hr == VFW_S_AUDIO_NOT_RENDERED, "RenderFile failed: %x\n", hr); + rungraph(); + } releasefiltergraph(); /* check reference leaks */ - h = CreateFileW(file, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); + h = CreateFileW(filename, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); ok(h != INVALID_HANDLE_VALUE, "CreateFile failed: err=%d\n", GetLastError()); CloseHandle(h); + + DeleteFileW(filename); } static DWORD WINAPI call_RenderFile_multithread(LPVOID lParam) diff --git a/dlls/quartz/tests/rsrc.rc b/dlls/quartz/tests/rsrc.rc new file mode 100644 index 0000000..9bea5be --- /dev/null +++ b/dlls/quartz/tests/rsrc.rc @@ -0,0 +1,27 @@ +/* + * Resource file for quartz tests. + * + * Copyright 2017 Zebediah Figura + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "windef.h" + +/* @makedep: test.avi */ +test.avi RCDATA "test.avi" + +/* @makedep: test.mpg */ +test.mpg RCDATA "test.mpg" diff --git a/dlls/quartz/tests/test.avi b/dlls/quartz/tests/test.avi new file mode 100644 index 0000000000000000000000000000000000000000..bec304de1d89a5353af4949270ca47a38d636290 GIT binary patch literal 6938 zcmWIYbaNAuW?*m(^HlKh3=XjnVqnNfDauJK%gnG~U|?`?;%8Wq2xI_(04D<jBZLX1 z1sD{7d<m!+G6gd0fdB(TaY<1Q5QEJs%S<WuG%+$jRtGW<*~|tO28RDY08^s?G##iv zO#>(Z!U{kPvX7C0hXG_3NIg363ib1r0NM?cGB8L<MprY+9}R)g5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c-XTy{P*mW8<VDc<g8~qP#ub=>qXsZGNE{>v<AZ2) z02*sx0V>Q-$;|<xj34L<Mi3t~<|764ucx1zzh|&p2p^E`lUSB!YNlsmpl4`c$N&nh zAIu{tNJhOn8Umvs01p9B3DE-_md(vC%LI+ef<|w*0>Rpaixw^FYHn$5C@d^2P6!SO z33hgJayC;`R#pbfFIc#6VP{iIOMO8>VNrZga7d7oqocE_f|8Qb79dyyk#7dc7l7o0 zLGn(c@^lEF?Le?@(c;C6LGf2#SXfjX9~cxA2#OyQIeB^cl|Zm?>eOk|TI%W>sxmS% zv*N<S!b9zCZSBl;bRj@pMp{bBBP=w^OHxu&G@`AssZw54j6Z18>eZ_i6&00a#FP{j z0}~?xoP~vjc>@}%Yl<ZWgt+}TtXj3o90&{}@7%g|@5M}YJxxt*DG{I{5**wDqSCTJ zU<m}qi67s;d;4vHlD3YHo-{8XA0ICpmw=ckFA!J&fpPrX*RNlHnXjy)qoXU$Cm<le z&kmFq12O~%$%D;Lc>4yZe;!0XKUBZCI7mMs`NkG^m8c~Xz1<fa=!>bncD13|4alG1 z<u-qRZ%oZq5MMcRaX*OP6J2xl3aR}1CKsiM#r>YHVExyxwRibw#VwoU>otFGZ(Qy9 zb0<$vE}pP;O+)R}dA&6a?d=N}&1`J!U9)OVLsMg8V}1SXIWrpTI#;io4~#ybK;xXb zVE)>9^$lRq*w{5WT|>{(V#TR*H}@A6H#BrkO4HD@uvmWT?2Y|}MPR<VuDSX0lV@-2 zBafe|s%>Vr;tbII!lL^6jtSYOmbSL@_8h*ntEjlJu)2Qg&ULlb-j>PTt@ZUuN$GXX zJu@fwR+d%Q*EcpMB&62Yw@jYe3v@fk1BpO>L(AkTy-@dOrc@XLCyN+B<q?Pm%^HEq FB>*m=8Sel9 literal 0 HcmV?d00001 diff --git a/dlls/quartz/tests/test.mpg b/dlls/quartz/tests/test.mpg new file mode 100644 index 0000000000000000000000000000000000000000..7fe379aa3fcdee192f654a6612308532c81b1d8d GIT binary patch literal 6144 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 literal 0 HcmV?d00001 -- 2.7.4