From a88fc40a16cefc8248baa4b6aab7b7577e0ba4cc Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期三, 19 七月 2017 16:42:37 +0800
Subject: [PATCH] code review

---
 RtspFace/PL_Paint.cpp |  227 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 121 insertions(+), 106 deletions(-)

diff --git a/RtspFace/PL_Paint.cpp b/RtspFace/PL_Paint.cpp
index daaca0d..6f724ff 100644
--- a/RtspFace/PL_Paint.cpp
+++ b/RtspFace/PL_Paint.cpp
@@ -7,6 +7,12 @@
 #include <opencv2/core/mat.hpp>
 #include <opencv2/imgproc.hpp>
 
+~PLPLContext::PLPLContext()
+{
+	delete (CvxText*)cvxText;
+	cvxText = nullptr;
+}
+
 struct PL_Paint_Internal
 {
 	uint8_t* buffer;
@@ -21,7 +27,7 @@
 
 	PL_Paint_Internal() : 
 		buffer(nullptr), buffSize(), config(), pmList(),
-        lastMbfBuffOrigin(), lastMbfBuffCopy(),
+		lastMbfBuffOrigin(), lastMbfBuffCopy(),
 		payError(true)
 	{
 	}
@@ -79,20 +85,17 @@
 		in->config = *config;
 	}
 
-    if(in->config.fontPath.empty())
-    {
-        LOG_ERROR << "fontPath is null!" << LOG_ENDL;
-        return false;
-    }
-    if(in->config.plplCtx->cvxText != nullptr)
-    {
-        delete(in->config.plplCtx->cvxText);
-    }
-    CvxText* cvxText =new CvxText(in->config.fontPath.c_str());
-    in->config.plplCtx->cvxText = cvxText;
-    cvxText->setBackColor(cvScalar(128, 33, 14));
-    CvScalar font = cvScalar(40,1,0.2,1);
-    cvxText->setFont(0, &font);
+	if(in->config.fontPath.empty())
+	{
+		LOG_ERROR << "fontPath is null!" << LOG_ENDL;
+		return false;
+	}
+
+	if(in->config.plplCtx->cvxText != nullptr)
+	{
+		delete (CvxText*)in->config.plplCtx->cvxText;
+	}
+
 	return true;
 }
 
@@ -121,7 +124,7 @@
 
 	// void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
 
-    const PLGH_Color_YUV yuvColor(plplCtx->color_front.toY(), plplCtx->color_front.toU(), plplCtx->color_front.toV());
+	const PLGH_Color_YUV yuvColor(plplCtx->color_front.toY(), plplCtx->color_front.toU(), plplCtx->color_front.toV());
 
 	cv::rectangle(yMat, cv::Point(LTX, LTY), cv::Point(RBX, RBY), CV_RGB(yuvColor.Y, yuvColor.Y, yuvColor.Y), 4);
 	cv::rectangle(uMat, cv::Point(MH_SUBSAMPLE1(LTX, 2), MH_SUBSAMPLE1(LTY, 2)), cv::Point(MH_SUBSAMPLE1(RBX, 2), MH_SUBSAMPLE1(RBY, 2)), CV_RGB(yuvColor.U, yuvColor.U, yuvColor.U), 2);
@@ -145,8 +148,8 @@
 
 	// void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
 
-    const uint16_t Y =  plplCtx->color_front.toY();
-    const uint16_t UV = plplCtx->color_front.toUV();
+	const uint16_t Y =  plplCtx->color_front.toY();
+	const uint16_t UV = plplCtx->color_front.toUV();
 
 	cv::rectangle(yMat, cv::Point(LTX, LTY), cv::Point(RBX, RBY), CV_RGB(Y, Y, Y), 4);
 	cv::rectangle(uvMat, cv::Point(MH_SUBSAMPLE1(LTX, 2), MH_SUBSAMPLE1(LTY, 2)), cv::Point(MH_SUBSAMPLE1(RBX, 2), MH_SUBSAMPLE1(RBY, 2)), CV_RGB(UV, UV, UV), 2);
@@ -175,109 +178,121 @@
 	const uint16_t Y =  plplCtx->color_front.toY();
 	const uint16_t UV = plplCtx->color_front.toUV();
 
