[PATCH 4/5] quartz/tests: Add more tests for parser media types.

Zebediah Figura z.figura12 at gmail.com
Fri Jan 24 00:54:59 CST 2020


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/quartz/tests/avisplit.c   | 33 +++++++++++++++++++--
 dlls/quartz/tests/mpegsplit.c  | 53 ++++++++++++++++++++++++++++------
 dlls/quartz/tests/waveparser.c | 16 ++++++++++
 3 files changed, 91 insertions(+), 11 deletions(-)

diff --git a/dlls/quartz/tests/avisplit.c b/dlls/quartz/tests/avisplit.c
index 0f5302c7d3c..befcac404c9 100644
--- a/dlls/quartz/tests/avisplit.c
+++ b/dlls/quartz/tests/avisplit.c
@@ -526,14 +526,21 @@ static void test_media_types(void)
 {
     static const VIDEOINFOHEADER expect_vih =
     {
-        {0}, {0}, 0, 0, 1000 * 10000,
-        {sizeof(BITMAPINFOHEADER), 32, 24, 1, 12, mmioFOURCC('I','4','2','0'), 32*24*12/8}
+        .AvgTimePerFrame = 1000 * 10000,
+        .bmiHeader.biSize = sizeof(BITMAPINFOHEADER),
+        .bmiHeader.biWidth = 32,
+        .bmiHeader.biHeight = 24,
+        .bmiHeader.biPlanes = 1,
+        .bmiHeader.biBitCount = 12,
+        .bmiHeader.biCompression = mmioFOURCC('I','4','2','0'),
+        .bmiHeader.biSizeImage = 32 * 24 * 12 / 8,
     };
 
     const WCHAR *filename = load_resource(L"test.avi");
     IBaseFilter *filter = create_avi_splitter();
     AM_MEDIA_TYPE mt = {{0}}, *pmt;
     IEnumMediaTypes *enummt;
+    VIDEOINFOHEADER *vih;
     IFilterGraph2 *graph;
     HRESULT hr;
     ULONG ref;
@@ -630,6 +637,28 @@ static void test_media_types(void)
     todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
     pmt->formattype = FORMAT_VideoInfo;
 
+    vih = (VIDEOINFOHEADER *)pmt->pbFormat;
+
+    vih->AvgTimePerFrame = 10000;
+    hr = IPin_QueryAccept(pin, pmt);
+    todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    vih->AvgTimePerFrame = 1000 * 10000;
+
+    vih->dwBitRate = 1000000;
+    hr = IPin_QueryAccept(pin, pmt);
+    todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    vih->dwBitRate = 0;
+
+    SetRect(&vih->rcSource, 0, 0, 32, 24);
+    hr = IPin_QueryAccept(pin, pmt);
+    todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    SetRect(&vih->rcSource, 0, 0, 0, 0);
+
+    vih->bmiHeader.biCompression = BI_RGB;
+    hr = IPin_QueryAccept(pin, pmt);
+    todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    vih->bmiHeader.biCompression = mmioFOURCC('I','4','2','0');
+
     CoTaskMemFree(pmt->pbFormat);
     CoTaskMemFree(pmt);
 
diff --git a/dlls/quartz/tests/mpegsplit.c b/dlls/quartz/tests/mpegsplit.c
index 06c8cdaeb6f..8896e11f247 100644
--- a/dlls/quartz/tests/mpegsplit.c
+++ b/dlls/quartz/tests/mpegsplit.c
@@ -529,7 +529,9 @@ static void test_media_types(void)
     const WCHAR *filename = load_resource(L"test.mp3");
     AM_MEDIA_TYPE mt = {{0}}, *pmt, expect_mt = {{0}};
     IBaseFilter *filter = create_mpeg_splitter();
+    MPEGLAYER3WAVEFORMAT *mp3wfx;
     IEnumMediaTypes *enummt;
+    MPEG1WAVEFORMAT *wfx;
     IFilterGraph2 *graph;
     HRESULT hr;
     ULONG ref;
@@ -595,41 +597,47 @@ static void test_media_types(void)
     mt.subtype = MEDIASUBTYPE_MPEG1Video;
     hr = IPin_QueryAccept(pin, &mt);
     todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
-
     mt.subtype = MEDIASUBTYPE_MPEG1VideoCD;
     hr = IPin_QueryAccept(pin, &mt);
     todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
-
     mt.subtype = MEDIASUBTYPE_MPEG1System;
     hr = IPin_QueryAccept(pin, &mt);
     todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
-
     mt.subtype = MEDIASUBTYPE_MPEG1AudioPayload;
     hr = IPin_QueryAccept(pin, &mt);
     ok(hr == S_FALSE, "Got hr %#x.\n", hr);
-
     mt.subtype = MEDIASUBTYPE_MPEG1Payload;
     hr = IPin_QueryAccept(pin, &mt);
     ok(hr == S_FALSE, "Got hr %#x.\n", hr);
-
     mt.subtype = MEDIASUBTYPE_MPEG1Packet;
     hr = IPin_QueryAccept(pin, &mt);
     ok(hr == S_FALSE, "Got hr %#x.\n", hr);
-
     mt.subtype = GUID_NULL;
     hr = IPin_QueryAccept(pin, &mt);
     ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    mt.subtype = MEDIASUBTYPE_MPEG1Audio;
 
     mt.majortype = MEDIATYPE_Audio;
-    mt.subtype = MEDIASUBTYPE_MPEG1Audio;
     hr = IPin_QueryAccept(pin, &mt);
     ok(hr == S_FALSE, "Got hr %#x.\n", hr);
-
+    mt.majortype = GUID_NULL;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == S_FALSE, "Got hr %#x.\n", hr);
     mt.majortype = MEDIATYPE_Stream;
