Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.158.184] |
|
Сообщ.
#1
,
|
|
|
Устанавливаю параметры видеоустройства ч/з IAMStreamConfig - размер и частота кадров устанавливаются, а алгоритм компрессии - нет В каком месте у меня кривые руки или проблемы в дровах?
hr = m_pCapture->FindInterface(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Interleaved, pSrcFilter, IID_IAMStreamConfig, (void **)&m_pStreamConfing.p); if (hr != NOERROR) { hr = m_pCapture->FindInterface(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, m_pBaseFilter, IID_IAMStreamConfig, (void **)&m_pStreamConfing.p); if (hr != NOERROR) // this means we can't set frame rate (non-DV only) ErrorMessage(TEXT("Не найден интерфейс IAMStreamConfig")); } // восстанавливаем размер изображения и frame rate, который был в прошлый сеанс работы с программой if (m_pStreamConfing) { AM_MEDIA_TYPE *pmt; // get format being used NOW hr = m_pStreamConfing->GetFormat(&pmt); // DV capture does not use a VIDEOINFOHEADER if (hr != NOERROR) ErrorMessage(_T("Ошибка получения параметров изображения GetFormat().")); else { if (pmt->formattype == FORMAT_VideoInfo) { VIDEOINFOHEADER* pVih = reinterpret_cast<VIDEOINFOHEADER*>(pmt->pbFormat); pVih->bmiHeader.biWidth = GetDocument()->GetWidth(); pVih->bmiHeader.biHeight = GetDocument()->GetHeight(); pVih->bmiHeader.biCompression = GetDocument()->GetCompression(); pVih->AvgTimePerFrame = static_cast<LONGLONG>(10000000 / GetDocument()->GetFramePerSecond()); if (FAILED(m_pStreamConfing->SetFormat(pmt))) ErrorMessage("\nОшибка вызова IAMStreamConfig::SetFormat() в StartCapture()"); } DeleteMediaType(pmt); } } |