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 #1701 metoo

  • Senior Member
  • 1,573 posts

+33
Good

Posted 18 September 2015 - 23:55

But I think I'll revert back to 1.5.2 with all of the fixes provided throughout the forum (hls and mkv fixes etc...)

And if there is an issue that didn't exist back to 1.5.2 then stable 1.6 will contain that issue.

I suggest to open a ticket on GStreamer bug tracker with the information you have already and if they can reproduce it, they might fix it too!

ET10000 C C C C/T  2TB HDD ET7000 + ET6000 dvb-S  OpenPli Triax 88 multifeed quad LNBs VU Uno4K SE C+2TB HDD Mutant HD60


Re: GStreamer 1.0 #1702 betacentauri

  • PLi® Core member
  • 7,185 posts

+323
Excellent

Posted 19 September 2015 - 14:26

I have similar problem with paused -> buffer -> play -> paused -> buffer -> play.

 

Currently I use oe-a image with gstreamer 1.5.90 and christophecvr multibox mediasink.

I found this out. When I use

gst-launch-1.0 playbin uri=rtmp://... flags=0x47

I have the issue and log shows:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
WARNING: from element /GstPlayBin:playbin0/GstPlaySink:playsink: No volume control found
Volume/mute is not available
Prerolled, waiting for buffering to finish...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...

Same happens when I use E2.

 

But when I use this

gst-launch-1.0 rtmpsrc location=rtmp://... ! flvdemux name=d d. ! queue ! h264parse ! dvbvideosink d. ! queue ! aacparse ! dvbaudiosink

playback works properly. So no general issue with the dvbmediasink!

 

Now I try to analyse the logs to find the difference.

 

Edit: As I understood christophecvr git (master branch) has already included the async patch. Right?


Edited by betacentauri, 19 September 2015 - 14:27.

Xtrend ET-9200, ET-8000, ET-10000, OpenPliPC on Ubuntu 12.04

Re: GStreamer 1.0 #1703 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 19 September 2015 - 17:28

@betacentauri , yes I do have already the async patch in which prohibit the change to sync operation from other elements in.



Re: GStreamer 1.0 #1704 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 19 September 2015 - 17:32

Sorry I forgot to mention, but when using e2 ok there are messages about buffering and so , but it does not go in pause and unpause and works fine.

 

When using

gst-launch-1.0 playbin uri=rtmp://... flags=0x47

It does indeed the pause unpause.



Re: GStreamer 1.0 #1705 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 19 September 2015 - 17:56

Here e2 log rtmp stream works fine , ok well a lot oof buffering msg's but it nevers gause to pause it keeps on playing whitout any hickup.

 

 

Attached Files



Re: GStreamer 1.0 #1706 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 19 September 2015 - 18:43

So is it possible to tell gstreamer to buffer a bit more then?
I just upgraded to 1.5.91 (last nights git) and playing various hls streams still freeze in e2. With or without mx3L's patch no. 2 on your multibox sink.
I guess some receivers just don't like the quickly switching between pause and playing.

Re: GStreamer 1.0 #1707 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 19 September 2015 - 19:08

So is it possible to tell gstreamer to buffer a bit more then?
I just upgraded to 1.5.91 (last nights git) and playing various hls streams still freeze in e2. With or without mx3L's patch no. 2 on your multibox sink.
I guess some receivers just don't like the quickly switching between pause and playing.

But that's the problem, when I play streams trough e2 they just unpause, that's it. they never go to pause and unpause. There is no quick switching between pause and unpause when playing via e2.

 

Only if You use gst-launch-1.0 but I already told that gst-lauch-1.0 does not really represent what's happening when you play the stream like it should be played only and only via enigma2 .



Re: GStreamer 1.0 #1708 betacentauri

  • PLi® Core member
  • 7,185 posts

+323
Excellent

Posted 19 September 2015 - 19:11

Problem is that my stream don't work with e2 or gst-launch playbin. Only with Gst-launch without playbin it works. Playback of recorded streams works properly.
I looked into the logs but until now I didn't find something. Tomorrow I try to look at the pipeline graphs.

Sorry, I cannot publish stream url.
Somebody interested in the logs? Which one exactly? Basesink or *:5?

