|
|
|
Directx и YUV422 frame
|
|||
|---|---|---|---|
|
#18+
Добрый день Подскажите пожалуйста. У меня в p_Dest фрейм yuv422 размером 352 288. Пытаюсь отобразить его VOID Render() { HRESULT hr; if( NULL == g_pd3dDevice ) return; D3DLOCKED_RECT rect; D3DLOCKED_RECT offrect; // Clear the backbuffer to a blue color //g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,0,0), 1.0f, 0 ); // Begin the scene if( SUCCEEDED( g_pd3dDevice->BeginScene() ) ) { IDirect3DSurface9 *pOffSurface; if( SUCCEEDED( g_pd3dDevice->CreateOffscreenPlainSurface( 352, 288, D3DFMT_YUY2, D3DPOOL_SYSTEMMEM, &pOffSurface,NULL))) { if( SUCCEEDED(hr = pOffSurface->LockRect(&offrect,NULL,D3DLOCK_DONOTWAIT))) { IDirect3DSurface9 *p_surface = NULL; if( SUCCEEDED(hr = g_pd3dDevice->GetBackBuffer( 0,0,D3DBACKBUFFER_TYPE_MONO,&p_surface))) { if( SUCCEEDED(hr = p_surface->LockRect(&rect,NULL,D3DLOCK_DONOTWAIT))) { PitchYuv422((BYTE*)offrect.pBits, pDest, 352, 288, offrect.Pitch); g_pd3dDevice->StretchRect(pOffSurface,NULL,p_surface,NULL,D3DTEXF_NONE); p_surface->UnlockRect(); } p_surface->Release(); } pOffSurface->UnlockRect(); } pOffSurface->Release(); } // End the scene g_pd3dDevice->EndScene(); } // Present the backbuffer contents to the display g_pd3dDevice->Present( NULL, NULL, NULL, NULL ); } где void PitchYuv422(LPBYTE pTarget, LPBYTE pSource, int nWidth, int nHeight, LONG lPitch) { LPBYTE pSourceBuff = pSource; LPBYTE pTargetBuff = pTarget; int i, j, nPos=0; for(i = 0; i < nHeight; i++) { pTargetBuff = pTarget + i*lPitch; for(j = 0; j < nWidth/2; j++) { *pTargetBuff++ = *pSourceBuff++; // Y *pTargetBuff++ = *pSourceBuff++; // U *pTargetBuff++ = *pSourceBuff++; // Y *pTargetBuff++ = *pSourceBuff++; // V /* *(pTargetBuff+1) = *pSourceBuff++; // Y *(pTargetBuff+4) = *pSourceBuff++; // U *(pTargetBuff+3) = *pSourceBuff++; // Y *(pTargetBuff+2) = *pSourceBuff++; // V pTargetBuff += 4; */ } } } В итоге кадр наполовину и весь фиолетовый. Что то я делаю не так наверное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2011, 16:34 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37329290&tid=1342855]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
208ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
20ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 482ms |

| 0 / 0 |
