locked
QueryInterface(0xCE6BE8E7,0xD757,0x435F,0x9DE9,0xBE,0x3E,0xF3,0x30,0xB8,0x05)

    Question

  • This is following on from an earlier query - I can't put a link because my account isn't verified, but the title is "IMFGetService::GetService(F09992F7-9FBA-4C4A-A37F-8C47B4E1DFE7)"

    I got a bit further with this, and tried some other approaches, but I'm now back to almost where I was before, with what looks like a similar problem.

    I'm writing a media player for W8; this plays back the video stream OK, but when I try to add an audio stream, my app gets shut down, as far as I can tell this happens immediately after a call to my Media Source class's QueryInterface with the REFIID value 0xCE6BE8E7,0xD757,0x435F,0x9DE9,0xBE,0x3E,0xF3,0x30,0xB8,0x05.

    I haven't been able to find out what this is. There aren't ANY references to it on the web (!)

    Can anyone tell me what this GUID is?

    Thanks!

    Wednesday, March 26, 2014 8:44 PM

Answers

  • Hello Charles,

    The interface associated with the GUID you are reporting is not published because it is not publically available. This is an internal interface that is used for communication between Microsoft specific Media Foundation nodes in the topology.

    In this instance the upstream topology node that is connected to your source is a Microsoft component. This component is querying the upstream node (your source) to make sure that it is connected to the Microsoft component that it expects. Since your source is not a Microsoft component you cannot return the expected verification code. Your component cannot be verified and the upstream component assumes that a component is attempting to corrupt the topology in some malicious way. The component immediately terminates the process. This is expected behavior.

    You will only see this behavior is you are attempting to add a stream to the topology that requires additional licensing. Some codecs and advanced features of some codecs are only licensed for use within the context of Microsoft components. 3rd party usage is not supported under this licensing. Because of this your source is not allowed to continue to build the topology and the process is terminated.

    I hope this helps,

    James


    Windows SDK Technologies - Microsoft Developer Services - http://blogs.msdn.com/mediasdkstuff/

    Tuesday, April 01, 2014 10:52 PM
    Moderator

