WEB开发网
开发学院手机开发Android 开发 Android 下的PVPlayer的实现 阅读

Android 下的PVPlayer的实现

 2010-09-10 01:08:00 来源:WEB开发网   
核心提示:LOGV("video = %d x %d", displayWidth, displayHeight);LOGV("frame = %d x %d", frameWidth, frameHeight);LOGV("frame #bytes = %d", fr

LOGV("video = %d x %d", displayWidth, displayHeight);

LOGV("frame = %d x %d", frameWidth, frameHeight);

LOGV("frame #bytes = %d", frameSize);

// register frame buffers with SurfaceFlinger

mFrameBufferIndex = 0;

mInitialized = true;

mPvPlayer->sendEvent(MEDIA_SET_VIDEO_SIZE, iVideoDisplayWidth, iVideoDisplayHeight);

return mInitialized;

}

然后我们的东东就搞定了。

第二个函数:writeFrameBuf这个函数是什么时候用的呢?我们前面看MIO的时候就已经知道MIO的数据传递是通过队列的方式,消息和数据可以再一个队列里传输。在MIO的writeAsync函数中有这样的一个case:

case PVMI_MEDIAXFER_FMT_TYPE_DATA :

switch(aFormatIndex)

{

case PVMI_MEDIAXFER_FMT_INDEX_FMT_SPECIFIC_INFO:

……………………

case PVMI_MEDIAXFER_FMT_INDEX_DATA:

//data contains the media bitstream.

//Verify the state

if (iState!=STATE_STARTED)

{

PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_ERR,

(0,"AndroidSurfaceOutput::writeAsync: Error - Invalid state"));

status=PVMFErrInvalidState;

}

else

{

//printf("V WriteAsync { seq=%d, ts=%d } ", data_header_info.seq_num, data_header_info.timestamp);

// Call playback to send data to IVA for Color Convert

status = writeFrameBuf(aData, aDataLen, data_header_info);

PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_ERR,

(0,"AndroidSurfaceOutput::writeAsync: Playback Progress - frame %d",iFrameNumber++));

}

break;

这个地方就开始调用我们的画屏幕的函数。这个时候就是我们接受到一帧数据的时候,注意我们这里基本上音频和视频的同步在NODE框架中已经做了,这里能够收到数据,叫表明一定是要显示的数据,不用考虑什么音视频同步了。

OSCL_EXPORT_REF PVMFStatus AndroidSurfaceOutput::writeFrameBuf(uint8*

上一页  8 9 10 11 12 13 14  下一页

Tags:Android PVPlayer 实现

编辑录入:coldstar [复制链接] [打 印]
赞助商链接