diff --git a/mediaPlayer/SuperMediaPlayer.cpp b/mediaPlayer/SuperMediaPlayer.cpp index 5b697fd88..f50d141f4 100644 --- a/mediaPlayer/SuperMediaPlayer.cpp +++ b/mediaPlayer/SuperMediaPlayer.cpp @@ -1928,7 +1928,7 @@ namespace Cicada { duration = getPCMFrameDuration(avafFrame->ToAVFrame()); } - if (mFrameCb) { + if (mFrameCb && !mSecretPlayBack) { mFrameCb(mFrameCbUserData, avafFrame); } @@ -2136,7 +2136,7 @@ namespace Cicada { AF_LOGW("drop frame,master played time is %lld,video pts is %lld\n", masterPlayedTime, videoPts); videoFrame->setDiscard(true); - if (mFrameCb) { + if (mFrameCb && !mSecretPlayBack) { mFrameCb(mFrameCbUserData, videoFrame.get()); } VideoRenderCallback(this, videoPts, nullptr); @@ -2231,7 +2231,7 @@ namespace Cicada { void SuperMediaPlayer::SendVideoFrameToRender(unique_ptr frame, bool valid) { - if (mFrameCb) { + if (mFrameCb && !mSecretPlayBack) { bool rendered = mFrameCb(mFrameCbUserData, frame.get()); if (rendered) { VideoRenderCallback(this, frame->getInfo().pts, nullptr); @@ -2453,6 +2453,12 @@ namespace Cicada { return ret; } + // FIXME: transfer to frame + if (pMedia_Frame->isProtected() && !mSecretPlayBack) { + AF_LOGI("SecretPlayBack\n"); + mSecretPlayBack = true; + } + pFrame = pMedia_Frame.get(); mUtil.notifyRead(MediaPlayerUtil::readEvent_Got); @@ -2512,6 +2518,8 @@ namespace Cicada { if (pFrame->getInfo().streamIndex == mCurrentVideoIndex || pFrame->getInfo().streamIndex == mWillChangedVideoStreamIndex) { + + // FIXME: return non slice nal only when protected packet if (mMediaFrameCb) { // TODO: change to std::unique_ptr mMediaFrameCb(mMediaFrameCbArg, pMedia_Frame, ST_TYPE_VIDEO); @@ -2606,7 +2614,7 @@ namespace Cicada { } } - if (mMediaFrameCb) { + if (mMediaFrameCb && !pMedia_Frame->isProtected()) { // TODO: change to std::unique_ptr mMediaFrameCb(mMediaFrameCbArg, pMedia_Frame, ST_TYPE_AUDIO); } @@ -2614,7 +2622,7 @@ namespace Cicada { mBufferController.AddPacket(move(pMedia_Frame), BUFFER_TYPE_AUDIO); } else if (pFrame->getInfo().streamIndex == mCurrentSubtitleIndex || pFrame->getInfo().streamIndex == mWillChangedSubtitleStreamIndex) { - if (mMediaFrameCb) { + if (mMediaFrameCb && !pMedia_Frame->isProtected()) { // TODO: change to std::unique_ptr mMediaFrameCb(mMediaFrameCbArg, pMedia_Frame, ST_TYPE_SUB); } @@ -3288,6 +3296,8 @@ namespace Cicada { if (mVideoRender) { mVideoRender->setSpeed(1); } + + mSecretPlayBack = false; } int SuperMediaPlayer::GetCurrentStreamIndex(StreamType type) diff --git a/mediaPlayer/SuperMediaPlayer.h b/mediaPlayer/SuperMediaPlayer.h index 7c4f4d9e1..cce9ad9af 100644 --- a/mediaPlayer/SuperMediaPlayer.h +++ b/mediaPlayer/SuperMediaPlayer.h @@ -485,6 +485,8 @@ namespace Cicada { bool dropLateVideoFrames = false; bool waitingForStart = false; bool mBRendingStart {false}; + bool mSecretPlayBack{false}; + private: bool mAutoPlay = false;