1、如果set surface 为null,那么audio下发的是FLUSH_CMD_NONE,
video是FLUSH_CMD_SHUTDOWN ,
NuPlayer::performDecoderFlush只会执行flushDecoder(false /* audio */, (video == FLUSH_CMD_SHUTDOWN)),此时会flush;
2、如果surface不为空, 那么audio下发的是FLUSH_CMD_FLUSH ,
video是FLUSH_CMD_SHUTDOWN ,此时audio和video都会触发flush。
3、Nuplayer reset时,执行的是mDeferredActions.push_back(
new FlushDecoderAction(
FLUSH_CMD_SHUTDOWN /* audio */,
FLUSH_CMD_SHUTDOWN /* video */));
audio 和 video都会flush
本文详细探讨了NuPlayer在不同场景下对音频和视频解码器的刷新策略。当setsurface为null时,音频仅执行FLUSH_CMD_NONE,而视频执行FLUSH_CMD_SHUTDOWN。若surface存在,则audio和video都会触发FLUSH_CMD_FLUSH。在Nuplayerreset时,audio和video都会执行FLUSH_CMD_SHUTDOWN进行彻底刷新。这些机制对于理解多媒体播放器的内部工作原理至关重要。
991

被折叠的 条评论
为什么被折叠?



