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 #1641 gorski

  • Senior Member
  • 1,699 posts

+46
Good

Posted 19 August 2015 - 09:58

Ah thanks guys,

 

Well I'll switch over all receivers to christopher's sink for the next build.

I was already using it for all dreambox receivers (and my experimental spark7162 build), where I've never experienced troubles with pause/unpause and seeking.

Now with my new not-allowed-to-talk-about unsupported receiver I'm having troubles resuming from a paused state using the default mediasink from pli.

 

However I'll add in the servicemp3 patch from mx3L as well, just for testing purposes :-)

 

Thank you kindly for both STBs you (did not) mention!!! :D :D :D I have both and appreciate this lots and lots!!! :)

Although, ffmepg in STi 7162 really has better results, due to the very limited memory etc.

 

Keep up the great work, m8!!!


<span style='font-family: comic sans ms,cursive'>"Enlightenment is man's emergence from his self-incurred immaturity. Immaturity is the inability to use one's own understanding without the guidance of another. This immaturity is self-incurred if its cause is not lack of understanding, but lack of resolution and courage to use it without the guidance of another. The motto of enlightenment is therefore: Sapere aude! Have courage to use your own understanding!</span><br /> <br /><span style='font-family: comic sans ms,cursive'>Laziness and cowardice are the reasons why such a large proportion of men, even when nature has long emancipated them from alien guidance..." I. Kant, "Political writings" (1784)</span><br /> <br /><span style='font-family: comic sans ms,cursive'><a class='bbc_url' href='<a class='bbc_url' href='http://eserver.org/p...lightenment.txt'>http://eserver.org/p...ent.txt</a>'><a class='bbc_url' href='http://www.english.upenn.edu/~mgamer/Etexts/kant.html</a>'>http://www.english.upenn.edu/~mgamer/Etexts/kant.html</a></a> - the jolly text on Enlightenment, at the basis of Modernity...</span>

Re: GStreamer 1.0 #1642 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 19 August 2015 - 10:13

hmm, It looks like it's working because when you set self->playing to FALSE, then it's not possible to retrieve current position,

static gint64 gst_dvbaudiosink_get_decoder_time(GstDVBAudioSink *self)
{
	gint64 cur = 0;
	if (self->fd < 0 || !self->playing || !self->pts_written) return GST_CLOCK_TIME_NONE;

	ioctl(self->fd, AUDIO_GET_PTS, &cur);
	if (cur)
	{
		self->lastpts = cur;
	}
	else
	{
		cur = self->lastpts;
	}
	cur *= 11111;

	return cur - self->timestamp_offset;
}

which in effect makes trickSeek in servicemp3 do just unpausing pipeline without flushing seek, since it cannot retrieve valid position.



Re: GStreamer 1.0 #1643 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 19 August 2015 - 12:09

hmm, It looks like it's working because when you set self->playing to FALSE, then it's not possible to retrieve current position,

static gint64 gst_dvbaudiosink_get_decoder_time(GstDVBAudioSink *self)
{
	gint64 cur = 0;
	if (self->fd < 0 || !self->playing || !self->pts_written) return GST_CLOCK_TIME_NONE;

	ioctl(self->fd, AUDIO_GET_PTS, &cur);
	if (cur)
	{
		self->lastpts = cur;
	}
	else
	{
		cur = self->lastpts;
	}
	cur *= 11111;

	return cur - self->timestamp_offset;
}

which in effect makes trickSeek in servicemp3 do just unpausing pipeline without flushing seek, since it cannot retrieve valid position.

Indeed there is no seek needed or retrieval off position when you pause.

 

In case off video using gstreamer , When You go to pause We stop video and audio togheter. If You unpause , they are also all starting together. The pause wil pause dvbvideo,dvbaudio,videosink and audiosink and unpause also. There is no position needed. There is also no seek.

 

But if you jump between cuts (or chapters) < > we always send a seek followed by a flush from all dvbvideo,dvbaudio, audiosink,videosink



Re: GStreamer 1.0 #1644 mx3L

  • Senior Member
  • 616 posts

+79
Good

Posted 19 August 2015 - 14:51

But what about sources which will timeout? For example rtmpsrc which is used for rtmp streams will timeout after a while in paused state, so you have to seek to current position in order to unpause, otherwise you will get EOS.



Re: GStreamer 1.0 #1645 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 19 August 2015 - 15:52

But what about sources which will timeout? For example rtmpsrc which is used for rtmp streams will timeout after a while in paused state, so you have to seek to current position in order to unpause, otherwise you will get EOS.

For such sources , It's indeed not same as fix media such as an mkv or mv4 or ... movie.  For those it's possible that a new seek most be done. Then it must be aranged by the application, which means servicemp3.cpp in enigma2 case. It is not the mediasinks who should decide about that, they are basically running asynchrone.

 

Should there be an out of sink situation, user can always reselect the current audiostream (yellow button and press ok), this will trigger a resync of the media.


Edited by christophecvr, 19 August 2015 - 15:54.


Re: GStreamer 1.0 #1646 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 25 August 2015 - 16:08

Subject: [PATCH] meta-dream: Update Dreambox dvbmediasink to GStreamer 1.0

Updated Dreambox dvbmediasink to OpenPLi one with an extra patch to make it work for DMM boxes.
Patch dmm.patch has the minimum changes to make OpenPLi dvbmediasink work for DMM boxes.
Dtsdownmix is not required any more because OpenPLi dvbmediasink provides that.
Finally configuration files adjusted for OpenPLi usage.
@OpenPLi, please apply to gst-1 branch of openpli-oe-core.

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

  • PLi® Core member
  • 46,969 posts

+541
Excellent

Posted 25 August 2015 - 19:42

Hmmm, I don't like the #if 1 constructions, can you remove them?

 

Besides that, looks great, thanks!


* 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 #1648 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 25 August 2015 - 20:06

Hmmm, I don't like the #if 1 constructions, can you remove them?


Sure, here the patch with dmm.patch modified. #if 1 removed (and #else part of course).

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 #1649 Beeker

  • PLi® Contributor
  • 1,602 posts

+203
Excellent

Posted 25 August 2015 - 21:06

With gstreamer1.0-plugins-good 1.5.2 GIT head and so also with 1.5.90. I need this patch.

