Hello World
이 문서는 위에 링크한 Hello World 예제의 내용을 바탕으로 정리한 내용이다.

/* Initialize GStreamer */
gst_init (&argc, &argv);
gst_init 함수는 세 가지의 주요한 작업을 한다.
pipeline =
gst_parse_launch
("playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm",
NULL);
gst_parse_launch 는 쉽게 기본적인 파이프라인을 구성해서 시작해주는 역할을 한다.
파이프라인은 소스와 싱크를 결합한 집합을 의미한다.
미디어는 소스라는 원소로부터 싱크라는 원소로 흘러간다.
playbin은 소스이기도 하고 싱크이기도 하며 전체적으로는 파이프라인인 특수한 원소이다. 미디어를 재생하기 위해서 내부적으로 원소들을 알아서 연결해주는 역할을 한다.
/* Start playing */
gst_element_set_state (pipeline, GST_STATE_PLAYING);
모든 원소는 상태를 가지고 있고, gst_element_set_state는 이것을 변경해주는 작업을 한다.
/* Wait until error or EOS */
bus = gst_element_get_bus (pipeline);
msg =
gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
EOS나 error가 발생할 때까지 기다리는 동작을 한다. 단지 이 기능만 하는 것은 아닐 것 같은데, 구체적인 내용은 튜토리얼을 더 확인해봐야 할 것 같다.
/* Free resources */
if (msg != NULL)
gst_message_unref (msg);
gst_object_unref (bus);
gst_element_set_state (pipeline, GST_STATE_NULL);
gst_object_unref (pipeline);
메시지는 gst_message_unref 로, 원소는 gst_object_unref 를 통해서 해제해줘야 한다.