Hi,
My v4l2 device (analog camera) will generate frames with size 720x480, format UYVY and frame rate 30/1.
I want to do some transformation on the video frames so my plugin "splitframe" chooses to inherit the GstBaseTransform and GstVideoFilter class.
For test purpose, I use videotestsrc to simulate the behavior.
My pipeline is gst-launch-1.0 -v videotestsrc ! video/x-raw,format=UYVY,width=720,height=480,framerate=30/1 ! splitframe .
After running the pipeline, I will receive the error "streaming task paused, reason not-negotiated (-4)".
From the previous discussion, someone had the same problem and the issue can be solved by adding videoconvert to do color space transformation.
In my case, it seems that the color space doesn't need to be changed.
Please help to give my some hint.
Thanks!!
PS: Attach the plugin source code and the error log (GST_DEBUG=5)
test.log
gstsplitframe.c
Sent from the GStreamer-devel mailing list archive at Nabble.com. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Have you implemented "set_info" of GstVideoFilterClass in splitframe
element. Pipeline negotiation fails if set_info is wrongly implementation or not doing negotiation properly. https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/GstVideoFilter.html#GstVideoFilterClass Refer videoconvert code for "set_info" implimentation -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Thanks for your information.
I will try to implement set_info and see if the issue will still happen :) Besides this, I have another question. Because my plugin inherits GstBaseTransform and GstVideoFilter at the same time, I have already implemented GstBaseTransform's transform_caps function. Is this regarded as negotiation or not? Or only the way to implement set_info is correct to do negotiation? Thanks!! Sent from the GStreamer-devel mailing list archive at Nabble.com. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi Bason,
I am not very sure what will be behavior if you skip the implementation in the sub module. Try moving code from transform_caps to set_info and see if it solves to problem. Go through GstBaseTransform implementation and check if set_info implementation is mandatory. -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi ShilVin,
I have tried to implement set_info but doesn't have any effect. Finally I found the error is due to that I set wrong fps_n and wrong fps_d in transform_caps function. It will cause the CAPs between capsfilter and my plugin are not compatible. In gstreamer, the meanings of fps_n and fps_d are different with V4L2 driver. For example, if fps value is 30, fps_n will be 30 and fps_d will be 1 in gstreamer. But in V4L2 driver, timeperframe.denominator will be 30 and timeperframe.numerator will be 1. After I fix this issue, I meet another issue "streaming task paused, reason not-linked (-1)". Do you know how to solve it? Thanks!! Attach the error log test.log and the source code gstsplitframe.c Sent from the GStreamer-devel mailing list archive at Nabble.com. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Enable debug log. It may give some hint.
-- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |