Kaynağa Gözat

nv-filters: Remove stage image for Video FX

When transferring images within the GPU, there is no requirement to
create stage images.

Signed-off-by: pkv <[email protected]>
pkv 1 ay önce
ebeveyn
işleme
1c24881f07
1 değiştirilmiş dosya ile 4 ekleme ve 14 silme
  1. 4 14
      plugins/nv-filters/nvidia-videofx-filter.c

+ 4 - 14
plugins/nv-filters/nvidia-videofx-filter.c

@@ -68,7 +68,6 @@ struct nvvfx_data {
 	NvCVImage *BGR_src_img;     // src img in BGR on GPU
 	NvCVImage *A_dst_img;       // mask img on GPU
 	NvCVImage *dst_img;         // Greenscreen: alpha mask texture; blur: texture initialized from d3d11 (RGBA, chunky, u8)
-	NvCVImage *stage;           // used for transfer to texture
 	unsigned int version;
 	NvVFX_StateObjectHandle stateObjectHandle;
 
@@ -176,7 +175,6 @@ static void nvvfx_filter_actual_destroy(void *data)
 		NvCVImage_Destroy(filter->BGR_src_img);
 		NvCVImage_Destroy(filter->A_dst_img);
 		NvCVImage_Destroy(filter->dst_img);
-		NvCVImage_Destroy(filter->stage);
 		if (filter->filter_id != S_FX_AIGS) {
 			NvCVImage_Destroy(filter->blur_BGR_dst_img);
 			NvCVImage_Destroy(filter->RGBA_dst_img);
@@ -588,14 +586,7 @@ static void init_images(struct nvvfx_data *filter)
 		NvCVImage_Alloc(filter->A_dst_img, width, height, NVCV_A, NVCV_U8, NVCV_CHUNKY, NVCV_GPU, 1);
 	}
 
-	/* 6. Create stage NvCVImage which will be used as buffer for transfer */
-	vfxErr = NvCVImage_Create(width, height, NVCV_RGBA, NVCV_U8, NVCV_CHUNKY, NVCV_GPU, 1, &filter->stage);
-	vfxErr = NvCVImage_Alloc(filter->stage, width, height, NVCV_RGBA, NVCV_U8, NVCV_CHUNKY, NVCV_GPU, 1);
-	if (vfxErr != NVCV_SUCCESS) {
-		goto fail;
-	}
-
-	/* 7. Init blur images */
+	/* 6. Init blur images */
 	if (filter->filter_id == S_FX_BLUR || filter->filter_id == S_FX_BG_BLUR) {
 		if (!init_blur_images(filter))
 			goto fail;
@@ -638,7 +629,7 @@ static bool process_texture(struct nvvfx_data *filter)
 	}
 
 	/* 2. Convert to BGR. */
-	vfxErr = NvCVImage_Transfer(filter->src_img, filter->BGR_src_img, 1.0f, process_stream, filter->stage);
+	vfxErr = NvCVImage_Transfer(filter->src_img, filter->BGR_src_img, 1.0f, process_stream, NULL);
 	if (vfxErr != NVCV_SUCCESS) {
 		const char *errString = NvCV_GetErrorStringFromCode(vfxErr);
 		error("Error converting src to BGR img; error %i: %s", vfxErr, errString);
@@ -669,8 +660,7 @@ static bool process_texture(struct nvvfx_data *filter)
 			goto fail;
 		}
 
-		vfxErr = NvCVImage_Transfer(filter->RGBA_dst_img, filter->blur_dst_img, 1.0f, filter->stream,
-					    filter->stage);
+		vfxErr = NvCVImage_Transfer(filter->A_dst_img, filter->dst_img, 1.0f, filter->stream, NULL);
 		if (vfxErr != NVCV_SUCCESS) {
 			const char *errString = NvCV_GetErrorStringFromCode(vfxErr);
 			error("Error transferring mask to alpha texture; error %i: %s ", vfxErr, errString);
@@ -709,7 +699,7 @@ static bool process_texture(struct nvvfx_data *filter)
 			goto fail;
 		}
 
-		vfxErr = NvCVImage_Transfer(filter->A_dst_img, filter->dst_img, 1.0f, filter->stream, filter->stage);
+		vfxErr = NvCVImage_Transfer(filter->RGBA_dst_img, filter->blur_dst_img, 1.0f, filter->stream, NULL);
 		if (vfxErr != NVCV_SUCCESS) {
 			const char *errString = NvCV_GetErrorStringFromCode(vfxErr);
 			error("Error transferring mask to alpha texture; error %i: %s ", vfxErr, errString);