Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как ещё можно перечислить пины кроме EnumPins? 
:(
    Опции темы
Dims
Дата 28.1.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



В системе установлен фильтр (BTAsycEx). Программа DirectShow Filter Manager его видит и говорит, что у него один выходной пин.

Однако, я сам, в своей программе, этот пин увидеть не могу -- энумератор выдаёт пустой список.

Код

SetOp( L"Initializing COM" );
    hr = CoInitialize(NULL);
    if( ShowError() ) return false;


    IBaseFilter *pBTAsyncEx;
    SetOp( L"Creating BTAsyncEx filter" );
    hr = CoCreateInstance(CLSID_BTAsyncEx, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, 
        (void **)&pBTAsyncEx);
    if( ShowError() ) return false;

    wcout << pBTAsyncEx << endl;


    SetOp( L"Releasing BTAsyncEx filter" );
    pBTAsyncEx->Release();
    if( ShowError() ) return false;


кусок метода выдачи

Код

IEnumPins  *pEnumPins = NULL;
        IPin *pPin;
        ULONG cFetched;

        int i = 1;

        // obtaining pin enumerator
        hr = pBaseFilter->EnumPins(&pEnumPins);
        if( !ShowError(hr, L"Obtaining pin enumerator") ) {

            // enumrating pins
            while(pEnumPins->Next(1, &pPin, &cFetched) == S_OK ) {

                out << L"Pin " << i << L": " << pPin << endl;

                pPin->Release();

                i++;

            } // enumerating pins
            pEnumPins->Release();

        } // obtaining pins enum ok


Добавлено через 58 секунд
А, ну вопрос такой (в заголовке): как ещё можно получить доступ к пинам?
PM MAIL   Вверх
Dims
Дата 28.1.2010, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



Вот чистый код подсчёта пинов у всех фильров. Он возвращает 

MPC - ShoutcastSource...0 pins

в то время как GraphEd sees 1 pin

Код

int _tmain(int argc, _TCHAR* argv[])
{
    setlocale( LC_ALL, ".OCP" );

    HRESULT hr;

    hr = CoInitialize(NULL);
    if( FAILED(hr) ) return hr;
    
    IMoniker *pMoniker;
    IBaseFilter *pBaseFilter;
    ULONG cFetched;
    ICreateDevEnum *pCreateDevEnum;
    IEnumMoniker *pEnumMoniker;

    hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, 
        (void **)&pCreateDevEnum);
    if( SUCCEEDED(hr) ) {

        hr = pCreateDevEnum->CreateClassEnumerator(CLSID_LegacyAmFilterCategory,&pEnumMoniker,0);    
        if( SUCCEEDED(hr) ) {
        
            while( pEnumMoniker->Next(1,&pMoniker, &cFetched) == S_OK ) {

                wcout << GetFriendlyName(pMoniker) << "...";
                hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**) &pBaseFilter);
                if( SUCCEEDED(hr) ) {

                    IEnumPins  *pEnumPins = NULL;
                    IPin *pPin;
                
                    int i = 0;

                    hr = pBaseFilter->EnumPins(&pEnumPins);
                    if( SUCCEEDED(hr) ) {


                        // enumrating pins
                        while((hr=pEnumPins->Next(1, &pPin, &cFetched)) == S_OK ) {

                            i++;

                            pPin->Release();
                        }

                        wcout << i << L" pins" << endl;

                        pEnumPins->Release();
                    }

                    pBaseFilter->Release();
                }
                else {
                    wcout << L"error" << endl;
                }
                pMoniker->Release();
            }
            pEnumMoniker->Release();
        }
        pCreateDevEnum->Release();
    }

    CoUninitialize();
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0703 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.