Anton Baskanov : amstream/tests: Add a test AVI file.

Alexandre Julliard julliard at winehq.org
Tue Jul 21 15:40:22 CDT 2020


Module: wine
Branch: master
Commit: 053b55d2a8a1bf6055293c78835a4a0843e95ae6
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=053b55d2a8a1bf6055293c78835a4a0843e95ae6

Author: Anton Baskanov <baskanov at gmail.com>
Date:   Tue Jul 21 10:50:04 2020 -0500

amstream/tests: Add a test AVI file.

Signed-off-by: Anton Baskanov <baskanov at gmail.com>
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/amstream/tests/Makefile.in |   3 ++
 dlls/amstream/tests/amstream.c  |  63 +++++++++++++++++++++++++++++++---------
 dlls/amstream/tests/rsrc.rc     |  25 ++++++++++++++++
 dlls/amstream/tests/test.avi    | Bin 0 -> 12088 bytes
 4 files changed, 78 insertions(+), 13 deletions(-)

diff --git a/dlls/amstream/tests/Makefile.in b/dlls/amstream/tests/Makefile.in
index 81eaed3c15..eb756ddf39 100644
--- a/dlls/amstream/tests/Makefile.in
+++ b/dlls/amstream/tests/Makefile.in
@@ -3,3 +3,6 @@ IMPORTS   = strmbase strmiids uuid ddraw ole32 user32
 
 C_SRCS = \
 	amstream.c
+
+RC_SRCS = \
+	rsrc.rc
diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c
index f6d4c5d3c4..0175257c05 100644
--- a/dlls/amstream/tests/amstream.c
+++ b/dlls/amstream/tests/amstream.c
@@ -53,6 +53,45 @@ static const AM_MEDIA_TYPE audio_mt =
 static const WCHAR primary_video_sink_id[] = L"I{A35FF56A-9FDA-11D0-8FDF-00C04FD9189D}";
 static const WCHAR primary_audio_sink_id[] = L"I{A35FF56B-9FDA-11D0-8FDF-00C04FD9189D}";
 
