From 72481c0ede11920945d886ff9ad4be4b266863a3 Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期四, 20 七月 2017 20:00:08 +0800 Subject: [PATCH] lib --- VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.cpp | 20 ++ VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.la | 41 +++++ VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCacheForPLBG.cpp | 372 +++++++++++++++++++++++----------------------- VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.a | 0 VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.h | 4 VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.so | 0 VisitFace/RtspNativeCodec/app/app.iml | 16 +- 7 files changed, 256 insertions(+), 197 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/app.iml b/VisitFace/RtspNativeCodec/app/app.iml index 4e99529..ddf393d 100644 --- a/VisitFace/RtspNativeCodec/app/app.iml +++ b/VisitFace/RtspNativeCodec/app/app.iml @@ -83,14 +83,6 @@ <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> @@ -99,6 +91,14 @@ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> diff --git a/VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.a b/VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.a new file mode 100644 index 0000000..4889779 --- /dev/null +++ b/VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.a Binary files differ diff --git a/VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.la b/VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.la new file mode 100644 index 0000000..d38ed33 --- /dev/null +++ b/VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.la @@ -0,0 +1,41 @@ +# libfreetype.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libfreetype.so' + +# Names of this library. +library_names='libfreetype.so' + +# The name of the static archive. +old_library='libfreetype.a' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lz' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libfreetype. +current=20 +age=14 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/opt/freetype-2.8/build/lib' diff --git a/VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.so b/VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.so new file mode 100644 index 0000000..b55bfce --- /dev/null +++ b/VisitFace/RtspNativeCodec/app/libs/freetype/lib/armeabi-v7a/libfreetype.so Binary files differ diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCacheForPLBG.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCacheForPLBG.cpp index 9bac863..9c1fc23 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCacheForPLBG.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCacheForPLBG.cpp @@ -18,134 +18,134 @@ struct OutRGBBufferWrapper { - uint8_t* buffer; - size_t buffSize; + uint8_t* buffer; + size_t buffSize; - OutRGBBufferWrapper() : buffer(nullptr), buffSize(0) - { } + OutRGBBufferWrapper() : buffer(nullptr), buffSize(0) + { } - OutRGBBufferWrapper(uint8_t* _buffer, size_t _buffSize) : buffer(_buffer), buffSize(_buffSize) - { } + OutRGBBufferWrapper(uint8_t* _buffer, size_t _buffSize) : buffer(_buffer), buffSize(_buffSize) + { } }; struct FcPmBreackerContextPLBG { - plbg_output_vec_t lastOutputs; - std::vector<OutRGBBufferWrapper> lastOutputsRGBBufs; + plbg_output_vec_t lastOutputs; + std::vector<OutRGBBufferWrapper> lastOutputsRGBBufs; - uint8_t frameYUV[1920*1080*4]; - size_t frameYUVSize; - uint8_t frameRGB[1920*1080*4]; - size_t frameRGBSize; - bool frameTruncated; + uint8_t frameYUV[1920*1080*4]; + size_t frameYUVSize; + uint8_t frameRGB[1920*1080*4]; + size_t frameRGBSize; + bool frameTruncated; - FcPmBreackerContextPLBG() : - lastOutputs(), lastOutputsRGBBufs(), frameYUV(), frameYUVSize(0), frameRGB(),frameRGBSize(0), - frameTruncated(false) - {} + FcPmBreackerContextPLBG() : + lastOutputs(), lastOutputsRGBBufs(), frameYUV(), frameYUVSize(0), frameRGB(),frameRGBSize(0), + frameTruncated(false) + {} - void reset() - { - lastOutputs.clear(); - lastOutputsRGBBufs.clear(); - frameYUVSize = 0; - frameRGBSize = 0; - frameTruncated = false; - } + void reset() + { + lastOutputs.clear(); + lastOutputsRGBBufs.clear(); + frameYUVSize = 0; + frameRGBSize = 0; + frameTruncated = false; + } - void copy_data() - { - uint8_t* bufPtr = frameYUV; - for (plbg_output_vec_t::iterator iter = lastOutputs.begin(); iter != lastOutputs.end(); ++iter) - { - const uint8_t* originBuf = iter->croppedData; - if (originBuf == nullptr || iter->croppedDataSize == 0) - continue; + void copy_data() + { + uint8_t* bufPtr = frameYUV; + for (plbg_output_vec_t::iterator iter = lastOutputs.begin(); iter != lastOutputs.end(); ++iter) + { + const uint8_t* originBuf = iter->croppedData; + if (originBuf == nullptr || iter->croppedDataSize == 0) + continue; - if (sizeof(frameYUV) - (bufPtr - frameYUV) < iter->croppedDataSize) - { - frameTruncated = true; - LOG_WARN << "yuv buffer truncated" << LOG_ENDL; - break; - } + if (sizeof(frameYUV) - (bufPtr - frameYUV) < iter->croppedDataSize) + { + frameTruncated = true; + LOG_WARN << "yuv buffer truncated" << LOG_ENDL; + break; + } - iter->croppedData = bufPtr; - memcpy(bufPtr, originBuf, iter->croppedDataSize); - bufPtr += iter->croppedDataSize; - frameYUVSize += iter->croppedDataSize; - } - } + iter->croppedData = bufPtr; + memcpy(bufPtr, originBuf, iter->croppedDataSize); + bufPtr += iter->croppedDataSize; + frameYUVSize += iter->croppedDataSize; + } + } - void convert_data() - { - uint8_t* bufPtr = frameRGB; - for (plbg_output_vec_t::iterator iter = lastOutputs.begin(); iter != lastOutputs.end(); ++iter) - { - if (iter->croppedData == nullptr || iter->croppedDataSize == 0) - { - OutRGBBufferWrapper bw; - lastOutputsRGBBufs.push_back(bw); - continue; - } + void convert_data() + { + uint8_t* bufPtr = frameRGB; + for (plbg_output_vec_t::iterator iter = lastOutputs.begin(); iter != lastOutputs.end(); ++iter) + { + if (iter->croppedData == nullptr || iter->croppedDataSize == 0) + { + OutRGBBufferWrapper bw; + lastOutputsRGBBufs.push_back(bw); + continue; + } - OutRGBBufferWrapper bw; - bw.buffer = bufPtr; - bw.buffSize = iter->rectInOriginFrame.rect.width() * iter->rectInOriginFrame.rect.height() * 2; //RGB565 - if (sizeof(frameRGB) - (bufPtr - frameRGB) < bw.buffSize) - { - frameTruncated = true; - OutRGBBufferWrapper bw; - lastOutputsRGBBufs.push_back(bw); - LOG_WARN << "rgb buffer truncated" << LOG_ENDL; - continue; - } + OutRGBBufferWrapper bw; + bw.buffer = bufPtr; + bw.buffSize = iter->rectInOriginFrame.rect.width() * iter->rectInOriginFrame.rect.height() * 2; //RGB565 + if (sizeof(frameRGB) - (bufPtr - frameRGB) < bw.buffSize) + { + frameTruncated = true; + OutRGBBufferWrapper bw; + lastOutputsRGBBufs.push_back(bw); + LOG_WARN << "rgb buffer truncated" << LOG_ENDL; + continue; + } - convertYUV420ToRGB565(*iter, bw.buffer); + convertYUV420ToRGB565(*iter, bw.buffer); - lastOutputsRGBBufs.push_back(bw); - bufPtr += bw.buffSize; - frameRGBSize += bw.buffSize; - } - } + lastOutputsRGBBufs.push_back(bw); + bufPtr += bw.buffSize; + frameRGBSize += bw.buffSize; + } + } private: - bool convertYUV420ToRGB565(const PLBG_Output& out, uint8_t* rgbBuff) - { - int src_height = out.rectInOriginFrame.rect.height(); - int src_width = out.rectInOriginFrame.rect.width(); - const uint8* src_y = (const uint8*)(out.croppedData); - const uint8* src_u = (const uint8*)(src_y + (src_height * src_width)); - const uint8* src_v = (const uint8*)(src_u + (src_height * src_width / 4)); + bool convertYUV420ToRGB565(const PLBG_Output& out, uint8_t* rgbBuff) + { + int src_height = out.rectInOriginFrame.rect.height(); + int src_width = out.rectInOriginFrame.rect.width(); + const uint8* src_y = (const uint8*)(out.croppedData); + const uint8* src_u = (const uint8*)(src_y + (src_height * src_width)); + const uint8* src_v = (const uint8*)(src_u + (src_height * src_width / 4)); - if (out.originframe->type == MB_Frame::MBFT_YUV420) - { - libyuv::I420ToRGB565(src_y, src_width, - src_v, MH_SUBSAMPLE1(src_width, 2), - src_u, MH_SUBSAMPLE1(src_width, 2), - rgbBuff, 2 * src_width, - src_width, src_height); - } - else if (out.originframe->type == MB_Frame::MBFT_NV12) - { - libyuv::NV12ToRGB565(src_y, src_width, - src_u, src_width, - rgbBuff, 2 * src_width, - src_width, src_height); - } - else - return false; + if (out.originframe->type == MB_Frame::MBFT_YUV420) + { + libyuv::I420ToRGB565(src_y, src_width, + src_v, MH_SUBSAMPLE1(src_width, 2), + src_u, MH_SUBSAMPLE1(src_width, 2), + rgbBuff, 2 * src_width, + src_width, src_height); + } + else if (out.originframe->type == MB_Frame::MBFT_NV12) + { + libyuv::NV12ToRGB565(src_y, src_width, + src_u, src_width, + rgbBuff, 2 * src_width, + src_width, src_height); + } + else + return false; - //{ - // static size_t f = 0; - // char fname[50]; - // sprintf(fname, "/sdcard/face-%u-w%u-h%u.rgb", ++f, src_width, src_height); - // FILE *pFile = fopen(fname, "wb"); - // fwrite(rgbBuff, 1, src_height * src_width * 2, pFile); - // fclose(pFile); - // if (f > 20)exit(0); - //} - return true; - } + //{ + // static size_t f = 0; + // char fname[50]; + // sprintf(fname, "/sdcard/face-%u-w%u-h%u.rgb", ++f, src_width, src_height); + // FILE *pFile = fopen(fname, "wb"); + // fwrite(rgbBuff, 1, src_height * src_width * 2, pFile); + // fclose(pFile); + // if (f > 20)exit(0); + //} + return true; + } }; FaceCacheForPLBG::FaceCacheForPLBG() : _ctx(new FcPmBreackerContextPLBG) @@ -155,118 +155,118 @@ FaceCacheForPLBG::~FaceCacheForPLBG() { - delete (FcPmBreackerContextPLBG*)_ctx; + delete (FcPmBreackerContextPLBG*)_ctx; } // returns count of face int FaceCacheForPLBG::cachePm(const PipeMaterial& pm) { - FcPmBreackerContextPLBG& ctx(*(FcPmBreackerContextPLBG*)_ctx); - ctx.reset(); + FcPmBreackerContextPLBG& ctx(*(FcPmBreackerContextPLBG*)_ctx); + ctx.reset(); - plbg_output_vec_t* plbgOut = (plbg_output_vec_t*)pm.buffer; - if (plbgOut->size() == 0) - return 0; + plbg_output_vec_t* plbgOut = (plbg_output_vec_t*)pm.buffer; + if (plbgOut->size() == 0) + return 0; - ctx.lastOutputs = *plbgOut; - ctx.copy_data(); - ctx.convert_data(); + ctx.lastOutputs = *plbgOut; + ctx.copy_data(); + ctx.convert_data(); - return ctx.lastOutputs.size(); + return ctx.lastOutputs.size(); } size_t FaceCacheForPLBG::getFaceCount(const PipeMaterial& pm) const { - plbg_output_vec_t* plbgOut = (plbg_output_vec_t*)pm.buffer; - return plbgOut->size(); + plbg_output_vec_t* plbgOut = (plbg_output_vec_t*)pm.buffer; + return plbgOut->size(); } bool FaceCacheForPLBG::getFaceListPb(uint8_t* buffer, size_t& buffMaxSize) { - FcPmBreackerContextPLBG& ctx(*(FcPmBreackerContextPLBG*)_ctx); - if (ctx.frameTruncated) - { - LOG_WARN << "ctx buffer truncated" << LOG_ENDL; - return false; - } + FcPmBreackerContextPLBG& ctx(*(FcPmBreackerContextPLBG*)_ctx); + if (ctx.frameTruncated) + { + LOG_WARN << "ctx buffer truncated" << LOG_ENDL; + return false; + } - PbFaceList pbFaceList; - pbFaceList.set_magic(pbFaceList.magic()); - pbFaceList.set_image_count(ctx.lastOutputs.size()); - pbFaceList.set_src_width(0); - pbFaceList.set_src_height(0); + PbFaceList pbFaceList; + pbFaceList.set_magic(pbFaceList.magic()); + pbFaceList.set_image_count(ctx.lastOutputs.size()); + pbFaceList.set_src_width(0); + pbFaceList.set_src_height(0); - for (int i = 0; i < ctx.lastOutputs.size(); i++) - { - PbFaceList_FaceListImage &pbFaceListImage(*(pbFaceList.add_images())); - pbFaceListImage.set_idx(i); - pbFaceListImage.set_st_track_id((int)(int64_t)(ctx.lastOutputs[i].rectInOriginFrame.userData)); - pbFaceListImage.set_size(ctx.lastOutputs[i].croppedDataSize); - pbFaceListImage.set_type(PbFaceList_FaceListImage_ImageType_MBFT_NV12); - pbFaceListImage.set_width(ctx.lastOutputs[i].rectInOriginFrame.rect.width()); - pbFaceListImage.set_height(ctx.lastOutputs[i].rectInOriginFrame.rect.height()); - pbFaceListImage.set_top_left_x(ctx.lastOutputs[i].rectInOriginFrame.rect.leftTop.X); - pbFaceListImage.set_top_left_y(ctx.lastOutputs[i].rectInOriginFrame.rect.leftTop.Y); + for (int i = 0; i < ctx.lastOutputs.size(); i++) + { + PbFaceList_FaceListImage &pbFaceListImage(*(pbFaceList.add_images())); + pbFaceListImage.set_idx(i); + pbFaceListImage.set_st_track_id((int)(int64_t)(ctx.lastOutputs[i].rectInOriginFrame.userData)); + pbFaceListImage.set_size(ctx.lastOutputs[i].croppedDataSize); + pbFaceListImage.set_type(PbFaceList_FaceListImage_ImageType_MBFT_NV12); + pbFaceListImage.set_width(ctx.lastOutputs[i].rectInOriginFrame.rect.width()); + pbFaceListImage.set_height(ctx.lastOutputs[i].rectInOriginFrame.rect.height()); + pbFaceListImage.set_top_left_x(ctx.lastOutputs[i].rectInOriginFrame.rect.leftTop.X); + pbFaceListImage.set_top_left_y(ctx.lastOutputs[i].rectInOriginFrame.rect.leftTop.Y); - pbFaceListImage.add_img(ctx.lastOutputs[i].croppedData, ctx.lastOutputs[i].croppedDataSize); + pbFaceListImage.add_img(ctx.lastOutputs[i].croppedData, ctx.lastOutputs[i].croppedDataSize); - //LOGP(ERROR, "bg output=%f", ctx.lastOutputs[i].score); + //LOGP(ERROR, "bg output=%f", ctx.lastOutputs[i].score); - //{ - // static size_t f = 0; - // char fname[50]; - // sprintf(fname, "/sdcard/face-%u-w%u-h%u.yuv420", ++f, ctx.lastOutputs[i].rectInOriginFrame.width(), ctx.lastOutputs[i].rectInOriginFrame.height()); - // FILE *pFile = fopen(fname, "wb"); - // fwrite(ctx.lastOutputs[i].croppedData, 1, ctx.lastOutputs[i].croppedDataSize, pFile); - // fclose(pFile); - // if (f > 10)exit(0); - //} - } + //{ + // static size_t f = 0; + // char fname[50]; + // sprintf(fname, "/sdcard/face-%u-w%u-h%u.yuv420", ++f, ctx.lastOutputs[i].rectInOriginFrame.width(), ctx.lastOutputs[i].rectInOriginFrame.height()); + // FILE *pFile = fopen(fname, "wb"); + // fwrite(ctx.lastOutputs[i].croppedData, 1, ctx.lastOutputs[i].croppedDataSize, pFile); + // fclose(pFile); + // if (f > 10)exit(0); + //} + } - size_t s = pbFaceList.ByteSize(); - buffMaxSize = std::min(s, buffMaxSize); - pbFaceList.SerializeToArray(buffer, buffMaxSize); + size_t s = pbFaceList.ByteSize(); + buffMaxSize = std::min(s, buffMaxSize); + pbFaceList.SerializeToArray(buffer, buffMaxSize); - return buffMaxSize > 0; + return buffMaxSize > 0; } bool FaceCacheForPLBG::getFaceListImage(std::vector<NativeImgIdx>& imgIdxes, uint8_t* buffImg, size_t& buffImgMaxSize) { - FcPmBreackerContextPLBG& ctx(*(FcPmBreackerContextPLBG*)_ctx); - if (ctx.frameTruncated) - { - LOG_WARN << "ctx buffer truncated" << LOG_ENDL; - return false; - } - if (buffImgMaxSize < ctx.frameRGBSize) - { - LOG_WARN << "buffImg truncated" << LOG_ENDL; - return false; - } + FcPmBreackerContextPLBG& ctx(*(FcPmBreackerContextPLBG*)_ctx); + if (ctx.frameTruncated) + { + LOG_WARN << "ctx buffer truncated" << LOG_ENDL; + return false; + } + if (buffImgMaxSize < ctx.frameRGBSize) + { + LOG_WARN << "buffImg truncated" << LOG_ENDL; + return false; + } - imgIdxes.clear(); - size_t totalSize = 0; + imgIdxes.clear(); + size_t totalSize = 0; - for (int i = 0; i < ctx.lastOutputs.size(); i++) - { - NativeImgIdx imgidx; - imgidx.st_track_id = (int)(int64_t)(ctx.lastOutputs[i].rectInOriginFrame.userData); - imgidx.offset = ctx.lastOutputsRGBBufs[i].buffer - ctx.frameRGB; - imgidx.size = ctx.lastOutputsRGBBufs[i].buffSize; - imgidx.type = MB_Frame::MBFT_RGB565; - imgidx.width = ctx.lastOutputs[i].rectInOriginFrame.rect.width(); - imgidx.height = ctx.lastOutputs[i].rectInOriginFrame.rect.height(); + for (int i = 0; i < ctx.lastOutputs.size(); i++) + { + NativeImgIdx imgidx; + imgidx.st_track_id = (int)(int64_t)(ctx.lastOutputs[i].rectInOriginFrame.userData); + imgidx.offset = ctx.lastOutputsRGBBufs[i].buffer - ctx.frameRGB; + imgidx.size = ctx.lastOutputsRGBBufs[i].buffSize; + imgidx.type = MB_Frame::MBFT_RGB565; + imgidx.width = ctx.lastOutputs[i].rectInOriginFrame.rect.width(); + imgidx.height = ctx.lastOutputs[i].rectInOriginFrame.rect.height(); - imgIdxes.push_back(imgidx); - totalSize += ctx.lastOutputsRGBBufs[i].buffSize; - } + imgIdxes.push_back(imgidx); + totalSize += ctx.lastOutputsRGBBufs[i].buffSize; + } - memcpy(buffImg, ctx.frameRGB, totalSize); - buffImgMaxSize = totalSize; + memcpy(buffImg, ctx.frameRGB, totalSize); + buffImgMaxSize = totalSize; - return true; + return true; } diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.cpp index 164c964..cd4bd17 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.cpp @@ -8,15 +8,22 @@ #include<sys/sysinfo.h> #include<unistd.h> -// setup the cpu set of this program to run on -void set_cpu(int id) +// setup the cpu set of this program (task) to run on +void set_task_cpu(int id) { + int num = sysconf(_SC_NPROCESSORS_CONF); + cpu_set_t mask; CPU_ZERO(&mask); if (sched_getaffinity(0, sizeof(mask), &mask) == -1) { fprintf(stderr, "warning: could not get CPU affinity/n"); } + + for(int i= 0; i< num; i++) + { + LOG_ERROR << "cpu " << i <<": " << CPU_ISSET(i, &mask) <<LOG_ENDL; + } CPU_SET(id, &mask); if (sched_setaffinity(0, sizeof(mask), &mask) == -1) @@ -27,5 +34,12 @@ void cpu_sched() { -//set_cpu(0x0003); + //set_task_cpu(0x0003); +} + +void pthread_cpu_sched(const pthread_attr_t *attr) +{ + cpu_set_t mask; + CPU_ZERO(&mask); + } diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.h b/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.h index 76c81e3..5138419 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.h +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.h @@ -1,6 +1,10 @@ #ifndef _CPU_SCHED_TEST_H_ #define _CPU_SCHED_TEST_H_ +#include <pthread.h> + void cpu_sched(); +void pthread_cpu_sched(const pthread_attr_t *attr); + #endif -- Gitblit v1.8.0