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);
}
}
는 그러나 저장된 이미지는 아무도 내가 뭘 잘못 여기에 나를 도와 드릴까요 .. 감사이
것 같습니다.
'cuMemcpyDtoHAsync'보다는'cuMemcpyDtoH '를 사용하여 차이가 있는지 확인하십시오. – talonmies
아니, 출력은 여전히 – Hadi
입니다.이 경우 내가 볼 수있는 CUDA 프로그래밍 문제가 없습니다. 분명히 잘못 될 수있는 유일한 점은 프레임 저장을 시작하기 전에 완료되지 않은 비동기식 메모리 전송을 사용한다는 것입니다. 그러나 그것은 도움이되지 않았습니다. 따라서 두 가지 선택 중 하나가 있습니다. GPU에서 데이터가 이미 잘못 전달 되었기 때문에 GPU에서 데이터가 잘못 전달 된 것입니다. 그렇지 않으면 세이브 루틴에서받은 데이터가 전달중인 데이터와 다른 것으로 예상됩니다. 여기에 나와있는 것은이 두 가지 문제 중 하나를 해결하는 데 도움이되지 않습니다. – talonmies