2.5 Android NuPlayer流程—-视频和音频的输出

  • A+
所属分类:安卓 音视频

那么这些组件都准备好了以后是怎么工作的细节,就太多了,比如怎么解,怎么送数据等等。我们就跳过这些细节,直接讲输出。就假装已经懂得了最后解出了数据,在NuPlayer里面怎么输出。

在Renderer里面有两个函数专门处理音频的输出和视频的输出
- onDrainAudioQueue
- onDrainVideoQueue

    bool NuPlayer::Renderer::onDrainAudioQueue() {
    while (!mAudioQueue.empty()) {
            QueueEntry *entry = &*mAudioQueue.begin();
            written = mAudioSink->write(entry->mBuffer->data() + entry->mOffset, copy, false /* blocking */);
            mAudioQueue.erase(mAudioQueue.begin());
    ...
    }
    void NuPlayer::Renderer::onDrainVideoQueue() {
    ...
        QueueEntry *entry = &*mVideoQueue.begin();
        ...//伪代码
        mSoftRenderer = new SoftwareRenderer(mSurface, mRotationDegrees);
        mSoftRenderer->render(
                        info->mData->data(), info->mData->size(),
                        mediaTimeUs, renderTimeNs, NULL, info->mFormat);
        mVideoQueue.erase(mVideoQueue.begin());
    ...
    }

 

2.0 Android NuPlayer流程简介
2.1 Android NuPlayer流程 —进程启动
2.2 Android NuPlayer流程—-MediaPlayer的创建
2.3 Android NuPlayer流程 -MediaPlayer的setDataSource流程
2.4 Android NuPlayer流程—-Nuplayer的工作原理
2.5 Android NuPlayer流程—-视频和音频的输出

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: