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

Android 下的PVPlayer的实现

 2010-09-10 01:08:00 来源:WEB开发网   
核心提示:aData, uint32 aDataLen, const PvmiMediaXferHeader& data_header_info){if (mSurface == 0) return PVMFFailure;if (++mFrameBufferIndex == kBufferCount) mFrameBuffer
aData, uint32 aDataLen, const PvmiMediaXferHeader& data_header_info)

{

if (mSurface == 0) return PVMFFailure;

if (++mFrameBufferIndex == kBufferCount) mFrameBufferIndex = 0;

iColorConverter->Convert(aData, static_cast(mFrameHeap->base()) + mFrameBuffers[mFrameBufferIndex]);

// post to SurfaceFlinger

mSurface->postBuffer(mFrameBuffers[mFrameBufferIndex]);

return PVMFSuccess;

}

这个函数其实很简单,直接把对应的数据转换到我们显示屏支持的,然后直接postBuffer即可显示。

看下面的一个函数:

// post the last video frame to refresh screen after pause

void AndroidSurfaceOutput::postLastFrame()

{

mSurface->postBuffer(mFrameBuffers[mFrameBufferIndex]);

}

把数据显示在屏幕上。在暂停的时候,这个函数就可以调用,我们的视频会不变。

OSCL_EXPORT_REF void AndroidSurfaceOutput::closeFrameBuf()

{

LOGV("closeFrameBuf");

if (!mInitialized) return;

mInitialized = false;

if (mSurface.get()) {

LOGV("unregisterBuffers");

mSurface->unregisterBuffers();

mSurface.clear();

}

// free frame buffers

LOGV("free frame buffers");

for (int i = 0; i < kBufferCount; i++) {

mFrameBuffers[i] = 0;

}

// free heaps

LOGV("free mFrameHeap");

mFrameHeap.clear();

// free color converter

if (iColorConverter != 0)

{

LOGV("free color converter");

delete iColorConverter;

iColorConverter = 0;

}

}

这个函数前面已经说过,是一个简单的清空操作。

OSCL_EXPORT_REF bool AndroidSurfaceOutput::GetVideoSize(int *w, int *h) {

*w = iVideoDisplayWidth;

*h = iVideoDisplayHeight;

return iVideoDisplayWidth != 0 && iVideoDisplayHeight != 0;

}

返回长宽。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jinlking/archive/2009/06/16/4273786.aspx

上一页  9 10 11 12 13 14 

Tags:Android PVPlayer 实现

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