platform/upstream/gstreamer.git
10 years agovalidate:tools: Do not forget to keep our ref to file_info g-v-transcode
Thibault Saunier [Thu, 9 Jan 2014 14:24:05 +0000 (15:24 +0100)]
validate:tools: Do not forget to keep our ref to file_info g-v-transcode

10 years agovalidate:tools: Cleanup how we check result of rendering test
Thibault Saunier [Thu, 9 Jan 2014 14:23:38 +0000 (15:23 +0100)]
validate:tools: Cleanup how we check result of rendering test

Factor out a method in the utils, and make use of it for both ges-launch and
gst-validate-transcode

10 years agovalidate:tools: Don't give file duration as timeout for gst-validate
Thibault Saunier [Thu, 9 Jan 2014 14:20:46 +0000 (15:20 +0100)]
validate:tools: Don't give file duration as timeout for gst-validate

We use the other mean letting us actually control the process
advancement.

10 years agovalidate:tools: Veryfy test manager are operationnal before using them
Thibault Saunier [Thu, 9 Jan 2014 14:17:53 +0000 (15:17 +0100)]
validate:tools: Veryfy test manager are operationnal before using them

10 years agovalidate:tools: Move the main function in a dedictaed file
Thibault Saunier [Thu, 9 Jan 2014 14:15:51 +0000 (15:15 +0100)]
validate:tools: Move the main function in a dedictaed file

10 years agovalidate:tools: Print some statistic at the end of the test run
Thibault Saunier [Thu, 9 Jan 2014 10:14:19 +0000 (11:14 +0100)]
validate:tools: Print some statistic at the end of the test run

10 years agovalidate:tools: Print position every 50ms in gst-validate
Thibault Saunier [Thu, 9 Jan 2014 10:13:40 +0000 (11:13 +0100)]
validate:tools: Print position every 50ms in gst-validate

10 years agovalidate:tools: Rename files around and integrate into autotools
Thibault Saunier [Thu, 9 Jan 2014 08:39:05 +0000 (09:39 +0100)]
validate:tools: Rename files around and integrate into autotools

File distribution used to be messy, clean it all up. Also make sure the
launcher is integrated into the autotools.

10 years agovalidate: tools: Enhance error message for GstValidate tests
Thibault Saunier [Thu, 9 Jan 2014 08:28:02 +0000 (09:28 +0100)]
validate: tools: Enhance error message for GstValidate tests

10 years agovalidate: tools: Concider timeouts as errors when printing tests
Thibault Saunier [Thu, 9 Jan 2014 08:27:50 +0000 (09:27 +0100)]
validate: tools: Concider timeouts as errors when printing tests

10 years agovalidate: tools: Refactor and add a GstValidateTranscodeTest class
Thibault Saunier [Thu, 9 Jan 2014 08:14:27 +0000 (09:14 +0100)]
validate: tools: Refactor and add a GstValidateTranscodeTest class

10 years agovalidate: launcher: add the debug logger from pitivi
Thibault Saunier [Wed, 8 Jan 2014 17:51:14 +0000 (18:51 +0100)]
validate: launcher: add the debug logger from pitivi

It is way more powerfull, simple to use and usefull
than the stock python one and has been proved to work reliably

10 years agovalidate: tools: Unref the pipeline before the runner and monitor
Thibault Saunier [Mon, 13 Jan 2014 08:41:16 +0000 (09:41 +0100)]
validate: tools: Unref the pipeline before the runner and monitor

Avoids segfault in some cases, and monitors and runners have week ref on
their targets.

10 years agovalidate: tools: Add a gst-validate test manager
Thibault Saunier [Wed, 8 Jan 2014 08:49:38 +0000 (09:49 +0100)]
validate: tools: Add a gst-validate test manager

10 years agovalidate: tools: media-info: Fixes in the media file descriptor parsing code
Thibault Saunier [Wed, 8 Jan 2014 08:44:02 +0000 (09:44 +0100)]
validate: tools: media-info: Fixes in the media file descriptor parsing code

We used to always fail when the user was passing something not NULL as err

10 years agovalidate: tools: Cleanup test launcher tool
Thibault Saunier [Tue, 31 Dec 2013 10:45:07 +0000 (11:45 +0100)]
validate: tools: Cleanup test launcher tool

