Commit 738c594b authored by Ziqing Hui's avatar Ziqing Hui Committed by Alexandre Julliard

windowscodecs/tests: Call SetParameters in create_and_init_encoder.

Also make dds_encoder optional. Signed-off-by: 's avatarZiqing Hui <zhui@codeweavers.com> Signed-off-by: 's avatarEsme Povirk <esme@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent 749da353
...@@ -553,9 +553,10 @@ static void release_encoder(IWICBitmapEncoder *encoder, IWICDdsEncoder *dds_enco ...@@ -553,9 +553,10 @@ static void release_encoder(IWICBitmapEncoder *encoder, IWICDdsEncoder *dds_enco
if (encoder) IWICBitmapEncoder_Release(encoder); if (encoder) IWICBitmapEncoder_Release(encoder);
} }
static HRESULT create_and_init_encoder(BYTE *image_buffer, UINT buffer_size, static HRESULT create_and_init_encoder(BYTE *image_buffer, UINT buffer_size, WICDdsParameters *params,
IWICBitmapEncoder **encoder, IWICDdsEncoder **dds_encoder, IWICStream **stream) IWICBitmapEncoder **encoder, IWICDdsEncoder **dds_encoder, IWICStream **stream)
{ {
IWICDdsEncoder *dds = NULL;
HRESULT hr; HRESULT hr;
*encoder = create_encoder(); *encoder = create_encoder();
...@@ -568,14 +569,31 @@ static HRESULT create_and_init_encoder(BYTE *image_buffer, UINT buffer_size, ...@@ -568,14 +569,31 @@ static HRESULT create_and_init_encoder(BYTE *image_buffer, UINT buffer_size,
ok(hr == S_OK, "Initialize failed, hr %#x\n", hr); ok(hr == S_OK, "Initialize failed, hr %#x\n", hr);
if (hr != S_OK) goto fail; if (hr != S_OK) goto fail;
hr = IWICBitmapEncoder_QueryInterface(*encoder, &IID_IWICDdsEncoder, (void **)dds_encoder); hr = IWICBitmapEncoder_QueryInterface(*encoder, &IID_IWICDdsEncoder, (void **)&dds);
ok(hr == S_OK, "QueryInterface failed, hr %#x\n", hr); ok(hr == S_OK, "QueryInterface failed, hr %#x\n", hr);
if (hr != S_OK) goto fail; if (hr != S_OK) goto fail;
if (params)
{
hr = IWICDdsEncoder_SetParameters(dds, params);
ok(hr == S_OK, "SetParameters failed, hr %#x\n", hr);
if (hr != S_OK) goto fail;
}
if (dds_encoder)
{
*dds_encoder = dds;
}
else
{
IWICDdsEncoder_Release(dds);
dds = NULL;
}
return S_OK; return S_OK;
fail: fail:
release_encoder(*encoder, *dds_encoder, *stream); release_encoder(*encoder, dds, *stream);
return E_FAIL; return E_FAIL;
} }
...@@ -1354,7 +1372,7 @@ static void test_dds_encoder_params(void) ...@@ -1354,7 +1372,7 @@ static void test_dds_encoder_params(void)
HRESULT hr; HRESULT hr;
UINT i; UINT i;
hr = create_and_init_encoder(buffer, sizeof(buffer), &encoder, &dds_encoder, &stream); hr = create_and_init_encoder(buffer, sizeof(buffer), NULL, &encoder, &dds_encoder, &stream);
if (hr != S_OK) goto end; if (hr != S_OK) goto end;
hr = IWICDdsEncoder_GetParameters(dds_encoder, NULL); hr = IWICDdsEncoder_GetParameters(dds_encoder, NULL);
...@@ -1424,9 +1442,8 @@ static void test_dds_encoder_create_frame(void) ...@@ -1424,9 +1442,8 @@ static void test_dds_encoder_create_frame(void)
BYTE buffer[1024]; BYTE buffer[1024];
HRESULT hr; HRESULT hr;
hr = create_and_init_encoder(buffer, sizeof(buffer), &encoder, &dds_encoder, &stream); hr = create_and_init_encoder(buffer, sizeof(buffer), &params, &encoder, &dds_encoder, &stream);
if (hr != S_OK) goto end; if (hr != S_OK) goto end;
IWICDdsEncoder_SetParameters(dds_encoder, &params);
hr = IWICBitmapEncoder_CreateNewFrame(encoder, &frame0, NULL); hr = IWICBitmapEncoder_CreateNewFrame(encoder, &frame0, NULL);
ok(hr == S_OK, "CreateNewFrame failed, hr %#x\n", hr); ok(hr == S_OK, "CreateNewFrame failed, hr %#x\n", hr);
...@@ -1439,15 +1456,13 @@ static void test_dds_encoder_create_frame(void) ...@@ -1439,15 +1456,13 @@ static void test_dds_encoder_create_frame(void)
release_encoder(encoder, dds_encoder, stream); release_encoder(encoder, dds_encoder, stream);
create_and_init_encoder(buffer, sizeof(buffer), &encoder, &dds_encoder, &stream); create_and_init_encoder(buffer, sizeof(buffer), &params, &encoder, &dds_encoder, &stream);
IWICDdsEncoder_SetParameters(dds_encoder, &params);
hr = IWICDdsEncoder_CreateNewFrame(dds_encoder, &frame0, &array_index, &mip_level, &slice_index); hr = IWICDdsEncoder_CreateNewFrame(dds_encoder, &frame0, &array_index, &mip_level, &slice_index);
ok(hr == S_OK, "CreateNewFrame failed, hr %#x\n", hr); ok(hr == S_OK, "CreateNewFrame failed, hr %#x\n", hr);
IWICBitmapFrameEncode_Release(frame0); IWICBitmapFrameEncode_Release(frame0);
release_encoder(encoder, dds_encoder, stream); release_encoder(encoder, dds_encoder, stream);
create_and_init_encoder(buffer, sizeof(buffer), &encoder, &dds_encoder, &stream); create_and_init_encoder(buffer, sizeof(buffer), &params, &encoder, &dds_encoder, &stream);
IWICDdsEncoder_SetParameters(dds_encoder, &params);
hr = IWICDdsEncoder_CreateNewFrame(dds_encoder, &frame0, NULL, NULL, NULL); hr = IWICDdsEncoder_CreateNewFrame(dds_encoder, &frame0, NULL, NULL, NULL);
ok(hr == S_OK, "CreateNewFrame failed, hr %#x\n", hr); ok(hr == S_OK, "CreateNewFrame failed, hr %#x\n", hr);
IWICBitmapFrameEncode_Release(frame0); IWICBitmapFrameEncode_Release(frame0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment