From c2a6b7ea3ce20037aaaccd132f8cb0a8d667dd2a Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期四, 03 八月 2017 09:48:01 +0800 Subject: [PATCH] split client server --- VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp | 95 ++++++++++++++++++++++++++--------------------- 1 files changed, 53 insertions(+), 42 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp index cbdfeb5..7c1adbd 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp @@ -9,6 +9,7 @@ #include <PL_BlockGrouping.h> #include <PL_ColorConv.h> #include <PL_AndroidMediaCodecEncoder.h> +#include <PL_RTSPServer.h> CameraWrapper::~CameraWrapper() { @@ -102,7 +103,8 @@ PipeLine::register_global_elem_creator("PL_Paint", create_PL_Paint); PipeLine::register_global_elem_creator("PL_V4L2Source", create_PL_V4L2Source); PipeLine::register_global_elem_creator("PL_BlockGrouping", create_PL_BlockGrouping); - //PipeLine::register_global_elem_creator("PL_AndroidMediaCodecEncoder", create_PL_AndroidMediaCodecEncoder); + PipeLine::register_global_elem_creator("PL_AndroidMediaCodecEncoder", create_PL_AndroidMediaCodecEncoder); + PipeLine::register_global_elem_creator("PL_RTSPServer", create_PL_RTSPServer); bool ret = initPl_DecoderPl(); if (!ret) @@ -151,49 +153,59 @@ return false; } - //PL_AndroidMediaCodecEncoder_Config amceCfg; - //amceCfg.ak_bit_rate = 5000000; // 512KB - //amceCfg.ak_color_format = 21; // COLOR_FormatYUV420SemiPlanar; - //amceCfg.ak_frame_rate = 25; - //amceCfg.ak_height = 480; - //amceCfg.ak_i_frame_interval = 20; - //amceCfg.ak_mime = "video/avc"; - //amceCfg.ak_width = 640; - //PL_AndroidMediaCodecEncoder* plAMCE = (PL_AndroidMediaCodecEncoder*)pipeLineRender->push_elem("PL_AndroidMediaCodecEncoder"); - //ret = plAMCE->init(&amceCfg); + PL_AndroidMediaCodecEncoder_Config amceCfg; + amceCfg.ak_bit_rate = 5000000; // 512KB + amceCfg.ak_color_format = 21; // COLOR_FormatYUV420SemiPlanar; + amceCfg.ak_frame_rate = 25; + amceCfg.ak_height = 480; + amceCfg.ak_i_frame_interval = 20; + amceCfg.ak_mime = "video/avc"; + amceCfg.ak_width = 640; + PL_AndroidMediaCodecEncoder* plAMCE = (PL_AndroidMediaCodecEncoder*)pipeLineRender->push_elem("PL_AndroidMediaCodecEncoder"); + ret = plAMCE->init(&amceCfg); + if (!ret) + { + LOG_ERROR << "pipeLineRender.plAMCE init error" << LOG_ENDL; + return false; + } + + PL_RTSPServer* plRtspServer = (PL_RTSPServer*)pipeLineRender->push_elem("PL_RTSPServer"); + RTSPServerConfig rtspServerConfig; + //rtspServerConfig.syncDeliverFrame = false; + ret = plRtspServer->init(&rtspServerConfig); + if (!ret) + { + LOG_ERROR << "pipeLineRender.plRtspServer init error" << LOG_ENDL; + return false; + } + + //PL_ColorConv_Config PLColorConvCfg; + //PL_ColorConv* plColorConv = (PL_ColorConv*)pipeLineRender->push_elem("PL_ColorConv"); + //ret = plColorConv->init(&PLColorConvCfg); + //if (!ret) + //{ + // LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL; + // return false; + //} + + //PL_Paint_Config plPaintCfg; + //plPaintCfg.fontPath = fontPath; + //plPaintCfg.plplCtx = &plplContext; + //PL_Paint* plPaint = (PL_Paint*)pipeLineRender->push_elem("PL_Paint"); + //ret = plPaint->init(&plPaintCfg); //if (!ret) //{ - // LOG_ERROR << "pipeLineRender.plAMCE init error" << LOG_ENDL; + // LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL; // return false; //} - PL_ColorConv_Config PLColorConvCfg; - PL_ColorConv* plColorConv = (PL_ColorConv*)pipeLineRender->push_elem("PL_ColorConv"); - ret = plColorConv->init(&PLColorConvCfg); - if (!ret) - { - LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL; - return false; - } - - PL_Paint_Config plPaintCfg; - plPaintCfg.fontPath = fontPath; - plPaintCfg.plplCtx = &plplContext; - PL_Paint* plPaint = (PL_Paint*)pipeLineRender->push_elem("PL_Paint"); - ret = plPaint->init(&plPaintCfg); - if (!ret) - { - LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL; - return false; - } - - PL_AndroidSurfaceViewRender* asvRender = (PL_AndroidSurfaceViewRender*)pipeLineRender->push_elem("PL_AndroidSurfaceViewRender"); - ret = asvRender->init(&asvrConfig); - if (!ret) - { - LOG_ERROR << "pipeLineRender.asvRender init error" << LOG_ENDL; - return false; - } + //PL_AndroidSurfaceViewRender* asvRender = (PL_AndroidSurfaceViewRender*)pipeLineRender->push_elem("PL_AndroidSurfaceViewRender"); + //ret = asvRender->init(&asvrConfig); + //if (!ret) + //{ + // LOG_ERROR << "pipeLineRender.asvRender init error" << LOG_ENDL; + // return false; + //} } return true; @@ -461,9 +473,7 @@ //#debug //test_paint(cameraWrapper); - cameraWrapper.pipeLineRender->pipe(&pm);//#todo - //if (cameraWrapper.pipeLineRender->check_pipe_complete(last = cameraWrapper.pipeLineRender->pipe(&pm))) - // last->gain(pm); + cameraWrapper.pipeLineRender->pipe(&pm); } LOG_INFO << "CameraWrapper::decoder_thd stop, ret=" << LOG_ENDL; @@ -478,6 +488,7 @@ { sleep(10); + continue;//#todo if (time(nullptr) - cameraWrapper.lastAliveTime > 20) { PL_RTSPClient* rtspClient = (PL_RTSPClient*)cameraWrapper.pipeLineDecoderDetector->at(0); -- Gitblit v1.8.0