缩放播放视频的问题,100分
我有一个视频文件,原始大小(176×144)跟屏幕不相配,想修改视频播放框的大小(240×196),通过三种方式尝试皆失败,不知道是我采用的方式不对还是代码中有问题,请高手指教:
方法一:
IBitmap * pFrame;
IBitmap * dstFrame;
AEEBitmapInfo bi;
AEERect rectDest, srcRect;
IMEDIA_GetFrame(pme->pIMediaObject, &pFrame);
IBITMAP_GetInfo(pFrame, &bi, sizeof(bi));
IBitmap_CreateCompatibleBitmap(pFrame, &dstFrame, 240, 196);
SETAEERECT(&rectDest, 0, 0, 240, 196) ;
SETAEERECT(&srcRect, 0, 0, bi.cx, bi.cy);
IBitmapScale_Scale(pme->m_pIBitmapScale, pFrame, &srcRect, dstFrame, &rectDest, &rectDest, AEEBITMAPSCALE_OPAQUE);
IDISPLAY_BitBlt(pme->a.m_pIDisplay, 0, 40, 240, 196,dstFrame, 0, 0, AEE_RO_COPY);
IDISPLAY_Update(pme->a.m_pIDisplay);
IBITMAP_Release(pFrame);
IBITMAP_Release(dstFrame);
方法二:
IBitmap * pFrame;
IBitmap* dst;
ITransform* pt;
AEEBitmapInfo bi;
IMEDIA_GetFrame(pme->pIMediaObject, &pFrame);
IBITMAP_GetInfo(pFrame, &bi, sizeof(bi));
IBITMAP_CreateCompatibleBitmap(pFrame,&dst,240,196);
IBITMAP_QueryInterface(dst,AEECLSID_TRANSFORM,(void**)&pt);
ITRANSFORM_TransformBltSimple(pt,0,0,pFrame,0,0,bi.cx,bi.cy,TRANSFORM_SCALE_2,COMPOSITE_OPAQUE);
IDISPLAY_BitBlt(pme->a.m_pIDisplay, 0, 40, 240, 196,dst, 0, 0, AEE_RO_COPY);
IDISPLAY_Update(pme->a.m_pIDisplay);
IBITMAP_Release(pFrame);
IBITMAP_Release(dst);
ITRANSFORM_Release(pt);
方法3:
IBitmap * pFrame;
IMEDIA_GetFrame(pme->pIMediaObject, &pFrame);
IGRAPHICS_StretchBlt(pme->m_pIGraphics, 0, 0, 240, 180, pFrame, AEE_RO_TRANSPARENT);
IGRAPHICS_Update(pme->m_pIGraphics);
IDISPLAY_Update(pme->a.m_pIDisplay);
IBITMAP_Release(pFrame);
其中前两种方法可以在模拟器上播放,但在真机(三星W799)上只有一个黄了吧唧的背景;后一种方法都无法播放。