From 40e6254a50b608bc59fe0304b85d4a8a68ee66af Mon Sep 17 00:00:00 2001 From: ChenHengming Date: Wed, 21 Oct 2015 14:33:28 +0000 Subject: [PATCH] [vpu_api_legacy]: fix empty buffer on info change frame git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@411 6e48237b-75ef-9749-8fc9-41990f28c85a --- mpp/legacy/vpu_api_legacy.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/mpp/legacy/vpu_api_legacy.cpp b/mpp/legacy/vpu_api_legacy.cpp index b459afb6..f484a64d 100644 --- a/mpp/legacy/vpu_api_legacy.cpp +++ b/mpp/legacy/vpu_api_legacy.cpp @@ -139,21 +139,23 @@ RK_S32 VpuApi:: decode_getoutframe(DecoderOut_t *aDecOut) vframe->ShowTime.TimeHigh = (RK_U32)(pts >> 32); vframe->ShowTime.TimeLow = (RK_U32)pts; buf = mpp_frame_get_buffer(mframe); - ptr = mpp_buffer_get_ptr(buf); - fd = mpp_buffer_get_fd(buf); - vframe->FrameBusAddr[0] = fd; - vframe->FrameBusAddr[1] = fd; - vframe->vpumem.vir_addr = (RK_U32*)ptr; - frame_count++; + if (buf) { + ptr = mpp_buffer_get_ptr(buf); + fd = mpp_buffer_get_fd(buf); + vframe->FrameBusAddr[0] = fd; + vframe->FrameBusAddr[1] = fd; + vframe->vpumem.vir_addr = (RK_U32*)ptr; + frame_count++; #ifdef DUMP_YUV - if (frame_count > 350) { - fwrite(ptr, 1, vframe->FrameWidth * vframe->FrameHeight * 3 / 2, fp); - fflush(fp); - } + if (frame_count > 350) { + fwrite(ptr, 1, vframe->FrameWidth * vframe->FrameHeight * 3 / 2, fp); + fflush(fp); + } #endif - vframe->vpumem.phy_addr = fd; - vframe->vpumem.size = vframe->FrameWidth * vframe->FrameHeight * 3 / 2; - vframe->vpumem.offset = (RK_U32*)buf; + vframe->vpumem.phy_addr = fd; + vframe->vpumem.size = vframe->FrameWidth * vframe->FrameHeight * 3 / 2; + vframe->vpumem.offset = (RK_U32*)buf; + } if (mpp_frame_get_eos(mframe)) { aDecOut->nFlags = VPU_API_EOS_STREAM_REACHED; }