Previous commit was not meant to be pushed and those two should have
been fixed up together, sorry for the mistake

10 years agovalidate: fix parallel build
Reynaldo H. Verdejo Pinochet [Thu, 30 Jan 2014 18:52:34 +0000 (15:52 -0300)]
validate: fix parallel build

Without this, parallel building with > 2 jobs fails.
Also, LDFLAGS should not contain -l flags but _LIBADD.

10 years agovalidate: drop unneeded stdio include
Reynaldo H. Verdejo Pinochet [Thu, 30 Jan 2014 18:47:15 +0000 (15:47 -0300)]
validate: drop unneeded stdio include

10 years agoAdd a test launcher tool
Thibault Saunier [Tue, 31 Dec 2013 10:45:07 +0000 (11:45 +0100)]
Add a test launcher tool

10 years agovalidate: fix installation
Lubosz Sarnecki [Mon, 25 Nov 2013 20:51:11 +0000 (21:51 +0100)]
validate: fix installation

* install headers
* fix libname in pk file

10 years agovalidate-scenarios: list scenarios in GST_VALIDATE_SCENARIOS_PATH
Vincent Penquerc'h [Fri, 15 Nov 2013 10:22:24 +0000 (05:22 -0500)]
validate-scenarios: list scenarios in GST_VALIDATE_SCENARIOS_PATH

GST_VALIDATE_SCENARIOS_PATH was used only for loading scenarios,
so any in that path would not be listed by -l.

Change-Id: If3cb94867ef3876933bda02477675c8ccf67baaf

10 years agotools: transcoding: Avoid reencoding unless explicitely specified
Thibault Saunier [Fri, 18 Oct 2013 19:22:03 +0000 (16:22 -0300)]
tools: transcoding: Avoid reencoding unless explicitely specified

10 years agopad-monitor: Do not concider TIME_NONE as 0 for serialized events
Thibault Saunier [Mon, 28 Oct 2013 22:49:52 +0000 (19:49 -0300)]
pad-monitor: Do not concider TIME_NONE as 0 for serialized events

In case we have serialized events right after a buffer that had no
timestamp set we concider that last timestamp was 0, but we can
actually not concider the timestamp at all in that case as it is
only "meaningless value".

10 years agotools: Simplify the setting of action scenario vs config scenario
Thibault Saunier [Sat, 19 Oct 2013 16:41:01 +0000 (13:41 -0300)]
tools: Simplify the setting of action scenario vs config scenario

This make it easier for user to understand the difference between
the two concepts and avoids confusion.

Change-Id: Ib42913722c93a1e7e3c8b156173c458230946592

Conflicts:
validate/tools/gst-validate-transcoding.c
validate/tools/gst-validate.c

10 years agoscenario: Do not execute anything when listing scenarios
Thibault Saunier [Fri, 25 Oct 2013 09:33:54 +0000 (11:33 +0200)]
scenario: Do not execute anything when listing scenarios

10 years agoscenario: Add a "set-feature-rank" config action
Thibault Saunier [Fri, 25 Oct 2013 09:31:58 +0000 (11:31 +0200)]
scenario: Add a "set-feature-rank" config action

This action can be used to change the rank of a particular element,
so you can force a particular element to be used when using
autoplugging elements (such as decodebin, encodebin, and friends)

10 years agoscenario: Add support for "config" actions, actions executed at parse time
Thibault Saunier [Fri, 25 Oct 2013 09:29:04 +0000 (11:29 +0200)]
scenario: Add support for "config" actions, actions executed at parse time

This type of actions is used to change some parametter on GStreamer
core and it plugins, it can be fore example, to change the rank of a
plugin or things like that.

10 years agovalidate-transcoding: Dot pipeline on error
Thibault Saunier [Wed, 16 Oct 2013 20:35:36 +0000 (17:35 -0300)]
validate-transcoding: Dot pipeline on error

10 years agovagrant: initial commit
Zaheer Abbas Merali [Sat, 26 Oct 2013 10:01:37 +0000 (03:01 -0700)]
vagrant: initial commit

Vagrant environment to do GStreamer development, debugging and
testing.

10 years agomi-info: handle streams with unknown duration
Stefan Sauer [Mon, 21 Oct 2013 11:06:46 +0000 (13:06 +0200)]
mi-info: handle streams with unknown duration

10 years agomi-info: start handling missing plugin messages
Stefan Sauer [Mon, 21 Oct 2013 07:08:18 +0000 (09:08 +0200)]
mi-info: start handling missing plugin messages

We only print them to the debug log for now.

10 years agomi-preview: use ensure_native() in realized()
Stefan Sauer [Mon, 21 Oct 2013 07:07:09 +0000 (09:07 +0200)]
mi-preview: use ensure_native() in realized()

This fixes X crashers at startup when preparing the overlay.

10 years agomi/TODO: planning update
Stefan Sauer [Sat, 19 Oct 2013 19:15:08 +0000 (21:15 +0200)]
mi/TODO: planning update

10 years agomi-info: go back to use the sync api
Stefan Sauer [Sat, 19 Oct 2013 19:13:46 +0000 (21:13 +0200)]
mi-info: go back to use the sync api

If we discover 'too quickly' the machinery seems to get into a state, where it
does not discover anything anymore.

10 years agomi-preview: reflow the overlay sync
Stefan Sauer [Fri, 18 Oct 2013 21:33:50 +0000 (23:33 +0200)]
mi-preview: reflow the overlay sync

We need to listen to preview-widget resizing to send an expose to the gst-
overlay. Defer discovering until the ui has be realized.

10 years agomi-app: use an idle-handler to set the initial directory
Stefan Sauer [Fri, 18 Oct 2013 16:22:33 +0000 (18:22 +0200)]
mi-app: use an idle-handler to set the initial directory

This ensures we don't emit selection changed signals before we're up and running.

10 years agomi-info: improve media preview
Stefan Sauer [Thu, 17 Oct 2013 20:34:25 +0000 (22:34 +0200)]
mi-info: improve media preview

Set double_buffering when we analyzed the media. Drop signal handlers on preview
widget for delayed configuration. Prepare preview as soon as we have discovered.

10 years agoProperly link against gstreamer-video as it is now needed
Thibault Saunier [Mon, 14 Oct 2013 14:25:39 +0000 (11:25 -0300)]
Properly link against gstreamer-video as it is now needed

10 years agomedia-info: Do not use GST_PTR_FORMAT with g_print
Thibault Saunier [Mon, 14 Oct 2013 14:20:03 +0000 (11:20 -0300)]
media-info: Do not use GST_PTR_FORMAT with g_print

Fix compilation

10 years agodata: Avoid races in the scrub_forward seeking scenario
Thibault Saunier [Mon, 14 Oct 2013 14:07:03 +0000 (11:07 -0300)]
data: Avoid races in the scrub_forward seeking scenario

Make sure that it does not last too long if the file is long (scrubing
on 10 secs maximum), and make sure that we do not end up seeking after
the max duration

10 years agoreport: Set refcount=1 when creating a report
Thibault Saunier [Mon, 14 Oct 2013 14:05:48 +0000 (11:05 -0300)]
report: Set refcount=1 when creating a report

As it should start with 1 reference, not 0

11 years agoscenario: Add an action that checks the "force-key-unit" event execution
Thibault Saunier [Wed, 9 Oct 2013 12:35:29 +0000 (09:35 -0300)]
scenario: Add an action that checks the "force-key-unit" event execution

11 years agoscenario: Make the get_clocktime helper a public method
Thibault Saunier [Wed, 9 Oct 2013 12:33:06 +0000 (09:33 -0300)]
scenario: Make the get_clocktime helper a public method

So it can be reused outside of the core code

11 years agopad-monitor: Do not try to compare 2 not fixed values
Thibault Saunier [Mon, 7 Oct 2013 22:47:15 +0000 (19:47 -0300)]
pad-monitor: Do not try to compare 2 not fixed values

There is no reliable way of checking those values in the case they
are not fixed, let's just make sure we get fixed values before
executing the check

11 years agodata: Add an adaptive video framerate and size scenario
Thibault Saunier [Mon, 7 Oct 2013 20:40:54 +0000 (17:40 -0300)]
data: Add an adaptive video framerate and size scenario

11 years agodata: Add an adaptive video framerate scenario
Thibault Saunier [Mon, 7 Oct 2013 20:18:37 +0000 (17:18 -0300)]
data: Add an adaptive video framerate scenario

11 years agodata: Add a scenario where we change the video size on during playback
Thibault Saunier [Mon, 7 Oct 2013 15:08:28 +0000 (12:08 -0300)]
data: Add a scenario where we change the video size on during playback

11 years agotranscoding: Add a new action to change restriction caps at runtime
Thibault Saunier [Mon, 7 Oct 2013 15:06:22 +0000 (12:06 -0300)]
transcoding: Add a new action to change restriction caps at runtime

11 years agotranscoding: Fix the way we get pad caps
Thibault Saunier [Mon, 7 Oct 2013 15:07:47 +0000 (12:07 -0300)]
transcoding: Fix the way we get pad caps

11 years agomi-todo: planning and todo comment update
Stefan Sauer [Mon, 7 Oct 2013 08:59:39 +0000 (10:59 +0200)]
mi-todo: planning and todo comment update

11 years agomi-info: add two more wikilinks
Stefan Sauer [Mon, 7 Oct 2013 08:59:15 +0000 (10:59 +0200)]
mi-info: add two more wikilinks

11 years agomi-info: filter language-code from tags
Stefan Sauer [Mon, 7 Oct 2013 08:07:31 +0000 (10:07 +0200)]
mi-info: filter language-code from tags

We already show the language code as a separate field.

11 years agodata: Set seeks to accurate+flush by default
Thibault Saunier [Sat, 5 Oct 2013 16:29:52 +0000 (13:29 -0300)]
data: Set seeks to accurate+flush by default

11 years agoscenario: Pass through gst-indent
Thibault Saunier [Sat, 5 Oct 2013 15:44:39 +0000 (12:44 -0300)]
scenario: Pass through gst-indent

11 years agoscenario: Use g_error instead of exit (0)
Thibault Saunier [Sat, 5 Oct 2013 15:43:27 +0000 (12:43 -0300)]
scenario: Use g_error instead of exit (0)

11 years agoscenario: Factor out function to get GstClockTime out of a structure
Thibault Saunier [Sat, 5 Oct 2013 15:43:03 +0000 (12:43 -0300)]
scenario: Factor out function to get GstClockTime out of a structure

11 years agoscenario: Use a weak ref to the pipeline
Thibault Saunier [Sat, 5 Oct 2013 15:01:46 +0000 (12:01 -0300)]
scenario: Use a weak ref to the pipeline

We are listening to it, we should not be owning a ref to it.

11 years agorunner: Use "18" as exit code in case of error
Thibault Saunier [Sat, 5 Oct 2013 15:00:35 +0000 (12:00 -0300)]
runner: Use "18" as exit code in case of error

It is a random number, but it will in most cases give people a hint
that gst-validate reported a critical issue, and thus set the return
code, only by looking at it

Also make use of gst_validate_runner_print() in
gst-validate-transcoding.c as we were copy pasting that method there.

11 years agoscenario: Handle formulas in playback_time
Thibault Saunier [Thu, 3 Oct 2013 22:23:57 +0000 (19:23 -0300)]
scenario: Handle formulas in playback_time

And port seek forward/backward scenarios to relative seeking

11 years agoscenario: Check that all action were properly executed
Thibault Saunier [Sat, 28 Sep 2013 00:18:55 +0000 (02:18 +0200)]
scenario: Check that all action were properly executed

11 years agoscenario: Add the notion of repeated actions
Thibault Saunier [Fri, 27 Sep 2013 22:15:13 +0000 (00:15 +0200)]
scenario: Add the notion of repeated actions

11 years agoutils: Add util functions to parse simple mathematical expressions
Thibault Saunier [Fri, 27 Sep 2013 22:05:51 +0000 (00:05 +0200)]
utils: Add util functions to parse simple mathematical expressions

And make use of it to set the start of a seek

11 years agoscenario: Error out and exit when we fail loading a scenario
Thibault Saunier [Fri, 27 Sep 2013 22:12:07 +0000 (00:12 +0200)]
scenario: Error out and exit when we fail loading a scenario

11 years agomi-info: add more wikilinks
Stefan Sauer [Fri, 4 Oct 2013 07:58:17 +0000 (09:58 +0200)]
mi-info: add more wikilinks

11 years agomi-info: pretty print framerates
Stefan Sauer [Fri, 4 Oct 2013 05:51:46 +0000 (07:51 +0200)]
mi-info: pretty print framerates

Avoid to print 0 fps. Handle the special 0/1 case for still images.

