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 #1901 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 3 November 2015 - 18:26

So why the sound did not worked is found that's ok.

 

But since 1.6.0 and 1.6.1 still same video freezes with Test.mpg



Re: GStreamer 1.0 #1902 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 3 November 2015 - 18:27

Tested .mpg on openpli mediasink audio is stuttering.

Looks like problem again with too many tag messages:

GST_DEBUG_NO_COLOR=1 GST_DEBUG=dvbvideosink:4 gst-launch-1.0 playbin uri=file:///media/NAS_MEDIA/Test/Test.mpg video-sink=fakesink audio-sink=fakesink -m
...
Got message #378 from element "fakesink0" (tag): GstMessageTag, taglist=(taglist)"taglist\,\ video-codec\=\(string\)\"MPEG-2\\\ Video\\\ \\\(Main\\\ Profile\\\)\"\,\ minimum-bitrate\=\(uint\)34673200\,\ maximum-bitrate\=\(uint\)45326800\,\ bitrate\=\(uint\)39893670\;";
Got message #381 from element "fakesink0" (tag): GstMessageTag, taglist=(taglist)"taglist\,\ video-codec\=\(string\)\"MPEG-2\\\ Video\\\ \\\(Main\\\ Profile\\\)\"\,\ minimum-bitrate\=\(uint\)34673200\,\ maximum-bitrate\=\(uint\)49515400\,\ bitrate\=\(uint\)40067385\;";
Got message #384 from element "fakesink0" (tag): GstMessageTag, taglist=(taglist)"taglist\,\ video-codec\=\(string\)\"MPEG-2\\\ Video\\\ \\\(Main\\\ Profile\\\)\"\,\ minimum-bitrate\=\(uint\)30484600\,\ maximum-bitrate\=\(uint\)49515400\,\ bitrate\=\(uint\)39899266\;";
Got message #388 from element "fakesink0" (tag): GstMessageTag, taglist=(taglist)"taglist\,\ video-codec\=\(string\)\"MPEG-2\\\ Video\\\ \\\(Main\\\ Profile\\\)\"\,\ minimum-bitrate\=\(uint\)30484600\,\ maximum-bitrate\=\(uint\)49515400\,\ bitrate\=\(uint\)39921387\;";
...

Previously applied patch should solve it - https://github.com/O...05b2da4f4f0b2fa

Problem is that these tags are changing - bitrate fields as you can see, so again too many evUpdateInfo events.

1. To workaround this we can check if only bitrates are changing, and if that's the case we will just ignore these tags.
2. probably better, always store changed tags but check for changes only periodically and if changed emit evUpdateInfo,~few seconds


Edited by mx3L, 3 November 2015 - 18:31.


Re: GStreamer 1.0 #1903 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 3 November 2015 - 18:33

Yes but the commit is since long in and we still have this problem. Which is curious I did not happen on 1.5.1 (according to the reporter)



Re: GStreamer 1.0 #1904 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 3 November 2015 - 18:40

@christophecvr

Please read again what I wrote, bitrate entries in tags are changing, so this fix doesn't work, fix works only when tags are same.

 

gstreamer updated tags API - https://bugzilla.gno...g.cgi?id=679768, not sure which version but 1.5.1 didn't have it updated.


Edited by mx3L, 3 November 2015 - 18:42.


Re: GStreamer 1.0 #1905 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 3 November 2015 - 19:02

Yes somthing extra to avoid the to many evUpdates must be done

 

That's in servicemp3 gues a job to test and try things tommorow



Re: GStreamer 1.0 #1906 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 3 November 2015 - 19:23

Gues that tommorow I'll try,

 

Perhaps like You told if there is only a bitrate change in tag not send an eventUpdate could work.



Re: GStreamer 1.0 #1907 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 3 November 2015 - 19:37

I think second solution could be done easily with eTimer and then we don't need to ignore anything(just same messages).

 

Also this situation happens because after flush(on start) are HW buffers empty, then they are filled with immediate rush of many buffers, which creates many tags messages in instance. So we could also avoid this by simply waiting for a while until this rush happens and then start handling tags messages again when we have normal buffer flow.



Re: GStreamer 1.0 #1908 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 4 November 2015 - 08:45

 

Also this situation happens because after flush(on start) are HW buffers empty, then they are filled with immediate rush of many buffers, which creates many tags messages in instance. So we could also avoid this by simply waiting for a while until this rush happens and then start handling tags messages again when we have normal buffer flow

 

Yes , but .. If this was the case would it not just be a little tricky media start to play normally after a while ?

 

That's not really the case. The vuduo2 has same problem it's not that worse as on dm8000 well to much and media play not ok.



Re: GStreamer 1.0 #1909 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 4 November 2015 - 09:28

also for the specific File Test.mpg  ps it does play fine on a pc. I well noticed a special issue

<  4883.068599> [eServiceMP3] state transition PAUSED -> PLAYING
0:01:23.849194056  7117 0x73a301b0 INFO            dvbvideosink gstdvbvideosink.c:658:video_write:<dvbvideosink0> VIDEO_EVENT 1
<  4883.630789> [DVBCAHandler] no more services
0:01:24.859921649  7117 0x73a301b0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:01:24.860259352  7117 0x73a301b0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39425820;
0:01:25.009336537  7117 0x73a301b0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:01:25.009658315  7117 0x73a301b0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39478018;
0:01:25.165590315  7117 0x73a301b0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:01:25.165917760  7117 0x73a301b0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39521516;

The min and max bitrate are equal to each other , and are bigger then the actual bitrate  . Looks pretty illogic to me.



Re: GStreamer 1.0 #1910 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 4 November 2015 - 10:28

But later on it changes so gues that's not the cause off problems.



Re: GStreamer 1.0 #1911 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 4 November 2015 - 11:12

Further test looks to show it's not the tag update evupdateInfo which is the cause for this media. However the tags seems to be involved.

 

As test I just (really only as test before to do something else I tried :)

 

