我試圖使用CUDA解碼器項目中的代碼將解碼圖像文件保存爲BMP圖像。將輸出幀保存爲圖像文件CUDA解碼器
if (g_bReadback && g_ReadbackSID)
{
CUresult result = cuMemcpyDtoHAsync(g_bFrameData[active_field], pDecodedFrame[active_field], (nDecodedPitch * nHeight * 3/2), g_ReadbackSID);
long padded_size = (nWidth * nHeight * 3);
CString output_file;
output_file.Format(_T("image/sample_45.BMP"));
SaveBMP(g_bFrameData[active_field],nWidth,nHeight,padded_size,output_file);
if (result != CUDA_SUCCESS)
{
printf("cuMemAllocHost returned %d\n", (int)result);
}
}
但保存的圖像看起來像這樣
任何人可以幫助我在這裏我在做什麼錯。謝謝。
嘗試使用'cuMemcpyDtoH'而不是'cuMemcpyDtoHAsync'並查看它是否有任何區別。 – talonmies
nope輸出仍然是相同的 – Hadi
在這種情況下,您沒有CUDA編程問題,我可以看到。唯一明顯可能出錯的是您正在使用異步存儲器傳輸,在開始保存幀之前可能無法完成這項工作。但是這並沒有幫助。因此,這兩種選擇都是 - 數據已經從GPU上錯誤地進入(這可能意味着它正在進入),或者保存例程期望它接收到的數據與正在傳遞的數據不同。這裏顯示的任何內容都可以幫助解決這兩個問題中的任何一個 – talonmies