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 #821 babsy98

  • Senior Member
  • 166 posts

+18
Neutral

Posted 18 March 2015 - 17:29

the only ready image is open atv 4.3 for duo2 with drivers 18.03 and last xbmc fixes



Re: GStreamer 1.0 #822 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 18 March 2015 - 18:56

Hello,

Here is the reworked patch from mx3L (original attached here http://forums.openpl...39#entry481794)

 
From: mx3L <mx3ldev@gmail.com>
Date: Wed, 18 Mar 2015 19:44:25 +0200
Subject: [PATCH] dvbmediasink: hold PREROLL_LOCK on passing EOS to basesink

Some media (waw audio) were causing deadlock after EOS event
ending with "Attempt to unlock mutex that was not locked"

Further investigation of basesink revelead that it expects
of us to hold PREROLL_LOCK on passing EOS event.

For more information visit:

http://forums.openpli.org/topic/29501-gstreamer-10/page-34#entry480811

diff --git a/gstdvbaudiosink.c b/gstdvbaudiosink.c
index 2725def..da46f51 100644
--- a/gstdvbaudiosink.c
+++ b/gstdvbaudiosink.c
@@ -828,7 +828,6 @@ 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);
 				break;
 			}
 
@@ -844,7 +843,7 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
 #else
 		GST_BASE_SINK_PREROLL_LOCK(sink);
 #endif
-
+		if (ret) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
 		break;
 	}
 #if GST_VERSION_MAJOR < 1
diff --git a/gstdvbvideosink.c b/gstdvbvideosink.c
index a6b0a10..fbebd11 100644
--- a/gstdvbvideosink.c
+++ b/gstdvbvideosink.c
@@ -449,7 +449,6 @@ static gboolean gst_dvbvideosink_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);
 				break;
 			}
 
@@ -465,7 +464,7 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
 #else
 		GST_BASE_SINK_PREROLL_LOCK(sink);
 #endif
-
+		if (ret) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
 		break;
 	}
 #if GST_VERSION_MAJOR < 1
-- 
PS. Reworked Patch contains original author, it doesn't add any aditional features, just uses a boolean variable less.

@OpenPLi, please apply on gst-1.0 branch of dvbmediasink

Attached Files


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 #823 Erik Slagter

  • PLi® Core member
  • 46,969 posts

+542
Excellent

Posted 18 March 2015 - 19:26

Applied.


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: GStreamer 1.0 #824 gjstroom

  • Senior Member
  • 524 posts

+16
Neutral

Posted 20 March 2015 - 13:19

Athoik's above patch kills christophecvr 0001-0002-eos-vuplus-dreambox-4.patch.

I switched to christophecvr gstreamer1.0-plugin-multibox-dvbmediasink git for now.


Amiko8240, DM500HD, DM800, DM800SE, DM800SESR4, DM800SEV2, VU+ SoloSEV2, VU+ UnoSE


Re: GStreamer 1.0 #825 Erik Slagter

  • PLi® Core member
  • 46,969 posts

+542
Excellent

Posted 20 March 2015 - 14:58

cvr's patch for vu+ is not relevant anymore (see commits in our repo just now).


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: GStreamer 1.0 #826 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 20 March 2015 - 15:45

Athoik's above patch kills christophecvr 0001-0002-eos-vuplus-dreambox-4.patch.

I switched to christophecvr gstreamer1.0-plugin-multibox-dvbmediasink git for now.

Depends on which box You compile.

 

The changes I made are required. But the patch obviousely will not work anymore.

 

For vuplus and dreambox indeed now gstreamer1.0-plugin-multibox-dvbmediasink is required.

 

p.s. for vuplus do not enable dtsdownmix.  that is only for dreambox and ...not for vuplus series. (but yet it's not working with gst-1 by the dream, cause the adaptations to gst-1.0 for dts downmix are not complete yet )

 

The mediasink for vuplus needs to be set to

DVBMEDIASINK_CONFIG = "--with-vuplus --with-pcm --with-eac3 --with-amr --with-wmv"


Re: GStreamer 1.0 #827 babsy98

  • Senior Member
  • 166 posts

+18
Neutral

Posted 20 March 2015 - 16:10

--with-vuplus  only you use  old drivers before 17.3 all new drivers from vu works without any vu patches


Edited by babsy98, 20 March 2015 - 16:12.


Re: GStreamer 1.0 #828 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 20 March 2015 - 17:11

--with-vuplus  only you use  old drivers before 17.3 all new drivers from vu works without any vu patches

 

Yes correct with new drivers You may omit the paramater --with-vuplus. (it works also with the parameter enabled but now also whitout).

 

ter info new drivers

require vuplus-dvb-modules.inc

KV = "3.13.5"

DOWNLOADMACHINE = "${MACHINE}"

SRCDATE = "20150317"
SRC_URI[md5sum] = "c817f8d5b67a77318049f2d5bc3e7433"
SRC_URI[sha256sum] = "d3b2438de2e25aec08051851f2a81314a6e11f417a66dcfde49a11f3f2c449da"

Edited by christophecvr, 20 March 2015 - 17:15.


Re: GStreamer 1.0 #829 Erik Slagter

  • PLi® Core member
  • 46,969 posts

+542
Excellent

Posted 20 March 2015 - 17:15

You can now start working on a new patch (if that is even required, I don't think so actually).


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: GStreamer 1.0 #830 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 20 March 2015 - 17:16

Any idea why dts downmixing isn't working for the dreambox receiver?

Wasn't this tested before?



Re: GStreamer 1.0 #831 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 20 March 2015 - 17:19

Any idea why dts downmixing isn't working for the dreambox receiver?

Wasn't this tested before?

Yes I do but it requires still a big change . The porting from 0.1 to 1.0 into module gstdtsdownmix.c  Is not complete.



Re: GStreamer 1.0 #832 Erik Slagter

  • PLi® Core member
  • 46,969 posts

+542
Excellent

Posted 20 March 2015 - 17:25

You know that dmm receivers not completely working will not be a showstopper for transition to gst-1. So I guess someone who owns one has a job to do ;)


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: GStreamer 1.0 #833 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 20 March 2015 - 17:44

Here is a librtmp patch for OE. I've send this to librtmp list, but it seems that librtmp is almost abandoned :(

Some (almost) dead rtmp streams can block enigma2 for ever although timeout parameter exists on url parameters.

It solves the following issues:

1. The SO_RCVTIMEO (receive timeout) is applied after connect, so connect can block enigma2.
2. There is no SO_SNDTIMEO (send timeout), so send operation can block enigma2.
 
Subject: [PATCH] librtmp: set timeout for send operations too

timeout parameter now works for send and receive operations

diff --git a/librtmp/rtmp.c b/librtmp/rtmp.c
index 60f251c..587a086 100644
--- a/librtmp/rtmp.c
+++ b/librtmp/rtmp.c
@@ -910,6 +910,24 @@ RTMP_Connect0(RTMP *r, struct sockaddr * service)
   r->m_sb.sb_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
   if (r->m_sb.sb_socket != -1)
     {
+      /* set timeout */
+      {
+        SET_RCVTIMEO(tv, r->Link.timeout);
+        if (setsockopt
+            (r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv)))
+          {
+            RTMP_Log(RTMP_LOGERROR, "%s, Setting socket receive timeout to %ds failed!",
+	        __FUNCTION__, r->Link.timeout);
+          }
+        if (setsockopt
+            (r->m_sb.sb_socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv, sizeof(tv)))
+          {
+            RTMP_Log(RTMP_LOGERROR, "%s, Setting socket send timeout to %ds failed!",
+	        __FUNCTION__, r->Link.timeout);
+          }
+      }
+      setsockopt(r->m_sb.sb_socket, IPPROTO_TCP, TCP_NODELAY, (char *) &on, sizeof(on));
+
       if (connect(r->m_sb.sb_socket, service, sizeof(struct sockaddr)) < 0)
 	{
 	  int err = GetSockError();
@@ -937,19 +955,6 @@ RTMP_Connect0(RTMP *r, struct sockaddr * service)
       return FALSE;
     }
 
-  /* set timeout */
-  {
-    SET_RCVTIMEO(tv, r->Link.timeout);
-    if (setsockopt
-        (r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv)))
-      {
-        RTMP_Log(RTMP_LOGERROR, "%s, Setting socket timeout to %ds failed!",
-	    __FUNCTION__, r->Link.timeout);
-      }
-  }
-
-  setsockopt(r->m_sb.sb_socket, IPPROTO_TCP, TCP_NODELAY, (char *) &on, sizeof(on));
-
   return TRUE;
 }
 