servicemp3.cpp change to :

		case GST_MESSAGE_TAG:
		{
			GstTagList *tags, *result;
			gst_message_parse_tag(msg, &tags);
			gboolean min_bitrate = FALSE;
			gboolean max_bitrate = FALSE;
			gboolean bitrate = FALSE;
			min_bitrate = gst_tag_exists(GST_TAG_MINIMUM_BITRATE);
			max_bitrate = gst_tag_exists(GST_TAG_MAXIMUM_BITRATE);
			bitrate = gst_tag_exists(GST_TAG_BITRATE);
			if(min_bitrate && max_bitrate && bitrate)
				eDebug("[eServiceMP3] CVR TEST TEST min,max and bitrate registered");

			result = gst_tag_list_merge(m_stream_tags, tags, GST_TAG_MERGE_REPLACE);
			if (result)
			{
				if (m_stream_tags && (gst_tag_list_is_equal(m_stream_tags, result) || min_bitrate && max_bitrate && bitrate && !m_paused && !m_user_paused))
				{
					gst_tag_list_free(tags);
					gst_tag_list_free(result);
					eDebug("[eServiceMP3] CVR TEST TEST BREAK msg tag  evUpdatedInfo");
					break;
				}
				if (m_stream_tags)
					gst_tag_list_free(m_stream_tags);
				
				m_stream_tags = result;
			}

Resulting log Test.mpg :

< 11088.608969> [eServiceMP3] state transition NULL -> READY
0:00:41.487672104 15903 0x7451fe90 INFO            dvbaudiosink gstdvbaudiosink.c:1468:gst_dvbaudiosink_change_state:<dvbaudiosink0> GST_STATE_CHANGE_NULL_TO_READY
0:00:41.586551771 15903  0x1a75c60 INFO            dvbvideosink gstdvbvideosink.c:1829:gst_dvbvideosink_change_state:<dvbvideosink0> GST_STATE_CHANGE_NULL_TO_READY
0:00:41.799358919 15903  0x1a75c60 INFO            dvbvideosink gstdvbvideosink.c:1833:gst_dvbvideosink_change_state:<dvbvideosink0> GST_STATE_CHANGE_READY_TO_PAUSED
< 11089.005777> [eServiceMP3] gst_element_query_position failed in getPlayPosition
< 11089.011635> [eServiceMP3] gst_element_query_position failed in getPlayPosition
< 11089.044418> [eServiceMP3] gst_element_query_position failed in getPlayPosition
< 11089.048557> [eServiceMP3] gst_element_query_position failed in getPlayPosition
< 11089.055537> [eServiceMP3] gst_element_query_position failed in getPlayPosition
< 11089.058581> [eServiceMP3] gst_element_query_position failed in getPlayPosition
0:00:41.917412178 15903  0x1a75c60 INFO            dvbaudiosink gstdvbaudiosink.c:1473:gst_dvbaudiosink_change_state:<dvbaudiosink0> GST_STATE_CHANGE_READY_TO_PAUSED
< 11089.079768> [eServiceMP3] gst_element_query_position failed in getPlayPosition
< 11089.087235> [eServiceMP3] gst_element_query_position failed in getPlayPosition
0:00:41.934660549 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT stream-start
0:00:41.932478549 15903 0x7452ff80 INFO            dvbaudiosink gstdvbaudiosink.c:738:gst_dvbaudiosink_event:<dvbaudiosink0> EVENT stream-start
0:00:41.944400364 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT caps
0:00:41.944707289 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:1290:gst_dvbvideosink_set_caps:<dvbvideosink0> caps = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false, parsed=(boolean)true, width=(int)1920, height=(int)800, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)221/240, codec_data=(buffer)000001b37803204361a82380000001b5148200010000000001b243726561746564206279204e654d70656732456e632028323031332d31322d30395431302d30362d353329, profile=(string)main, level=(string)main, interlace-mode=(string)mixed
0:00:41.946530141 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:1314:gst_dvbvideosink_set_caps:<dvbvideosink0> MIMETYPE video/mpeg2 -> STREAMTYPE_MPEG2
0:00:41.952473141 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT segment
0:00:41.953488178 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:519:gst_dvbvideosink_event:<dvbvideosink0> SEGMENT rate=1.000000 format=3 start=400000000 pos=400000000
0:00:41.954510104 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:520:gst_dvbvideosink_event:<dvbvideosink0> SEGMENT DVB TIMESTAMP=36000 HEXFORMAT 0x8ca0
0:00:41.955522623 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:41.956507882 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video";
< 11089.116496> [eServiceMP3] CVR TEST TEST min,max and bitrate registered
0:00:42.014756363 15903 0x7452ff80 INFO            dvbaudiosink gstdvbaudiosink.c:738:gst_dvbaudiosink_event:<dvbaudiosink0> EVENT caps
0:00:42.016786586 15903 0x7452ff80 INFO            dvbaudiosink gstdvbaudiosink.c:569:gst_dvbaudiosink_set_caps:<dvbaudiosink0> MIMETYPE audio/x-private1-lpcm(DVD Audio)
0:00:42.017755400 15903 0x7452ff80 INFO            dvbaudiosink gstdvbaudiosink.c:716:gst_dvbaudiosink_set_caps:<dvbaudiosink0> setting dvb mode 0x06

