Dependencies: The JVET-I0022 libraries need to link the caffe libraries, before compiling the JVET-I0022, you must implement the compiling of caffe libraries, see more details at https://github.com/Hikvision-Codec/caffe-DFP Compiling: *If you turn on the "CPU_ONLY" mode when you compiling your caffe-DFP, you also must set the 'JVET_I0022_CPU_ONLY' to 1 in your JEM code which is defined in the source/Lib/TLibCommon/TypeDef.h; *For linux user, we set the caffe dependencies by "find_package" in the "CMakeLists.txt" of "JEM", so you must set your own caffe path in the "JVET-I0022/CMakeLists.txt", the default path of "caffe-DFP" is the folder which is the same level as "JVET-I0022"; Compiling commands: cmake ./ -DCMAKE_BUILD_TYPE=Release make *For windows users, the users only need to deploy the “IncludeDirectories” and “AdditionalDependencies” of libcaffe and its NugetPackages which would be generated during the caffe windows compiling. Here is an example of VC120, the AdditionalDependencies Pathes should be configured as follows(you must set your own Caffe_PATH and Cuda_PATH): (Caffe_PATH)\NugetPackages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-64; (Caffe_PATH)\NugetPackages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-64\lib; (Caffe_PATH)\NugetPackages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-64\lib; (Caffe_PATH)\NugetPackages\boost_system-vc120.1.59.0.0\lib\native\address-model-64\lib; (Caffe_PATH)\NugetPackages\boost_thread-vc120.1.59.0.0\lib\native\address-model-64\lib; (Caffe_PATH)\NugetPackages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-64\lib; (Caffe_PATH)\NugetPackages\boost_python2.7-vc120.1.59.0.0\lib\native\address-model-64\lib; (Caffe_PATH)\NugetPackages\glog.0.3.3.0\build\native\lib\$(Platform)\v120\$(Configuration)\dynamic; (Caffe_PATH)\NugetPackages\gflags.2.1.2.1\build\native\$(Platform)\v120\static\Lib; (Caffe_PATH)\NugetPackages\protobuf-v120.2.6.1\build\native\lib\$(Platform)\v120\$(Configuration); (Caffe_PATH)\NugetPackages\OpenBLAS.0.2.14.1\lib\native\lib\$(Platform); (Caffe_PATH)\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\lib\$(Platform); (Caffe_PATH)\caffe-windows\Build\$(Platform)\$(Configuration); GPU Optional: (Cuda_PATH)\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\$(Platform); (Cuda_PATH)\NVIDIA GPU Computing Toolkit\CUDA\v8.0\cudnn-8.0-windows7-x64-v5.1\cuda\lib\$(Platform); AdditionalDependencies: libcaffe.lib libglog.lib gflagsd.lib gflags_nothreadsd.lib hdf5.lib hdf5_hl.lib libprotobuf.lib libopenblas.dll.a GPU Optional: cublas.lib cuda.lib curand.lib cudart.lib cudnn.lib AdditionalIncludeDirectories: (Caffe_PATH)\NugetPackages\boost.1.59.0.0\lib\native\include; (Caffe_PATH)\NugetPackages\gflags.2.1.2.1\build\native\include; (Caffe_PATH)\NugetPackages\glog.0.3.3.0\build\native\include; (Caffe_PATH)\NugetPackages\protobuf-v120.2.6.1\build\native\include; (Caffe_PATH)\NugetPackages\OpenBLAS.0.2.14.1\lib\native\include; (Caffe_PATH)\caffe-windows\include; GPU Optional: (Cuda_PATH)\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include; Environment path: (Caffe_PATH)\caffe-windows\Build\$(Platform)\$(Configuration); Here is the extra JVET-I0022 configurations compared with JEM7.0: For Encoder: UseGPU: /Use GPU or not, the default setting is 0, the command format is '-gpu'; GPUID: //The ID of the GPU you choose to use, the default setting is 0. The command format is '-gpuid'; CNNFilterI: 1 //Whether use the CNN filter for the I frames, the default setting is 1. The command format is '-cnnfi'; CNNFilterModelFileI: //The path of the file including the network structure, which is with postfix ".prototxt". The command format is '-cnnfmi' CNNFilterTrainFileI : //The path of the file including the trained parameters, which is with postfix ".caffemodel". The command format is '-cnnfti' For Decoder, You need to set the the CNN files in your scripts: -cnnfmi: //The path of the file including the network structure, which is with postfix ".prototxt"; -cnnfti: //The path of the file including the trained parameters, which is with postfix ".caffemodel"; -gpu: //Use GPU or not, the default setting is 0 -gpuid: //The ID of the GPU you choose to use, the default setting is 0 Our CNN model and prototxt files were stored under the folder of bin, we also give the scripts and configurations in the folder of bin and cfg for demonstration. If you have any questions or bugs reports please contact yaojiabao@hikvision.com