/// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= /// <summary> /// Gets the playback rate capabilitys for the session /// </summary> /// <param name="mediaSession">the media session. If not null, we will /// populate this object from the session</param> /// <history> /// 01 Nov 18 Cynic - Started /// </history> public bool AcquirePlayBackRates(IMFMediaSession mediaSession) { bool outBool; bool wantThinned; float supportedRate; Reset(); if (mediaSession == null) { return(false); } try { // first we acquire the thinned rates wantThinned = true; outBool = TantaWMFUtils.GetFastestRate(mediaSession, MFRateDirection.Forward, wantThinned, out supportedRate); if (outBool == true) { fastestForwardSpeedThinned = Math.Abs(supportedRate); } outBool = TantaWMFUtils.GetSlowestRate(mediaSession, MFRateDirection.Forward, wantThinned, out supportedRate); if (outBool == true) { slowestForwardSpeedThinned = Math.Abs(supportedRate); } // now test for the reverse being possible with this thinning mode outBool = TantaWMFUtils.IsRewindSupported(mediaSession, wantThinned); if (outBool == true) { reverseSpeedIsSupportedThinned = true; outBool = TantaWMFUtils.GetFastestRate(mediaSession, MFRateDirection.Reverse, wantThinned, out supportedRate); if (outBool == true) { fastestReverseSpeedThinned = Math.Abs(supportedRate); } outBool = TantaWMFUtils.GetSlowestRate(mediaSession, MFRateDirection.Reverse, wantThinned, out supportedRate); if (outBool == true) { slowestReverseSpeedThinned = Math.Abs(supportedRate); } } // next we acquire the thinned rates wantThinned = false; outBool = TantaWMFUtils.GetFastestRate(mediaSession, MFRateDirection.Forward, wantThinned, out supportedRate); if (outBool == true) { fastestForwardSpeedNonThinned = Math.Abs(supportedRate); } outBool = TantaWMFUtils.GetSlowestRate(mediaSession, MFRateDirection.Forward, wantThinned, out supportedRate); if (outBool == true) { slowestForwardSpeedNonThinned = Math.Abs(supportedRate); } // now test for the reverse being possible with this thinning mode outBool = TantaWMFUtils.IsRewindSupported(mediaSession, wantThinned); if (outBool == true) { reverseSpeedIsSupportedNonThinned = true; outBool = TantaWMFUtils.GetFastestRate(mediaSession, MFRateDirection.Reverse, wantThinned, out supportedRate); if (outBool == true) { fastestReverseSpeedNonThinned = Math.Abs(supportedRate); } outBool = TantaWMFUtils.GetSlowestRate(mediaSession, MFRateDirection.Reverse, wantThinned, out supportedRate); if (outBool == true) { slowestReverseSpeedNonThinned = Math.Abs(supportedRate); } } capabilityRequestSuccessful = true; } catch { capabilityRequestSuccessful = false; } return(CapabilityRequestSuccessful); }