0:00:42.032149956 15903 0x7452ff80 INFO            dvbaudiosink gstdvbaudiosink.c:738:gst_dvbaudiosink_event:<dvbaudiosink0> EVENT segment
0:00:42.032501067 15903 0x7452ff80 INFO            dvbaudiosink gstdvbaudiosink.c:837:gst_dvbaudiosink_event:<dvbaudiosink0> GST_EVENT_SEGMENT rate=1.000000 format=3 start=400000000 position=45633333
0:00:42.032857030 15903 0x7452ff80 INFO            dvbaudiosink gstdvbaudiosink.c:838:gst_dvbaudiosink_event:<dvbaudiosink0> SEGMENT DVB TIMESTAMP=36000 HEX=0x8ca0
0:00:42.033766771 15903 0x7452ff80 INFO            dvbaudiosink gstdvbaudiosink.c:738:gst_dvbaudiosink_event:<dvbaudiosink0> EVENT tag
0:00:42.034166882 15903 0x7452ff80 INFO            dvbaudiosink gstdvbaudiosink.c:882:gst_dvbaudiosink_event:<dvbaudiosink0> TAG taglist, audio-codec=(string)"DVD\ LPCM";
< 11089.192351> [eServiceMP3] CVR TEST TEST min,max and bitrate registered
0:00:42.193592882 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:42.193817363 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", bitrate=(uint)34258200;
< 11089.353097> [eServiceMP3] CVR TEST TEST min,max and bitrate registered
< 11089.377345> [eServiceMP3] state transition READY -> PAUSED
< 11089.382889> [eServiceMP3] loading cuesheet
< 11089.383967> [eServiceMP3] cutfile not found!
< 11089.440107> [eServiceMP3] async-done - 1 video, 1 audio, 0 subtitle
< 11089.441372> [eServiceMP3] AUDIO STRUCT=audio/x-private1-lpcm
< 11089.442867> [eServiceMP3] audio stream=0 codec=DVD LPCM language=und
0:00:42.327335438 15903  0x1ad1ae0 INFO            dvbaudiosink gstdvbaudiosink.c:1484:gst_dvbaudiosink_change_state:<dvbaudiosink0> GST_STATE_CHANGE_PAUSED_TO_PLAYING
0:00:42.337343252 15903  0x1ad1ae0 INFO            dvbvideosink gstdvbvideosink.c:1844:gst_dvbvideosink_change_state:<dvbvideosink0> GST_STATE_CHANGE_PAUSED_TO_PLAYING
< 11089.556257> [eServiceMP3] state transition PAUSED -> PLAYING
0:00:42.568141845 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:658:video_write:<dvbvideosink0> VIDEO_EVENT 1
< 11090.013223> [DVBCAHandler] no more services
0:00:43.590151623 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:43.590382215 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39425820;
< 11090.748444> [eServiceMP3] CVR TEST TEST min,max and bitrate registered
< 11090.749173> [eServiceMP3] CVR TEST TEST BREAK msg tag  evUpdatedInfo
0:00:43.725149364 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:43.725369993 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39478018;
< 11090.883314> [eServiceMP3] CVR TEST TEST min,max and bitrate registered
< 11090.883734> [eServiceMP3] CVR TEST TEST BREAK msg tag  evUpdatedInfo
0:00:43.866522178 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:43.866740548 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39521516;
< 11091.027534> [eServiceMP3] CVR TEST TEST min,max and bitrate registered
< 11091.028327> [eServiceMP3] CVR TEST TEST BREAK msg tag  evUpdatedInfo
< 11091.105536> [eDVBResourceManager] release cached channel (timer timeout)
< 11091.105853> [eDVBLocalTimerHandler] remove channel 0x1a6af20
< 11091.107390> [eEPGCache] remove channel 0x1a6af20
< 11091.111446> [eDVBResourceManager] stop release channel timer
0:00:44.011582363 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:44.011807808 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39558323;
< 11091.171974> [eServiceMP3] CVR TEST TEST min,max and bitrate registered
< 11091.172660> [eServiceMP3] CVR TEST TEST BREAK msg tag  evUpdatedInfo
0:00:44.145084956 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:44.145384363 15903 0x7452fe30 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39589871;
< 11091.304660> [eServiceMP3] CVR TEST TEST min,max and bitrate registered
< 11091.305334> [eServiceMP3] CVR TEST TEST BREAK msg tag  evUpdatedInfo

Video and audio still stuttering. It is well somehow tag related but. Start to think it's really a blocker from gst self.


Edited by christophecvr, 4 November 2015 - 11:13.


Re: GStreamer 1.0 #1912 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 4 November 2015 - 11:33

Try this one:
 
diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index 9ac7645..792fda8 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -403,6 +403,7 @@ eServiceMP3::eServiceMP3(eServiceReference ref):
        m_subtitle_sync_timer = eTimer::create(eApp);
        m_streamingsrc_timeout = 0;
        m_stream_tags = 0;
+       m_bitrate = 0;
        m_currentAudioStream = -1;
        m_currentSubtitleStream = -1;
        m_cachedSubtitleStream = 0; /* report the first subtitle stream to be 'cached'. TODO: use an actual cache. */
@@ -1797,6 +1798,22 @@ void eServiceMP3::gstBusCall(GstMessage *msg)
                                if (m_stream_tags)
                                        gst_tag_list_free(m_stream_tags);
                                m_stream_tags = result;
+
+                               /* send evUpdatedInfo only when bitrate changes from 0 in order to reduce events */
+                               guint value;
+                               if(gst_tag_list_get_uint(m_stream_tags, GST_TAG_BITRATE, &value))
+                               {
+                                       if(!m_bitrate && value)
+                                       {
+                                               m_bitrate = value;
+                                       }
+                                       else
+                                       {
+                                               m_bitrate = value;
+                                               gst_tag_list_free(tags);
+                                               break;
+                                       }
+                               }
                        }

                        const GValue *gv_image = gst_tag_list_get_value_index(tags, GST_TAG_IMAGE, 0);
