最近,我一直在阅读Nvidia cuda5.0 cudaDecodeGL项目的SDK.This项目,将MPEG2文件转换为NV12文件,然后在内核函数中将NV12文件转换为ARGB文件,最后将该ARGB文件呈现并显示在OpenGL窗口中。实际上,中间产生的NV12文件不是输出的,而我想要得到NV12文件。如果有人能告诉我该怎么做,我会非常感激的。
发布于 2013-08-18 03:43:35
提到白纸
对框架的后处理是通过cudaPostProcessFrame()映射框架来完成的。这将返回指向经过NV12解码的帧的指针。
此函数包含(并使用)在源文件videoDecodeGL.cpp中,该源文件包含在样本工程中。
这个函数只有一个实际用途(函数调用)。它被从copyDecodedFrameToTexture函数中调用。这个函数中的解码帧就是您想要的。如果在调用cudaPostProcessFrame之前查看此函数,您将看到以下代码:
// If streams are enabled, we can perform the readback to the host while the kernel is executing
if (g_bReadback && g_ReadbackSID)
{
CUresult result = cuMemcpyDtoHAsync(g_bFrameData[active_field], pDecodedFrame[active_field], (nDecodedPitch * nHeight * 3 / 2), g_ReadbackSID);这显示了如何/在何处/何时将解码后的帧抓取回主机,如果您愿意的话。此时,您将不得不排队帧,并保存到一个文件,如果这是您想要做的。
https://stackoverflow.com/questions/18275037
复制相似问题