FusionAndTailor.cuh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include <cuda_runtime.h>
  2. #include <device_functions.h>
  3. #include <cuda.h>
  4. #include <device_launch_parameters.h>
  5. #include <stdio.h>
  6. #include <opencv2/core/cuda.hpp>
  7. #define IPAD 2
  8. #define SHARED_MEMORY_SIZE 32
  9. #define SHARED_MEMORY_SIZE_Y 32
  10. #define BLOCK_SIZE SHARED_MEMORY_SIZE
  11. namespace YUVTailorAndBlender {
  12. enum COLORSPACE
  13. {
  14. RGB = 0x0000,
  15. I420 = 0x0001,
  16. NV12 = 0x0002,
  17. NV21 = 0x0003,
  18. YV12 = I420,
  19. YCbCr = NV12,
  20. };
  21. extern __host__ void TurnNV12ToI420Classics(unsigned char* pNV12, int nWidth, int nHeight,
  22. unsigned char* pI420, int nPitch);
  23. extern __host__ void TurnNV12ToI420Dissociative(unsigned char* pNV12, int nWidth, int nHeight,
  24. unsigned char* pI420, int nPitch);
  25. extern __host__ void TurnCUDAFormatToI420(unsigned char* dataY, unsigned char* dataUV, size_t pitchY, size_t pitchUV, unsigned char* dstImage, int width, int height,CUstream* pStream = nullptr);
  26. extern __host__ void CopyPlane(
  27. unsigned char* pSrc, int nSrcWidth, int nSrcHeight, int nSrcPitch,
  28. unsigned char* pDst, int nDstWidth, int nDstHeight, int nDstPitch,
  29. int nCopyWidth, int nCopyHeight,
  30. int nCopyStartX, int nCopyStartY,
  31. unsigned int Type,
  32. CUstream* pStream
  33. );
  34. extern __host__ void CropI420(
  35. unsigned char* pSrcY, int nSrcYPitch,
  36. unsigned char* pSrcU, int nSrcUPitch,
  37. unsigned char* pSrcV, int nSrcVPitch,
  38. unsigned char* pDstY, int nDstYPitch,
  39. unsigned char* pDstU, int nDstUPitch,
  40. unsigned char* pDstV, int nDstVPitch,
  41. int nCropWidth, int nCropHeight,
  42. int nCropStartX, int nCropStartY
  43. );
  44. extern __host__ void GradientBlenderYUV(
  45. unsigned char* pRelateY, int YRelateStride,
  46. unsigned char* pRelateU, int URelateStride,
  47. unsigned char* pRelateV, int VRelateStride,
  48. unsigned char* pTargetY, int YTargetStride,
  49. unsigned char* pTargetU, int UTargetStride,
  50. unsigned char* pTargetV, int VTargetStride,
  51. int width, int height,
  52. float* pRelateMask, float* pTargetMask, int MaskStride,
  53. unsigned char* pDstY, int DstYStride,
  54. unsigned char* pDstU, int DstUStride,
  55. unsigned char* pDstV, int DstVStride,
  56. int DstWidth, int DstHeight
  57. );
  58. void __global__ TurnNV12ToI420ClassicsKernal(unsigned char* pNV12, int nWidth, int nHeight,
  59. unsigned char* pI420, int nPitch);
  60. void __global__ CopyPlaneKernal(unsigned char* pNV12Y, int nWidth, int nHeight,
  61. unsigned char* pI420Y, int nPitch);
  62. void __global__ _CopyPlaneKernal(
  63. unsigned char* pSrc, int nSrcWidth, int nSrcHeight, int nSrcPitch,
  64. unsigned char* pDst, int nDstWidth, int nDstHeight, int nDstPitch,
  65. int nCopyWidth, int nCopyHeight,
  66. int nCopyStartX, int nCopyStartY,
  67. int nChannel);
  68. void __global__ TurnNV12ToI420DissociativeKernalUV(unsigned char* pNV12UV, int nWidth, int nHeight,
  69. unsigned char* pI420UV, int nPitch);
  70. void __global__ TurnCUDAFormatToI420Kernal(unsigned char* dataY, unsigned char* dataUV, size_t pitchY, size_t pitchUV, unsigned char* I420, int width, int height);
  71. void __global__ GradientBlenderYUVKernal(
  72. unsigned char* pRelateY, int YRelateStride,
  73. unsigned char* pRelateU, int URelateStride,
  74. unsigned char* pRelateV, int VRelateStride,
  75. unsigned char* pTargetY, int YTargetStride,
  76. unsigned char* pTargetU, int UTargetStride,
  77. unsigned char* pTargetV, int VTargetStride,
  78. int width, int height,
  79. float* pRelateMask, float* pTargetMask, int MaskStride,
  80. unsigned char* pDstY, int DstYStride,
  81. unsigned char* pDstU, int DstUStride,
  82. unsigned char* pDstV, int DstVStride
  83. );
  84. void __global__ CropI420Kernel(
  85. unsigned char* pRelateY, int YRelateStride,
  86. unsigned char* pRelateU, int URelateStride,
  87. unsigned char* pRelateV, int VRelateStride,
  88. unsigned char* pTargetY, int YTargetStride,
  89. unsigned char* pTargetU, int UTargetStride,
  90. unsigned char* pTargetV, int VTargetStride,
  91. int nCropWidth, int nCropHeight,
  92. int nCropX,int nCropY,
  93. int DstWidth, int DstHeight
  94. );
  95. cudaError_t setColorSpace2(float hue);
  96. }