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 ); }
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"); }
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); }
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"); }
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"); }