Как фильтру узнать формат входящего стрима (RGB24, YUV...)?
От: Hata  
Дата: 19.07.04 10:49
Оценка:
Re: Как фильтру узнать формат входящего стрима (RGB24, YUV..
От: Денис Майдыковский Россия http://www.maydyk.com
Дата: 19.07.04 11:01
Оценка: 1 (1)
Здравствуйте, Hata, Вы писали:

1) перекрыть SetMediaType()
или, для трансформ-фильтра
2) m_pInput->CurrentMediaType()
Re[2]: Как фильтру узнать формат входящего стрима (RGB24, YU
От: Hata  
Дата: 19.07.04 11:07
Оценка:
Здравствуйте, Денис Майдыковский, Вы писали:

ДМ>Здравствуйте, Hata, Вы писали:


ДМ>1) перекрыть SetMediaType()

ДМ>или, для трансформ-фильтра
ДМ>2) m_pInput->CurrentMediaType()

дело в том, что я пишу свой фильтр, в котором мне необходимо знать фомат входящего стрима..
что значит "перекрыть"?
Re[3]: Как фильтру узнать формат входящего стрима (RGB24, YU
От: romson  
Дата: 19.07.04 12:58
Оценка: 3 (1)
Здравствуйте, Hata, Вы писали:

H>дело в том, что я пишу свой фильтр, в котором мне необходимо знать фомат входящего стрима..

H>что значит "перекрыть"?

А от какого базового класса наследуется Ваш фильтр? Наверняка Вы "перекрываете" либо функцию CheckInputType (в случае наследования от CTransformFilter), либо CheckMediaType (в случае CBaseRenderer). Обе они получают параметр const CMediaType *pmt. Далее действуем так:
if (pmt->subtype == MEDIASUBTYPE_RGB24)
  // формат RGB42
else if (pmt->subtype == MEDIASUBTYPE_YUY2)
  // формат YUY2
else if // и т.д.
Re[4]: Как фильтру узнать формат входящего стрима (RGB24, YU
От: Денис Майдыковский Россия http://www.maydyk.com
Дата: 19.07.04 13:31
Оценка: 5 (2) +1
Здравствуйте, romson, Вы писали:

R либо CheckMediaType (в случае CBaseRenderer). Обе они получают параметр const CMediaType *pmt. Далее действуем так:
R>
R>if (pmt->subtype == MEDIASUBTYPE_RGB24)
R>  // формат RGB42
R>else if (pmt->subtype == MEDIASUBTYPE_YUY2)
R>  // формат YUY2
R>else if // и т.д.
R>


Не согласен! CheckMediaType выдывается несколько раз при установке соеденния и не факт, что соеденение будет установлено именно с медиатипом, переданным в при посленем вызове CheckMediaType(). То есть если требудется знать с каким именно медиатипом соеденение было-таки установлено, то необходимо перекрывать функцию SetMediaType(). CheckMediaType() идеально подходит если нужно "отсечь лишнее".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.