problems with changing frame rate with videorate element

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

problems with changing frame rate with videorate element

Andres Gonzalez
Hi,

I have a pipeline like this:

   filesrc --> videoparse --> videoconvert --> videorate -->   codec, mux,
udpsink etc

The filesrc reads raw YUV files and then the pipeline streams them to
various devices for testing purposes. I want to be able to control the
framerate dynamically in realtime. So I am trying to use videorate to simply
drop some raw YUV frames to reduce the effective framerate before the frames
even get down stream to the encoder/mux/udpsink.  I initialize the pipeline
with the original framerate of the YUV file and that will be the maximum
framerate. The videorate element has a property  "drop-only"  and "max-rate"
so I just set the max-rate to the desired reduced framerate.

I am getting the following warnings and then an EOS:

basetransform
gstbasetransform.c:1414:gst_base_transform_setcaps:<VideoRate-100> transform
could not transform video/x-raw, format=(string)I420, width=(int)720,
height=(int)480, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg,
colorimetry=(string)bt601, framerate=(fraction)30/1 in anything we support
WARN basetransform
gstbasetransform.c:1474:gst_base_transform_reconfigure:<VideoRate-100>
warning: not negotiated
WARN basetransform
gstbasetransform.c:1474:gst_base_transform_reconfigure:<VideoRate-100>
warning: not negotiated
WARN basesrc gstbasesrc.c:2948:gst_base_src_loop:<VideoFileSrc-100> error:
Internal data flow error.
WARN  basesrc gstbasesrc.c:2948:gst_base_src_loop:<VideoFileSrc-100> error:
streaming task paused, reason not-negotiated (-4)
 
I have used the videorate element before to just drop frames if the max-rate
was lower than the actual framerate. So I am confused as to why the pipeline
is now attempting to reconfigure the caps. If I have a pipeline set for a
framerate of 30 fps, and then set the front-end videorate max-rate to 20
fps, I thought the videorate would just drop the extra frames (assuming
"drop-only" is set to true).

All I need to do is adjust the framerate dynamically from a maximum value
before it gets to the encoder and down stream elements. This is just for
testing purposes so I don't care how the reduced-framerate video will appear
jerky, I am just testing how my target devices handle different framerates.

Thanks,
-Andres










--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: problems with changing frame rate with videorate element

stfl
Use a capsfilter with only the framerate between videorate and codec.

something like "video/x-raw,framerate=(fraction)30/1".

PS: Even though drop-only is said to default to TRUE. I had the experience
that I had to set it explicitly.



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: problems with changing frame rate with videorate element

Baby Octopus
Add capsfilter element after the videorate and dynamically modify the "caps"
property

~BO



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel