우분투 9.04 릴리스, 하지만…

우분투 9.04 버전이 릴리스 되었지만 안정화되려면 업데이트를 조금 더 기다려야 할 것 같습니다. 릴리스 노트를 보면 인텔 드라이버 성능 저하와 디스플레이 멈춤(freeze), EXT4 파일 시스템 불안정, 945보드에서 디스크 인식 문제 등 많은 문제가 언급되어 있군요. 한글 글꼴 설정도 조금 문제가 있어 수정이 필요한 것 같고… 6개월 간격으로 정식 릴리스를 무조건 해야 하니 발생하는 어쩔 수 없는 [...]
Posted in Development | Comments Off

GObject Property Binding 기능이 필요함

맥 코코아 프레임웍을 공부하면서 GTK+ / GObject 라이브러리에도 있으면 참 좋겠다고 생각한 것 중 하나가 특정 속성(property)을 다른 객체의 속성과 결합하는(binding) 개념입니다. 이를 이용해 자동으로 모델과 뷰를 클릭 몇 번으로 연결하고, 더 나아가 객체 배열은 물론 선택한 항목까지 자동으로 동기화되는 걸 보면서 정말 잘 만들어진 프레임웍이라는 걸 새삼 느낍니다. 또한 사용자가 직접 설계한 클래스를 인터페이스 빌더의 [...]
Posted in Development | Comments Off

우분투에서 C 라이브러리 맨페이지(manpage) 설치하기

리눅스에서 개발할때 ‘man’ 명령을 이용해 매뉴얼 페이지를 많이 참고하는데, 자주 시스템을 다시 설치하다 보니 설치되지 않은 매뉴얼 때문에 매번 구글을 찾는라 귀찮은 적이 많아 적어둡니다. 우분투나 데비안에서만 유효합니다. 기본적인 C 라이브러리 관련 매뉴얼 패이지는 `manpages-dev’ 패키지를 설치하면 되고, pthread_*()  류의 함수는 `glibc-doc’ 패키지를 설치하면 됩니다. 즉, 터미널에서 다음과 같이 입력하면 됩니다. sudo apt-get install manpages-dev glibc-doc
Posted in Development | Comments Off

HTTP (Hypertext Transfer Protocol)

GET
URI에 해당하는 정보를 요청하는 메소드 입니다.

GET 메소드

GET 메소드

  • Accept-Lanugage : 원하는 언어를 명시합니다. 서버에게 요청에 대한 응답을 받을 때, 클라이언트 자신이 처리할 수 있는 언어를 알립니다.
  • Accpet-Encoding : 원하는 인코딩 방식을 명시합니다.
  • User-Agent : 요청을 보내는 클라이언트에 대한 정보를 나타냅니다.
  • Connection : 요청이나 응답을 보내는 측이 특정 연결에 대해 원하는 옵션을 명시합니다. “close” 일 경우 응답이 마무리 되었을 경우 연결이 닫도록 합니다. HTTP/1.0 이하의 버전에서는 반드시 Connection 헤더를 명시해야 한다고 합니다.

해당 자료에 대한 접근 권한이 없을 경우 서버로 부터 “401 Unauthorized” 응답을 받습니다.
401unauthorized

HTTP BASIC 인증 (RFC 2617)
Base64 인코딩, “사용자명:비밀번호”
basic_auth

이후의 모든 요청에는 BASIC 인증 헤더를 넣어주어야 합니다.

200 OK : 요청이 성공적으로 이루어졌음을 나타냅니다.
200ok

POST
정보를 요청하는 메소드 입니다. GET 메소드와 다른 점은 길이 제한이 없고, 요청 정보를 HTML 의 헤더에 넣어서 보낸다는 것입니다.
post01
post02

RTPoverHTTP
HTTP 포트(80)를 통해 RTP 패킷을 전송하는 방식입니다.
rtpoverhttp
SDP
sdp

Posted in Development | Leave a comment

RTP (Real-time Transport Protocol)

오디오/비디오와 같은 실시간 데이터를 멀티캐스트 혹은 유니캐스트 네트워크를 통해 전송하는데 적합한 단말 대 단말(end-to-end) 전송 프로토콜입니다. RTP 프로토콜은 자원 예약을 준비하지 않으며, 실시간 서비스에 대한 QoS 를 보장하지 않습니다.

