When I gst-inspect
a element I’m interested about to see the video formats available, the Pad templates shows an entry for video/x-raw
and another one for video/x-raw(ANY)
:
SINK template: 'video_sink'
Availability: Always
Capabilities:
video/x-raw
format: { (string)BGRx, (string)RGBx, (string)xRGB, (string)xBGR, (string)RGBA, (string)BGRA, (string)ARGB, (string)ABGR, (string)RGB, (string)BGR, (string)I420, (string)YV12, (string)AYUV, (string)YUY2, (string)UYVY, (string)v308, (string)Y41B, (string)Y42B, (string)Y444, (string)NV12, (string)NV21, (string)A420, (string)YUV9, (string)YVU9, (string)IYU1, (string)GRAY8 }
video/x-raw(ANY)
format: { (string)I420, (string)YV12, (string)YUY2, (string)UYVY, (string)AYUV, (string)RGBx, (string)BGRx, (string)xRGB, (string)xBGR, (string)RGBA, (string)BGRA, (string)ARGB, (string)ABGR, (string)RGB, (string)BGR, (string)Y41B, (string)Y42B, (string)YVYU, (string)Y444, (string)v210, (string)v216, (string)NV12, (string)NV21, (string)GRAY8, (string)GRAY16_BE, (string)GRAY16_LE, (string)v308, (string)RGB16, (string)BGR16, (string)RGB15, (string)BGR15, (string)UYVP, (string)A420, (string)RGB8P, (string)YUV9, (string)YVU9, (string)IYU1, (string)ARGB64, (string)AYUV64, (string)r210, (string)I420_10BE, (string)I420_10LE, (string)I422_10BE, (string)I422_10LE, (string)Y444_10BE, (string)Y444_10LE, (string)GBR, (string)GBR_10BE, (string)GBR_10LE, (string)NV16, (string)NV24, (string)NV12_64Z32, (string)A420_10BE, (string)A420_10LE, (string)A422_10BE, (string)A422_10LE, (string)A444_10BE, (string)A444_10LE, (string)NV61, (string)P010_10BE, (string)P010_10LE, (string)IYU2, (string)VYUY, (string)GBRA, (string)GBRA_10BE, (string)GBRA_10LE, (string)GBR_12BE, (string)GBR_12LE, (string)GBRA_12BE, (string)GBRA_12LE, (string)I420_12BE, (string)I420_12LE, (string)I422_12BE, (string)I422_12LE, (string)Y444_12BE, (string)Y444_12LE, (string)GRAY10_LE32, (string)NV12_10LE32, (string)NV16_10LE32 }
I understand the video/x-raw means the pad data is a raw video format.
I do not understand what the (ANY)
part means on the second video/x-raw
entry.
What is it saying? What is the difference for the entry without it?
The format capabilities in video/x-raw
are a sub-set of those in the video/x-raw(ANY)
. Why is that?
In my pipeline, a source element provides video/x-raw in NV16 format. If I try to link it to the element above, it fails, despite of NV16 present in the format list of video/x-raw(ANY)
. If before this element I insert a videoconvert
and convert the format to NV12 (present in the video/x-raw
format list), then the elements are linked and the pipeline works. Why I cannot link the sink pad and the source pad in my pipeline even though the NV16
format is listed there?