+static const WCHAR *load_resource(const WCHAR *name)
+{
+    HMODULE module = GetModuleHandleA(NULL);
+    HRSRC resource;
+    DWORD written;
+    HANDLE file;
+    WCHAR *path;
+    DWORD size;
+    void *ptr;
+
+    path = calloc(MAX_PATH + 1, sizeof(WCHAR));
+    ok(!!path, "Failed to allocate temp path string.\n");
+    GetTempPathW(MAX_PATH + 1, path);
+    wcscat(path, name);
+
+    file = CreateFileW(path, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
+    ok(file != INVALID_HANDLE_VALUE, "Failed to create file %s, error %u.\n", wine_dbgstr_w(path), GetLastError());
+
+    resource = FindResourceW(module, name, (const WCHAR *)RT_RCDATA);
+    ok(!!resource, "Failed to find resource %s, error %u.\n", wine_dbgstr_w(name), GetLastError());
+
+    size = SizeofResource(module, resource);
+    ptr = LockResource(LoadResource(module, resource));
+
+    WriteFile(file, ptr, size, &written, NULL);
+    ok(written == size, "Failed to write file %s.\n", wine_dbgstr_w(path));
+
+    CloseHandle(file);
+
+    return path;
+}
+
+static void unload_resource(const WCHAR *path)
+{
+    BOOL ret = DeleteFileW(path);
+    ok(ret, "Failed to delete file %s.\n", wine_dbgstr_w(path));
+    free((void *)path);
+}
+
 #define EXPECT_REF(obj,ref) _expect_ref((IUnknown*)obj, ref, __LINE__)
 static void _expect_ref(IUnknown* obj, ULONG ref, int line)
 {
@@ -229,7 +268,7 @@ static void test_interfaces(void)
     ok(!ref, "Got outstanding refcount %u.\n", ref);
 }
 
-static void test_openfile(void)
+static void test_openfile(const WCHAR *test_avi_path)
 {
     IAMMultiMediaStream *mmstream = create_ammultimediastream();
     IMediaStreamFilter *filter;
@@ -241,7 +280,7 @@ static void test_openfile(void)
     ok(hr == S_OK, "Got hr %#x.\n", hr);
     ok(!graph, "Expected NULL graph.\n");
 
-    hr = IAMMultiMediaStream_OpenFile(mmstream, L"test.avi", AMMSF_NORENDER);
+    hr = IAMMultiMediaStream_OpenFile(mmstream, test_avi_path, AMMSF_NORENDER);
     ok(hr == S_OK, "Got hr %#x.\n", hr);
 
     hr = IAMMultiMediaStream_GetFilterGraph(mmstream, &graph);
@@ -260,7 +299,7 @@ static void test_openfile(void)
 
     check_interface(filter, &IID_IMediaSeeking, FALSE);
 
-    hr = IAMMultiMediaStream_OpenFile(mmstream, L"test.avi", 0);
+    hr = IAMMultiMediaStream_OpenFile(mmstream, test_avi_path, 0);
     ok(hr == S_OK, "Got hr %#x.\n", hr);
 
     check_interface(filter, &IID_IMediaSeeking, TRUE);
@@ -271,7 +310,7 @@ static void test_openfile(void)
     ok(!ref, "Got outstanding refcount %d.\n", ref);
 }
 
-static void test_renderfile(void)
+static void test_renderfile(const WCHAR *test_avi_path)
 {
     IAMMultiMediaStream *pams;
     HRESULT hr;
@@ -298,7 +337,7 @@ static void test_renderfile(void)
     hr = IAMMultiMediaStream_AddMediaStream(pams, NULL, &MSPID_PrimaryAudio, AMMSF_ADDDEFAULTRENDERER, NULL);
     ok(hr == S_OK || hr == VFW_E_NO_AUDIO_HARDWARE, "Got hr %#x.\n", hr);
 
-    hr = IAMMultiMediaStream_OpenFile(pams, L"test.avi", 0);
+    hr = IAMMultiMediaStream_OpenFile(pams, test_avi_path, 0);
     ok(hr==S_OK, "IAMMultiMediaStream_OpenFile returned: %x\n", hr);
 
     hr = IAMMultiMediaStream_GetMediaStream(pams, &MSPID_PrimaryVideo, &pvidstream);
@@ -5066,7 +5105,7 @@ static void test_ddrawstream_getsetdirectdraw(void)
 
 START_TEST(amstream)
 {
-    HANDLE file;
+    const WCHAR *test_avi_path;
 
     CoInitializeEx(NULL, COINIT_MULTITHREADED);
 
@@ -5081,14 +5120,12 @@ START_TEST(amstream)
     test_media_types();
     test_IDirectDrawStreamSample();
 
-    file = CreateFileW(L"test.avi", 0, 0, NULL, OPEN_EXISTING, 0, NULL);
-    if (file != INVALID_HANDLE_VALUE)
-    {
-        CloseHandle(file);
+    test_avi_path = load_resource(L"test.avi");
 
-        test_openfile();
-        test_renderfile();
-    }
+    test_openfile(test_avi_path);
+    test_renderfile(test_avi_path);
+
+    unload_resource(test_avi_path);
 
     test_audiodata_query_interface();
     test_audiodata_get_info();
diff --git a/dlls/amstream/tests/rsrc.rc b/dlls/amstream/tests/rsrc.rc
new file mode 100644
index 0000000000..e1fc277503
--- /dev/null
+++ b/dlls/amstream/tests/rsrc.rc
@@ -0,0 +1,25 @@
+/*
+ * Resource file for amstream tests.
+ *
+ * Copyright 2020 Anton Baskanov
+ *
+ * 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"
+
+/* ffmpeg -f lavfi -i smptebars -f lavfi -i "sine=frequency=1000" -t 0.1 -r 10 -ar 8000 -f avi -vcodec rawvideo -vf scale=32x24 -acodec pcm_u8 test.avi */
+/* @makedep: test.avi */
+test.avi RCDATA "test.avi"
diff --git a/dlls/amstream/tests/test.avi b/dlls/amstream/tests/test.avi
new file mode 100644
index 0000000000..70aead5453
Binary files /dev/null and b/dlls/amstream/tests/test.avi differ




More information about the wine-cvs mailing list