--- a/mozilla-gstreamer-1.patch Tue Mar 19 09:18:24 2013 +0100
+++ b/mozilla-gstreamer-1.patch Mon Mar 25 23:57:09 2013 +0100
@@ -1,5 +1,5 @@
# HG changeset patch
-# Parent 0559be6b60075e1a708ca90e874f922ff200c462
+# Parent bbef353e571ee80b20c52274c7660b49d01985ba
# User Mike Gorse <mgorse@suse.com>
Bug 806917 - support GStreamer 1.0
@@ -7,7 +7,7 @@
diff --git a/configure.in b/configure.in
--- a/configure.in
+++ b/configure.in
-@@ -5758,28 +5758,36 @@ fi
+@@ -5706,26 +5706,34 @@ fi
AC_SUBST(MOZ_PULSEAUDIO)
AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
@@ -35,13 +35,11 @@
- # API version, eg 0.10, 1.0 etc
- GST_API_VERSION=0.10
# core/base release number
- # depend on >= 0.10.33 as that's when the playbin2 source-setup signal was
- # introduced
-- GST_VERSION=0.10.33
+- GST_VERSION=0.10.25
+ if test "$GST_API_VERSION" = "1.0"; then
+ GST_VERSION=1.0
+ else
-+ GST_VERSION=0.10.33
++ GST_VERSION=0.10.25
+ fi
PKG_CHECK_MODULES(GSTREAMER,
gstreamer-$GST_API_VERSION >= $GST_VERSION
@@ -102,7 +100,7 @@
GStreamerReader::~GStreamerReader()
{
MOZ_COUNT_DTOR(GStreamerReader);
-@@ -120,19 +124,26 @@ nsresult GStreamerReader::Init(MediaDeco
+@@ -122,19 +126,26 @@ nsresult GStreamerReader::Init(MediaDeco
mVideoSink = gst_parse_bin_from_description("capsfilter name=filter ! "
"appsink name=videosink sync=true max-buffers=1 "
"caps=video/x-raw-yuv,format=(fourcc)I420"
@@ -128,11 +126,11 @@
#ifdef MOZ_SAMPLE_TYPE_FLOAT32
"appsink name=audiosink sync=true caps=audio/x-raw-float,"
#ifdef IS_LITTLE_ENDIAN
- "channels={1,2},rate=44100,width=32,endianness=1234", TRUE, NULL);
+ "channels={1,2},width=32,endianness=1234", TRUE, NULL);
#else
-@@ -145,19 +156,25 @@ nsresult GStreamerReader::Init(MediaDeco
+@@ -147,19 +158,25 @@ nsresult GStreamerReader::Init(MediaDeco
#else
- "channels={1,2},rate=48000,width=16,endianness=4321", TRUE, NULL);
+ "channels={1,2},width=16,endianness=4321", TRUE, NULL);
#endif
#endif
mAudioAppSink = GST_APP_SINK(gst_bin_get_by_name(GST_BIN(mAudioSink),
@@ -156,8 +154,8 @@
"audio-sink", mAudioSink,
NULL);
- g_object_connect(mPlayBin, "signal::source-setup",
-@@ -231,17 +248,17 @@ nsresult GStreamerReader::ReadMetadata(V
+ g_signal_connect(G_OBJECT(mPlayBin), "notify::source",
+@@ -236,17 +253,17 @@ nsresult GStreamerReader::ReadMetadata(V
filter = gst_bin_get_by_name(GST_BIN(mAudioSink), "filter");
else if (!(current_flags & GST_PLAY_FLAG_VIDEO))
filter = gst_bin_get_by_name(GST_BIN(mVideoSink), "filter");
@@ -176,7 +174,7 @@
/* start the pipeline */
gst_element_set_state(mPlayBin, GST_STATE_PAUSED);
-@@ -284,19 +301,24 @@ nsresult GStreamerReader::ReadMetadata(V
+@@ -289,19 +306,24 @@ nsresult GStreamerReader::ReadMetadata(V
gst_element_set_state(mPlayBin, GST_STATE_NULL);
gst_message_unref(message);
return NS_ERROR_FAILURE;
@@ -201,7 +199,7 @@
}
int n_video = 0, n_audio = 0;
-@@ -365,59 +387,87 @@ bool GStreamerReader::DecodeAudioData()
+@@ -370,59 +392,87 @@ bool GStreamerReader::DecodeAudioData()
{
NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
@@ -289,7 +287,7 @@
{
ReentrantMonitorAutoEnter mon(mGstThreadsMonitor);
timestamp = gst_segment_to_stream_time(&mVideoSegment,
-@@ -431,62 +481,90 @@ bool GStreamerReader::DecodeVideoFrame(b
+@@ -436,62 +486,90 @@ bool GStreamerReader::DecodeVideoFrame(b
else if (fpsNum && fpsDen)
/* add 1-frame duration */
nextTimestamp += gst_util_uint64_scale(GST_USECOND, fpsNum, fpsDen);
@@ -380,7 +378,7 @@
int64_t aStartTime,
int64_t aEndTime,
int64_t aCurrentTime)
-@@ -509,52 +587,62 @@ nsresult GStreamerReader::Seek(int64_t a
+@@ -514,52 +592,62 @@ nsresult GStreamerReader::Seek(int64_t a
nsresult GStreamerReader::GetBuffered(nsTimeRanges* aBuffered,
int64_t aStartTime)
@@ -446,7 +444,7 @@
aBuffered->Add(start, end);
}
-@@ -563,48 +651,64 @@ nsresult GStreamerReader::GetBuffered(ns
+@@ -568,48 +656,64 @@ nsresult GStreamerReader::GetBuffered(ns
void GStreamerReader::ReadAndPushData(guint aLength)
{
@@ -512,7 +510,7 @@
}
/*if (mDecoder->mDuration != -1 &&
-@@ -668,60 +772,95 @@ gboolean GStreamerReader::SeekData(GstAp
+@@ -673,60 +777,95 @@ gboolean GStreamerReader::SeekData(GstAp
if (NS_SUCCEEDED(rv))
mByteOffset = mLastReportedByteOffset = aOffset;
else
@@ -608,7 +606,7 @@
GStreamerReader *reader = (GStreamerReader *) aUserData;
if (aSink == reader->mVideoAppSink)
-@@ -730,18 +869,22 @@ GstFlowReturn GStreamerReader::NewPrerol
+@@ -735,18 +874,22 @@ GstFlowReturn GStreamerReader::NewPrerol
reader->AudioPreroll();
return GST_FLOW_OK;
}
@@ -632,7 +630,7 @@
NS_ASSERTION(mInfo.mAudioChannels != 0, ("audio channels is zero"));
NS_ASSERTION(mInfo.mAudioChannels > 0 && mInfo.mAudioChannels <= MAX_CHANNELS,
"invalid audio channels number");
-@@ -749,19 +892,29 @@ void GStreamerReader::AudioPreroll()
+@@ -754,19 +897,29 @@ void GStreamerReader::AudioPreroll()
gst_caps_unref(caps);
gst_object_unref(sinkpad);
}