GNOME Bugzilla – Bug 634159
Totem is unable to take screenshots (deinterlace outputs 50 fps vs. 25 fps -> not-negotiated flow)
Last modified: 2012-09-29 17:36:47 UTC
When trying to take a screenshot via Edit -> Take screenshot (or Ctrl+S), I get "Totem could not get a screenshot of the video. This is not supposed to happen; please file a bug report". So that's what I'm doing. I'm using Ubuntu 10.10 and Totem 2.32.0. The file that was playing is a DVD image that I mounted and played using Movie -> Play Image. It should be noted that Edit -> Create screenshot gallery... fails as well, but does not give any error; it simply does nothing when I press Save. This also happens if I navigate to the VIDEO_TS folder and play the VOB file of the scene that was playing, and I can replicate this using other DVD images or VOB files. Eg. AVI files seem to work fine, though.
If you run Totem from a terminal using `totem --debug`, are any messages printed to the terminal when you try to take a screenshot in Totem?
Yes, here: libdvdnav: Unable to find map file 'ISO PATH HERE.map' libdvdnav: DVD disk reports itself with Region mask 0x00000000. Regions: 1 2 3 4 5 6 7 8 ** (totem:21055): WARNING **: Could not take screenshot: Internal data flow error. ** (totem:21055): WARNING **: Could not take screenshot: conversion failed
OK, could you try again with the following command and attach the resulting totem.log file to this bug report please? GST_DEBUG=*:3 GST_DEBUG_NO_COLOR=1 totem --debug &> totem.log
Created attachment 173960 [details] GST_DEBUG=*:3 GST_DEBUG_NO_COLOR=1 totem --debug &> totem.log
0:00:09.783617305 21282 0x9421f58 WARN basetransform gstbasetransform.c:1065:gst_base_transform_acceptcaps_default:<ffmpegcsp0> transform could not transform video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)16/15, framerate=(fraction)50/1, interlaced=(boolean)false in anything we support 0:00:09.784046221 21282 0x9421f58 INFO basesrc gstbasesrc.c:2490:gst_base_src_loop:<fakesrc0> pausing after gst_pad_push() = not-negotiated 0:00:09.784127236 21282 0x9421f58 WARN basesrc gstbasesrc.c:2550:gst_base_src_loop:<fakesrc0> error: Internal data flow error. 0:00:09.784153584 21282 0x9421f58 WARN basesrc gstbasesrc.c:2550:gst_base_src_loop:<fakesrc0> error: streaming task paused, reason not-negotiated (-4) 0:00:09.784200817 21282 0x9421f58 INFO GST_ERROR_SYSTEM gstelement.c:1761:gst_element_message_full:<fakesrc0> posting message: Internal data flow error. 0:00:09.784244902 21282 0x9421f58 INFO GST_ERROR_SYSTEM gstelement.c:1784:gst_element_message_full:<fakesrc0> posted error message: Internal data flow error. 0:00:09.784314730 21282 0x89540a0 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<fakesrc0> completed state change to PAUSED 0:00:09.784341802 21282 0x89540a0 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<fakesrc0> posting state-changed READY to PAUSED 0:00:09.784372296 21282 0x89540a0 INFO GST_STATES gstbin.c:2443:gst_bin_change_state_func:<screenshot-pipeline> child 'fakesrc0' changed state to 3(PAUSED) successfully ** (totem:21282): WARNING **: Could not take screenshot: Internal data flow error.
Any chance you could you attach a GST_DEBUG=*:5 log as well? *:3 logs rarely contain enough information. Have you tried the GStreamer PPA yet? (which contains newer GStreamer versions)
I've not tried the GStreamer PPA. Here's the log for GST_DEBUG=*:5 GST_DEBUG_NO_COLOR=1 totem --debug &> totem2.log - I tried attaching it, but it's 89.5MB: http://megaupload.com/?d=67I467NH
Thanks for the log. bzip2'ed it would only be around 3MB :) The essence of what's happening seems to be that mpeg2dec outputs things with framerate=50/1 in the caps, but downstream wants framerate=25/1. This leads to a not-negotiated error: gstmpeg2dec.c:1171:gst_mpeg2dec_chain:<mpeg2dec0> calling parse gstbasetransform.c:1028:gst_base_transform_acceptcaps_default:<ffmpegcsp0> allowed caps video/x-raw-yuv, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)25/1, width=(int)[ 1, 32767 ], height=(int)[ 1, 32767 ], format=(fourcc){ I420, NV12, NV21, YV12, YUY2, Y42B, Y444, YUV9, YVU9, Y41B, Y800, Y8 , GREY, Y16 , UYVY, YVYU, IYU1, v308, AYUV }; (snip) gstbasetransform.c:1065:gst_base_transform_acceptcaps_default:<ffmpegcsp0> transform could not transform video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)16/15, framerate=(fraction)50/1, interlaced=(boolean)false in anything we support gstpad.c:2557:gst_pad_accept_caps:<ffmpegcsp0:sink> acceptfunc returned 0 gstpad.c:2722:gst_pad_configure_sink:<ffmpegcsp0:sink> caps video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)16/15, framerate=(fraction)50/1, interlaced=(boolean)false not accepted Both looks like a bug. This is interlaced PAL, so should be 50 fields per second = 25 fps if I'm not mistaken. And not quite sure where the downstream framerate comes from either..
*** Bug 640933 has been marked as a duplicate of this bug. ***
I think this was fixed in totem, not sure we can or should be doing anything about the framerate.