long AddCustomFormat(IltmmConvert *pConvert) { IltmmTargetFormats* pFormats; IltmmTargetFormat* pFormat; BSTR bstr; long count, lStreams; pConvert->get_TargetFormats(&pFormats); // add a new format at the end of the formats list bstr = SysAllocString(L"My Own Format"); pFormats->Add(bstr, -1); // get the new format pFormats->get_Count(&count); pFormats->Item(count-1, &pFormat); /* set the format's sink filter: this example uses "LEAD Network Sink" */ bstr = SysAllocString(L"@device:sw:{083863F1-70DE-11D0-BD40-00A0C911CE86}\\{E2B7DE05-38C5-11D5-91F6-00104BDB8FF9}"); pFormat->put_Sink(bstr); SysFreeString(bstr); /* set the format's mux filter: : this example uses "LEAD Network Multiplexer" */ bstr = SysAllocString(L"@device:sw:{083863F1-70DE-11D0-BD40-00A0C911CE86}\\{E2B7DE01-38C5-11D5-91F6-00104BDB8FF9}"); pFormat->put_Mux(bstr); SysFreeString(bstr); // specify what streams your new format can have pFormat->put_Streams(ltmmTargetFormat_Stream_Audio|ltmmTargetFormat_Stream_Video); // get the streams pFormat->get_Streams(&lStreams); // verify them as needed ... // thats it pFormat->Release(); pFormats->Release(); // call put_TargetFormat(count-1) to use your new format. // return the format index return (count-1); }