diff --git a/lib/service/servicemp3.h b/lib/service/servicemp3.h
index c8a9fe7..61943c8 100644
--- a/lib/service/servicemp3.h
+++ b/lib/service/servicemp3.h
@@ -323,6 +323,7 @@ private:
        int m_state;
        GstElement *m_gst_playbin, *audioSink, *videoSink;
        GstTagList *m_stream_tags;
+       guint m_bitrate;

        eFixedMessagePump<ePtr<GstMessageContainer> > m_pump;

The idea is not to send evUpdatedInfo every time bitrate changes. But only when bitate goes from 0 to non 0. Normally only once.

Edited by athoik, 4 November 2015 - 11:33.

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 #1913 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 4 November 2015 - 12:23

I tried it code :

		case GST_MESSAGE_TAG:
		{
			GstTagList *tags, *result;
			gst_message_parse_tag(msg, &tags);

			result = gst_tag_list_merge(m_stream_tags, tags, GST_TAG_MERGE_REPLACE);
			if (result)
			{
				if (m_stream_tags && gst_tag_list_is_equal(m_stream_tags, result))
				{
					gst_tag_list_free(tags);
					gst_tag_list_free(result);
					eDebug("[eServiceMP3] Tags are equal break evUpdatedInfo tag");
					break;
				}
				if (m_stream_tags)
					gst_tag_list_free(m_stream_tags);				
				m_stream_tags = result;

				/* send evUpdatedInfo only when bitrate changes from 0 in order to reduce events */
				guint value;
				if(gst_tag_list_get_uint(m_stream_tags, GST_TAG_BITRATE, &value))
				{
					if(!m_bitrate && value)
					{
						m_bitrate = value;
					}
					else
					{
						m_bitrate = value;
						gst_tag_list_free(tags);
						eDebug("[eServiceMP3] Bitrate already present break evUpdatedInfo tags");
						break;
					}
				}
			}

and alse the guint m_bitrate to header.

 

added a debug to check that we break. We do but now change in result. Video/audio stuttering. The longer the more I think it's a blocker bug of gstreamer self. So what shure that wherever they use it. After update this type off media wan't play anymore.

 

log :

0:00:37.365112364 21876  0x1bb7e90 INFO            dvbvideosink gstdvbvideosink.c:1833:gst_dvbvideosink_change_state:<dvbvideosink0> GST_STATE_CHANGE_READY_TO_PAUSED
0:00:37.479179104 21876  0x1bb7e90 INFO            dvbaudiosink gstdvbaudiosink.c:1473:gst_dvbaudiosink_change_state:<dvbaudiosink0> GST_STATE_CHANGE_READY_TO_PAUSED
0:00:37.488461141 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT stream-start
0:00:37.494165104 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT caps
0:00:37.494458030 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:1290:gst_dvbvideosink_set_caps:<dvbvideosink0> caps = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false, parsed=(boolean)true, width=(int)1920, height=(int)800, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)221/240, codec_data=(buffer)000001b37803204361a82380000001b5148200010000000001b243726561746564206279204e654d70656732456e632028323031332d31322d30395431302d30362d353329, profile=(string)main, level=(string)main, interlace-mode=(string)mixed
0:00:37.495711290 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:1314:gst_dvbvideosink_set_caps:<dvbvideosink0> MIMETYPE video/mpeg2 -> STREAMTYPE_MPEG2
0:00:37.497825253 21876 0x74f0ad20 INFO            dvbaudiosink gstdvbaudiosink.c:738:gst_dvbaudiosink_event:<dvbaudiosink0> EVENT stream-start
0:00:37.501282438 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT segment
0:00:37.502235364 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:519:gst_dvbvideosink_event:<dvbvideosink0> SEGMENT rate=1.000000 format=3 start=400000000 pos=400000000
0:00:37.503342660 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:520:gst_dvbvideosink_event:<dvbvideosink0> SEGMENT DVB TIMESTAMP=36000 HEXFORMAT 0x8ca0
0:00:37.504437586 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:37.510848253 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video";
0:00:37.589110253 21876 0x74f0ad20 INFO            dvbaudiosink gstdvbaudiosink.c:738:gst_dvbaudiosink_event:<dvbaudiosink0> EVENT caps
0:00:37.595957142 21876 0x74f0ad20 INFO            dvbaudiosink gstdvbaudiosink.c:569:gst_dvbaudiosink_set_caps:<dvbaudiosink0> MIMETYPE audio/x-private1-lpcm(DVD Audio)
0:00:37.596862845 21876 0x74f0ad20 INFO            dvbaudiosink gstdvbaudiosink.c:716:gst_dvbaudiosink_set_caps:<dvbaudiosink0> setting dvb mode 0x06

