17 opencv
18 cuda rc.local
https://www.cnblogs.com/king-dom/p/17371747.html
https://blog.csdn.net/weixin_43772810/article/details/126760777
https://github.com/dusty-nv/jetson-utils/blob/master/cuda/cudaYUV-NV12.cu
https://github.com/dusty-nv/jetson-utils/blob/master/cuda/cudaYUV-NV12.cu
https://docs.nvidia.com/vpi/algo_imageconv.html
#include <stdio.h>
__global__
void NV12toRGB(char* input,
char* output,
char* uvPtr,
size_t width,
size_t height)
{
size_t x, y, pixel, pxGroup, uvIndex, outIndex;
x = (blockIdx.x * blockDim.x) + threadIdx.x;
y = (blockIdx.y * blockDim.y) + threadIdx.y;
if (x >= width)
return;
if (y >= height)
return;
//pixel calculations
float r, g, b;
char cb, cr, yp;
pixel = y * width + x;
pxGroup = pixel/4;
uvIndex = pxGroup*2;
outIndex = pixel*3;
yp = input[pixel];
cb = uvPtr[uvIndex];
cr = uvPtr[uvIndex+1];
//calc rgb values
b = (yp+2.032*(cb-128)) + 0.5;
g = (yp-0.395*(cb-128)-0.581*(cr-128)) + 0.5;
r = (yp+1.140*(cr-128)) + 0.5;
//Make the pixel
output[outIndex] = (b < 0 ? 0 : (b > 0xff ? 0xff : b)); //saturate
output[outIndex+1] = (g < 0 ? 0 : (g > 0xff ? 0xff : g));
output[outIndex+2] = (r < 0 ? 0 : (r > 0xff ? 0xff : r));
}
cudaError_t cudaNV12toRGB(char* input, char* output, size_t width, size_t height)
{
if( !input || !output )
return cudaErrorInvalidDevicePointer;
size_t ySize = width*height;
char* pUV = input + ySize;
const dim3 blockDim(8, 8, 1);
const dim3 gridDim(width/blockDim.x, height/blockDim.y, 1);
NV12toRGB<<<gridDim, blockDim>>>(input, output, pUV, width, height);
return cudaDeviceSynchronize();
}19 nginx io
https://xly0713.github.io/post/epoll-shi-jian-qu-dong/
https://www.cnblogs.com/nufangrensheng/p/3516629.html
https://cloud.tencent.com/developer/article/1835294
https://www.cnblogs.com/limeiyang/p/16575628.html
https://zhuanlan.zhihu.com/p/392588996
22 k8s pv pcv
https://www.cnblogs.com/limeiyang/p/16575628.html
https://github.com/ClusterHQ/flocker
https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/