目前图像数据已经实现旋转了90度,改变视频图像的长宽代码如下
BYTE g_RotateData[768*576*3];
void RotateImage(IMediaSample *pSample)
{
PBYTE pData = NULL;
pSample-> GetPointer(&pData);
AM_MEDIA_TYPE *pmt;
HRESULT hr;
//改变视频图像的长宽,本来长是768,宽是576,改为宽576,长768
hr = pSample-> GetMediaType(&pmt);
if(pmt-> formattype == FORMAT_VideoInfo)
{
VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *)pmt-> pbFormat;
pvi-> bmiHeader.biBitCount=24;
pvi-> bmiHeader.biSizeImage=768*576;
pvi-> bmiHeader.biWidth = 576;
pvi-> bmiHeader.biHeight = 768;
}
hr = pSample-> SetMediaType(pmt);
memcpy(g_RotateData, pData, 768*576*3);
int i, j;
BYTE *p, *p1;
//旋转图像数据
for (i=0; i <576; i++)
{
for (j=0; j <768; j++)
{
p = g_RotateData + i*768*3 + j*3;
p1 = pData + (767-j)*576*3 + i*3;
*p1 = *p;
p1 ++;
p++;
*p1 = *p;
p1 ++;
p++;
*p1 = *p;
}
}
}