-- 

Attached Files


Edited by athoik, 20 March 2015 - 17:45.

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 #834 Erik Slagter

  • PLi® Core member
  • 46,969 posts

+542
Excellent

Posted 20 March 2015 - 17:57

What a strange way to implement timeouts. That's a comment towards the librtmp devs not towards you ;)

 

I would create the socket non-blocking and then use it with poll() (or select(), if you prefer that). Then there is no need for any of this hocus-pocus. The non-blocking socket will also return immediately from a connect() and return "read" on connection from poll().

 

Anyway, I'll apply this.


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: GStreamer 1.0 #835 Erik Slagter

  • PLi® Core member
  • 46,969 posts

+542
Excellent

Posted 20 March 2015 - 17:58

EDIT I guess there will be a "superpatch" that includes this patch into OE ;)


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: GStreamer 1.0 #836 babsy98

  • Senior Member
  • 166 posts

+18
Neutral

Posted 20 March 2015 - 18:09

i like superpatches :D



Re: GStreamer 1.0 #837 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 20 March 2015 - 18:36

Here is the OE patch too (librtmp patch included)
 
Subject: [PATCH] librtmp: set timeout for send operations too

timeout parameter now works for send and receive operations

diff --git a/meta-openpli/recipes-multimedia/rtmp/librtmp.bb b/meta-openpli/recipes-multimedia/rtmp/librtmp.bb
index f26e556..e6a5376 100644
--- a/meta-openpli/recipes-multimedia/rtmp/librtmp.bb
+++ b/meta-openpli/recipes-multimedia/rtmp/librtmp.bb
@@ -11,9 +11,11 @@ SRCREV = "a1900c3e152085406ecb87c1962c55ec9c6e4016"
 
 PKGV = "2.4+git${GITPKGV}"
 PV = "2.4+git${SRCPV}"
-PR = "r1"
+PR = "r2"
 
-SRC_URI = "git://git.ffmpeg.org/rtmpdump;protocol=git"
+SRC_URI = "git://git.ffmpeg.org/rtmpdump;protocol=git \
+	file://0001-librtmp-set-timeout-for-send-operations-too.patch;striplevel=2 \
+"
 
 S = "${WORKDIR}/git/librtmp"

Attached Files


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 #838 Erik Slagter

  • PLi® Core member
  • 46,969 posts

+542
Excellent

Posted 20 March 2015 - 18:52

Sweet. Applied.


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: GStreamer 1.0 #839 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 20 March 2015 - 19:03

The following patch was "forgotten".

I guess according to the comment: default blocksize is only 4096 we neeed to feed hardware decoder with more data

http://gstreamer.fre...eSrc--blocksize

diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index 7bfc989..298f6dc 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -2014,6 +2014,11 @@ void eServiceMP3::playbinNotifySource(GObject *object, GParamSpec *unused, gpoin
        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 neeed 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);
I really don't remember what I was testing ... Most probably to improve streaming performance :P

Please test it and if you find that improves streaming, report it, in order to be pushed ...
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 #840 Erik Slagter

  • PLi® Core member
  • 46,969 posts

+542
Excellent

Posted 20 March 2015 - 19:14

I suspect the favourite chunk size of the decoder could be different per model and/or driver :mellow: It would be nice if it could be queried from the driver.


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.




4 user(s) are reading this topic

0 members, 2 guests, 0 anonymous users


    Bing (2)