I found the immediate cause of a problem in my application after several weeks of looking in the wrong directions. That is the difficulty of working with older technologies where there are so few active practitioners to talk with. A component applies a special effect to each frame in a video stream using a Sprite and an "Effect" (HLSL program). The Draw method used by the Sprite does not matter at all. My error, chasing the wrong direction. The HLSL shader code is divided into named "Techniques"....
"Snarfle", I am still supporting a very old, but successful product line using 20-year-old technology. I need to find somebody, who knows somebody, who knows somebody else who is also working with this stuff. Can you help me find that person? I have a special effects module which uses Managed DirectX from 2006. I have been tasked with replacing the code with a C++ DLL instead of using MDX. The pixel shader still works when called from the MDX code, but not when called from the C++ replacement code....
I found an excellent code sample by Kevin Harris which showed me how to implement the multiple swap chain technique correctly. ****The essential part was to call the "Present" method from the swap chain interface, rather than the device interface. I had missed that detail. The parameters on the swap chain call are different than on the device call, but in my context, the correct parameters were all supposed to be NULL. This works for any number of secondary windows, and they can all be different...
I am seeking advice on "Where to look" to solve a problem with a DirectShow application. The application plays a video file on two separate rendering windows at the same time. The underlying technique is to use the implicit swap chain for the device primary window and create a secondary swap chain for the secondary window. The technique uses a custom allocator-presenter with the VMR9 renderer. The code does a "Begin Scene, Draw Surface, End Scene, Present sequence for each swap chain during the "IVMRImagePresenter9"...
Oops!. Hit the Post button twice.
Finally gave up on the bitmaps as a transport class for the pixel buffers. Too many problems kept surfacing. The "GDI Generic Error" and "Out of Memory Error" every few hundred frames were not going to go away. And I kept hitting locked pixel buffers for which I could never track down the source. Came up with a simple wrapper class for the pixel buffer. Then I copied the media sample into the buffer in managed space and packaged it in the wrapper class for resizing. I had to learn how to write image...
Finally gave up on the bitmaps as a transport class for the pixel buffers. Too many problems kept surfacing. The "GDI Generic Error" and "Out of Memory Error" every few hundred frames were not going to go away. And I kept hitting locked pixel buffers for which I could never track down the source. Came up with a simple wrapper class for the pixel buffer. Then I copied the media sample into the buffer in managed space and packaged it in the wrapper class for resizing. I had to learn how to write image...