From fe007cee79c88a084bef01333f86f5da5f3c143f Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期四, 22 十二月 2016 17:57:12 +0800 Subject: [PATCH] add padd pl emements --- RtspFace/PL_StaticJpegSource.h | 24 ++++++ RtspFace/main.cpp | 8 +- RtspFace/PL_StaticJpegSource.cpp | 86 +++++++++++++++++++++ RtspFace/PL_SensetimeFaceDetect.h | 24 ++++++ RtspFace/PL_AVFrameBGRA.cpp | 7 - RtspFace/PL_SensetimeFaceDetect.cpp | 81 ++++++++++++++++++++ 6 files changed, 221 insertions(+), 9 deletions(-) diff --git a/RtspFace/PL_AVFrameBGRA.cpp b/RtspFace/PL_AVFrameBGRA.cpp index e59a8a7..9329f14 100644 --- a/RtspFace/PL_AVFrameBGRA.cpp +++ b/RtspFace/PL_AVFrameBGRA.cpp @@ -14,13 +14,12 @@ uint8_t buffer[1920*1080*4]; size_t buffSize; size_t buffSizeMax; - - AVFormatContext* pAVFormatContext;//#todo delete + bool payError; PL_AVFrameBGRA_Internal() : buffSize(0), buffSizeMax(sizeof(buffer)), - pAVFormatContext(nullptr), payError(true) + payError(true) { } @@ -55,8 +54,6 @@ PL_AVFrameBGRA_Internal* in = (PL_AVFrameBGRA_Internal*)internal; in->reset(); - in->pAVFormatContext = avformat_alloc_context(); - return true; } diff --git a/RtspFace/PL_SensetimeFaceDetect.cpp b/RtspFace/PL_SensetimeFaceDetect.cpp new file mode 100644 index 0000000..a6fba62 --- /dev/null +++ b/RtspFace/PL_SensetimeFaceDetect.cpp @@ -0,0 +1,81 @@ +#include "PL_SensetimeFaceDetect.h" + +struct PL_SensetimeFaceDetect_Internal +{ + uint8_t buffer[1920*1080*4]; + size_t buffSize; + size_t buffSizeMax; + + bool payError; + + PL_SensetimeFaceDetect_Internal() : + buffSize(0), buffSizeMax(sizeof(buffer)), + payError(true) + { + } + + ~PL_SensetimeFaceDetect_Internal() + { + } + + void reset() + { + buffSize = 0; + payError = true; + } +}; + +PipeLineElem* create_PL_SensetimeFaceDetect() +{ + return new PL_SensetimeFaceDetect; +} + +PL_SensetimeFaceDetect::PL_SensetimeFaceDetect() : internal(new PL_SensetimeFaceDetect_Internal) +{ +} + +PL_SensetimeFaceDetect::~PL_SensetimeFaceDetect() +{ + delete (PL_SensetimeFaceDetect_Internal*)internal; + internal= nullptr; +} + +bool PL_SensetimeFaceDetect::init(void* args) +{ + PL_SensetimeFaceDetect_Internal* in = (PL_SensetimeFaceDetect_Internal*)internal; + in->reset(); + + return true; +} + +void PL_SensetimeFaceDetect::finit() +{ + PL_SensetimeFaceDetect_Internal* in = (PL_SensetimeFaceDetect_Internal*)internal; + +} + +bool PL_SensetimeFaceDetect::pay(const PipeMaterial& pm) +{ + PL_SensetimeFaceDetect_Internal* in = (PL_SensetimeFaceDetect_Internal*)internal; + + //in->buffer readly + + //static size_t f=0; + //char fname[50]; + //sprintf(fname, "%u.bgra", ++f); + //FILE * pFile = fopen (fname,"wb"); + //fwrite (in->buffer , sizeof(char), in->buffSize, pFile); + //fclose(pFile); + + return true; +} + +bool PL_SensetimeFaceDetect::gain(PipeMaterial& pm) +{ + PL_SensetimeFaceDetect_Internal* in = (PL_SensetimeFaceDetect_Internal*)internal; + + pm.buffer = in->buffer; + pm.buffSize = in->buffSize; + pm.former = this; + return true; +} diff --git a/RtspFace/PL_SensetimeFaceDetect.h b/RtspFace/PL_SensetimeFaceDetect.h new file mode 100644 index 0000000..f1cdbb1 --- /dev/null +++ b/RtspFace/PL_SensetimeFaceDetect.h @@ -0,0 +1,24 @@ +#ifndef _PL_PL_SENSETIMEFACEDETECT_H_ +#define _PL_PL_SENSETIMEFACEDETECT_H_ + +#include "PipeLine.h" + +class PL_SensetimeFaceDetect : public PipeLineElem +{ +public: + PL_SensetimeFaceDetect(); + virtual ~PL_SensetimeFaceDetect(); + + virtual bool init(void* args); + virtual void finit(); + + virtual bool pay(const PipeMaterial& pm); + virtual bool gain(PipeMaterial& pm); + +private: + void* internal; +}; + +PipeLineElem* create_PL_SensetimeFaceDetect(); + +#endif diff --git a/RtspFace/PL_StaticJpegSource.cpp b/RtspFace/PL_StaticJpegSource.cpp new file mode 100644 index 0000000..6ad3382 --- /dev/null +++ b/RtspFace/PL_StaticJpegSource.cpp @@ -0,0 +1,86 @@ +#include "PL_StaticJpegSource.h" + +extern "C" +{ + #include <libyuv.h> +} + +struct PL_StaticJpegSource_Internal +{ + uint8_t buffer[1920*1080*4]; + size_t buffSize; + size_t buffSizeMax; + + bool payError; + + PL_StaticJpegSource_Internal() : + buffSize(0), buffSizeMax(sizeof(buffer)), + payError(true) + { + } + + ~PL_StaticJpegSource_Internal() + { + } + + void reset() + { + buffSize = 0; + payError = true; + } +}; + +PipeLineElem* create_PL_StaticJpegSource() +{ + return new PL_StaticJpegSource; +} + +PL_StaticJpegSource::PL_StaticJpegSource() : internal(new PL_StaticJpegSource_Internal) +{ +} + +PL_StaticJpegSource::~PL_StaticJpegSource() +{ + delete (PL_StaticJpegSource_Internal*)internal; + internal= nullptr; +} + +bool PL_StaticJpegSource::init(void* args) +{ + PL_StaticJpegSource_Internal* in = (PL_StaticJpegSource_Internal*)internal; + in->reset(); + + return true; +} + +void PL_StaticJpegSource::finit() +{ + PL_StaticJpegSource_Internal* in = (PL_StaticJpegSource_Internal*)internal; + +} + +bool PL_StaticJpegSource::pay(const PipeMaterial& pm) +{ + PL_StaticJpegSource_Internal* in = (PL_StaticJpegSource_Internal*)internal; + + //in->buffer readly + + //static size_t f=0; + //char fname[50]; + //sprintf(fname, "%u.bgra", ++f); + //FILE * pFile = fopen (fname,"wb"); + //fwrite (in->buffer , sizeof(char), in->buffSize, pFile); + //fclose(pFile); + + return true; +} + +bool PL_StaticJpegSource::gain(PipeMaterial& pm) +{ + PL_StaticJpegSource_Internal* in = (PL_StaticJpegSource_Internal*)internal; + + pm.buffer = in->buffer; + pm.buffSize = in->buffSize; + pm.former = this; + return true; +} diff --git a/RtspFace/PL_StaticJpegSource.h b/RtspFace/PL_StaticJpegSource.h new file mode 100644 index 0000000..08aa5b8 --- /dev/null +++ b/RtspFace/PL_StaticJpegSource.h @@ -0,0 +1,24 @@ +#ifndef _PL_PL_StaticJpegSource_H_ +#define _PL_PL_StaticJpegSource_H_ + +#include "PipeLine.h" + +class PL_StaticJpegSource : public PipeLineElem +{ +public: + PL_StaticJpegSource(); + virtual ~PL_StaticJpegSource(); + + virtual bool init(void* args); + virtual void finit(); + + virtual bool pay(const PipeMaterial& pm); + virtual bool gain(PipeMaterial& pm); + +private: + void* internal; +}; + +PipeLineElem* create_PL_StaticJpegSource(); + +#endif diff --git a/RtspFace/main.cpp b/RtspFace/main.cpp index f8e9875..d25eddb 100644 --- a/RtspFace/main.cpp +++ b/RtspFace/main.cpp @@ -1,7 +1,7 @@ #include "PipeLine.h" #include "PL_RTSPClient.h" #include "PL_H264Decoder.h" -#include "PL_AVFrameBGRA.h" +#include "PL_AVFrameYUV420.h" #include <iostream> using namespace std; @@ -12,7 +12,7 @@ pipeLine.register_elem_creator("PL_RTSPClient", create_PL_RTSPClient); pipeLine.register_elem_creator("PL_H264Decoder", create_PL_H264Decoder); - pipeLine.register_elem_creator("PL_AVFrameBGRA", create_PL_AVFrameBGRA); + pipeLine.register_elem_creator("PL_AVFrameYUV420", create_PL_AVFrameYUV420); PL_RTSPClient* rtspClient = (PL_RTSPClient*)pipeLine.push_elem("PL_RTSPClient"); RTSPConfig rtspConfig; @@ -28,8 +28,8 @@ PL_H264Decoder* h264Decoder = (PL_H264Decoder*)pipeLine.push_elem("PL_H264Decoder"); h264Decoder->init(nullptr); - PL_AVFrameBGRA* avFrameBGRA = (PL_AVFrameBGRA*)pipeLine.push_elem("PL_AVFrameBGRA"); - avFrameBGRA->init(nullptr); + PL_AVFrameYUV420* avFrameYUV420 = (PL_AVFrameYUV420*)pipeLine.push_elem("PL_AVFrameYUV420"); + avFrameYUV420->init(nullptr); while(true) { -- Gitblit v1.8.0