From 51147a836955ed6ff7c111bbce89e244f0c3f27f Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期四, 17 八月 2017 16:20:05 +0800
Subject: [PATCH] aaaaa

---
 RtspFace/PL_RTSPServer2.cpp                  |    3 ++-
 RtspFace/PL_RTSPClient.cpp                   |    7 +++++++
 RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp |   21 +++++++++++++++++++--
 3 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp b/RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp
index c7e624e..79a8a46 100644
--- a/RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp
+++ b/RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp
@@ -38,12 +38,15 @@
 
 	AMediaCodec* codec;
 
+	bool auxIsSet;
+
 	PL_AMCD_Internal() : 
 		buffSize(0), buffSizeMax(sizeof(buffer)), 
 		inputFrameCount(0), lastOutputBuffIdx(-1), 
 		lastMbfBuffIdx(), lastMbfBuffer(),
 		config(), 
-		codec(nullptr)
+		codec(nullptr),
+		auxIsSet(false)
 	{
 	}
 	
@@ -193,7 +196,21 @@
 	
 	if (pm.buffer == nullptr)
 		return false;
-	
+
+	if (!in->auxIsSet)
+	{
+		//#todo
+		// find PLGP_DEC_SPS_B64 PLGP_DEC_PPS_B64 in this->manager else nothing
+		// base64 decode
+
+		//AMediaFormat* format = AMediaCodec_getOutputFormat(in->codec);
+		//AMediaFormat_setBuffer(format, "csd-1", pps, sizeof(pps)); // pps
+		//AMediaCodec_setParameters
+		// #todo delete format
+
+		in->auxIsSet = true;
+	}
+
 	MB_Frame* frame = (MB_Frame*)pm.buffer;
 	if (frame->type != MB_Frame::MBFT_H264_NALU)
 	{
diff --git a/RtspFace/PL_RTSPClient.cpp b/RtspFace/PL_RTSPClient.cpp
index 7bcf9d9..c2bd969 100644
--- a/RtspFace/PL_RTSPClient.cpp
+++ b/RtspFace/PL_RTSPClient.cpp
@@ -249,6 +249,13 @@
 	sprintf(tmp, "%u", param.height); client->manager->set_param(PLGP_RTSP_HEIGHT, std::string(tmp));
 	sprintf(tmp, "%u", param.fps); client->manager->set_param(PLGP_RTSP_FPS, std::string(tmp));
 
+	if (param.fmtp.find_first_of(',') != std::string::npos)
+	{
+		//#todo
+		// split fmpt to base64 of sps,pps
+		// set to PLGP_DEC_SPS_B64 PLGP_DEC_PPS_B64
+	}
+
 	/*
 	std::string fmtp(client->manager->get_param(PLGP_RTSP_FMTP));
 	if (fmtp.empty())
diff --git a/RtspFace/PL_RTSPServer2.cpp b/RtspFace/PL_RTSPServer2.cpp
index b082afe..16da9fa 100644
--- a/RtspFace/PL_RTSPServer2.cpp
+++ b/RtspFace/PL_RTSPServer2.cpp
@@ -326,7 +326,8 @@
 
 	//static size_t f = 0;
 	//static FILE *pFile = fopen("/data/aa.264", "wb");
-	//fwrite(qbuff->buffer, sizeof(char), frame->buffSize, pFile);
+	//fwrite(qbuff->buffer, sizeof(char), qbuff->buffSize, pFile);
+	//fflush(pFile);
 	//if (++f > 400){
 	//	fclose(pFile);
 	//	exit(0);

--
Gitblit v1.8.0