-    cv::putText(yMat, TXT, cv::Point(LTX, LTY), CV_FONT_HERSHEY_COMPLEX, 1, CV_RGB(Y, Y, Y));
-    cv::putText(uvMat, TXT, cv::Point(MH_SUBSAMPLE1(LTX, 2), MH_SUBSAMPLE1(LTY, 2)), CV_FONT_HERSHEY_COMPLEX, 0.5, CV_RGB(UV, UV, UV));
+	cv::putText(yMat, TXT, cv::Point(LTX, LTY), CV_FONT_HERSHEY_COMPLEX, 1, CV_RGB(Y, Y, Y));
+	cv::putText(uvMat, TXT, cv::Point(MH_SUBSAMPLE1(LTX, 2), MH_SUBSAMPLE1(LTY, 2)), CV_FONT_HERSHEY_COMPLEX, 0.5, CV_RGB(UV, UV, UV));
 }
+
 bool plplDraw_WText_NV12(PLPLContext* plplCtx, MB_Frame* paintMb, int& paramOffset)
 {
-    int LTX = plplCtx->params[paramOffset + 0].val_i;
-    int LTY = plplCtx->params[paramOffset + 1].val_i;
-    const char* TXT = plplCtx->params[paramOffset + 2].val_s;
-    paramOffset += 3;
+	int LTX = plplCtx->params[paramOffset + 0].val_i;
+	int LTY = plplCtx->params[paramOffset + 1].val_i;
+	const char* WTXT = plplCtx->params[paramOffset + 2].val_s;
+	paramOffset += 3;
 
-    int src_width = paintMb->width;
-    int src_height = paintMb->height;
-    uint8_t* src_y = (uint8_t*)(paintMb->buffer);
-    uint8_t* src_uv = (uint8_t*)(src_y + (src_height * src_width));
-    cv::Mat yMat(cv::Size(src_width, src_height), CV_8UC1, src_y);
-    cv::Mat uvMat(cv::Size(MH_SUBSAMPLE1(src_width, 2), MH_SUBSAMPLE1(src_height, 2)), CV_16UC1, src_uv);
+	int src_width = paintMb->width;
+	int src_height = paintMb->height;
+	uint8_t* src_y = (uint8_t*)(paintMb->buffer);
+	uint8_t* src_uv = (uint8_t*)(src_y + (src_height * src_width));
+	cv::Mat yMat(cv::Size(src_width, src_height), CV_8UC1, src_y);
+	cv::Mat uvMat(cv::Size(MH_SUBSAMPLE1(src_width, 2), MH_SUBSAMPLE1(src_height, 2)), CV_16UC1, src_uv);
 
-    // void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
+	// void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
 
-    const uint16_t Y =  plplCtx->color_front.toY();
-    const uint16_t UV = plplCtx->color_front.toUV();
-    CvxText* cvText = (CvxText*)plplCtx->cvxText;
-    cvText->putText(yMat, L"涓枃ABCDabcd", cv::Point(LTX, LTY), CV_RGB(Y, Y, Y));
-    cvText->putText(uvMat, L"涓枃ABCDabcd", cv::Point(MH_SUBSAMPLE1(LTX, 2),MH_SUBSAMPLE1(LTY, 2)), CV_RGB(UV, UV, UV));
+	if (in->config.plplCtx->cvxText == nullptr)
+	{
+		CvxText* cvxText = new CvxText(in->config.fontPath.c_str());
+		in->config.plplCtx->cvxText = cvxText;
+		cvxText->setBackColor(cvScalar(128, 33, 14));
+		CvScalar font = cvScalar(40, 1, 0.2, 1);
+		cvxText->setFont(0, &font);
+	}
+	
+	const uint16_t Y =  plplCtx->color_front.toY();
+	const uint16_t UV = plplCtx->color_front.toUV();
+	
+	CvxText* cvText = (CvxText*)plplCtx->cvxText;
+	cvText->putText(yMat, (const wchar_t*)WTXT, cv::Point(LTX, LTY), CV_RGB(Y, Y, Y)); // L"涓枃ABCDabcd"
+	cvText->putText(uvMat, (const wchar_t*)WTXT, cv::Point(MH_SUBSAMPLE1(LTX, 2), MH_SUBSAMPLE1(LTY, 2)), CV_RGB(UV, UV, UV)); // L"涓枃ABCDabcd"
 }