Edited by betacentauri, 19 September 2015 - 19:12.

Xtrend ET-9200, ET-8000, ET-10000, OpenPliPC on Ubuntu 12.04

Re: GStreamer 1.0 #1709 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 20 September 2015 - 14:50

Alright,

 

I created a clean build today.

no patches at all.

- gstreamer 1.5.91 (today's git)

- christophecvr's multibox dvbmediasink

 

Trying to play France24 from a enigma2 playlist: http://f24hls-i.akam...master_900.m3u8

#SERVICE 4097:0:0:0:0:0:0:0:0:0:http%3a//f24hls-i.akamaihd.net/hls/live/221192/F24_FR_LO_HLS/master_900.m3u8:France24

#DESCRIPTION France24

It works fine in VLC btw.

 

 

 

But in E2 It will buffer and only display one still frame, without any audio.

 

This is what Enigma2 has to say:

<   363.881741> [eEPGCache] setCacheFile read/write epg data from/to '/hdd/epg.dat'

<   363.882695> [eEPGCache] time updated.. start EPG Mainloop

<   363.895514> [eEPGCache] /hdd/epg.dat not found, try /epg.dat

[SKIN] Parsing embedded skin <embedded-in-'Screensaver'>

[SKIN] No skin to read...

RemovePopup, id = ZapError

setValue 50

<   365.957498> [eDVBVolumecontrol] Setvolume: raw: 100 100, -1db: 0 0

<   365.960628> [eDVBVolumecontrol] Setvolume: raw: 50 50, -1db: 32 32

EMC: Setting EPG language: nl_NL

playing 4097:0:0:0:0:0:0:0:0:0:http%3a//f24hls-i.akamaihd.net/hls/live/221192/F24_FR_LO_HLS/master_900.m3u8:France24

<   366.143881> [eServiceMP3] construct!

getResolvedKey config.mediaplayer.extraHeaders failed !! (Typo??)

<   366.153178> [eServiceMP3] playbin uri=http://f24hls-i.akamaihd.net/hls/live/221192/F24_FR_LO_HLS/master_900.m3u8

<   366.217168> [eServiceMP3] starting pipeline

<   368.139538> [gRC] main thread is non-idle! display spinner!

resolved to PLAY

<   368.437221> [eServiceMP3] gst_element_query_position failed in getPlayPosition

resolved to PLAY

<   368.452299> [eServiceMP3] gst_element_query_position failed in getPlayPosition

resolved to PLAY

<   368.461832> [eServiceMP3] gst_element_query_position failed in getPlayPosition

new service started! trying to download cuts!

RemovePopup, id = ZapError

<   368.514623> [eHdmiCEC] received message 46

<   368.522818> [eHdmiCEC] send message 47 73 68 31

<   368.534665> [eServiceMP3] state transition NULL -> READY

<   368.540894> [eServiceMP3] GST_STREAM_STATUS_TYPE_CREATE -> setting timeout on souphttpsrc to 30s

[ePopen] command: route -n | grep  eth0

<   368.921375> [eConsoleAppContainer] Starting /bin/sh

<   368.924813> [eMainloop::processOneEvent] unhandled POLLERR/HUP/NVAL for fd 31(16)

<   368.925764> [eMainloop::processOneEvent] unhandled POLLERR/HUP/NVAL for fd 35(16)

[VLC] Checking for buildin servicets ...  no

[VLC] Checking for existing and usable servicets.so ...  No module named servicets

[VLC] Checking for usable gstreamer service ...  yes

[EMCMS] python-mutagen is not available: No module named mutagen.mp3

EMC: Next trashcan cleanup in 560 minutes

0.0.0.0

192.168

nameservers: [[192, 168, 1, 1]]

read configured interface: {'bnep0': {'dhcp': True}, 'usb0': {'dhcp': False}, 'lo': {'dhcp': False}, 'wlan0': {'dhcp': True}, 'atml0': {'dhcp': True}, 'eth1': {'dhcp': True}, 'eth0': {'dhcp': True}}

self.ifaces after loading: {'eth0': {'preup': False, 'predown': False, 'ip': [192, 168, 1, 80], 'up': True, 'mac': '00:15:c0:35:3e:78', 'dhcp': True, 'bcast': [192, 168, 1, 255], 'netmask': [255, 255, 255, 0], 'gateway': [192, 168, 1, 1]}}

AT plugin not found

SerienRecorder plugin not found

ER plugin not found

[OpenWebif] no plugins to load

[OpenWebif] started on 80

<   370.874783> [eMainloop::processOneEvent] unhandled POLLERR/HUP/NVAL for fd 34(16)

<   371.021635> [eServiceMP3] Buffering 9 percent done

<   371.034429> [eServiceMP3] Buffering 10 percent done

<   371.044542> [eServiceMP3] Buffering 13 percent done

<   371.050964> [eServiceMP3] Buffering 16 percent done

<   371.066188> [eServiceMP3] Buffering 18 percent done

<   371.075837> [eServiceMP3] Buffering 20 percent done

<   371.084975> [eServiceMP3] Buffering 23 percent done

<   371.093174> [eServiceMP3] Buffering 25 percent done

<   371.096856> [eServiceMP3] Buffering 28 percent done

<   371.109842> [eServiceMP3] Buffering 30 percent done

<   371.118260> [eServiceMP3] Buffering 32 percent done

<   371.130890> [eServiceMP3] Buffering 35 percent done

<   371.141410> [eServiceMP3] Buffering 36 percent done

<   371.156158> [eServiceMP3] Buffering 38 percent done

<   371.162212> [eServiceMP3] Buffering 40 percent done

<   371.172584> [eServiceMP3] Buffering 41 percent done

<   371.179960> [eServiceMP3] Buffering 44 percent done

<   371.185999> [eServiceMP3] Buffering 46 percent done

<   371.203898> [eServiceMP3] Buffering 48 percent done

<   371.221512> [eServiceMP3] Buffering 51 percent done

<   371.229775> [eServiceMP3] Buffering 53 percent done

<   371.249224> [eServiceMP3] Buffering 56 percent done

<   371.254890> [eServiceMP3] Buffering 58 percent done

<   371.274900> [eServiceMP3] Buffering 60 percent done

<   371.293430> [eServiceMP3] Buffering 63 percent done

<   371.309476> [eServiceMP3] Buffering 65 percent done

<   371.321324> [eServiceMP3] Buffering 68 percent done

<   371.336350> [eServiceMP3] Buffering 70 percent done

<   371.390432> [eServiceMP3] Buffering 72 percent done

<   371.418255> [eServiceMP3] Buffering 75 percent done

<   371.469303> [eServiceMP3] Buffering 77 percent done

<   371.509500> [eServiceMP3] Buffering 80 percent done

<   371.626177> [eServiceMP3] Buffering 81 percent done

<   371.642556> [eServiceMP3] Buffering 84 percent done

<   371.699885> [eServiceMP3] Buffering 86 percent done

<   371.739713> [eServiceMP3] Buffering 88 percent done

<   371.779342> [eServiceMP3] Buffering 91 percent done

<   371.856396> [eServiceMP3] Buffering 93 percent done

<   371.872480> [eServiceMP3] Buffering 96 percent done

<   371.973166> [eServiceMP3] Buffering 98 percent done

<   371.976936> [eServiceMP3] Buffering 100 percent done

EMC: [EMCMS] trashcan cleanup: no trashcan...

<   373.209590> [eServiceMP3] state transition READY -> PAUSED

<   373.232302> [eServiceMP3] loading cuesheet

<   373.233510> [eServiceMP3] cutfile not found!

<   373.264872> [eServiceMP3] async-done - 1 video, 1 audio, 0 subtitle

<   373.266526> [eServiceMP3] AUDIO STRUCT=audio/mpeg

<   373.268578> [eServiceMP3] audio stream=0 codec=MPEG-4 AAC language=fr

<   373.854778> [eServiceMP3] state transition PAUSED -> PLAYING

<   376.555859> [eServiceMP3] Buffering 8 percent done

<   376.587813> [eServiceMP3] Buffering 9 percent done

<   376.593841> [eServiceMP3] Buffering 12 percent done

<   376.607735> [eServiceMP3] Buffering 68 percent done

<   376.610389> [eServiceMP3] Buffering 75 percent done

<   376.614608> [eServiceMP3] Buffering 81 percent done

<   384.328316> [eServiceMP3] Buffering 84 percent done

<   384.354856> [eServiceMP3] Buffering 86 percent done

<   384.379198> [eServiceMP3] Buffering 88 percent done

<   384.418323> [eServiceMP3] Buffering 91 percent done

<   384.443375> [eServiceMP3] Buffering 93 percent done

<   384.461391> [eServiceMP3] Buffering 96 percent done

<   384.494349> [eServiceMP3] Buffering 98 percent done

<   384.532425> [eServiceMP3] Buffering 100 percent done

Attached are 3 logs made while trying to play this stream in E2.

hls4.log GST_DEBUG=dvbvideosink:4,dvbaudiosink:4,basesink:4

hls5.log GST_DEBUG=dvbvideosink:4,dvbaudiosink:4,basesink:5

hls6.log GST_DEBUG=dvbvideosink:4,dvbaudiosink:4,basesink:6

 

I hope someone has a cure for this:P

Attached Files



Re: GStreamer 1.0 #1710 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 20 September 2015 - 16:25

@MastaG

the thing that looks to me interesting is that we are setting video caps two times.

 

First time before any video rendering has taken place, just after STREAM_START event:

0:00:46.635914639   830 0x7450e0c0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT caps
0:00:46.636161157   830 0x7450e0c0 DEBUG               basesink gstbasesink.c:3127:gst_base_sink_default_event:<dvbvideosink0> caps 0x74512418
0:00:46.636560824   830 0x7450e0c0 INFO            dvbvideosink gstdvbvideosink.c:1290:gst_dvbvideosink_set_caps:<dvbvideosink0> caps = video/x-h264, width=(int)16, height=(int)16, parsed=(boolean)true, stream-format=(string)byte-stream, alignment=(string)nal
0:00:46.637106491   830 0x7450e0c0 INFO            dvbvideosink gstdvbvideosink.c:1460:gst_dvbvideosink_set_caps:<dvbvideosink0> MIMETYPE video/x-h264 -> STREAMTYPE_MPEG4_H264

We have quite strange dimensions width=(int)16, height=(int)16 too.

 

Second time after we have already rendered some video:

0:00:47.087615120   830 0x7450e0c0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT caps
0:00:47.087968379   830 0x7450e0c0 DEBUG               basesink gstbasesink.c:3127:gst_base_sink_default_event:<dvbvideosink0> caps 0x7452bf38
0:00:47.088487416   830 0x7450e0c0 INFO            dvbvideosink gstdvbvideosink.c:1290:gst_dvbvideosink_set_caps:<dvbvideosink0> caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal, pixel-aspect-ratio=(fraction)1/1, width=(int)1024, height=(int)576, framerate=(fraction)25/1, parsed=(boolean)true, profile=(string)main, level=(string)3.1
...
0:00:47.089240268   830 0x7450e0c0 INFO            dvbvideosink gstdvbvideosink.c:1460:gst_dvbvideosink_set_caps:<dvbvideosink0> MIMETYPE video/x-h264 -> STREAMTYPE_MPEG4_H264

So maybe when video caps are set second time while playing, then video freezes on some receivers?

Is it possible to obtain log on same receiver with same stream on gstreamer version where it's not freezing?



Re: GStreamer 1.0 #1711 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 20 September 2015 - 16:28

Yes certainly.

I'll revert back to 1.5.2 and create a new log for you :-)



Re: GStreamer 1.0 #1712 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 20 September 2015 - 17:16

@betacentauri

 

I have the issue and log shows:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
WARNING: from element /GstPlayBin:playbin0/GstPlaySink:playsink: No volume control found
Volume/mute is not available
Prerolled, waiting for buffering to finish...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...
Buffering, setting pipeline to PAUSED ...
Done buffering, setting pipeline to PLAYING ...

Same happens when I use E2.

This is strange, if you don't use prefill flag, we are ignoring buffering messages so there should be no jumping between PAUSED and PLAYING state even if buffer is drained. So you have video in slowmotion or no video movement at all?

 

 

Edit: As I understood christophecvr git (master branch) has already included the async patch. Right?

There are two patches:

https://github.com/O...ediasink/pull/2 - makes sure that we are always operating with synchronization against clock turned off (in christophecvr sink), It will only help when you're dealing with raw audio streams

https://github.com/m...990da56931b70a6 - turns off ASYNC state changes when going to PAUSED (not in christophercvr sink). It will help when one of the sinks doesn't preroll. It happens when you're quickly changing states from PAUSED to PLAYING and opposite. So maybe your case?



Re: GStreamer 1.0 #1713 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 20 September 2015 - 17:58

@MastaG

I tried it on 1.5.2 and I have only one caps event:

dvbvideosink gstdvbvideosink.c:1310:gst_dvbvideosink_set_caps:<dvbvideosink0> caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal, width=(int)1024, height=(int)576, framerate=(fraction)25/1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, profile=(string)main, level=(string)3.1

We should check h264parse element, which creates what looks like incomplete caps in 1.5.9 (missing profile, level,...):

dvbvideosink gstdvbvideosink.c:1290:gst_dvbvideosink_set_caps:<dvbvideosink0> caps = video/x-h264, width=(int)16, height=(int)16, parsed=(boolean)true, stream-format=(string)byte-stream, alignment=(string)nal

There were some recent changes in h264parse too:

http://cgit.freedesk...rep&q=h264parse



Re: GStreamer 1.0 #1714 betacentauri

  • PLi® Core member
  • 7,185 posts

+323
Excellent

Posted 20 September 2015 - 18:41

I see video for 1-2 seconds. Then it freezes and I see buffering in the logs. Then video playback starts again but it look like fast forward and it only plays only 1-2 seconds. Then again freeze. And so on.
I take a look at the patches tomorrow.

Edited by betacentauri, 20 September 2015 - 18:41.

Xtrend ET-9200, ET-8000, ET-10000, OpenPliPC on Ubuntu 12.04

Re: GStreamer 1.0 #1715 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 20 September 2015 - 21:21

I've already tried them all.

 

Chris's multiboxsink already has the fix for raw audio as shown here: https://github.com/c.../commits/master

 

Patches I've tried which haven't been commited:

servicemp3 improve pause/unpause:

From 04f108741e97b0b0d23f469061deadfc5cb656b8 Mon Sep 17 00:00:00 2001
From: mx3L <mx3ldev@gmail.com>
Date: Tue, 25 Aug 2015 10:48:02 +0200
Subject: [PATCH] servicemp3: use seeking unpause only when necessary

souphttpsrc and filesrc sources will not timeout.
So for them we can just unpause pipeline
---
 lib/service/servicemp3.cpp | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index 162b9b4..a5c677f 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -913,6 +913,40 @@ RESULT eServiceMP3::trickSeek(gdouble ratio)
         return 0;
     }
 
+#if GST_VERSION_MAJOR >= 1
+    bool unpause = (m_currentTrickRatio == 1.0 && ratio == 1.0);
+    if (unpause)
+    {
+        GstElement *source = NULL;
+        g_object_get (G_OBJECT (m_gst_playbin), "source", &source, NULL);
+        GstElementFactory *factory = gst_element_get_factory(source);
+        g_object_unref(source);
+        const gchar *name = gst_plugin_feature_get_name(GST_PLUGIN_FEATURE(factory));
+        // eDebug("[eServiceMP3] trickSeek - source = %s", name);
+        /*
+         * We know that filesrc and souphttpsrc will not timeout after long pause
+         * If there are other sources which will not timeout, add them here
+        */
+        if (name && (!strcmp(name, "filesrc") || !strcmp(name, "souphttpsrc")))
+        {
+            GstStateChangeReturn ret;
+            GstState state, pending;
+            /* make sure that last state change was successfull */
+            ret = gst_element_get_state(m_gst_playbin, &state, &pending, 0);
+            if (ret == GST_STATE_CHANGE_SUCCESS)
+            {
+                gst_element_set_state(m_gst_playbin, GST_STATE_PLAYING);
+                ret = gst_element_get_state(m_gst_playbin, &state, &pending, 0);
+                if (ret == GST_STATE_CHANGE_SUCCESS)
+                    return 0;
+            }
+            eDebug("[eServiceMP3] trickSeek - cannot unpause, state:%s pending:%s ret:%s",
+                gst_element_state_get_name(state),
+                gst_element_state_get_name(pending),
+                gst_element_state_change_return_get_name(ret));
+        }
+    }
+#endif
     m_currentTrickRatio = ratio;
 
     bool validposition = false;

 

increase buffer size by Athoik:

--- enigma2/lib/service/servicemp3.cpp.orig    2015-09-20 15:59:45.812462069 +0200
+++ enigma2/lib/service/servicemp3.cpp    2015-09-20 16:01:34.615583623 +0200
@@ -2183,6 +2183,11 @@
     g_object_get(object, "source", &source, NULL);
     if (source)
     {
+        if (g_object_class_find_property(G_OBJECT_GET_CLASS(source), "blocksize") != 0)
+        {
+            /* default blocksize is only 4096 we need to feed hardware decoder with more data */
+            g_object_set(G_OBJECT(source), "blocksize", 16*1024, NULL);
+        }
         if (g_object_class_find_property(G_OBJECT_GET_CLASS(source), "ssl-strict") != 0)
         {
             g_object_set(G_OBJECT(source), "ssl-strict", FALSE, NULL);

 

Patch number 2 and 3 from http://forums.openpl...e-improvements/

rewritten for chris' multibox dvbmediasink:

--- gstreamer1.0-plugin-multibox-dvbmediasink/gstdvbaudiosink.c.orig    2015-09-17 23:50:51.668684394 +0200
+++ gstreamer1.0-plugin-multibox-dvbmediasink/gstdvbaudiosink.c    2015-09-18 00:01:57.629016391 +0200
@@ -285,7 +285,6 @@
     self->timestamp = GST_CLOCK_TIME_NONE;
 
     gst_base_sink_set_sync(GST_BASE_SINK(self), FALSE);
-    gst_base_sink_set_async_enabled(GST_BASE_SINK(self), TRUE);
 }
 
 static void gst_dvbaudiosink_dispose(GObject *obj)
@@ -747,7 +746,6 @@
         self->flushing = TRUE;
         /* wakeup the poll */
         write(self->unlockfd[1], "\x01", 1);
-        if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
         break;
     case GST_EVENT_FLUSH_STOP:
         if (self->fd >= 0) ioctl(self->fd, AUDIO_CLEAR_BUFFER);
@@ -765,7 +763,6 @@
             self->cache = NULL;
         }
         GST_OBJECT_UNLOCK(self);
-        if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
         /* flush while media is playing requires a delay before rendering */
         if(self->using_dts_downmix)
         {
@@ -814,7 +811,6 @@
             }
         }
         GST_BASE_SINK_PREROLL_LOCK(sink);
-        if (ret) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
         break;
     }
     case GST_EVENT_SEGMENT:
@@ -912,9 +908,11 @@
         break;
     }
     default:
-        ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
         break;
     }
+    if (ret) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+    else gst_event_unref(event);
+
     return ret;
 }
 
@@ -1469,6 +1467,8 @@
         break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
         GST_INFO_OBJECT(self,"GST_STATE_CHANGE_READY_TO_PAUSED");
+        /* playsink overrides this setting in READY state */
+        gst_base_sink_set_async_enabled(GST_BASE_SINK(self), FALSE);
         self->paused = TRUE;
         if (self->fd >= 0)
         {
--- gstreamer1.0-plugin-multibox-dvbmediasink/gstdvbvideosink.c.orig    2015-09-17 23:53:31.984756213 +0200
+++ gstreamer1.0-plugin-multibox-dvbmediasink/gstdvbvideosink.c    2015-09-18 00:07:05.109176160 +0200
@@ -335,7 +335,6 @@
     self->rate = 1.0;
 
     gst_base_sink_set_sync(GST_BASE_SINK(self), FALSE);
-    gst_base_sink_set_async_enabled(GST_BASE_SINK(self), TRUE);
 }
 
 static void gst_dvbvideosink_dispose(GObject *obj)
