In order to better troubleshoot network cameras and other devices, I added a new DirectShow filter to write HTTP response headers and body into a single file, one file (actually a pairs of files, the second file contains UTF-8 formatted HTTP response headers) per HTTP response.
While troubleshootting JPEG artefact issue with I used the following graph:
which started M-JPEG streaming from a camera and had entire stream written into Response-01586228-0001-0001-Headers.txt (Headers) and Response-01586228-0001-0001.dat (Data) files, while parsed JPEG frames were also written into individual files and were available for comparison.
Other changes include:
- new HTTP Stream File Renderer Filter (details are below)
- attachable media types on internally used memory allocators, which enable filters to effectively reagree media types in running state
- workaround for Panasonic BL-C140 camera (may be also helpful for other models), details here
There also seems to be a bug in Intel IPP 6.0 JPEG decoder that leaves bottom right image block incorrectly decoded, only when a sequence of images is decoded and the frame is not the first in the sequence.
A partial Visual C++ .NET 2008 source code is available from SVN, release binary included.
File and Class Summary
Acqusition.dll
Acqusition.dll (download) hosts the following classes:
- DirectShow Filters
- HTTP Stream File Renderer Filter, to write raw HTTP response headers and data into files
Class Overview
HTTP Stream File Renderer Filter
The filter renders input stream of one or more HTTP responses and write HTTP response headers and data into files, per HTTP response, into provided directory.
- Filter Executable: Acquisition.dll
- Filter CLSID: __uuidof(HttpStreamFileRendererFilter) {B02FDAEF-E851-4380-82D6-04772E33675D}
- Filter Property Page CLSID: __uuidof(HttpStreamFileRendererFilterDirectoryPropertyPage), {FAF31D20-842A-46b4-B6F8-E410FB0188A5}
- Filter Merit: MERIT_DO_NOT_USE
- Filter Category: CLSID_LegacyAmFilterCategory
- Filter Interfaces: IPersistStreamInit, IPersistStream, ISpecifyPropertyPages, IBaseFilter, IMediaFilter, IPersist, IAMovieSetup, IAMFilterMiscFlags, IHttpStreamFileRendererFilter, IDispatch, IFileSinkFilter2 (not available in graphedt.exe process), IFileSinkFilter (not available in graphedt.exe process)
- Filter Pins: single input pin (Input)
- Input Pin Media Types: MEDIATYPE_Stream/MEDIASUBTYPE_NULL
- Input Pin Interfaces: IPin, IMemInputPin
Remarks
None.
Hello,
I want to rebuild your sources but where do I find your roatl* header files and where is atlvariants.h.
I have ATL Server 9.0 sources and WTL 8.0 installed.
Thank you very much for your help in advance.
Best wishes
Petzchen,
Sorry, these files are not available to public https://alax.info/blog/777/comment-page-1#comment-5693