pad는 입/출력을 모두 의미할 수 있고(PCB의 IC의 발이 pad 니까..)
pad의 종류에 sink와 src가 있는데
sink는 예상과는 다르게 입력이다. src가 해당 엘리먼트의 출력..(어떤 놈이 이렇게 이름을 이따구로 정해놓은거냐 -_-)
+
pad에 src만 있는 녀석을 소스
sink / src가 있는 녀석을 필터
sink 만 있는 녀석을 sink 라고 표현하는 듯
[링크 : https://gstreamer.freedesktop.org/documentation/tutorials/basic/dynamic-pipelines.html?gi-language=c]
가장 만만(?)한 v4l 웹캠 입력을 예를 들어 보면 아래와 같은 파이프가 구성되는데
v4l2src 가 jpegdec를 거쳐 xvimagesink로 전달된다.
$ gst-launch-1.0 v4l2src ! jpegdec ! xvimagesink |
v4l2src는 sink가 없는 엘리먼트인데 이걸 머라고 불러야 하나?
아무튼 src의 image/jpeg로 뱉어주면(아마 자동으로 서로 사용가능한 포맷을 맞추는 느낌?)
src image/jpeg: video/mpeg: mpegversion: 4 systemstream: false video/mpeg: mpegversion: { (int)1, (int)2 } video/mpegts: systemstream: true video/x-bayer: format: { bggr, gbrg, grbg, rggb } width: [ 1, 32768 ] height: [ 1, 32768 ] framerate: [ 0/1, 2147483647/1 ] video/x-dv: systemstream: true video/x-fwht: video/x-h263: variant: itu video/x-h264: stream-format: { (string)byte-stream, (string)avc } alignment: au video/x-h265: stream-format: byte-stream alignment: au video/x-pwc1: width: [ 1, 32768 ] height: [ 1, 32768 ] framerate: [ 0/1, 2147483647/1 ] video/x-pwc2: width: [ 1, 32768 ] height: [ 1, 32768 ] framerate: [ 0/1, 2147483647/1 ] video/x-raw: format: { RGB16, BGR, RGB, ABGR, xBGR, RGBA, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV12_8L128, NV12_10BE_8L128, NV24, NV12_16L32S, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, BGRA, BGRx, BGR15, RGB15 } width: [ 1, 32768 ] height: [ 1, 32768 ] framerate: [ 0/1, 2147483647/1 ] video/x-sonix: width: [ 1, 32768 ] height: [ 1, 32768 ] framerate: [ 0/1, 2147483647/1 ] video/x-vp8: video/x-vp9: video/x-wmv: wmvversion: 3 format: WVC1 video/x-raw(format:Interlaced): format: { RGB16, BGR, RGB, ABGR, xBGR, RGBA, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV12_8L128, NV12_10BE_8L128, NV24, NV12_16L32S, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, BGRA, BGRx, BGR15, RGB15 } width: [ 1, 32768 ] height: [ 1, 32768 ] framerate: [ 0/1, 2147483647/1 ] interlace-mode: alternate Presence – always Direction – src Object type – GstPad |
[링크 : https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c]
jpegdec 에서는 image/jpeg로 받아 video/x-raw로 변환해서 출력하고
Pad Templates sink image/jpeg: Presence – always Direction – sink Object type – GstPad src video/x-raw: format: { I420, RGB, BGR, RGBx, xRGB, BGRx, xBGR, GRAY8 } width: [ 1, 2147483647 ] height: [ 1, 2147483647 ] framerate: [ 0/1, 2147483647/1 ] Presence – always Direction – src Object type – GstPad |
[링크 : https://gstreamer.freedesktop.org/documentation/jpeg/jpegdec.html?gi-language=c]
xvimagesink는 video/x-raw로 받아서 화면으로 출력한다.
Pad Templates sink video/x-raw: framerate: [ 0/1, 2147483647/1 ] width: [ 1, 2147483647 ] height: [ 1, 2147483647 ] Presence – always Direction – sink Object type – GstPad |
[링크 : https://gstreamer.freedesktop.org/documentation/xvimagesink/index.html]
'프로그램 사용 > gstreamer' 카테고리의 다른 글
gstreamer videomixer 반쪽 성공 (0) | 2023.03.27 |
---|---|
gstreamer videomixer ... 2? (0) | 2023.03.27 |
gstreamer cheat sheet - tee, queue (0) | 2023.03.22 |
gstreamer를 이용하여 uvc 웹캠 (mjpg) 보기 (0) | 2023.03.22 |
gstream videomixer (0) | 2023.02.17 |