FFMPlayer::start()会调用enqueueMessage(new MessageStart(NULL));创建类型为CMD_START的meg,然后将该meg放入mQueue。
根据meg的类型会调用FFMPlayer::doStart(),该函数会调用SAFE_CALL_STARTASYNC(mDecoderVideo);即DecoderVideo::startAsync()。
class DecoderVideo : public IDecoder
class IDecoder : public PlayerThread
DecoderVideo::startAsync()调用了IDecoder::startAsync();
IDecoder::startAsync()调用了PlayerThread::startAsync();
PlayerThread::startAsync()调用了startThread()
void PlayerThread::startAsync()
{
mThreadStatus = pthread_create(&mThread, NULL, startThread, this);//创建PlayerThread::mThread;//startThread线程
}
void* PlayerThread::startThread(void* ptr)
{
PlayerThread* thread