Re: Как задать размер буфера в DirectShow?
От: Snax Россия  
Дата: 28.02.02 11:14
Оценка:
Здравствуйте lavrov_alex, Вы писали:

LA>Так как мне не зависить от этого и самому указывать размер буфера?


А как же основы демократии? А если другие фильтры не умеют работать с такими
большими/маленькими буферами? Не, ты кончно можешь предложить свой размер
буффера через DecideBufferSize, но будь готов к тому, что тебя никто не поддержит

HRESULT CMySuperPupperPhylter::DecideBufferSize(IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *pProperties)
{
    CAutoLock cAutoLock(m_pFilter->pStateLock());

    ASSERT(pAlloc);
    ASSERT(pProperties);
    HRESULT hr;

    pProperties->cbBuffer = 1024*1024; // Мег!
    pProperties->cBuffers = 2; // Два буффера по мегу

    ALLOCATOR_PROPERTIES Actual;
    hr = pAlloc->SetProperties(pProperties,&Actual);
    if (FAILED(hr))
        return hr; // Что-то сломалось
    
    if (Actual.cbBuffer < pProperties->cbBuffer)
        return E_FAIL; // Не согласны. Вот ламеры!
   
    return S_OK;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.