0:00:37.611987697 21876 0x74f0ad20 INFO            dvbaudiosink gstdvbaudiosink.c:738:gst_dvbaudiosink_event:<dvbaudiosink0> EVENT segment
0:00:37.612359993 21876 0x74f0ad20 INFO            dvbaudiosink gstdvbaudiosink.c:837:gst_dvbaudiosink_event:<dvbaudiosink0> GST_EVENT_SEGMENT rate=1.000000 format=3 start=400000000 position=45633333
0:00:37.612723068 21876 0x74f0ad20 INFO            dvbaudiosink gstdvbaudiosink.c:838:gst_dvbaudiosink_event:<dvbaudiosink0> SEGMENT DVB TIMESTAMP=36000 HEX=0x8ca0
0:00:37.613358919 21876 0x74f0ad20 INFO            dvbaudiosink gstdvbaudiosink.c:738:gst_dvbaudiosink_event:<dvbaudiosink0> EVENT tag
0:00:37.613531956 21876 0x74f0ad20 INFO            dvbaudiosink gstdvbaudiosink.c:882:gst_dvbaudiosink_event:<dvbaudiosink0> TAG taglist, audio-codec=(string)"DVD\ LPCM";
0:00:37.695144882 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:37.695438771 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", bitrate=(uint)34258200;
< 15489.088871> [eServiceMP3] state transition READY -> PAUSED
< 15489.097634> [eServiceMP3] loading cuesheet
< 15489.098607> [eServiceMP3] cutfile not found!
< 15489.156191> [eServiceMP3] async-done - 1 video, 1 audio, 0 subtitle
< 15489.157692> [eServiceMP3] AUDIO STRUCT=audio/x-private1-lpcm
< 15489.168786> [eServiceMP3] audio stream=0 codec=DVD LPCM language=und
0:00:37.853776068 21876 0x74f0e420 INFO            dvbaudiosink gstdvbaudiosink.c:1484:gst_dvbaudiosink_change_state:<dvbaudiosink0> GST_STATE_CHANGE_PAUSED_TO_PLAYING
0:00:37.867042253 21876 0x74f0e420 INFO            dvbvideosink gstdvbvideosink.c:1844:gst_dvbvideosink_change_state:<dvbvideosink0> GST_STATE_CHANGE_PAUSED_TO_PLAYING
0:00:37.940829475 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:658:video_write:<dvbvideosink0> VIDEO_EVENT 1
< 15489.318395> [eServiceMP3] state transition PAUSED -> PLAYING
< 15489.595478> [DVBCAHandler] no more services
0:00:39.193700031 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:39.194000067 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39425820;
< 15490.558731> [eServiceMP3] Bitrate already present break evUpdatedInfo tags
< 15490.673921> [eDVBResourceManager] release cached channel (timer timeout)
< 15490.674327> [eDVBLocalTimerHandler] remove channel 0x1b9bc90
< 15490.675237> [eEPGCache] remove channel 0x1b9bc90
< 15490.676518> [eEPGCache] abort caching events !!
< 15490.680122> [eDVBResourceManager] stop release channel timer
0:00:39.376426993 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:39.376702253 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39478018;
< 15490.739235> [eServiceMP3] Bitrate already present break evUpdatedInfo tags
0:00:39.526494660 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:39.526871771 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39521516;
< 15490.890129> [eServiceMP3] Bitrate already present break evUpdatedInfo tags
0:00:39.659415437 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:39.660713920 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39558323;
< 15491.023755> [eServiceMP3] Bitrate already present break evUpdatedInfo tags
0:00:39.854956179 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:39.855180215 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39589871;
< 15491.217604> [eServiceMP3] Bitrate already present break evUpdatedInfo tags
0:00:39.996664771 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:39.996969956 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39617213;
< 15491.362889> [eServiceMP3] Bitrate already present break evUpdatedInfo tags
0:00:40.152931808 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:40.153241475 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39641137;
< 15491.517764> [eServiceMP3] Bitrate already present break evUpdatedInfo tags
0:00:40.303173734 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:425:gst_dvbvideosink_event:<dvbvideosink0> EVENT tag
0:00:40.303497919 21876 0x7452cfb0 INFO            dvbvideosink gstdvbvideosink.c:548:gst_dvbvideosink_event:<dvbvideosink0> TAG taglist, video-codec=(string)"MPEG-2\ Video\ \(Main\ Profile\)", minimum-bitrate=(uint)40000000, maximum-bitrate=(uint)40000000, bitrate=(uint)39662247;
< 15491.669370> [eServiceMP3] Bitrate already present break evUpdatedInfo tags