// Compilation fails on Uninitialized variable.So
// just initialeze the variable to make the compiler happy.
//
diff --git a/gst/rtp/gstrtph261pay.c b/gst/rtp/gstrtph261pay.c
index fede7f5..12baa55 100644
--- a/gst/rtp/gstrtph261pay.c
+++ b/gst/rtp/gstrtph261pay.c
@@ -862,7 +862,7 @@ gst_rtp_h261_packetize_and_push (GstRtpH261Pay * pay, const guint8 * bits,
       gst_rtp_buffer_calc_payload_len (GST_RTP_BASE_PAYLOAD_MTU (pay) -
       GST_RTP_H261_PAYLOAD_HEADER_LEN, 0, 0);
   guint startpos;
-  gint num_gobs;
+  gint num_gobs = 0;
   Gob gobs[MAX_NUM_GOB];
   Gob *gob;
   Macroblock last_mb_in_previous_packet = { 0 };

Perhaps there is a proper solution?

Attached Files


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 #1650 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 25 August 2015 - 21:14

With gstreamer1.0-plugins-good 1.5.2 GIT head and so also with 1.5.90. I need this patch.

// Compilation fails on Uninitialized variable.So
// just initialeze the variable to make the compiler happy.
//
diff --git a/gst/rtp/gstrtph261pay.c b/gst/rtp/gstrtph261pay.c
index fede7f5..12baa55 100644
--- a/gst/rtp/gstrtph261pay.c
+++ b/gst/rtp/gstrtph261pay.c
@@ -862,7 +862,7 @@ gst_rtp_h261_packetize_and_push (GstRtpH261Pay * pay, const guint8 * bits,
       gst_rtp_buffer_calc_payload_len (GST_RTP_BASE_PAYLOAD_MTU (pay) -
       GST_RTP_H261_PAYLOAD_HEADER_LEN, 0, 0);
   guint startpos;
-  gint num_gobs;
+  gint num_gobs = 0;
   Gob gobs[MAX_NUM_GOB];
   Gob *gob;
   Macroblock last_mb_in_previous_packet = { 0 };
Perhaps there is a proper solution?

Can you create a bug report on GStreamer bug-trucker. It would be nice if you could include also the error log.

http://gstreamer.freedesktop.org/bugs/
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 #1651 Erik Slagter

  • PLi® Core member
  • 46,969 posts

+541
Excellent

Posted 26 August 2015 - 17:25

Hmmm, I don't like the #if 1 constructions, can you remove them?


Sure, here the patch with dmm.patch modified. #if 1 removed (and #else part of course).

Applied, thanks!

* 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 #1652 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 31 August 2015 - 14:51

I've also switched to gstreamer master branch 1.5.90+gitAUTOINC+22443b2eed-r0 but I didn't need the 0001-fix-compile-error-261pay.patch ?

Edit, the patch is also not part of git yet... http://cgit.freedesk...gstrtph261pay.c


Edited by MastaG, 31 August 2015 - 14:53.


Re: GStreamer 1.0 #1653 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 31 August 2015 - 15:20

so it looks like the m3u8 hls fix made it into git in time.

also the dcaparse fix from betacentauri is also checked in.

I did apply the 0001-fix-compile-error-261pay.patch from beeker but it wasn't required for me.



Re: GStreamer 1.0 #1654 christophecvr

  • Senior Member
  • 3,131 posts

+140
Excellent

Posted 31 August 2015 - 16:52

 

With gstreamer1.0-plugins-good 1.5.2 GIT head and so also with 1.5.90. I need this patch.

// Compilation fails on Uninitialized variable.So
// just initialeze the variable to make the compiler happy.
//
diff --git a/gst/rtp/gstrtph261pay.c b/gst/rtp/gstrtph261pay.c
index fede7f5..12baa55 100644
--- a/gst/rtp/gstrtph261pay.c
+++ b/gst/rtp/gstrtph261pay.c
@@ -862,7 +862,7 @@ gst_rtp_h261_packetize_and_push (GstRtpH261Pay * pay, const guint8 * bits,
       gst_rtp_buffer_calc_payload_len (GST_RTP_BASE_PAYLOAD_MTU (pay) -
       GST_RTP_H261_PAYLOAD_HEADER_LEN, 0, 0);
   guint startpos;
-  gint num_gobs;
+  gint num_gobs = 0;
   Gob gobs[MAX_NUM_GOB];
   Gob *gob;
   Macroblock last_mb_in_previous_packet = { 0 };
Perhaps there is a proper solution?

Can you create a bug report on GStreamer bug-trucker. It would be nice if you could include also the error log.

http://gstreamer.freedesktop.org/bugs/

 

It's well a curious patch since normally the gint or int var's do not need to be initialised. But it's well good practice to initialize them (function based then)


Edited by christophecvr, 31 August 2015 - 16:52.


Re: GStreamer 1.0 #1655 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 4 September 2015 - 13:22

I've a question regarding the dm8000.

For some reason gstreamer1.0-libav head git (1.5.90) will use a newer version of ffmpeg (libav).

This version of libav will try to set the -mips32r2 cflag by default which will fail for the dm8000.

 

Now OpenEmbedded shows:

TUNE_FEATURES     = "o32 fpu-hard mips32"

Which will set the cflags: "-mel -mabi=32 -mhard-float -march=mips32"

 

So the dm8000 does feature an fpu right?

But it's cpu does not feature the mips32 r2 architecture since -mips32r2 will conflict with -march=32 (according to gcc).

 

Looking at the configure script for libav:

elif enabled mipsdspr1 || enabled mipsdspr2; then
        add_cflags "-mips32r2 -mfp32"
        add_asflags "-mips32r2 -mfp32"

So we have these configure flags available:

  --disable-mipsdspr1      disable MIPS DSP ASE R1 optimizations
  --disable-mipsdspr2      disable MIPS DSP ASE R2 optimizations

  --disable-mipsfpu        disable floating point MIPS optimizations

 

The first two will set -mips32r2 which will fail.

 

So I've changed the recipe a bit:

LIBAV_EXTRA_CONFIGURE_COMMON_ARG = "--target-os=linux \
  --cc='${CC}' --as='${CC}' --ld='${CC}' --nm='${NM}' --ar='${AR}' \
  --ranlib='${RANLIB}' \
  --enable-mipsfpu \
  --disable-mipsdspr1 \
  --disable-mipsdspr2 \
  ${GSTREAMER_1_0_DEBUG} \
  --cross-prefix='${HOST_PREFIX}'"

Edited by MastaG, 4 September 2015 - 13:24.


Re: GStreamer 1.0 #1656 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 5 September 2015 - 13:43


Looking at the configure script for libav:

elif enabled mipsdspr1 || enabled mipsdspr2; then
        add_cflags "-mips32r2 -mfp32"
        add_asflags "-mips32r2 -mfp32"

 

Where did you find above? Current OE-Core uses version 9.16 right? (openembedded-core/meta/recipes-multimedia/libav/libav_9.16.bb)


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 #1657 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 5 September 2015 - 14:07

No I'm using gstreamer1.0-libav master git, which seems to pull in its own libav which is a newer version compared to the one shipped with gstreamer1.0-libav 1.5.1.
I'm using gstreamer master branch for everything now which is at 1.5.90 feature freeze now bugfixing until 1.6.

Re: GStreamer 1.0 #1658 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 5 September 2015 - 14:40

No I'm using gstreamer1.0-libav master git, which seems to pull in its own libav which is a newer version compared to the one shipped with gstreamer1.0-libav 1.5.1.
I'm using gstreamer master branch for everything now which is at 1.5.90 feature freeze now bugfixing until 1.6.

 

Can you point me to the configure script for libav?


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 #1659 MastaG

  • Senior Member
  • 1,531 posts

+118
Excellent

Posted 5 September 2015 - 15:03

Yes it pulls in a fixed version: http://cgit.freedesk...e/gst-libs/ext#

It's this file: https://git.libav.or...b2d94f5;hb=HEAD

However you'll need version 15466db but I'm not so good with git.

 

Here's the recipe I'm using based on your git recipes:

gstreamer1.0-libav_git.bb

DEFAULT_PREFERENCE = "1"

include gstreamer1.0-libav.inc

LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                    file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \
                    file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \
                    file://gst-libs/ext/libav/LICENSE.md;md5=1fb9c7735a3b0438bc05de489a534ece \
                    file://gst-libs/ext/libav/COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                    file://gst-libs/ext/libav/COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
                    file://gst-libs/ext/libav/COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \
                    file://gst-libs/ext/libav/COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02"

SRC_URI = " \
    git://anongit.freedesktop.org/gstreamer/gst-libav;branch=master \
    file://0001-Disable-yasm-for-libav-when-disable-yasm.patch \
"

S = "${WORKDIR}/git"

SRCREV = "${AUTOREV}"
 
inherit gitpkgv
PV = "1.5.90+git${SRCPV}"
PKGV = "1.5.90+git${GITPKGV}"


LIBAV_EXTRA_CONFIGURE_COMMON_ARG = "--target-os=linux \
  --cc='${CC}' --as='${CC}' --ld='${CC}' --nm='${NM}' --ar='${AR}' \
  --ranlib='${RANLIB}' \
  ${@base_contains('TARGET_FPU', 'soft', ' --disable-mipsfpu', ' --enable-mipsfpu', d)} \
  --disable-mipsdspr1 \
  --disable-mipsdspr2 \
  ${GSTREAMER_1_0_DEBUG} \
  --cross-prefix='${HOST_PREFIX}'"

do_configure_prepend() {
    cd ${S}
    ./autogen.sh --noconfigure
    cd ${B}
}

 

It builds fine for dm800 (soft-fpu) and dm8000 (hard-fpu), but I haven't tried it yet.



Re: GStreamer 1.0 #1660 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 5 September 2015 - 15:11

I think they switch back to ffmpeg!
 
2015-08-15	libav: Update to n2.7.2	Sebastian Dröge	1	-0/+0
2015-07-01	Switch from libav v11.4 to ffmpeg n2.7.1	Sebastian Dröge	1	-0/+0
So the problem is in ffmpeg: http://git.videolan....e2530;hb=n2.7.2

PS. It might be good to open a ticket in ffmpeg: https://trac.ffmpeg.org/report

Edited by athoik, 5 September 2015 - 15:13.

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



1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users