public int SetFormat(AMMediaType pmt) { #if HAMED_LOG_METHOD_INFO MethodBase method = new StackTrace().GetFrame(0).GetMethod(); Console.WriteLine(this.GetType().FullName + " - " + method.Name + " - " + method.ToString()); #endif if (m_Filter.IsActive) { return(VFW_E_WRONG_STATE); } HRESULT hr; AMMediaType _newType = new AMMediaType(pmt); AMMediaType _oldType = new AMMediaType(m_mt); hr = (HRESULT)CheckMediaType(_newType); if (FAILED(hr)) { return(hr); } m_mt.Set(_newType); if (IsConnected) { hr = (HRESULT)Connected.QueryAccept(_newType); if (SUCCEEDED(hr)) { hr = (HRESULT)m_Filter.ReconnectPin(this, _newType); if (SUCCEEDED(hr)) { hr = (HRESULT)(m_Filter as VirtualCamFilter).SetMediaType(_newType); } else { m_mt.Set(_oldType); m_Filter.ReconnectPin(this, _oldType); } } } else { hr = (HRESULT)(m_Filter as VirtualCamFilter).SetMediaType(_newType); } return(hr); }
public int SetFormat(AMMediaType pmt) { if (m_Filter.IsActive) { return(VFW_E_WRONG_STATE); } HRESULT hr; AMMediaType _newType = new AMMediaType(pmt); AMMediaType _oldType = new AMMediaType(m_mt); hr = (HRESULT)CheckMediaType(_newType); if (FAILED(hr)) { return(hr); } m_mt.Set(_newType); if (IsConnected) { hr = (HRESULT)Connected.QueryAccept(_newType); if (SUCCEEDED(hr)) { hr = (HRESULT)m_Filter.ReconnectPin(this, _newType); if (SUCCEEDED(hr)) { hr = (HRESULT)(m_Filter as VirtualCamFilter).SetMediaType(_newType); } else { m_mt.Set(_oldType); m_Filter.ReconnectPin(this, _oldType); } } } else { hr = (HRESULT)(m_Filter as VirtualCamFilter).SetMediaType(_newType); } return(hr); }