components/wxwidgets/patches/002-gst1.0.2.patch
author Shawn Ferry <shawn.ferry@oracle.com>
Mon, 28 Nov 2016 16:54:02 -0800
changeset 7565 48aa82a0931f
parent 7167 d7385e987993
permissions -rw-r--r--
PSARC/2016/607 Puppet 4.7.0, Hiera 3.2.0 19429313 address_object type should support vrrp addresses 19888183 publisher provider is applied on each puppet run 22125767 nsswitch provider missing ipnodes, protocols, printers 22126108 add process scheduler administration provider 22960016 Puppet needs a native way to set ZFS ACLs 23107546 race condition with smf provider and manifest-import 23119445 Upgrade Ruby Hiera to 3.2.0 23547788 Add ILB type to Puppet 23593229 rspec tests need to be written for solaris_providers boot_environment 23593308 rspec tests need to be written for solaris_providers ipmp_interface 23593316 rspec tests need to be written for solaris_providers protocol_properties 23593225 rspec tests need to be written for solaris_providers etherstub 23593319 rspec tests need to be written for solaris_providers vnic 23593310 puppet module rspec tests and validation for nsswitch 24674283 current puppet.stencil implementation restricts some valid puppet use cases 24680838 puppet agent failures should be visible to administrator via SMF interfaces 24681179 puppet's logadm.conf is pointing at wrong location for master, ignoring agent 24696742 puppet svccfg doesn't work for some value types 24696809 Puppet link aggregation modules cascading errors 24825868 Update to Puppet 4, Puppet 3 is EOL 24836004 '-' is valid in pkg mediator implementation 24836209 nis provider needs to support multiple securenets entries 24928890 keystone and horizon modules patches create invalid metadata.json 25022632 puppet ipmp_interface type should not validate interface existence 25022714 Puppet SMF service should not refresh on every apply operation 25225039 puppet svccfg should not declare a property absent if it does not match desired 25060925 puppet resource address_object generates invalid puppet code for dhcp interfaces 25065015 update puppet oracle-solaris_providers 2.0.0 25071521 puppet svccfg type should return a clear error if value is not provided 25071681 puppet dns resource generates invalid manifest 25071686 puppet resource ldap; Error: Could not run: No ability to determine if ldap... 25071690 puppet resource nis; Error: Could not run: No ability to determine if nis exists 25092384 puppet module files should be owned by root 25093408 puppet-solaris should be part of puppet again 25106150 Nis provider is not idempotent 25106155 DNS provider is not idempotent 25163776 puppet link_aggregation misunderstands 'address' -u output 25163791 puppet link_aggregation should use resource values instead of property_hash 25163815 puppet address_object errors and validations could be better 25163840 puppet Puppet::Property::List types conflict with internally generated arrays 25163864 puppet link_aggregation type specs need to be written 25177901 puppet beadm should not use both -e and -p 25178928 puppet link_aggregation should try to copy existing values on change of mode 25179040 puppet link_aggregation should delete with -t for temporary 25192742 puppet svccfg shouldn't try to update properties for a non-existent fmri 25196056 puppet interface and address _properties namevars are problematic 25191982 puppet type 'dns' is not able to set 'options' property in resolv.conf 25211935 puppet link_aggregation needs to permanently delete before modifying temporary 25217063 puppet protocol_properties is not idempotent 25218036 puppet resource svccfg emits a warning for every property 25218053 puppet svccfg prefetch should match individually specified parameters 25218208 puppet svccfg should enforce well-formedness in fmri parameters 25224661 puppet resource address_properties shouldn't output read-only properties 25224777 puppet address_properties should not reset unchanged properties 25306835 puppet boot_environment needs to understand the new snapshot format 25306877 puppet svccfg should check for pg and allow nested property groups 25306904 puppet dns,nis,ldap,protocol_properties prefetch fails after input auto munge 25348321 puppet boot_environment needs to validate all properties and parameters 25354751 puppet vnic provider needs to support / and - as valid vnic name characters
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7167
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     1
Downloaded from http://trac.wxwidgets.org/ticket/14976
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     2
This fix is included in wxWidgets 3.1.0
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     3
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     4
Index: wxwidgets3.0-3.0.2+dfsg/configure.in
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     5
===================================================================
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     6
--- wxwidgets3.0-3.0.2+dfsg.orig/configure.in
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     7
+++ wxwidgets3.0-3.0.2+dfsg/configure.in
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     8
@@ -7543,43 +7543,22 @@ if test "$wxUSE_MEDIACTRL" = "yes" -o "$
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
     9
         wxUSE_GSTREAMER="no"
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    10
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    11
         dnl -------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    12
-        dnl Test for at least 0.8 gstreamer module from pkg-config
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    13
-        dnl Even totem doesn't accept 0.9 evidently.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    14
-        dnl
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    15
-        dnl So, we first check to see if 0.10 if available - if not we
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    16
-        dnl try the older 0.8 version
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    17
+        dnl Test for at least gstreamer 1.0 module from pkg-config
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    18
         dnl -------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    19
-        GST_VERSION_MAJOR=0
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    20
-        GST_VERSION_MINOR=10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    21
+        GST_VERSION_MAJOR=1
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    22
+        GST_VERSION_MINOR=0
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    23
         GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    24
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    25
-        if test "$wxUSE_GSTREAMER8" = "no"; then
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    26
-            PKG_CHECK_MODULES(GST,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    27
-                [gstreamer-$GST_VERSION gstreamer-plugins-base-$GST_VERSION],
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    28
-                [
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    29
-                    wxUSE_GSTREAMER="yes"
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    30
-                    GST_LIBS="$GST_LIBS -lgstinterfaces-$GST_VERSION"
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    31
-                ],
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    32
-                [
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    33
-                    AC_MSG_WARN([GStreamer 0.10 not available, falling back to 0.8])
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    34
-                    GST_VERSION_MINOR=8
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    35
-                ]
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    36
-            )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    37
-        else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    38
-            dnl check only for 0.8
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    39
-            GST_VERSION_MINOR=8
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    40
-        fi
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    41
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    42
-        if test $GST_VERSION_MINOR = "8"; then
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    43
-            GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    44
-            PKG_CHECK_MODULES(GST,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    45
-                [gstreamer-$GST_VERSION gstreamer-interfaces-$GST_VERSION gstreamer-gconf-$GST_VERSION],
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    46
-                wxUSE_GSTREAMER="yes",
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    47
-                [
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    48
-                    AC_MSG_WARN([GStreamer 0.8/0.10 not available.])
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    49
-                ])
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    50
-        fi
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    51
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    52
+        PKG_CHECK_MODULES(GST,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    53
+            [gstreamer-$GST_VERSION gstreamer-plugins-base-$GST_VERSION],
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    54
+            [
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    55
+                wxUSE_GSTREAMER="yes"
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    56
+                GST_LIBS="$GST_LIBS -lgstvideo-$GST_VERSION"
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    57
+            ],
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    58
+            [
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    59
+                AC_MSG_WARN([GStreamer 1.0 not available])
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    60
+            ]
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    61
+        )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    62
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    63
         if test "$wxUSE_GSTREAMER" = "yes"; then
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    64
             CPPFLAGS="$GST_CFLAGS $CPPFLAGS"
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    65
Index: wxwidgets3.0-3.0.2+dfsg/src/unix/mediactrl.cpp
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    66
===================================================================
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    67
--- wxwidgets3.0-3.0.2+dfsg.orig/src/unix/mediactrl.cpp
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    68
+++ wxwidgets3.0-3.0.2+dfsg/src/unix/mediactrl.cpp
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    69
@@ -19,13 +19,7 @@
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    70
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    71
 #include <gst/gst.h>                // main gstreamer header
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    72
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    73
-// xoverlay/video stuff, gst-gconf for 0.8
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    74
-#if GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    75
-#   include <gst/interfaces/xoverlay.h>
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    76
-#else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    77
-#   include <gst/xoverlay/xoverlay.h>
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    78
-#   include <gst/gconf/gconf.h>        // gstreamer glib configuration
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    79
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    80
+#include <gst/video/videooverlay.h>
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    81
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    82
 #ifndef  WX_PRECOMP
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    83
     #include "wx/log.h"             // wxLogDebug/wxLogSysError/wxLogTrace
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    84
@@ -48,11 +42,11 @@
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    85
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    86
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    87
 /*
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    88
-   This is the GStreamer backend for unix. Currently we require 0.8 or
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    89
-   0.10. Here we use the "playbin" GstElement for ease of use.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    90
+   This is the GStreamer backend for unix. Currently we require 1.0.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    91
+   Here we use the "playbin" GstElement for ease of use.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    92
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    93
-   Note that now we compare state change functions to GST_STATE_FAILURE
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    94
-   now rather than GST_STATE_SUCCESS as newer gstreamer versions return
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    95
+   Note that now we compare state change functions to GST_STATE_CHANGE_FAILURE
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    96
+   now rather than GST_STATE_CHANGE_SUCCESS as newer gstreamer versions return
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    97
    non-success values for returns that are otherwise successful but not
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    98
    immediate.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
    99
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   100
@@ -60,11 +54,8 @@
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   101
    moment but with a tad bit of work it could theorectically work in
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   102
    straight wxX11 et al.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   103
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   104
-   One last note is that resuming from pausing/seeking can result
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   105
-   in erratic video playback (GStreamer-based bug, happens in totem as well)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   106
-   - this is better in 0.10, however. One thing that might make it worse
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   107
-   here is that we don't preserve the aspect ratio of the video and stretch
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   108
-   it to the whole window.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   109
+   One last note is that we don't preserve the aspect ratio of the video and
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   110
+   stretch it to the whole window.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   111
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   112
    Note that there are some things used here that could be undocumented -
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   113
    for reference see the media player Kiss and Totem as well as some
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   114
@@ -72,12 +63,10 @@
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   115
    that attempted thread-safety...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   116
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   117
    Then there is the issue of m_asynclock. This serves several purposes:
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   118
-   1) It prevents the C callbacks from sending wx state change events
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   119
-      so that we don't get duplicate ones in 0.8
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   120
-   2) It makes the sync and async handlers in 0.10 not drop any
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   121
+   1) It makes the sync and async handlers not drop any
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   122
       messages so that while we are polling it we get the messages in
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   123
       SyncStateChange instead of the queue.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   124
-   3) Keeps the pausing in Stop() synchronous
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   125
+   2) Keeps the pausing in Stop() synchronous
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   126
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   127
    RN: Note that I've tried to follow the wxGTK conventions here as close
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   128
    as possible. In the implementation the C Callbacks come first, then
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   129
@@ -90,43 +79,9 @@
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   130
 //=============================================================================
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   131
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   132
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   133
-//  GStreamer (most version compatibility) macros
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   134
+//  GStreamer macros
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   135
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   136
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   137
-// In 0.9 there was a HUGE change to GstQuery and the
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   138
-// gst_element_query function changed dramatically and split off
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   139
-// into two separate ones
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   140
-#if GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR <= 8
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   141
-#    define wxGst_element_query_duration(e, f, p) \
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   142
-                gst_element_query(e, GST_QUERY_TOTAL, f, p)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   143
-#    define wxGst_element_query_position(e, f, p) \
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   144
-                gst_element_query(e, GST_QUERY_POSITION, f, p)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   145
-#elif GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR == 9
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   146
-// However, the actual 0.9 version has a slightly different definition
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   147
-// and instead of gst_element_query_duration it has two parameters to
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   148
-// gst_element_query_position instead
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   149
-#    define wxGst_element_query_duration(e, f, p) \
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   150
-                gst_element_query_position(e, f, 0, p)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   151
-#    define wxGst_element_query_position(e, f, p) \
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   152
-                gst_element_query_position(e, f, p, 0)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   153
-#else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   154
-#    define wxGst_element_query_duration \
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   155
-                gst_element_query_duration
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   156
-#    define wxGst_element_query_position \
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   157
-                gst_element_query_position
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   158
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   159
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   160
-// Other 0.10 macros
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   161
-#if GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   162
-#   define GST_STATE_FAILURE GST_STATE_CHANGE_FAILURE
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   163
-#   define GST_STATE_SUCCESS GST_STATE_CHANGE_SUCCESS
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   164
-#   define GstElementState GstState
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   165
-#   define gst_gconf_get_default_video_sink() \
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   166
-        gst_element_factory_make ("gconfvideosink", "video-sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   167
-#   define gst_gconf_get_default_audio_sink() \
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   168
-        gst_element_factory_make ("gconfaudiosink", "audio-sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   169
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   170
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   171
 // Max wait time for element state waiting - GST_CLOCK_TIME_NONE for inf
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   172
 #define wxGSTREAMER_TIMEOUT (100 * GST_MSECOND) // Max 100 milliseconds
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   173
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   174
@@ -189,11 +144,11 @@ public:
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   175
     bool CheckForErrors();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   176
     bool DoLoad(const wxString& locstring);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   177
     wxMediaCtrl* GetControl() { return m_ctrl; } // for C Callbacks
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   178
-    void HandleStateChange(GstElementState oldstate, GstElementState newstate);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   179
+    void HandleStateChange(GstState oldstate, GstState newstate);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   180
     bool QueryVideoSizeFromElement(GstElement* element);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   181
     bool QueryVideoSizeFromPad(GstPad* caps);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   182
-    void SetupXOverlay();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   183
-    bool SyncStateChange(GstElement* element, GstElementState state,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   184
+    void SetupVideoOverlay();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   185
+    bool SyncStateChange(GstElement* element, GstState state,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   186
                          gint64 llTimeout = wxGSTREAMER_TIMEOUT);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   187
     bool TryAudioSink(GstElement* audiosink);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   188
     bool TryVideoSink(GstElement* videosink);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   189
@@ -203,7 +158,7 @@ public:
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   190
     double          m_dRate;        // Current playback rate -
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   191
                                     // see GetPlaybackRate for notes
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   192
     wxLongLong      m_llPausedPos;  // Paused position - see Pause()
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   193
-    GstXOverlay*    m_xoverlay;     // X Overlay that contains the GST video
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   194
+    GstVideoOverlay*    m_videooverlay;     // Video Overlay that contains the GST video
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   195
     wxMutex         m_asynclock;    // See "discussion of internals"
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   196
     class wxGStreamerMediaEventHandler* m_eventHandler; // see below
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   197
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   198
@@ -284,7 +239,7 @@ expose_event(GtkWidget* widget, GdkEvent
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   199
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   200
     // I've seen this recommended somewhere...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   201
     // TODO: Is this needed? Maybe it is just cruft...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   202
-    // gst_x_overlay_set_xwindow_id( GST_X_OVERLAY(be->m_xoverlay),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   203
+    // gst_video_overlay_set_window_handle( GST_VIDEO_OVERLAY(be->m_videooverlay),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   204
     //                              GDK_WINDOW_XWINDOW( window ) );
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   205
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   206
     // If we have actual video.....
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   207
@@ -294,7 +249,7 @@ expose_event(GtkWidget* widget, GdkEvent
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   208
         // GST Doesn't redraw automatically while paused
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   209
         // Plus, the video sometimes doesn't redraw when it looses focus
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   210
         // or is painted over so we just tell it to redraw...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   211
-        gst_x_overlay_expose(be->m_xoverlay);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   212
+        gst_video_overlay_expose(be->m_videooverlay);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   213
     }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   214
     else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   215
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   216
@@ -334,7 +289,7 @@ static gint gtk_window_realize_callback(
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   217
     GdkWindow* window = gtk_widget_get_window(widget);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   218
     wxASSERT(window);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   219
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   220
-    gst_x_overlay_set_xwindow_id( GST_X_OVERLAY(be->m_xoverlay),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   221
+    gst_video_overlay_set_window_handle( GST_VIDEO_OVERLAY(be->m_videooverlay),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   222
                                 GDK_WINDOW_XID(window)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   223
                                 );
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   224
     GtkWidget* w = be->GetControl()->m_wxwindow;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   225
@@ -349,30 +304,6 @@ static gint gtk_window_realize_callback(
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   226
 #endif // wxGTK
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   227
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   228
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   229
-// "state-change" from m_playbin/GST_MESSAGE_STATE_CHANGE
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   230
-//
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   231
-// Called by gstreamer when the state changes - here we
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   232
-// send the appropriate corresponding wx event.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   233
-//
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   234
-// 0.8 only as HandleStateChange does this in both versions
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   235
-//-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   236
-#if GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR < 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   237
-extern "C" {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   238
-static void gst_state_change_callback(GstElement *play,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   239
-                                      GstElementState oldstate,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   240
-                                      GstElementState newstate,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   241
-                                      wxGStreamerMediaBackend* be)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   242
-{
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   243
-    if(be->m_asynclock.TryLock() == wxMUTEX_NO_ERROR)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   244
-    {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   245
-        be->HandleStateChange(oldstate, newstate);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   246
-        be->m_asynclock.Unlock();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   247
-    }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   248
-}
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   249
-}
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   250
-#endif // <0.10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   251
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   252
-//-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   253
 // "eos" from m_playbin/GST_MESSAGE_EOS
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   254
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   255
 // Called by gstreamer when the media is done playing ("end of stream")
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   256
@@ -425,69 +356,17 @@ static void gst_notify_caps_callback(Gst
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   257
 }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   258
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   259
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   260
-// "notify::stream-info" from m_playbin
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   261
-//
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   262
-// Run through the stuff in "stream-info" of m_playbin for a valid
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   263
-// video pad, and then attempt to query the video size from it - if not
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   264
-// set up an event to do so when ready.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   265
-//
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   266
-// Currently unused - now we just query it directly using
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   267
-// QueryVideoSizeFromElement.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   268
-//
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   269
-// (Undocumented?)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   270
-//-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   271
-#if GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   272
-extern "C" {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   273
-static void gst_notify_stream_info_callback(GstElement* WXUNUSED(element),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   274
-                                            GParamSpec* WXUNUSED(pspec),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   275
-                                            wxGStreamerMediaBackend* be)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   276
-{
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   277
-    wxLogTrace(wxTRACE_GStreamer, wxT("gst_notify_stream_info_callback"));
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   278
-    be->QueryVideoSizeFromElement(be->m_playbin);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   279
-}
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   280
-}
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   281
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   282
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   283
-//-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   284
-// "desired-size-changed" from m_xoverlay
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   285
-//
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   286
-// 0.8-specific this provides us with the video size when it changes -
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   287
-// even though we get the caps as well this seems to come before the
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   288
-// caps notification does...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   289
-//
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   290
-// Note it will return 16,16 for an early-bird value or for audio
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   291
-//-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   292
-#if GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR < 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   293
-extern "C" {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   294
-static void gst_desired_size_changed_callback(GstElement * play,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   295
-                                              guint width, guint height,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   296
-                                              wxGStreamerMediaBackend* be)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   297
-{
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   298
-    if(!(width == 16 && height == 16))
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   299
-    {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   300
-        be->m_videoSize.x = width;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   301
-        be->m_videoSize.y = height;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   302
-    }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   303
-    else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   304
-        be->QueryVideoSizeFromElement(be->m_playbin);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   305
-}
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   306
-}
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   307
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   308
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   309
-//-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   310
 // gst_bus_async_callback [static]
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   311
 // gst_bus_sync_callback [static]
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   312
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   313
-// Called by m_playbin for notifications such as end-of-stream in 0.10 -
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   314
-// in previous versions g_signal notifications were used. Because everything
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   315
+// Called by m_playbin for notifications such as end-of-stream. Because everything
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   316
 // in centered in one switch statement though it reminds one of old WinAPI
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   317
 // stuff.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   318
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   319
 // gst_bus_sync_callback is that sync version that is called on the main GUI
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   320
 // thread before the async version that we use to set the xwindow id of the
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   321
-// XOverlay (NB: This isn't currently used - see CreateControl()).
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   322
+// VideoOverlay (NB: This isn't currently used - see CreateControl()).
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   323
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   324
-#if GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   325
 extern "C" {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   326
 static gboolean gst_bus_async_callback(GstBus* WXUNUSED(bus),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   327
                                        GstMessage* message,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   328
@@ -537,8 +416,7 @@ static GstBusSyncReply gst_bus_sync_call
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   329
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   330
     // Pass a non-xwindowid-setting event on to the async handler where it
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   331
     // belongs
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   332
-    if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   333
-        !gst_structure_has_name (message->structure, "prepare-xwindow-id"))
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   334
+    if (!gst_is_video_overlay_prepare_window_handle_message (message))
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   335
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   336
         //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   337
         // NB: Unfortunately, the async callback can be quite
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   338
@@ -552,12 +430,11 @@ static GstBusSyncReply gst_bus_sync_call
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   339
             return GST_BUS_DROP;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   340
     }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   341
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   342
-    wxLogTrace(wxTRACE_GStreamer, wxT("Got prepare-xwindow-id"));
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   343
-    be->SetupXOverlay();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   344
+    wxLogTrace(wxTRACE_GStreamer, wxT("Got prepare-window-handle"));
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   345
+    be->SetupVideoOverlay();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   346
     return GST_BUS_DROP; // We handled this message - drop from the queue
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   347
 }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   348
 }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   349
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   350
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   351
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   352
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   353
@@ -569,11 +446,11 @@ static GstBusSyncReply gst_bus_sync_call
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   354
 // wxGStreamerMediaBackend::HandleStateChange
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   355
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   356
 // Handles a state change event from our C Callback for "state-change" or
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   357
-// the async queue in 0.10. (Mostly this is here to avoid locking the
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   358
+// the async queue . (Mostly this is here to avoid locking the
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   359
 // the mutex twice...)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   360
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   361
-void wxGStreamerMediaBackend::HandleStateChange(GstElementState oldstate,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   362
-                                                GstElementState newstate)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   363
+void wxGStreamerMediaBackend::HandleStateChange(GstState oldstate,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   364
+                                                GstState newstate)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   365
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   366
     switch(newstate)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   367
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   368
@@ -604,83 +481,13 @@ void wxGStreamerMediaBackend::HandleStat
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   369
 }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   370
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   371
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   372
-// wxGStreamerMediaBackend::QueryVideoSizeFromElement
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   373
-//
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   374
-// Run through the stuff in "stream-info" of element for a valid
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   375
-// video pad, and then attempt to query the video size from it - if not
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   376
-// set up an event to do so when ready. Return true
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   377
-// if we got a valid video pad.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   378
-//-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   379
-bool wxGStreamerMediaBackend::QueryVideoSizeFromElement(GstElement* element)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   380
-{
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   381
-    const GList *list = NULL;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   382
-    g_object_get (G_OBJECT (element), "stream-info", &list, NULL);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   383
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   384
-    for ( ; list != NULL; list = list->next)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   385
-    {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   386
-        GObject *info = (GObject *) list->data;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   387
-        gint type;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   388
-        GParamSpec *pspec;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   389
-        GEnumValue *val;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   390
-        GstPad *pad = NULL;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   391
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   392
-        g_object_get (info, "type", &type, NULL);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   393
-        pspec = g_object_class_find_property (
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   394
-                        G_OBJECT_GET_CLASS (info), "type");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   395
-        val = g_enum_get_value (G_PARAM_SPEC_ENUM (pspec)->enum_class, type);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   396
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   397
-        if (!strncasecmp(val->value_name, "video", 5) ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   398
-            !strncmp(val->value_name, "GST_STREAM_TYPE_VIDEO", 21))
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   399
-        {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   400
-            // Newer gstreamer 0.8+ plugins are SUPPOSED to have "object"...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   401
-            // but a lot of old plugins still use "pad" :)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   402
-            pspec = g_object_class_find_property (
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   403
-                        G_OBJECT_GET_CLASS (info), "object");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   404
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   405
-            if (!pspec)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   406
-                g_object_get (info, "pad", &pad, NULL);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   407
-            else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   408
-                g_object_get (info, "object", &pad, NULL);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   409
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   410
-#if GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR <= 8
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   411
-            // Killed in 0.9, presumely because events and such
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   412
-            // should be pushed on pads regardless of whether they
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   413
-            // are currently linked
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   414
-            pad = (GstPad *) GST_PAD_REALIZE (pad);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   415
-            wxASSERT(pad);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   416
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   417
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   418
-            if(!QueryVideoSizeFromPad(pad))
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   419
-            {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   420
-                // wait for those caps to get ready
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   421
-                g_signal_connect(
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   422
-                pad,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   423
-                "notify::caps",
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   424
-                G_CALLBACK(gst_notify_caps_callback),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   425
-                this);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   426
-            }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   427
-            break;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   428
-        }// end if video
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   429
-    }// end searching through info list
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   430
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   431
-    // no video (or extremely delayed stream-info)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   432
-    if(list == NULL)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   433
-    {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   434
-        m_videoSize = wxSize(0,0);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   435
-        return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   436
-    }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   437
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   438
-    return true;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   439
-}
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   440
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   441
-//-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   442
 // wxGStreamerMediaBackend::QueryVideoSizeFromPad
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   443
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   444
 // Gets the size of our video (in wxSize) from a GstPad
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   445
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   446
 bool wxGStreamerMediaBackend::QueryVideoSizeFromPad(GstPad* pad)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   447
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   448
-    const GstCaps* caps = GST_PAD_CAPS(pad);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   449
+    GstCaps* caps = gst_pad_get_current_caps(pad);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   450
     if ( caps )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   451
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   452
         const GstStructure *s = gst_caps_get_structure (caps, 0);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   453
@@ -706,23 +513,26 @@ bool wxGStreamerMediaBackend::QueryVideo
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   454
                 m_videoSize.y = (int) ((float) den * m_videoSize.y / num);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   455
         }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   456
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   457
-         wxLogTrace(wxTRACE_GStreamer, wxT("Adjusted video size: [%i,%i]"),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   458
-                     m_videoSize.x, m_videoSize.y);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   459
+        wxLogTrace(wxTRACE_GStreamer, wxT("Adjusted video size: [%i,%i]"),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   460
+                    m_videoSize.x, m_videoSize.y);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   461
+
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   462
+        gst_caps_unref (caps);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   463
         return true;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   464
     } // end if caps
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   465
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   466
+    m_videoSize = wxSize(0,0);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   467
     return false; // not ready/massive failure
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   468
 }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   469
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   470
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   471
-// wxGStreamerMediaBackend::SetupXOverlay
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   472
+// wxGStreamerMediaBackend::SetupVideoOverlay
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   473
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   474
-// Attempts to set the XWindow id of our GstXOverlay to tell it which
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   475
+// Attempts to set the XWindow id of our GstVideoOverlay to tell it which
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   476
 // window to play video in.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   477
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   478
-void wxGStreamerMediaBackend::SetupXOverlay()
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   479
+void wxGStreamerMediaBackend::SetupVideoOverlay()
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   480
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   481
-    // Use the xoverlay extension to tell gstreamer to play in our window
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   482
+    // Use the videooverlay extension to tell gstreamer to play in our window
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   483
 #ifdef __WXGTK__
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   484
     if (!gtk_widget_get_realized(m_ctrl->m_wxwindow))
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   485
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   486
@@ -739,7 +549,7 @@ void wxGStreamerMediaBackend::SetupXOver
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   487
         GdkWindow* window = gtk_widget_get_window(m_ctrl->m_wxwindow);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   488
         wxASSERT(window);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   489
 #endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   490
-        gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(m_xoverlay),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   491
+        gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(m_videooverlay),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   492
 #ifdef __WXGTK__
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   493
                         GDK_WINDOW_XID(window)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   494
 #else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   495
@@ -769,9 +579,8 @@ void wxGStreamerMediaBackend::SetupXOver
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   496
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   497
 // PRECONDITION: Assumes m_asynclock is Lock()ed
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   498
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   499
-#if GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   500
 bool wxGStreamerMediaBackend::SyncStateChange(GstElement* element,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   501
-                                              GstElementState desiredstate,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   502
+                                              GstState desiredstate,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   503
                                               gint64 llTimeout)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   504
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   505
     GstBus* bus = gst_element_get_bus(element);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   506
@@ -844,23 +653,6 @@ bool wxGStreamerMediaBackend::SyncStateC
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   507
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   508
     return bSuccess;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   509
 }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   510
-#else // 0.8 implementation
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   511
-bool wxGStreamerMediaBackend::SyncStateChange(GstElement* element,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   512
-                                              GstElementState desiredstate,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   513
-                                              gint64 llTimeout)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   514
-{
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   515
-    gint64 llTimeWaited = 0;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   516
-    while(GST_STATE(element) != desiredstate)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   517
-    {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   518
-        if(llTimeWaited >= llTimeout)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   519
-            break;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   520
-        llTimeWaited += 10*GST_MSECOND;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   521
-        wxMilliSleep(10);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   522
-    }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   523
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   524
-    return llTimeWaited != llTimeout;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   525
-}
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   526
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   527
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   528
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   529
 // wxGStreamerMediaBackend::TryAudioSink
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   530
@@ -884,25 +676,25 @@ bool wxGStreamerMediaBackend::TryAudioSi
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   531
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   532
 bool wxGStreamerMediaBackend::TryVideoSink(GstElement* videosink)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   533
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   534
-    // Check if the video sink either is an xoverlay or might contain one...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   535
-    if( !GST_IS_BIN(videosink) && !GST_IS_X_OVERLAY(videosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   536
+    // Check if the video sink either is an videooverlay or might contain one...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   537
+    if( !GST_IS_BIN(videosink) && !GST_IS_VIDEO_OVERLAY(videosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   538
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   539
         if(G_IS_OBJECT(videosink))
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   540
             g_object_unref(videosink);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   541
         return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   542
     }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   543
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   544
-    // Make our video sink and make sure it supports the x overlay interface
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   545
-    // the x overlay enables us to put the video in our control window
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   546
+    // Make our video sink and make sure it supports the video overlay interface
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   547
+    // the video overlay enables us to put the video in our control window
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   548
     // (i.e. we NEED it!) - also connect to the natural video size change event
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   549
     if( GST_IS_BIN(videosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   550
-        m_xoverlay = (GstXOverlay*)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   551
+        m_videooverlay = (GstVideoOverlay*)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   552
                         gst_bin_get_by_interface (GST_BIN (videosink),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   553
-                                                  GST_TYPE_X_OVERLAY);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   554
+                                                  GST_TYPE_VIDEO_OVERLAY);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   555
     else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   556
-        m_xoverlay = (GstXOverlay*) videosink;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   557
+        m_videooverlay = (GstVideoOverlay*) videosink;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   558
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   559
-    if ( !GST_IS_X_OVERLAY(m_xoverlay) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   560
+    if ( !GST_IS_VIDEO_OVERLAY(m_videooverlay) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   561
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   562
         g_object_unref(videosink);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   563
         return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   564
@@ -1046,11 +838,7 @@ bool wxGStreamerMediaBackend::CreateCont
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   565
     //Really init gstreamer
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   566
     gboolean bInited;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   567
     GError* error = NULL;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   568
-#if GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   569
     bInited = gst_init_check(&argcGST, &argvGST, &error);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   570
-#else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   571
-    bInited = gst_init_check(&argcGST, &argvGST);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   572
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   573
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   574
     // Cleanup arguments for unicode case
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   575
 #if wxUSE_UNICODE
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   576
@@ -1117,78 +905,52 @@ bool wxGStreamerMediaBackend::CreateCont
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   577
         return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   578
     }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   579
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   580
-#if GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR < 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   581
-    // Connect the glib events/callbacks we want to our playbin
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   582
-    g_signal_connect(m_playbin, "eos",
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   583
-                     G_CALLBACK(gst_finish_callback), this);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   584
-    g_signal_connect(m_playbin, "error",
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   585
-                     G_CALLBACK(gst_error_callback), this);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   586
-    g_signal_connect(m_playbin, "state-change",
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   587
-                     G_CALLBACK(gst_state_change_callback), this);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   588
-#else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   589
-    // GStreamer 0.10+ uses GstBus for this now, connect to the sync
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   590
-    // handler as well so we can set the X window id of our xoverlay
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   591
+    // GStreamer uses GstBus for this now, connect to the sync
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   592
+    // handler as well so we can set the video window id of our videooverlay
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   593
     gst_bus_add_watch (gst_element_get_bus(m_playbin),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   594
                        (GstBusFunc) gst_bus_async_callback, this);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   595
     gst_bus_set_sync_handler(gst_element_get_bus(m_playbin),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   596
-                             (GstBusSyncHandler) gst_bus_sync_callback, this);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   597
-    g_signal_connect(m_playbin, "notify::stream-info",
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   598
-                     G_CALLBACK(gst_notify_stream_info_callback), this);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   599
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   600
+                             (GstBusSyncHandler) gst_bus_sync_callback, this, NULL);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   601
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   602
     // Get the audio sink
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   603
-    GstElement* audiosink = gst_gconf_get_default_audio_sink();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   604
+    // Use autodetection, then alsa, then oss as a stopgap
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   605
+    GstElement* audiosink = gst_element_factory_make ("autoaudiosink", "audio-sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   606
     if( !TryAudioSink(audiosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   607
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   608
-        // fallback to autodetection, then alsa, then oss as a stopgap
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   609
-        audiosink = gst_element_factory_make ("autoaudiosink", "audio-sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   610
+        audiosink = gst_element_factory_make ("alsasink", "alsa-output");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   611
         if( !TryAudioSink(audiosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   612
         {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   613
-            audiosink = gst_element_factory_make ("alsasink", "alsa-output");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   614
+            audiosink = gst_element_factory_make ("osssink", "play_audio");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   615
             if( !TryAudioSink(audiosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   616
             {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   617
-                audiosink = gst_element_factory_make ("osssink", "play_audio");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   618
-                if( !TryAudioSink(audiosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   619
-                {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   620
-                    wxLogSysError(wxT("Could not find a valid audiosink"));
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   621
-                    return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   622
-                }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   623
+                wxLogSysError(wxT("Could not find a valid audiosink"));
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   624
+                return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   625
             }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   626
         }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   627
     }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   628
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   629
     // Setup video sink - first try gconf, then auto, then xvimage and
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   630
     // then finally plain ximage
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   631
-    GstElement* videosink = gst_gconf_get_default_video_sink();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   632
+    GstElement* videosink = gst_element_factory_make ("autovideosink", "video-sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   633
     if( !TryVideoSink(videosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   634
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   635
-        videosink = gst_element_factory_make ("autovideosink", "video-sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   636
+        videosink = gst_element_factory_make ("xvimagesink", "video-sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   637
         if( !TryVideoSink(videosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   638
         {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   639
-            videosink = gst_element_factory_make ("xvimagesink", "video-sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   640
+            // finally, do a final fallback to ximagesink
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   641
+            videosink =
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   642
+                gst_element_factory_make ("ximagesink", "video-sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   643
             if( !TryVideoSink(videosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   644
             {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   645
-                // finally, do a final fallback to ximagesink
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   646
-                videosink =
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   647
-                    gst_element_factory_make ("ximagesink", "video-sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   648
-                if( !TryVideoSink(videosink) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   649
-                {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   650
-                    g_object_unref(audiosink);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   651
-                    wxLogSysError(wxT("Could not find a suitable video sink"));
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   652
-                    return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   653
-                }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   654
+                g_object_unref(audiosink);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   655
+                wxLogSysError(wxT("Could not find a suitable video sink"));
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   656
+                return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   657
             }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   658
         }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   659
     }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   660
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   661
-#if GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR < 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   662
-    // Not on 0.10... called when video size changes
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   663
-    g_signal_connect(m_xoverlay, "desired-size-changed",
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   664
-                     G_CALLBACK(gst_desired_size_changed_callback), this);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   665
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   666
-    // Tell GStreamer which window to draw to in 0.8 - 0.10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   667
-    // sometimes needs this too...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   668
-    SetupXOverlay();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   669
+    // Tell GStreamer which window to draw to
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   670
+    SetupVideoOverlay();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   671
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   672
     // Now that we know (or, rather think) our video and audio sink
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   673
     // are valid set our playbin to use them
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   674
@@ -1197,6 +959,10 @@ bool wxGStreamerMediaBackend::CreateCont
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   675
                   "audio-sink", audiosink,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   676
                    NULL);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   677
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   678
+    GstPad *video_sinkpad = gst_element_get_static_pad (videosink, "sink");
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   679
+    g_signal_connect (video_sinkpad, "notify::caps", G_CALLBACK (gst_notify_caps_callback), this);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   680
+    gst_object_unref (video_sinkpad);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   681
+
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   682
     m_eventHandler = new wxGStreamerMediaEventHandler(this);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   683
     return true;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   684
 }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   685
@@ -1213,26 +979,10 @@ bool wxGStreamerMediaBackend::Load(const
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   686
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   687
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   688
 // wxGStreamerMediaBackend::Load (URI version)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   689
-//
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   690
-// In the case of a file URI passes it unencoded -
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   691
-// also, as of 0.10.3 and earlier GstURI (the uri parser for gstreamer)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   692
-// is sort of broken and only accepts uris with at least two slashes
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   693
-// after the scheme (i.e. file: == not ok, file:// == ok)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   694
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   695
 bool wxGStreamerMediaBackend::Load(const wxURI& location)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   696
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   697
-    if(location.GetScheme().CmpNoCase(wxT("file")) == 0)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   698
-    {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   699
-        wxString uristring = location.BuildUnescapedURI();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   700
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   701
-        //Workaround GstURI leading "//" problem and make sure it leads
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   702
-        //with that
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   703
-        return DoLoad(wxString(wxT("file://")) +
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   704
-                      uristring.Right(uristring.length() - 5)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   705
-                     );
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   706
-    }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   707
-    else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   708
-        return DoLoad(location.BuildURI());
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   709
+    return DoLoad(location.BuildURI());
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   710
 }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   711
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   712
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   713
@@ -1258,7 +1008,7 @@ bool wxGStreamerMediaBackend::DoLoad(con
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   714
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   715
     // Set playbin to ready to stop the current media...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   716
     if( gst_element_set_state (m_playbin,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   717
-                               GST_STATE_READY) == GST_STATE_FAILURE ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   718
+                               GST_STATE_READY) == GST_STATE_CHANGE_FAILURE ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   719
         !SyncStateChange(m_playbin, GST_STATE_READY))
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   720
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   721
         CheckForErrors();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   722
@@ -1281,7 +1031,7 @@ bool wxGStreamerMediaBackend::DoLoad(con
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   723
     // Try to pause media as gstreamer won't let us query attributes
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   724
     // such as video size unless it is paused or playing
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   725
     if( gst_element_set_state (m_playbin,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   726
-                               GST_STATE_PAUSED) == GST_STATE_FAILURE ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   727
+                               GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   728
         !SyncStateChange(m_playbin, GST_STATE_PAUSED))
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   729
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   730
         CheckForErrors();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   731
@@ -1307,12 +1057,11 @@ bool wxGStreamerMediaBackend::DoLoad(con
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   732
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   733
 // Sets the stream to a playing state
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   734
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   735
-// THREAD-UNSAFE in 0.8, maybe in 0.10 as well
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   736
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   737
 bool wxGStreamerMediaBackend::Play()
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   738
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   739
     if (gst_element_set_state (m_playbin,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   740
-                               GST_STATE_PLAYING) == GST_STATE_FAILURE)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   741
+                               GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   742
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   743
         CheckForErrors();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   744
         return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   745
@@ -1326,13 +1075,12 @@ bool wxGStreamerMediaBackend::Play()
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   746
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   747
 // Marks where we paused and pauses the stream
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   748
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   749
-// THREAD-UNSAFE in 0.8, maybe in 0.10 as well
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   750
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   751
 bool wxGStreamerMediaBackend::Pause()
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   752
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   753
     m_llPausedPos = wxGStreamerMediaBackend::GetPosition();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   754
     if (gst_element_set_state (m_playbin,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   755
-                               GST_STATE_PAUSED) == GST_STATE_FAILURE)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   756
+                               GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   757
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   758
         CheckForErrors();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   759
         return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   760
@@ -1353,7 +1101,7 @@ bool wxGStreamerMediaBackend::Stop()
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   761
     {   // begin state lock
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   762
         wxMutexLocker lock(m_asynclock);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   763
         if(gst_element_set_state (m_playbin,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   764
-                                  GST_STATE_PAUSED) == GST_STATE_FAILURE ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   765
+                                  GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   766
           !SyncStateChange(m_playbin, GST_STATE_PAUSED))
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   767
         {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   768
             CheckForErrors();
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   769
@@ -1417,10 +1165,8 @@ wxLongLong wxGStreamerMediaBackend::GetP
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   770
     else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   771
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   772
         gint64 pos;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   773
-        GstFormat fmtTime = GST_FORMAT_TIME;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   774
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   775
-        if (!wxGst_element_query_position(m_playbin, &fmtTime, &pos) ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   776
-            fmtTime != GST_FORMAT_TIME || pos == -1)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   777
+        if (!gst_element_query_position(m_playbin, GST_FORMAT_TIME, &pos) || pos == -1)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   778
             return 0;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   779
         return pos / GST_MSECOND ;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   780
     }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   781
@@ -1438,44 +1184,21 @@ wxLongLong wxGStreamerMediaBackend::GetP
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   782
 // This is also an exceedingly ugly function due to the three implementations
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   783
 // (or, rather two plus one implementation without a seek function).
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   784
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   785
-// This is asynchronous and thread-safe on both 0.8 and 0.10.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   786
-//
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   787
 // NB: This fires both a stop and play event if the media was previously
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   788
 // playing... which in some ways makes sense. And yes, this makes the video
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   789
 // go all haywire at times - a gstreamer bug...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   790
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   791
 bool wxGStreamerMediaBackend::SetPosition(wxLongLong where)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   792
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   793
-#if GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR == 8 \
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   794
-                           && GST_VERSION_MICRO == 0
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   795
-    // 0.8.0 has no gst_element_seek according to official docs!!!
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   796
-    wxLogSysError(wxT("GStreamer 0.8.0 does not have gst_element_seek")
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   797
-                  wxT(" according to official docs"));
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   798
-    return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   799
-#else // != 0.8.0
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   800
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   801
-#   if GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   802
-        gst_element_seek (m_playbin, m_dRate, GST_FORMAT_TIME,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   803
+    if ( gst_element_seek (m_playbin, m_dRate, GST_FORMAT_TIME,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   804
            (GstSeekFlags)(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   805
                           GST_SEEK_TYPE_SET, where.GetValue() * GST_MSECOND,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   806
-                          GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE );
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   807
-#   else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   808
-        // NB: Some gstreamer versions return false basically all the time
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   809
-        // here - even totem doesn't bother to check the return value here
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   810
-        // so I guess we'll just assume it worked -
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   811
-        // TODO: maybe check the gst error callback???
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   812
-        gst_element_seek (m_playbin, (GstSeekType) (GST_SEEK_METHOD_SET |
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   813
-            GST_FORMAT_TIME | GST_SEEK_FLAG_FLUSH),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   814
-            where.GetValue() * GST_MSECOND );
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   815
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   816
-#   endif // GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   817
-
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   818
+                          GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE ) )
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   819
     {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   820
         m_llPausedPos = where;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   821
         return true;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   822
     }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   823
-    return true;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   824
-#endif //== 0.8.0
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   825
+    return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   826
 }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   827
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   828
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   829
@@ -1487,10 +1210,8 @@ bool wxGStreamerMediaBackend::SetPositio
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   830
 wxLongLong wxGStreamerMediaBackend::GetDuration()
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   831
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   832
     gint64 length;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   833
-    GstFormat fmtTime = GST_FORMAT_TIME;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   834
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   835
-    if(!wxGst_element_query_duration(m_playbin, &fmtTime, &length) ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   836
-       fmtTime != GST_FORMAT_TIME || length == -1)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   837
+    if(!gst_element_query_duration(m_playbin, GST_FORMAT_TIME, &length) || length == -1)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   838
         return 0;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   839
     return length / GST_MSECOND ;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   840
 }
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   841
@@ -1512,7 +1233,7 @@ void wxGStreamerMediaBackend::Move(int W
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   842
 // wxGStreamerMediaBackend::GetVideoSize
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   843
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   844
 // Returns our cached video size from Load/gst_notify_caps_callback
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   845
-// gst_x_overlay_get_desired_size also does this in 0.8...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   846
+// gst_video_overlay_get_desired_size also does this in 0.8...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   847
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   848
 wxSize wxGStreamerMediaBackend::GetVideoSize() const
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   849
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   850
@@ -1539,9 +1260,8 @@ wxSize wxGStreamerMediaBackend::GetVideo
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   851
 //TODO: forcing frame/samplerates, see audioscale and videorate. Audioscale is
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   852
 //TODO: part of playbin.
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   853
 //
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   854
-// In 0.10 GStreamer has new gst_element_seek API that might
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   855
-// support this - and I've got an attempt to do so but it is untested
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   856
-// but it would appear to work...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   857
+// In has new gst_element_seek API that supports this - and I've got an attempt
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   858
+// to do so but it is untested but it would appear to work...
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   859
 //-----------------------------------------------------------------------------
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   860
 double wxGStreamerMediaBackend::GetPlaybackRate()
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   861
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   862
@@ -1552,7 +1272,6 @@ double wxGStreamerMediaBackend::GetPlayb
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   863
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   864
 bool wxGStreamerMediaBackend::SetPlaybackRate(double dRate)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   865
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   866
-#if GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   867
 #if 0 // not tested enough
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   868
     if( gst_element_seek (m_playbin, dRate, GST_FORMAT_TIME,
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   869
                  (GstSeekFlags)(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT),
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   870
@@ -1565,7 +1284,6 @@ bool wxGStreamerMediaBackend::SetPlaybac
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   871
 #else
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   872
     wxUnusedVar(dRate);
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   873
 #endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   874
-#endif
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   875
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   876
     // failure
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   877
     return false;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   878
@@ -1593,10 +1311,8 @@ wxLongLong wxGStreamerMediaBackend::GetD
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   879
 wxLongLong wxGStreamerMediaBackend::GetDownloadTotal()
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   880
 {
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   881
     gint64 length;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   882
-    GstFormat fmtBytes = GST_FORMAT_BYTES;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   883
 
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   884
-    if (!wxGst_element_query_duration(m_playbin, &fmtBytes, &length) ||
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   885
-          fmtBytes != GST_FORMAT_BYTES || length == -1)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   886
+    if (!gst_element_query_duration(m_playbin, GST_FORMAT_BYTES, &length) || length == -1)
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   887
         return 0;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   888
     return length;
d7385e987993 24949263 Compile wxwidgets with newer gstreamer
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff changeset
   889
 }