What are the IRPs carrying video frames (in the filter driver)?

Dear Sirs,
I am developing a camera upper filter driver and want to catch the IRPs carrying video frames in the filter driver. But I am so sorry that I don’t know what the IRPs carrying video frame are.

My project’s description is below:
camera application(such as msn, amcap2, and so on.)
^
|
my camera upper filter driver I want to develop.
^
|
a good function driver completed by someone.
(this architecture is like uvc/usbcamd/avstream.the difference is the insertion of the filter.
)

I want to catch the IRPs carrying video frames in the filter driver and do something on the video frames in the filter driver. And then continue to pass modified video frames to the application.(I know it is somewhat stupid, but the requirement exists.)
Can you tell me what I should do in order to finish this job?(more detailed, better.)

Thank you for your reading and answering!

xxxxx@gmail.com wrote:

I am developing a camera upper filter driver and want to catch the IRPs carrying video frames in the filter driver. But I am so sorry that I don’t know what the IRPs carrying video frame are.

Wouldn’t your first step in such a project be to create a simple filter
and print out to the kernel debugger all the ioctls you get? That would
certainly give you a huge shove in the right direction, and it would
allow to debug the whole filtering process before moving on to the more
complicated tasks.

My project’s description is below:
camera application(such as msn, amcap2, and so on.)
^
|
my camera upper filter driver I want to develop.
^
|
a good function driver completed by someone.
(this architecture is like uvc/usbcamd/avstream.the difference is the insertion of the filter.
)

I want to catch the IRPs carrying video frames in the filter driver and do something on the video frames in the filter driver. And then continue to pass modified video frames to the application.(I know it is somewhat stupid, but the requirement exists.)
Can you tell me what I should do in order to finish this job?(more detailed, better.)

All the devices you mention are kernel streaming devices. That means
they will use the kernel streaming ioctls, like IOCTL_KS_PROPERTY and
IOCTL_KS_READ_STREAM.

However, this job is not as simple as you imply. Many capture devices
deliver compressed video, like motion JPEG or MPEG. In that case, you
won’t be able to manipulate the frames without decompressing and
recompressing them, and you don’t want to do that. You will certainly
need to watch all of the property messages so you can figure out what
format is being sent. It’s not trivial.

(I know it is somewhat stupid, but the requirement exists.)

I’m getting more and more irritated by the number of queries here that
include lines like this. An engineer is supposed to be more than just a
mindless stooge. As an employee, when you are told to “go accomplish
task A”, your first responsibility should be to see whether “task A”
makes sense and is achievable. When an uninformed person establishes a
requirement that doesn’t make sense, an employee that cares about his
company will stand firm to question the requirement, rather than blindly
go forth to implement a hack that doesn’t make good sense.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.