Hello, I've been trying to do a very simple plugin. For the sake of learning gstreamer I'm using fixated caps in the src and sink template/factory, so I'm using either video/x-raw-yuv or a single value(not using ranges) for format, width, height, etc. The error I'm receiving from what I understand is that I'm not negotiating caps with the source side of my element for some reason. I've been trying to trace where the gst_base_transform variable trans->negotiated would be able to make it TRUE, but been unsuccesful. My question is what does the variable trans->negotiated depend on to be TRUE? or what am I missing in the overloaded functions that I'm not doing to negotiate caps with the following element. I'm using the following pipeline as a base to test my code:
I've overloaded the following functions. - transform_caps: Since I'm not going have a use case where I have the same caps, in here I just declare a string pointer with the string of the outgoing caps that I use in the pipeline above, turn them into caps_from_string and return them.
- set_caps: Here I simply parse information from the caps that I need to configure my scaler. At the end I return TRUE. - transform_size: I calculate othersize with the output buffersize I'm suppose to send. In this case, *othersize = 320 * 240 * 2; and then return TRUE.
- transform: Here I try to pass some more information to my scaler and process the image. - get_unit_size: I calculate the unit size with the input buffersize I'm suppose to receive. In this case, *size = 640 * 480 * 2; and then return TRUE.
- fixate_caps: I figured I didn't need to use this function since I used fixated caps in my template, and also in transform_caps I used single value caps in the string before turning them into caps, and returned them. Still I gave this a shot and I still get the error.