Porting dshowvideosrc to 1.0
Jérôme Laheurte
jerome-bugzilla at jeromelaheurte.net
Wed Sep 3 06:35:34 PDT 2014
Le 3 sept. 2014 à 11:43, Jérôme Laheurte <jerome-bugzilla at jeromelaheurte.net> a écrit :
>
> Le 2 sept. 2014 à 15:57, Jérôme Laheurte <jerome-bugzilla at jeromelaheurte.net> a écrit :
>>
>> 2. (video) I thought that set_caps() was discontinued in favor of a GST_EVENT_CAPS event on the source pad. But in practice the event is never fired, though set_caps is still invoked (if I override it of course). Quid ? The event function is set in the instance’s init(), using gst_pad_set_event_function(GST_BASE_SRC_PAD(src), xxx).
>>
>> 3. (video) I removed get_caps() and implemented a query function. GST_QUERY_CAPS is fired, I list the supported caps using the old get_caps method and intersects them with the filter returned by gst_query_parse_caps. gst_base_src_default_negotiate logs a « fixated » set of caps which actually include pretty much every supported cap and the negotiation fails. If I explicitly set the caps (using « gst-launch-1.0 dshowvideosrc ! « video/x-raw, format=I420, width=640, height=480, framerate=30/1! videoconvert ! autovideosink » instead of « gst-launch-1.0 dshowvideosrc ! videoconvert ! autovideosink ») it works. Am I supposed to return only one cap from this query or what ?
>
> Scratch those two, I missed a line in the doc.
Okay, everything seems to work fine. Anybody interested in testing this before I submit the patch ?
More information about the gstreamer-devel
mailing list