Commit 5686354a692a7987f1bb58f2dbe10f39dcbcbd1e

Authored by Hu Chunming
1 parent 00b0fbdb

初步编译成功cuvid部分的

Showing 30 changed files with 199 additions and 117 deletions
src/Makefile
@@ -29,11 +29,11 @@ LDFLAGS:= @@ -29,11 +29,11 @@ LDFLAGS:=
29 LIBS:= -L $(SPDLOG_ROOT)/lib -l:libspdlog.a \ 29 LIBS:= -L $(SPDLOG_ROOT)/lib -l:libspdlog.a \
30 30
31 # 各个模块 31 # 各个模块
32 -MODULES:= nvdecoder gb28181 interface demo 32 +MODULES:= nvdec gb28181 interface demo
33 33
34 # 各个模块对应的库 34 # 各个模块对应的库
35 -# MODULE_LIBS:=$(BUILD_DIR)/nvdecoder/lib/nvdecoder.a\  
36 -# $(BUILD_DIR)/nvdecoder/lib/gb28181.a\ 35 +# MODULE_LIBS:=$(BUILD_DIR)/nvdec/lib/nvdec.a\
  36 +# $(BUILD_DIR)/nvdec/lib/gb28181.a\
37 # $(BUILD_DIR)/interface/lib/interface.a\ 37 # $(BUILD_DIR)/interface/lib/interface.a\
38 38
39 # 最终目标文件 39 # 最终目标文件
@@ -46,7 +46,7 @@ all:$(TARGET) @@ -46,7 +46,7 @@ all:$(TARGET)
46 # 最终目标依赖关系 46 # 最终目标依赖关系
47 $(TARGET):FORCE | $(BIN_DIR) 47 $(TARGET):FORCE | $(BIN_DIR)
48 @for n in $(MODULES); do make -s -f $(TOP_DIR)/$$n/Makefile MODULE=$$n || exit "$$?"; done 48 @for n in $(MODULES); do make -s -f $(TOP_DIR)/$$n/Makefile MODULE=$$n || exit "$$?"; done
49 -# @echo -e "\e[32m""Linking executable $(TARGET)""\e[0m" 49 + @echo -e "\e[32m""Linking executable $(TARGET)""\e[0m"
50 #@$(LD) $(LDFLAGS) -o $@ $(MODULE_LIBS) $(LIBS) 50 #@$(LD) $(LDFLAGS) -o $@ $(MODULE_LIBS) $(LIBS)
51 51
52 # 若没有bin目录则自动生成 52 # 若没有bin目录则自动生成
src/Makefile.bak
@@ -38,7 +38,7 @@ CFLAGS= -g -fPIC -O0 $(INCLUDE) -pthread -lrt -lz -std=c++11 -fvisibility=hidden @@ -38,7 +38,7 @@ CFLAGS= -g -fPIC -O0 $(INCLUDE) -pthread -lrt -lz -std=c++11 -fvisibility=hidden
38 NFLAGS_LIB=-g -c -shared -Xcompiler -fPIC -Xcompiler -fvisibility=hidden 38 NFLAGS_LIB=-g -c -shared -Xcompiler -fPIC -Xcompiler -fvisibility=hidden
39 NFLAGS = $(NFLAGS_LIB) $(INCLUDE) -std=c++11 39 NFLAGS = $(NFLAGS_LIB) $(INCLUDE) -std=c++11
40 40
41 -SRCS:=$(wildcard $(SRC_ROOT)/nvdecoder/*.cpp) \ 41 +SRCS:=$(wildcard $(SRC_ROOT)/nvdec/*.cpp) \
42 $(wildcard $(SRC_ROOT)/gb28181/*.cpp) \ 42 $(wildcard $(SRC_ROOT)/gb28181/*.cpp) \
43 $(wildcard $(SRC_ROOT)/dvpp/*.cpp) 43 $(wildcard $(SRC_ROOT)/dvpp/*.cpp)
44 OBJS = $(patsubst %.cpp, %.o, $(notdir $(SRCS))) 44 OBJS = $(patsubst %.cpp, %.o, $(notdir $(SRCS)))
@@ -52,7 +52,7 @@ $(TARGET):$(OBJS) $(CU_OBJS) @@ -52,7 +52,7 @@ $(TARGET):$(OBJS) $(CU_OBJS)
52 $(XX) -o $@ $^ $(CFLAGS) $(LIBSPATH) $(LIBS) -Wwrite-strings 52 $(XX) -o $@ $^ $(CFLAGS) $(LIBSPATH) $(LIBS) -Wwrite-strings
53 rm -f *.o 53 rm -f *.o
54 54
55 -# %.o:$(SRC_ROOT)/nvdecoder/%.cpp 55 +# %.o:$(SRC_ROOT)/nvdec/%.cpp
56 # $(XX) $(CFLAGS) -c $< 56 # $(XX) $(CFLAGS) -c $<
57 57
58 %.o:$(SRC_ROOT)/gb28181/%.cpp 58 %.o:$(SRC_ROOT)/gb28181/%.cpp
src/demo/Makefile
1 -XX = g++ 1 +# 各项目录
  2 +LIB_DIR:=$(BUILD_DIR)/$(MODULE)/lib
  3 +DEP_DIR:=$(BUILD_DIR)/$(MODULE)/.dep
  4 +OBJ_DIR:=$(BUILD_DIR)/$(MODULE)/obj
  5 +SRC_DIR:=$(TOP_DIR)/$(MODULE)
2 6
  7 +# 源文件以及中间目标文件和依赖文件
  8 +SRCS:=$(notdir $(wildcard $(SRC_DIR)/*.cpp))
  9 +OBJS:=$(addprefix $(OBJ_DIR)/, $(patsubst %.cpp, %.o, $(SRCS)))
  10 +DEPS:=$(addprefix $(DEP_DIR)/, $(patsubst %.cpp, %.d,a $(SRCS)))
3 11
4 -PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder 12 +# 自动生成头文件依赖选项
  13 +DEPFLAGS=-MT $@ -MMD -MP -MF $(DEP_DIR)/$*.d
5 14
6 -CUDA_ROOT = /usr/local/cuda-11.1 15 +# 最终目标文件
  16 +TARGET:=/mnt/data/cmhu/FFNvDecoder/bin/lib/demo
  17 +
  18 +
  19 +
  20 +PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder
7 21
8 DEPEND_DIR = $(PROJECT_ROOT)/bin 22 DEPEND_DIR = $(PROJECT_ROOT)/bin
9 THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty 23 THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty
10 SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release 24 SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release
11 JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export 25 JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export
12 26
13 -SRC_ROOT = $(PROJECT_ROOT)/src 27 +CUDA_ROOT = /usr/local/cuda-11.1
14 28
15 -TARGET= $(PROJECT_ROOT)/bin/lib/demo 29 +LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
  30 + -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \
  31 + -L $(SPDLOG_ROOT) -l:libspdlog.a \
  32 + -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
  33 + -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a
16 34
17 -DEFS = -DENABLE_DVPP_INTERFACE  
18 35
19 -INCLUDE= -I $(SRC_ROOT)/interface \  
20 - -I $(SRC_ROOT)/dvpp \  
21 - -I $(SRC_ROOT)/gb28181 \  
22 - -I $(SRC_ROOT)/nvdecoder \ 36 +INCLUDE= -I $(TOP_DIR)/interface \
  37 + -I $(TOP_DIR)/nvdec \
  38 + -I $(TOP_DIR)/gb28181 \
23 -I $(DEPEND_DIR)/include \ 39 -I $(DEPEND_DIR)/include \
24 -I $(CUDA_ROOT)/include \ 40 -I $(CUDA_ROOT)/include \
25 -I $(TOP_DIR)/common/inc \ 41 -I $(TOP_DIR)/common/inc \
@@ -29,51 +45,53 @@ INCLUDE= -I $(SRC_ROOT)/interface \ @@ -29,51 +45,53 @@ INCLUDE= -I $(SRC_ROOT)/interface \
29 -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \ 45 -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \
30 -I $(JRTP_ROOT)/jthread/include/jthread 46 -I $(JRTP_ROOT)/jthread/include/jthread
31 47
32 -LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \ 48 +LIBSPATH= -L $(BUILD_DIR)/interface/lib -l:interface.a \
  49 + -L $(BUILD_DIR)/nvdec/lib -l:nvdec.a \
  50 + -L $(BUILD_DIR)/gb28181/lib -l:gb28181.a \
  51 + -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
33 -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \ 52 -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \
34 -L $(SPDLOG_ROOT) -l:libspdlog.a \ 53 -L $(SPDLOG_ROOT) -l:libspdlog.a \
35 -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \ 54 -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
36 -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a 55 -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a
37 56
  57 +CXXFLAGS= -g -O0 -fPIC $(INCLUDE) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings
  58 + # -DUNICODE -D_UNICODE
38 59
39 -# include_dir=-I/usr/local/Ascend/ascend-toolkit/6.3.RC1.alpha001/runtime/include  
40 -  
41 -# lib_dir=-L/usr/lib \  
42 -# -L/usr/local/lib \  
43 -# -L/usr/local/Ascend/driver/lib64 \  
44 -# -L/usr/local/Ascend/ascend-toolkit/6.3.RC1.alpha001/atc/lib64\  
45 -# -L/usr/local/Ascend/ascend-toolkit/6.3.RC1.alpha001/runtime/lib64 \  
46 -# -L/usr/local/Ascend/ascend-toolkit/6.3.RC1.alpha001/runtime/lib64/stub \  
47 -# -L/usr/local/Ascend/ascend-toolkit/6.3.RC1.alpha001/lib64 \  
48 -# -L/usr/local/Ascend/driver/lib64/driver  
49 -  
50 -# lib=-lacl_dvpp -lascendcl -lmmpa -lglog -lgflags -lpthread -lz -lacl_dvpp_mpi -lruntime -lascendalog -lc_sec -lmsprofiler -lgert -lge_executor -lge_common \  
51 -# -lgraph -lascend_protobuf -lprofapi -lerror_manager -lexe_graph -lregister -lplatform  
52 -# LIBS= -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice  
53 -# CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(include_dir) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl 60 +# 默认最终目标
  61 +.PHONY:all
  62 +all:$(TARGET)
54 63
55 -CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl 64 +# 生成最终目标
  65 +$(TARGET): $(OBJS) | $(LIB_DIR)
  66 + @echo -e "\e[32m""Linking static library $(TARGET)""\e[0m"
  67 + @echo -e "$(CXX) -o $@ $^ $(DEPFLAGS) $(CXXFLAGS) $(LIBSPATH) $(MACROS)"
  68 + $(CXX) -o $@ $^ $(DEPFLAGS) $(CXXFLAGS) $(LIBSPATH) $(MACROS)
56 69
57 -SRCS:=$(wildcard $(SRC_ROOT)/demo/*.cpp)  
58 -OBJS = $(patsubst %.cpp, %.o, $(notdir $(SRCS))) 70 +# 若没有lib目录则自动生成
  71 +$(LIB_DIR):
  72 + @mkdir -p $@
59 73
60 -OBJ_ROOT = $(PROJECT_ROOT)/src/build  
61 -# DVPP_SRCS:=$(wildcard $(OBJ_ROOT)/dvpp/obj/*.o)  
62 -INTEFACE_SRCS:=$(wildcard $(OBJ_ROOT)/interface/obj/*.o)  
63 -NVDECODER_SRCS:=$(wildcard $(OBJ_ROOT)/nvdecoder/obj/*.o)  
64 -GB28181_SRCS:=$(wildcard $(OBJ_ROOT)/gb28181/obj/*.o) 74 +# 生成中间目标文件
  75 +$(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR)
  76 + @echo -e "\e[33m""Building object $@""\e[0m"
  77 + @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<"
  78 + $(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<
65 79
  80 +# 若没有obj目录则自动生成
  81 +$(OBJ_DIR):
  82 + @mkdir -p $@
66 83
67 -$(TARGET):$(OBJS) $(INTEFACE_SRCS) $(NVDECODER_SRCS) $(GB28181_SRCS)  
68 - rm -f $(TARGET)  
69 -# @echo -e "\e[33m""Building object $@""\e[0m"  
70 -# $(XX) -o $@ $^ $(CXXFLAGS) $(LIBS) $(lib_dir) $(lib) -Wwrite-strings  
71 - $(XX) -o $@ $^ $(CXXFLAGS) $(LIBSPATH) -Wwrite-strings  
72 - rm -f *.o 84 +# 若没有.dep目录则自动生成
  85 +$(DEP_DIR):
  86 + @mkdir -p $@
73 87
74 -%.o:$(SRC_ROOT)/demo/%.cpp  
75 - $(XX) $(CXXFLAGS) -c $< 88 +# 依赖文件会在生成中间文件的时候自动生成,这里只是为了防止报错
  89 +$(DEPS):
76 90
  91 +# 引入中间目标文件头文件依赖关系
  92 +include $(wildcard $(DEPS))
77 93
  94 +# 直接删除组件build目录
  95 +.PHONY:clean
78 clean: 96 clean:
79 - rm -f *.o $(TARGET)  
80 \ No newline at end of file 97 \ No newline at end of file
  98 + @rm -rf $(BUILD_DIR)/$(MODULE)
src/demo/Makefile.o.nvdec 0 → 100644
  1 +XX = g++
  2 +
  3 +
  4 +PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder
  5 +
  6 +CUDA_ROOT = /usr/local/cuda-11.1
  7 +
  8 +DEPEND_DIR = $(PROJECT_ROOT)/bin
  9 +THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty
  10 +SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release
  11 +JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export
  12 +
  13 +SRC_ROOT = $(PROJECT_ROOT)/src
  14 +
  15 +TARGET= $(PROJECT_ROOT)/bin/lib/demo
  16 +
  17 +DEFS = -DENABLE_DVPP_INTERFACE
  18 +
  19 +INCLUDE= -I $(SRC_ROOT)/interface \
  20 + -I $(SRC_ROOT)/dvpp \
  21 + -I $(SRC_ROOT)/gb28181 \
  22 + -I $(SRC_ROOT)/nvdec \
  23 + -I $(DEPEND_DIR)/include \
  24 + -I $(CUDA_ROOT)/include \
  25 + -I $(TOP_DIR)/common/inc \
  26 + -I $(TOP_DIR)/common/UtilNPP \
  27 + -I $(TOP_DIR)/ \
  28 + -I $(SPDLOG_ROOT)/include \
  29 + -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \
  30 + -I $(JRTP_ROOT)/jthread/include/jthread
  31 +
  32 +LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
  33 + -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \
  34 + -L $(SPDLOG_ROOT) -l:libspdlog.a \
  35 + -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
  36 + -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a
  37 +
  38 +
  39 +CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl
  40 +
  41 +SRCS:=$(wildcard $(SRC_ROOT)/demo/*.cpp)
  42 +OBJS = $(patsubst %.cpp, %.o, $(notdir $(SRCS)))
  43 +
  44 +OBJ_ROOT = $(PROJECT_ROOT)/src/build
  45 +INTEFACE_SRCS:=$(wildcard $(OBJ_ROOT)/interface/obj/*.o)
  46 +NVDECODER_SRCS:=$(wildcard $(OBJ_ROOT)/nvdec/obj/*.o)
  47 +GB28181_SRCS:=$(wildcard $(OBJ_ROOT)/gb28181/obj/*.o)
  48 +
  49 +
  50 +$(TARGET):$(OBJS) $(INTEFACE_SRCS) $(NVDECODER_SRCS) $(GB28181_SRCS)
  51 + rm -f $(TARGET)
  52 + @echo -e "\e[33m""Building object $@""\e[0m"
  53 + $(XX) -o $@ $^ $(CXXFLAGS) $(LIBSPATH) -Wwrite-strings
  54 + rm -f *.o
  55 +
  56 +%.o:$(SRC_ROOT)/demo/%.cpp
  57 + $(XX) $(CXXFLAGS) -c $<
  58 +
  59 +
  60 +clean:
  61 + rm -f *.o $(TARGET)
0 \ No newline at end of file 62 \ No newline at end of file
src/demo/main_nvdec.cpp
1 #include "FFNvDecoderManager.h" 1 #include "FFNvDecoderManager.h"
2 #include <iostream> 2 #include <iostream>
3 3
4 -#include "cuda_kernels.h"  
5 -  
6 -#include "NvJpegEncoder.h" 4 +// #include "cuda_kernels.h"
  5 +// #include "NvJpegEncoder.h"
7 6
8 #include <pthread.h> 7 #include <pthread.h>
9 #include <thread> 8 #include <thread>
@@ -85,75 +84,75 @@ unsigned char *pHwRgb[2] = {nullptr, nullptr}; @@ -85,75 +84,75 @@ unsigned char *pHwRgb[2] = {nullptr, nullptr};
85 int sum1 = 0; 84 int sum1 = 0;
86 int sum2 = 0; 85 int sum2 = 0;
87 86
88 -cudaStream_t stream[2]; 87 +// cudaStream_t stream[2];
89 88
90 string data_home = "/mnt/data/cmhu/tmp/"; 89 string data_home = "/mnt/data/cmhu/tmp/";
91 90
92 91
93 -#define checkCudaErrors(S) do {CUresult status; \  
94 - status = S; \  
95 - if (status != CUDA_SUCCESS ) std::cout << __LINE__ <<" checkCudaErrors - status = " << status << std::endl; \  
96 - } while (false) 92 +// #define checkCudaErrors(S) do {CUresult status; \
  93 +// status = S; \
  94 +// if (status != CUDA_SUCCESS ) std::cout << __LINE__ <<" checkCudaErrors - status = " << status << std::endl; \
  95 +// } while (false)
97 96
98 97
99 -static void gpu_helper(int gpuid)  
100 -{  
101 - cudaSetDevice(gpuid); 98 +// static void gpu_helper(int gpuid)
  99 +// {
  100 +// cudaSetDevice(gpuid);
102 101
103 - // int *dn;  
104 - // cudaMalloc((void **)&dn, 1 * sizeof(int)); 102 +// // int *dn;
  103 +// // cudaMalloc((void **)&dn, 1 * sizeof(int));
105 104
106 - size_t free_byte;  
107 - size_t total_byte; 105 +// size_t free_byte;
  106 +// size_t total_byte;
108 107
109 - CUresult cuda_status = cuMemGetInfo(&free_byte, &total_byte); 108 +// CUresult cuda_status = cuMemGetInfo(&free_byte, &total_byte);
110 109
111 - const char *pStr = nullptr;  
112 - if (CUDA_SUCCESS != cuda_status) {  
113 - cuGetErrorString(cuda_status, &pStr);  
114 - printf("Error: cudaMemGetInfo fails, %s \n", pStr);  
115 - return;  
116 - } 110 +// const char *pStr = nullptr;
  111 +// if (CUDA_SUCCESS != cuda_status) {
  112 +// cuGetErrorString(cuda_status, &pStr);
  113 +// printf("Error: cudaMemGetInfo fails, %s \n", pStr);
  114 +// return;
  115 +// }
117 116
118 - double free_db = (double)free_byte;  
119 - double total_db = (double)total_byte;  
120 - double used_db_1 = (total_db - free_db) / 1024.0 / 1024.0; 117 +// double free_db = (double)free_byte;
  118 +// double total_db = (double)total_byte;
  119 +// double used_db_1 = (total_db - free_db) / 1024.0 / 1024.0;
121 120
122 - std::cout <<"显存已使用 " << used_db_1 << " MB\n"; 121 +// std::cout <<"显存已使用 " << used_db_1 << " MB\n";
123 122
124 - // cudaFree(dn);  
125 -} 123 +// // cudaFree(dn);
  124 +// }
126 125
127 -int CheckCUDAProperty( int devId )  
128 -{  
129 - cuInit(0); 126 +// int CheckCUDAProperty( int devId )
  127 +// {
  128 +// cuInit(0);
130 129
131 - CUdevice dev = devId;  
132 - size_t memSize = 0;  
133 - char devName[256] = {0};  
134 - int major = 0, minor = 0;  
135 - CUresult rlt = CUDA_SUCCESS; 130 +// CUdevice dev = devId;
  131 +// size_t memSize = 0;
  132 +// char devName[256] = {0};
  133 +// int major = 0, minor = 0;
  134 +// CUresult rlt = CUDA_SUCCESS;
136 135
137 - rlt = cuDeviceGetAttribute(&major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, dev);  
138 - checkCudaErrors( rlt ); 136 +// rlt = cuDeviceGetAttribute(&major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, dev);
  137 +// checkCudaErrors( rlt );
139 138
140 - rlt = cuDeviceGetAttribute(&minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, dev);  
141 - checkCudaErrors( rlt ); 139 +// rlt = cuDeviceGetAttribute(&minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, dev);
  140 +// checkCudaErrors( rlt );
142 141
143 - rlt = cuDeviceGetName( devName, sizeof( devName ), dev );  
144 - checkCudaErrors( rlt ); 142 +// rlt = cuDeviceGetName( devName, sizeof( devName ), dev );
  143 +// checkCudaErrors( rlt );
145 144
146 - printf( "Using GPU Device %d: %s has SM %d.%d compute capability\n",  
147 - dev, devName, major, minor ); 145 +// printf( "Using GPU Device %d: %s has SM %d.%d compute capability\n",
  146 +// dev, devName, major, minor );
148 147
149 - rlt = cuDeviceTotalMem( &memSize, dev );  
150 - checkCudaErrors( rlt ); 148 +// rlt = cuDeviceTotalMem( &memSize, dev );
  149 +// checkCudaErrors( rlt );
151 150
152 - printf( "Total amount of global memory: %4.4f MB\n",  
153 - (float)memSize / ( 1024 * 1024 ) ); 151 +// printf( "Total amount of global memory: %4.4f MB\n",
  152 +// (float)memSize / ( 1024 * 1024 ) );
154 153
155 - return 0;  
156 -} 154 +// return 0;
  155 +// }
157 156
158 /** 157 /**
159 * 注意: gpuFrame 在解码器设置的显卡上,后续操作要十分注意这一点,尤其是多线程情况 158 * 注意: gpuFrame 在解码器设置的显卡上,后续操作要十分注意这一点,尤其是多线程情况
@@ -378,7 +377,7 @@ int main(int argc, char* argv[]){ @@ -378,7 +377,7 @@ int main(int argc, char* argv[]){
378 377
379 // av_log_set_callback(&logFF); 378 // av_log_set_callback(&logFF);
380 379
381 - CheckCUDAProperty(atoi(gpuid)); 380 + // CheckCUDAProperty(atoi(gpuid));
382 381
383 pthread_t m_decode_thread; 382 pthread_t m_decode_thread;
384 pthread_create(&m_decode_thread,0, 383 pthread_create(&m_decode_thread,0,
src/gb28181/FFGB28181Decoder.cpp
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 #include <iostream> 2 #include <iostream>
3 #include "FFGB28181Decoder.h" 3 #include "FFGB28181Decoder.h"
4 4
5 -#include "../nvdecoder/FFCuContextManager.h" 5 +
6 6
7 extern "C" { 7 extern "C" {
8 #include "libavutil/avstring.h" 8 #include "libavutil/avstring.h"
@@ -17,8 +17,9 @@ extern &quot;C&quot; { @@ -17,8 +17,9 @@ extern &quot;C&quot; {
17 17
18 #include "common_header.h" 18 #include "common_header.h"
19 19
20 -#include "../nvdecoder/GpuRgbMemory.hpp"  
21 -#include "../nvdecoder/cuda_kernels.h" 20 +#include "../nvdec/FFCuContextManager.h"
  21 +#include "../nvdec/GpuRgbMemory.hpp"
  22 +#include "../nvdec/cuda_kernels.h"
22 23
23 #define ECLOSED 0 24 #define ECLOSED 0
24 #define ECLOSING 1 25 #define ECLOSING 1
src/gb28181/Makefile
@@ -50,7 +50,8 @@ all:$(TARGET) @@ -50,7 +50,8 @@ all:$(TARGET)
50 # 生成最终目标 50 # 生成最终目标
51 $(TARGET):$(OBJS) | $(LIB_DIR) 51 $(TARGET):$(OBJS) | $(LIB_DIR)
52 @echo -e "\e[32m""Linking static library $(TARGET)""\e[0m" 52 @echo -e "\e[32m""Linking static library $(TARGET)""\e[0m"
53 -# @ar -rc $@ $^ 53 + @echo -e "ar -rc $@ $^"
  54 + @ar -rc $@ $^
54 55
55 # 若没有lib目录则自动生成 56 # 若没有lib目录则自动生成
56 $(LIB_DIR): 57 $(LIB_DIR):
@@ -59,6 +60,7 @@ $(LIB_DIR): @@ -59,6 +60,7 @@ $(LIB_DIR):
59 # 生成中间目标文件 60 # 生成中间目标文件
60 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR) 61 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR)
61 @echo -e "\e[33m""Building object $@""\e[0m" 62 @echo -e "\e[33m""Building object $@""\e[0m"
  63 + @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<"
62 @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $< 64 @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<
63 65
64 # 若没有obj目录则自动生成 66 # 若没有obj目录则自动生成
src/interface/FFNvDecoderManager.cpp
1 #include "FFNvDecoderManager.h" 1 #include "FFNvDecoderManager.h"
2 2
3 #ifdef USE_NVDEC 3 #ifdef USE_NVDEC
4 -#include "../nvdecoder/FFNvDecoder.h" 4 +#include "../nvdec/FFNvDecoder.h"
5 #include "../gb28181/FFGB28181Decoder.h" 5 #include "../gb28181/FFGB28181Decoder.h"
6 #endif 6 #endif
7 7
src/interface/Makefile
@@ -30,7 +30,7 @@ INCLUDE= -I $(DEPEND_DIR)/include \ @@ -30,7 +30,7 @@ INCLUDE= -I $(DEPEND_DIR)/include \
30 -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \ 30 -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \
31 -I $(JRTP_ROOT)/jthread/include/jthread \ 31 -I $(JRTP_ROOT)/jthread/include/jthread \
32 -I $(TOP_DIR)/src/gb28181 \ 32 -I $(TOP_DIR)/src/gb28181 \
33 - -I $(TOP_DIR)/src/nvdecoder \ 33 + -I $(TOP_DIR)/src/nvdec \
34 34
35 LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \ 35 LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
36 -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \ 36 -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \
@@ -45,7 +45,7 @@ CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c @@ -45,7 +45,7 @@ CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c
45 # 最终目标文件 45 # 最终目标文件
46 TARGET:=$(LIB_DIR)/$(MODULE).a 46 TARGET:=$(LIB_DIR)/$(MODULE).a
47 47
48 -# MODULE_LIBS:=$(BUILD_DIR)/nvdecoder/lib/nvdecoder.a \ 48 +# MODULE_LIBS:=$(BUILD_DIR)/nvdec/lib/nvdec.a \
49 # $(BUILD_DIR)/gb28181/lib/gb28181.a\ 49 # $(BUILD_DIR)/gb28181/lib/gb28181.a\
50 50
51 # 默认最终目标 51 # 默认最终目标
@@ -54,8 +54,9 @@ all:$(TARGET) @@ -54,8 +54,9 @@ all:$(TARGET)
54 54
55 # 生成最终目标 55 # 生成最终目标
56 $(TARGET):$(OBJS) | $(LIB_DIR) 56 $(TARGET):$(OBJS) | $(LIB_DIR)
57 - # @echo -e "\e[32m""Linking static library $(TARGET)""\e[0m"  
58 -# @ar -rc $@ $^ 57 + @echo -e "\e[32m""Linking static library $(TARGET)""\e[0m"
  58 + @echo -e "ar -rc $@ $^"
  59 + @ar -rc $@ $^
59 60
60 # 若没有lib目录则自动生成 61 # 若没有lib目录则自动生成
61 $(LIB_DIR): 62 $(LIB_DIR):
@@ -64,6 +65,7 @@ $(LIB_DIR): @@ -64,6 +65,7 @@ $(LIB_DIR):
64 # 生成中间目标文件 65 # 生成中间目标文件
65 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR) 66 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR)
66 @echo -e "\e[33m""Building object $@""\e[0m" 67 @echo -e "\e[33m""Building object $@""\e[0m"
  68 + @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<"
67 # @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $(MODULE_LIBS) $< 69 # @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $(MODULE_LIBS) $<
68 @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $< 70 @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<
69 71
src/nvdecoder/DrawImageOnGPU.cu renamed to src/nvdec/DrawImageOnGPU.cu
src/nvdecoder/FFCuContextManager.cpp renamed to src/nvdec/FFCuContextManager.cpp
src/nvdecoder/FFCuContextManager.h renamed to src/nvdec/FFCuContextManager.h
src/nvdecoder/FFNvDecoder.cpp renamed to src/nvdec/FFNvDecoder.cpp
src/nvdecoder/FFNvDecoder.h renamed to src/nvdec/FFNvDecoder.h
src/nvdecoder/GpuRgbMemory.hpp renamed to src/nvdec/GpuRgbMemory.hpp
src/nvdecoder/ImageSaveGPU.cpp renamed to src/nvdec/ImageSaveGPU.cpp
src/nvdecoder/ImageSaveGPU.h renamed to src/nvdec/ImageSaveGPU.h
src/nvdecoder/Makefile renamed to src/nvdec/Makefile
@@ -46,15 +46,11 @@ LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilte @@ -46,15 +46,11 @@ LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilte
46 46
47 47
48 CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings 48 CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings
49 -# CFLAGS= -g -fPIC -O0 $(INCLUDE) -pthread -lrt -lz -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl  
50 # -DUNICODE -D_UNICODE 49 # -DUNICODE -D_UNICODE
51 50
52 NFLAGS_LIB=-g -c -shared -Xcompiler -fPIC -Xcompiler -fvisibility=hidden 51 NFLAGS_LIB=-g -c -shared -Xcompiler -fPIC -Xcompiler -fvisibility=hidden
53 NFLAGS = $(NFLAGS_LIB) $(INCLUDE) -std=c++11 52 NFLAGS = $(NFLAGS_LIB) $(INCLUDE) -std=c++11
54 53
55 -# CU_SOURCES = $(wildcard ${SRC_DIR}/*.cu)  
56 -# CU_OBJS = $(patsubst %.cu, %.o, $(notdir $(CU_SOURCES)))  
57 -  
58 CU_SOURCES:=$(notdir $(wildcard $(SRC_DIR)/*.cu)) 54 CU_SOURCES:=$(notdir $(wildcard $(SRC_DIR)/*.cu))
59 CU_OBJS:=$(addprefix $(OBJ_DIR)/, $(patsubst %.cu, %.o, $(CU_SOURCES))) 55 CU_OBJS:=$(addprefix $(OBJ_DIR)/, $(patsubst %.cu, %.o, $(CU_SOURCES)))
60 56
@@ -66,7 +62,8 @@ all:$(TARGET) @@ -66,7 +62,8 @@ all:$(TARGET)
66 # 生成最终目标 62 # 生成最终目标
67 $(TARGET):$(OBJS) $(CU_OBJS) | $(LIB_DIR) 63 $(TARGET):$(OBJS) $(CU_OBJS) | $(LIB_DIR)
68 @echo -e "\e[32m""Linking static library $(TARGET)""\e[0m" 64 @echo -e "\e[32m""Linking static library $(TARGET)""\e[0m"
69 -# @ar -rc $@ $^ 65 + @echo -e "ar -rc $@ $^"
  66 + @ar -rc $@ $^
70 67
71 # 若没有lib目录则自动生成 68 # 若没有lib目录则自动生成
72 $(LIB_DIR): 69 $(LIB_DIR):
@@ -74,11 +71,13 @@ $(LIB_DIR): @@ -74,11 +71,13 @@ $(LIB_DIR):
74 71
75 # 生成中间目标文件 72 # 生成中间目标文件
76 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR) 73 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR)
77 -# @echo -e "\e[33m""Building object $@""\e[0m" 74 + @echo -e "\e[33m""Building object $@""\e[0m"
  75 + @echo "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<"
78 @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $< 76 @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<
79 77
80 $(OBJ_DIR)%.o:$(SRC_DIR)/%.cu 78 $(OBJ_DIR)%.o:$(SRC_DIR)/%.cu
81 - @echo "#######################CU_OBJS:$@###############" 79 + @echo -e "\e[33m""Building object $@""\e[0m"
  80 + @echo "$(NVCC) $(NFLAGS) -o $@ $<"
82 $(NVCC) $(NFLAGS) -o $@ $< 81 $(NVCC) $(NFLAGS) -o $@ $<
83 82
84 83
src/nvdecoder/NV12ToRGB.cu renamed to src/nvdec/NV12ToRGB.cu
src/nvdecoder/NvDecoderApi.cpp renamed to src/nvdec/NvDecoderApi.cpp
src/nvdecoder/NvDecoderApi.h renamed to src/nvdec/NvDecoderApi.h
src/nvdecoder/NvJpegEncoder.cpp renamed to src/nvdec/NvJpegEncoder.cpp
src/nvdecoder/NvJpegEncoder.h renamed to src/nvdec/NvJpegEncoder.h
src/nvdecoder/PartMemCopy.cu renamed to src/nvdec/PartMemCopy.cu
src/nvdecoder/RGB2YUV.cu renamed to src/nvdec/RGB2YUV.cu
src/nvdecoder/ResizeImage.cu renamed to src/nvdec/ResizeImage.cu
src/nvdecoder/common_header.h renamed to src/nvdec/common_header.h
src/nvdecoder/cuda_kernels.h renamed to src/nvdec/cuda_kernels.h
src/nvdecoder/define.hpp renamed to src/nvdec/define.hpp
@@ -8,4 +8,4 @@ @@ -8,4 +8,4 @@
8 const cudaError_t error_code = call;\ 8 const cudaError_t error_code = call;\
9 if (cudaSuccess != error_code)\ 9 if (cudaSuccess != error_code)\
10 LOG_ERROR("CUDA error, code: {} reason: {}", error_code, cudaGetErrorString(error_code));\ 10 LOG_ERROR("CUDA error, code: {} reason: {}", error_code, cudaGetErrorString(error_code));\
11 -}  
12 \ No newline at end of file 11 \ No newline at end of file
  12 +}
src/nvdecoder/jpegNPP.cpp-1 renamed to src/nvdec/jpegNPP.cpp-1