+
+    mt.formattype = FORMAT_None;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    mt.formattype = FORMAT_VideoInfo;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    mt.formattype = FORMAT_WaveFormatEx;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == S_OK, "Got hr %#x.\n", hr);
+
     mt.bFixedSizeSamples = TRUE;
     mt.bTemporalCompression = TRUE;
     mt.lSampleSize = 123;
-    mt.formattype = FORMAT_WaveFormatEx;
     hr = IPin_QueryAccept(pin, &mt);
     ok(hr == S_OK, "Got hr %#x.\n", hr);
 
@@ -688,6 +696,9 @@ static void test_media_types(void)
     pmt->majortype = MEDIATYPE_Video;
     hr = IPin_QueryAccept(pin, pmt);
     todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    pmt->majortype = GUID_NULL;
+    hr = IPin_QueryAccept(pin, pmt);
+    todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
     pmt->majortype = MEDIATYPE_Audio;
 
     pmt->subtype = MEDIASUBTYPE_MPEG1Audio;
@@ -709,6 +720,18 @@ static void test_media_types(void)
     todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
     pmt->formattype = FORMAT_WaveFormatEx;
 
+    wfx = (MPEG1WAVEFORMAT *)pmt->pbFormat;
+
+    wfx->fwHeadLayer = ACM_MPEG_LAYER2;
+    hr = IPin_QueryAccept(pin, pmt);
+    todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    wfx->fwHeadLayer = ACM_MPEG_LAYER3;
+
+    wfx->wfx.wFormatTag = WAVE_FORMAT_MPEGLAYER3;
+    hr = IPin_QueryAccept(pin, pmt);
+    todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    wfx->wfx.wFormatTag = WAVE_FORMAT_MPEG;
+
     CoTaskMemFree(pmt->pbFormat);
     CoTaskMemFree(pmt);
 
@@ -786,6 +809,18 @@ static void test_media_types(void)
     ok(hr == S_FALSE, "Got hr %#x.\n", hr);
     pmt->formattype = FORMAT_WaveFormatEx;
 
+    mp3wfx = (MPEGLAYER3WAVEFORMAT *)pmt->pbFormat;
+
+    mp3wfx->fdwFlags = MPEGLAYER3_FLAG_PADDING_OFF;
+    hr = IPin_QueryAccept(pin, pmt);
+    ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    mp3wfx->fdwFlags = MPEGLAYER3_FLAG_PADDING_ISO;
+
+    mp3wfx->wfx.wFormatTag = WAVE_FORMAT_MPEG;
+    hr = IPin_QueryAccept(pin, pmt);
+    ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    mp3wfx->wfx.wFormatTag = WAVE_FORMAT_MPEGLAYER3;
+
     CoTaskMemFree(pmt->pbFormat);
     CoTaskMemFree(pmt);
 
diff --git a/dlls/quartz/tests/waveparser.c b/dlls/quartz/tests/waveparser.c
index b1980c5ea50..5c09f6d1219 100644
--- a/dlls/quartz/tests/waveparser.c
+++ b/dlls/quartz/tests/waveparser.c
@@ -20,6 +20,7 @@
 
 #define COBJMACROS
 #include "dshow.h"
+#include "mmreg.h"
 #include "wine/test.h"
 
 static IBaseFilter *create_wave_parser(void)
@@ -525,6 +526,7 @@ static void test_media_types(void)
     AM_MEDIA_TYPE mt = {{0}}, *pmt;
     IEnumMediaTypes *enummt;
     IFilterGraph2 *graph;
+    WAVEFORMATEX *wfx;
     HRESULT hr;
     ULONG ref;
     IPin *pin;
@@ -619,6 +621,20 @@ static void test_media_types(void)
     hr = IPin_QueryAccept(pin, pmt);
     todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
 
+    wfx = (WAVEFORMATEX *)pmt->pbFormat;
+
+    wfx->nChannels = wfx->nBlockAlign = 2;
+    wfx->nAvgBytesPerSec = 44100 * 2;
+    wfx->nBlockAlign = 2;
+    hr = IPin_QueryAccept(pin, pmt);
+    todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    *wfx = expect_wfx;
+
+    wfx->wFormatTag = WAVE_FORMAT_IMA_ADPCM;
+    hr = IPin_QueryAccept(pin, pmt);
+    todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+    *wfx = expect_wfx;
+
     CoTaskMemFree(pmt->pbFormat);
     CoTaskMemFree(pmt);
 
-- 
2.25.0




More information about the wine-devel mailing list