Главная страница
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.013 c
14-7623
Marser
2003-06-17 19:07
2003.07.03
Жан-Поль Бельмондо,


14-7716
Ann
2003-06-17 10:38
2003.07.03
Падеж


7-7733
Cro
2003-04-23 09:57
2003.07.03
COM-port


14-7694
Scorpx
2003-06-17 11:26
2003.07.03
Компилятор.


8-7560
CrowD
2003-03-20 11:36
2003.07.03
Маштабируемость?