RK3288 android 5.1解决微信朋友圈视频不能播放问题

LOG:

02-22 17:50:01.931 E/ROCKCHIP_VIDEO_DECCONTROL( 223): event OMX_BUFFERFLAG_EOS!!!
02-22 17:50:01.932 D/ACodec ( 5155): [OMX.rk.video_decoder.hevc] saw output EOS
02-22 17:50:01.941 I/pv_hevcdec_api( 223): pv_rkhevcdecoder_flush out
02-22 17:50:01.950 E/SampleIterator( 5155): getChunkOffset return error
02-22 17:50:01.950 W/NuMediaExtractor( 5155): read on track 0 failed with error -1004
02-22 17:50:01.964 E/SampleIterator( 5155): getChunkOffset return error
02-22 17:50:01.964 W/NuMediaExtractor( 5155): read on track 0 failed with error -1004

===================================================

Patch:

 media/libstagefright/FileSource.cpp | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/media/libstagefright/FileSource.cpp b/media/libstagefright/FileSource.cpp
index 8005a05..73c476c 100644
--- a/media/libstagefright/FileSource.cpp
+++ b/media/libstagefright/FileSource.cpp
@@ -60,12 +60,34 @@ FileSource::FileSource(int fd, int64_t offset, int64_t length)
       mDrmBufOffset(0),
       mDrmBufSize(0),
       mDrmBuf(NULL){
-    CHECK(offset >= 0);
-    CHECK(length >= 0);
-    /*Begin: 2011120903153 added by g00166974 20110603 . */
-    /*Begin: 2011120903153 deleted by h00184579 20120325 for FD*/
-    //mFileName = NULL;
-    /*End: 2011120903153 deleted by h00184579 20120325 for FD*/
+    ALOGV("fd=%d, offset=%lld, length=%lld",
+            fd, (long long) offset, (long long) length);
+
+    if (mOffset < 0) {
+        mOffset = 0;
+    }
+    if (mLength < 0) {
+        mLength = 0;
+    }
+    if (mLength > INT64_MAX - mOffset) {
+        mLength = INT64_MAX - mOffset;
+    }
+    struct stat s;
+    if (fstat(fd, &s) == 0) {
+        if (mOffset > s.st_size) {
+            mOffset = s.st_size;
+            mLength = 0;
+        }
+        if (mOffset + mLength > s.st_size) {
+            mLength = s.st_size - mOffset;
+        }
+    }
+    if (mOffset != offset || mLength != length) {
+        ALOGW("offset/length adjusted from %lld/%lld to %lld/%lld",
+                (long long) offset, (long long) length,
+                (long long) mOffset, (long long) mLength);
+    }
+
     mIsDrmPreview = false;
     /*End: 2011120903153 added by g00166974 20110603 . */
 }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值