@@ -437,7 +436,6 @@
         self->flushing = TRUE;
         /* wakeup the poll */
         write(self->unlockfd[1], "\x01", 1);
-        if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
         break;
     case GST_EVENT_FLUSH_STOP:
         if (self->fd >= 0) ioctl(self->fd, VIDEO_CLEAR_BUFFER);
@@ -449,7 +447,6 @@
         }
         self->flushing = FALSE;
         GST_OBJECT_UNLOCK(self);
-        if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
         /* flush while media is playing requires a delay before rendering */
         if (self->using_dts_downmix)
         {
@@ -499,7 +496,6 @@
             }
         }
         GST_BASE_SINK_PREROLL_LOCK(sink);
-        if (ret) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
         break;
     }
     case GST_EVENT_SEGMENT:
@@ -581,9 +577,10 @@
         break;
     }
     default:
-        ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
         break;
     }
+    if (ret) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+    else gst_event_unref(event);
 
     return ret;
 }
@@ -1833,6 +1830,8 @@
         break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
         GST_INFO_OBJECT (self,"GST_STATE_CHANGE_READY_TO_PAUSED");
+        /* playsink overrides this setting in READY state */
+        gst_base_sink_set_async_enabled(GST_BASE_SINK(self), FALSE);
         self->paused = TRUE;
         if (self->fd >= 0)
         {

 

None of them are fixing it.



Re: GStreamer 1.0 #1716 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 21 September 2015 - 10:31

@MastaG please try patch in attachment on gst-1.5.90 bad plugins.

 

Problem looks to be, that h264parse will update caps on srcpad even if SPS/PPS have not been parsed yet.

-    /* we did parse codec-data and might supplement src caps */
-    gst_h264_parse_update_src_caps (h264parse, caps);
+    /* do not set CAPS and passthrough mode if SPS/PPS have not been parsed */
+    if (h264parse->have_sps && h264parse->have_pps) {
+      gst_base_parse_set_passthrough (parse, TRUE);
+
+      /* we did parse codec-data and might supplement src caps */
+      gst_h264_parse_update_src_caps (h264parse, caps);
+    }

Attached Files


Edited by mx3L, 21 September 2015 - 10:31.


Re: GStreamer 1.0 #1717 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 21 September 2015 - 11:55

Ignore previous post, it's not it.

 

I guess you could try to remove VIDEO_CAPS from h264 caps, then there will be no h264parse element used:

diff --git a/gstdvbvideosink.c b/gstdvbvideosink.c
index d3f6cf8..0cb58cb 100644
--- a/gstdvbvideosink.c
+++ b/gstdvbvideosink.c
@@ -185,8 +185,7 @@ GST_STATIC_PAD_TEMPLATE (
                "mpegversion = (int) { 1, 2 }, "
                VIDEO_CAPS "; "
 #ifdef HAVE_H264
-       "video/x-h264, "
-               VIDEO_CAPS "; "
+       "video/x-h264; "
 #endif
 #ifdef HAVE_H263
        "video/x-h263, "



Re: GStreamer 1.0 #1718 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 21 September 2015 - 11:58

Thank you mx3L for your time to investigate.

I'll try it tonight and report back :-)

Building now :-)



Re: GStreamer 1.0 #1719 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 21 September 2015 - 17:26

@MastaG

No problem :), it should help if the issue is with h264parse.

 

I see video for 1-2 seconds. Then it freezes and I see buffering in the logs. Then video playback starts again but it look like fast forward and it only plays only 1-2 seconds. Then again freeze. And so on.
I take a look at the patches tomorrow.

Could you post basesink:5 log (enigma2) ?


Edited by mx3L, 21 September 2015 - 17:28.


Re: GStreamer 1.0 #1720 betacentauri

  • PLi® Core member
  • 7,185 posts

+323
Excellent

Posted 21 September 2015 - 18:08

Here is the log.

Again only christophecvr multibox mediasink is used without other patches.

 

It's no raw audio. It's audio/mpeg version 4(AAC-RAW).

 

Now I take a look at the patches.

Attached Files


Xtrend ET-9200, ET-8000, ET-10000, OpenPliPC on Ubuntu 12.04



4 user(s) are reading this topic

0 members, 3 guests, 0 anonymous users


    Bing (1)