Jump to content


Photo

GStreamer 1.0

gstreamer 1.0 openpli

  • Please log in to reply
2520 replies to this topic

Re: GStreamer 1.0 #661 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 12 March 2015 - 19:34

I'm just think on a way to maybe avoid that this gst 1.0 bug does not leads to a wrong unlock mutex attempt.



Re: GStreamer 1.0 #662 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 12 March 2015 - 21:45

Try this

diff --git a/gstdvbaudiosink.c b/gstdvbaudiosink.c
index 2725def..70b783c 100644
--- a/gstdvbaudiosink.c
+++ b/gstdvbaudiosink.c
@@ -797,6 +797,7 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
                break;
        case GST_EVENT_EOS:
        {
+               gboolean pass_eos = FALSE;
                struct pollfd pfd[2];
                pfd[0].fd = self->unlockfd[0];
                pfd[0].events = POLLIN;
@@ -828,7 +829,7 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
                        if (pfd[1].revents & POLLIN)
                        {
                                GST_DEBUG_OBJECT(self, "got buffer empty from driver!\n");
-                               ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+                               pass_eos = TRUE;
                                break;
                        }

@@ -844,6 +845,8 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
 #else
                GST_BASE_SINK_PREROLL_LOCK(sink);
 #endif
+               if (pass_eos)
+                       ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);

                break;
        }


Re: GStreamer 1.0 #663 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 12 March 2015 - 23:53

unfortunately no  no change.



Re: GStreamer 1.0 #664 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 13 March 2015 - 08:10

Hmm thats wierd, because it looks to me clear what is happening:

We are not helding PREROLL_LOCK, while passing EOS to basesink event handler, since we called before GST_BASE_SINK_PREROLL_UNLOCK.

Then basesink does according to log this(not fixed version + added debug messages):

root@et4x00:/var/volatile/tmp# gst-launch-1.0 --gst-debug basesink:6,dvbaudiosink:5 playbin uri='file:///home/root/Front_Right.wav'
0:00:03.649135479  1103   0x507380 DEBUG           dvbaudiosink :gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> EVENT eos
0:00:03.650607442  1103   0x507380 DEBUG           dvbaudiosink :gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> PRE - GST_BASE_SINK_PREROLL_UNLOCK!!
0:00:03.652081331  1103   0x507380 DEBUG           dvbaudiosink :gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> POST - GST_BASE_SINK_PREROLL_UNLOCK!!
0:00:03.653453738  1103   0x507380 DEBUG           dvbaudiosink :gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> got buffer empty from driver!
0:00:03.654772887  1103   0x507380 DEBUG           dvbaudiosink :gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> PRE - SEND EOS EVENT TO BASESINK
0:00:03.655821220  1103   0x507380 DEBUG               basesink :gst_base_sink_get_sync_times:<audiosink-actual-sink-dvbaudio> sync times for EOS 0:00:01.530687500
0:00:03.657828442  1103   0x507380 LOG                 basesink :gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> avg frame diff 0:00:00.042002603
0:00:03.659519775  1103   0x507380 DEBUG               basesink :gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> reset rc_time to time 0:00:01.530687500
0:00:03.660821627  1103   0x507380 DEBUG               basesink :gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> possibly waiting for clock to reach 0:00:01.530687500, adjusted 0:00:01.530687500
0:00:03.662318405  1103   0x507380 LOG                 basesink :gst_base_sink_wait_clock:<audiosink-actual-sink-dvbaudio> time 0:00:01.530687500, base_time 9:44:30.172565429
Attempt to unlock mutex that was not locked

Last function which is called is gst_base_sink_wait_clock: http://cgit.freedesk...e/gstbasesink.c - 2028 line

 

/**
 * gst_base_sink_wait_clock:
 * @sink: the sink
 * @time: the running_time to be reached
 * @jitter: (out) (allow-none): the jitter to be filled with time diff, or %NULL
 *
........
........
 *
 * This function should only be called with the PREROLL_LOCK held, like when
 * receiving an EOS event in the #GstBaseSinkClass.event() vmethod or when
 * receiving a buffer in
 * the #GstBaseSinkClass.render() vmethod.
........
........
 *
 * Returns: #GstClockReturn
 */

 

We are not helding PREROLL_LOCK(same in dvbvideosink) and it tries to unlock it - line 2101, resulting in Attempt to unlock mutex that was not locked.

 

