DV Splitter
DirectShow filter for splitting a digital video (DV) stream into its component video and audio streams. Supports DV25, DV50 and DV100.
Contents |
Overview
Within the DV format audio and video is stored in the same frame. A DV Splitter is required to split the DV stream into audio and video streams to be processed separately by the downstream filters (such as Audio Renderer and DV Decoder. The audio data is extracted by the DV Splitter and is delivered to the audio pins, while the original DV frame is delivered to the video output pin as a video frame. This fame is not modified, except for the media type being changed from MEDIATYPE_Interleaved to MEDIATYPE_Video. The media type is changed in order to inform the downstream filter that the audio data in this frame should be ignored.
For DV25, the extracted audio data is delivered either as one stereo or two mono output pins. For DV50 - up to 2 stereo or 4 mono streams. For DV100 - up to 4 stereo or 8 mono audio streams.
Features
- Supports 1, 2 or 4 stereo channels on separate audio pins (depends on input media type).
- Stereo sound can be splitted on separate mono channels (2, 4 or 8 channels).
- Input samples accumulated in internal container to create leading of audio stream.
Supported DV Standards
- SMPTE 314M: Data Structure for DV-Based Audio, Data and Compressed Video - 25 and 50 Mb/s
- SMPTE 370M: Data Structure for DV-Based Audio, Data and Compressed Video at 100 Mb/s 1080/60i, 1080/50i, 720/60p, 720/50p
Basic specs
Filter Interfaces: | IPersist, IMediaFilter, IBaseFilter, IMLDVSplitter, ISpecifyPropertyPages, IPersistStream |
Input Pin Media Types: | MEDIATYPE_Video,
MEDIASUBTYPE_dvsd, MEDIASUBTYPE_dv25, MEDIASUBTYPE_dv50, MEDIASUBTYPE_dvh1, FORMAT_DvInfo |
Input Pin Interfaces: | IPin, IQualityControl, IMemInputPin |
Output Pin Media Types: | Video: MEDIATYPE_Video MEDIASUBTYPE_dvsd MEDIASUBTYPE_dv25 MEDIASUBTYPE_dv50 MEDIASUBTYPE_dvh1 FORMAT_VideoInfo Audio: |
Output Pin Interfaces: | |
Filter CLSID: | |
Property Page CLSID: | |
Executable: | |
Merit: | |
Filter categories: |
DV frames of DV25, DV50 and DV100 types media types
AM_MEDIA_TYPE::majortype: MEDIATYPE_Interleaved AM_MEDIA_TYPE::subtype:
AM_MEDIA_TYPE::formattype: FORMAT_DvInfo
Video:
Original DV frames of DV25, DV50 and DV100 types from input media types: AM_MEDIA_TYPE::majortype: MEDIATYPE_Video AM_MEDIA_TYPE::subtype: MEDIASUBTYPE_dvsd MEDIASUBTYPE_dv25 MEDIASUBTYPE_dv50 MEDIASUBTYPE_dvh1 AM_MEDIA_TYPE::formattype: FORMAT_VideoInfo
Audio (from 1 to 8 pins, depends from input media type):
PCM sound: for MEDIASUBTYPE_dvsd: 32KHz, 16 bits, stereo for another subtypes: 48KHz, 16 bits, stereo Sound can be splitted to separate mono channels (see DVSplitter.idl and checkbox on DVSplitter Property Page) media types: AM_MEDIA_TYPE::majortype: MEDIATYPE_Audio AM_MEDIA_TYPE::subtype: MEDIASUBTYPE_PCM AM_MEDIA_TYPE::formattype: FORMAT_WaveFormatEx
Special fixes for Snell and Wilcox MXF Parser
720p bug: Snell and Wilcox MXF Parser set invalid time stamp for 720p mode. MediaLooks DV Splitter correct this times, but S&W parser hold stream with Reference Clock and don't allow play it with more fast speed. This fix resolve problem of capturing to file, but don't correct output to renders.
First sample bug in ver 1.21: at first Run() command after graph building graph is freeze. Reason of bug: S&W is freeze after first call of IMemAllocator::GetBuffer() if thread context don't switched in call of GetBuffer(). Bug fix: set small delay in first call of IMemAllocator::GetBuffer() (Sleep(1))
Image of graph with MediaLooks DV Splitter shown on next picture: DVSplitter1.gif.
Usage in GraphEdit
Filter name: MediaLooks DV Splitter Filter CLSID: {C128C530-AA60-4508-A83F-E34E433F03DB}
Filter can be found in the following categories:
- DirectShow filters: CLSID_LegacyAmFilterCategory {083863F1-70DE-11d0-BD40-00A0C911CE86}
- MediaLooks filters: CLSID_MediaLooksCategory {1D0D0809-3513-244F-4B3D-2A0A1D131B17}
Position of filter on GraphEdit filter selection page shown on next picture: DVSplitter_GE.gif