Hi,

I am writing a VfW capture driver DLL(user-mode). But I am facing
some problems in giving the data back to the client from the driver. I
am using client as WME.

I have followed the steps given in the NT4.0 DDK also the sample.
The driver loading, opening, closing, adding buffer's are happening
properly. The client is adding a new buffer after filling and giving old
buffer(which it has given before) back to the client by doing a callback
from the DLL. I am setting the dwFlag header as lpVideoHdr->dwFlags |=
VHDR_DONE;

Actually the driver should convert the H.261 data to uncompressed
video samples. But in order to ensure that driver is giving data
properly to the client, I want to give some static image. I am filling
the lpData member like the following.

memset(lpVideoHdr->lpData, (UCHAR)255, lpVideoHdr->dwBufferLength);
lpVideoHdr->dwBytesUsed = lpVideoHdr->dwBufferLength;

And by using DriverCallback function I am giving the buffer to client.
But client is displaying the data as "black" always. When I click
encoding it is creating a new file but without any data.

I am very much new to video programming. I am doing something wrong.
Please anybody can advice/help to correct me. I have only done audio
related applications which all are standard exe's.

Also is there anyway, I can use DirectX / VCM functions to convert
H.261 video data to RGB/YUV format? or Do I have to go for some open
source code?

It would really help me if anybody can advice or give me some hints
for the above.

Thanks,
Sreeram.

Re: VfW capture driver DLL doubts by Sreeram

Sreeram
Wed May 26 04:33:16 CDT 2004

I could able to solve the problem myself.

Thanks.

Sreeram wrote:
> Hi,
>
> I am writing a VfW capture driver DLL(user-mode). But I am facing
> some problems in giving the data back to the client from the driver. I
> am using client as WME.
>
> I have followed the steps given in the NT4.0 DDK also the sample. The
> driver loading, opening, closing, adding buffer's are happening
> properly. The client is adding a new buffer after filling and giving old
> buffer(which it has given before) back to the client by doing a callback
> from the DLL. I am setting the dwFlag header as lpVideoHdr->dwFlags |=
> VHDR_DONE;
>
> Actually the driver should convert the H.261 data to uncompressed
> video samples. But in order to ensure that driver is giving data
> properly to the client, I want to give some static image. I am filling
> the lpData member like the following.
>
> memset(lpVideoHdr->lpData, (UCHAR)255, lpVideoHdr->dwBufferLength);
> lpVideoHdr->dwBytesUsed = lpVideoHdr->dwBufferLength;
>
> And by using DriverCallback function I am giving the buffer to client.
> But client is displaying the data as "black" always. When I click
> encoding it is creating a new file but without any data.
>
> I am very much new to video programming. I am doing something wrong.
> Please anybody can advice/help to correct me. I have only done audio
> related applications which all are standard exe's.
>
> Also is there anyway, I can use DirectX / VCM functions to convert
> H.261 video data to RGB/YUV format? or Do I have to go for some open
> source code?
>
> It would really help me if anybody can advice or give me some hints
> for the above.
>
> Thanks,
> Sreeram.
>
>
>