protected override HResult OnProcessInput() { HResult hr = HResult.S_OK; // While we accept types that *might* be interlaced, if we actually receive // an interlaced sample, reject it. if (m_MightBeInterlaced) { int ix; // Returns a bool: true = interlaced, false = progressive hr = InputSample.GetUINT32(MFAttributesClsid.MFSampleExtension_Interlaced, out ix); if (hr != HResult.S_OK || ix != 0) { hr = HResult.E_FAIL; } } if (Succeeded(hr)) { // Tell the background thread to start processing; m_SampleReady.Set(); } return(hr); }
/// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= /// <summary> /// Processes the input. Most of the transformation happens in OnProcessOutput /// so all we need to do here is check to see if the sample is interlaced and, if /// it is, discard it. /// /// Expects InputSample to be set. /// </summary> /// <returns>S_Ok or E_FAIL.</returns> /// <history> /// 01 Nov 18 Cynic - Ported over /// </history> protected override HResult OnProcessInput() { HResult hr = HResult.S_OK; // While we accept types that *might* be interlaced, if we actually receive // an interlaced sample, reject it. if (m_MightBeInterlaced == true) { int ix; // Returns a bool: true = interlaced, false = progressive hr = InputSample.GetUINT32(MFAttributesClsid.MFSampleExtension_Interlaced, out ix); if (hr != HResult.S_OK || ix != 0) { hr = HResult.E_FAIL; } } return(hr); }