From 53f69c194d7ae8105b4c6d0c9901eb96281c7bf9 Mon Sep 17 00:00:00 2001 From: James Dong Date: Fri, 29 Jun 2012 18:39:46 -0700 Subject: Fixed a video editor crash due to "divided by 0" The crash was because the video sample was too short and has 0 duration (or a single frame video). This patch is just simply not to support 0 duration video for editing. Change-Id: I2c7ff78b1e884a4d3a5051f87cdbeeb5dc3078a6 related-to-bug: 6670656 --- .../vss/stagefrightshells/src/VideoEditor3gpReader.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'libvideoeditor') diff --git a/libvideoeditor/vss/stagefrightshells/src/VideoEditor3gpReader.cpp b/libvideoeditor/vss/stagefrightshells/src/VideoEditor3gpReader.cpp index 5026073..f735c0b 100755 --- a/libvideoeditor/vss/stagefrightshells/src/VideoEditor3gpReader.cpp +++ b/libvideoeditor/vss/stagefrightshells/src/VideoEditor3gpReader.cpp @@ -1483,11 +1483,15 @@ M4OSA_ERR VideoEditor3gpReader_getNextStreamHandler(M4OSA_Context context, (int32_t*)&(pVideoStreamHandler->m_videoHeight)); (*pStreamHandler) = (M4_StreamHandler*)(pVideoStreamHandler); - meta->findInt64(kKeyDuration, - (int64_t*)&(Duration)); - ((*pStreamHandler)->m_duration) = - (int32_t)((Duration)/1000); // conversion to mS + meta->findInt64(kKeyDuration, (int64_t*)&(Duration)); + ((*pStreamHandler)->m_duration) = (int32_t)((Duration)/1000); // conversion to mS pC->mMaxDuration = ((*pStreamHandler)->m_duration); + if (pC->mMaxDuration == 0) { + ALOGE("Video is too short: %lld Us", Duration); + delete pVideoStreamHandler; + pVideoStreamHandler = NULL; + return M4ERR_PARAMETER; + } ALOGV("VideoEditor3gpReader_getNextStreamHandler m_duration %d", (*pStreamHandler)->m_duration); -- cgit v1.1