RTP header, version 2:

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
V P X CC M PT Sequence Number
Timestamp
Synchronization Source (SSRC) identifier
Contributing Source (CSRC) identifier [0..15] …
  • V (Version) : 2bit
  • RTP 버전을 나타냅니다. RFC 3550 일 경우 2 입니다. (RFC 1889 는 1)

  • P (Padding) : 1bit
  • 페이로드의 일부가 아닌 패딩 바이트가 있는지를 나타냅니다. 패딩의 마지막 바이트에는 무시해야 하는 패딩 바이트의 길이에 대한 정보가 있습니다.

  • X (Extension) : 1bit
  • 고정 RTP 헤더(12bytes) 이후에 하나의 확장 헤더가 있는지를 나타냅니다.

  • CC (CSRC Count) : 4bits
  • 고정 RTP 헤더 이후에 있는 CSRC의 수를 나타냅니다.

  • M (Marker) : 1bit
  • 패킷 스트림 내에서 프레임의 경계와 같은 중요한 이벤트를 표시하는데 사용합니다.

  • PT (Payload Type) : 7bits
  • RTP 페이로드의 형식을 나타냅니다. (RFC 3551) 수신하는 측에서는 모르는 형식을 경우 무시해야 합니다.

  • Sequence Number : 16bits
  • RTP 데이터 패킷을 보낼 때 마다 하나씩 증가시키는 순서 번호입니다. 수신측에서는 이 값을 이용하여 패킷 손실을 감지하고, 패킷 순서 복구에 사용합니다. 순서 번호 초기 값은 보안상의 이유로 무작위하게 생성합니다.

  • Timestamp : 32bits
  • RTP 데이터 패킷의 샘플링 순간을 나타냅니다. 샘플링 순간은 단조롭고 선형적인 시간이어야 합니다. 예를 들어 샘플링이 160 단위로 발생한다면, 각 블락은 160 단위로 증가할 것입니다.

  • SSRC (Synchronization Source) : 32bits
  • 동기화 소스에 대한 식별자입니다. 값은 무작위한 값을 사용하며, 같은 RTP 세션 내에서는 유일해야 합니다.

  • CSRC (Contributing Source) : 32bits
  • 해당 RTP 패킷의 페이로드를 구성하는데 기여한 SSRC 의 리스트를 나타냅니다. 최대 갯수는 15개 입니다. CSRC 는 mixer에 의해 추가됩니다.

RTP Packet Capture

rtp_packet

RTCP (Real-time Control Protocol)

RTCP 는 세션 내의 모든 참가자에게 주기적으로 제어 패킷을 전송합니다. RTCP 를 통해 데이터의 전달 상황 감시, 최소한의 제어 기능, 미디어 식별 기능 등을 처리합니다. RTCP 패킷의 종류는 다음과 같습니다.

  • SR (Sender Report)
    rtcp_sr
  • RR (Receiver Report)
    rtcp_rr
  • SDES (Source Description) : Canonical Name(CNAME) 을 포함한 소스에 대한 명세
  • BYE : 참가 종료를 알립니다.
  • APP : 어플리케이션에 특화된 기능 입니다.
RTP Profile for Audio and Video Conferences with Minimal Control
PT Name Type Clock rate (Hz) Audio channels References
0 PCMU Audio 8000 1 RFC 3551
1 1016 Audio 8000 1 RFC 3551
2 G721 Audio 8000 1 RFC 3551
3 GSM Audio 8000 1 RFC 3551
4 G723 Audio 8000 1
5 DVI4 Audio 8000 1 RFC 3551
6 DVI4 Audio 16000 1 RFC 3551
7 LPC Audio 8000 1 RFC 3551
8 PCMA Audio 8000 1 RFC 3551
9 G722 Audio 8000 1 RFC 3551
10 L16 Audio 44100 2 RFC 3551
11 L16 Audio 44100 1 RFC 3551
12 QCELP Audio 8000 1
13 CN Audio 8000 1 RFC 3389
14 MPA Audio 90000 RFC 2250, RFC 3551
15 G728 Audio 8000 1 RFC 3551
16 DVI4 Audio 11025 1
17 DVI4 Audio 22050 1
18 G729 Audio 8000 1
19 reserved Audio
20
-
24
25 CellB Video 90000 RFC 2029
26 JPEG Video 90000 RFC 2435
27
28 nv Video 90000 RFC 3551
29
30
31 H261 Video 90000 RFC 2032
32 MPV Video 90000 RFC 2250
33 MP2T Audio/Video 90000 RFC 2250
34 H263 Video 90000
35
-
71
72
-
76
reserved RFC 3550
77
-
95
96
-
127
dynamic RFC 3551
dynamic GSM-HR Audio 8000 1
dynamic GSM-EFR Audio 8000 1
dynamic L8 Audio variable variable
dynamic RED Audio
dynamic VDVI Audio variable 1
dynamic BT656 Video 90000
dynamic H263-1998 Video 90000
dynamic MP1S Video 90000
dynamic MP2P Video 90000
dynamic BMPEG Video 90000

참고 자료:

Posted in Development | Leave a comment