@Alexvrs, similar to previous issue but with different element, qtdemux is not pushing buffers to sink.
Re: GStreamer 1.0 #2281
Re: GStreamer 1.0 #2282
Posted 10 April 2016 - 13:28
I found another problem gstreamer 1.9.0.1, this time with mp4, see this link here
http://e1.cdnak.neul..._1600K_16x9.mp4
is not work
gst-launch-1.0 playbin uri=http://e1.cdnak.neulion.com/nhl/vod/2016/01/27/741/2_741_phi_wsh_1516_h_continuous_ 1_1600K_16x9.mp4 Setting pipeline to PAUSED ... Pipeline is PREROLLING ... WARNING: from element /GstPlayBin:playbin0/GstPlaySink:playsink: No volume control found Additional debug info: ../../../git/gst/playback/gstplaysink.c(2857): gen_audio_chain (): /GstPlayBin:playbin0/GstPlaySink:playsink: Volume/mute is not available Prerolled, waiting for buffering to finish... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock Got EOS from element "playbin0". Execution ended after 0:00:00.004491741 Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... Freeing pipeline ...
Yes I checked with 1.7.1 the file did played well :
With 1.9.0.1 the file does not play
Has nothing to do with buffering or downloads.
If you fetch the file first and then just play normally it was ok with 1.7.1 or even if You played it through http link it was ok with 1.7.1
@mx3L thanks with You're patch the live streams hls from youtube are working.
Re: GStreamer 1.0 #2283
Posted 10 April 2016 - 13:28
Last patch wont apply for gstreamer 1.9.0.1..adapt it.
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index bd196c3..1f29ef0 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -1634,7 +1634,7 @@ gst_ts_demux_stream_added (MpegTSBase * base, MpegTSBaseStream * bstream, stream->first_pts = GST_CLOCK_TIME_NONE; stream->raw_pts = -1; stream->raw_dts = -1; - stream->pending_ts = TRUE; + stream->pending_ts = program->pcr_pid < 0x1fff; stream->nb_out_buffers = 0; stream->gap_ref_buffers = 0; stream->gap_ref_pts = GST_CLOCK_TIME_NONE; @@ -1728,7 +1728,7 @@ gst_ts_demux_stream_flush (TSDemuxStream * stream, GstTSDemux * tsdemux, stream->dts = GST_CLOCK_TIME_NONE; stream->raw_pts = -1; stream->raw_dts = -1; - stream->pending_ts = TRUE; + stream->pending_ts = program->pcr_pid < 0x1fff; stream->nb_out_buffers = 0; stream->gap_ref_buffers = 0; stream->gap_ref_pts = GST_CLOCK_TIME_NONE;
But fails to compile.
tmp/sysroots/dm8000= -c -o libgstmpegtsdemux_la-pesparse.lo `test -f 'pesparse.c' || echo '../../../git/gst/mpegtsdemux/'`pesparse.c | ../../../git/gst/mpegtsdemux/tsdemux.c:1731:24: error: 'program' undeclared (first use in this function) | stream->pending_ts = program->pcr_pid < 0x1fff; | ^ | ../../../git/gst/mpegtsdemux/tsdemux.c:1731:24: note: each undeclared identifier is reported only once for each function it appears in
So back to first patch for now.
Edited by Beeker, 10 April 2016 - 13:28.
Dreambox dm920, Uclan Ustym4Kpro, Gigablue UHD TRIO 4K and Dreambox dm8000. Wavefrontier T55 13.0|19.2|23.5|28.2 + Ziggo.
Re: GStreamer 1.0 #2284
Re: GStreamer 1.0 #2285
Posted 10 April 2016 - 14:02
@Beeker
It uses only the first part of your patch:
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.cindex bd196c3..1f29ef0 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -1634,7 +1634,7 @@ gst_ts_demux_stream_added (MpegTSBase * base, MpegTSBaseStream * bstream, stream->first_pts = GST_CLOCK_TIME_NONE; stream->raw_pts = -1; stream->raw_dts = -1; - stream->pending_ts = TRUE; + stream->pending_ts = program->pcr_pid < 0x1fff; stream->nb_out_buffers = 0; stream->gap_ref_buffers = 0; stream->gap_ref_pts = GST_CLOCK_TIME_NONE;
in the second part of the code does not have a program variable so you get an error
Edited by Alexvrs, 10 April 2016 - 14:03.
Один — стоит, Единый движется.
Re: GStreamer 1.0 #2286
Re: GStreamer 1.0 #2287
Posted 10 April 2016 - 16:02
Ok I do not have a new full gst-1.9.0.1 working.
Just two extra patches. On plugins-bad and on plugins-good
I added the two patches and also included my currentlly used full gst-1.9.0.1 bundle.
Tested on vuduo2 runs all fine
Youtube live streams
mp4 from Alexvrs.
Attached Files
Re: GStreamer 1.0 #2288
Re: GStreamer 1.0 #2289
Re: GStreamer 1.0 #2290
Re: GStreamer 1.0 #2291
Posted 11 April 2016 - 10:54
qtdemux revert shouldn't be neccessary anymore https://bugzilla.gno...g.cgi?id=764870
Re: GStreamer 1.0 #2292
Posted 11 April 2016 - 13:18
I just now tested .
master-next
gstreamer-head off today
multibox-dvbmediasink.
All inclusif live streams are playing.
The only media who does not play is the old wmv. Media made with mediaplayer below 9. (wmv version 1 and 2 but looks that the codecs are not supported on a bcm chipset this means we can't do anything to this whatever player is used)
I just mad a git for recipes.
On :
https://github.com/c...TREAMER-RECIPES
You can find my last full gstreamer recipe bundle I'm using now.
Re: GStreamer 1.0 #2293
Posted 11 April 2016 - 13:47
As I understand PTS can be computed from h264 buffers, so proper solution would be to compute it instead of using DTS instead of PTS which can be different from PTS.
We should try this patch for h264parse:
https://cgit.freedes...mit/?h=h264-pts from https://bugzilla.gno...i?id=659489#c40
Re: GStreamer 1.0 #2294
Posted 11 April 2016 - 14:19
Perhaps but looks to be very old and it seems they did not succeeded.
Strictly speaking at this time:
If it is really dts audio and the stb does not have dts on board like for example dm8000 . All is done trough the gst decoder
Else like on vuplus all is done by driver.
Point here was actually that the media on it was wrongly converted to ac3 by the convertion they should have set during the convertion the pts timestamp.
That is done now by modern converters then no problem.
Think we should not bring more processors intense tasks if it's running like now.
But it's trough that DTS can be different off pts. And as far I know there are two DTS audio frame per video frame.
Re: GStreamer 1.0 #2295
Posted 11 April 2016 - 14:34
I don't think it has anything to do with audio. Note there is difference between DTS audio codec and DTS as decode timestamp.
AFAIK, audio doesn't use concept of b-frames like in video where when b-frames are used decoder needs to know DTS in order to reconstruct frames and PTS to show these reconstructed frames in right order. So in audio it should be always PTS==DTS.
Re: GStreamer 1.0 #2296
Posted 11 April 2016 - 14:38
analyzing the sink as extra ok work around for wrong media perhaps also should be done :
changing in gstdvbvideosink.c from :
if (au_type == 9) { if (!GST_BUFFER_PTS_IS_VALID(buffer)) { GST_DEBUG_OBJECT(self, "writing missing pts to AU_DELIM"); GST_BUFFER_PTS(buffer) = 0; } self->h264_initial_audelim_written = TRUE;
to :
if (au_type == 9) { if (!GST_BUFFER_PTS_IS_VALID(buffer)) { if(GST_BUFFER_DTS_IS_VALID(buffer)) GST_BUFFER_PTS(buffer) = GST_BUFFER_DTS(buffer); else { GST_DEBUG_OBJECT(self, "writing missing pts to AU_DELIM"); GST_BUFFER_PTS(buffer) = 0; } } self->h264_initial_audelim_written = TRUE;
Re: GStreamer 1.0 #2297
Posted 11 April 2016 - 14:40
@christophecvr
Comparing your git with my patches I have two patches which are being applied to gstreamer1.0 (base) which you don't have:
0001-baseparse-post-tag-list-when-avg-bitrate-changes-at-.patch
From d8b4db4efb91d831c463d96a4de606cc0ddc710f Mon Sep 17 00:00:00 2001 From: Athanasios Oikonomou <athoik@gmail.com> Date: Sat, 5 Dec 2015 11:58:16 +0200 Subject: [PATCH] baseparse: post tag list when avg bitrate changes at least 2% Watching videos with variant bitrate is common to have delta more than 10 kbps, resulting in tag list spam. Instead of relying on fixed 10 kpbs delta, it is better to calculale the difference in percentage and update tag list only when bitrate changes more than 2%. https://bugzilla.gnome.org/show_bug.cgi?id=759055 diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c index c9a57c5..916fe36 100644 --- a/libs/gst/base/gstbaseparse.c +++ b/libs/gst/base/gstbaseparse.c @@ -219,6 +219,9 @@ #define MIN_FRAMES_TO_POST_BITRATE 10 #define TARGET_DIFFERENCE (20 * GST_SECOND) #define MAX_INDEX_ENTRIES 4096 +#define UPDATE_THRESHOLD 2 + +#define ABSDIFF(a,b) (((a) > (b)) ? ((a) - (b)) : ((b) - (a))) GST_DEBUG_CATEGORY_STATIC (gst_base_parse_debug); #define GST_CAT_DEFAULT gst_base_parse_debug @@ -1691,11 +1694,8 @@ gst_base_parse_update_duration (GstBaseParse * parse) static void gst_base_parse_update_bitrates (GstBaseParse * parse, GstBaseParseFrame * frame) { - /* Only update the tag on a 10 kbps delta */ - static const gint update_threshold = 10000; - guint64 data_len, frame_dur; - gint overhead, frame_bitrate, old_avg_bitrate; + gint overhead, frame_bitrate; GstBuffer *buffer = frame->buffer; overhead = frame->overhead; @@ -1755,11 +1755,13 @@ gst_base_parse_update_bitrates (GstBaseParse * parse, GstBaseParseFrame * frame) parse->priv->tags_changed = TRUE; } - old_avg_bitrate = parse->priv->posted_avg_bitrate; - if (((gint) (old_avg_bitrate - parse->priv->avg_bitrate) > update_threshold - || (gint) (parse->priv->avg_bitrate - old_avg_bitrate) > - update_threshold) && parse->priv->post_avg_bitrate) - parse->priv->tags_changed = TRUE; + /* Only update the tag on a 2% change */ + if (parse->priv->post_avg_bitrate && parse->priv->avg_bitrate) { + gint diffprev = (gint) 100 * (ABSDIFF (parse->priv->avg_bitrate, + parse->priv->posted_avg_bitrate)) / parse->priv->avg_bitrate; + if (diffprev >= UPDATE_THRESHOLD) + parse->priv->tags_changed = TRUE; + } } } -- 2.1.4
0001-Fix-crash-with-gst-inspect.patch
--- gstreamer/tools/gst-inspect.c.orig 2015-11-17 11:54:36.849000877 +0100 +++ gstreamer/tools/gst-inspect.c 2015-11-17 11:56:23.522978789 +0100 @@ -1511,7 +1511,7 @@ g_option_context_add_main_entries (ctx, options, GETTEXT_PACKAGE); g_option_context_add_group (ctx, gst_init_get_option_group ()); if (!g_option_context_parse (ctx, &argc, &argv, &err)) { - g_printerr ("Error initializing: %s\n", err->message); + g_printerr ("Error initializing: %s\n", err ? err->message : "(null)"); g_clear_error (&err); g_option_context_free (ctx); return -1;
Do you think the above two patches are now obsolete?
Re: GStreamer 1.0 #2298
Posted 11 April 2016 - 14:44
Well by me they are not needed.
Note : that is since the debuglvl is standard 3 now . It was actually the debug print on each change which was the cause off problems.
however You still can apply the patches iff You wan't. Theonly problem maybe in time is that the patch will break modern head.
Edited by christophecvr, 11 April 2016 - 14:46.
Re: GStreamer 1.0 #2299
Posted 11 April 2016 - 15:01
You're right about the debug changes not printed anymore.
Regarding gst-inspect.c I believe it causes a compile error, so I can always re-apply it if it still fails to build.
Now for gst-plugins-base I have 3 patches still being applied, that you don't seem to use?
Do you think any of the ones below is still valid?
get-caps-from-src-pad-when-query-caps.patch
From af0dac26f62aaceb4bf266720911953793e0fc5d Mon Sep 17 00:00:00 2001 From: zhouming <b42586@freescale.com> Date: Wed, 14 May 2014 10:16:20 +0800 Subject: [PATCH] ENGR00312515: get caps from src pad when query caps https://bugzilla.gnome.org/show_bug.cgi?id=728312 Upstream Status: Pending Signed-off-by: zhouming <b42586@freescale.com> --- gst-libs/gst/tag/gsttagdemux.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) mode change 100644 => 100755 gst-libs/gst/tag/gsttagdemux.c diff --git a/gst-libs/gst/tag/gsttagdemux.c b/gst-libs/gst/tag/gsttagdemux.c old mode 100644 new mode 100755 index 9b6c478..ae2294a --- a/gst-libs/gst/tag/gsttagdemux.c +++ b/gst-libs/gst/tag/gsttagdemux.c @@ -1708,6 +1708,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) } break; } + case GST_QUERY_CAPS: + { + + /* We can hijack caps query if we typefind already */ + if (demux->priv->src_caps) { + gst_query_set_caps_result (query, demux->priv->src_caps); + res = TRUE; + } else { + res = gst_pad_query_default (pad, parent, query); + } + break; + } + default: res = gst_pad_query_default (pad, parent, query); break; -- 1.7.9.5
taglist-not-send-to-down-stream-if-all-the-frame-cor.patch
From 68fa1b1425ad2c5f7c5013d0943153a8a6d0934e Mon Sep 17 00:00:00 2001 From: Jian Li <lj.qfy.sh@gmail.com> Date: Wed, 24 Sep 2014 17:21:02 +0800 Subject: [PATCH] taglist not send to down stream if all the frame corrupted https://bugzilla.gnome.org/show_bug.cgi?id=737246 Upstream status: Pending Signed-off-by: Jian Li <lj.qfy.sh@gmail.com> --- gst-libs/gst/audio/gstaudiodecoder.c | 9 +++++++++ gst-libs/gst/video/gstvideodecoder.c | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c index 3504678..3d69efe 100644 --- a/gst-libs/gst/audio/gstaudiodecoder.c +++ b/gst-libs/gst/audio/gstaudiodecoder.c @@ -2083,6 +2083,15 @@ gst_audio_decoder_sink_eventfunc (GstAudioDecoder * dec, GstEvent * event) gst_audio_decoder_drain (dec); GST_AUDIO_DECODER_STREAM_UNLOCK (dec); + /* send taglist if no valid frame is decoded util EOS */ + if (dec->priv->taglist && dec->priv->taglist_changed) { + GST_DEBUG_OBJECT (dec, "codec tag %" GST_PTR_FORMAT, dec->priv->taglist); + if (!gst_tag_list_is_empty (dec->priv->taglist)) + gst_audio_decoder_push_event (dec, + gst_event_new_tag (gst_tag_list_ref (dec->priv->taglist))); + dec->priv->taglist_changed = FALSE; + } + /* Forward EOS because no buffer or serialized event will come after * EOS and nothing could trigger another _finish_frame() call. */ ret = gst_audio_decoder_push_event (dec, event); diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c index dd8abe3..d9bfe4d 100644 --- a/gst-libs/gst/video/gstvideodecoder.c +++ b/gst-libs/gst/video/gstvideodecoder.c @@ -1024,6 +1024,14 @@ gst_video_decoder_sink_event_default (GstVideoDecoder * decoder, * parent class' ::sink_event() until a later time. */ forward_immediate = TRUE; + + /* send taglist if no valid frame is decoded util EOS */ + if (decoder->priv->tags && decoder->priv->tags_changed) { + gst_video_decoder_push_event (decoder, + gst_event_new_tag (gst_tag_list_ref (decoder->priv->tags))); + decoder->priv->tags_changed = FALSE; + } + break; } case GST_EVENT_GAP: -- 1.7.9.5
subparse-avoid-false-negatives-dealing-with-UTF-8.patch
From cc5681e3d07023e8684c5da962c4fb5fcecfd385 Mon Sep 17 00:00:00 2001 From: "Reynaldo H. Verdejo Pinochet" <reynaldo@osg.samsung.com> Date: Fri, 28 Nov 2014 13:26:13 -0300 Subject: [PATCH] subparse: avoid false negatives dealing with UTF-8 g_utf8_validate() chokes at any NUL among max_len bytes so we should avoid passing null character terminators if present. Additionally, only part of the available data might be valid UTF-8. For example a byte at the end might be the start of a valid UTF-8 run (ie: d0) but not be a valid UTF-8 character by itself. In this case, we consume only the valid portion of the run. https://bugzilla.gnome.org/show_bug.cgi?id=740784 --- gst/subparse/gstsubparse.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/gst/subparse/gstsubparse.c b/gst/subparse/gstsubparse.c index 11b76c3..2719fd7 100644 --- a/gst/subparse/gstsubparse.c +++ b/gst/subparse/gstsubparse.c @@ -437,6 +437,9 @@ convert_encoding (GstSubParse * self, const gchar * str, gsize len, const gchar *encoding; GError *err = NULL; gchar *ret = NULL; + gsize nuls = 0; + gsize valid_utf8_len; + const gchar *invalid_utf8_start; *consumed = 0; @@ -457,11 +460,27 @@ convert_encoding (GstSubParse * self, const gchar * str, gsize len, /* Otherwise check if it's UTF8 */ if (self->valid_utf8) { - if (g_utf8_validate (str, len, NULL)) { + /* Trim NUL terminator(s) if present */ + while (len > 0 && str[len - 1] == '\0') { + len--; + nuls++; + } + + /* Consume whole byte run if all valid UTF-8 */ + if (g_utf8_validate (str, len, &invalid_utf8_start)) { GST_LOG_OBJECT (self, "valid UTF-8, no conversion needed"); - *consumed = len; + *consumed = len + nuls; return g_strndup (str, len); } + + /* Consume initial data as far as we have at least 1 valid code point */ + valid_utf8_len = invalid_utf8_start - str; + if (valid_utf8_len) { + GST_WARNING_OBJECT (self, "At least some of the data was invalid UTF-8"); + *consumed = valid_utf8_len; + return g_strndup (str, valid_utf8_len); + } + GST_INFO_OBJECT (self, "invalid UTF-8!"); self->valid_utf8 = FALSE; } -- 2.1.4
Re: GStreamer 1.0 #2300
Also tagged with one or more of these keywords: gstreamer, 1.0, openpli
DVB subtitles support in eServiceMP3/GStreamerStarted by DimitarCC, 17 Oct 2024 DVB, Subtitles, GStreamer |
|
|||
Change from openvix to openpli - lose existing hdd recordings?Started by xdoktor, 30 Dec 2023 openpli, openvix, hdd, recordings |
|
|||
Having Trouble While Installing This SoftwareStarted by CharleyDavis, 27 Jun 2023 OpenPLi |
|
|||
Faild to flash or update OPENPLIStarted by dede_one, 8 Oct 2022 openpli |
|
|||
hd+ funktioneret nichtStarted by JeppeG, 29 Sep 2022 Vu+, hd+, oscam, openpli |
|
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users