Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Вниз

Свойства выходного пина.   Найти похожие ветки 

 
Noname_   (2002-12-06 11:35) [0]

Как установить свойства выходного пина (например, media subtype)?


 
pasha676   (2002-12-06 12:28) [1]

Ты принцыпиально не хочешь юзать DSPack?
Я не знаю как в чистом директе, а в нем делается примерно так

EnumMT.Assign(wdm.Pins.Items[0]);
grabber.SetBMPCompatible(EnumMT.Items[0].AMMediaType,24);

EnumMT - TDSEnumMediaType - по идеи должен быть аналог в чистом директе
WDM - тоже из DSPack, из директа надо вытащить какой то интерфейс адекватный, чтоб указать пин. Items[0]- это собственно номер пина.

EmumMT.Items[0] - номер типа media собственно.




 
Noname_   (2002-12-06 13:05) [2]

Да, хочется разобраться в первоисточнике. Кстати, спасибо за рисунок. Что-то уже начало получаться в графэдите. В строке grabber.Set... ты устанавливаешь медиа сабтайп для выходного пина фильтра граббера. Я, кажется, понял причину своих неудач. Дело в том, что мы можем получить битмап с выходного пина граббера, а он идет в формате UYVY (по умолчанию). А вот с выходного пина AVI декомпрессора поток идет в формате RGB565 (для 16-битной глубины цвета). Вот только получить битмап с этого пина нельзя (AVI декомпрессор реализует только интерфейс IPin, а в нем нет необходимых методов). Ладно, поставлю на выхпин граббера RGB555. Битмап получается с небольшими артефактами, но жить можно. Главное - понять принципы работы.


 
Владимир Васильев   (2002-12-06 13:56) [3]

Для этих целей используется IAMStreamConfig;


procedure SetVideoConfig( CaptureGraph : ICaptureGraphBuilder2; pCategory : PGUID;
SourceFilter : IBaseFilter; W,H,BitCount : integer );
var
StreamConf : IAMStreamConfig;
hr : HRESULT;
pmt : PAM_Media_Type;
scc : TVIDEO_STREAM_CONFIG_CAPS;
begin
hr:= CaptureGraph.FindInterface(pCategory, @MEDIATYPE_Interleaved, SourceFilter, IID_IAMStreamConfig, StreamConf);
if hr<>S_OK then
hr:= CaptureGraph.FindInterface(pCategory, @MEDIATYPE_Video, SourceFilter, IID_IAMStreamConfig, StreamConf);

if hr = S_OK then begin
// Get the format
hr:= StreamConf.GetStreamCaps(2, pmt, scc);
if hr = S_OK then begin
// Modify the format block.

PVIDEOINFOHEADER(pmt^.pbFormat)^.bmiHeader.biWidth := W;
PVIDEOINFOHEADER(pmt^.pbFormat)^.bmiHeader.biHeight := H;
PVIDEOINFOHEADER(pmt^.pbFormat)^.bmiHeader.biBitCount := BitCount;

// Set the sample size and image size.
// (Be sure to round the image width up to four.) //((W + 3) & ~3) * height * cbPixel;
pmt^.lSampleSize:=((W + 3) and (not(3))) * H;
PVIDEOINFOHEADER(pmt^.pbFormat)^.bmiHeader.biSizeImage:=((W + 3) and (not(3))) * H;

// Now set the format.
hr := StreamConf.SetFormat(pmt^);
if (FAILED(hr)) then
MessageBox(NULL, "SetFormat() Failed!", "", MB_OK);
end;
DeleteMediaType(pmt);
StreamConf := nil;
end;
StreamConf := nil;
end;


 
Noname_   (2002-12-06 15:14) [4]

Не совсем понятно, для каких целей. Результат тот же, что и ISampleGrabber.SetMediaType(). Ведь это все только для выходных пинов capture фильтра. А вот чтобы для входных/выходных пинов любых фильтров?


 
Владимир Васильев   (2002-12-06 15:49) [5]

Да, для выходных пинов фильтров этот интерфейс поддерживающих:

The IAMStreamConfig interface enables an application to set the output format on certain capture and compression filters, for both audio and video.

Use this interface to set format properties, such as the output dimensions and frame rate (for video) or the sample rate and number of channels (for audio).

Filters expose this interface on their output pins. To use the interface, enumerate the filter"s pins and query for IAMStreamConfig. Or, if you are using the Capture Graph Builder object to build the filter graph, you can call the ICaptureGraphBuilder2::FindInterface method. Note that a capture filter might have separate pins for capture and preview.

Filter developers: If you are writing a capture filter or compression filter, implement this interface on the video or audio output pin. For more information, see Exposing Capture and Compression Formats.



 
Noname_   (2002-12-06 16:15) [6]

А для выходного пина фильтра граббера используется ISampleGrabber.SetMediaType(). Или я не прав?



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.013 c
14-64374
Darlock
2003-03-05 12:32
2003.03.20
Razie help


7-64416
Acidy
2003-01-18 13:24
2003.03.20
md5 .......


3-64050
Roki
2003-03-03 11:41
2003.03.20
Как увидеть подконектившхся юзверей?


4-64426
xZero
2003-01-25 16:08
2003.03.20
Вопрос про стили...


1-64149
Leo^Sun
2003-02-26 15:38
2003.03.20
Руссификация MessageDlg





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский