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 #2041 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 22 November 2015 - 22:26

@babsy98

It is possible for you to try this with OpenPli image?



Re: GStreamer 1.0 #2042 babsy98

  • Senior Member
  • 166 posts

+18
Neutral

Posted 23 November 2015 - 08:09

i must prepare a build for my stb need some time, not ready and machine bsp not ready

but i have only time next weekend



Re: GStreamer 1.0 #2043 babsy98

  • Senior Member
  • 166 posts

+18
Neutral

Posted 23 November 2015 - 17:37

As for the GStreamer/IPTV, we found that it works well if there’s only one stream source in .m3u8 file. It looks like that E2 gets blocked during GStreamer try to change to stream source to higher resolution. During that process, there’s no meaningful interaction between the userspace and driver.



Re: GStreamer 1.0 #2044 dreamboxco

  • Senior Member
  • 321 posts

+4
Neutral

Posted 23 November 2015 - 21:15

I have a TV CHannel with hang up on a display spinner   RPC (Panama) http://live.rpctv.co...l/playlist.m3u8

 

Pic and Sound coming but after x seconds come the display spinner

21:09:06.861 {   } Components/ActionMap.py:46 action action ->  InfobarChannelSelection switchChannelUp
21:09:06.867 {   } Navigation.py:245 playService playing 4097:0:0:0:0:0:0:0:0:0:http%3a//live.rpctv.com/rpctv/tm.smil/playlist.m3u8:RPC (Panama)
21:09:06.869 [   ] service/servicemp3.cpp:782 stop eServiceMP3::stop http://m.iblups.com:1935/lives/ptv1/playlist.m3u8
21:09:06.958 {   } Screens/Screen.py:150 show [SCREENNAME]  InfoBar
21:09:06.999 < E > service/servicemp3.cpp:965 trickSeek [eServiceMP3] trickSeek - invalid state, state:READY pending:PAUSED ret:ASYNC, doing seeking unpause
21:09:07.001 { E } Components/Pixmap.py:133 setPixmapNum setPixmapNum(0) failed! defined pixmaps: []
21:09:07.011 < E > service/servicemp3.cpp:965 trickSeek [eServiceMP3] trickSeek - invalid state, state:READY pending:PLAYING ret:ASYNC, doing seeking unpause
21:09:07.013 { E } Components/Pixmap.py:133 setPixmapNum setPixmapNum(0) failed! defined pixmaps: []
21:09:07.022 { E } Tools/Notifications.py:36 RemovePopup RemovePopup, id = ZapError
21:09:07.027 [   ] driver/rcinput.cpp:23 handleCode 0 67 1
21:09:07.030 {   } Screens/InfoBarGenerics.py:204 actionA KEY: 103 1 KEY_UP UP
21:09:07.043 [   ] service/servicemp3.cpp:1645 gstBusCall eServiceMP3::state transition NULL -> READY
21:09:07.817 {   } Screens/Screen.py:150 show [SCREENNAME]  BufferIndicator


Re: GStreamer 1.0 #2045 babsy98

  • Senior Member
  • 166 posts

+18
Neutral

Posted 24 November 2015 - 18:05

  • HLS sources (.m3u8 file with multiple stream source) work well when HLS player is enabled in media portal. If you change HLS cache directory to /tmp or so, you don’t need to attach any external storage to the box.
  • Otherwise, e2 blocks when stream source is changed from one to another. At that moment, e2 contains 2 or more threads.
    • One of them stops at PyThread_acquire_lock(), which in turn calls pthread sem_wait(). It’s assumed to be the thread that blocks the main thread and draws spinner and waits for a certain signal to quit.
    • Few of other remaining threads are blocked on g_cond_wait() of glib, which in turn calls pthread_cond_wait(). It seems that these threads are made by GStreamer. These threads mostly exit if servicemp3 receives the state change message from PAUSED->READY.
    • So, I’m wondering which GST message makes e2 display spinner and wait event in this case. I think it should not invoke spinner thread when the stream source in HLS is changing.


Re: GStreamer 1.0 #2046 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 24 November 2015 - 18:20

@babsy98

Please post stream(.m3u8 file with multiple stream source) which causes it so we can investigate.



Re: GStreamer 1.0 #2047 dreamboxco

  • Senior Member
  • 321 posts

+4
Neutral

Posted 24 November 2015 - 20:27

 

  • HLS sources (.m3u8 file with multiple stream source) work well when HLS player is enabled in media portal. If you change HLS cache directory to /tmp or so, you don’t need to attach any external storage to the box.
  • Otherwise, e2 blocks when stream source is changed from one to another. At that moment, e2 contains 2 or more threads.
    • One of them stops at PyThread_acquire_lock(), which in turn calls pthread sem_wait(). It’s assumed to be the thread that blocks the main thread and draws spinner and waits for a certain signal to quit.
    • Few of other remaining threads are blocked on g_cond_wait() of glib, which in turn calls pthread_cond_wait(). It seems that these threads are made by GStreamer. These threads mostly exit if servicemp3 receives the state change message from PAUSED->READY.
    • So, I’m wondering which GST message makes e2 display spinner and wait event in this case. I think it should not invoke spinner thread when the stream source in HLS is changing.

 

 

 

i have add the channel with dreamedit and see this channel in my channel list

in mediaportl are the hls cache on

 

the channel ist here http://live.rpctv.com/rpctv/tm.smil/playlist.m3u8:RPC (Panama)



Re: GStreamer 1.0 #2048 samsamsam

  • Senior Member
  • 2,024 posts

+146
Excellent

Posted 25 November 2015 - 00:39

 

Hello,
 
Maybe you know that I am under porting player based on ffmpeg - exteplayer3.
 
Now I am working on support for PCM but unfortunately I have a problem,
I dump PES inserted by gstreamer where audio play and those inserted via exteplayer3 and the data are exacly the same but with exteplayer3 audio is not playied.
Also bypass mode seems the same 0x30.
 
I have no Idea what could be wrong.
Maybe someone have an idea on what I should pay attention?
 
Regards,
SSS

 

 

I finally found what is the reason why PCM are not played.
The header of the data must be written to the audio decoder separately from payload data.
 
They can not be stored at one buffer (header + playload) and written at one write call.
 
This is very strange requirement and there is no documentation about this.
 
Regards,
SSS

Edited by samsamsam, 25 November 2015 - 00:40.


Re: GStreamer 1.0 #2049 babsy98

  • Senior Member
  • 166 posts

+18
Neutral

Posted 25 November 2015 - 11:53

Increasing GST playbin file size limit makes MediaPortal plugin can play "Das Erste" in ARD.m3u.
 
/* use progressive download buffering */
flags |= GST_PLAY_FLAG_DOWNLOAD;
g_signal_connect(G_OBJECT(m_gst_playbin), "element-added", G_CALLBACK(handleElementAdded), this);
/* limit file size */
g_object_set(m_gst_playbin, "ring-buffer-max-size", (guint64)(20LL * 1024LL * 1024LL), NULL);


Re: GStreamer 1.0 #2050 babsy98

  • Senior Member
  • 166 posts

+18
Neutral

Posted 25 November 2015 - 12:09

ah shit i have test wrong hls player was enable :(



Re: GStreamer 1.0 #2051 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 25 November 2015 - 15:58

 

 

Hello,
 
Maybe you know that I am under porting player based on ffmpeg - exteplayer3.
 
Now I am working on support for PCM but unfortunately I have a problem,
I dump PES inserted by gstreamer where audio play and those inserted via exteplayer3 and the data are exacly the same but with exteplayer3 audio is not playied.
Also bypass mode seems the same 0x30.
 
I have no Idea what could be wrong.
Maybe someone have an idea on what I should pay attention?
 
Regards,
SSS

 

 

I finally found what is the reason why PCM are not played.
The header of the data must be written to the audio decoder separately from payload data.
 
They can not be stored at one buffer (header + playload) and written at one write call.
 
This is very strange requirement and there is no documentation about this.
 
Regards,
SSS

 

Why I don't , but with the base gstdvbaudiosink it was always done like that.

 

First send header(with the data settings required for the actif mediadata)-payloadsize-codec-data. if ok

send the media-data self.

 

Gues the reason You cant send all in a single buffer could be find in to dvb manual.



Re: GStreamer 1.0 #2052 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 26 November 2015 - 19:48

Hi,


When we are using hls streams, most probably you already noticed the quality switch. It starts with low quality and the it switches to higher quality (if multiple qualities exist).

Also most probably you loose some frames when that happens.

Test stream: http://devimages.app.../bipbopall.m3u8

(first request goes on gear1 then it switches to gear4)
 
GST_DEBUG="adaptive*:5" enigma2 2>&1 | grep http
...
<  7424.109264> [eServiceMP3] playbin uri=http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
<  7424.212999> [eServiceMP3] GST_STREAM_STATUS_TYPE_CREATE -> setting timeout on souphttpsrc to 30s
0:00:43.123498807  3820  0x1d5ef50 DEBUG          adaptivedemux gstadaptivedemux.c:558:gst_adaptive_demux_sink_event:<hlsdemux1> Fetched manifest at URI: http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 (base: (NULL))
0:00:44.004515807  3820  0x1d37000 DEBUG          adaptivedemux gstadaptivedemux.c:2424:gst_adaptive_demux_stream_download_fragment:<hlsdemux1:src_0> Got url 'http://devimages.apple.com/iphone/samples/bipbop/gear1/fileSequence0.ts' for stream 0x74b3a238
0:00:44.005031807  3820  0x1d37000 DEBUG          adaptivedemux gstadaptivedemux.c:2236:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_0> Downloading uri: http://devimages.apple.com/iphone/samples/bipbop/gear1/fileSequence0.ts, range:0 - -1
0:00:44.014716881  3820  0x1d37000 DEBUG          adaptivedemux gstadaptivedemux.c:2287:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_0> Waiting for fragment download to finish: http://devimages.apple.com/iphone/samples/bipbop/gear1/fileSequence0.ts
0:00:46.055683029  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2424:gst_adaptive_demux_stream_download_fragment:<hlsdemux1:src_1> Got url 'http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence1.ts' for stream 0x1a066d0
0:00:46.055863695  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2236:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Downloading uri: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence1.ts, range:0 - -1
0:00:46.075556399  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2287:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Waiting for fragment download to finish: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence1.ts
0:00:47.775499954  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2314:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Fragment download finished: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence1.ts 0 ok
0:00:47.781922768  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2424:gst_adaptive_demux_stream_download_fragment:<hlsdemux1:src_1> Got url 'http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence2.ts' for stream 0x1a066d0
0:00:47.782160361  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2236:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Downloading uri: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence2.ts, range:0 - -1
0:00:47.789753731  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2287:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Waiting for fragment download to finish: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence2.ts
0:00:49.317214880  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2314:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Fragment download finished: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence2.ts 0 ok
0:00:49.323488583  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2424:gst_adaptive_demux_stream_download_fragment:<hlsdemux1:src_1> Got url 'http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence3.ts' for stream 0x1a066d0
0:00:49.323660583  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2236:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Downloading uri: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence3.ts, range:0 - -1
0:00:49.335948953  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2287:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Waiting for fragment download to finish: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence3.ts
0:00:50.830764027  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2314:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Fragment download finished: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence3.ts 0 ok
0:00:50.835361249  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2424:gst_adaptive_demux_stream_download_fragment:<hlsdemux1:src_1> Got url 'http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence4.ts' for stream 0x1a066d0
0:00:50.835522842  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2236:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Downloading uri: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence4.ts, range:0 - -1
0:00:50.839917175  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2287:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Waiting for fragment download to finish: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence4.ts
0:00:56.558573804  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2314:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Fragment download finished: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence4.ts 0 ok
0:00:56.563591878  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2424:gst_adaptive_demux_stream_download_fragment:<hlsdemux1:src_1> Got url 'http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence5.ts' for stream 0x1a066d0
0:00:56.563731581  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2236:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Downloading uri: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence5.ts, range:0 - -1
0:00:56.569021211  3820  0x1d5edb0 DEBUG          adaptivedemux gstadaptivedemux.c:2287:gst_adaptive_demux_stream_download_uri:<hlsdemux1:src_1> Waiting for fragment download to finish: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence5.ts
...
...
We can control this from connection-speed.
 
# gst-inspect-1.0 hlsdemux
...
  connection-speed    : Network connection speed in kbps (0 = calculate from downloaded fragments)
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967 Default: 0
...
When using connection-speed=4294967 on gst-launch it starts from high quality.
 
GST_DEBUG="adaptive*:5"  gst-launch-1.0 playbin uri=http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 connection-speed=4294967 2>&1 | grep http
0:00:02.154975000  3870   0xc667b0 DEBUG          adaptivedemux gstadaptivedemux.c:558:gst_adaptive_demux_sink_event:<hlsdemux0> Fetched manifest at URI: http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 (base: (NULL))
0:00:02.280618962  3870   0xba9600 DEBUG          adaptivedemux gstadaptivedemux.c:2424:gst_adaptive_demux_stream_download_fragment:<hlsdemux0:src_0> Got url 'http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence0.ts' for stream 0x757498d0
0:00:02.280795221  3870   0xba9600 DEBUG          adaptivedemux gstadaptivedemux.c:2236:gst_adaptive_demux_stream_download_uri:<hlsdemux0:src_0> Downloading uri: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence0.ts, range:0 - -1
0:00:02.294240036  3870   0xba9600 DEBUG          adaptivedemux gstadaptivedemux.c:2287:gst_adaptive_demux_stream_download_uri:<hlsdemux0:src_0> Waiting for fragment download to finish: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence0.ts
0:00:04.255113443  3870 0x74e294f0 DEBUG          adaptivedemux gstadaptivedemux.c:2424:gst_adaptive_demux_stream_download_fragment:<hlsdemux0:src_1> Got url 'http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence1.ts' for stream 0x74e36b68
0:00:04.255295813  3870 0x74e294f0 DEBUG          adaptivedemux gstadaptivedemux.c:2236:gst_adaptive_demux_stream_download_uri:<hlsdemux0:src_1> Downloading uri: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence1.ts, range:0 - -1
...
Tried the following in enigma2 but it didn't work.
 
diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index 7be0ca7..6dd196f 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -2248,6 +2283,10 @@ 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), "connection-speed") != 0)
+               {
+                       g_object_set(G_OBJECT(source), "connection-speed", 4294967, 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);
So I patched the adaptivedemux to use the max value instead of 0.
 
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
index 87bebf1..c4d8230 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
@@ -132,7 +132,7 @@ GST_DEBUG_CATEGORY (adaptivedemux_debug);

 #define MAX_DOWNLOAD_ERROR_COUNT 3
 #define DEFAULT_FAILED_COUNT 3
-#define DEFAULT_CONNECTION_SPEED 0
+#define DEFAULT_CONNECTION_SPEED G_MAXUINT
 #define DEFAULT_BITRATE_LIMIT 0.8
 #define SRC_QUEUE_MAX_BYTES 20 * 1024 * 1024    /* For safety. Large enough to hold a segment. */
Now it selects the maximum quality first (gear4).
 
root@dm800se:~# GST_DEBUG="adaptive*:5" enigma2 2>&1 | grep http
playing 4097:0:1:0:0:0:0:0:0:0:http%3a//devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8:Bip Bop All
< 11167.423291> [eServiceMP3] playbin uri=http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
< 11169.092559> [eServiceMP3] GST_STREAM_STATUS_TYPE_CREATE -> setting timeout on souphttpsrc to 30s
0:00:24.118605033  5609  0x1ceb3b0 DEBUG          adaptivedemux gstadaptivedemux.c:558:gst_adaptive_demux_sink_event:<hlsdemux0> Fetched manifest at URI: http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 (base: (NULL))
0:00:24.974235477  5609  0x1c2e200 DEBUG          adaptivedemux gstadaptivedemux.c:2424:gst_adaptive_demux_stream_download_fragment:<hlsdemux0:src_0> Got url 'http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence0.ts' for stream 0x7374ac08
0:00:24.974773551  5609  0x1c2e200 DEBUG          adaptivedemux gstadaptivedemux.c:2236:gst_adaptive_demux_stream_download_uri:<hlsdemux0:src_0> Downloading uri: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence0.ts, range:0 - -1
0:00:24.986980958  5609  0x1c2e200 DEBUG          adaptivedemux gstadaptivedemux.c:2287:gst_adaptive_demux_stream_download_uri:<hlsdemux0:src_0> Waiting for fragment download to finish: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence0.ts
0:00:27.938667550  5609  0x1b47120 DEBUG          adaptivedemux gstadaptivedemux.c:2424:gst_adaptive_demux_stream_download_fragment:<hlsdemux0:src_1> Got url 'http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence1.ts' for stream 0x73774fb0
0:00:27.938831217  5609  0x1b47120 DEBUG          adaptivedemux gstadaptivedemux.c:2236:gst_adaptive_demux_stream_download_uri:<hlsdemux0:src_1> Downloading uri: http://devimages.apple.com/iphone/samples/bipbop/gear4/fileSequence1.ts, range:0 - -1
But again I see a gap in frames, it starts from 1 and after a while it goes directly to 300 something.


Any idea how to make it not to loose frames and maybe use servicemp3 to set connection-speed?
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 #2053 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 26 November 2015 - 23:45

Athoik, the loss of frames can also be caused by difference in key-allignment and gop-size between the different streams.

I work for a dutch company that provides live TV for ott devices (hls, smooth and mpeg-dash) and we had to configure our envivio live encoders to force strict key-frame allignment between the multiple bitrates.
If not then we also experience loss of frames and freezes on some mobile devices.
Especially the google chromecast stick.

So maybe you should test different hls streams.
Especially the ones with the same gop should not drop any frames.

Re: GStreamer 1.0 #2054 samsamsam

  • Senior Member
  • 2,024 posts

+146
Excellent

Posted 27 November 2015 - 02:16

Why I don't , but with the base gstdvbaudiosink it was always done like that.

 

First send header(with the data settings required for the actif mediadata)-payloadsize-codec-data. if ok

send the media-data self.

 

Gues the reason You cant send all in a single buffer could be find in to dvb manual.

OK but for AAC there it is not required, also seems that for video decoder this is also not required.

 

In terms of performance this does not have sens because write as you know it is system call. So, one system call is better then two.

Also I do not see in mediasink logic that will check if header was accepted or not. So, even if the header is wrong you still write payload data.


Edited by samsamsam, 27 November 2015 - 02:19.


Re: GStreamer 1.0 #2055 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 27 November 2015 - 06:07

Athoik, the loss of frames can also be caused by difference in key-allignment and gop-size between the different streams.


That makes sence when changing from gear1 to gear4 in apple hls sample.

When you start with gear4 why it looses frames again?

PS. The apple sample is specially made for that purpose, 4 gears, frame count & time on screen, easy to spot switches and frame gaps.

PPS. I will record it and if we what happens also with the hls dump.
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 #2056 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 27 November 2015 - 16:34

@athoik

try to set connection-speed directly for playbin, as you did here:

gst-launch-1.0 playbin uri=http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 connection-speed=4294967 2>&1 | grep http


Re: GStreamer 1.0 #2057 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 27 November 2015 - 17:30

@athoik
try to set connection-speed directly for playbin, as you did here:

gst-launch-1.0 playbin uri=http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 connection-speed=4294967 2>&1 | grep http


Thanks mx3L setting the connection-speed on playbin did the trick!

diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index f65ca96..efe3f8e 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -595,6 +595,9 @@ eServiceMP3::eServiceMP3(eServiceReference ref):
                        /* increase the default 2 second / 2 MB buffer limitations to 5s / 5MB */
                        g_object_set(G_OBJECT(m_gst_playbin), "buffer-duration", 5LL * GST_SECOND, NULL);
                        g_object_set(G_OBJECT(m_gst_playbin), "buffer-size", m_buffer_size, NULL);
+
+                       /* use max connection-speed to start always from high quality */
+                       g_object_set(G_OBJECT(m_gst_playbin), "connection-speed", 4294967, NULL);
                }
                g_object_set (G_OBJECT (m_gst_playbin), "flags", flags, NULL);
                g_object_set (G_OBJECT (m_gst_playbin), "uri", uri, NULL);
But again there is frame loss (count starts almost with 300 something) although it starts with high quality (gear4).

Do you have the same issue?
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 #2058 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 27 November 2015 - 17:51

Starts with gear4 up to 40 frame then frames drop and continues from 300+ in gear4



Re: GStreamer 1.0 #2059 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 27 November 2015 - 21:46

Here is a channel that I get instant deadlock...

<104643.427760> [eServiceMP3] playbin uri=http://94.23.218.186:1935/kanali5/kanali5/playlist.m3u8
<104643.430481> [eServiceMP3] starting pipeline
<104643.493486> [eServiceMP3] state transition NULL -> READY
resolved to PLAY
<104643.555682> [eServiceMP3] trickSeek no need to unpause!
resolved to PLAY
<104643.560472> [eServiceMP3] trickSeek no need to unpause!
resolved to PLAY
<104643.565201> [eServiceMP3] trickSeek no need to unpause!
new service started! trying to download cuts!
RemovePopup, id = ZapError
<104643.570435> [eServiceMP3] GST_STREAM_STATUS_TYPE_CREATE -> setting timeout on souphttpsrc to 30s
<104673.570315> [eServiceMP3] http source timeout! issuing eof...
<104673.570665> [eServiceMP3] stop http://94.23.218.186:1935/kanali5/kanali5/playlist.m3u8
<104676.577402> [gRC] main thread is non-idle! display spinner!
Might be interesting to find what causes the deadlock.


PS. Stream is not playing also with other players eg VLC.
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 #2060 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 27 November 2015 - 21:56

Athoik are you using gstreamer 1.6.1 or upstream git?



3 user(s) are reading this topic

0 members, 3 guests, 0 anonymous users