HRESULT Outpin::ConvertTimeFormat(LONGLONG* ptgt, const GUID* ptgtfmt, LONGLONG src, const GUID* psrcfmt) { const Inpin& inpin = m_pFilter->m_inpin; const GraphUtil::IMediaSeekingPtr pSeek(inpin.m_pPinConnection); if (bool(pSeek)) return pSeek->ConvertTimeFormat(ptgt, ptgtfmt, src, psrcfmt); if (ptgt == 0) return E_POINTER; LONGLONG& tgt = *ptgt; const GUID& tgtfmt = ptgtfmt ? *ptgtfmt : TIME_FORMAT_MEDIA_TIME; const GUID& srcfmt = psrcfmt ? *psrcfmt : TIME_FORMAT_MEDIA_TIME; if (tgtfmt != TIME_FORMAT_MEDIA_TIME) return E_INVALIDARG; if (srcfmt != TIME_FORMAT_MEDIA_TIME) return E_INVALIDARG; tgt = src; return S_OK; }
HRESULT OutpinVideo::ConvertTimeFormat( LONGLONG* ptgt, const GUID* ptgtfmt, LONGLONG src, const GUID* psrcfmt) { Filter::Lock lock; HRESULT hr = lock.Seize(m_pFilter); if (FAILED(hr)) return hr; if (!bool(m_pPinConnection)) return VFW_E_NOT_CONNECTED; const Inpin& inpin = m_pFilter->m_inpin; const GraphUtil::IMediaSeekingPtr pSeek(inpin.m_pPinConnection); if (bool(pSeek)) { lock.Release(); return pSeek->ConvertTimeFormat(ptgt, ptgtfmt, src, psrcfmt); } if (ptgt == 0) return E_POINTER; LONGLONG& tgt = *ptgt; const GUID& tgtfmt = ptgtfmt ? *ptgtfmt : TIME_FORMAT_MEDIA_TIME; const GUID& srcfmt = psrcfmt ? *psrcfmt : TIME_FORMAT_MEDIA_TIME; if (tgtfmt != TIME_FORMAT_MEDIA_TIME) return E_INVALIDARG; if (srcfmt != TIME_FORMAT_MEDIA_TIME) return E_INVALIDARG; tgt = src; return S_OK; }