From 017b7eb736ccc53c52f81486be8196d7fafc3289 Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期三, 28 十二月 2016 10:31:42 +0800 Subject: [PATCH] add MaterialBuffer --- RtspFace/PL_RTSPClient.cpp | 27 +++++++++++++++------------ 1 files changed, 15 insertions(+), 12 deletions(-) diff --git a/RtspFace/PL_RTSPClient.cpp b/RtspFace/PL_RTSPClient.cpp index 41dad6a..71869db 100644 --- a/RtspFace/PL_RTSPClient.cpp +++ b/RtspFace/PL_RTSPClient.cpp @@ -1,9 +1,10 @@ #include "PL_RTSPClient.h" +#include "MaterialBuffer.h" #include <pthread.h> void rtsp_client_sdp_callback(void* arg, const char* val); void rtsp_client_fmtp_callback(void* arg, const char* val); -void rtsp_client_frame_callback(void* arg, uint8_t* buffer, size_t buffSize); +void rtsp_client_frame_callback(void* arg, uint8_t* buffer, size_t buffSize, timeval presentationTime); void rtsp_client_continue_callback(void* arg); //struct RTSPConfig; #include "live555/testProgs/testRTSPClient.hpp" @@ -17,14 +18,13 @@ pthread_mutex_t* frame_mutex; pthread_mutex_t* continue_mutex; - uint8_t* lastBuffer; - size_t lastBuffSize; + MB_Frame lastFrame; RTSPClient_Internal() : rtspConfig(), live_daemon_thid(0), eventLoopWatchVariable(0), live_daemon_running(false), frame_mutex(new pthread_mutex_t), continue_mutex(new pthread_mutex_t), - lastBuffer(nullptr), lastBuffSize(0) + lastFrame() { pthread_mutex_init(frame_mutex, NULL); pthread_mutex_init(continue_mutex, NULL); @@ -75,8 +75,8 @@ continue_mutex = new pthread_mutex_t; pthread_mutex_init(continue_mutex, NULL); - lastBuffer = nullptr; - lastBuffSize = 0; + MB_Frame _lastFrame; + lastFrame = _lastFrame; } }; @@ -178,8 +178,9 @@ return false; } - pm.buffer = in->lastBuffer; - pm.buffSize = in->lastBuffSize; + pm.type = PipeMaterial::PMT_FRAME; + pm.buffer = (uint8_t*)(&(in->lastFrame)); + pm.buffSize = sizeof(in->lastFrame); pm.former = this; return true; @@ -211,17 +212,19 @@ client->manager->set_global_param(PLGP_RTSP_FMTP, val); } -void rtsp_client_frame_callback(void* arg, uint8_t* buffer, size_t buffSize) +void rtsp_client_frame_callback(void* arg, uint8_t* buffer, size_t buffSize, timeval presentationTime) { if (arg == nullptr || buffer == nullptr || buffSize == 0) return; PL_RTSPClient* client = (PL_RTSPClient*)arg; RTSPClient_Internal* in = (RTSPClient_Internal*)(client->internal); - - in->lastBuffer = buffer; - in->lastBuffSize = buffSize; + in->lastFrame.type = MB_Frame::MBFT_H264_NALU; + in->lastFrame.buffer = buffer; + in->lastFrame.buffSize = buffSize; + in->lastFrame.pts = presentationTime; + int ret = pthread_mutex_unlock(in->frame_mutex); if(ret != 0) { -- Gitblit v1.8.0