Video Processing/Gstreamer

Gstreamer 기본 구성 요소들

jinmc 2021. 1. 8. 11:31
반응형

Element - element는 gstreamer에서 기본적인 구성요소 입니다. 데이터를 보내거나, 받거나, decode/encode하는 등 한 가지의 기능을 하는 요소를 말합니다. 

 

Pads - 데이터의 input과 output을 담당하는 구성요소를 말합니다. 구체적으로, 데이터를 보내는 부분을 source pad, 받는 부분을 sink pad라고 합니다. 또, src와 sink를 연결하는 부분을 link라고 합니다. source와 sink 에서 서로 보내는 data type을 정해줘서 그 부분이 맞는 경우에 link가 성공적으로 연결됬다고 할 수 있겠습니다. Data는 보통 Buffer의 형태로 옮겨집니다. (GstBuffer)

 

Bin - element들의 합으로 이루어진 container를 bin이라고 합니다. Bin의 status를 바꿈으로 그 안에 있는 모든 element의 status를 바꾸는 등으로 활용이 가능합니다.

 

pipeline - 가장 높을 레벨의 bin으로, 각각 thread의 실행과 synchronization을 담당합니다. State가 PLAYING으로 변환되면, EOS(end of stream)에 도달하거나 thread stop할 때까지 멈추지 않습니다.

 

 

어플리케이션과 pipeline사이의 통신 (Communication)에 대해 알아봅시다.

 

Communication

 

- buffer는 source에서 sink로 전달하는 데이터의 object를 말합니다. (downstream)

- event는 element에서 element, 또 application 에서 element로 data 로 옮기는 object를 말합니다. upstream 이나 downstream

둘 다 가능합니다.

- message란 pipeline의 message bus에서 포스트 되는 것을 말합니다. message는 동기적(synchronously)으로 처리될 수 도 있지만, 비동기적으로 application에서 처리될 수도 있습니다. Message는 주로 에러, redirect, buffering state등을 표시할 때 주로 사용됩니다.

- queries 는 application이 여러가지 정보들을 얻을 때 주로 사용합니다. 영상 길이나, 영상 재생 위치 등이 있습니다.  Query들은 언제나 동기적으로 실행됩니다. Element끼리 통신을 할 경우도 있습니다. (파일 크기나 영상 길이 등을 할 때에) Query는 upstream downstream 두 가지 모두 가능하지만 보통 upstream 으로 사용을 합니다.

 

 

 

반응형

'Video Processing > Gstreamer' 카테고리의 다른 글

Gstreamer에 대해서  (0) 2021.01.07