본문 바로가기
MultiMedia Framework/GStreamer

Message types

by 유주원 2013. 7. 27.

GStreamer는 미리 정의된 Message type을 가지고 있다.

또한 추가적인 message들도 정의가 가능하다.


모든 message들은 message source와 type 그리고 timestamp를 가지고 있다. message source는 어떤 element가 message를 전달했는지를 알기 위해서 사용한다. 아래는 message 목록과 짧은 설명에 대해 기술하였다.


Error, warning and information notifications

- pipeline의 상태에 대해 사용자에게 알리는 용도로 사용되는 message.

- Error message는 치명적인 결함을 알리며, date의 흐름을 종료한다.

- Warning은 치명적이진 않지만, 문제를 일으킬 소지가 있다.

- Information message는 문제가 발생하여 메시지를 보내는 것은 아니다.

- 이러한 message들은 main error type과 message, 그리고 debug string이 있는 GError를 포함하고 있다.

- gst_message_parse_error(), _parse_warning() 그리고 _parse_info()를 사용하여 GError를 parsing할 수 있다.


End-of-stream notification

- Stream이 끝났을 때 전송된다. 

- application은 재생 목록에 있는 다음 음악으로 넘기기 위해 해당 메시지를 이용할 수 있다.

- message에서 가지고 있는 특별한 argument는 없다.


Tags

- Stream에서 Metadata가 발견되었을 때 전송된다.

- 이 message는 pipeline이 동작하는 동안 여러 차례 전송될 수 있다.

- gst_message_parse_tag()를 통해 tags message를 파싱하고, 더 이상 사용할 필요가 없을 땐 gst_tag_list_free() 함수로 자원을 해제한다.


State-changes

- 성공적으로 상태가 변경된 후에 전송된다.

- gst_message_parse_state_changed() 함수는 이전 상태와 새로 변경된 상태를 parsing하기 위해 사용된다.


Buffering

- 네트워크 스트림을 저장하는 동안에 message가 전송된다.

- gst_message_get_structure() 함수에 의해 리턴된 구조체로부터 "buffer-percent" 프로퍼티를 추출함으로써 buffering의 진행 상태를 확인할 수 있다.


Element messages

- 특정 element가 특정 기능이 동작할 때, element message가 전송된다.

- 예를 들어 QuickTime demuxer element는 stream이 redirect 명령을 포함하고 있을 때, 특정 경우에 대해 'redirect' element message를 전송할 수 있다.


Application-specific messages

- 암만 읽어봐도 머할때 쓰는지 잘 모르겠다... 아시는 분은 도움 좀... 이것도 점차적으로 공부하기로..