Android 下的PVPlayer的实现
2010-09-10 01:08:00 来源:WEB开发网static void run_prepare(status_t s, void *cookie, bool cancelled);
和几个私有成员;
PlayerDriver* mPlayerDriver; //整个pv的播放引擎
char * mDataSourcePath;//数据源
bool mIsDataSourceSet;//一个数据源的标识符
sp
int mSharedFd; //这个估计是文件句柄
status_t mInit; //一个状态标志
int mDuration; //文件播放长度
我们来看实现:
// ----------------------------------------------------------------------------
// implement the Packet Video player
// ----------------------------------------------------------------------------
PVPlayer::PVPlayer()
{
LOGV("PVPlayer constructor");
mDataSourcePath = NULL;
mSharedFd = -1;
mIsDataSourceSet = false;
mDuration = -1;
mPlayerDriver = NULL;
LOGV("construct PlayerDriver");
mPlayerDriver = new PlayerDriver(this);
LOGV("send PLAYER_SETUP");
mInit = mPlayerDriver->enqueueCommand(new PlayerSetup(0,0));//给他一个初始化的命令放在队列里面
}
status_t PVPlayer::initCheck()
{
return mInit;
}没有什么工作,初始化工作其实也可以放在这里的。
PVPlayer::~PVPlayer()
{
LOGV("PVPlayer destructor");
if (mPlayerDriver != NULL) {
PlayerQuit quit = PlayerQuit(0,0);//发送一个退出的命令
mPlayerDriver->enqueueCommand(&quit); // will wait on mSyncSem, signaled by player thread
}
free(mDataSourcePath); //如果文件句柄存在的话,就关闭
if (mSharedFd >= 0) {
close(mSharedFd);
}
}
status_t PVPlayer::setDataSource(const char *url)
{
LOGV("setDataSource(%s)", url);
if (mSharedFd >= 0) {
更多精彩
赞助商链接