From 0c3bba1a4d7b652807dfb74e1a31012802bd2987 Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期四, 17 八月 2017 12:26:55 +0800
Subject: [PATCH] aaaaa

---
 RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp |   28 ++++++++++++++++++++--------
 1 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp b/RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp
index ac3c141..c7e624e 100644
--- a/RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp
+++ b/RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp
@@ -134,12 +134,13 @@
 
         AMediaFormat_setBuffer(format, "csd-0", sps.sPropBytes, sps.sPropLength); // sps
         AMediaFormat_setBuffer(format, "csd-1", pps.sPropBytes, pps.sPropLength); // pps
-
-        //uint8_t sps[] = {0x0,0x0,0x0,0x1, 0x67, 0x42, 0x00, 0x2A, 0x95, 0xA8, 0x1E, 0x00, 0x89, 0xF9, 0x61, 0x00, 0x00, 0x07, 0x08, 0x00, 0x01, 0x5F, 0x90, 0x04};
-        //uint8_t pps[] = {0x0,0x0,0x0,0x1, 0x68, 0xCE, 0x3C, 0x80};
-        //AMediaFormat_setBuffer(format, "csd-0", sps, sizeof(sps)); // sps
-        //AMediaFormat_setBuffer(format, "csd-1", pps, sizeof(pps)); // pps
     */
+
+	// J0LgKI1oCgPaEAAAAwAQAAADAoDxB6gA,KM4ySA==
+	//uint8_t sps[] = {0x27,0x42,0xe0,0x28,0x8d,0x68,0x0a,0x03,0xda,0x10,0x00,0x00,0x03,0x00,0x10,0x00,0x00,0x03,0x02,0x80,0xf1,0x07,0xa8,0x00};
+	//uint8_t pps[] = {0x28,0xce,0x32,0x48};
+	//AMediaFormat_setBuffer(format, "csd-0", sps, sizeof(sps)); // sps
+	//AMediaFormat_setBuffer(format, "csd-1", pps, sizeof(pps)); // pps
 
     // should like:
     // mime: string(video/avc), durationUs: int64(10000000), width: int32(480), height: int32(360), max-input-size: int32(55067), csd-0: data, csd-1: data}
@@ -172,8 +173,11 @@
 void PL_AndroidMediaCodecDecoder::finit()
 {
 	PL_AMCD_Internal* in = (PL_AMCD_Internal*)internal;
-	//todo release codec
-	// call AMediaCodec_stop
+
+	AMediaCodec_stop(in->codec);
+	AMediaCodec_delete(in->codec);
+
+	in->reset();
 }
 
 bool PL_AndroidMediaCodecDecoder::pay(const PipeMaterial& pm)
@@ -196,6 +200,10 @@
 		LOG_ERROR << "Only support MBFT_H264_NALU" << std::endl;
 		return false;
 	}
+
+	//static FILE *pFile = fopen("/data/bb.264", "wb");
+	//fwrite(frame->buffer, sizeof(char), frame->buffSize, pFile);
+	//fflush(pFile);
 
     ssize_t bufidx = AMediaCodec_dequeueInputBuffer(in->codec, 2000);
     LOGP(DEBUG, "input buffer bufidx=%zd, inputFrameCount=%d", bufidx, in->inputFrameCount++);
@@ -340,7 +348,11 @@
                 in->lastMbfBuffer.buffSize = in->buffSize;
                 in->lastMbfBuffer.width = in->config.ak_width;
                 in->lastMbfBuffer.height = in->config.ak_height;
-                microseconds_to_timeval(info.presentationTimeUs, in->lastMbfBuffer.pts);
+
+				if (in->config.ptsUseAbsoluteTime)
+					gettimeofday(&(in->lastMbfBuffer.pts), nullptr);
+				else
+					microseconds_to_timeval(info.presentationTimeUs, in->lastMbfBuffer.pts);
 
                 //if (in->lastMbfBuffer.buffSize > 10)
 				//{

--
Gitblit v1.8.0