DV Splitter

From AVObjects Knowledge Base
Revision as of 16:01, 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 stream: DV frames of DV25, DV50 and DV100 types
Input Pin Media Types: MEDIATYPE_Video

MEDIASUBTYPE_dvsd, MEDIASUBTYPE_dv25, MEDIASUBTYPE_dv50, MEDIASUBTYPE_dvh1
FORMAT_DvInfo

Input Pin Interfaces: IPin, IQualityControl, IMemInputPin
Output streams: Video:

Original DV frames of DV25, DV50 and DV100 types from input with changed media type
Audio (from 1 to 8 pins, depends from input media type): PSM sound
for input MEDIASUBTYPE_dvsd: 32KHz, 16 bits, stereo
for another subtypes: 48KHz, 16 bits, stereo

Output Pin Media Types: Video:

MEDIATYPE_Video
MEDIASUBTYPE_dvsd, MEDIASUBTYPE_dv25, MEDIASUBTYPE_dv50, MEDIASUBTYPE_dvh1
FORMAT_VideoInfo
Audio (from 1 to 8 pins, depends from input media type):
MEDIATYPE_Audio, MEDIASUBTYPE_PCM, FORMAT_WaveFormatEx

Output Pin Interfaces: IPin, IQualityControl, IMediaSeeking
Filter Name: MediaLooks DV Splitter
Filter CLSID: C128C530-AA60-4508-A83F-E34E433F03DB
Property Page CLSID: C128C531-AA60-4508-A83F-E34E433F03DB
Executable: DVSplitter.dll
Merit: MERIT_DO_NOT_USE
Filter categories: DirectShow filters: CLSID_LegacyAmFilterCategory {083863F1-70DE-11d0-BD40-00A0C911CE86}

MediaLooks filters: CLSID_MediaLooksCategory {1D0D0809-3513-244F-4B3D-2A0A1D131B17}



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