Trevor Davenport/gstreamer

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

GstCaps

IMediaSample

GstBuffer

IBaseFilter

GstElement

IPin

GstPad

IMediaPosition

gst_element_query_position
gst_element_seek

IMediaFilter

gst_element_set_state

IPinFlowControl

gst_pad_set_blocked

IMediaEvent

GstBus
GstEvent

IFilterGraph

GstPipeline
gst_element_link

typedef struct _AMMediaType {

  • GUID majortype;
  • GUID subtype;
  • BOOL bFixedSizeSamples;
  • BOOL bTemporalCompression;
  • ULONG lSampleSize;
  • GUID formattype;
  • IUnknown * pUnk;
  • ULONG cbFormat;
  • [size_is(cbFormat)] BYTE * pbFormat;

} AM_MEDIA_TYPE;


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 )

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

Google

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

Trevor Davenport/gstreamer (last edited 2009-06-09 22:58:58 by Trevor Davenport)