[PATCH v3 2/3] mf/tests: Add tests for the topology loader.

Nikolay Sivov nsivov at codeweavers.com
Thu Apr 2 13:20:33 CDT 2020



On 4/2/20 12:11 AM, Sergio Gómez Del Real wrote:
> +static HRESULT WINAPI test_media_source_CreatePresentationDescriptor(IMFMediaSource *iface, IMFPresentationDescriptor **descriptor)
> +{
> +    HRESULT hr;
> +
> +    IMFPresentationDescriptor *pd;
> +    IMFMediaType *mediatypes[3];
> +    IMFStreamDescriptor *sd[2];
> +
> +    if (FAILED(hr = MFCreateMediaType(&mediatypes[0])))
> +        return hr;
> +    if (FAILED(hr = IMFMediaType_SetGUID(mediatypes[0], &MF_MT_MAJOR_TYPE, &MFMediaType_Video)))
> +        return hr;
> +    if (FAILED(hr = IMFMediaType_SetGUID(mediatypes[0], &MF_MT_SUBTYPE, &MFVideoFormat_YUY2)))
> +        return hr;
> +    if (FAILED(hr = MFCreateMediaType(&mediatypes[1])))
> +        return hr;
> +    if (FAILED(hr = IMFMediaType_SetGUID(mediatypes[1], &MF_MT_MAJOR_TYPE, &MFMediaType_Audio)))
> +        return hr;
> +    if (FAILED(hr = IMFMediaType_SetGUID(mediatypes[1], &MF_MT_SUBTYPE, &MFAudioFormat_MP3)))
> +        return hr;
> +    if (FAILED(hr = IMFMediaType_SetUINT32(mediatypes[1], &MF_MT_AUDIO_SAMPLES_PER_SECOND, 32000)))
> +        return hr;
> +    if (FAILED(hr = IMFMediaType_SetUINT32(mediatypes[1], &MF_MT_AUDIO_NUM_CHANNELS, 2)))
> +        return hr;
> +    if (FAILED(hr = IMFMediaType_SetUINT32(mediatypes[1], &MF_MT_AUDIO_PREFER_WAVEFORMATEX, 1)))
> +        return hr;
> +    if (FAILED(hr = MFCreateMediaType(&mediatypes[2])))
> +        return hr;
> +    if (FAILED(hr = IMFMediaType_SetGUID(mediatypes[2], &MF_MT_MAJOR_TYPE, &MFMediaType_Audio)))
> +        return hr;
> +    if (FAILED(hr = IMFMediaType_SetGUID(mediatypes[2], &MF_MT_SUBTYPE, &MFAudioFormat_PCM)))
> +        return hr;
> +    if (FAILED(hr = MFCreateStreamDescriptor(0, 3, mediatypes, &sd[0])))
> +        return hr;
> +    if (FAILED(hr = MFCreateStreamDescriptor(1, 3, mediatypes, &sd[1])))
> +        return hr;
> +    if (FAILED(hr = MFCreatePresentationDescriptor(2, sd, &pd)))
> +        return hr;
> +    *descriptor = pd;
> +
> +    IMFMediaType_Release(mediatypes[0]);
> +    IMFMediaType_Release(mediatypes[1]);
> +    IMFMediaType_Release(mediatypes[2]);
> +    IMFStreamDescriptor_Release(sd[0]);
> +    IMFStreamDescriptor_Release(sd[1]);
> +
> +    return S_OK;
> +}
You probably don't need this method, you can create descriptor directly 
in test function.

> +    hr = IMFTopology_GetUINT32(topology, &MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES, &enum_src);
> +    ok(hr == MF_E_ATTRIBUTENOTFOUND, "Attribute should not be set\n.");
It doesn't look that this could ever be set at this point.
> +    IMFTopologyNode_GetUINT32(src_node, &MF_TOPONODE_CONNECT_METHOD, &method);
> +    ok(hr == S_OK, "Attribute should be set\n.");
> +    IMFTopologyNode_SetUINT32(src_node, &MF_TOPONODE_CONNECT_METHOD, method & ~MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES);
> +    ok(hr == S_OK, "Failed setting attribute %#x\n.", hr);
This does not test return value.




More information about the wine-devel mailing list