AllJoyn 이해 - Base Service의 Audio Streaming 개념 정리
Allseen Alliance에 소개되어 있는 AllJoyn Base Service의 Audio Streaming 내용을 이해하기 위해 아래와 같이 해석해서 정리해 보았습니다. 개발자 입장에서 볼 때 새로운 용어나 개념의 이해가 선행되어야 코드상에서의 접근이 용이하다는 것은 중요한 점입니다. 많은 용어와 개념들을 가능한한 원문 형태로 이해하는것이 가장 빠른 방법입니다.
(원문 참조 : https://allseenalliance.org/developers/learn/base-services/audiostreaming )
(원문 참조 : https://allseenalliance.org/developers/learn/base-services/audiostreaming )
AUDIO STREAMING
AllJoyn® 오디오 서비스 프레임워크는 하나 또는 다수의 기기들 상에서 동기화된 오디오 재생을 가능하게 하기 위해 AllJoyn 프레임워크를 사용한 기능 구현입니다.
오디오 서비스 프레임워크를 사용한 어플리케이션은 근처의 기기를 발견할 수 있고 그기기를 추가해서 모든 추가된 기기들 상에서 재생을 위한 단일 명령 호출로 오디오(PCM 데이타)를 스트리밍할 수 있는 능력을 가집니다. 이 서비스는 포즈,정지,재생, 볼륨 조절 그리고 뮤트의 컨트롤을 제공합니다.
Concepts and Terminology
Skin and Source
두가지 역할이 존재합니다.
- Sink. 이것은 raw 오디오 데이타를 수신하는 쪽입니다.
- Source. 이것은 raw 오디오 데이타를 보내는 쪽입니다.
How Does It Work?
오디오 서비스 프레임워크는 각 디바이스에 PCM 데이타를 전송하기 위해 소프트웨어 프레임워크내의 표준화된 인터페이스들을 사용합니다. Source는 오디오를 보내기를 원하는 각각의 Sink에 포인트-투-포인트 세션을 형성할 것입니다. 각각의 세션상에서 오디오 데이타 청크와 타임스탬프를 포함하는 신호를 보낼 것입니다. 타임스탬프는 여러 스피커들간에 단순한 동기화를 제공하기 위해 사용됩니다.
오디오를 보낼 수 있게 되기전에, Source는 전송을 원하는 오디오의 세부사항을 먼저 Sink에게 알려야 합니다. Source는 FIFO(First In First Out의 큐를 의미) 크기 뿐아니라 각 Sink의 기능들을 요구 할 책임이 있습니다. Source는 FIFO를 미리 채우고 노래가 재생할때 더 많은 데이타 청크를 보내는 과정을 시작합니다.
미디어 및 볼륨 제어가 각각의 파트에 대한 별도 AllJoyn 인터페이스상의 기능을 사용하는 경우, 예를 들면, Sink상의 볼륨 조절은 읽고쓸수 있고 최대,최소 그리고 단계값들이 정의되는 구조의 볼륨 범위가 표현된 AllJoyn Property를 통해 현재 볼륨을 명시합니다.
댓글
댓글 쓰기