11 years agogst-validate-scenario: Only typedef the struct once
Olivier Crête [Thu, 3 Oct 2013 22:14:18 +0000 (18:14 -0400)]
gst-validate-scenario: Only typedef the struct once

Some gcc versions don't like the typedef being done twice

11 years agomi-info: add a helper to format bit-rates
Stefan Sauer [Thu, 3 Oct 2013 20:23:22 +0000 (22:23 +0200)]
mi-info: add a helper to format bit-rates

Print bit-rates in kbit/sec. Add handling for unknown values and ranges.

11 years agomi-preview: ensure that natural-size >= min-size
Stefan Sauer [Thu, 3 Oct 2013 20:22:46 +0000 (22:22 +0200)]
mi-preview: ensure that natural-size >= min-size

11 years agomi/TODO: planning update
Stefan Sauer [Tue, 1 Oct 2013 06:21:45 +0000 (08:21 +0200)]
mi/TODO: planning update

11 years agomi-info: reset toc info when we did not get disco info
Stefan Sauer [Tue, 1 Oct 2013 05:48:20 +0000 (07:48 +0200)]
mi-info: reset toc info when we did not get disco info

11 years agoscenario: do not set default seek flags
Vincent Penquerc'h [Thu, 3 Oct 2013 09:32:54 +0000 (05:32 -0400)]
scenario: do not set default seek flags

Seeks will be done with no particular flags, unless specified
in the scenario.

11 years agomi-info: filter buffer entries from caps
Stefan Sauer [Mon, 30 Sep 2013 13:39:54 +0000 (15:39 +0200)]
mi-info: filter buffer entries from caps

Filter buffer entries from caps before showing them as string.

11 years agomi-info: show tooltip for caps labels with full caps string
Stefan Sauer [Sat, 28 Sep 2013 05:19:59 +0000 (07:19 +0200)]
mi-info: show tooltip for caps labels with full caps string

11 years agomi-info: send seek events when clicking toc entries
Stefan Sauer [Sat, 28 Sep 2013 05:12:27 +0000 (07:12 +0200)]
mi-info: send seek events when clicking toc entries

Get the start-pos from the active toc entry and seek.

11 years agomi-info: use a TreeView for the toc
Stefan Sauer [Fri, 27 Sep 2013 06:03:59 +0000 (08:03 +0200)]
mi-info: use a TreeView for the toc

Use a TreeView with a TreeStore to show toc-entries.

11 years agogst-validate: Don't use the GOptionContext after freeing it
Olivier Crête [Mon, 30 Sep 2013 13:51:21 +0000 (09:51 -0400)]
gst-validate: Don't use the GOptionContext after freeing it

11 years agomi-info: indent toc entries
Stefan Sauer [Wed, 25 Sep 2013 06:19:26 +0000 (08:19 +0200)]
mi-info: indent toc entries

Also add todo for how to make it a treeview instead

11 years agoTODO: planning
Stefan Sauer [Wed, 25 Sep 2013 06:01:29 +0000 (08:01 +0200)]
TODO: planning

11 years agomi-info: mark nullable parameters as such
Stefan Sauer [Wed, 25 Sep 2013 05:58:49 +0000 (07:58 +0200)]
mi-info: mark nullable parameters as such

11 years agomi-info: add start/stop times in toc
Stefan Sauer [Wed, 25 Sep 2013 05:54:43 +0000 (07:54 +0200)]
mi-info: add start/stop times in toc

11 years agopad-monitor: Check if channel-mask is present only if channels > 2
Thibault Saunier [Fri, 20 Sep 2013 22:23:17 +0000 (00:23 +0200)]
pad-monitor: Check if channel-mask is present only if channels > 2

As it is not a mandatory field otherwize

https://bugzilla.gnome.org/show_bug.cgi?id=708499

11 years agoscenario: Add GST_VALIDATE_SCENARIOS_PATH environment variable
Thibault Saunier [Thu, 19 Sep 2013 10:38:20 +0000 (07:38 -0300)]
scenario: Add GST_VALIDATE_SCENARIOS_PATH environment variable

So you can specify the PATHS where to look for scenario files

11 years agoscenarios: add 2 new scenarios for seeks with different seek types
Thiago Santos [Mon, 16 Sep 2013 13:03:07 +0000 (10:03 -0300)]
scenarios: add 2 new scenarios for seeks with different seek types