with flac/mp3 it works because sync is disabled:

root@et4x00:/var/volatile/tmp# gst-launch-1.0 --gst-debug basesink:6,dvbaudiosink:5 playbin uri='file:///home/root/Front_Right.flac'
0:00:02.424767554  1111   0x506920 DEBUG               basesink :gst_base_sink_do_sync:<dvbaudiosink0> reset rc_time to time 0:00:01.530687500
0:00:02.426053739  1111   0x506920 DEBUG               basesink :gst_base_sink_do_sync:<dvbaudiosink0> possibly waiting for clock to reach 0:00:01.530687500, adjusted 0:00:01.530687500
0:00:02.432915924  1111   0x506920 DEBUG               basesink :gst_base_sink_wait_clock:<dvbaudiosink0> sync disabled

meaning it skips unlocking already unlocked lock by jumping to no_sync label - line 2116

 

working version + debug messages:

root@et4x00:/var/volatile/tmp# gst-launch-1.0 --gst-debug basesink:6,dvbaudiosink:5 playbin uri='file:///home/root/Front_Right.wav'
0:00:04.436699627  1131   0x56ed80 DEBUG           dvbaudiosink :gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> got buffer empty from driver!
0:00:04.438271998  1131   0x56ed80 DEBUG           dvbaudiosink :gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> PRE - GST_BASE_SINK_PREROLL_LOCK
0:00:04.438806294  1131   0x56ed80 DEBUG           dvbaudiosink :gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> POST - GST_BASE_SINK_PREROLL_LOCK!!
0:00:04.440364849  1131   0x56ed80 DEBUG           dvbaudiosink :gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> PRE - SEND EOS EVENT TO BASESINK
0:00:04.441792183  1131   0x56ed80 DEBUG               basesink :gst_base_sink_get_sync_times:<audiosink-actual-sink-dvbaudio> sync times for EOS 0:00:01.530687500
0:00:04.443017109  1131   0x56ed80 LOG                 basesink :gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> avg frame diff 0:00:00.042002603
0:00:04.444214405  1131   0x56ed80 DEBUG               basesink :gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> reset rc_time to time 0:00:01.530687500
0:00:04.445229405  1131   0x56ed80 DEBUG               basesink :gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> possibly waiting for clock to reach 0:00:01.530687500, adjusted 0:00:01.530687500
0:00:04.446589590  1131   0x56ed80 LOG                 basesink :gst_base_sink_wait_clock:<audiosink-actual-sink-dvbaudio> time 0:00:01.530687500, base_time 10:22:59.807729349
0:00:04.457691109  1131   0x56ed80 DEBUG               basesink :gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> clock returned 0, jitter -0:00:00.008846501
0:00:04.459115738  1131   0x56ed80 DEBUG               basesink :gst_base_sink_is_too_late:<audiosink-actual-sink-dvbaudio> object was scheduled in time
0:00:04.460449590  1131   0x56ed80 DEBUG               basesink :gst_base_sink_default_event:<audiosink-actual-sink-dvbaudio> Now posting EOS
0:00:04.461767849  1131   0x56ed80 DEBUG               basesink :gst_base_sink_default_event:<audiosink-actual-sink-dvbaudio> Got seqnum #164
Got EOS from element "playbin0".
Execution ended after 0:00:01.466254147
0:00:04.467600516  1131   0x56ed80 DEBUG           dvbaudiosink :gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> POST - SEND EOS EVENT TO BASESINK
Setting pipeline to PAUSED ...
0:00:04.472165368  1131   0x57e180 DEBUG               basesink :gst_base_sink_change_state:<audiosink-actual-sink-dvbaudio> PLAYING to PAUSED
0:00:04.473988998  1131   0x57e180 DEBUG           dvbaudiosink :gst_dvbaudiosink_unlock:<audiosink-actual-sink-dvbaudio> unlock
0:00:04.476396627  1131   0x57e180 DEBUG               basesink :gst_base_sink_change_state:<audiosink-actual-sink-dvbaudio> got preroll lock
0:00:04.478303590  1131   0x57e180 DEBUG           dvbaudiosink :gst_dvbaudiosink_unlock_stop:<audiosink-actual-sink-dvbaudio> unlock_stop
0:00:04.479618701  1131   0x57e180 DEBUG               basesink :gst_base_sink_needs_preroll:<audiosink-actual-sink-dvbaudio> have_preroll: 0, EOS: 1 => needs preroll: 0
0:00:04.481205812  1131   0x57e180 DEBUG               basesink :gst_base_sink_change_state:<audiosink-actual-sink-dvbaudio> PLAYING to PAUSED, we are prerolled
0:00:04.482523701  1131   0x57e180 DEBUG               basesink :gst_base_sink_change_state:<audiosink-actual-sink-dvbaudio> rendered: 36, dropped: 0
0:00:04.484027442  1131   0x57e180 DEBUG           dvbaudiosink :gst_dvbaudiosink_change_state:<audiosink-actual-sink-dvbaudio> GST_STATE_CHANGE_PLAYING_TO_PAUSED
Setting pipeline to READY ...
0:00:04.581402146  1131   0x57e180 DEBUG           dvbaudiosink :gst_dvbaudiosink_unlock:<audiosink-actual-sink-dvbaudio> unlock
0:00:04.582567886  1131   0x57e180 DEBUG           dvbaudiosink :gst_dvbaudiosink_unlock_stop:<audiosink-actual-sink-dvbaudio> unlock_stop
0:00:04.584013923  1131   0x57e180 DEBUG               basesink :gst_base_sink_set_flushing:<audiosink-actual-sink-dvbaudio> flushing out data thread, need preroll to TRUE
0:00:04.585789146  1131   0x57e180 DEBUG               basesink :gst_base_sink_set_last_buffer_unlocked:<audiosink-actual-sink-dvbaudio> setting last buffer to (nil)
0:00:04.587397294  1131   0x57e180 DEBUG               basesink :gst_base_sink_change_state:<audiosink-actual-sink-dvbaudio> PAUSED to READY, don't need_preroll
0:00:04.588579923  1131   0x57e180 DEBUG           dvbaudiosink :gst_dvbaudiosink_change_state:<audiosink-actual-sink-dvbaudio> GST_STATE_CHANGE_PAUSED_TO_READY
0:00:04.608949368  1131   0x57e180 DEBUG           dvbaudiosink :gst_dvbaudiosink_stop:<audiosink-actual-sink-dvbaudio> stop
0:00:04.639208664  1131   0x57e180 DEBUG           dvbaudiosink :gst_dvbaudiosink_change_state:<audiosink-actual-sink-dvbaudio> GST_STATE_CHANGE_READY_TO_NULL
Setting pipeline to NULL ...
Freeing pipeline ...

Can you try to apply this patch and post debug output?

Attached Files


Edited by mx3L, 13 March 2015 - 08:13.


Re: GStreamer 1.0 #665 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 13 March 2015 - 08:33

With patch still same issue and it still crashes when running out of enigma2

root@vuduo2:/media/VIDAUD# gst-launch-1.0 playbin uri=file:///media/VIDAUD/Front_Right.wav
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
WARNING: from element /GstPlayBin:playbin0/GstPlaySink:playsink: No volume control found
Additional debug info:
/home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0-plugins-base/1.4.5-r0/gst-plugins-base-1.4.5/gst/playback/gstplaysink.c(2862): gen_audio_chain (): /GstPlayBin:playbin0/GstPlaySink:playsink:
Volume/mute is not available
WARNING: from element /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstAutoAudioSink:audiosink/GstDVBAudioSink:audiosink-actual-sink-dvbaudio: Internal data flow problem.
Additional debug info:
/home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c(3307): gst_base_sink_chain_unlocked (): /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstAutoAudioSink:audiosink/GstDVBAudioSink:audiosink-actual-sink-dvbaudio:
Received buffer without a new-segment. Assuming timestamps start from 0.
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Attempt to unlock mutex that was not locked
Aborted


Edited by christophecvr, 13 March 2015 - 08:36.


Re: GStreamer 1.0 #666 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 13 March 2015 - 08:43

Please run it like this

 

gst-launch-1.0 --gst-debug basesink:6,dvbaudiosink:5 playbin uri='file:///home/root/Front_Right.wav'



Re: GStreamer 1.0 #667 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 13 March 2015 - 08:44

An here with debug Note the Got buffer from empty driver

0:00:01.932178480  3580 0x75802f20 LOG                 basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2435:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> avg frame diff 0:00:00.042666666
0:00:01.932344628  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2475:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> reset rc_time to time 0:00:01.493333334
0:00:01.932488258  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2487:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> possibly waiting for clock to reach 0:00:01.493333334, adjusted 0:00:01.493333334
0:00:01.932721073  3580 0x75802f20 LOG                 basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2073:gst_base_sink_wait_clock:<audiosink-actual-sink-dvbaudio> time 0:00:01.493333334, base_time 63:52:59.812238488
0:00:01.973258110  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2494:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> clock returned 0, jitter -0:00:00.040204558
0:00:01.973609036  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2813:gst_base_sink_is_too_late:<audiosink-actual-sink-dvbaudio> object was scheduled in time
0:00:01.973762850  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:3416:gst_base_sink_chain_unlocked:<audiosink-actual-sink-dvbaudio> rendering object 0x4a0500
0:00:01.973904887  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:936:gst_base_sink_set_last_buffer_unlocked:<audiosink-actual-sink-dvbaudio> setting last buffer to 0x4a0500
0:00:01.974458924  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:3455:gst_base_sink_chain_unlocked:<audiosink-actual-sink-dvbaudio> object unref after render 0x4a0500
0:00:01.974867850  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:3162:gst_base_sink_event:<audiosink-actual-sink-dvbaudio> received event 0x75844820 eos event: 0x75844820, time 99:99:99.999999999, seq-num 164, (NULL)
0:00:01.975034961  3580 0x75802f20 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:773:gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> EVENT eos
0:00:05.230674256  3580 0x75802f20 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:834:gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> got buffer empty from driver!

0:00:05.230821700  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:1854:gst_base_sink_get_sync_times:<audiosink-actual-sink-dvbaudio> sync times for EOS 0:00:01.530687500
0:00:05.230976219  3580 0x75802f20 LOG                 basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2435:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> avg frame diff 0:00:00.042002603
0:00:05.231078256  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2475:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> reset rc_time to time 0:00:01.530687500
0:00:05.231141219  3580 0x75802f20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2487:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> possibly waiting for clock to reach 0:00:01.530687500, adjusted 0:00:01.530687500
0:00:05.231221145  3580 0x75802f20 LOG                 basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2073:gst_base_sink_wait_clock:<audiosink-actual-sink-dvbaudio> time 0:00:01.530687500, base_time 63:52:59.812238488
Attempt to unlock mutex that was not locked
Aborted



Re: GStreamer 1.0 #668 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 13 March 2015 - 08:46

Hmm but output is missing my debug messages, make sure you applied patch correctly.



Re: GStreamer 1.0 #669 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 13 March 2015 - 09:04

I'm doing it this way:

 

1. create folder gstreamer1.0-plugin-dvbmediasink in recipes-multimedia/gstreamer/

2. put 0001-test_wav_debug_fixed.patch to recipes-multimedia/gstreamer/gstreamer1.0-plugin-dvbmediasink

3  update gstreamer1.0-plugin-dvbmediasink.bbappend in recipes-multimedia/gstreamer/:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

SRC_URI += "file://0001-test_wav_debug_fixed.patch"
PR="r1"

4. ~/git/openpli-oe-core/build $ MACHINE=et4x00 bitbake gstreamer1.0-plugin-dvbmediasink

5. ftp gstreamer1.0-plugin-dvbmediasink*.ipk from ~/git/openpli-oe-core/build/tmp/deploy/ipk/et4x00/ to box

6. opkg install gstreamer1.0-plugin-dvbmediasink*.ipk



Re: GStreamer 1.0 #670 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 13 March 2015 - 09:11

Hmm but output is missing my debug messages, make sure you applied patch correctly.

Yes sorry I accidentally resaved my work.c file after I rerun patch and before I rebuild

 

It work's also out of enigma2(no crash anymore )  :) 

0:00:13.660484511  5297 0x75002b20 LOG                 basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2073:gst_base_sink_wait_clock:<audiosink-actual-sink-dvbaudio> time 0:00:01.493333334, base_time 64:19:37.224614074
0:00:13.700412029  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2494:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> clock returned 0, jitter -0:00:00.039550409
0:00:13.700562548  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2813:gst_base_sink_is_too_late:<audiosink-actual-sink-dvbaudio> object was scheduled in time
0:00:13.700682881  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:3416:gst_base_sink_chain_unlocked:<audiosink-actual-sink-dvbaudio> rendering object 0x49fd08
0:00:13.700798955  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:936:gst_base_sink_set_last_buffer_unlocked:<audiosink-actual-sink-dvbaudio> setting last buffer to 0x49fd08
0:00:13.701518696  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:3455:gst_base_sink_chain_unlocked:<audiosink-actual-sink-dvbaudio> object unref after render 0x49fd08
0:00:13.701990918  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:3162:gst_base_sink_event:<audiosink-actual-sink-dvbaudio> received event 0x75044410 eos event: 0x75044410, time 99:99:99.999999999, seq-num 164, (NULL)
0:00:13.702166585  5297 0x75002b20 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:769:gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> EVENT eos
0:00:13.702324992  5297 0x75002b20 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:807:gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> PRE - GST_BASE_SINK_PREROLL_UNLOCK!!

0:00:13.702550548  5297 0x75002b20 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:813:gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> POST - GST_BASE_SINK_PREROLL_UNLOCK!!

0:00:16.958503657  5297 0x75002b20 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:833:gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> got buffer empty from driver!

0:00:16.958645324  5297 0x75002b20 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:845:gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> PRE - GST_BASE_SINK_PREROLL_LOCK

0:00:16.958743583  5297 0x75002b20 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:851:gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> POST - GST_BASE_SINK_PREROLL_LOCK!!

0:00:16.958817509  5297 0x75002b20 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:854:gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> PRE - SEND EOS EVENT TO BASESINK

0:00:16.958880213  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:1854:gst_base_sink_get_sync_times:<audiosink-actual-sink-dvbaudio> sync times for EOS 0:00:01.530687500
0:00:16.958953620  5297 0x75002b20 LOG                 basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2435:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> avg frame diff 0:00:00.042002603
0:00:16.959020953  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2475:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> reset rc_time to time 0:00:01.530687500
0:00:16.959081731  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2487:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> possibly waiting for clock to reach 0:00:01.530687500, adjusted 0:00:01.530687500
0:00:16.959175583  5297 0x75002b20 LOG                 basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2073:gst_base_sink_wait_clock:<audiosink-actual-sink-dvbaudio> time 0:00:01.530687500, base_time 64:19:37.224614074
0:00:16.959271101  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2494:gst_base_sink_do_sync:<audiosink-actual-sink-dvbaudio> clock returned 1, jitter  0:00:03.221660608
0:00:16.959408731  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:2818:gst_base_sink_is_too_late:<audiosink-actual-sink-dvbaudio> frame dropping disabled
0:00:16.959462398  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:3039:gst_base_sink_default_event:<audiosink-actual-sink-dvbaudio> Now posting EOS
0:00:16.959513064  5297 0x75002b20 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:3042:gst_base_sink_default_event:<audiosink-actual-sink-dvbaudio> Got seqnum #164
0:00:16.959706694  5297 0x75002b20 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:856:gst_dvbaudiosink_event:<audiosink-actual-sink-dvbaudio> POST - SEND EOS EVENT TO BASESINK

Got EOS from element "playbin0".
Execution ended after 0:00:04.741189219
Setting pipeline to PAUSED ...
0:00:16.960776805  5297   0x583140 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:4996:gst_base_sink_change_state:<audiosink-actual-sink-dvbaudio> PLAYING to PAUSED
0:00:16.960895916  5297   0x583140 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:347:gst_dvbaudiosink_unlock:<audiosink-actual-sink-dvbaudio> unlock
0:00:16.960950694  5297   0x583140 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:5005:gst_base_sink_change_state:<audiosink-actual-sink-dvbaudio> got preroll lock
0:00:16.960998879  5297   0x583140 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:355:gst_dvbaudiosink_unlock_stop:<audiosink-actual-sink-dvbaudio> unlock_stop
0:00:16.961042879  5297   0x583140 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:3251:gst_base_sink_needs_preroll:<audiosink-actual-sink-dvbaudio> have_preroll: 0, EOS: 1 => needs preroll: 0
0:00:16.961103916  5297   0x583140 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:5023:gst_base_sink_change_state:<audiosink-actual-sink-dvbaudio> PLAYING to PAUSED, we are prerolled
0:00:16.961149990  5297   0x583140 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:5044:gst_base_sink_change_state:<audiosink-actual-sink-dvbaudio> rendered: 36, dropped: 0
0:00:16.961208583  5297   0x583140 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:1552:gst_dvbaudiosink_change_state:<audiosink-actual-sink-dvbaudio> GST_STATE_CHANGE_PLAYING_TO_PAUSED
Setting pipeline to READY ...
0:00:16.966038657  5297   0x583140 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:347:gst_dvbaudiosink_unlock:<audiosink-actual-sink-dvbaudio> unlock
0:00:16.966164842  5297   0x583140 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:355:gst_dvbaudiosink_unlock_stop:<audiosink-actual-sink-dvbaudio> unlock_stop
0:00:16.966275509  5297   0x583140 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:4026:gst_base_sink_set_flushing:<audiosink-actual-sink-dvbaudio> flushing out data thread, need preroll to TRUE
0:00:16.966710435  5297   0x583140 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:936:gst_base_sink_set_last_buffer_unlocked:<audiosink-actual-sink-dvbaudio> setting last buffer to (nil)
0:00:16.966915842  5297   0x583140 DEBUG               basesink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/mips32el-oe-linux/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c:5083:gst_base_sink_change_state:<audiosink-actual-sink-dvbaudio> PAUSED to READY, don't need_preroll
0:00:16.967038250  5297   0x583140 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:1559:gst_dvbaudiosink_change_state:<audiosink-actual-sink-dvbaudio> GST_STATE_CHANGE_PAUSED_TO_READY
0:00:16.970530657  5297   0x583140 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:1455:gst_dvbaudiosink_stop:<audiosink-actual-sink-dvbaudio> stop
0:00:17.003396916  5297   0x583140 DEBUG           dvbaudiosink /home/christophe/openpli40-gst1/openpli-oe-core/build/tmp/work/vuduo2-oe-linux/gstreamer1.0-plugin-dvbmediasink/1.0+gitAUTOINC+50b7e19bfb-r0/git/gstdvbaudiosink.c:1562:gst_dvbaudiosink_change_state:<audiosink-actual-sink-dvbaudio> GST_STATE_CHANGE_READY_TO_NULL
Setting pipeline to NULL ...
Freeing pipeline ...


Re: GStreamer 1.0 #671 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 13 March 2015 - 09:15

Thank's now I can continu adapting sink to be ok for all media with vuplus series. Once ok I'll wil set a machine based detection routine.



Re: GStreamer 1.0 #672 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 13 March 2015 - 09:37

Well in the meantime maybe Erik can push the patch for wav support so we can all benefit.



Re: GStreamer 1.0 #673 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 13 March 2015 - 09:48

Here it is

Attached Files



Re: GStreamer 1.0 #674 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 14 March 2015 - 13:10

Here a new dvbmediasink patch combined patch.

 

It contains the prerol patch from mx3L and vuplus adds off me..

 

It is ready for trunk dvbmediasink gst-1.0.

 

For the standard pli boxes nothing changes. It's like before.

 

For the vuplus boxes, You need to add --with-vuplus  to You're machine dvbmediasink config.

 

Example for vuduo 2 box cd to map openpli-oe-core/meta-vuplus/conf/machine/include

edit file vuxxo2.inc and set

MACHINE_EXTRA_RRECOMMENDS = " \
	vuplus-shutdown \
	gstreamer1.0-plugin-dvbmediasink \
	ntfs-3g \
"

EXTRA_IMAGEDEPENDS += "\
	enigma2-plugin-systemplugins-firmwareupgrade \
	enigma2-plugin-systemplugins-remotecontrolcode \
	enigma2-plugin-extensions-addstreamurl \
	vuplus-hbbtv-dumpait \
"

TARGET_ARCH = "mipsel"
DEFAULTTUNE = "mips32el"

DVBMEDIASINK_CONFIG = "--with-vuplus --with-pcm --with-dtsdownmix --with-eac3 --with-amr --with-wmv"
GST_VERSION = "1.0"

Then it will work for duo2 and solo2.

For the others edit the file vuxx0.inc

 

Now by vu the wmv media plays. the older wmv3 and the recent wvc1 (for hd). The wmv1 and wmv2 are to old and not supported by the box.

 

Included patch file.

 

Would be nice if a mod push this to dvbmediasink gst-1.0 branch.

Attached Files



Re: GStreamer 1.0 #675 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 14 March 2015 - 13:44

@christophecvr,

Dreambox and VU+ (atm) make use of schwerkraft dvbmediasink.

Also it's better to use capital for defines.

It would be nice to add a more generic version of your patch that will make available the schwerkraft for dreamboxes too!

#ifdef VUPLUS
#define SCHWERKRAFT 1
#endif 

#ifdef DREAMBOX
#define SCHWERKRAFT 1
#endif
Use #ifdef SCHWERKRAFT in code except the STREAMTYPE.

#if defined(VUPLUS)
typedef enum {
    STREAMTYPE_UNKNOWN = -1,
....
#elif defined(DREAMBOX)
typedef enum {
    STREAMTYPE_UNKNOWN = -1,
....
#else
typedef enum {
    STREAMTYPE_UNKNOWN = -1,
....

Wavefield T90: 0.8W - 1.9E - 4.8E - 13E - 16E - 19.2E - 23.5E - 26E - 33E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916

Re: GStreamer 1.0 #676 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 14 March 2015 - 14:19

@christophecvr,

Dreambox and VU+ (atm) make use of schwerkraft dvbmediasink.

Also it's better to use capital for defines.

It would be nice to add a more generic version of your patch that will make available the schwerkraft for dreamboxes too!
 

#ifdef VUPLUS
#define SCHWERKRAFT 1
#endif 

#ifdef DREAMBOX
#define SCHWERKRAFT 1
#endif
Use #ifdef SCHWERKRAFT in code except the STREAMTYPE.

#if defined(VUPLUS)
typedef enum {
    STREAMTYPE_UNKNOWN = -1,
....
#elif defined(DREAMBOX)
typedef enum {
    STREAMTYPE_UNKNOWN = -1,
....
#else
typedef enum {
    STREAMTYPE_UNKNOWN = -1,
....

 

Actually I absolutely do not use schwerkraft ,it is the original pli gst-1.0 adapted for vuplus. I can set also changes for dreambox , no need to have schwerkraft for that. And then for dreambox add the config option --with-dreambox. then  (ok will set in capital.)

 

For the code which is common we then use

#if defined(VUPLUS) || defined(DREAMBOX)

.....
#endif

for the streams

#if defined(VUPLUS)
typedef enum {
    STREAMTYPE_UNKNOWN = -1,
....
#elif defined(DREAMBOX)
typedef enum {
    STREAMTYPE_UNKNOWN = -1,
....
#else
typedef enum {
    STREAMTYPE_UNKNOWN = -1,
....
#endif


Re: GStreamer 1.0 #677 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 14 March 2015 - 14:24

But can You give me the list off streams_types for dreambox ?

 

saves me work to look them up.

 

I can also test for dm8000. then


Edited by christophecvr, 14 March 2015 - 14:25.


Re: GStreamer 1.0 #678 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 14 March 2015 - 14:26

Yes, that will do #if defined(VUPLUS) || defined(DREAMBOX)

And with above changes DMM boxes can use OpenPLi dvbmediasink with GStreamer 1.0
Wavefield T90: 0.8W - 1.9E - 4.8E - 13E - 16E - 19.2E - 23.5E - 26E - 33E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916

Re: GStreamer 1.0 #679 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 14 March 2015 - 14:45

But athoik, it was already working on the dm800se? Whats broken that needs to be fixed ?



Re: GStreamer 1.0 #680 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 14 March 2015 - 14:46

DMM videosink uses exacly the same as VU+

But for audio it uses different ioctl.

typedef enum {
AUDIOTYPE_UNKNOWN = -1,
AUDIOTYPE_AC3 = 0,
AUDIOTYPE_MPEG = 1,
AUDIOTYPE_DTS = 2,
AUDIOTYPE_LPCM = 6,
AUDIOTYPE_AAC = 8,
AUDIOTYPE_AAC_HE = 9,
AUDIOTYPE_MP3 = 0xa,
AUDIOTYPE_AAC_PLUS = 0xb,
AUDIOTYPE_DTS_HD = 0x10,

AUDIOTYPE_WMA = 0x20, DMM->0xd
AUDIOTYPE_WMA_PRO = 0x21, DMM->0xe

AUDIOTYPE_AC3_PLUS = 0x22, DMM->7
AUDIOTYPE_AMR = 0x23,
AUDIOTYPE_RAW = 0x30 DMM->0xf
} t_audio_type; 

Wavefield T90: 0.8W - 1.9E - 4.8E - 13E - 16E - 19.2E - 23.5E - 26E - 33E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916



3 user(s) are reading this topic

0 members, 3 guests, 0 anonymous users