Last modified 3 years ago
How to build GStreamer on Mac OS/X PPC
Goals:
- Get GStreamer to stream a video on native OS/X GUI (i.e., no XWindows). (This page, well in the future)
- Do this using the Python bindings. (GstreamerMacPython page)
- Do this in combination with wxPython. (GstreamerMacwxPython? page)
- Use the Dirac video codec. (SchrodingerMac? page)
The native OS/X audio/video plugins are in the CVS version of gst-plugins-good. Due to depedencies, this means we have to build the rest from CVS as well. I checked out on 2006/11/02. The patches may not work on other versions.
- Install libogg, libogg-shlibs, libvorbis0, libvorbis0-shlibs, glib2 2.12.0 and bison >= 1.35 using fink
- I installed esound too; future will tell if it will be used
- Download, build and install liboil ( http://liboil.freedesktop.org/download/liboil-0.3.8.tar.gz)
- To use liboil > 0.3.8, you need this patch:
--- liboil-0.3.9/liboil/liboilcpu.c 2006-05-22 20:07:56.000000000 -0400 +++ liboil-0.3.9-new/liboil/liboilcpu.c 2006-07-02 22:23:35.000000000 -0400 @@ -42,7 +42,7 @@ #include <sys/time.h> #include <time.h> -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__APPLE__) #include <sys/types.h> #include <sys/sysctl.h> #endif @@ -587,25 +587,17 @@ } static void -test_altivec (void * ignored) -{ - char x[16] = { 0, }; - - asm volatile ( - " lvx %%v0, %0, %%r0 " - :: "r" (x)); -} - -static void oil_cpu_detect_powerpc(void) { + int sels[2] = { CTL_HW, HW_VECTORUNIT }; + int vType = 0; //0 == scalar only + size_t length = sizeof(vType); + int error = sysctl(sels, 2, &vType, &length, NULL, 0); - oil_cpu_fault_check_enable (); - if (oil_cpu_fault_check_try(test_altivec, NULL)) { + if ( 0 == error ) { OIL_DEBUG ("cpu flag altivec"); oil_cpu_flags |= OIL_IMPL_FLAG_ALTIVEC; } - oil_cpu_fault_check_disable (); _oil_profile_stamp = oil_profile_stamp_tb; }
- To use liboil > 0.3.8, you need this patch:
- Download, build and install gstreamer from CVS:
cvs -d:pserver:anoncvs@anoncvs.freedesktop.org:/cvs/gstreamer co gstreamer cd gstreamer PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./autogen.sh make make install
- Download, build and install gst-plugins-base from CVS:
cvs -d:pserver:anoncvs@anoncvs.freedesktop.org:/cvs/gstreamer co gst-plugins-base cd gst-plugins-base PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/sw/lib/pkgconfig ./autogen.sh make make install
- Download, build and install gst-plugins-good from CVS:
cvs -d:pserver:anoncvs@anoncvs.freedesktop.org:/cvs/gstreamer co gst-plugins-good cd gst-plugins-good echo ' Index: sys/Makefile.am =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/sys/Makefile.am,v retrieving revision 1.35 diff -r1.35 Makefile.am 67c67 < SUBDIRS=$(OSS_DIR) $(SUNAUDIO_DIR) $(V4L2_DIR) $(XIMAGE_DIR) --- > SUBDIRS=$(OSS_DIR) $(SUNAUDIO_DIR) $(V4L2_DIR) $(XIMAGE_DIR) osxaudio osxvideo 69c69 < DIST_SUBDIRS=oss sunaudio v4l2 ximage --- > DIST_SUBDIRS=oss sunaudio v4l2 ximage osxaudio osxvideo Index: sys/osxaudio/gstosxringbuffer.c =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/sys/osxaudio/gstosxringbuffer.c,v retrieving revision 1.1 diff -r1.1 gstosxringbuffer.c 158c158 < GST_DEBUG ("AudioHardwareGetProperty: device_id is %d ", --- > GST_DEBUG ("AudioHardwareGetProperty: device_id is %ld ", 241c241 < GST_DEBUG ("osx ring buffer start ioproc: 0x%x device_id %d ", --- > GST_DEBUG ("osx ring buffer start ioproc: 0x%p device_id %ld ", Index: sys/osxaudio/gstosxaudiosink.c =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/sys/osxaudio/gstosxaudiosink.c,v retrieving revision 1.11 diff -r1.11 gstosxaudiosink.c 189c189 < gst_osx_audio_sink_create_ringbuffer (sink); --- > gst_osx_audio_sink_create_ringbuffer ((GstBaseAudioSink *)sink); 254c254 < ("Getting available sample rates: Status: %d number of ranges: %d ", --- > ("Getting available sample rates: Status: %ld number of ranges: %ld ", 274c274 < GST_DEBUG ("osx sink 0x%x element 0x%x ioproc 0x%x ", osxsink, --- > GST_DEBUG ("osx sink 0x%p element 0x%p ioproc 0x%p ", osxsink, Index: sys/osxaudio/gstosxaudiosrc.c =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/sys/osxaudio/gstosxaudiosrc.c,v retrieving revision 1.9 diff -r1.9 gstosxaudiosrc.c 238c238 < GST_DEBUG ("osx src 0x%x element 0x%x ioproc 0x%x ", osxsrc, --- > GST_DEBUG ("osx src 0x%p element 0x%p ioproc 0x%p ", osxsrc, ' | patch -p0 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./autogen.sh cd sys/osxaudio make make install
Now, audio works! To test, run:
gst-launch audiotestsrc ! audioconvert ! audioresample ! osxaudiosink
- Download, build and install gst-ffmpeg from CVS:
cvs -d:pserver:anoncvs@anoncvs.freedesktop.org:/cvs/gstreamer co gst-ffmpeg cd gst-ffmpeg PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./autogen.sh cd gst-libs/ext/ffmpeg ./configure --prefix=/usr/local --enable-maintainer-mode --enable-gtk-doc --disable-v4l --disable-audio-oss --disable-dv1394 --disable-vhook --disable-ffmpeg --disable-ffserver --disable-ffplay --disable-sdltest --enable-pp --cache-file=/dev/null --srcdir=. --disable-altivec cd ../../.. make make install
The manual ./configure is needed to disable AltiVec, because ffmpeg refuses to compile with it enabled.
![(please configure the [header_logo] section in trac.ini)](/images/TriblerLogo.png)