After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 593165 - glimagesink bug decoding from ts
glimagesink bug decoding from ts
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-gl
git master
Other Linux
: Normal normal
: 0.10.2
Assigned To: Julien Isorce
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-08-26 13:52 UTC by Miquel Àngel Farré
Modified: 2010-05-11 09:19 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Miquel Àngel Farré 2009-08-26 13:52:57 UTC
Just testing this pipe, gstreamer crash:

miki@miki-laptop:~/gstreamer/git$ GST_DEBUG=gldisplay:3 gst-launch -v -m filesrc location=../dumps/itv.ts !  mpegtsdemux program-number="8442" ! queue ! mpeg2dec ! glupload ! glimagesink
Estableciendo el flujo a PAUSADO ...
El flujo se está PRECACHEANDO ...
Got message #9 from element "glimagesink0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #10 from element "glupload0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #11 from element "mpeg2dec0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #12 from element "queue0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #13 from element "mpegtsdemux0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #14 from element "filesrc0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #15 from element "pipeline0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
Got message #17 from element "glupload0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #18 from element "mpeg2dec0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #19 from pad "queue0:src" (stream-status): GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstQueue\)\ queue0", object=(GstTask)"\(GstTask\)\ task0";
Got message #20 from pad "queue0:src" (stream-status): GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstQueue\)\ queue0", object=(GstTask)"\(GstTask\)\ task0";
Got message #21 from element "queue0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #22 from element "mpegtsdemux0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #25 from pad "filesrc0:src" (stream-status): GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstFileSrc\)\ filesrc0", object=(GstTask)"\(GstTask\)\ task1";
Got message #26 from pad "filesrc0:src" (stream-status): GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstFileSrc\)\ filesrc0", object=(GstTask)"\(GstTask\)\ task1";
Got message #27 from element "filesrc0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
/GstPipeline:pipeline0/GstMpegTSDemux:mpegtsdemux0: pat-info = ((GValueArray*) 0x8fd0890)
/GstPipeline:pipeline0/GstMpegTSDemux:mpegtsdemux0: pmt-info = ((MpegTsPmtInfo*) 0x8febcc0)
Got message #60 from element "mpegtsdemux0" (tag): taglist, language-code=(string)eng, source-pad=(GstPad)"\(GstPad\)\ audio_024f";
Got message #75 from element "mpegtsdemux0" (tag): taglist, language-code=(string)eng, source-pad=(GstPad)"\(GstPad\)\ audio_0250";
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false
/GstPipeline:pipeline0/GstMpeg2dec:mpeg2dec0.GstPad:sink: caps = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false
/GstPipeline:pipeline0/GstMpeg2dec:mpeg2dec0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)544, height=(int)576, pixel-aspect-ratio=(fraction)32/17, framerate=(fraction)25/1, interlaced=(boolean)true
Got message #80 from element "filesrc0" (error): GstMessageError, gerror=(GstGError)NULL, debug=(string)"gstbasesrc.c\(2378\):\ gst_base_src_loop\ \(\):\ /GstPipeline:pipeline0/GstFileSrc:filesrc0:\012streaming\ task\ paused\,\ reason\ not-negotiated\ \(-4\)";
ERROR: desde el elemento /GstPipeline:pipeline0/GstFileSrc:filesrc0: Error del flujo interno de datos.
Información adicional de depurado:
gstbasesrc.c(2378): gst_base_src_loop (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
streaming task paused, reason not-negotiated (-4)
ERROR: El flujo no quiere precachearse.
Estableciendo pipeline a NULL...
/GstPipeline:pipeline0/GstMpeg2dec:mpeg2dec0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstMpeg2dec:mpeg2dec0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstMpegTSDemux:mpegtsdemux0.GstPad:video_024e: caps = NULL
/GstPipeline:pipeline0/GstMpegTSDemux:mpegtsdemux0.GstPad:audio_0250: caps = NULL
/GstPipeline:pipeline0/GstMpegTSDemux:mpegtsdemux0.GstPad:audio_024f: caps = NULL
/GstPipeline:pipeline0/GstMpegTSDemux:mpegtsdemux0.GstPad:dsmcc_un_08ba: caps = NULL
/GstPipeline:pipeline0/GstMpegTSDemux:mpegtsdemux0.GstPad:dsmcc_un_08b7: caps = NULL
/GstPipeline:pipeline0/GstMpegTSDemux:mpegtsdemux0.GstPad:dsmcc_un_08b8: caps = NULL
/GstPipeline:pipeline0/GstMpegTSDemux:mpegtsdemux0.GstPad:dsmcc_un_07ee: caps = NULL
Freeing pipeline ...
miki@miki-laptop:~/gstreamer/git$ 


Nevertheless, this pipe works:

miki@miki-laptop:~/gstreamer/git$ GST_DEBUG=gldisplay:3 gst-launch videotestsrc ! "video/x-raw-yuv, format=(fourcc)I420" ! glupload ! glimagesink
Estableciendo el flujo a PAUSADO ...
El flujo se está PRECACHEANDO ...
0:00:00.446396028 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:555:gst_gl_display_thread_create_context: gl window created
0:00:00.449498466 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:574:gst_gl_display_thread_create_context: GL_VERSION: 3.0.0 NVIDIA 180.44
0:00:00.449525634 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:575:gst_gl_display_thread_create_context: GLEW_VERSION: 1.5.0
0:00:00.449541209 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:578:gst_gl_display_thread_create_context: GL_SHADING_LANGUAGE_VERSION: 1.30 NVIDIA via Cg compiler
0:00:00.449554898 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:582:gst_gl_display_thread_create_context: GL_VENDOR: NVIDIA Corporation
0:00:00.449567819 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:583:gst_gl_display_thread_create_context: GL_RENDERER: GeForce 8400M GT/PCI/SSE2
0:00:00.449606860 14494  0x9add5d8 INFO               gldisplay gstgldisplay.c:2116:gst_gl_display_create_context: gl thread created
0:00:00.449915002 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:844:gst_gl_display_thread_init_upload: Context, ARB_fragment_shader supported: yes
0:00:00.449938538 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:2428:gst_gl_display_thread_init_upload_fbo: Context, EXT_framebuffer_object supported: yes
El flujo está precacheado ...
Estableciendo el flujo para REPRODUCCIÓN ...
New clock: GstSystemClock
0:00:00.639095587 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:2010:gst_gl_display_gldel_texture: one more sub texture pool inserted: 20971760 
0:00:00.639187498 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:2012:gst_gl_display_gldel_texture: nb sub texture pools: 1
^CCaught interrupt -- handling interrupt.
Interrumpir: parando el conducto ...
Execution ended after 14731341399 ns.
Estableciendo el flujo a PAUSADO ...
Estableciendo pipeline a READY...
0:00:15.338529170 14494  0x99ff070 INFO               gldisplay gstgldisplay.c:482:gst_gl_display_finalize: send quit gl window loop
0:00:15.338853655 14494  0x99ff070 INFO               gldisplay gstgldisplay.c:487:gst_gl_display_finalize: quit sent to gl window loop
0:00:15.339583291 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:740:gst_gl_display_thread_destroy_context: Cleaning texture pool
0:00:15.339637209 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:2037:gst_gl_display_texture_pool_func_clean: trying to delete texture id: 4 deleted
0:00:15.339704187 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:2039:gst_gl_display_texture_pool_func_clean: texture id: 4 deleted
0:00:15.339741692 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:2037:gst_gl_display_texture_pool_func_clean: trying to delete texture id: 5 deleted
0:00:15.339843032 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:2039:gst_gl_display_texture_pool_func_clean: texture id: 5 deleted
0:00:15.339882632 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:746:gst_gl_display_thread_destroy_context: Context destroyed
0:00:15.339919299 14494  0x9a00688 INFO               gldisplay gstgldisplay.c:619:gst_gl_display_thread_create_context: loop exited

0:00:15.367923661 14494  0x99ff070 INFO               gldisplay gstgldisplay.c:490:gst_gl_display_finalize: quit received from gl window
0:00:15.368027585 14494  0x99ff070 INFO               gldisplay gstgldisplay.c:496:gst_gl_display_finalize: gl thread joined
Estableciendo pipeline a NULL...
Freeing pipeline ...
Comment 1 Julien Isorce 2009-08-26 15:17:16 UTC
(In reply to comment #0)
> Just testing this pipe, gstreamer crash:
> 
crash ?

> miki@miki-laptop:~/gstreamer/git$ GST_DEBUG=gldisplay:3 gst-launch -v -m
> filesrc location=../dumps/itv.ts !  mpegtsdemux program-number="8442" ! queue !
> mpeg2dec ! glupload ! glimagesink
> Estableciendo el flujo a PAUSADO ...
> El flujo se está PRECACHEANDO ...
>...
> video/x-raw-yuv, format=(fourcc)I420, width=(int)544, height=(int)576,
> pixel-aspect-ratio=(fraction)32/17, framerate=(fraction)25/1,
> interlaced=(boolean)true
>...
>/GstPipeline:pipeline0/GstFileSrc:filesrc0:\012streaming\ task\ paused\,\
reason\ not-negotiated\ \(-4\)";
>...
> Freeing pipeline ...
> miki@miki-laptop:~/gstreamer/git$ 
> 

ok so the problem here is "not-negotiated".

This one works ? (If yes I do not need any log) (for me yes)
gst-launch-0.10 videotestsrc ! "video/x-raw-yuv, format=(fourcc)I420, width=(int)544, height=(int)576, ixel-aspect-ratio=(fraction)32/17, framerate=(fraction)25/1, interlaced=(boolean)true" ! glupload ! glimagesink

Could you provide the ts file (or a sub part) ?
Comment 2 Miquel Àngel Farré 2009-08-26 15:24:58 UTC
Just uploaded the file, here you have: http://casal.upc.es/~aess/miki/itv.ts
Comment 3 Julien Isorce 2009-08-26 16:23:17 UTC
ok lol I forgot a 'p' in 'ixel-aspect-ratio'  in comment #1

So I can reproduce the problem without the ts file. (Although I downloaded it ...)
This is because gl elements does not supports aspect ratio at input yet.
The pipeline was ok with glimagesink but was pixel-aspect-ratio was not taken into account.
With glupload ! glimagesink, glupload only output pixel-aspect-ratio 1/1, so it failed.

(note that glimagesink supports force-aspect-ratio property)

Does anyone know how to eliminate the 'pixel-aspect-ratio' in the caps ?

Even if pixel-aspect-ratio in caps is not yet supported by gl elements we should at least have the same behavior. I'll try to fix it.
Comment 4 Julien Isorce 2010-04-30 09:50:49 UTC
Patch suggested by Roland Peffer in an email to gst-devel:

/* Commenting the code below out prevents problems with pixel-aspect-ratio not equal 1/1
/*  if (par_value)
    gst_structure_set_value (structure, "pixel-aspect-ratio", par_value);
  else
    gst_structure_set (structure, "pixel-aspect-ratio", GST_TYPE_FRACTION,
        1, 1, NULL);
*/
Comment 5 Julien Isorce 2010-04-30 09:51:33 UTC
commit 74c38e2e917ca54f3a890427622b9c1ccb2a6ad1                                                           
Author: Roland Peffer <Roland.Peffer@clixxun.de>                                                          
Date:   Fri Apr 30 11:44:26 2010 +0200                                                                    

    glupload: par is already handled in fixate_caps function

    Fixes bug #593165