Commit graph

367 commits

Author SHA1 Message Date
Tim-Philipp Müller
72c10e8243 webrtc-sendrecv: define GST_USE_UNSTABLE_API to avoid compiler warnings 2018-02-02 08:39:04 +00:00
Tim-Philipp Müller
43a27385c3 Update README
Point to upstream repos now that it's been merged
2018-02-02 08:23:30 +00:00
Philippe Normand
48247c6ab6 meson: fix version number
Current development version is 1.13.0.1.
2017-12-31 13:21:30 +00:00
Nirbheek Chauhan
97cf763420 sendrecv: Add a Google STUN server to the configuration
Without this, the example will only work on link-local and localhost
networks.
2017-12-12 21:40:48 +05:30
Matthew Waters
e4e83a648b server/js: also allow running on localhost 2017-11-23 00:29:39 +11:00
Mathieu Duponchelle
e5c5767298 Update to new promise API 2017-11-22 22:28:55 +10:00
Nirbheek Chauhan
0c5e799952 multiparty sendrecv: Add a queue before the audio sink
Missed this, fixes the bug where removing a peer causes the pipeline to
get stuck. However, when peers leave, there is still a chance that the
pipeline will get stuck.
2017-10-30 13:24:21 +05:30
Nirbheek Chauhan
9b1a0e5389 WIP: Add a new multiparty sendrecv gstreamer demo
You can join a room and an audio-only call will be started with all
peers in that room. Currently uses audiotestsrc only.

BUG: With >2 peers in a call, if a peer leaves, the pipeline stops
     outputting data from the remaining peers to the (audio) sink.

TODO: JS code to allow a browser to join the call
TODO: Cleanup pipeline when a peer leaves
TODO: Add ICE servers to allow calls over the Internet
TODO: Perhaps setup a TURN server as well
2017-10-30 09:14:29 +05:30
Nirbheek Chauhan
569aff43f9 sendrecv: Rename function for greater clarity 2017-10-30 09:14:29 +05:30
Nirbheek Chauhan
96e4f39fd8 Update Protocol.md
Fix indentation typos
2017-10-29 04:08:45 +05:30
Nirbheek Chauhan
d687ff3d91 simple-server: Add support for multi-party rooms
Also add a new room-client.py to test the protocol which is documented
in Protocol.md
2017-10-28 19:20:44 +05:30
Nirbheek Chauhan
2db85c41cc Protocol.md: Fix headings 2017-10-28 19:03:11 +05:30
Nirbheek Chauhan
c2961305e3 signalling/client.py: Rename to session-client.py
Also fix CALL -> SESSION naming
2017-10-28 19:00:03 +05:30
Nirbheek Chauhan
e9b0656bad Add sendrecv implementation in js and gst webrtc
JS code runs on the browser and uses the browser's webrtc
implementation.

C code uses gstreamer's webrtc implementation, for which you need the
following repositories:

https://github.com/ystreet/gstreamer/tree/promise
https://github.com/ystreet/gst-plugins-bad/tree/webrtc

You can build these with either Autotools gst-uninstalled:

https://arunraghavan.net/2014/07/quick-start-guide-to-gst-uninstalled-1-x/

Or with Meson gst-build:

https://cgit.freedesktop.org/gstreamer/gst-build/
2017-10-21 20:02:19 +05:30
Nirbheek Chauhan
663ad7ba98 Add a simple python3 webrtc signalling server
+ client for testing + protocol documentation
2017-10-21 19:56:52 +05:30
Nirbheek Chauhan
8d782e4460 Initial commit 2017-10-21 19:43:01 +05:30
Matthew Waters
fed396ff8e playback/android: expose after setting the window handle
Fixes the view not updating in PAUSED after a surface change from an
orientation change/explicit surface change.
2017-10-12 16:28:47 +11:00
Matthew Waters
9dfe9fb41d player/ios: constrain the bottom of the video view to the top of the toolbar
Otherwise, no video output on iPad.
2017-08-17 19:31:51 +10:00
Sebastian Dröge
e88c04ff34 gst-play: Fix more deprecation warnings 2017-08-08 12:02:39 +03:00
Philippe Normand
d23171fbdf gtk-play: fix deprecation warnings 2017-08-08 12:01:34 +03:00
Simon Himmelbauer
9ebe002f51 playback/player/ios: Updated the iOS example in order to be compatible with the latest GStreamer as well as Apple Hardware
-) Disabled bitcode generation
-) Removed/Renamed several plugins in the gst_ios_init.m
2017-05-23 17:34:23 +03:00
Jan Schmidt
1e0b3ed778 Don't crash if no uri is passed in the intent
If we receive an intent with no attached data, don't
throw a null pointer exception - just don't set a URI
on the player.
2017-05-20 17:30:08 +02:00
Jan Schmidt
1116ae85e2 Play.java: Don't lookup R.id.surface_video twice.
R.id.surface_video was stored in the gsv variable just
above, don't look it up a second time.
2017-05-20 17:28:41 +02:00
Jan Schmidt
0436ec5b1c Support GSTREAMER_ROOT_ANDROID env var
If GSTREAMER_ROOT_ANDROID is set, try using
that for the location of the GStreamer Android tree,
but still allow it to be overridden in local
gradle properties
2017-05-20 17:28:17 +02:00
Simon Himmelbauer
f7ce5cd694 playback/player/qt: Use QUrl::toEncoded() instead of ::toString()
The former properly encodes the URL components to give a valid URL, the
latter generates a human-readable URL.
2017-05-15 12:02:03 +03:00
Víctor Manuel Jáquez Leal
d909deaaf4 playback/player: gtk_menu_popup() is deprecated
gtk_menu_popup() is deprecated in GTK+ 3.22. This patch adds a
compiler guard to use gtk_menu_popup at pointer() if GTK+ is 3.22
or bigger.

