Android 下的PVPlayer的实现
2010-09-10 01:08:00 来源:WEB开发网创建MIO之后有这样的一个函数
status_t AndroidSurfaceOutput::set(PVPlayer* pvPlayer, const
sp
{
mPvPlayer = pvPlayer;
mSurface = surface;
mEmulation = emulation;
return NO_ERROR;
}
这个函数就设置了我们Vedio out MIO最主要的几个属性,一个是pvPlayer,一个是surface,最后的一个参数应该是表明是不是模拟器。
我们来看看这个MIO。关于MIO前面我们基本已经讲过,可能没有放在blog上。一般由这几个接口派生:
public OsclTimerObject, public PvmiMIOControl,
public PvmiMediaTransfer, public PvmiCapabilityAndConfig
但是作为一个视频输出的MIO,这里有几个自己特色的函数:
// For frame buffer
virtual bool initCheck();
virtual PVMFStatus writeFrameBuf(uint8* aData, uint32 aDataLen, const PvmiMediaXferHeader& data_header_info);
virtual void postLastFrame();
virtual void closeFrameBuf();
bool GetVideoSize(int *w, int *h);
我们一跳一条的分析:
首先是initCheck,这个函数什么时候开始调用?
// create a frame buffer for software codecs
OSCL_EXPORT_REF bool AndroidSurfaceOutput::initCheck()
{
// initialize only when we have all the required parameters
//首先看看是不是视频相关的属性发生改变了,如果不是视频就不用管他,直接返回
if (!checkVideoParameterFlags())
return mInitialized;
// release resources if previously initialized 删除以前分配的缓存
closeFrameBuf();
// reset flags in case display format changes in the middle of a stream
更多精彩
赞助商链接