用directshow做手机camera研发时出现的问题.
用directshow做手机camera研发时出现的问题.
HRESULT CamTransform::Transform(IMediaSample *pIn, IMediaSample *pOut)
{
BYTE* pOutBuffer;
BYTE* pInBuffer;
LONG size = 2;
REFERENCE_TIME rtStart, rtStop;
int i;
HRESULT hr;
pIn->GetTime(&rtStart, &rtStop);
size = pIn->GetActualDataLength();
pOut->GetPointer(&pOutBuffer);
pIn->GetPointer(&pInBuffer);
memcpy( pOutBuffer, pInBuffer,m_height*m_width*2 );
if ( m_callback )
m_callback( pInBuffer, m_width,m_height , 16 );
MergeTextAndPolyLine( pOutBuffer, m_width,m_height ); //! temp
pOut->SetActualDataLength( size );
pOut->SetTime(&rtStart, &rtStop);
pOut->SetSyncPoint(TRUE);
return S_OK;
} // Transform
自己写了一个Transform方法,pOutBuffer是正常的图像,为什么显示出来的图像不正常呢?SUBTYPE用了RGB565,是不是该手机不支持RGB565的原因?
HRESULT CamTransform::Transform(IMediaSample *pIn, IMediaSample *pOut)
{
BYTE* pOutBuffer;
BYTE* pInBuffer;
LONG size = 2;
REFERENCE_TIME rtStart, rtStop;
int i;
HRESULT hr;
pIn->GetTime(&rtStart, &rtStop);
size = pIn->GetActualDataLength();
pOut->GetPointer(&pOutBuffer);
pIn->GetPointer(&pInBuffer);
memcpy( pOutBuffer, pInBuffer,m_height*m_width*2 );
if ( m_callback )
m_callback( pInBuffer, m_width,m_height , 16 );
MergeTextAndPolyLine( pOutBuffer, m_width,m_height ); //! temp
pOut->SetActualDataLength( size );
pOut->SetTime(&rtStart, &rtStop);
pOut->SetSyncPoint(TRUE);
return S_OK;
} // Transform
自己写了一个Transform方法,pOutBuffer是正常的图像,为什么显示出来的图像不正常呢?SUBTYPE用了RGB565,是不是该手机不支持RGB565的原因?
...全文
相关推荐
wince6.0 directshow camera
在这个场景中,"wince6.0 directshow camera"指的是利用DirectShow API在WinCE6.0系统上开发摄像头应用的相关技术。
DirectShow获取视频和音频数据
Sample Grabber是一个标准的DirectShow过滤器,用于从媒体流中抓取单个样本,这对于获取原始的视频帧或音频样本非常有用。回调函数会在每个样本到达时被调用,提供数据处理或保存的机会。
使用DirectShow采集并进行H264实时编码
在实时视频采集过程中,我们需要使用视频捕获过滤器(如Camera Source Filter)作为源过滤器。
amcap.rar_DirectShow摄像头_camera file save_directshow amcap_摄像头_获取
同时,这也提醒我们,掌握DirectShow技术能够让我们在处理音视频相关的复杂任务时更加得心应手。
DirectShow虚拟摄像头工程
该项目基于DirectShow框架从零实现虚拟摄像头驱动,不依赖DSHOW SDK,通过手动实现COM组件和IBaseFilter、IPin等接口完成视频流模拟。支持RGB转YUY2格式处理,可用于Q


移动开发其他问题