All replies

  • Charles - does this same problem occur on other machines? I am wondering if it's just a problem in your specific environment.

    Matt Small - Microsoft Escalation Engineer - Forum Moderator
    If my reply answers your question, please mark this post as answered.

    NOTE: If I ask for code, please provide something that I can drop directly into a project and run (including XAML), or an actual application project. I'm trying to help a lot of people, so I don't have time to figure out weird snippets with undefined objects and unknown namespaces.

    Thursday, March 27, 2014 1:14 PM
    Moderator
  • Thanks, Matt - yes I tried running the app on a colleague's machine - mine is a laptop and his is a desktop, they're both running windows 8.1 but otherwise configured differently. They both gave an identical series of interface queries, followed by a shutdown.

    (Mind you, even if it *was* only happening on my machine, I would kind of hope there was a reason for it that I could discover and fix, or at least warn the user about, so anyone with a similar setup wouldn't just get an unexplained crash!)

    It seems a bit odd that Microsoft uses these GUIDs, but haven't supplied a list of them with explanations of what they represent (or at least, if they have, I haven't managed to find it yet). As things stand, I'm stuck in an impossible situation, and can't see how to even approach the problem...

    My Media Source object is called by a framework for which, as far as I can work out, no source code is available, so I can't debug it and see what's happening; nor have I found a way to query the calling code to ask it what I'm doing wrong. In a nutshell, some unknown code calls my code, asks it if it can do something unknown, then shuts my app down with no further explanation.

    What I would like is either a list of GUIDs and what they mean, or a way to ask the calling code what the problem is. If you can help, I'd be very grateful.

    Thanks,
    Charles

    Thursday, March 27, 2014 9:31 PM
  • I'm not saying they aren't our GUIDs, but there are thousands of third-party devs that could have written something to make these GUIDs.

    I'll ask our media guru to look at this thread.


    Matt Small - Microsoft Escalation Engineer - Forum Moderator
    If my reply answers your question, please mark this post as answered.

    NOTE: If I ask for code, please provide something that I can drop directly into a project and run (including XAML), or an actual application project. I'm trying to help a lot of people, so I don't have time to figure out weird snippets with undefined objects and unknown namespaces.

    Friday, March 28, 2014 1:48 PM
    Moderator
  • Did the media guru have a look? If so - any comments / thoughts / ideas?

    Thanks,

    Charles

    Tuesday, April 01, 2014 10:06 PM
  • Hello Charles,

    The interface associated with the GUID you are reporting is not published because it is not publically available. This is an internal interface that is used for communication between Microsoft specific Media Foundation nodes in the topology.

    In this instance the upstream topology node that is connected to your source is a Microsoft component. This component is querying the upstream node (your source) to make sure that it is connected to the Microsoft component that it expects. Since your source is not a Microsoft component you cannot return the expected verification code. Your component cannot be verified and the upstream component assumes that a component is attempting to corrupt the topology in some malicious way. The component immediately terminates the process. This is expected behavior.

    You will only see this behavior is you are attempting to add a stream to the topology that requires additional licensing. Some codecs and advanced features of some codecs are only licensed for use within the context of Microsoft components. 3rd party usage is not supported under this licensing. Because of this your source is not allowed to continue to build the topology and the process is terminated.

    I hope this helps,

    James


    Windows SDK Technologies - Microsoft Developer Services - http://blogs.msdn.com/mediasdkstuff/

    Tuesday, April 01, 2014 10:52 PM
    Moderator
  • Thanks James, that certainly helps - and explains why I can't find any reference to the GUID. I'm not sure why my component is treated like this - I don't believe it has any particularly advanced features - but it may be that I am supplying an incorrect media type, so it appears to be something it isn't.

    In any case, it's much better to know what's going on!

    Thanks again,

    Charles

    Tuesday, April 01, 2014 11:03 PM
  • I now have a somewhat improved situation - I can play back an audio stream alone, or I can play back a video stream alone - but not both together! If I attempt to play them both, I get the same result as before - a call to QueryInterface with the GUID (0xCE6BE8E7,0xD757,0x435F,0x9DE9,0xBE,0x3E,0xF3,0x30,0xB8,0x05), followed by the source being shut down.

    Why would the calling framework be happy with either stream in isolation, but not both combined? I don't believe I'm using anything that could be called an advanced feature, as far as I know. My streams identify themselves as follows...

    HRESULT CVideoStream::CreateMediaType(IMFMediaType **ppMediaType)

    { // (leaving out error checks for readability)

        ComPtr<IMFMediaType> spOutputType;

        MFCreateMediaType(&spOutputType);
        spOutputType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
        spOutputType->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_H264);
        spOutputType->SetUINT32(MF_MT_FIXED_SIZE_SAMPLES, FALSE);
        spOutputType->SetUINT32(MF_MT_ALL_SAMPLES_INDEPENDENT, FALSE);
        spOutputType->SetUINT32(MF_MT_COMPRESSED, TRUE);
        MFSetAttributeSize(spOutputType.Get(), MF_MT_FRAME_SIZE, c_dwOutputImageWidth, c_dwOutputImageHeight);
        MFSetAttributeRatio(spOutputType.Get(), MF_MT_FRAME_RATE, c_dwOutputFrameRateNumerator, c_dwOutputFrameRateDenominator);
        *ppMediaType = spOutputType.Detach();
        return hr;
    }

    HRESULT CHLSAudioStream::CreateMediaType(IMFMediaType **ppMediaType)
    {
        ComPtr<IMFMediaType> spOutputType;
        MFCreateMediaType(&spOutputType);
        spOutputType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio);
        spOutputType->SetGUID(MF_MT_SUBTYPE, MFAudioFormat_AAC);
        spOutputType->SetUINT32(MF_MT_AAC_PAYLOAD_TYPE, 0);
        spOutputType->SetUINT32(MF_MT_AUDIO_SAMPLES_PER_SECOND, 48000);
        spOutputType->SetUINT32(MF_MT_AUDIO_AVG_BYTES_PER_SECOND, 48000 * 2 * 2);   // samples per sec x (bits per sample/8) x channels
        spOutputType->SetUINT32(MF_MT_AUDIO_NUM_CHANNELS, 2);
        spOutputType->SetUINT32(MF_MT_AUDIO_BITS_PER_SAMPLE, 16);
        UINT8 userdata[] = { 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x90 };
        spOutputType->SetBlob(MF_MT_USER_DATA, (const UINT8 *)&userdata, sizeof(userdata));
        *ppMediaType = spOutputType.Detach();
        return hr;
    }

    Any help will be much appreciated!

    Thanks,
    Charles


    Wednesday, April 02, 2014 1:29 AM
  • It occurs to me that since both streams work in isolation but not together, the only thing that I can be doing that isn't allowed by the licence (see James' reply, above) must be to play two streams. Does that seem likely? And if so, how can obtain the relevant permission to do this?

    Wednesday, April 02, 2014 8:50 PM
  • I should also mention that when I play the video or audio alone, I also get a call to QueryInterface with the GUID (0xCE6BE8E7,0xD757,0x435F,0x9DE9,0xBE,0x3E,0xF3,0x30,0xB8,0x05), and (of course) return the same value, but this time the source isn't shut down. This makes me think that there must be something else happening, but I can't find anything else that seems relevant despite intensive debugging.

    Can anyone help with this?

    Thursday, April 03, 2014 11:51 PM
  • Hi Charles,

    We cannot comment on unpublished and undocumented interfaces, and we cannot help with attempts to bypass licensing code. If the app is queried for an interface it doesn't support then it should return failure.

    I'll ask James to follow up on your discussion about the multiple sources, but he won't be able to respond until sometime next week.

    --Rob

    Friday, April 11, 2014 12:12 AM
    Owner
  • What do you mean about "attemping to bypass licensed code" ? You make it sound as though I'm trying to do something illegal. Please explain.

    I need to know what the call is in case it helps me work out what I'm doing wrong, since there doesn't seem to be any useful documentation, source code I can debug, or (so far) helpful responses from people on forums.

    Thank you in advance for any help.
    Friday, April 11, 2014 12:15 AM
  • Hello,

    As Rob pointed out above we are not able to comment on undocumented APIs. If you feel that you would like additional assistance with the problem that you are seeing please open a support incident with our team. We may not be able to answer your question directly but perhaps we can find another solution for you that will facilitate the functionality that you are looking for.

    You can open support incident by going here: http://aka.ms/storesupport

    Thanks,

    James


    Windows SDK Technologies - Microsoft Developer Services - http://blogs.msdn.com/mediasdkstuff/

    Friday, May 09, 2014 6:13 PM
    Moderator
  • I am trying to create an app that will play two streams (video and audio). The streams play separately but as soon as I attempt to play both my media source is shut down.

    Can anyone at all help with this? I can provide whatever information is required. Or is it pointless even trying to get help here?


    Charles Goodwin

    Sunday, May 11, 2014 9:37 PM
  • Can anyone help with the above query? Why are two streams that play separately not allowed to both be played simultaneously?

    Thank you in advance.


    Charles Goodwin

    Sunday, May 11, 2014 10:24 PM
  • Hello,

    As Rob pointed out above we are not able to comment on undocumented APIs. If you feel that you would like additional assistance with the problem that you are seeing please open a support incident with our team. We may not be able to answer your question directly but perhaps we can find another solution for you that will facilitate the functionality that you are looking for.

    You can open support incident by going here: http://aka.ms/storesupport

    Thanks,

    James


    Windows SDK Technologies - Microsoft Developer Services - http://blogs.msdn.com/mediasdkstuff/

    Thursday, May 15, 2014 6:20 PM
    Moderator