Click here to Skip to main content
Licence 
First Posted 6 Oct 2005
Views 221,749
Bookmarked 111 times

Programming DirectShow applications in C#: A set of tutorials

By | 6 Oct 2005 | Article
A collection of tutorials for programming DirectShow in C#.

Sample Image

Introduction

Besides the Microsoft SDK documentation, the information needed to program DirectShow applications is limited. This web site supplies many of the most useful references for programming these applications in C#. In order to continue this tradition, I have created a help file (.chm) that contains ten tutorials that illustrate how DirectShow applications can be written in C#.

Background

In general, the resources for programming DirectShow applications are scarce. In the past few months, I have written many tutorials that illustrate how to perform many common tasks in DirectShow with C#. I have put all these tutorials in one .chm file and provided access to all the source code samples from it. Moreover, the CodeProject web site has a nice messaging system to support the users of the code provided on this site, which should make these tutorials even more useful.

Using the code

I have provided a Visual Studio project file for each tutorial, and I have also included a .cmd file to compile it from the command line. Sometimes, these .cmd files contain references that need to be changed to reflect your local settings. I have mentioned these in the tutorial "readme.txt" file. Some tutorials will only run on 32-bit machines.

Points of Interest

The tutorials show how a simple multimedia player, a simple capture, a jukebox, and an append utility application can be written. Moreover, we have implemented versions of the Picture-In-a-Picture, custom allocator/presenter, custom image compositor samples from the DirectShow SDK in C#. And we have implemented the functionality of the EzRbg24 filter in C#.

Limitations and known issues

As mentioned previously, some samples will only work correctly on 32-bit machines. Moreover, I don't claim that these are optimal solutions. Many years ago, when I was teaching a VC++/MFC class, one student asked me where I was taking the code that I was using during the lectures. I replied that I had two directories with more than eighty samples in each of them, that I had written over a while. I was just picking some of these and brushed them up a little before presenting them and asking the students to modify or extend them (during the lectures or for assignments). I give these samples in the same spirit; but I'm still a long way from having more than hundred and sixty samples to chose from ;-)

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

daniel049



United States United States

Member

You can read my blog entries at:
http://wwww.informikon.com/blog/

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralGreat article !!... I need some help regarding video streaming.... Pinmembersidsidz21:06 31 Mar '07  
QuestionBuilding a DirectShow application PinmemberMaynka1:59 27 Mar '07  
AnswerRe: Building a DirectShow application Pinmemberdaniel0493:37 29 Mar '07  
QuestionCan't find the resource file Pinmemberhdtntran13:15 18 Jan '07  
AnswerRe: Can't find the resource file Pinmemberdaniel0494:59 21 Jan '07  
GeneralThrow the pointer to unmanaged Pinmemberchernobyl20:37 24 Nov '06  
GeneralRe: Throw the pointer to unmanaged Pinmemberdaniel0497:24 25 Nov '06  
Probably the easiest way is to use a sample grabber with the BufferCB method. The 2nd argument is a pointer to "the bits" of the frame. Then you can marshal the pointer to a native P/Invoked function.
 
IIRC opencv is not easy to use from C# due to its own data structures for many common constructs.
 
-daniel
GeneralThank you and question PinmemberJohn Whiteman3:35 22 Sep '06  
GeneralRe: Thank you and question Pinmemberdaniel0495:50 24 Sep '06  
GeneralRe: Thank you and question PinmemberJohn Whiteman9:48 24 Sep '06  
GeneralCan't read help file. PinmemberMichael Fogle5:58 21 Sep '06  
GeneralRe: Can't read help file. Pinmemberdaniel0496:07 21 Sep '06  
GeneralRe: Can't read help file. PinmemberMichael Fogle6:12 21 Sep '06  
GeneralRe: Can't read help file. PinmemberMember 73093911:52 22 Mar '08  
GeneralThanks for excellent work PinmemberTunca Bergmen2:35 14 Apr '06  
GeneralRe: Thanks for excellent work Pinmemberdaniel0498:10 14 Apr '06  
GeneralNetwork Streaming Pinmemberduzinga21:23 17 Mar '06  
GeneralRe: Network Streaming Pinmemberdaniel0497:27 18 Mar '06  
GeneralRe: Network Streaming Pinmemberduzinga14:41 21 Mar '06  
GeneralRe: Network Streaming Pinmemberdaniel0492:27 23 Mar '06  
GeneralRe: Network Streaming Pinmemberbignev721:16 25 Jan '07  
GeneralRe: Network Streaming PinmembersalmanMEng9:37 14 Apr '07  
GeneralPlayCap Sample PinmemberFreddy#22:28 18 Dec '05  
GeneralRe: PlayCap Sample Pinmemberdaniel0493:04 19 Dec '05  
GeneralRe: PlayCap Sample PinmemberFreddy#6:02 19 Dec '05  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web03 | 2.5.120529.1 | Last Updated 6 Oct 2005
Article Copyright 2005 by daniel049
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid