示例#1
0
        static private void DoRegister(Type t)
        {
            // Tell what media types you are able to support.  This allows
            // the smart connect capability of DS to avoid loading your DMO
            // if it can't handle the stream type.

            // Note that you don't have to register any (but I recommend
            // you do).  Also, you don't have to provide a subtype (use
            // Guid.Empty).  You can negotiate this at run time in
            // InternalCheckInputType.
            DMOPartialMediatype [] pIn = new DMOPartialMediatype[1];
            pIn[0]         = new DMOPartialMediatype();
            pIn[0].type    = MediaType.Audio;
            pIn[0].subtype = MediaSubType.PCM;

            DMOPartialMediatype [] pOut = new DMOPartialMediatype[1];
            pOut[0]         = new DMOPartialMediatype();
            pOut[0].type    = MediaType.Audio;
            pOut[0].subtype = MediaSubType.PCM;

            int hr = DMOUtils.DMORegister(
                DMOName,
                typeof(DmoSplit).GUID,
                DMOCat,
                DMORegisterFlags.None,
                pIn.Length,
                pIn,
                pOut.Length,
                pOut
                );
        }
示例#2
0
        private void TestRegister()
        {
            int      hr;
            IEnumDMO idmo;
            Guid     g  = Guid.NewGuid();
            Guid     g2 = Guid.NewGuid();

            Debug.WriteLine(g);
            Debug.WriteLine(g2);

            DMOPartialMediatype [] pIn = new DMOPartialMediatype[2];
            pIn[0]         = new DMOPartialMediatype();
            pIn[0].type    = g2;
            pIn[0].subtype = MediaSubType.RGB24;

            pIn[1]         = new DMOPartialMediatype();
            pIn[1].type    = g2;
            pIn[1].subtype = MediaSubType.RGB32;

            DMOPartialMediatype [] pOut = new DMOPartialMediatype[2];
            pOut[0]         = new DMOPartialMediatype();
            pOut[0].type    = g2;
            pOut[0].subtype = MediaSubType.RGB24;

            pOut[1]         = new DMOPartialMediatype();
            pOut[1].type    = g2;
            pOut[1].subtype = MediaSubType.RGB32;

            hr = DMOUtils.DMORegister("asdffdsa", g, DMOCategory.VideoEffect, DMORegisterFlags.None,
                                      pIn.Length,
                                      pIn,
                                      pOut.Length,
                                      pOut
                                      );

            Debug.Assert(hr == 0, "DMORegister");

            DMOPartialMediatype [] tIn = new DMOPartialMediatype[1];
            tIn[0].type    = g2;
            tIn[0].subtype = MediaSubType.RGB32;

            hr = DMOUtils.DMOEnum(Guid.Empty, DMOEnumerator.IncludeKeyed, tIn.Length, tIn, 0, null, out idmo);
            DMOError.ThrowExceptionForHR(hr);

            int iCnt1 = CountEm(idmo);

            Debug.Assert(iCnt1 == 1, "DMORegister");

            hr = DMOUtils.DMOUnregister(g, DMOCategory.VideoEffect);
            DMOError.ThrowExceptionForHR(hr);

            int iCnt2 = CountEm(idmo);

            Debug.Assert(iCnt2 == 0, "DMOUnregister");
        }
示例#3
0
        private static void DoRegister(Type t)
        {
            // Tell what media types you are able to support.  This allows
            // the smart connect capability of DS to avoid loading your DMO
            // if it can't handle the stream type.

            // Note that you don't have to register any (but I recommend
            // you do).  Also, you don't have to provide a subtype (use
            // Guid.Empty).  You can negotiate this at run time in
            // InternalCheckInputType.
            DMOPartialMediatype[] inPin = new DMOPartialMediatype[2];
            inPin[0]         = new DMOPartialMediatype();
            inPin[0].type    = MediaType.Video;
            inPin[0].subtype = MediaSubType.RGB24;

            inPin[1]         = new DMOPartialMediatype();
            inPin[1].type    = MediaType.Video;
            inPin[1].subtype = MediaSubType.RGB32;

            DMOPartialMediatype[] outPin = new DMOPartialMediatype[2];
            outPin[0]         = new DMOPartialMediatype();
            outPin[0].type    = MediaType.Video;
            outPin[0].subtype = MediaSubType.RGB24;

            outPin[1]         = new DMOPartialMediatype();
            outPin[1].type    = MediaType.Video;
            outPin[1].subtype = MediaSubType.RGB32;

            int hr = DMOUtils.DMORegister(
                DMOName,
                typeof(DmoOverlay).GUID,
                DMOCat,
                DMORegisterFlags.None,
                inPin.Length,
                inPin,
                outPin.Length,
                outPin);
        }
示例#4
0
        private void TestDmoEnum()
        {
            int      hr;
            IEnumDMO idmo;

            DMOPartialMediatype [] tIn = new DMOPartialMediatype[2];
            tIn[0].type    = MediaType.Audio;
            tIn[0].subtype = Guid.Empty;

            tIn[1].type    = MediaType.Video;
            tIn[1].subtype = Guid.Empty;

            hr = DMOUtils.DMOEnum(Guid.Empty, DMOEnumerator.IncludeKeyed, 2, tIn, 0, tIn, out idmo);
            DMOError.ThrowExceptionForHR(hr);

            int iCnt1 = CountEm(idmo);

            hr = DMOUtils.DMOEnum(Guid.Empty, DMOEnumerator.IncludeKeyed, 0, null, 0, null, out idmo);
            DMOError.ThrowExceptionForHR(hr);

            int iCnt2 = CountEm(idmo);

            Debug.Assert(iCnt1 == iCnt2, "Hopefully all DMOs are Video or Audio");

            // Looking for the MS Screen Encoder MSS1
            tIn[0].type    = MediaType.Video;
            tIn[0].subtype = new Guid(0x3153534D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
            tIn[0].subtype = new Guid("D990EE14-776C-4723-BE46-3DA2F56F10B9");

            hr = DMOUtils.DMOEnum(DMOCategory.VideoEncoder, DMOEnumerator.IncludeKeyed, 0, null, 1, tIn, out idmo);
            DMOError.ThrowExceptionForHR(hr);

            int iCnt3 = CountEm(idmo);

            Debug.Assert(iCnt3 == 1, "Test Category, and output partial media types");
        }
示例#5
0
        private void TestTypes()
        {
            int hr;
            int i, o;

            DMOPartialMediatype [] pInTypes  = new DMOPartialMediatype[2];
            DMOPartialMediatype [] pOutTypes = new DMOPartialMediatype[2];

            hr = DMOUtils.DMOGetTypes(
                new Guid("{efe6629c-81f7-4281-bd91-c9d604a95af6}"),
                2,
                out i,
                pInTypes,
                2,
                out o,
                pOutTypes
                );

            DMOError.ThrowExceptionForHR(hr);

            Debug.Assert(i == o && i == 1, "DMOGetTypes");
            Debug.Assert(pInTypes[0].type == MediaType.Audio && pInTypes[0].subtype == MediaSubType.PCM, "DMOGetTypes2");
            Debug.Assert(pOutTypes[0].type == MediaType.Audio && pOutTypes[0].subtype == MediaSubType.PCM, "DMOGetTypes3");
        }