STDMETHODIMP CPosPassThru::get_Duration(REFTIME * plength) { IMediaPosition* pMP; HRESULT hr = GetPeer(&pMP); if (FAILED(hr)) { return hr; } hr = pMP->get_Duration(plength); pMP->Release(); return hr; }
void PlaybackControls::getSeek() { if (needsReset == true) { mpParentWindow->resize(351, 161); QSize size = mpParentWindow->size(); int height = size.height(); int width = size.width(); if (width < 360) { needsReset = false; } } reset = true; REFTIME time; REFTIME duration; QString timeString; QString durationString; IMediaPosition *pPosition; if (mpGraph) { HRESULT hr = mpGraph->QueryInterface(IID_IMediaPosition, (void **)&pPosition); if (SUCCEEDED(hr)) { pPosition->get_CurrentPosition(&time); pPosition->get_Duration(&duration); timeString.setNum(floor(time)); durationString.setNum(floor(duration)); QString output = timeString; output += " : "; output += durationString; mpParentWindow->seekLabel->setText(output); mpParentWindow->seekBar->setRange(0, duration); if (!mpParentWindow->seekBar->isSliderDown()) { mpParentWindow->seekBar->setValue(time); } } pPosition->Release(); } }