KR20230091661A - Android automotive audio system and method for stream conversion using the same - Google Patents
Android automotive audio system and method for stream conversion using the same Download PDFInfo
- Publication number
- KR20230091661A KR20230091661A KR1020210180989A KR20210180989A KR20230091661A KR 20230091661 A KR20230091661 A KR 20230091661A KR 1020210180989 A KR1020210180989 A KR 1020210180989A KR 20210180989 A KR20210180989 A KR 20210180989A KR 20230091661 A KR20230091661 A KR 20230091661A
- Authority
- KR
- South Korea
- Prior art keywords
- stream
- audio
- stereo
- channel
- buffer
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 7
- 239000000872 buffer Substances 0.000 claims abstract description 101
- 238000010586 diagram Methods 0.000 description 6
- 239000000284 extract Substances 0.000 description 2
- 238000012952 Resampling Methods 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/008—Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/167—Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Fittings On The Vehicle Exterior For Carrying Loads, And Devices For Holding Or Mounting Articles (AREA)
Abstract
Description
본 발명은 안드로이드 오토모티브 오디오 시스템에서 실시간으로 다수의 스테레오 스트림을 하나의 멀티채널 스트림으로 변환시키는 안드로이드 오토모티브 오디오 시스템 및 이를 이용한 스트림 변환 방법에 관한 것이다.The present invention relates to an Android automotive audio system that converts a plurality of stereo streams into a single multi-channel stream in real time in the Android automotive audio system and a stream conversion method using the same.
ALSA(Audio Linux Sound Architecture) 라이브러리는 여러 응용 프로그램으로부터의 사운드 데이터를 믹싱(mixing)할 수 있는 인터페이스를 제공하여, 기존 리눅스 시스템 구조에 향상된 오디오 기능을 부여할 수 있다.ALSA (Audio Linux Sound Architecture) library provides an interface capable of mixing sound data from various application programs, so that an improved audio function can be given to the existing Linux system structure.
한편, 안드로이드 오토모티브 오디오 시스템(Android Automotive OS)에서는 오디오 재생/녹음을 위해 ALSA 라이브러리가 아닌, tinyALSA 라이브러리를 사용한다. tinyALSA는 안드로이드 계열의 OS에서 사용하는 리눅스 커널에서 ALSA 라이브러리와 인터페이스하기 위한 작은 라이브러리로, 경량화 버전의 ALSA 라이브러리에 해당한다.Meanwhile, the Android Automotive OS uses the tinyALSA library, not the ALSA library, for audio reproduction/recording. tinyALSA is a small library for interfacing with the ALSA library in the Linux kernel used in the Android OS, and corresponds to a lightweight version of the ALSA library.
ALSA 라이브러리에서는 다수의 스테레오 스트림을 하나의 멀티 채널 스트림으로 변환시킬 수 있는 플러그인을 제공하지만, tinyALSA 라이브러리에서는 다수의 스테레오 스트림을 하나의 멀티 채널 스트림으로 변환시키는 플러그인을 제공하지 않는다. 그러므로 안드로이드 오토모티브 오디오 시스템은 다수의 스테레오 스트림을 하나의 멀티 채널 스트림으로 변환시키지 못한다.The ALSA library provides a plug-in that can convert multiple stereo streams into a single multi-channel stream, but the tinyALSA library does not provide a plug-in that converts multiple stereo streams into a single multi-channel stream. Therefore, the Android automotive audio system cannot convert multiple stereo streams into a single multi-channel stream.
따라서, 본 발명은 하드웨어 요구사항에 의해 다채널을 하나의 스트림으로 만들어 제공하는 멀티 채널 플러그인을 지원하는 안드로이드 오토모티브 오디오 시스템 및 이를 이용한 스트림 변환 방법을 제공한다.Accordingly, the present invention provides an Android automotive audio system supporting a multi-channel plug-in that converts multiple channels into one stream according to hardware requirements and a stream conversion method using the same.
상기 본 발명의 기술적 과제를 달성하기 위한 본 발명의 하나의 특징인 적어도 하나의 프로세서에 의해 동작하는 안드로이드 오토모티브 시스템이 스트림을 변환하는 방법으로서, As a method for converting a stream by an Android automotive system operated by at least one processor, which is one feature of the present invention for achieving the technical problem of the present invention,
멀티 채널 플러그인 모듈을 초기화하여 복수의 스테레오 스트림 버퍼들과 하나의 멀티 채널 버퍼를 할당하는 단계, 복수의 미디어 어플리케이션에서 전송된 복수의 스테레오 오디오 스트림들을 오디오 HAL로부터 수신하면, 각 미디어 어플리케이션 별로 각 스테레오 오디오 스트림에 대한 오디오 데이터들을 상기 복수의 스테레오 스트림 버퍼들에 저장하는 단계, 상기 복수의 스테레오 스트림 버퍼들에 저장된 오디오 데이터들을 프레임 단위로 스트림 순서에 따라 나열하여 멀티 채널 스트림으로 변환하는 단계, 그리고 상기 변환한 멀티 채널 스트림을 재생하여 오디오 디바이스로 출력하는 단계를 포함한다.Allocating a plurality of stereo stream buffers and one multi-channel buffer by initializing the multi-channel plug-in module. When a plurality of stereo audio streams transmitted from a plurality of media applications are received from the audio HAL, each stereo audio stream is received for each media application. Storing audio data for a stream in the plurality of stereo stream buffers, converting the audio data stored in the plurality of stereo stream buffers into a multi-channel stream by arranging the audio data stored in the plurality of stereo stream buffers in frame order according to the stream order, and converting the audio data into a multi-channel stream. It includes the step of reproducing one multi-channel stream and outputting it to an audio device.
오디오 디바이스로 출력하는 단계 이후에, 상기 각 스테레오 스트림 버퍼의 버퍼 점유율을 확인하는 단계, 그리고 확인한 상기 버퍼 점유율을 기초로, 상기 각 스테레오 스트림 버퍼로 상기 오디오 HAL이 상기 오디오 데이터들을 쓰는 데이터 쓰기 주기를 설정하는 단계를 포함할 수 있다.After the step of outputting to the audio device, checking the buffer occupancy rate of each stereo stream buffer, and determining a data write cycle in which the audio HAL writes the audio data to each stereo stream buffer based on the checked buffer occupancy rate. It may include setting steps.
상기 데이터 쓰기 주기를 설정하는 단계는, 상기 버퍼 점유율이 제1 구간에 해당하면, 상기 데이터 쓰기 주기를 미리 설정한 값으로 설정할 수 있다.In the setting of the data write cycle, if the buffer occupancy rate corresponds to the first interval, the data write cycle may be set to a preset value.
상기 데이터 쓰기 주기를 설정하는 단계는, 상기 버퍼 점유율이 제2 구간에 해당하면, 상기 데이터 쓰기 주기를 상기 버퍼 점유율에 비례하는 값으로 설정할 수 있다.In the setting of the data write cycle, when the buffer occupancy rate corresponds to the second interval, the data write cycle may be set to a value proportional to the buffer occupancy rate.
상기 데이터 쓰기 주기를 설정하는 단계는, 상기 버퍼 점유율이 제3 구간에 해당하면, 상기 데이터 쓰기 주기를 프레임 크기와 오버플로우 방지를 위한 상수 값을 기초로 설정할 수 있다.In the setting of the data write cycle, if the buffer occupancy rate corresponds to the third interval, the data write cycle may be set based on a frame size and a constant value for preventing overflow.
상기 본 발명의 기술적 과제를 달성하기 위한 본 발명의 또 다른 특징인 안드로이드 오토모티브 시스템으로서,As an Android automotive system, which is another feature of the present invention for achieving the technical problem of the present invention,
복수의 미디어 어플리케이션들로부터 전송된 복수의 스테레오 오디오 스트림들을 저장하는 오디오 HAL(Hardware Abstraction Layer), 그리고 상기 오디오 HAL로부터 전송되는 복수의 스테레오 오디오 스트림들을 멀티 채널 스트림으로 변환하고, 변환한 상기 멀티 채널 스트림을 라이브러리를 기반으로 재생하여 오디오 디바이스로 출력하는 멀티 채널 플러그인 모듈을 포함한다.An audio HAL (Hardware Abstraction Layer) that stores a plurality of stereo audio streams transmitted from a plurality of media applications, and converts the plurality of stereo audio streams transmitted from the audio HAL into a multi-channel stream, and converts the multi-channel stream. It includes a multi-channel plug-in module that reproduces based on the library and outputs it to an audio device.
상기 멀티 채널 플러그인 모듈은, 상기 오디오 HAL로부터 전송되는 복수의 스테레오 오디오 스트림들에 대한 오디오 데이터들을 미디어 어플리케이션별로 각각 저장하는 복수의 스테레오 스트림 버퍼들, 상기 복수의 오디오 데이터들을 멀티 채널 스트림으로 변환하는 멀티 채널 컨버터, 상기 멀티 채널 컨버터가 변환한 상기 멀티 채널 스트림을 저장하는 멀티 채널 버퍼, 그리고 상기 멀티 채널 버퍼에 저장된 멀티 채널 스트림을 상기 라이브러리를 기반으로 재생하는 플레이백 모듈을 포함할 수 있다.The multi-channel plug-in module includes: a plurality of stereo stream buffers for storing audio data for a plurality of stereo audio streams transmitted from the audio HAL for each media application; It may include a channel converter, a multi-channel buffer for storing the multi-channel stream converted by the multi-channel converter, and a playback module for reproducing the multi-channel stream stored in the multi-channel buffer based on the library.
상기 라이브러리는 tinyALSA 라이브러리일 수 있다.The library may be a tinyALSA library.
상기 멀티 채널 플러그인 모듈은, 상기 복수의 스테레오 스트림 버퍼들의 언더플로우 또는 오버플로우를 방지하는 관리 모듈을 더 포함할 수 있다.The multi-channel plug-in module may further include a management module preventing underflow or overflow of the plurality of stereo stream buffers.
상기 관리 모듈은, 상기 각 스테레오 스트림 버퍼의 버퍼 점유율을 확인하고, 상기 버퍼 점유율을 기초로 상기 각 스테레오 스트림 버퍼로 상기 오디오 HAL이 상기 오디오 데이터들을 쓰는 데이터 쓰기 주기를 설정할 수 있다.The management module may determine a buffer occupancy rate of each stereo stream buffer, and set a data write cycle in which the audio HAL writes the audio data to each stereo stream buffer based on the buffer occupancy rate.
상기 관리 모듈은, 상기 버퍼 점유율이 제1 구간에 해당하면, 상기 데이터 쓰기 주기를 미리 설정한 값으로 설정하여 상기 언더플로우를 방지할 수 있다.The management module may prevent the underflow by setting the data write cycle to a preset value when the buffer occupancy rate corresponds to the first interval.
상기 관리 모듈은, 상기 버퍼 점유율이 제2 구간에 해당하면, 상기 데이터 쓰기 주기를 상기 버퍼 점유율에 비례하는 값으로 설정할 수 있다.When the buffer occupancy rate corresponds to the second interval, the management module may set the data writing period to a value proportional to the buffer occupancy rate.
상기 버퍼 점유율이 제3 구간에 해당하면, 상기 데이터 쓰기 주기를 프레임 크기와 기 설정된 상수 값을 기초로 설정하여, 상기 오버플로우를 방지할 수 있다.When the buffer occupancy rate corresponds to the third interval, the overflow may be prevented by setting the data write cycle based on the frame size and a predetermined constant value.
본 발명에 따르면, 단일 채널 스트림으로 운용할 경우 스트림 개수만큼 디바이스가 할당되어야 하지만, 멀티 채널 스트림으로 운용할 경우 하나의 디바이스에 할당되므로 하드웨어 리소스를 절약할 수 있다.According to the present invention, when operating as a single channel stream, devices must be allocated as many as the number of streams, but when operating as a multi-channel stream, hardware resources can be saved because it is allocated to one device.
또한, 안드로이드 환경에서 지원하지 못했던 멀티 채널 플러그인을 지원할 수 있다.In addition, multi-channel plug-ins that were not supported in the Android environment can be supported.
또한,안드로이드 오토모티브 오디오 환경에 맞는 다이나믹 한 HAL(Hardware Abstraction Layer)을 지원할 수 있다.In addition, it can support dynamic HAL (Hardware Abstraction Layer) suitable for the Android automotive audio environment.
도 1은 일반적인 안드로이드 오토모티브 시스템과 본 발명의 실시예에 따른 안드로이드 오토모티브 시스템을 비교한 예시도이다.
도 2는 본 발명의 실시예에 따른 안드로이드 오토모티브 시스템의 예시도이다.
도 3은 본 발명의 실시예에 따른 멀티 채널 플러그인 모듈의 구조도이다.
도 4는 본 발명의 실시예에 따른 관리 모듈의 예시도이다.
도 5는 본 발명의 실시예에 따른 스트림을 변환하는 방법에 대한 흐름도이다.1 is an exemplary view comparing a general Android automotive system and an Android automotive system according to an embodiment of the present invention.
2 is an exemplary diagram of an Android automotive system according to an embodiment of the present invention.
3 is a structural diagram of a multi-channel plug-in module according to an embodiment of the present invention.
4 is an exemplary view of a management module according to an embodiment of the present invention.
5 is a flowchart of a method for converting a stream according to an embodiment of the present invention.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, with reference to the accompanying drawings, embodiments of the present invention will be described in detail so that those skilled in the art can easily carry out the present invention. However, the present invention may be embodied in many different forms and is not limited to the embodiments described herein. And in order to clearly explain the present invention in the drawings, parts irrelevant to the description are omitted, and similar reference numerals are attached to similar parts throughout the specification.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. Throughout the specification, when a certain component is said to "include", it means that it may further include other components without excluding other components unless otherwise stated.
이하, 도면을 참조로 하여, 본 발명의 실시예에 따른 차량 멀티미디어 시스템 및 이를 이용한 스트리밍 버퍼 수위 제어 방법에 대해 설명한다. 본 발명의 실시예에 대해 설명하기 앞서, 일반적인 오디오 데이터 처리 방법에 대해 도 1을 참조로 먼저 설명한다.Hereinafter, a vehicle multimedia system according to an embodiment of the present invention and a method for controlling the level of a streaming buffer using the same will be described with reference to the drawings. Prior to describing an embodiment of the present invention, a general method for processing audio data will be first described with reference to FIG. 1 .
도 1은 일반적인 안드로이드 오토모티브 시스템과 본 발명의 실시예에 따른 안드로이드 오토모티브 시스템을 비교한 예시도이다.1 is an exemplary view comparing a general Android automotive system and an Android automotive system according to an embodiment of the present invention.
도 1의 (a)는 일반적인 안드로이드 오토모티브 시스템을 나타낸 예시도이고, 도 1의 (b)는 본 발명의 실시예에 따른 안드로이드 오토모티브 시스템을 나타낸 예시도이다.Figure 1 (a) is an exemplary diagram showing a general Android automotive system, Figure 1 (b) is an exemplary diagram showing an Android automotive system according to an embodiment of the present invention.
먼저, 도 1의 (a)에 도시된 바와 같이, 일반적인 안드로이드 오토모티브 시스템은 복수의 미디어 어플리케이션(10)들이 각각 오디오를 재생하면, 안드로이드 오토모티브 OS(20)는 스테레오 오디오 스트림을 받아 연결된 IVI(In-Vehicle Infotainment)로 제공한다. 이때, 종래의 안드로이드 오토모티브 시스템은 미디어 어플리케이션(10)들의 수만큼의 오디오 출력 디바이스들이 필요하다. First, as shown in (a) of FIG. 1, in a general Android automotive system, when a plurality of
여기서, 종래의 안드로이드 오토모티브 OS(20)는 미디어 어플리케이션(10)들에서 재생된 오디오를 재생하거나 녹음하기 위해, tinyALSA 라이브러리를 사용한다. 안드로이드 계열의 OS에서 사용하는 리눅스 커널에서 ALSA 라이브러리와 인터페이스하기 위한 tinyALSA 라이브러리는, 기본적인 오디오 재생, 오디오 녹음, 오디오 믹싱을 위해 사용되는 경량화 된 버전의 ALSA 라이브러리이다. tinyALSA 라이브러리는 ALSA 라이브러리보다 더 적은 수의 API와 플러그인을 제공하고, 다수의 스테레오 스트림을 하나의 멀티 채널 스트림으로 변환시키지 못한다.Here, the conventional Android automotive OS 20 uses the tinyALSA library to reproduce or record audio reproduced in the
따라서, 본 발명의 실시예에서는 도 1의 (b)에 도시된 바와 같이, 안드로이드 오토모티브 OS에 멀티 채널 플러그인을 삽입한 형태로 안드로이드 오토모티브 시스템(100)을 구현한다. 이를 통해, 복수의 미디어 어플리케이션(200)들에서 오디오가 실행되더라도, 멀티 채널 플러그인에서 복수의 스테레오 스트림들을 하나의 멀티 채널 스트림으로 변환한다. 그리고, 하나의 오디오 출력 디바이스(도면 미도시)를 통해 오디오를 출력할 수 있다.Therefore, in the embodiment of the present invention, as shown in (b) of FIG. 1, the Android
이러한 안드로이드 오토모티브 시스템(100)에 대해 도 2를 참조로 상세히 설명한다.The Android
도 2는 본 발명의 실시예에 따른 안드로이드 오토모티브 시스템의 예시도이다.2 is an exemplary diagram of an Android automotive system according to an embodiment of the present invention.
도 2에 도시된 바와 같이, 안드로이드 오토모티브 시스템(100)은 오디오 프레임워크(110), 오디오 HAL(120), 멀티 채널 플러그인 모듈(130) 그리고 tinyALSA인 라이브러리(140)로 구성된 안드로이드 오토모티브 OS에 의해 구동된다.As shown in FIG. 2, the Android
오디오 프레임워크(110)는 안드로이드 오토모티브 시스템(100)에 기본으로 탑재되며, 각 미디어 어플리케이션(200)으로부터 수신한 인코딩 된 오디오 데이터를 디코딩하여 디지털 오디오 데이터인 스테레오 오디오 데이터로 변환한다. 즉, 오디오 프레임워크(110)는 MP3와 같은 인코딩 된 오디오 데이터를 디코딩하여 디지털의 PCM(Pulse Code Modulation) 데이터로 변환하고, 변환한 디지털 PCM 데이터인 스테레오 오디오 데이터를 오디오 HAL(120)로 전달한다.The
그리고 오디오 프레임워크(110)는, 스테레오 오디오 데이터를 미리 정해진 정책에 따라 리샘플링(Resampling), 비트 컨버팅(Bit Converting), 믹싱(Mixing) 등의 데이터 가공 처리한다. 오디오 프레임워크(110)가 인코딩 된 데이터를 디코딩하여 디지털 스테레오 오디오 데이터로 변환하거나, 변환된 스테레오 오디오 데이터를 가공 처리하는 방법은 다양한 형태로 알려져 있으므로, 본 발명의 실시예에서는 어느 하나의 방법으로 한정하지 않는다.The
오디오 HAL(120)은 미디어 어플리케이션(200) 또는 기타 소프트웨어 프로그램이 하드웨어 장치(예를 들어, 스피커 등)와 상호 작용하기 위한 인터페이스를 제공한다. 또한, 오디오 HAL(120)은 각 미디어 어플리케이션(200)으로부터 전송되는 스테레오 오디오 데이터를 멀티 채널 플러그인 모듈(130)의 각 스테레오 스트림 버퍼에 저장한다. The audio HAL 120 provides an interface for the
멀티 채널 플러그인 모듈(130)은 복수의 스테레오 스트림 버퍼로 구성된다. 멀티 채널 플러그인 모듈(130)은 오디오 HAL(120)로부터 수신한 스테레오 오디오 데이터를 스테레오 스트림 버퍼에 저장한다. The multi-channel plug-in
그리고, 멀티 채널 플러그인 모듈(130)은 복수의 스테레오 스트림들을 하나의 멀티 채널 스트림으로 변환하기 위해, 실시간으로 각 스테레오 스트림 버퍼로부터 스테레오 오디오 데이터를 추출한다. 그리고 멀티 채널 플러그인 모듈(130)은, 추출한 스테레오 오디오 데이터들을 멀티 채널 오디오 데이터로 재구성하여, 멀티 채널 버퍼에 저장한다. And, the multi-channel plug-in
또한, 멀티 채널 플러그인 모듈(130)은 멀티 채널 버퍼에 저장된 멀티 채널 오디오 데이터를 라이브러리(140)로 전달하여, 멀티 채널 스트림에 대한 오디오 데이터를 최종적으로 스피커와 같은 하드웨어 장치(도면 미도시)를 통해 출력하도록 한다.In addition, the multi-channel plug-in
여기서, 멀티 채널 플러그인 모듈(130)의 구조에 대해 도 3을 참조로 설명한다.Here, the structure of the multi-channel plug-in
도 3은 본 발명의 실시예에 따른 멀티 채널 플러그인 모듈의 구조도이다.3 is a structural diagram of a multi-channel plug-in module according to an embodiment of the present invention.
도 3에 도시된 바와 같이, 멀티 채널 플러그인 모듈(130)은 복수의 스테레오 스트림 버퍼(131), 관리 모듈(132), 멀티 채널 컨버터(133), 멀티 채널 버퍼(134), 그리고 플레이백 모듈(135)로 구성된다.As shown in FIG. 3, the multi-channel plug-in
오디오 HAL(120)로부터 복수의 스테레오 오디오 데이터가 전송되면, 복수의 스테레오 스트림 버퍼(131)에 각각 저장한다. 본 발명의 실시예에서는 스테레오 스트림 버퍼의 수가 미디어 어플리케이션(200)의 수와 동일하게 구성되는 것을 예로 하여 설명하나, 반드시 이와 같이 한정되는 것은 아니다. When a plurality of stereo audio data is transmitted from the
관리 모듈(132)은 각 스테레오 스트림 버퍼(131)의 언더플로우 또는 오버플로우를 관리한다. 스테레오 스트림 버퍼(131)에 언더플로우가 발생하면, 사용자는 오디오가 끊기는 형태로 듣게 된다. 반대로 스테레오 스트림 버퍼(131)에 오버플로우가 발생하면, 사용자는 스피커를 통해 출력되는 오디오를 소음처럼 듣게 된다.The
이를 관리하기 위해, 관리 모듈(132)은 실시간으로 스테레오 스트림 버퍼(131)의 버퍼 점유율을 계산하고, 계산한 버퍼 점유율을 기초로 오디오 HAL(120)이 각 스테레오 스트림 버퍼(131)에 스테레오 오디오 데이터를 쓰는(write) 주기를 결정한다. 관리 모듈(132)에 대해서는 이후 상세히 설명한다.To manage this, the
멀티 채널 컨버터(133)는 각 스테레오 스트림 버퍼(131)에 저장된 복수의 스테레오 스트림들을 하나의 멀티 채널 스트림으로 변환한다. 멀티 채널 컨버터(133)는 2채널로 이루어진 PCM 데이터를 프레임 단위로 스트림 순서에 따라 나열하여 하나의 멀티 채널 스트림으로 구성하는 것을 예로 하여 설명하나, 반드시 이와 같이 한정되는 것은 아니다.The
이를 위해, 멀티 채널 컨버터(133)는 각 스테레오 스트림 버퍼(131)로부터 실시간으로 스테레오 오디오 데이터들을 추출한다. 그리고 멀티 채널 컨버터(133)는 추출한 스테레오 오디오 데이터들을 멀티 채널 오디오 데이터로 재구성하여 멀티 채널 버퍼(134)에 저장한다.To this end, the
플레이백 모듈(135)은 멀티 채널 버퍼(134)에 저장된 멀티 채널 오디오 데이터를 tinyALSA 라이브러리를 기반으로 재생하여, 오디오 데이터를 출력한다.The
여기서, 관리 모듈(132)이 각 스테레오 스트림 버퍼(131)의 언더플로우 또는 오버플로우를 방지하는 예에 대해 도 4를 참조로 설명한다.Here, an example in which the
도 4는 본 발명의 실시예에 따른 관리 모듈의 예시도이다.4 is an exemplary view of a management module according to an embodiment of the present invention.
도 4에 도시된 바와 같이, 관리 모듈(132)은 각 스테레오 스트림 버퍼(131)의 언더플로우 또는 오버플로우를 방지하기 위해, 각 스테레오 스트림 버퍼(131)의 점유율()을 계산한다. 여기서 점유율은 오디오 HAL(120)이 n번째에 스테레오 스트림으로 오디오 데이터를 쓰기 한 후의 스테레오 스트림 버퍼(131)의 점유율을 의미한다. 관리 모듈(132)이 각 스테레오 스트림 버퍼(131)의 점유율을 계산하는 방법은 다양한 방법으로 계산할 수 있으므로 본 발명의 실시예에서는 어느 하나의 방법으로 한정하지 않는다.As shown in FIG. 4, the
관리 모듈(132)은 각 스테레오 스트림 버퍼(131)의 점유율을 계산한 후, 계산한 점유율에 따라 각 스테레오 스트림 버퍼(131)의 오디오 데이터 쓰기 주기()를 조절하며, 다음 수학식 1과 같다.After the
여기서, 는 오디오 HAL(120)이 n+1번째에 i번째 스테레오 스트림으로 오디오 데이터를 스테레오 스트림 버퍼(131)에 쓰는 주기로, 본 발명의 실시예에서의 오디오 데이터 쓰기 주기의 단위는 ㎲인 것을 예로 하여 설명하나, 반드시 이와 같이 한정되는 것은 아니다.here, is a cycle in which the
그리고, FS는 프레임 크기로, 오디오 HAL(120)이 한 번 오디오 데이터를 쓸 때마다 멀티 채널 플러그인 모듈(130)에 전달하는 데이터 크기(단위: bytes)를 시간 값으로 환산한 값(단위: ㎲)이다. 여기서, 데이터 크기를 시간 값으로 환산하는 방법은 이미 알려진 기술로, 본 발명의 실시예에서는 어느 하나의 방법으로 한정하여 설명하지 않는다.And, FS is a frame size, a value obtained by converting the data size (unit: bytes) delivered to the multi-channel plug-in
그리고, k는 스테레오 스트림 버퍼(131)의 오버플로우 방지를 위해 사용하는 상수 값이다. P는 스테레오 스트림 버퍼(131)의 언더플로우 방지를 위해 사용하는 상수 값이다. 두 상수 값은 어느 하나의 값으로 한정하지 않는다.And, k is a constant value used to prevent overflow of the
수학식 1을 설명하면, 관리 모듈(132)은 계산한 점유율이 미리 설정된 제1 구간에 해당하는 것으로 확인하면, 각 스테레오 스트림 버퍼(131)를 빠르게 비우기 위해 오디오 데이터 쓰기 주기를 특정 값으로 설정한다. 본 발명의 실시예에서는 제1 구간으로 0 < 점유율 < 20인 것을 예로 하여 설명하고, 오디오 데이터 쓰기 주기를 설정한 특정 값으로 10㎲인 것을 예로 하여 설명한다.Referring to
한편, 관리 모듈(132)은 계산한 점유율이 미리 설정된 제2 구간에 해당하는 것으로 확인하면, 스테레오 스트림 버퍼(131)의 버퍼 점유율이 안정적인 것으로 판단한다. 따라서, 관리 모듈(132)은 버퍼 점유율에 비례하여 오디오 데이터 쓰기 주기를 설정한다. 본 발명의 실시예에서는 제2 구간으로 20 ≤ 점유율 < 90인 것을 예로 하여 설명한다.Meanwhile, the
또한, 관리 모듈(132)은 계산한 점유율이 미리 설정된 제3 구간에 해당하는 것으로 확인하면, 스테레오 스트림 버퍼(131)의 버퍼 점유율이 매우 높아 오버플로우가 발생할 가능성이 매우 높은 것으로 판단한다. 따라서, 관리 모듈(132)은 각 스테레오 스트림 버퍼(131)를 빠르게 채우기 위해 오디오 데이터 쓰기 주기를 FS * k로 계산된 값으로 설정한다. 본 발명의 실시예에서는 제3 구간으로 90 ≤ 점유율 < 100인 것을 예로 하여 설명한다.In addition, when the
다음은, 상술한 안드로이드 오토모티브 시스템(100)으로 다수의 스테레오 스트림들을 하나의 멀티 채널 스트림으로 변환하는 방법에 대해 도 5를 참조로 설명한다. Next, a method of converting a plurality of stereo streams into a single multi-channel stream by the above-described Android
도 5는 본 발명의 실시예에 따른 스트림을 변환하는 방법에 대한 흐름도이다.5 is a flowchart of a method for converting a stream according to an embodiment of the present invention.
도 5에 도시된 바와 같이, 안드로이드 오토모티브 시스템(100)은 오디오 HAL(120)을 초기화한다(S100). 그리고 나서 안드로이드 오토모티브 시스템(100)은 멀티 채널 플러그인 모듈(130)을 초기화한다(S110). As shown in FIG. 5, the Android
S110 단계에서 실행한 멀티 채널 플러그인 모듈(130)의 초기화를 통해, 관리 모듈(132)은 각 스테레오 오디오 스트림 운용을 위한 링 버퍼인 스테레오 스트림 버퍼(131)를 할당하고, 멀티채널 오디오 스트림 운용을 위한 링 버퍼인 멀티 채널 버퍼(134)를 할당한다. 그리고 관리 모듈(132)은 플레이백 모듈(135)로 멀티 채널 오디오 스트림 출력을 위한 장치 생성을 요청하면, 플레이백 모듈(135)은 tinyALSA 인터페이스 기반으로 라이브러리(140)로 멀티 채널 오디오 스트림을 출력하기 위한 장치 생성을 요청한다.Through the initialization of the multi-channel plug-in
오디오 HAL(120)로부터 복수의 스테레오 오디오 스트림들이 전달되면, 멀티 채널 플러그인 모듈(130)은 S110 단계에서 할당한 각 스테레오 스트림 버퍼(131)에 오디오 데이터를 저장한다(S120). 멀티 채널 컨버터(133)는 S120 단계에서 스테레오 스트림 버퍼(131)에 저장된 오디오 데이터들을 이용하여 멀티 채널 스트림으로 변환한다(S130). When a plurality of stereo audio streams are delivered from the
그러면 플레이백 모듈(135)은 S130 단계에서 변환된 멀티 채널 스트림을 tinyALSA 인터페이스 기반으로 재생하여 시스템의 최종단인 오디오 디바이스(예를 들어, 스피커)로 출력한다(S140). 이와 같은 단계를 통해 복수의 스테레오 오디오 스트림들이 하나의 멀티 채널 스트림으로 재생될 때, 관리 모듈(132)은 각 스테레오 스트림 버퍼(131)의 버퍼 점유율을 확인한다(S150). Then, the
그리고, 관리 모듈(132)은 확인한 점유율을 기초로, 오디오 HAL(120)이 스테레오 스트림 버퍼(131)에 오디오 데이터 쓰기 할 주기를 설정한다(S160). Then, the
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements made by those skilled in the art using the basic concept of the present invention defined in the following claims are also included in the scope of the present invention. that fall within the scope of the right.
Claims (13)
멀티 채널 플러그인 모듈을 초기화하여 복수의 스테레오 스트림 버퍼들과 하나의 멀티 채널 버퍼를 할당하는 단계,
복수의 미디어 어플리케이션에서 전송된 복수의 스테레오 오디오 스트림들을 오디오 HAL로부터 수신하면, 각 미디어 어플리케이션별로 각 스테레오 오디오 스트림에 대한 오디오 데이터들을 상기 복수의 스테레오 스트림 버퍼들에 저장하는 단계,
상기 복수의 스테레오 스트림 버퍼들에 저장된 오디오 데이터들을 프레임 단위로 스트림 순서에 따라 나열하여 멀티 채널 스트림으로 변환하는 단계, 그리고
상기 변환한 멀티 채널 스트림을 재생하여 오디오 디바이스로 출력하는 단계
를 포함하는, 스트림 변환 방법.A method in which an Android automotive system operated by at least one processor converts a stream,
Initializing a multi-channel plug-in module to allocate a plurality of stereo stream buffers and one multi-channel buffer;
When a plurality of stereo audio streams transmitted from a plurality of media applications are received from the audio HAL, storing audio data for each stereo audio stream for each media application in the plurality of stereo stream buffers;
converting the audio data stored in the plurality of stereo stream buffers into a multi-channel stream by arranging them in frame order according to the stream order; and
Reproducing the converted multi-channel stream and outputting it to an audio device
Including, stream conversion method.
오디오 디바이스로 출력하는 단계 이후에,
상기 각 스테레오 스트림 버퍼의 버퍼 점유율을 확인하는 단계, 그리고
확인한 상기 버퍼 점유율을 기초로, 상기 각 스테레오 스트림 버퍼로 상기 오디오 HAL이 상기 오디오 데이터들을 쓰는 데이터 쓰기 주기를 설정하는 단계
를 포함하는, 스트림 변환 방법.According to claim 1,
After outputting to an audio device,
Checking the buffer occupancy of each stereo stream buffer, and
Setting a data write cycle in which the audio HAL writes the audio data to each stereo stream buffer based on the confirmed buffer occupancy rate
Including, stream conversion method.
상기 데이터 쓰기 주기를 설정하는 단계는,
상기 버퍼 점유율이 제1 구간에 해당하면, 상기 데이터 쓰기 주기를 미리 설정한 값으로 설정하는, 스트림 변환 방법.According to claim 2,
The step of setting the data write cycle,
If the buffer occupancy rate corresponds to the first interval, setting the data write cycle to a preset value, the stream conversion method.
상기 데이터 쓰기 주기를 설정하는 단계는,
상기 버퍼 점유율이 제2 구간에 해당하면, 상기 데이터 쓰기 주기를 상기 버퍼 점유율에 비례하는 값으로 설정하는 , 스트림 변환 방법.According to claim 2,
The step of setting the data write cycle,
If the buffer occupancy rate corresponds to the second interval, setting the data write cycle to a value proportional to the buffer occupancy rate.
상기 데이터 쓰기 주기를 설정하는 단계는,
상기 버퍼 점유율이 제3 구간에 해당하면, 상기 데이터 쓰기 주기를 프레임 크기와 오버플로우 방지를 위한 상수 값을 기초로 설정하는, 스트림 변환 방법.According to claim 2,
The step of setting the data write cycle,
If the buffer occupancy corresponds to a third period, the data write cycle is set based on a frame size and a constant value for preventing overflow.
복수의 미디어 어플리케이션들로부터 전송된 복수의 스테레오 오디오 스트림들을 저장하는 오디오 HAL(Hardware Abstraction Layer), 그리고
상기 오디오 HAL로부터 전송되는 복수의 스테레오 오디오 스트림들을 멀티 채널 스트림으로 변환하고, 변환한 상기 멀티 채널 스트림을 라이브러리를 기반으로 재생하여 오디오 디바이스로 출력하는 멀티 채널 플러그인 모듈
을 포함하는, 안드로이드 오토모티브 시스템.As an Android automotive system,
An audio hardware abstraction layer (HAL) that stores a plurality of stereo audio streams transmitted from a plurality of media applications, and
A multi-channel plug-in module that converts a plurality of stereo audio streams transmitted from the audio HAL into a multi-channel stream, reproduces the converted multi-channel stream based on a library, and outputs the converted multi-channel stream to an audio device.
Including, Android automotive system.
상기 멀티 채널 플러그인 모듈은,
상기 오디오 HAL로부터 전송되는 복수의 스테레오 오디오 스트림들에 대한 오디오 데이터들을 미디어 어플리케이션별로 각각 저장하는 복수의 스테레오 스트림 버퍼들,
상기 복수의 오디오 데이터들을 멀티 채널 스트림으로 변환하는 멀티 채널 컨버터,
상기 멀티 채널 컨버터가 변환한 상기 멀티 채널 스트림을 저장하는 멀티 채널 버퍼, 그리고
상기 멀티 채널 버퍼에 저장된 멀티 채널 스트림을 상기 라이브러리를 기반으로 재생하는 플레이백 모듈
을 포함하는, 안드로이드 오토모티브 시스템.According to claim 6,
The multi-channel plug-in module,
A plurality of stereo stream buffers respectively storing audio data for a plurality of stereo audio streams transmitted from the audio HAL for each media application;
A multi-channel converter for converting the plurality of audio data into a multi-channel stream;
A multi-channel buffer for storing the multi-channel stream converted by the multi-channel converter, and
Playback module for reproducing the multi-channel stream stored in the multi-channel buffer based on the library
Including, Android automotive system.
상기 라이브러리는 tinyALSA 라이브러리인, 안드로이드 오토모티브 시스템.According to claim 7,
The library is a tinyALSA library, Android Automotive System.
상기 멀티 채널 플러그인 모듈은,
상기 복수의 스테레오 스트림 버퍼들의 언더플로우 또는 오버플로우를 방지하는 관리 모듈
을 더 포함하는, 안드로이드 오토모티브 시스템.According to claim 8,
The multi-channel plug-in module,
A management module preventing underflow or overflow of the plurality of stereo stream buffers
Further comprising, the Android automotive system.
상기 관리 모듈은,
상기 각 스테레오 스트림 버퍼의 버퍼 점유율을 확인하고, 상기 버퍼 점유율을 기초로 상기 각 스테레오 스트림 버퍼로 상기 오디오 HAL이 상기 오디오 데이터들을 쓰는 데이터 쓰기 주기를 설정하는, 안드로이드 오토모티브 시스템.According to claim 9,
The management module,
Checking the buffer occupancy of each stereo stream buffer, and setting a data write cycle in which the audio HAL writes the audio data to each stereo stream buffer based on the buffer occupancy.
상기 관리 모듈은,
상기 버퍼 점유율이 제1 구간에 해당하면, 상기 데이터 쓰기 주기를 미리 설정한 값으로 설정하여 상기 언더플로우를 방지하는, 안드로이드 오토모티브 시스템.According to claim 10,
The management module,
If the buffer occupancy rate corresponds to the first interval, the Android automotive system prevents the underflow by setting the data write cycle to a preset value.
상기 관리 모듈은,
상기 버퍼 점유율이 제2 구간에 해당하면, 상기 데이터 쓰기 주기를 상기 버퍼 점유율에 비례하는 값으로 설정하는, 안드로이드 오토모티브 시스템.According to claim 10,
The management module,
If the buffer occupancy corresponds to the second period, the Android automotive system sets the data write cycle to a value proportional to the buffer occupancy.
상기 버퍼 점유율이 제3 구간에 해당하면, 상기 데이터 쓰기 주기를 프레임 크기와 기 설정된 상수 값을 기초로 설정하여, 상기 오버플로우를 방지하는, 안드로이드 오토모티브 시스템.According to claim 10,
If the buffer occupancy rate corresponds to the third period, the Android automotive system prevents the overflow by setting the data write cycle based on the frame size and a predetermined constant value.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210180989A KR20230091661A (en) | 2021-12-16 | 2021-12-16 | Android automotive audio system and method for stream conversion using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210180989A KR20230091661A (en) | 2021-12-16 | 2021-12-16 | Android automotive audio system and method for stream conversion using the same |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230091661A true KR20230091661A (en) | 2023-06-23 |
Family
ID=86993784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210180989A KR20230091661A (en) | 2021-12-16 | 2021-12-16 | Android automotive audio system and method for stream conversion using the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20230091661A (en) |
-
2021
- 2021-12-16 KR KR1020210180989A patent/KR20230091661A/en not_active Application Discontinuation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100630850B1 (en) | System and method for providing interactive audio in a multi-channel audio environment | |
JP6620108B2 (en) | Post-coding bitrate reduction for multiple object audio | |
KR101547809B1 (en) | Synchronization and switchover methods and systems for an adaptive audio system | |
EP2465114B1 (en) | System for adaptively streaming audio objects | |
US6662060B1 (en) | Method and apparatus for multimedia playback with title specific parameters | |
US20150032797A1 (en) | Distributed audio playback and recording | |
JP3393740B2 (en) | Surround sound system and method | |
US6804655B2 (en) | Systems and methods for transmitting bursty-asnychronous data over a synchronous link | |
CN1678055A (en) | Transmission apparatus, reception apparatus and transmission/reception system | |
KR20230091661A (en) | Android automotive audio system and method for stream conversion using the same | |
US20080114478A1 (en) | Method and System for Multi-Channel PCM Audio Grouping in Hardware | |
US20030163303A1 (en) | Memory sharing scheme in audio post-processing | |
CN105430486B (en) | The method and apparatus that audio or video plays | |
US9762704B2 (en) | Service based media player | |
WO2004025467A1 (en) | Recording device and recording method | |
US8605564B2 (en) | Audio mixing method and audio mixing apparatus capable of processing and/or mixing audio inputs individually | |
US6078975A (en) | Data input/output apparatus, data input/output method, data recording and reproducing apparatus, and data recording and reproducing method | |
US20030058560A1 (en) | Apparatus and method for processing content information capable of time-divisionally carrying out recording and reproducing operations | |
JP2006067074A (en) | Information processor, sound reproduction system, sound reproduction method, and program therefor | |
JP4199862B2 (en) | Method and apparatus for controlling buffering of a data stream | |
CN116260798A (en) | Method for coordinating services of various players and preempting ALSA (ALSA resource) | |
KR20210076652A (en) | In vehicle multimedia system and method of managing storage for the same | |
KR101315994B1 (en) | System and method for implementing audio file using virtual machine | |
Wootton et al. | Audio and Inter-IC Sound (I2S) | |
KR100954010B1 (en) | Programmable multimedia apparatus of data processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |