Wine GStreamer Bridge
Plan
Create simple commandline Player DONE
simple RenderFile version DONE
simple manually built graph version DONE
- Create a gstwrapper
- same idea as acmwrapper - only uses gstreamer instead of acm
gets basic gstreamer input->gstreamerdecode->output working
- More coming soon...
GStreamer/DirectShow Counterparts
DirectShow Interface |
GStreamer |
Comment |
AM_MEDIA_TYPE |
|
|
IMediaSample |
|
|
IBaseFilter |
|
|
IPin |
|
|
IMediaPosition |
gst_element_query_position |
|
IMediaFilter |
gst_element_set_state |
|
IPinFlowControl |
gst_pad_set_blocked |
|
IMediaEvent |
|
|
IFilterGraph |
GstPipeline |
|
typedef struct _AMMediaType {
- GUID majortype;
- GUID subtype;
- BOOL bFixedSizeSamples;
- BOOL bTemporalCompression;
- ULONG lSampleSize;
- GUID formattype;
- IUnknown * pUnk;
- ULONG cbFormat;
- [size_is(cbFormat)] BYTE * pbFormat;
Code
A simple command line player that just uses RenderFile to build graph. download
A command line player for mp3 with graph built manually. download
GIT Repos
WINE Clone URL |
git clone git://github.com/tdaven/wine.git |
Tests/Tools Clone URL |
git clone git://github.com/tdaven/winegstdshow.git |
Building
32-bit Gstreamer
- Fedora 10/11
- git clone git://anongit.freedesktop.org/gstreamer/gstreamer
- git clone git://anongit.freedesktop.org/gstreamer/gst-plugins-base
- git clone git://anongit.freedesktop.org/gstreamer/gst-plugins-good
- PKG_CONFIG_PATH=/usr/lib/pkgconfig/ CFLAGS="-m32 -Wno-error" CXXFLAGS="-m32 -Wno-error" ./autogen.sh --build=i686-pc-linux-gnu --disable-gtk-doc
- should work for most systems
- make
- (optional depending on you setup) make install
Links
Gstreamer Directshow Wrappers (we are doing the opposite )
- pitfdll? might have something
MSDN
Issues
- 64 host + 32 bit wine
May be some issues with 32 bit gstreamer being installed in parallel with 64 bit
- Don't believe this to be a much of an issue now....so long as build enviroment is correct
- is directshow happy to allow a single element to do multiple jobs (ie. demuxing, decoding )
- can decodebin be used to feed raw mp3 (or video) data and retrieve the raw audio samples and/or video on the output pins
IGraphBuilder - seems to not want to connect two pins (crashes). Internal code uses IPin_Connect
- user error
- Using graph builder sometimes can't connect to dsound renderer while a bit later you can...
Schedule
Date |
Week |
Milestone |
Description |
|
May/24/2009 - May/30/2009 |
1 |
Start |
|
|
May/31/2009 - Jun/06/2009 |
2 |
|
1 |
Basic DirectShow test programs |
Jun/07/2009 - Jun/13/2009 |
3 |
|
|
|
Jun/14/2009 - Jun/20/2009 |
4 |
|
2 |
Basic DirectShow Filter(s) |
Jun/21/2009 - Jun/27/2009 |
5 |
|
|
|
Jun/28/2009 - Jul/04/2009 |
6 |
|
3 |
Static GStreamer/DirectShow Filter |
Jul/05/2009 - Jul/11/2009 |
7 |
|
|
|
Jul/12/2009 - Jul/18/2009 |
8 |
Mid-term |
4 |
Cleanup 1/Evaluation/Documentation |
Jul/19/2009 - Jul/25/2009 |
9 |
|
5 |
Dynamic Filters |
Jul/26/2009 - Aug/01/2009 |
10 |
|
|
|
Aug/02/2009 - Aug/08/2009 |
11 |
|
6 |
Cleanup 2/Testing/Verification/Documentation |
Aug/09/2009 - Aug/15/2009 |
12 |
|
7 |
Code Review/Documentation |
Aug/16/2009 - Aug/17/2009 |
13 |
End |