Re: GStreamer 1.0 #1914 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 4 November 2015 - 12:31

I now will see if we can do something in gstvideosink.c perhaps ... ?


Edited by christophecvr, 4 November 2015 - 12:32.


Re: GStreamer 1.0 #1915 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 4 November 2015 - 15:45

As a test I downgraded gst on my dm8000 to 1.5.1

 

Then the video is playing but audio interrupts from time to time

 

The stream Test.mpg

 

It is well much better , and actually we do not have always a full tag. But only the bitrate tag . I do not wan't also to downgrade my vuduo2 but i'm shure it will be ok on duo2 with this stream.

 

Somehow gst above 1.5.1 is much much to heavy with tags.



Re: GStreamer 1.0 #1916 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 4 November 2015 - 16:20

With gst 1.5.1 the media plays fine on vuduo2

 

Test.mpg

 

The problem is really that gstreamer makes the tags far far to heavy. Even on vuduo2 with gst-1.6.1 the media does not play ok.


Edited by christophecvr, 4 November 2015 - 16:20.


Re: GStreamer 1.0 #1917 Hotzenwalder

  • Senior Member
  • 46 posts

+1
Neutral

Posted 4 November 2015 - 17:25

Don't know if this is the correct topic to add this reply to, but the testfile linked below contains two audio tracks, DTS and AC3. The DTS track gives a stuttering image and no sound. The AC3 track works fine.

I have other (older) files with a DTS track that seem to work fine, so what could be wrong here. I am using the latest build of Openpli 4.x on a Xtrend 8000. Playing it locally or over the network gives the same result.

 

NOT WORKING

https://www.dropbox....k/Test.mkv?dl=0  (first audio stream is DTS)

 

WORKING

https://www.dropbox..../Test2.mkv?dl=0  (second audio stream is DTS, so please select right track)

 

 



Re: GStreamer 1.0 #1918 puc

  • Senior Member
  • 47 posts

0
Neutral

Posted 8 November 2015 - 18:14

i must say few streams wasnt working, checked them now most of them is ok but still some sound sync one of them

 

http://albaghdadiagroup.com/bag2/live



Re: GStreamer 1.0 #1919 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 9 November 2015 - 23:59

Christophecvr,

 

I'm using gst-1 with your multibox dvbmediasink and no external patches on my dm800se.

But I'm currently experiencing audio-dropouts on the following two channels:

#SERVICE 4097:0:0:0:0:0:0:0:0:0:http%3a//skyianywhere2-i.akamaihd.net/hls/live/216865/cielo/playlist.m3u8:Cielo 720x418
#DESCRIPTION Cielo
#SERVICE 4097:0:0:0:0:0:0:0:0:0:http%3a//skyianywhere2-i.akamaihd.net/hls/live/200275/tg24/playlist.m3u8:Sky TG 24              
#DESCRIPTION Sky TG 24

 

Athoik gave me a hint to try and revert: https://github.com/O...537b590d83401d6

But unfortunately it does not fix the problem.

 

Could you have a look at these two streams when you find some spare time?



Re: GStreamer 1.0 #1920 dreamboxco

  • Senior Member
  • 321 posts

+4
Neutral

Posted 11 November 2015 - 13:26

how can i see this channel in e2

http://dr01-lh.akamaihd.net/i/dr01_0@147054/master.m3u8|X-Forwarded-For=78.157.96.0




7 user(s) are reading this topic

0 members, 7 guests, 0 anonymous users