https://bugzilla.gnome.org/show_bug.cgi?id=781904
2017-05-02 14:11:30 +03:00
Víctor Manuel Jáquez Leal
dbb0375bfe playback/player: don't unref a contained widget
In the GTK+ model, when a wiget is created, it is floating, thus
when it is added to a widget container, this container is the owner
of the widget.

The video_area widget is created in two different paths:

1\ when the renderer element is also a GTK+ widget and we are
   the owners.
2\ when the renderer element is an overlay an video area a new
   widget owned by the container.

In the first code path, there was a memory leak fixed on commit
f8d4796a, but it didn't consider the second path, leading to a
segmentation fault because the owner of the widget is not us.

This patch unrefs early the video area widget in the first path
avoiding to unref it twice in the second path.

https://bugzilla.gnome.org/show_bug.cgi?id=781904
2017-05-02 14:11:30 +03:00
Víctor Manuel Jáquez Leal
ff1a6546da playback/player: don't unref gtk_sink but sink it
Commit 5b8ba60c was added because of a memory leak when gtksink was
used as renderer. Nonetheless the patch didn't consider two facts:

1\ that the gtk_sink element was in floating state
2\ there is another code path where the gtk_sink element is already
   sank

Thus the correct fix, is not to ref and unref gtk_sink, but sink it.

https://bugzilla.gnome.org/show_bug.cgi?id=781904
2017-05-02 14:11:30 +03:00
Carlos Rafael Giani
175f7c8da1 playback/player: qt: use QApplication instead of QGuiApplication
This avoids the following fatal error:

"QWidget: Cannot create a QWidget without QApplication"

https://bugzilla.gnome.org/show_bug.cgi?id=781789
2017-04-27 12:27:49 +03:00
Arun Raghavan
71d85d3393 playback/player/android: Make plugin list in Android.mk easier to read
Minor Makefile reformatting to make how users can select what plugins
they want easier to figure out.
2017-04-03 13:23:50 +05:30
Sebastian Dröge
5fc4fd5958 playback/player/qt: Fix build with new GstPlayer API
Configuration has a separate interface now.
2017-03-08 17:12:02 +02:00
Tim-Philipp Müller
a8fdbf57b2 meson: bump version 2017-01-13 12:42:53 +00:00
Arun Raghavan
e17b52b501 playback/player/android: Fix assets directory
Needed with GStreamer <= 1.10 and newer Android Studio so that we
correctly place the assets with respect to the rest of the code.
2017-01-06 19:00:17 +05:30
Arun Raghavan
0ede8b3796 playback/player/android: Force externalNativeBuild before Java building
This is needed so that we copy over the Java files from gst-android that
include the GStreamer class which is used while compiling app.
2017-01-02 11:21:11 +05:30
Tim-Philipp Müller
0d340e1b2f meson: update version 2016-11-01 18:13:11 +00:00
Sebastian Dröge
4cd72781af playback/player/android: Add .gitignore 2016-10-03 13:15:27 +03:00
Sebastian Dröge
8b0ea8257f playback/player/android: Switch to native gradle ndk-build support
Based on a patch by Olivier Crete for another project
  be9470a7e1
2016-10-03 13:15:19 +03:00
Arun Raghavan
a5cdde9119 playback/player/android: Switch to building against universal packages 2016-09-04 10:12:52 +03:00
Sebastian Dröge
fc41dd802f Add meson build system for playback/player/{gst-play,gtk} and network/http-launch 2016-08-26 19:02:24 +03:00
Sebastian Dröge
e9c4fd17a7 Merge commit 'http-launch/merge' 2016-08-26 18:37:02 +03:00
Sebastian Dröge
7b9b4b15da Merge commit 'gst-player/merge'
All gst-player example applications from https://github.com/sdroege/gst-player
2016-08-26 18:28:43 +03:00
Sebastian Dröge
3e67a2315c Initial commit with empty meson.build 2016-08-26 18:28:34 +03:00
Sebastian Dröge
f6cf0dd997 playback/player: gtk: Remove unused variable 2016-08-23 23:48:26 +03:00
Sebastian Dröge
d30c65f9f8 playback/player: Block value-changed signal when playing an URI to prevent spurious seeks 2016-08-23 19:02:53 +03:00
Arun Raghavan
5743b39d4e playback/player: android: Update build tools and gradle
New build tools needed for Instant Run, and Android Studio wants us to
update that and the gradle version.
2016-08-23 09:52:00 +03:00
Sebastian Dröge
1d760d92ed playback/player: gtk: Block value-change signal handler while updating the range of the seekbar too
I.e. when updating the duration. Changing the range might also change the
value, which would then trigger a seek.
2016-08-22 16:19:59 +03:00
Sebastian Dröge
89c74b3dd8 playback/player: gtk: Use GQueue instead of g_list_append() or the prepend-reverse trick 2016-08-18 15:48:57 +03:00
Maxin B. John
e82333ab70 playback/player: gtk-play: provide similar behaviour for quit and close
In x86 targets, gtk-play just pause rather than quitting the application
when we click the close button (delete-event). Change the callback function
to get similar behaviour when we click on "Quit" menu option.
2016-08-08 11:43:32 +02:00
Guillaume Desmottes
f8d4796a57 playback/player: gtk: fix widget leak
The ref returned by gst_player_gtk_video_renderer_get_widget() was never
released.
2016-07-21 20:34:40 +03:00
Guillaume Desmottes
5b8ba60c46 playback/player: gtk: fix gtkglsink leak
The ref returned by gst_element_factory_make() was leaked.
2016-07-21 20:34:40 +03:00