본문 바로가기
IT와 개발/GStreamer Study

디자인 원칙

by 도서 임보자 2024. 3. 20.

간단하고 강력하다.

GStreamer는 다음과 같이 간단하면서 강력한 인터페이스를 제공합니다:

  • 미디어 파이프라인을 구축하고자 하는 애플리케이션 프로그래머는 한 줄의 코드를 작성하지 않고도 강력한 도구 세트를 사용하여 미디어 파이프라인을 생성할 수 있습니다. 복잡한 미디어 조작을 매우 쉽게 수행할 수 있습니다.
  • 플러그인 프로그래머들은 자체 포함된 플러그인을 생성하기 위한 강력하면서 간단한 API를 사용할 수 있습니다. 광범위한 디버깅 및 추적 메커니즘이 통합되었습니다. GStreamer에는 예제 역할을 하는 광범위한 실제 플러그인 세트도 함께 제공됩니다.

 

객체 지향적이다.

GStreamer는 GLib 2.0 객체 모델인 GObject를 준수합니다. GLib 2.0 또는 GTK+에 익숙한 프로그래머는 GStreamer를 편안하게 사용할 수 있습니다.

GStreamer는 시그널 및 객체 속성의 메커니즘을 사용합니다.

모든 객체는 실행 중에 다양한 속성 및 기능을 쿼리할 수 있습니다.

GStreamer는 GTK+의 프로그래밍 방법론과 유사하도록 의도되었습니다. 이는 객체 모델, 객체 소유권, 참조 계산 등에 적용됩니다.

 

확장 가능하다.

모든 GStreamer 객체는 GObject 상속 방법을 사용하여 확장할 수 있습니다.

모든 플러그인은 동적으로 로드되며 독립적으로 확장 및 업그레이드할 수 있습니다.

 

바이너리 전용 플러그인 허용

플러그인은 실행 시에 로드되는 공유 라이브러리입니다. 플러그인의 모든 속성은 GObject 속성을 사용하여 설정할 수 있으므로 플러그인용 헤더 파일을 설치할 필요가 없습니다(실제로 헤더 파일이 필요하지 않습니다).

플러그인을 완전히 독립적으로 만들기 위해 특별한 주의가 기울여졌습니다. 플러그인의 모든 것을 실행 중에 쿼리할 수 있습니다.

 

고성능

고성능은 다음과 같은 방법으로 얻어집니다:

  • GLib의 GSlice allocator 사용
  • 플러그인 간의 링크가 매우 가볍습니다. 데이터는 최소한의 오버헤드로 파이프라인을 통해 이동합니다. 플러그인 간의 데이터 전달은 일반적인 파이프라인에서 포인터 역참조만 포함됩니다.
  • 대상 메모리에서 직접 작업할 수 있는 메커니즘을 제공합니다. 예를 들어 플러그인은 X 서버의 공유 메모리 공간에 직접 쓸 수 있습니다. 버퍼는 사운드 카드의 내부 하드웨어 버퍼와 같은 임의의 메모리를 가리킬 수도 있습니다.
  • 참조 계산 및 쓰기 시 복사는 memcpy 사용을 최소화합니다. 서브 버퍼는 버퍼를 관리 가능한 조각으로 효율적으로 분할합니다.
  • 커널에서 스케줄링을 처리하는 전용 스트리밍 스레드를 제공 합니다.
  • 전용 플러그인을 사용하여 하드웨어 가속을 허용 합니다.
  • 플러그인의 스펙을 가진 플러그인 레지스트리를 사용하여 플러그인 로드를 실제로 사용할 때까지 지연할 수 있습니다.

 

명료한 코어/플러그인 분리

GStreamer의 코어는 본질적으로 미디어에 구애받지 않습니다. 바이트와 블록에 대해서만 알고 있으며 기본 요소만 포함합니다. GStreamer의 코어는 심지어 cp와 같은 낮은 수준의 시스템 도구를 구현할만큼 충분히 기능적입니다.

모든 미디어 처리 기능은 코어 외부의 플러그인에 의해 제공됩니다. 이러한 플러그인은 코어가 특정 유형의 미디어를 처리하는 방법을 알려줍니다.

 

코덱 실험을 위한 프레임워크 제공

GStreamer는 또한 코덱 개발자들이 다양한 알고리즘을 실험할 수 있는 쉬운 프레임워크를 제공합니다. 이를 통해 Xiph.Org Foundation에서 개발한 Theora 및 Vorbis와 같은 오픈 및 무료 멀티미디어 코덱의 개발을 가속화 하기를 바라고 있습니다.

 

 

원문: Design principles (gstreamer.freedesktop.org)

 

Design principles

Design principles Clean and powerful GStreamer provides a clean interface to: The application programmer who wants to build a media pipeline. The programmer can use an extensive set of powerful tools to create media pipelines without writing a single line

gstreamer.freedesktop.org

 

반응형

'IT와 개발 > GStreamer Study' 카테고리의 다른 글

Elements  (0) 2024.04.05
GStreamer 초기화  (0) 2024.03.29
Application Development Manual: Foundations  (1) 2024.03.22
GStreamer 란?  (0) 2024.03.17
GStreamer 스터디 내용을 정리 합니다.  (0) 2024.03.17