Re: GStreamer 1.0 #281
Posted 11 November 2014 - 22:37
A new version of bbappends coming soon.
1. GStreamer updated to 1.4.4
2. bbappends now build some missing gstreamer plugins
3. fixes for divx3 and xvid
Thanks @mx3L and @betacentauri
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916
Re: GStreamer 1.0 #282
Posted 12 November 2014 - 07:45
It includes the following:
1. GStreamer 1.4.4
2. fix for divx3 and xvid
3. build missing plugins (only cdxaparse missing because is not ported to 1.0 yet)
4. fix for librtmp blocking on send operations timeout (SO_SNDTIMEO)
5. fix for rtmp seek
You can find information how to use gstreamer1.0v4.tar.gz at #143,#125 (simply extract on meta-local/recipes-local and change MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS to GStreamer 1.0 dvbmediasink).
Attached Files
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916
Re: GStreamer 1.0 #283
Re: GStreamer 1.0 #284
Posted 12 November 2014 - 16:02
I'll have a look on friday.
* 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 #285
Re: GStreamer 1.0 #286
Posted 12 November 2014 - 21:28
Which E2?
Seems not to be OpenPli E2: http://sourceforge.n...cemp3.cpp#l1162
You need to apply the patches made to servicemp3.cpp to your E2.
Re: GStreamer 1.0 #287
Posted 12 November 2014 - 22:39
@athoik
patch from bugreport 736190 breaks xvid unpacked playback(not smooth)
according to bugreport this is not avidemux issue, PTS should be provided only on keyframes:
http://cgit.freedesk...20e33c972f94a76
It looks like that decoder expects for streamtype 4 (mpeg4 part2 codec - unpacked) - PTS and for 13(divx3), 14(divx4 - not tested), 15(divx5) - DTS
I also tried to unpack packed divx5[parsed=(boolean)true], set streamtype 4 and undef PACK_BITSTREAM, divx5 started to work with PTS but not smoothly.
Re: GStreamer 1.0 #288
Posted 13 November 2014 - 00:09
Only works when avidemux-set-pts-on-all-buffers.patch is removed. This patch is almost same as in #273 just added use_dts to divx5.
About parsers, when mpeg4videoparse is in use, it will not add additional PTS it's still only on keyframes, just offset is different.
gst-launch-1.0 -v filesrc location='/media/net/DOMA/Test/unpacked_xvid.avi' ! avidemux ! fakesink silent=FALSE /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (6703 bytes, dts: 0:00:09.920000000, pts: none, duration: 0:00:00.040000000, offset: 248, offset_end: 249, flags: 00002000 delta-unit ) 0x76602840 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (2410 bytes, dts: 0:00:09.960000000, pts: none, duration: 0:00:00.040000000, offset: 249, offset_end: 250, flags: 00002000 delta-unit ) 0x76602980 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (11362 bytes, dts: 0:00:10.000000000, pts: 0:00:10.000000000, duration: 0:00:00.040000000, offset: 250, offset_end: 251, flags: 00000000 ) 0x76602c00 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8113 bytes, dts: 0:00:10.040000000, pts: none, duration: 0:00:00.040000000, offset: 251, offset_end: 252, flags: 00002000 delta-unit ) 0x76602d40 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (3364 bytes, dts: 0:00:10.080000000, pts: none, duration: 0:00:00.040000000, offset: 252, offset_end: 253, flags: 00002000 delta-unit ) 0x76602a20 .... /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (729 bytes, dts: 0:00:19.920000000, pts: none, duration: 0:00:00.040000000, offset: 498, offset_end: 499, flags: 00002000 delta-unit ) 0x76602b60 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (2310 bytes, dts: 0:00:19.960000000, pts: none, duration: 0:00:00.040000000, offset: 499, offset_end: 500, flags: 00002000 delta-unit ) 0x766028e0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8752 bytes, dts: 0:00:20.000000000, pts: 0:00:20.000000000, duration: 0:00:00.040000000, offset: 500, offset_end: 501, flags: 00000000 ) 0x76602840 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (4073 bytes, dts: 0:00:20.040000000, pts: none, duration: 0:00:00.040000000, offset: 501, offset_end: 502, flags: 00002000 delta-unit ) 0x76602980 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1070 bytes, dts: 0:00:20.080000000, pts: none, duration: 0:00:00.040000000, offset: 502, offset_end: 503, flags: 00002000 delta-unit ) 0x76602c00
gst-launch-1.0 -v filesrc location='/media/net/DOMA/Test/unpacked_xvid.avi' ! avidemux ! mpeg4videoparse ! fakesink silent=FALSE /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (6703 bytes, dts: 0:00:09.920000000, pts: none, duration: 0:00:00.040000000, offset: 546684, offset_end: -1, flags: 00002000 delta-unit ) 0x76502b60 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (2410 bytes, dts: 0:00:09.960000000, pts: none, duration: 0:00:00.040000000, offset: 553387, offset_end: -1, flags: 00002000 delta-unit ) 0x765028e0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (11362 bytes, dts: 0:00:10.000000000, pts: 0:00:10.000000000, duration: 0:00:00.040000000, offset: 555797, offset_end: -1, flags: 00000000 ) 0x76502980 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8113 bytes, dts: 0:00:10.040000000, pts: none, duration: 0:00:00.040000000, offset: 567159, offset_end: -1, flags: 00002000 delta-unit ) 0x76502de0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (3364 bytes, dts: 0:00:10.080000000, pts: none, duration: 0:00:00.040000000, offset: 575272, offset_end: -1, flags: 00002000 delta-unit ) 0x76502840 ... /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (729 bytes, dts: 0:00:19.920000000, pts: none, duration: 0:00:00.040000000, offset: 1408191, offset_end: -1, flags: 00002000 delta-unit ) 0x76502980 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (2310 bytes, dts: 0:00:19.960000000, pts: none, duration: 0:00:00.040000000, offset: 1408920, offset_end: -1, flags: 00002000 delta-unit ) 0x76502de0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8752 bytes, dts: 0:00:20.000000000, pts: 0:00:20.000000000, duration: 0:00:00.040000000, offset: 1411230, offset_end: -1, flags: 00000000 ) 0x76502840 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (4073 bytes, dts: 0:00:20.040000000, pts: none, duration: 0:00:00.040000000, offset: 1419982, offset_end: -1, flags: 00002000 delta-unit ) 0x76502c00 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1070 bytes, dts: 0:00:20.080000000, pts: none, duration: 0:00:00.040000000, offset: 1424055, offset_end: -1, flags: 00002000 delta-unit ) 0x76502d40
So PTS=DTS for every frame doesn't work, since decoder expects on streamtype 4 only PTS on keyframes.
Attached Files
Re: GStreamer 1.0 #289
Posted 13 November 2014 - 10:12
Uploaded some test samples:
divx3(avi) - https://dl.dropboxus...60017/divx3.avi
divx4 simple profile(avi) - https://dl.dropboxus...017/divx4_S.avi
divx5 unpacked profile not set(avi) - https://dl.dropboxus...x5_unpacked.avi
divx5 packed profile not set(avi) - https://dl.dropboxus...ivx5_packed.avi
xvid unpacked advanced simple profile(avi) - https://dl.dropboxus...unpacked_AS.avi
xvid unpacked advanced simple profile(mp4) - https://dl.dropboxus...unpacked_AS.mp4
xvid packed advanced simple profile(avi) - https://dl.dropboxus...d_packed_AS.avi
xvid packed advanced simple profile(avi) (2) - https://dl.dropboxus...packed_AS_2.avi
xvid packed advanced simple profile(avi) (3) - https://dl.dropboxus...packed_AS_3.avi
et4000(bcm7358) with 0001-dvbvideosink-use-DTS-for-divx3-and-divx5.patch - everything works
et6500(bcm7413) with 0001-dvbvideosink-use-DTS-for-divx3-and-divx5.patch - "divx4 simple profile" and "xvid packed advanced simple profile (2)" doesn't work (on gst 0.10 xvid packed AS (2) doesn't work as well, divx4 on gst0.10 not tested)
Edited by mx3L, 13 November 2014 - 10:16.
Re: GStreamer 1.0 #290
Posted 13 November 2014 - 17:48
@mx3L, is there a reason that use_dts for divx5 is enabled only when PACK_UNPACKED_XVID_DIVX5_BITSTREAM?
#ifdef PACK_UNPACKED_XVID_DIVX5_BITSTREAM self->must_pack_bitstream = TRUE; #if GST_VERSION_MAJOR >= 1 self->use_dts = TRUE; #endif #endif
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916
Re: GStreamer 1.0 #291
Re: GStreamer 1.0 #292
Posted 13 November 2014 - 22:43
diff --git a/gstdvbvideosink.c b/gstdvbvideosink.c index 11bf76f..f84c5e3 100755 --- a/gstdvbvideosink.c +++ b/gstdvbvideosink.c @@ -76,7 +76,7 @@ #include <gst/gst.h> #include <gst/base/gstbasesink.h> -#define PACK_UNPACKED_XVID_DIVX5_BITSTREAM +#undef PACK_UNPACKED_XVID_DIVX5_BITSTREAM #include "common.h" #include "gstdvbvideosink.h" @@ -198,14 +198,22 @@ GST_STATIC_PAD_TEMPLATE ( #else VIDEO_CAPS #endif - ", mspegversion = (int) 43; " + ", msmpegversion = (int) 43; " "video/x-divx, " #ifdef HAVE_LIMITED_MPEG4V2 MPEG4V2_LIMITED_CAPS #else VIDEO_CAPS #endif - ", divxversion = (int) [ 3, 5 ]; " + ", divxversion = (int) 3; " + "video/x-divx, " +#ifdef HAVE_LIMITED_MPEG4V2 + MPEG4V2_LIMITED_CAPS +#else + VIDEO_CAPS +#endif + ", parsed = (boolean) true " + ", divxversion = (int) [ 4, 6 ]; " "video/x-xvid, " #ifdef HAVE_LIMITED_MPEG4V2 MPEG4V2_LIMITED_CAPS @@ -1513,7 +1521,7 @@ static gboolean gst_dvbvideosink_set_caps(GstBaseSink *basesink, GstCaps *caps) #endif } break; - case 4: + case 44: streamtype = 14; self->codec_type = CT_DIVX4; #if GST_VERSION_MAJOR >= 1 @@ -1530,14 +1538,16 @@ static gboolean gst_dvbvideosink_set_caps(GstBaseSink *basesink, GstCaps *caps) break; case 6: case 5: - streamtype = 15; + case 4: + streamtype = 4; + self->codec_type = CT_MPEG4_PART2; #if GST_VERSION_MAJOR >= 1 self->use_dts = TRUE; #endif #ifdef PACK_UNPACKED_XVID_DIVX5_BITSTREAM self->must_pack_bitstream = TRUE; #endif - GST_INFO_OBJECT (self, "MIMETYPE video/x-divx vers. 5 -> VIDEO_SET_STREAMTYPE, 15"); + GST_INFO_OBJECT (self, "MIMETYPE video/x-divx vers. %d -> VIDEO_SET_STREAMTYPE, 4", divxversion); break; default: GST_ELEMENT_ERROR (self, STREAM, FORMAT, (NULL), ("unhandled divx version %i", divxversion));1. divx3 cannot be parsed so we need to handle this alone
2. divx4,5,6 are mpeg4 (although divx4 is very basic mpeg4) so we are using streamtype = 4
Attached Files
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916
Re: GStreamer 1.0 #293
Re: GStreamer 1.0 #294
Posted 14 November 2014 - 12:26
Because we writing mpeg4 in hardware drivers and most probably doesn't like dts.
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916
Re: GStreamer 1.0 #295
Posted 14 November 2014 - 12:47
If B frames are present, the decoder actually MUST have DTS (and PTS) to be able to decode them at the right moment. That is exactly the problem with B frames in an avi container, avi cannot store (implicit or explicit) DTS.
The problem is (as I said before) is that the "de-packaging" of the frames must also calculate the correct DTS for all frames having been packed. That exactly explains why some video "stutter", either the PTS or the DTS isn't calculated correctly (or simply not calculated at all).
I think either gstreamer must do the de-packaging all by itself (if it can), or it must be handled entirely by enigma2, in case enigma2 must calculate the correct PTS and DTS value for each frame. They may need no be added to each PES packet as pieterg suggests, as long as the packets are perfectly sequentual (e.g. I P P P P I P P P etc.). As soon as B frames appear, the DTS must be supplied.
So I think you're going to have a hell of a job making this fully work (or you may find a feature in gstreamer that does it for you...)
* 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 #296
Posted 14 November 2014 - 13:15
Here is what the mpeg4videoparser does:
gst-launch-1.0 -v filesrc location=/media/usb/mx3L/divx5_packed.avi ! avidemux ! mpeg4videoparse ! fakesink silent=FALSE dump=TRUE | grep "bytes" -A1 | more /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (5756 bytes, dts: 0:00:00.000000000, pts: 0:00:00.000000000, duration: 0:00:00.040000000, offset: 0, offset_end: -1, flags: 00000040 discont ) 0x76702850 00000000 (0x76709150): 00 00 01 00 00 00 01 20 08 c8 0d 40 00 57 b3 c0 ....... ...@.W.. -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (788 bytes, dts: 0:00:00.040000000, pts: none, duration: 0:00:00.040000000, offset: 5756, offset_end: -1, flags: 00002000 delta-unit ) 0x76702cb0 00000000 (0x7670b050): 00 00 01 b6 51 2c 18 19 bf be fb ef be fe fb ef ....Q,.......... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (754 bytes, dts: 0:00:00.080000000, pts: none, duration: 0:00:00.040000000, offset: 6544, offset_end: -1, flags: 00002000 delta-unit ) 0x76702990 00000000 (0x7670b364): 00 00 01 b6 90 96 18 4c 88 e8 e8 e8 e8 e8 e8 e8 .......L........ -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8 bytes, dts: 0:00:00.080000000, pts: none, duration: 0:00:00.040000000, offset: 7298, offset_end: -1, flags: 00002000 delta-unit ) 0x76702850 00000000 (0x76701d90): 00 00 01 b6 51 2c 13 7f ....Q,.. /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (531 bytes, dts: 0:00:00.120000000, pts: none, duration: 0:00:00.040000000, offset: 7306, offset_end: -1, flags: 00002000 delta-unit ) 0x76702d50 00000000 (0x76712148): 00 00 01 b6 52 58 1c 19 bf be a6 30 30 fb eb 63 ....RX.....00..c -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (334 bytes, dts: 0:00:00.160000000, pts: none, duration: 0:00:00.040000000, offset: 7837, offset_end: -1, flags: 00002000 delta-unit ) 0x76702850 00000000 (0x7671235b): 00 00 01 b6 91 c2 18 43 68 e0 88 d0 8a c1 14 c6 .......Ch....... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8 bytes, dts: 0:00:00.160000000, pts: none, duration: 0:00:00.040000000, offset: 8171, offset_end: -1, flags: 00002000 delta-unit ) 0x76702df0 00000000 (0x76701df0): 00 00 01 b6 52 58 13 7f ....RX.. /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (589 bytes, dts: 0:00:00.200000000, pts: none, duration: 0:00:00.040000000, offset: 8179, offset_end: -1, flags: 00002000 delta-unit ) 0x76702b70 00000000 (0x767140b0): 00 00 01 b6 52 ee 18 15 75 b0 1e 15 19 8f 91 13 ....R...u....... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (534 bytes, dts: 0:00:00.240000000, pts: none, duration: 0:00:00.040000000, offset: 8768, offset_end: -1, flags: 00002000 delta-unit ) 0x76702c10 00000000 (0x76716070): 00 00 01 b6 53 84 18 14 f8 c5 bc e1 e1 b0 d5 bd ....S........... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (562 bytes, dts: 0:00:00.280000000, pts: none, duration: 0:00:00.040000000, offset: 9302, offset_end: -1, flags: 00002000 delta-unit ) 0x76702d50 00000000 (0x7673a1c8): 00 00 01 b6 54 1a 18 14 ff fe 2f 7d e0 8b ed ef ....T...../}.... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (2208 bytes, dts: 0:00:00.320000000, pts: none, duration: 0:00:00.040000000, offset: 9864, offset_end: -1, flags: 00002000 delta-unit ) 0x76702cb0 00000000 (0x7670b1e0): 00 00 01 b6 55 46 18 10 b8 ab 66 d9 1d ef 0a 2d ....UF....f....- -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1068 bytes, dts: 0:00:00.360000000, pts: none, duration: 0:00:00.040000000, offset: 12072, offset_end: -1, flags: 00002000 delta-unit ) 0x76702d50 00000000 (0x7670ba80): 00 00 01 b6 94 b0 18 33 69 d7 d1 d3 a7 47 a7 4f .......3i....G.O -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8 bytes, dts: 0:00:00.360000000, pts: none, duration: 0:00:00.040000000, offset: 13140, offset_end: -1, flags: 00002000 delta-unit ) 0x76702df0 00000000 (0x76701e50): 00 00 01 b6 55 46 13 7f ....UF.. -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1902 bytes, dts: 0:00:00.400000000, pts: none, duration: 0:00:00.040000000, offset: 13148, offset_end: -1, flags: 00002000 delta-unit ) 0x76702cb0 00000000 (0x76738c78): 00 00 01 b6 56 72 18 11 3e e0 ba e0 b2 b6 42 34 ....Vr..>.....B4 -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1207 bytes, dts: 0:00:00.440000000, pts: none, duration: 0:00:00.040000000, offset: 15050, offset_end: -1, flags: 00002000 delta-unit ) 0x76702df0 00000000 (0x767393e6): 00 00 01 b6 95 dc 18 34 88 e8 8d d3 e9 e9 e9 d3 .......4........ gst-launch-1.0 -v filesrc location=/media/usb/mx3L/divx5_unpacked.avi ! avidemux ! mpeg4videoparse ! fakesink silent=FALSE dump=TRUE | grep "bytes" -A1 | more /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (5756 bytes, dts: 0:00:00.000000000, pts: 0:00:00.000000000, duration: 0:00:00.040000000, offset: 0, offset_end: -1, flags: 00000040 discont ) 0x76e02850 00000000 (0x76e09150): 00 00 01 00 00 00 01 20 08 c8 0d 40 00 57 b3 c0 ....... ...@.W.. -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (788 bytes, dts: 0:00:00.040000000, pts: none, duration: 0:00:00.040000000, offset: 5756, offset_end: -1, flags: 00002000 delta-unit ) 0x76e02c10 00000000 (0x76e0e0e0): 00 00 01 b6 51 2c 18 19 bf be fb ef be fe fb ef ....Q,.......... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (754 bytes, dts: 0:00:00.080000000, pts: none, duration: 0:00:00.040000000, offset: 6544, offset_end: -1, flags: 00002000 delta-unit ) 0x76e02df0 00000000 (0x76e141f0): 00 00 01 b6 90 96 18 4c 88 e8 e8 e8 e8 e8 e8 e8 .......L........ -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (531 bytes, dts: 0:00:00.120000000, pts: none, duration: 0:00:00.040000000, offset: 7298, offset_end: -1, flags: 00002000 delta-unit ) 0x76e02b70 00000000 (0x76e16078): 00 00 01 b6 52 58 1c 19 bf be a6 30 30 fb eb 63 ....RX.....00..c -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (334 bytes, dts: 0:00:00.160000000, pts: none, duration: 0:00:00.040000000, offset: 7829, offset_end: -1, flags: 00002000 delta-unit ) 0x76e02990 00000000 (0x76e180a0): 00 00 01 b6 91 c2 18 43 68 e0 88 d0 8a c1 14 c6 .......Ch....... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (589 bytes, dts: 0:00:00.200000000, pts: none, duration: 0:00:00.040000000, offset: 8163, offset_end: -1, flags: 00002000 delta-unit ) 0x76e02cb0 00000000 (0x76e3a060): 00 00 01 b6 52 ee 18 15 75 b0 1e 15 19 8f 91 13 ....R...u....... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (534 bytes, dts: 0:00:00.240000000, pts: none, duration: 0:00:00.040000000, offset: 8752, offset_end: -1, flags: 00002000 delta-unit ) 0x76e028f0 00000000 (0x76e3c050): 00 00 01 b6 53 84 18 14 f8 c5 bc e1 e1 b0 d5 bd ....S........... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (562 bytes, dts: 0:00:00.280000000, pts: none, duration: 0:00:00.040000000, offset: 9286, offset_end: -1, flags: 00002000 delta-unit ) 0x76e02d50 00000000 (0x76e3e058): 00 00 01 b6 54 1a 18 14 ff fe 2f 7d e0 8b ed ef ....T...../}.... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (2208 bytes, dts: 0:00:00.320000000, pts: none, duration: 0:00:00.040000000, offset: 9848, offset_end: -1, flags: 00002000 delta-unit ) 0x76e02850 00000000 (0x76e0b1e0): 00 00 01 b6 55 46 18 10 b8 ab 66 d9 1d ef 0a 2d ....UF....f....- -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1068 bytes, dts: 0:00:00.360000000, pts: none, duration: 0:00:00.040000000, offset: 12056, offset_end: -1, flags: 00002000 delta-unit ) 0x76e02c10 00000000 (0x76e0bb90): 00 00 01 b6 94 b0 18 33 69 d7 d1 d3 a7 47 a7 4f .......3i....G.O -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1902 bytes, dts: 0:00:00.400000000, pts: none, duration: 0:00:00.040000000, offset: 13124, offset_end: -1, flags: 00002000 delta-unit ) 0x76e02df0 00000000 (0x76e19108): 00 00 01 b6 56 72 18 11 3e e0 ba e0 b2 b6 42 34 ....Vr..>.....B4 -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1207 bytes, dts: 0:00:00.440000000, pts: none, duration: 0:00:00.040000000, offset: 15026, offset_end: -1, flags: 00002000 delta-unit ) 0x76e02b70 00000000 (0x76e199f8): 00 00 01 b6 95 dc 18 34 88 e8 8d d3 e9 e9 e9 d3 .......4........Here is the same without mpeg4videoparser:
gst-launch-1.0 -v filesrc location=/media/usb/mx3L/divx5_packed.avi ! avidemux ! fakesink silent=FALSE dump=TRUE | grep "bytes " -A1 | more /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (5756 bytes, dts: 0:00:00.000000000, pts: 0:00:00.000000000, duration: 0:00:00.040000000, offset: 0, offset_end: 1, flags: 00000040 discont ) 0x76a02830 New clock: GstSystemClock -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1542 bytes, dts: 0:00:00.040000000, pts: none, duration: 0:00:00.040000000, offset: 1, offset_end: 2, flags: 00002000 delta-unit ) 0x76a02a10 00000000 (0x76a0a8f0): 00 00 01 b6 51 2c 18 19 bf be fb ef be fe fb ef ....Q,.......... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8 bytes, dts: 0:00:00.080000000, pts: none, duration: 0:00:00.040000000, offset: 2, offset_end: 3, flags: 00002000 delta-unit ) 0x76a02bf0 00000000 (0x76a01d70): 00 00 01 b6 51 2c 13 7f ....Q,.. /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (865 bytes, dts: 0:00:00.120000000, pts: none, duration: 0:00:00.040000000, offset: 3, offset_end: 4, flags: 00002000 delta-unit ) 0x76a02d30 00000000 (0x76a0e118): 00 00 01 b6 52 58 1c 19 bf be a6 30 30 fb eb 63 ....RX.....00..c -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8 bytes, dts: 0:00:00.160000000, pts: none, duration: 0:00:00.040000000, offset: 4, offset_end: 5, flags: 00002000 delta-unit ) 0x76a02dd0 00000000 (0x76a01dd0): 00 00 01 b6 52 58 13 7f ....RX.. /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (589 bytes, dts: 0:00:00.200000000, pts: none, duration: 0:00:00.040000000, offset: 5, offset_end: 6, flags: 00002000 delta-unit ) 0x76a02c90 00000000 (0x76a10080): 00 00 01 b6 52 ee 18 15 75 b0 1e 15 19 8f 91 13 ....R...u....... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (534 bytes, dts: 0:00:00.240000000, pts: none, duration: 0:00:00.040000000, offset: 6, offset_end: 7, flags: 00002000 delta-unit ) 0x76a02970 00000000 (0x76a12078): 00 00 01 b6 53 84 18 14 f8 c5 bc e1 e1 b0 d5 bd ....S........... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (562 bytes, dts: 0:00:00.280000000, pts: none, duration: 0:00:00.040000000, offset: 7, offset_end: 8, flags: 00002000 delta-unit ) 0x76a02b50 00000000 (0x76a14198): 00 00 01 b6 54 1a 18 14 ff fe 2f 7d e0 8b ed ef ....T...../}.... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (3276 bytes, dts: 0:00:00.320000000, pts: none, duration: 0:00:00.040000000, offset: 8, offset_end: 9, flags: 00002000 delta-unit ) 0x76a028d0 00000000 (0x76a09108): 00 00 01 b6 55 46 18 10 b8 ab 66 d9 1d ef 0a 2d ....UF....f....- -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8 bytes, dts: 0:00:00.360000000, pts: none, duration: 0:00:00.040000000, offset: 9, offset_end: 10, flags: 00002000 delta-unit ) 0x76a02830 00000000 (0x76a01e30): 00 00 01 b6 55 46 13 7f ....UF.. /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (3109 bytes, dts: 0:00:00.400000000, pts: none, duration: 0:00:00.040000000, offset: 10, offset_end: 11, flags: 00002000 delta-unit ) 0x76a02a10 00000000 (0x76a09108): 00 00 01 b6 56 72 18 11 3e e0 ba e0 b2 b6 42 34 ....Vr..>.....B4 -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8 bytes, dts: 0:00:00.440000000, pts: none, duration: 0:00:00.040000000, offset: 11, offset_end: 12, flags: 00002000 delta-unit ) 0x76a02bf0 00000000 (0x76a01e90): 00 00 01 b6 56 72 13 7f ....Vr.. /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1185 bytes, dts: 0:00:00.480000000, pts: none, duration: 0:00:00.040000000, offset: 12, offset_end: 13, flags: 00002000 delta-unit ) 0x76a02d30 00000000 (0x76a09108): 00 00 01 b6 57 08 18 11 f1 36 78 5d ad 9b 6b 7a ....W....6x]..kz -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1711 bytes, dts: 0:00:00.520000000, pts: none, duration: 0:00:00.040000000, offset: 13, offset_end: 14, flags: 00002000 delta-unit ) 0x76a02dd0 00000000 (0x76a096b8): 00 00 01 b6 57 9e 18 11 f0 a3 65 ef 5c 62 7b 6c ....W.....e.\b{l -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (4991 bytes, dts: 0:00:00.560000000, pts: none, duration: 0:00:00.040000000, offset: 14, offset_end: 15, flags: 00002000 delta-unit ) 0x76a02c90 00000000 (0x76a09dc0): 00 00 01 b6 58 ca 1c 11 b9 57 1d 5b 78 e9 77 90 ....X....W.[x.w. -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (8 bytes, dts: 0:00:00.600000000, pts: none, duration: 0:00:00.040000000, offset: 15, offset_end: 16, flags: 00002000 delta-unit ) 0x76a02970 00000000 (0x76a01ef0): 00 00 01 b6 58 ca 13 7f ....X... gst-launch-1.0 -v filesrc location=/media/usb/mx3L/divx5_unpacked.avi ! avidemux ! fakesink silent=FALSE dump=TRUE | grep "bytes" -A1 | more /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (5756 bytes, dts: 0:00:00.000000000, pts: 0:00:00.000000000, duration: 0:00:00.040000000, offset: 0, offset_end: 1, flags: 00000040 discont ) 0x76d02830 00000000 (0x76d090f0): 00 00 01 00 00 00 01 20 08 c8 0d 40 00 57 b3 c0 ....... ...@.W.. -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (788 bytes, dts: 0:00:00.040000000, pts: none, duration: 0:00:00.040000000, offset: 1, offset_end: 2, flags: 00002000 delta-unit ) 0x76d02a10 00000000 (0x76d0e0d8): 00 00 01 b6 51 2c 18 19 bf be fb ef be fe fb ef ....Q,.......... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (754 bytes, dts: 0:00:00.080000000, pts: none, duration: 0:00:00.040000000, offset: 2, offset_end: 3, flags: 00002000 delta-unit ) 0x76d02bf0 00000000 (0x76d101c0): 00 00 01 b6 90 96 18 4c 88 e8 e8 e8 e8 e8 e8 e8 .......L........ -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (531 bytes, dts: 0:00:00.120000000, pts: none, duration: 0:00:00.040000000, offset: 3, offset_end: 4, flags: 00002000 delta-unit ) 0x76d02d30 00000000 (0x76d120e8): 00 00 01 b6 52 58 1c 19 bf be a6 30 30 fb eb 63 ....RX.....00..c -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (334 bytes, dts: 0:00:00.160000000, pts: none, duration: 0:00:00.040000000, offset: 4, offset_end: 5, flags: 00002000 delta-unit ) 0x76d02dd0 00000000 (0x76d0a070): 00 00 01 b6 91 c2 18 43 68 e0 88 d0 8a c1 14 c6 .......Ch....... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (589 bytes, dts: 0:00:00.200000000, pts: none, duration: 0:00:00.040000000, offset: 5, offset_end: 6, flags: 00002000 delta-unit ) 0x76d02c90 00000000 (0x76d14098): 00 00 01 b6 52 ee 18 15 75 b0 1e 15 19 8f 91 13 ....R...u....... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (534 bytes, dts: 0:00:00.240000000, pts: none, duration: 0:00:00.040000000, offset: 6, offset_end: 7, flags: 00002000 delta-unit ) 0x76d02970 00000000 (0x76d16058): 00 00 01 b6 53 84 18 14 f8 c5 bc e1 e1 b0 d5 bd ....S........... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (562 bytes, dts: 0:00:00.280000000, pts: none, duration: 0:00:00.040000000, offset: 7, offset_end: 8, flags: 00002000 delta-unit ) 0x76d02b50 00000000 (0x76d3a1b0): 00 00 01 b6 54 1a 18 14 ff fe 2f 7d e0 8b ed ef ....T...../}.... -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (2208 bytes, dts: 0:00:00.320000000, pts: none, duration: 0:00:00.040000000, offset: 8, offset_end: 9, flags: 00002000 delta-unit ) 0x76d028d0 00000000 (0x76d09108): 00 00 01 b6 55 46 18 10 b8 ab 66 d9 1d ef 0a 2d ....UF....f....- -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1068 bytes, dts: 0:00:00.360000000, pts: none, duration: 0:00:00.040000000, offset: 9, offset_end: 10, flags: 00002000 delta-unit ) 0x76d02830 00000000 (0x76d09ab8): 00 00 01 b6 94 b0 18 33 69 d7 d1 d3 a7 47 a7 4f .......3i....G.O -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1902 bytes, dts: 0:00:00.400000000, pts: none, duration: 0:00:00.040000000, offset: 10, offset_end: 11, flags: 00002000 delta-unit ) 0x76d02a10 00000000 (0x76d09050): 00 00 01 b6 56 72 18 11 3e e0 ba e0 b2 b6 42 34 ....Vr..>.....B4 -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1207 bytes, dts: 0:00:00.440000000, pts: none, duration: 0:00:00.040000000, offset: 11, offset_end: 12, flags: 00002000 delta-unit ) 0x76d02bf0 00000000 (0x76d098d0): 00 00 01 b6 95 dc 18 34 88 e8 8d d3 e9 e9 e9 d3 .......4........ -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1185 bytes, dts: 0:00:00.480000000, pts: none, duration: 0:00:00.040000000, offset: 12, offset_end: 13, flags: 00002000 delta-unit ) 0x76d02d30 00000000 (0x76d09050): 00 00 01 b6 57 08 18 11 f1 36 78 5d ad 9b 6b 7a ....W....6x]..kz -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1711 bytes, dts: 0:00:00.520000000, pts: none, duration: 0:00:00.040000000, offset: 13, offset_end: 14, flags: 00002000 delta-unit ) 0x76d02dd0 00000000 (0x76d09600): 00 00 01 b6 57 9e 18 11 f0 a3 65 ef 5c 62 7b 6c ....W.....e.\b{l -- /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (3449 bytes, dts: 0:00:00.560000000, pts: none, duration: 0:00:00.040000000, offset: 14, offset_end: 15, flags: 00002000 delta-unit ) 0x76d02c90 00000000 (0x76d0b050): 00 00 01 b6 58 ca 1c 11 b9 57 1d 5b 78 e9 77 90 ....X....W.[x.w.So it seems that mpeg4videoparser unpacks packed bistream, right? But if frames are correct can't tell, someone to help here? (gst-launch-1.0 -v filesrc location=file.avi ! avidemux ! fakesink silent=FALSE dump=TRUE can really help see what we get...)
The problem with xvid was the N-VOP's, but after we excluded them it worked.
Edited by athoik, 14 November 2014 - 13:17.
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916
Re: GStreamer 1.0 #297
Posted 14 November 2014 - 15:16
I think you'll need a tool to dump the frames metadata (including type of frame (I/P/B) and timestamps) to be sure. I used to do that with avidemux2 (actually a video editor, but it also shows frame type), but there might be better tools. The I and P frames should have a DTS that only have a small offset from the PTS, or should have no DTS at all, the B frames should have a distinct DTS, depending on how B frames are used in a row (I am not sure with divx, it may not even be more than one, but mpeg4-vc allows several).
It's quite of weird that this used to work before (right?), so I'd guess some part (the mpeg4 parser?) should do the correct extraction of the packed frames? Or is this normally tackled by the software decoder (in which case we have a problem...)
* 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 #298
Posted 14 November 2014 - 15:21
@athoik
I already tried it, I was mentioning it in #287 post. I was thinking exactly as you, that divx4,5 is mpeg4 part 2 codec like xvid, so we can do exactly as what we did for xvid - unpack(mpeg4videoparse), undef packing and set streamtype 4 and it should work. Problem is in unpacking packed divx5, since unpacked divx5 is working smoothly with PTS, so it should be solvable as in xvid's case.
@Erik
As you can see in #289 post, divx3 + every mpeg4-part2 video with b-frames providing only PTS, works. Does it mean that decoder is able to retrieve/compute DTS from provided input? I think so, since as you mentioned, when there are b-frames, DTS is essential. As it is with latest patch 0001-dvbvideosink-use-DTS-for-divx3-and-divx5.patch, it appears to work properly. I think that @athoik is just trying to find better solution, since all mpeg4 part2 codecs should work with streamtype 4 and there should be no need for telling decoder that it has divx4,5 or xvid on the input. It would be better generic solution, also it would cleanup lot of code.
I'm still not sure if unpacking by mpeg4videoparse is neccesary, since decoder can handle packed streams, we just have an issue with detecting xvid(easy fix as I already proposed but rejected by gstreamer). In case there is performance drop by mpeg4videoparse, we should re-consider it. I will make a comparison.
Edited by mx3L, 14 November 2014 - 15:22.
Re: GStreamer 1.0 #299
Posted 14 November 2014 - 15:32
Could you please check if the following patch fixes avi files with xvid codec (packed / unpacked)?
Subject: [PATCH] dvbvideosink: add profile to caps and ignore dummy packed B-Frames diff --git a/gstdvbvideosink.c b/gstdvbvideosink.c index d8d5635..37b3ac0 100755 --- a/gstdvbvideosink.c +++ b/gstdvbvideosink.c @@ -176,12 +176,14 @@ GST_STATIC_PAD_TEMPLATE ( GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ( - "video/mpeg, " #ifdef HAVE_MPEG4 - "mpegversion = (int) { 1, 2, 4 }, " -#else - "mpegversion = (int) { 1, 2 }, " + "video/mpeg, " + "mpegversion = (int) 4, " + "profile = (string) { simple, advanced-simple }, " + VIDEO_CAPS "; " #endif + "video/mpeg, " + "mpegversion = (int) { 1, 2 }, " VIDEO_CAPS "; " #ifdef HAVE_H264 "video/x-h264, " @@ -815,6 +817,9 @@ static GstFlowReturn gst_dvbvideosink_render(GstBaseSink *sink, GstBuffer *buffe } } #endif + /* remove dummy packed B-Frame */ + if (self->codec_type == CT_MPEG4_PART2 && data_len <= 7) + goto ok; pes_header[0] = 0; pes_header[1] = 0; --PS. Try without DTS & PTS patch in PES header
Applied.
* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.
Re: GStreamer 1.0 #300
Posted 14 November 2014 - 15:49
@mx3L,
Correct, this is what GStreamer devs where telling again and again, xvid is mpeg4 part2 why you need special handling? So they rejected patch that adds format in caps (like the wmv does). Here is the bug: https://bugzilla.gno...g.cgi?id=739196
So every mpeg4 part2 codec must/should handled by streamtype = 4.
But unfortunately hardware doesn't like it, especially with packed bitstream.
After mpeg4videoparser plugged-in packed streams are converted to almost unpacked bitstream (there are some dummy frames still left behind that confuse hardware drivers) Here is the bug: https://bugzilla.gno...g.cgi?id=740015. Although there is already a workaround applied (we just omit them).
Finally there is a change in GStreamer 1.0, we have to choose between PTS and DTS.
What you think we should do? Improve dvbmediasik and try to fix GStreamer issues or keep 5 year old bugs features like pack unpacked bitstream?
Edited by athoik, 14 November 2014 - 15:50.
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916
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 |
|
8 user(s) are reading this topic
0 members, 6 guests, 0 anonymous users
-
Bing (2)