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;
}
Ejemplo n.º 2
0
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();
	}
}