DV Splitter

From AVObjects Knowledge Base
Revision as of 15:43, 29 June 2007 by 84.22.144.100 (Talk)
Jump to: navigation, search

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

Personal tools