본문 바로가기
MultiMedia Framework/GStreamer

Buffer와 Event

by 유주원 2013. 8. 1.

Buffer

버퍼는 pipeline을 통해 흘러가는 데이터를 포함한다. 

source Element는 일반적으로 새로운 버퍼를 생성하고 생성된 버퍼를 다음 element로 전송한다. 

버퍼는 메모리의 시작 주소, 메모리 크기, 타임스탬프, 레퍼런스 카운트(얼마나 많은 element가 해당 버퍼를 쓰고 있는지를 나타내는 카운트), 그리고 버퍼 플래그로 구성된다.

일반적인 버퍼의 사용은, 맨 처음 버퍼가 생성되고 메모리가 할당되며 해당 메모리에 데이터를 복사한다.

복사된 메모리를 가진 버퍼를 다음 element에 넘기고, 다음 element는 버퍼에 쓰여진 데이터를 읽은 후 버퍼의 레퍼런스 카운트를 줄인다.

버퍼에 대한 보다 정교한 사용은 GStreamer를 이용해보며 차츰 익혀나가야 하겠다.


Events

이벤트 역시 버퍼와 마찬가지로 upstream 혹은 downstream으로 전송될 때 보내지는 제어 객체를 말한다.

downstream 이벤트는 stream의 상태를 알려주며 seeking, flushes, end-of-stream notification 등이 있다.

upstream 이벤트는 element 간 뿐 아니라 application과 element 간에도 사용되며, seek과 같은 stream의 상태 변화를 요청하기 위해 사용된다. 

application 입장에서는 upstream 이벤트를 주로 다루게 된다.