Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.03;
Скачать: CL | DM;

Вниз

конвертирование bitmap из RGB24 в YUY2(YUV422)...help   Найти похожие ветки 

 
programmer_kia ©   (2003-03-11 15:49) [0]

проблем, собственно не при конвертировании, а в последующих действиях...
вот кусок из программы, написанной при помощи DX8SDK(DirectShow)...я собственно direcshow фильтр и пишу...
она работает не правильно, что нужно подправить для получения изображения??

HRESULT CNullInPlace::Transform(IMediaSample *pSample)
{
UNREFERENCED_PARAMETER(pSample);

AM_MEDIA_TYPE* pType = &m_pInput->CurrentMediaType();
VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *) pType->pbFormat;
CConv *pConv = NULL;

// Pointer to the actual image buffer
BYTE *pData = NULL;
pSample->GetPointer(&pData);
char *In = NULL, *Out= NULL;

In = (char *)malloc((pvi->bmiHeader.biHeight * pvi->bmiHeader.biWidth) * 3);
Out = (char *)malloc((pvi->bmiHeader.biHeight * pvi->bmiHeader.biWidth) * 2);

// In - pointer to bitmap
// Out - pointer to new YUY2 bitmap

memcpy(In, pData + sizeof(pvi->bmiHeader), sizeof(pvi->bmiHeader.biSizeImage) - sizeof(pvi->bmiHeader));

// converting color spaces...
Out = pConv->rgb2yuv422(In, Out, pvi->bmiHeader.biHeight * pvi->bmiHeader.biWidth);
free(In);

pvi->bmiHeader.biSizeImage = sizeof(*Out);

memcpy(pData, &pvi->bmiHeader, sizeof(pvi->bmiHeader));
memcpy(pData + sizeof(pvi->bmiHeader), Out, sizeof(*Out));
free(Out);


pType->subtype = MEDIASUBTYPE_YUY2;
pType->bFixedSizeSamples = TRUE;
pType->bTemporalCompression = TRUE;
pType->lSampleSize = pvi->bmiHeader.biSizeImage;
pType->formattype = FORMAT_VideoInfo;


pSample->SetActualDataLength(pvi->bmiHeader.biSizeImage);
pSample->SetMediaType(pType);

// setup media subtype
CMediaType *pmt = NULL;
//get_MediaType(&pmt);
pmt->SetSubtype(&MEDIASUBTYPE_YUY2);
pmt->SetSampleSize(pvi->bmiHeader.biSizeImage);
pmt = (CMediaType *) pType;
put_MediaType(pmt);

return NOERROR;
}


 
programmer_kia ©   (2003-03-11 15:58) [1]

да, кстати,
в куске:
// converting color spaces...
Out = pConv->rgb2yuv422(In, Out, pvi->bmiHeader.biHeight * pvi->bmiHeader.biWidth);
--- это специальная функция, которая переводит rgb24->yuy2, там все ок!!


 
PGM   (2003-03-14 11:56) [2]

А граф-то нормально связывается? А что в результате? Нет изображения или некорректно? Время бежит или это статическое изображение? Лучше экспериментировать все-таки на подходящих AVI, лучше контролируется ситуация.


 
kia   (2003-03-16 07:44) [3]

да вот в этом вся проблема, граф не связывается...точнее связывается только по отдельности: либо с rgb фильтром, либо yuv фильтром, но никак вместе :(
что делать??


 
programmer_kia ©   (2003-03-20 06:44) [4]

up



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

Текущий архив: 2003.07.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
14-7629
سشصز
2003-06-16 12:53
2003.07.03
Математические фокусы…


1-7524
Mishenka
2003-06-21 23:35
2003.07.03
Как в Memo отменить автоматическую перемотку?


1-7432
BJValentine
2003-06-23 12:16
2003.07.03
Обработчики событий формы


11-7372
SPeller
2002-10-10 15:54
2003.07.03
ShowModal


14-7660
marconi8
2003-06-11 22:51
2003.07.03
удалить файл, если pc внезапно вырубился