DirectMedia comments and documentation

I am certainly not the only person crying over the DirectMedia documentation. The content has a lot of raw catalogs of interfaces and IDs, which don't help us in understanding the mechanisms behind it. To design and implement your own filters and so on, you need in fact to know a lot.

What follows is not the revisited DirectShow documentation !!

It is the exhaustive list of COM objects installed and registered by the DirectMedia SDK release 6. What for ? Did you know that the IFilterMapper interface was an interface of a general FilterMapper object, object that you have to create using CoCreateInstance. That is IFilterMapper is not obtained through the IFilterGraph interface though it is referred like this in the official documentation as "...an interface at filter-graph level..." ? What the DirectShow engineers probably meant is that this interface is sort of interface at this level. Strictly speaking, it should have meant that pFilterGraph->QueryInterface(IID_IFilterMapper, ...) is an allowed operation. But it's not...

Knowing that an object referenced by CLSID_FilterMapper is defined in the headers and libraries, it means that you can use the following construction code :


IFilterMapper *pFm=NULL;

HRESULT hr=CoCreateInstance(CLSID_FilterMapper, NULL,
              CLSCTX_INPROC_SERVER, IID_IFilterMapper,
              (void **)&pFm);
if (SUCCEEDED(hr)
{
   ...
}

Thus a filter mapper object is instanciated, and an interface to it is already available. Then proceed with the IFilterMapper interface using the "DirectShow documentation / C/C++ reference / DirectShow COM interfaces".

Interfaces obtained through general DirectMedia objects are specifically documented : for example, to know all interfaces you can query when you have the top IFilterGraph interface, just look into the "DirectShow documentation / C/C++ reference / DirectShow COM interfaces / Summary of DirectShow com interfaces".

List of DirectMedia COM Objects
-------------------------------

(involved parts are DirectShow, DirectAnimation, DirectTransform, and DirectDraw).

extracted from the whole DirectMedia SDK
amstream.h, control.h, uuids.h, ddrawex.h, danim.h, dxtmsft.h, dxtrans.h,

CLSID_ACMWrapper ACM Wrapper

CLSID_ActiveMovieCategories

CLSID_AMAudioData

CLSID_AMAudioStream

CLSID_AMDirectDrawStream

CLSID_AMMediaTypeStream

CLSID_AMMultiMediaStream (MultimediaStream)

CLSID_AMovie (IAMovie plug-in distributor)

CLSID_AnalogVideoDecoderPropertyPage

CLSID_AsfMux (ASF mux filter)

CLSID_AsyncReader (Async File Reader)

CLSID_AudioCompressorCategory

CLSID_AudioFileClip

CLSID_AudioInputDeviceCategory (Audio source cateogry)

CLSID_AudioProperties (Audio Renderer Property Page)

CLSID_AudioRecord (Wavein audio recorder)

CLSID_AudioRender (Waveout audio renderer)

CLSID_AudioRendererCategory (Audio renderer category)

CLSID_AVICo

CLSID_AVIDec (AVI Decoder)

CLSID_AviDest (AVI mux filter)

CLSID_AVIDoc (AVIFile-based reader)

CLSID_AVIDocWriter (AVIFile-based writer)

CLSID_AVIDraw (AVI ICDraw* wrapper)

CLSID_AVIMIDIRender

CLSID_AviMuxProptyPage1

CLSID_AviMuxProptyPage

CLSID_AviReader (Avi File Reader)

CLSID_AviSplitter (Avi Stream Splitter)

CLSID_BasicImageEffectsPP

CLSID_BasicImageEffects

CLSID_CAcmCoClassManager

CLSID_CameraControlPropertyPage

CLSID_CaptureGraphBuilder (Capture graph building)

CLSID_CaptureProperties

CLSID_CDeviceMoniker

CLSID_CIcmCoClassManager

CLSID_CMidiOutClassManager

CLSID_CMpegAudioCodec (MPEG audio decoder)

CLSID_CMpegVideoCodec (MPEG video decoder)

CLSID_Colour (Colour space convertor)

CLSID_CompositePP

CLSID_ConvolvePP

CLSID_CQzFilterClassManager

CLSID_CrBlurPP

CLSID_CrBlur

CLSID_CrEmboss

CLSID_CrEngrave

CLSID_CrossbarFilterPropertyPage

CLSID_CutListCacheMemory

CLSID_CutListGraphBuilder

CLSID_CutListSource

CLSID_CVidCapClassManager

CLSID_CWaveinClassManager

CLSID_CWaveOutClassManager

CLSID_DAArray

CLSID_DABbox2

CLSID_DABbox3

CLSID_DABehavior

CLSID_DABoolean

CLSID_DACamera

CLSID_DAColor

CLSID_DADashStyle

CLSID_DAEndStyle

CLSID_DAEvent

CLSID_DAFontStyle

CLSID_DAGeometry

CLSID_DAImage

CLSID_DAImportationResult

CLSID_DAJoinStyle

CLSID_DALineStyle

CLSID_DAMatte

CLSID_DAMicrophone

CLSID_DAMontage

CLSID_DANumber

CLSID_DAPair

CLSID_DAPath2

CLSID_DAPickableResult

CLSID_DAPoint2

CLSID_DAPoint3

CLSID_DASound

CLSID_DAStatics

CLSID_DAString

CLSID_DATransform2

CLSID_DATransform3

CLSID_DATuple

CLSID_DAUserData

CLSID_DAVector2

CLSID_DAVector3

CLSID_DAView

CLSID_DAViewerControlWindowed

CLSID_DAViewerControl

CLSID_DeviceControlCategory (Device Control Filters)

CLSID_DirectDraw

CLSID_DirectDrawClipper

CLSID_DirectDrawFactory

CLSID_DirectDrawProperties

CLSID_Disslvpp

CLSID_Dissolve

CLSID_Dither (VGA 16 color ditherer)

CLSID_DSoundRender (DSound audio renderer)

CLSID_DVDecPropertiesPage (DV decoder property)

CLSID_DvdGraphBuilder

CLSID_DVDHWDecodersCategory

CLSID_DVDNavigator

CLSID_DVEncPropertiesPage (DV encoder property)

CLSID_DVMux DV muxer

CLSID_DVMuxPropertyPage (DV Muxer property)

CLSID_DVSplitter (DV splitter)

CLSID_DVVideoCodec (DV video decoder)

CLSID_DVVideoEnc (DV video encoder)

CLSID_DX2D

CLSID_DXBufferCache

CLSID_DXBufferCache

CLSID_DXFade

CLSID_DXGradient

CLSID_DXLUTBuilder

CLSID_DXRasterizer

CLSID_DXSurfaceModifier

CLSID_DXSurface

CLSID_DXTaskManager

CLSID_DXTComposite

CLSID_DXTConvolution

CLSID_DXTGradientD

CLSID_DXTLabel

CLSID_DXTransformFactory

CLSID_DXTResampler

CLSID_DXTScale

CLSID_DXTWipePP

CLSID_DXTWipe

CLSID_Explode

CLSID_ExplodeProp

CLSID_FadePP

CLSID_FGControl (Control Distributor)

CLSID_FileSource (MPEG file reader)

CLSID_FileWriter

CLSID_FilgraphManager

CLSID_FilterGraph (Filter Graph)

CLSID_FilterGraphNoThread (Filter Graph no thread)

CLSID_FilterMapper (Filter Mapper)

CLSID_FilterMapper2

CLSID_FlipProp

CLSID_Flip

CLSID_GradientPP

CLSID_HeightField

CLSID_HtFieldProp

CLSID_InfTee

CLSID_LegacyAmFilterCategory (Filter category)

CLSID_Line21Decoder (Line21 (CC) Decoder)

CLSID_LUTBuilderPP

CLSID_MediaPropertyBag

CLSID_MemoryAllocator

CLSID_MidiRendererCategory (Midi renderer category)

CLSID_ModexProperties

CLSID_ModexRenderer (Modex video renderer)

CLSID_MOVReader (.MOV reader (old))

CLSID_MPEG1Doc (MPEG System stream)

CLSID_MPEG1PacketPlayer (Takes MPEG1 packets as input)

CLSID_MPEG1Splitter (MPEG splitter)

CLSID_OverlayMixer

CLSID_PerformanceProperties

CLSID_PersistMonikerPID (IPersistMoniker PID)

CLSID_PixelatePP

CLSID_Pixelate

CLSID_ProtoFilterGraph (Prototype filtergraph)

CLSID_QTDec QT Decoder

CLSID_QualityProperties

CLSID_QuickTimeParser (QT Splitter)

CLSID_ResamplePP

CLSID_Ripple

CLSID_RipProp

CLSID_RuffleProp

CLSID_Ruffle

CLSID_SeekingPassThru

CLSID_SimpleCutList

CLSID_SmartTee

CLSID_SystemClock (Reference clock)

CLSID_SystemDeviceEnum (ICreateDevEnum)

CLSID_TextRender (Text renderer)

CLSID_TransmitCategory (External Renderers Category)

CLSID_TVAudioFilterPropertyPage

CLSID_TVTunerFilterPropertyPage

CLSID_URLReader (Async URL Reader)

CLSID_VBISurfaces

CLSID_VfwCapture (Vfw 2.0 Capture Driver)

CLSID_VideoCompressorCategory

CLSID_VideoFileClip

CLSID_VideoInputDeviceCategory (Video capture category)

CLSID_VideoProcAmpPropertyPage

CLSID_VideoRenderer (Video renderer)

CLSID_VideoStreamConfigPropertyPage

CLSID_VPObject

CLSID_VPVBIObject

Date Last Updated: February 8, 1999



Comments

  • mpeg writer filter

    Posted by Legacy on 12/10/2002 12:00am

    Originally posted by: VIBHAVARI

    hello,
    
    i m using AmCap sample module for video capturing. This module saves video data as avi file. but i want to save it as mpeg file.Function named ICaptureGraphBuilder2::SetOutputFileName takes input parameters that specify the name and format of the output file. For the format, you can use any of the following values:

    MEDIASUBTYPE_Avi: Writes an AVI file.
    MEDIASUBTYPE_Asf: Writes an ASF file.
    Class identifier (CLSID) of a multiplexer or file-writer filter.
    The third option is for using third-party filters.
    But DirectShow does not include an MPEG writer filter, it requires a third-party filter to write an MPEG file.
    so i want to know about third party filter and also mpeg writer filter.and also how to wirite mpeg filter code in vc++?
    please send me reply as soon as possible.
    my email id is patelvibha@rediffmail.com

    Reply
  • Broken media files handling

    Posted by Legacy on 05/25/2001 12:00am

    Originally posted by: AlexZ

    If anyone cleared up, how Windows Media Player works, could you tell me, what does it's renderer filter do, when it gets audio stream with breaks (that is timestamp of one of recieved packets sufficiently more than previous timestamp + real timelength of data block; difference is about 0.03 s or more). There are files on witch i should ignore all breaks and treat audio stream as continuos (ASF files), and there are another kind of files, when i must fill breaks with something (it's usually last audio sample)(broken DATs with MPEG1 data). Is there any general way of solving this problem (there must be some, becose renderer recieves unpacked audio, and knows nothing about former format of packed file), or i should treat each format separately.
    The most interesting thing, that player plays all the files without mistiming.
    I'll be very pleased if someone helps me.

    Reply
  • How can I buffering in DirectShow?

    Posted by Legacy on 04/17/2001 12:00am

    Originally posted by: Anatoly B.

    I wrote transform filter with samples buffering for some
    speech recognition task. Direct Sound renderer was used as a
    render filter. I spent a lot of time to understand how to obtain valid media position(corresponding to valid sound playing position) from Filter Graph. Is it possible at all? Or I must rewrite render filter to get
    valid sound playing position directly from render filter
    instead of using interface on Filter Graph.
    Best regards to any who can help me.

    Reply
  • ATL and Direct Show Source Filter?

    Posted by Legacy on 05/14/1999 12:00am

    Originally posted by: Robbie

    Does anyone know of some documentation or source code where a DirectShow source filter is implemented using ATL?

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Managing your company's financials is the backbone of your business and is vital to the long-term health and viability of your company. To continue applying the necessary financial rigor to support rapid growth, the accounting department needs the right tools to most efficiently do their job. Read this white paper to understand the 10 essentials of a complete financial management system and how the right solution can help you keep up with the rapidly changing business world.

  • Flash technology is becoming more prominent in the storage industry. Offering superior speed and reliability when compared to traditional hard disk drives – flash storage is a flexible and increasingly cost-effective technology that can be used to optimize enterprise storage environments. This ebook explores the many uses and benefits of flash storage technology in the enterprise. Check it out to discover and learn all you need to: Optimize storage performance Leverage server flash as storage cache …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds