Introduction |
|
xi | |
|
|
|
|
3 | (10) |
|
|
5 | (1) |
|
|
6 | (2) |
|
|
6 | (2) |
|
|
8 | (1) |
|
Connections Between Filters |
|
|
8 | (2) |
|
|
9 | (1) |
|
|
10 | (3) |
|
The Life Cycle of a Sample |
|
|
10 | (3) |
|
|
13 | (16) |
|
|
13 | (3) |
|
|
14 | (2) |
|
|
16 | (1) |
|
Building a Filter Graph from Scratch |
|
|
16 | (6) |
|
Creating Filter Graphs with Rendering Pins |
|
|
20 | (1) |
|
Simplifying Design Tasks with Intelligent Connect |
|
|
20 | (2) |
|
Capturing Video from a Digital Camcorder to Disk |
|
|
22 | (3) |
|
Using Windows Media for File Storage |
|
|
25 | (4) |
|
Setting Filter Properties |
|
|
26 | (3) |
|
Programming DirectShow Applications |
|
|
29 | (22) |
|
|
30 | (4) |
|
|
30 | (1) |
|
Initializing and Releasing COM |
|
|
31 | (1) |
|
Creating an Instance of a COM Object |
|
|
31 | (1) |
|
Querying Interfaces in COM Objects |
|
|
32 | (1) |
|
|
33 | (1) |
|
Configuration of Visual Studio .NET for DirectShow Programming |
|
|
34 | (7) |
|
DSRender: A DirectShow Media Player in C++ |
|
|
35 | (1) |
|
|
35 | (2) |
|
Understanding DSRender Line by Line |
|
|
37 | (2) |
|
Saving a Filter Graph to a .GRF File |
|
|
39 | (2) |
|
DSBuild: Building a Filter Graph (Mostly) Manually |
|
|
41 | (10) |
|
|
42 | (4) |
|
|
46 | (5) |
|
Part II Capture and Editing |
|
|
|
Capturing Audio with DirectShow |
|
|
51 | (20) |
|
Capturing Audio with DSAudioCap |
|
|
51 | (14) |
|
Examining the main Function |
|
|
52 | (2) |
|
Enumerating System Devices in DirectShow |
|
|
54 | (3) |
|
Enumerating Input Pins on an Audio Capture Device |
|
|
57 | (3) |
|
Connecting DirectShow Filters |
|
|
60 | (3) |
|
Adding a Filter by Its Class ID |
|
|
63 | (1) |
|
Using the Audio Capture Filter Graph |
|
|
63 | (1) |
|
Adding a File Writer Filter |
|
|
64 | (1) |
|
Executing the DSAudioCap Filter Graph |
|
|
64 | (1) |
|
Adding Audio Compression with DSAudioCapCom |
|
|
65 | (6) |
|
Capturing Audio and Video from a Webcam |
|
|
71 | (10) |
|
|
72 | (1) |
|
|
72 | (4) |
|
Examining and Changing a Filter's Property Pages |
|
|
76 | (2) |
|
Working with the Filter Graph Manager of a Capture Graph |
|
|
78 | (1) |
|
Building the DSWebcamCap Filter Graph |
|
|
78 | (3) |
|
Capture and Output Using DV Camcorders |
|
|
81 | (36) |
|
|
82 | (7) |
|
Using IEEE 1394, FireWire, iLink, and USB 2.0 |
|
|
83 | (2) |
|
Understanding DV Stream Types |
|
|
85 | (1) |
|
|
86 | (1) |
|
Processing Video and Audio Streams |
|
|
87 | (1) |
|
|
88 | (1) |
|
|
89 | (28) |
|
Modular C++ Programming and WinCap |
|
|
93 | (1) |
|
|
94 | (3) |
|
Selecting a Digital Camcorder |
|
|
97 | (4) |
|
Issuing Transport Commands |
|
|
101 | (1) |
|
|
102 | (3) |
|
Capturing Video to an AVI File |
|
|
105 | (3) |
|
|
108 | (2) |
|
Getting Device Information |
|
|
110 | (2) |
|
Issuing Raw AV/C Commands |
|
|
112 | (5) |
|
Working with TV Tuners and Pausing Live Video Streams |
|
|
117 | (28) |
|
Working with TV Tuners in DirectShow |
|
|
119 | (4) |
|
Using WinCap for TV Capture |
|
|
123 | (7) |
|
Selecting a TV Tuner Device |
|
|
123 | (5) |
|
|
128 | (2) |
|
Buffering DirectShow Media Streams |
|
|
130 | (15) |
|
Building a Buffering TV Application |
|
|
131 | (14) |
|
Editing Media Using DirectShow Editing Services |
|
|
145 | (22) |
|
Understanding DES Concepts |
|
|
146 | (5) |
|
|
148 | (3) |
|
|
151 | (16) |
|
Creating a Timeline and Track Group |
|
|
151 | (1) |
|
Adding a Track to a Timeline |
|
|
152 | (1) |
|
|
153 | (1) |
|
|
154 | (1) |
|
Setting Transition Properties |
|
|
155 | (1) |
|
Determining the Media Type of a Source Clip |
|
|
156 | (2) |
|
|
158 | (2) |
|
Rendering a Preview Movie |
|
|
160 | (2) |
|
Rendering a Timeline to an AVI File |
|
|
162 | (2) |
|
Improving Video Output Quality |
|
|
164 | (3) |
|
Using the Video Mixing Renderer |
|
|
167 | (24) |
|
Video Renderers Available to DirectShow Programmers |
|
|
168 | (4) |
|
The (Plain Old Vanilla) Video Renderer |
|
|
168 | (1) |
|
|
169 | (1) |
|
The Video Mixing Renderer 7 |
|
|
170 | (1) |
|
The Video Mixing Renderer 9 |
|
|
171 | (1) |
|
Opening the Hood of the VMR |
|
|
172 | (3) |
|
|
173 | (2) |
|
Working with the VMR: A Picture-in-Picture Application |
|
|
175 | (16) |
|
|
176 | (3) |
|
Programming the VMR for Picture-in-Picture Display |
|
|
179 | (3) |
|
Programming the VMR ProcAmp |
|
|
182 | (5) |
|
Using Direct3D with the VMR |
|
|
187 | (4) |
|
Part III DirectShow Filters for Video Processing |
|
|
|
Writing a DirectShow Transform Filter |
|
|
191 | (34) |
|
Examining Data Flow Across the Filter Graph |
|
|
192 | (10) |
|
Understanding Media Types |
|
|
195 | (3) |
|
Working with Media Samples |
|
|
198 | (1) |
|
|
199 | (2) |
|
Selecting a Base Class for a DirectShow Filter |
|
|
201 | (1) |
|
|
202 | (23) |
|
Creating the Class Definition for YUVGray |
|
|
203 | (1) |
|
Implementing Media Type Selection in a Transform Filter |
|
|
204 | (4) |
|
Selecting Buffer Size in a Transform Filter |
|
|
208 | (3) |
|
Implementing the Transform Method |
|
|
211 | (12) |
|
|
223 | (2) |
|
Using the Sample Grabber Filter |
|
|
225 | (40) |
|
Exploring the Histogram Application |
|
|
227 | (13) |
|
Creating a Filter Graph Containing a Sample Grabber |
|
|
228 | (5) |
|
Defining the Sample Grabber Callback Object |
|
|
233 | (3) |
|
Processing Sample Grabber Media Samples |
|
|
236 | (4) |
|
Exploring the Grabber Sample Source Code |
|
|
240 | (25) |
|
Defining and Implementing the Filter Class |
|
|
241 | (8) |
|
Defining and Implementing the Allocator Class |
|
|
249 | (6) |
|
Defining and Implementing the Input Pin Class |
|
|
255 | (10) |
|
Writing DirectShow Source Filters |
|
|
265 | (24) |
|
|
265 | (3) |
|
|
268 | (2) |
|
|
270 | (11) |
|
Implementing the Source Filter Class |
|
|
271 | (1) |
|
Implementing the Source Filter Output Pin Class |
|
|
272 | (3) |
|
Negotiating Connections on a Source Filter |
|
|
275 | (2) |
|
Implementing Media Sample Creation Methods |
|
|
277 | (4) |
|
Seek Functionality on a Source Filter |
|
|
281 | (8) |
|
Creating and Working with DirectX Media Objects |
|
|
289 | (22) |
|
|
290 | (1) |
|
Using an Audio Delay DMO Within a DirectShow Application |
|
|
291 | (3) |
|
Designing and Coding the SimpleDelay DMO |
|
|
294 | (17) |
|
Implementing the DMO Media and Buffer Negotiation Methods |
|
|
298 | (3) |
|
Implementing DMO Internal Methods |
|
|
301 | (1) |
|
Implementing DMO Data Processing Methods |
|
|
302 | (5) |
|
Implementing the IMediaObjectInPlace Methods |
|
|
307 | (4) |
|
|
|
Understanding the AVI File Format |
|
|
311 | (16) |
|
|
312 | (1) |
|
|
313 | (1) |
|
|
313 | (2) |
|
|
315 | (2) |
|
|
317 | (2) |
|
|
319 | (2) |
|
|
321 | (2) |
|
DV Video in the AVI Format |
|
|
323 | (4) |
|
Windows Media Applications |
|
|
327 | (50) |
|
|
329 | (1) |
|
|
330 | (1) |
|
Windows Media SDK and Encoding Tools |
|
|
331 | (3) |
|
DirectShow and Windows Media |
|
|
334 | (19) |
|
MakeASF: Using DirectShow and Windows Media in an Application |
|
|
337 | (16) |
|
Adding Data Unit Extensions to Windows Media |
|
|
353 | (13) |
|
Implementing Callback Objects for Windows Media |
|
|
366 | (7) |
|
A MPEG Format Support in DirectShow |
|
|
373 | (1) |
|
|
373 | (1) |
|
|
373 | (1) |
|
|
374 | (1) |
|
|
375 | (2) |
|
B The DirectShow Transform Filter Wizard |
|
|
377 | (4) |
|
|
377 | (1) |
|
Installing the Transform Filter Wizards |
|
|
377 | (1) |
|
Using the DirectShow Filter Wizard |
|
|
378 | (1) |
|
|
379 | (1) |
|
|
380 | (1) |
|
C Optimizing File Input and Output in Digital Media Applications |
|
|
381 | (8) |
|
|
381 | (4) |
|
|
381 | (2) |
|
|
383 | (1) |
|
|
384 | (1) |
|
|
385 | (1) |
|
|
385 | (4) |
|
|
385 | (1) |
|
|
386 | (1) |
|
|
387 | (1) |
|
|
388 | (1) |
|
|
388 | (1) |
Index |
|
389 | |