파이프라인을 통해 흐르는 데이터는 버퍼와 이벤트의 조합으로 구성됩니다. 버퍼에는 실제 미디어 데이터가 포함되어 있습니다. 이벤트에는 정보 검색 및 스트림 끝 알림과 같은 제어 정보가 포함됩니다. 이 모든 것은 실행될 때 자동으로 파이프라인을 통해 흐릅니다. 이 챕터는 주로 개념을 설명하기 위한 것입니다. 이를 위해 아무것도 할 필요가 없습니다.
Buffers
버퍼에는 생성한 파이프라인을 통해 흐르는 데이터가 포함되어 있습니다. Source element는 일반적으로 새 버퍼를 생성하고 이를 pad를 통해 체인의 다음 element로 전달합니다. 미디어 파이프라인을 생성하기 위해 GStreamer 인프라를 사용할 때 버퍼를 직접 처리할 필요가 없습니다. Element가 당신을 위해 대신 동작 할 것입니다.
버퍼는 다음으로 구성됩니다.
- 메모리 객체에 대한 포인터가 있습니다. 메모리 객체는 메모리의 영역을 캡슐화합니다.
- 버퍼의 타임스탬프가 있습니다.
- 버퍼를 사용하는 element 수를 나타내는 참조 횟수가 있습니다. 이 참조 횟수는 참조하는 element가 없을 때 버퍼를 삭제하는 데 사용됩니다.
- 버퍼 플래그.
간단한 경우로는 버퍼가 생성되고, 메모리가 할당되고, 데이터가 입력되고, 그리고 다음 element로 전달되는 것입니다. 해당 element는 데이터를 읽고, 새 버퍼를 생성하고 버퍼로 디코딩하는 등의 작업을 수행하고, 그리고 버퍼 참조를 해제합니다. 이로 인해 데이터가 해제되고 버퍼가 파괴됩니다. 일반적인 비디오 또는 오디오 디코더는 이와 같이 작동합니다.
하지만 더 복잡한 시나리오도 있습니다. Element는 새 버퍼를 할당하지 않고 버퍼를 내부에서 수정할 수 있습니다. Element는 하드웨어 메모리 (예: 비디오 캡처 소스) 또는 X-서버에서 할당된 메모리 (XShm 사용)에 쓸 수도 있습니다. 버퍼는 읽기 전용 등이 될 수 있습니다.
Events
이벤트는 버퍼와 함께 파이프라인의 업스트림 및 다운스트림으로 전송되는 제어 입자입니다. 다운스트림 이벤트는 스트림 상태의 동료 element에게 알립니다. 가능한 이벤트에는 seeking, flushes, 스트림 종료 알림 등이 포함됩니다. 업스트림 이벤트는 검색과 같은 스트림 상태의 변경을 요청하기 위해 application-element 상호 작용은 물론 element-element 상호 작용에도 사용됩니다. 애플리케이션의 경우 업스트림 이벤트만 중요합니다. 다운스트림 이벤트는 데이터 개념을 더욱 완벽하게 파악하기 위해 설명되었습니다.
대부분의 애플리케이션은 시간 단위로 탐색하므로 아래 예에서도 마찬가지입니다.
static void
seek_to_time (GstElement *element,
guint64 time_ns)
{
GstEvent *event;
event = gst_event_new_seek (1.0, GST_FORMAT_TIME,
GST_SEEK_FLAG_NONE,
GST_SEEK_METHOD_SET, time_ns,
GST_SEEK_TYPE_NONE, G_GUINT64_CONSTANT (0));
gst_element_send_event (element, event);
}
gst_element_seek() 함수는 이에 대한 지름길입니다. 이것은 대부분 모든 것이 어떻게 작동하는지 보여주기 위한 것입니다.
원문: Buffers and Events (gstreamer.freedesktop.org)
Buffers and Events
Buffers and Events The data flowing through a pipeline consists of a combination of buffers and events. Buffers contain the actual media data. Events contain control information, such as seeking information and end-of-stream notifiers. All this will flow t
gstreamer.freedesktop.org
'IT와 개발 > GStreamer Study' 카테고리의 다른 글
Position tracking and seeking (0) | 2024.05.17 |
---|---|
Your first application (0) | 2024.05.10 |
Pads and capabilities (1) | 2024.04.26 |
Bus (1) | 2024.04.19 |
Bins (1) | 2024.04.12 |