无音频时生成静音音频,防止播放器加载画面太慢

修复MAC下SDL必须在主线程渲染的问题
This commit is contained in:
xiongziliang
2018-06-30 23:02:16 +08:00
parent ae5482ec61
commit 58b58418d6
5 changed files with 82 additions and 10 deletions

View File

@@ -73,16 +73,29 @@ int main(int argc, char *argv[]) {
H264Decoder decoder;
YuvDisplayer displayer;
player->setOnVideoCB([&](const H264Frame &frame) {
#ifndef __MACH__
SDLDisplayerHelper::Instance().doTask([&, frame]() {
AVFrame *pFrame = nullptr;
bool flag = decoder.inputVideo((unsigned char *) frame.data.data(), frame.data.size(), frame.timeStamp,
&pFrame);
if (flag) {
//DebugL << pFrame->pkt_pts;
displayer.displayYUV(pFrame);
EventPoller::Instance().sync([&](){
displayer.displayYUV(pFrame);
});
}
return true;
});
#else
AVFrame *pFrame = nullptr;
bool flag = decoder.inputVideo((unsigned char *) frame.data.data(), frame.data.size(), frame.timeStamp,
&pFrame);
if (flag) {
//DebugL << pFrame->pkt_pts;
displayer.displayYUV(pFrame);
}
#endif
});
EventPoller::Instance().runLoop();