C的一个dll只提供了一个缓冲区的指针,怎么在delphi中显示该视频

C的一个dll只提供了一个缓冲区的指针,如何在delphi中显示该视频
我有一个dll文件,是VC编写的,其中有一个函数,说明如下:

函数功能:读取视频图像数据。
入口参数:
CreNo: 连接设备索引号。
出口参数:
*RecvBuf:接收图片数据缓冲区。
返回值: 
成功:数据长度 失败:-1。
函数原型:int32 ndk_GetMemImage(int16 CreNo,int8* RecvBuf)。

我现在想知道如何在delphi的窗口中,显示这个视频?

望大侠指教

------解决方案--------------------
1、将缓冲区复制到文件流中。
2、弄清楚图片格式,然后创建该格式图片,复制(Assign)流到图片文件中。
------解决方案--------------------
剩下的,最简单的就是用Form的Canvas去画图片了
------解决方案--------------------
2、说错了,应该是用LoadFromStream方法,我一开始的想法是直接用图片的Assign方法去复制缓冲区,但这样是不安全的。所以改为用流载入,再操作。
------解决方案--------------------
这个视频流的空间应该是dll分配好的,你只能读这个数据

根据返回的数据长度 应该就是缓冲区的大小和缓冲区指针 读取缓冲区数据 存为图像数据
------解决方案--------------------
这个buffer应该有个大小
------解决方案--------------------
函数功能:读取视频图像数据。 
入口参数: 
CreNo: 连接设备索引号。 
出口参数: 
*RecvBuf:接收图片数据缓冲区。 
返回值: 
成功:数据长度 失败:-1。 
函数原型:int32 ndk_GetMemImage(int16 CreNo,int8* RecvBuf)

既然你知道她是Jpeg格式,也知道返回值就是数据的长度,就是buffer的长度啊。

如果你要安全的代码可以这样:
var
m_videoStrm: TMemoryStream;
m_Img: TJpegImage;
...
m_videoStrm:= TMemoryStream.Create;
m_videoStrm.ReadBuffer(RecvBuf, nbfLength);
...
m_Img.LoadFromStream(m_videoStrm);
Image1.Picture.Bitmap.Canvas.Draw(0,0,m_Img); //Canvas.Draw(0,0, m_Img);
...
------解决方案--------------------
如果只有一个视频帧指针的话应该是一个结构体指针.有编码和格式和分辨率等信息.
就像FFMpeg的帧一样.
------解决方案--------------------
imageP:=InvokeFunc1(CreNo,@buf[1]);// 这里imagep总等于0!!!!!!
Creno是16位的吧,另外要注意buffer区的初始化,将ImageP先赋值为-1在调用函数,如果是0,至少表示函数切实被调用,那么问题应该在dll中了。