コード例 #1
0
ファイル: DmoSplit.cs プロジェクト: ewin66/DirectShow.NET
        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);
        }