Re: File streaming
Dale_at_stopspam.com
Date: 10/21/04
- Previous message: Grant Schenck: "Re: WaveIn notification methods"
- In reply to: Chris P. [MVP]: "Re: File streaming"
- Next in thread: Chris P. [MVP]: "Re: File streaming"
- Reply: Chris P. [MVP]: "Re: File streaming"
- Messages sorted by: [ date ] [ thread ]
Date: Thu, 21 Oct 2004 10:46:20 -0400
On Tue, 12 Oct 2004 14:18:54 -0400, "Chris P. [MVP]" <msdn@chrisnet.net> wrote:
> > 2.-Shall i choose to use WMV, ASF or AVI file?
> AVI is not designed for streaming and requires a lot of work to make it
> streamable. WMV/ASF are designed for streaming but there is an issue that
> there is no standard WMV parser filter available, which makes playback from
> a memory/network source tricky.
Hi. I have a need to do exactly that -- playback a WMV file from a memory source. You say that there is no standard parser filter available; at this point I'd gladly use a non-standard one! You say it's tricky -- could you give me some hints as to the nature of the tricks? [So long as it doesn't involve writing the data to disk; that's not acceptable.]
FWIW, I'm working in Delphi with the DSpack interface to DirectShow. I use a freeware source filter that takes a memory stream which works great for avi and mpg files; now if I can just get wmv type files to work!
Here's what I've tried; first, I tried to use the WM ASF Reader object:
ReaderObject: IUnknown;
FS : IFileSourceFilter;
// create a WM ASF Reader filter
ReaderObject := CreateComObject(CLSID_WMAsfReader);
ReaderObject.QueryInterface(IFileSourceFilter, FS);
ReaderObject.QueryInterface(IWMReaderAdvanced2,RA);
RA.SetPlayMode(WMT_PLAY_MODE_STREAMING);
RA.OpenStream(TStreamAdapter.Create(VideoSrcStream),Self as IWMReaderCallback,nil);
The SetPlayMode returns E_FAIL and the OpenStream returns E_NOTIMPL. So then I tried to use the Synchronous Reader
hr : HRESULT;
pSyncReader: IWMSyncReader;
hr := WMCreateSyncReader(nil,WMT_RIGHT_PLAYBACK,pSyncReader);
hr := pSyncReader.OpenStream(TStreamAdapter.Create(VideoSrcStream));
AddFilter(pSyncReader as IBaseFilter);
where AddFilter is a routine that adds the filter to the graph and then renders its pin(s); I get an EIntfCastError (0x80040111) "interface not supported". Any suggestions?
Thanks
-- Dale
- Previous message: Grant Schenck: "Re: WaveIn notification methods"
- In reply to: Chris P. [MVP]: "Re: File streaming"
- Next in thread: Chris P. [MVP]: "Re: File streaming"
- Reply: Chris P. [MVP]: "Re: File streaming"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|