добавление компрессора

 
Начать новую тему   Ответить на тему    Список форумов DirectShow форум -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
Tors
Активный


Зарегистрирован: 16.11.2006
Сообщения: 25
Откуда: Харьков

СообщениеДобавлено: Ср Мар 28, 2007 12:23 pm    Заголовок сообщения: добавление компрессора Ответить с цитатой

мне нужно получать с помощью samplegrabber
снимки несжатого видеопотока
нужно построить грарф :


sourse -> splitter [->videodecompressor->samplegrabber->nullrenderer


я создаю source, samplegrabber, и nullrenderer
строю граф с помощью
CaptureGraphBuilder2->RenderStream(NULL,NULL,Source,Grabber,NULLRenderer);
получается приведенный выше граф - только без декомпрессора
Grabber->SetMediaType
наверное не прокатит, так как мне нужно делать снимки в
формате который выдает декомпрессор(напрмер YUYV)

Как заставить DShow добавлять декомпрессор?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
WondeRu
Главвред :)


Зарегистрирован: 30.10.2006
Сообщения: 199
Откуда: Самара

СообщениеДобавлено: Ср Мар 28, 2007 3:41 pm    Заголовок сообщения: Ответить с цитатой

Вот пример связывания:

Код:
  (FFilterGraph as ICaptureGraphBuilder2).RenderStream(@PIN_CATEGORY_CAPTURE,
     nil,
     FFilter as IBaseFilter,
     nil,
     pBase);

  (FFilterGraph as ICaptureGraphBuilder2).RenderStream(nil,
     nil,
     pBase,
     nil,
     FVideoWindow as IBaseFilter);


Два раза вызывается RenderStream, сначала до одного фильтра, потом уже от него до конечного.
_________________
С уважением,
Игорь Подсекин
MVP, MCTS
главный редактор сайта
"Directshow по-русски"
http://directshow.wonderu.com
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Tors
Активный


Зарегистрирован: 16.11.2006
Сообщения: 25
Откуда: Харьков

СообщениеДобавлено: Ср Мар 28, 2007 4:08 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
hr=CaptureGraphBuilder2->RenderStream(NULL,
NULL/*&MEDIATYPE_Video*/,
SourceFilter,
NULL,
SampleGrabberForVideoFilter
);

hr=CaptureGraphBuilder2->RenderStream(NULL,
NULL/*&MEDIATYPE_Video*/,
SampleGrabberForVideoFilter,
NULL,
NullRendererForVideoFilter
);

не помагат
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
WondeRu
Главвред :)


Зарегистрирован: 30.10.2006
Сообщения: 199
Откуда: Самара

СообщениеДобавлено: Ср Мар 28, 2007 4:10 pm    Заголовок сообщения: Ответить с цитатой

какая ошибка?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
WondeRu
Главвред :)


Зарегистрирован: 30.10.2006
Сообщения: 199
Откуда: Самара

СообщениеДобавлено: Ср Мар 28, 2007 4:12 pm    Заголовок сообщения: Ответить с цитатой

Также вариант: каждый пин ручками соединять
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Tors
Активный


Зарегистрирован: 16.11.2006
Сообщения: 25
Откуда: Харьков

СообщениеДобавлено: Ср Мар 28, 2007 4:14 pm    Заголовок сообщения: Ответить с цитатой

никакой
граф тот же
filesource->splitter->grabber->nullrenderer
между сплитер и grabber не добавляется decompressor
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Tors
Активный


Зарегистрирован: 16.11.2006
Сообщения: 25
Откуда: Харьков

СообщениеДобавлено: Ср Мар 28, 2007 4:16 pm    Заголовок сообщения: Ответить с цитатой

харэ — по FOURCC я найду видеодекомпрессор.
далее мне нужно найти аудиодекомпрессор.
есть ли у аудио чтото типа FOURCC
И как получить медиатайп для сжатого аудио?

аверное надо рыть сюда :


typedef struct {
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
WORD wBitsPerSample;
WORD cbSize;
} WAVEFORMATEX;

Members

wFormatTag

Waveform-audio format type. Format tags are registered with Microsoft Corporation for many compression algorithms. A complete list of format tags can be found in the Mmreg.h header file. For one- or two-channel Pulse Code Modulation (PCM) data, this value should be WAVE_FORMAT_PCM.


Но я не нашел документации по mmreg.h
я так понял нужно преобразовать wFormatTags в GUID
тольк как это сделать?
где взять доки по mmreg?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
WondeRu
Главвред :)


Зарегистрирован: 30.10.2006
Сообщения: 199
Откуда: Самара

СообщениеДобавлено: Ср Мар 28, 2007 4:40 pm    Заголовок сообщения: Ответить с цитатой

Создай декомпрессор через CoCreateInstance, и при выполнении первого RenderStream запихни его 4-ым параметром
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Tors
Активный


Зарегистрирован: 16.11.2006
Сообщения: 25
Откуда: Харьков

СообщениеДобавлено: Ср Мар 28, 2007 4:50 pm    Заголовок сообщения: Ответить с цитатой

чтоб создать декомпрессор нужно знать его френдлинэйм или guid
или медиатайп
для видео как вариант - по fourcc найти медиатайп
(знаю как)
по аудио нашел :
STDAPI CreateAudioMediaType(
const WAVEFORMATEX *pwfx,
AM_MEDIA_TYPE *pmt,
BOOL bSetFormat
);

к тому же мне надо узнать параметры видео и аудио
все это(парметры, fourcc ...) думаю сделать с помощью IMediaDet
А потом буду строить граф
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Tors
Активный


Зарегистрирован: 16.11.2006
Сообщения: 25
Откуда: Харьков

СообщениеДобавлено: Ср Мар 28, 2007 5:02 pm    Заголовок сообщения: Ответить с цитатой

хотя проганяю с
CreateAudioMediaType
мне же нужно GUID аудиоформата для поиска с помощью
FilterMapper2 А не медиатайп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов DirectShow форум -> Общий Часовой пояс: GMT + 4
Страница 1 из 1
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB


Рейтинг@Mail.ru