+
 bool plplExecutor_YUV(PL_Paint_Internal *in)
 {
-    MB_Frame* paintMb = &(in->lastMbfBuffOrigin);
+	MB_Frame* paintMb = &(in->lastMbfBuffOrigin);
 	int ret = true;
 
-    if (in->config.copyData)
-    {
-        if (in->buffer == nullptr)
-        {
-            in->buffer = new uint8_t[in->lastMbfBuffOrigin.buffSize];
-            in->buffSize = in->lastMbfBuffOrigin.buffSize;
-        }
+	if (in->config.copyData)
+	{
+		if (in->buffer == nullptr)
+		{
+			in->buffer = new uint8_t[in->lastMbfBuffOrigin.buffSize];
+			in->buffSize = in->lastMbfBuffOrigin.buffSize;
+		}
 
-        in->lastMbfBuffCopy = in->lastMbfBuffOrigin;
-        in->lastMbfBuffCopy.buffer = in->buffer;
-        in->lastMbfBuffCopy.buffSize = in->buffSize;
+		in->lastMbfBuffCopy = in->lastMbfBuffOrigin;
+		in->lastMbfBuffCopy.buffer = in->buffer;
+		in->lastMbfBuffCopy.buffSize = in->buffSize;
 
-        memcpy(in->lastMbfBuffCopy.buffer, in->lastMbfBuffOrigin.buffer, in->lastMbfBuffCopy.buffSize);
+		memcpy(in->lastMbfBuffCopy.buffer, in->lastMbfBuffOrigin.buffer, in->lastMbfBuffCopy.buffSize);
 
-        paintMb = &(in->lastMbfBuffCopy);
-    }
+		paintMb = &(in->lastMbfBuffCopy);
+	}
 
-    //for (int i=640;i<2000;i++) ((uint8_t*)paintMb->buffer)[i]=255;
+	//for (int i=640;i<2000;i++) ((uint8_t*)paintMb->buffer)[i]=255;
 
-    PLPLContext* plplCtx = in->config.plplCtx;
-    int paramOffset = 0;
-    for (int iCmd = 0; iCmd < in->config.plplCtx->cmds.size(); iCmd++)
-    {
-        PLPLCmd cmd = plplCtx->cmds[iCmd];
+	PLPLContext* plplCtx = in->config.plplCtx;
+	int paramOffset = 0;
+	for (int iCmd = 0; iCmd < in->config.plplCtx->cmds.size(); iCmd++)
+	{
+		PLPLCmd cmd = plplCtx->cmds[iCmd];
 
-        switch(cmd)
-        {
-            case PLPLC_COLOR:
-                //COLOR F/B,R,G,B,A
-                if (plplCtx->params[paramOffset + 0].val_i == 'F')
-                {
-                    plplCtx->color_front = PLGH_Color_RGBA(plplCtx->params[paramOffset + 1].val_i,
-                                                     plplCtx->params[paramOffset + 2].val_i,
-                                                     plplCtx->params[paramOffset + 3].val_i,
-                                                     plplCtx->params[paramOffset + 4].val_i);
-                    paramOffset += 5;
-                }
-                else if (plplCtx->params[paramOffset + 0].val_i == 'B')
-                {
-                    plplCtx->color_back = PLGH_Color_RGBA(plplCtx->params[paramOffset + 1].val_i,
-                                                    plplCtx->params[paramOffset + 2].val_i,
-                                                    plplCtx->params[paramOffset + 3].val_i,
-                                                    plplCtx->params[paramOffset + 4].val_i);
-                    paramOffset += 5;
-                }
-                else
-                {
-                    LOG_WARN << "plpl execute error" << LOG_ENDL;
-                    return false;
-                }
-                break;
+		switch(cmd)
+		{
+			case PLPLC_COLOR:
+				//COLOR F/B,R,G,B,A
+				if (plplCtx->params[paramOffset + 0].val_i == 'F')
+				{
+					plplCtx->color_front = PLGH_Color_RGBA(plplCtx->params[paramOffset + 1].val_i,
+													 plplCtx->params[paramOffset + 2].val_i,
+													 plplCtx->params[paramOffset + 3].val_i,
+													 plplCtx->params[paramOffset + 4].val_i);
+					paramOffset += 5;
+				}
+				else if (plplCtx->params[paramOffset + 0].val_i == 'B')
+				{
+					plplCtx->color_back = PLGH_Color_RGBA(plplCtx->params[paramOffset + 1].val_i,
+													plplCtx->params[paramOffset + 2].val_i,
+													plplCtx->params[paramOffset + 3].val_i,
+													plplCtx->params[paramOffset + 4].val_i);
+					paramOffset += 5;
+				}
+				else
+				{
+					LOG_WARN << "plpl execute error" << LOG_ENDL;
+					return false;
+				}
+				break;
 
-            case PLPLC_FILL:
-                plplCtx->fill = plplCtx->params[paramOffset + 0].val_i;
-                paramOffset += 1;
-                break;
+			case PLPLC_FILL:
+				plplCtx->fill = plplCtx->params[paramOffset + 0].val_i;
+				paramOffset += 1;
+				break;
 
-            case PLPLC_PEN:
-                plplCtx->pen = PLGH_Pen(plplCtx->params[paramOffset + 0].val_i, plplCtx->params[paramOffset + 1].val_i);
-                paramOffset += 2;
-                break;
+			case PLPLC_PEN:
+				plplCtx->pen = PLGH_Pen(plplCtx->params[paramOffset + 0].val_i, plplCtx->params[paramOffset + 1].val_i);
+				paramOffset += 2;
+				break;
 
-            case PLPLC_RECT:
-                //RECT LTX,LTY,RBX,RBY
+			case PLPLC_RECT:
+				//RECT LTX,LTY,RBX,RBY
 				if (paintMb->type == MB_Frame::MBFT_YUV420)
 					ret = plplDraw_Rect_YUV420(plplCtx, paintMb, paramOffset);
 				else if (paintMb->type == MB_Frame::MBFT_NV12)
 					ret = plplDraw_Rect_NV12(plplCtx, paintMb, paramOffset);
 				else
 					ret = false;
-                break;
+				break;
 
-            case PLPLC_TEXT:
+			case PLPLC_TEXT:
 				//TEXT LTX,LTY,"STR"
 				if (paintMb->type == MB_Frame::MBFT_YUV420)
 					ret = plplDraw_Text_YUV420(plplCtx, paintMb, paramOffset);
@@ -285,17 +300,17 @@
 					ret = plplDraw_Text_NV12(plplCtx, paintMb, paramOffset);
 				else
 					ret = false;
-                break;
+				break;
 
-            case PLPLC_WTEXT:
-                //TEXT LTX,LTY,"STR"
-                if (paintMb->type == MB_Frame::MBFT_NV12)
-                    ret = plplDraw_WText_NV12(plplCtx, paintMb, paramOffset);
-                else
-                    ret = false;
-                break;
-        }
-    }
+			case PLPLC_WTEXT:
+				//WTEXT LTX,LTY,"STR"
+				if (paintMb->type == MB_Frame::MBFT_NV12)
+					ret = plplDraw_WText_NV12(plplCtx, paintMb, paramOffset);
+				else
+					ret = false;
+				break;
+		}
+	}
 
 	return ret;
 }
@@ -337,8 +352,8 @@
 {
 	PL_Paint_Internal* in = (PL_Paint_Internal*)internal;
 	in->payError = true;
-    pm.breake(PipeMaterial::PMT_FRAME, MB_Frame::MBFT_YUV420, PL_Paint::pay_breaker_MBFT_YUV, in);
-    pm.breake(PipeMaterial::PMT_FRAME, MB_Frame::MBFT_NV12, PL_Paint::pay_breaker_MBFT_YUV, in);
+	pm.breake(PipeMaterial::PMT_FRAME, MB_Frame::MBFT_YUV420, PL_Paint::pay_breaker_MBFT_YUV, in);
+	pm.breake(PipeMaterial::PMT_FRAME, MB_Frame::MBFT_NV12, PL_Paint::pay_breaker_MBFT_YUV, in);
 
 	//#todo support RGB
 	

--
Gitblit v1.8.0