They test seeks that only update the stop or the start position, some
demuxers seem not to handle the case where start type is set to None.

11 years agovalidate-scenario: track position query results closer
Thiago Santos [Fri, 13 Sep 2013 15:09:30 +0000 (12:09 -0300)]
validate-scenario: track position query results closer

Always keep probing the pipeline for the current position and compare
with the latest requested seek segment to detect if the seek boundaries
are being respected

11 years agoscenario: Make it possible to define mandatory fields
Thibault Saunier [Tue, 17 Sep 2013 18:56:19 +0000 (15:56 -0300)]
scenario: Make it possible to define mandatory fields

And give a descrpition for actions

11 years agoscenario: add a track switch command, and an audio track switch test
Vincent Penquerc'h [Mon, 2 Sep 2013 15:11:15 +0000 (11:11 -0400)]
scenario: add a track switch command, and an audio track switch test

The "switch-track" command can be used to switch tracks. The "type"
argument selects which track type to change (can be "audio", "video",
or "text"). The "index" argument selects which track of this type
to use: it can be either a number, which will be the Nth track of
the given type, or a number with a "+" or "-" prefix, which means
a relative change (eg, "+1" means "next track", "-1" means "previous
track").

Conflicts:
validate/gst/validate/gst-validate-scenario.c

11 years agoscenario: Make it possible to register action parsing funcs before init
Thibault Saunier [Mon, 16 Sep 2013 21:48:38 +0000 (18:48 -0300)]
scenario: Make it possible to register action parsing funcs before init

11 years agovalidate: Add .pc files so applications can link against us
Thibault Saunier [Fri, 13 Sep 2013 18:48:56 +0000 (15:48 -0300)]
validate: Add .pc files so applications can link against us

11 years agomi-info: extact helper to format times
Stefan Sauer [Sun, 15 Sep 2013 13:11:53 +0000 (15:11 +0200)]
mi-info: extact helper to format times

11 years agomi-info: comment updates
Stefan Sauer [Fri, 13 Sep 2013 06:16:34 +0000 (08:16 +0200)]
mi-info: comment updates

11 years agoTODO: update planing
Stefan Sauer [Fri, 13 Sep 2013 06:12:34 +0000 (08:12 +0200)]
TODO: update planing

11 years agomi-info: extract ui-helper for format/codec-rows
Stefan Sauer [Fri, 13 Sep 2013 06:12:05 +0000 (08:12 +0200)]
mi-info: extract ui-helper for format/codec-rows

11 years agomi-info: extract ui helper for adding an entry
Stefan Sauer [Fri, 13 Sep 2013 05:55:14 +0000 (07:55 +0200)]
mi-info: extract ui helper for adding an entry

A helper to add a label + str formatted details as a table row.

11 years agomi-info: extract more common ui code into helpers
Stefan Sauer [Wed, 11 Sep 2013 06:21:06 +0000 (08:21 +0200)]
mi-info: extract more common ui code into helpers

11 years agomi-info: reshuffle container widgets
Stefan Sauer [Mon, 9 Sep 2013 16:48:10 +0000 (18:48 +0200)]
mi-info: reshuffle container widgets

Prepare for handling nested containers.

11 years agomi-info: code cleanups
Stefan Sauer [Mon, 9 Sep 2013 16:37:24 +0000 (18:37 +0200)]
mi-info: code cleanups

First reset the info pane and then check/update. This fixes not resetting the
tabs on info==null.

11 years agomi-info: fix type
Stefan Sauer [Mon, 9 Sep 2013 16:36:47 +0000 (18:36 +0200)]
mi-info: fix type

It is 'Notebook' and not 'NoteBook'.

11 years agomi: code cleanups, comments
Stefan Sauer [Fri, 6 Sep 2013 06:56:05 +0000 (08:56 +0200)]
mi: code cleanups, comments

11 years agomi-info: fix tab-index in compact mode
Stefan Sauer [Fri, 6 Sep 2013 06:03:51 +0000 (08:03 +0200)]
mi-info: fix tab-index in compact mode

11 years agoinfo: sort streams by stream_id
Stefan Sauer [Thu, 5 Sep 2013 07:18:26 +0000 (09:18 +0200)]
info: sort streams by stream_id

This way we are activating the right stream when switching tabs.