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