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 PDF

Info

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
Application number
KR1020210180989A
Other languages
Korean (ko)
Inventor
황민구
이정훈
이상아
Original Assignee
주식회사 텔레칩스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 텔레칩스 filed Critical 주식회사 텔레칩스
Priority to KR1020210180989A priority Critical patent/KR20230091661A/en
Publication of KR20230091661A publication Critical patent/KR20230091661A/en

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech 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/008Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech 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/04Speech 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/16Vocoder architecture
    • G10L19/167Audio 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

Provided is a method for stream conversion, which is performed by an Android automotive system operated by at least one processor. The method of the present invention comprises the steps of: initializing a multichannel plug-in module and allocating a plurality of stereo stream buffers and one multichannel buffer; when receiving a plurality of stereo audio streams transmitted by a plurality of media applications from an audio HAL, storing audio data for each stereo audio stream for each media application in the plurality of the stereo stream buffers; converting the audio data stored in the plurality of the stereo stream buffers into a multichannel stream; and playing the converted multichannel stream to output the same to an audio device. Accordingly, hardware resources can be saved.

Description

안드로이드 오토모티브 오디오 시스템 및 이를 이용한 스트림 변환 방법{Android automotive audio system and method for stream conversion using the same}Android automotive audio system and method for stream conversion using the same}

본 발명은 안드로이드 오토모티브 오디오 시스템에서 실시간으로 다수의 스테레오 스트림을 하나의 멀티채널 스트림으로 변환시키는 안드로이드 오토모티브 오디오 시스템 및 이를 이용한 스트림 변환 방법에 관한 것이다.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 media applications 10 play audio, the Android automotive OS 20 receives a stereo audio stream and connects the IVI (In- Vehicle Infotainment). At this time, the conventional Android automotive system requires as many audio output devices as the number of media applications 10 .

여기서, 종래의 안드로이드 오토모티브 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 media applications 10 . The tinyALSA library for interfacing with the ALSA library in the Linux kernel used in the Android-type OS is a lightweight version of the ALSA library used for basic audio playback, audio recording, and audio mixing. The tinyALSA library provides fewer APIs and plug-ins than the ALSA library, and cannot convert multiple stereo streams into a single multi-channel stream.

따라서, 본 발명의 실시예에서는 도 1의 (b)에 도시된 바와 같이, 안드로이드 오토모티브 OS에 멀티 채널 플러그인을 삽입한 형태로 안드로이드 오토모티브 시스템(100)을 구현한다. 이를 통해, 복수의 미디어 어플리케이션(200)들에서 오디오가 실행되더라도, 멀티 채널 플러그인에서 복수의 스테레오 스트림들을 하나의 멀티 채널 스트림으로 변환한다. 그리고, 하나의 오디오 출력 디바이스(도면 미도시)를 통해 오디오를 출력할 수 있다.Therefore, in the embodiment of the present invention, as shown in (b) of FIG. 1, the Android automotive system 100 is implemented in the form of inserting a multi-channel plug-in into the Android automotive OS. Through this, even if audio is executed in a plurality of media applications 200, the multi-channel plug-in converts a plurality of stereo streams into one multi-channel stream. Also, audio may be output through one audio output device (not shown).

이러한 안드로이드 오토모티브 시스템(100)에 대해 도 2를 참조로 상세히 설명한다.The Android automotive system 100 will be described in detail with reference to FIG. 2 .

도 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 automotive system 100 is driven by the Android automotive OS composed of an audio framework 110, an audio HAL 120, a multi-channel plug-in module 130, and a library 140 that is tinyALSA. do.

오디오 프레임워크(110)는 안드로이드 오토모티브 시스템(100)에 기본으로 탑재되며, 각 미디어 어플리케이션(200)으로부터 수신한 인코딩 된 오디오 데이터를 디코딩하여 디지털 오디오 데이터인 스테레오 오디오 데이터로 변환한다. 즉, 오디오 프레임워크(110)는 MP3와 같은 인코딩 된 오디오 데이터를 디코딩하여 디지털의 PCM(Pulse Code Modulation) 데이터로 변환하고, 변환한 디지털 PCM 데이터인 스테레오 오디오 데이터를 오디오 HAL(120)로 전달한다.The audio framework 110 is basically installed in the Android automotive system 100 and decodes encoded audio data received from each media application 200 and converts the encoded audio data into digital audio data, i.e., stereo audio data. That is, the audio framework 110 decodes encoded audio data such as MP3, converts it into digital PCM (Pulse Code Modulation) data, and transfers the converted digital PCM data, stereo audio data, to the audio HAL 120. .

그리고 오디오 프레임워크(110)는, 스테레오 오디오 데이터를 미리 정해진 정책에 따라 리샘플링(Resampling), 비트 컨버팅(Bit Converting), 믹싱(Mixing) 등의 데이터 가공 처리한다. 오디오 프레임워크(110)가 인코딩 된 데이터를 디코딩하여 디지털 스테레오 오디오 데이터로 변환하거나, 변환된 스테레오 오디오 데이터를 가공 처리하는 방법은 다양한 형태로 알려져 있으므로, 본 발명의 실시예에서는 어느 하나의 방법으로 한정하지 않는다.The audio framework 110 processes data such as resampling, bit converting, and mixing according to a predetermined policy on the stereo audio data. Since the audio framework 110 decodes the encoded data and converts it into digital stereo audio data, or processes the converted stereo audio data, various methods are known, so the embodiment of the present invention is limited to one method. I never do that.

오디오 HAL(120)은 미디어 어플리케이션(200) 또는 기타 소프트웨어 프로그램이 하드웨어 장치(예를 들어, 스피커 등)와 상호 작용하기 위한 인터페이스를 제공한다. 또한, 오디오 HAL(120)은 각 미디어 어플리케이션(200)으로부터 전송되는 스테레오 오디오 데이터를 멀티 채널 플러그인 모듈(130)의 각 스테레오 스트림 버퍼에 저장한다. The audio HAL 120 provides an interface for the media application 200 or other software programs to interact with hardware devices (eg, speakers, etc.). In addition, the audio HAL 120 stores stereo audio data transmitted from each media application 200 in each stereo stream buffer of the multi-channel plug-in module 130.

멀티 채널 플러그인 모듈(130)은 복수의 스테레오 스트림 버퍼로 구성된다. 멀티 채널 플러그인 모듈(130)은 오디오 HAL(120)로부터 수신한 스테레오 오디오 데이터를 스테레오 스트림 버퍼에 저장한다. The multi-channel plug-in module 130 is composed of a plurality of stereo stream buffers. The multi-channel plug-in module 130 stores stereo audio data received from the audio HAL 120 in a stereo stream buffer.

그리고, 멀티 채널 플러그인 모듈(130)은 복수의 스테레오 스트림들을 하나의 멀티 채널 스트림으로 변환하기 위해, 실시간으로 각 스테레오 스트림 버퍼로부터 스테레오 오디오 데이터를 추출한다. 그리고 멀티 채널 플러그인 모듈(130)은, 추출한 스테레오 오디오 데이터들을 멀티 채널 오디오 데이터로 재구성하여, 멀티 채널 버퍼에 저장한다. And, the multi-channel plug-in module 130 extracts stereo audio data from each stereo stream buffer in real time to convert a plurality of stereo streams into a single multi-channel stream. And, the multi-channel plug-in module 130 reconstructs the extracted stereo audio data into multi-channel audio data and stores them in a multi-channel buffer.

또한, 멀티 채널 플러그인 모듈(130)은 멀티 채널 버퍼에 저장된 멀티 채널 오디오 데이터를 라이브러리(140)로 전달하여, 멀티 채널 스트림에 대한 오디오 데이터를 최종적으로 스피커와 같은 하드웨어 장치(도면 미도시)를 통해 출력하도록 한다.In addition, the multi-channel plug-in module 130 transfers the multi-channel audio data stored in the multi-channel buffer to the library 140, and finally converts the audio data for the multi-channel stream through a hardware device (not shown) such as a speaker. to output

여기서, 멀티 채널 플러그인 모듈(130)의 구조에 대해 도 3을 참조로 설명한다.Here, the structure of the multi-channel plug-in module 130 will be described with reference to FIG. 3 .

도 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 module 130 includes a plurality of stereo stream buffers 131, a management module 132, a multi-channel converter 133, a multi-channel buffer 134, and a playback module ( 135).

오디오 HAL(120)로부터 복수의 스테레오 오디오 데이터가 전송되면, 복수의 스테레오 스트림 버퍼(131)에 각각 저장한다. 본 발명의 실시예에서는 스테레오 스트림 버퍼의 수가 미디어 어플리케이션(200)의 수와 동일하게 구성되는 것을 예로 하여 설명하나, 반드시 이와 같이 한정되는 것은 아니다. When a plurality of stereo audio data is transmitted from the audio HAL 120, they are respectively stored in the plurality of stereo stream buffers 131. In an embodiment of the present invention, an example in which the number of stereo stream buffers is the same as the number of media applications 200 is described, but is not necessarily limited thereto.

관리 모듈(132)은 각 스테레오 스트림 버퍼(131)의 언더플로우 또는 오버플로우를 관리한다. 스테레오 스트림 버퍼(131)에 언더플로우가 발생하면, 사용자는 오디오가 끊기는 형태로 듣게 된다. 반대로 스테레오 스트림 버퍼(131)에 오버플로우가 발생하면, 사용자는 스피커를 통해 출력되는 오디오를 소음처럼 듣게 된다.The management module 132 manages underflow or overflow of each stereo stream buffer 131 . When underflow occurs in the stereo stream buffer 131, the user hears audio in the form of interruption. Conversely, if overflow occurs in the stereo stream buffer 131, the user hears the audio output through the speaker as noise.

이를 관리하기 위해, 관리 모듈(132)은 실시간으로 스테레오 스트림 버퍼(131)의 버퍼 점유율을 계산하고, 계산한 버퍼 점유율을 기초로 오디오 HAL(120)이 각 스테레오 스트림 버퍼(131)에 스테레오 오디오 데이터를 쓰는(write) 주기를 결정한다. 관리 모듈(132)에 대해서는 이후 상세히 설명한다.To manage this, the management module 132 calculates the buffer occupancy rate of the stereo stream buffer 131 in real time, and the audio HAL 120 stores stereo audio data in each stereo stream buffer 131 based on the calculated buffer occupancy rate. determines the write cycle. The management module 132 will be described in detail later.

멀티 채널 컨버터(133)는 각 스테레오 스트림 버퍼(131)에 저장된 복수의 스테레오 스트림들을 하나의 멀티 채널 스트림으로 변환한다. 멀티 채널 컨버터(133)는 2채널로 이루어진 PCM 데이터를 프레임 단위로 스트림 순서에 따라 나열하여 하나의 멀티 채널 스트림으로 구성하는 것을 예로 하여 설명하나, 반드시 이와 같이 한정되는 것은 아니다.The multi-channel converter 133 converts a plurality of stereo streams stored in each stereo stream buffer 131 into one multi-channel stream. The multi-channel converter 133 arranges two-channel PCM data according to the stream order in units of frames to configure one multi-channel stream as an example, but is not necessarily limited thereto.

이를 위해, 멀티 채널 컨버터(133)는 각 스테레오 스트림 버퍼(131)로부터 실시간으로 스테레오 오디오 데이터들을 추출한다. 그리고 멀티 채널 컨버터(133)는 추출한 스테레오 오디오 데이터들을 멀티 채널 오디오 데이터로 재구성하여 멀티 채널 버퍼(134)에 저장한다.To this end, the multi-channel converter 133 extracts stereo audio data from each stereo stream buffer 131 in real time. And the multi-channel converter 133 reconstructs the extracted stereo audio data into multi-channel audio data and stores them in the multi-channel buffer 134 .

플레이백 모듈(135)은 멀티 채널 버퍼(134)에 저장된 멀티 채널 오디오 데이터를 tinyALSA 라이브러리를 기반으로 재생하여, 오디오 데이터를 출력한다.The playback module 135 reproduces multi-channel audio data stored in the multi-channel buffer 134 based on the tinyALSA library and outputs audio data.

여기서, 관리 모듈(132)이 각 스테레오 스트림 버퍼(131)의 언더플로우 또는 오버플로우를 방지하는 예에 대해 도 4를 참조로 설명한다.Here, an example in which the management module 132 prevents underflow or overflow of each stereo stream buffer 131 will be described with reference to FIG. 4 .

도 4는 본 발명의 실시예에 따른 관리 모듈의 예시도이다.4 is an exemplary view of a management module according to an embodiment of the present invention.

도 4에 도시된 바와 같이, 관리 모듈(132)은 각 스테레오 스트림 버퍼(131)의 언더플로우 또는 오버플로우를 방지하기 위해, 각 스테레오 스트림 버퍼(131)의 점유율(

Figure pat00001
)을 계산한다. 여기서 점유율은 오디오 HAL(120)이 n번째에 스테레오 스트림으로 오디오 데이터를 쓰기 한 후의 스테레오 스트림 버퍼(131)의 점유율을 의미한다. 관리 모듈(132)이 각 스테레오 스트림 버퍼(131)의 점유율을 계산하는 방법은 다양한 방법으로 계산할 수 있으므로 본 발명의 실시예에서는 어느 하나의 방법으로 한정하지 않는다.As shown in FIG. 4, the management module 132 controls the occupancy (occupancy) of each stereo stream buffer 131 to prevent underflow or overflow of each stereo stream buffer 131.
Figure pat00001
) is calculated. Here, the occupancy means the occupancy of the stereo stream buffer 131 after the audio HAL 120 writes audio data as the n-th stereo stream. Since the management module 132 calculates the occupancy rate of each stereo stream buffer 131 in various ways, it is not limited to any one method in the embodiment of the present invention.

관리 모듈(132)은 각 스테레오 스트림 버퍼(131)의 점유율을 계산한 후, 계산한 점유율에 따라 각 스테레오 스트림 버퍼(131)의 오디오 데이터 쓰기 주기(

Figure pat00002
)를 조절하며, 다음 수학식 1과 같다.After the management module 132 calculates the occupancy rate of each stereo stream buffer 131, the audio data writing cycle of each stereo stream buffer 131 according to the calculated occupancy rate (
Figure pat00002
), and is shown in Equation 1 below.

Figure pat00003
Figure pat00003

여기서,

Figure pat00004
는 오디오 HAL(120)이 n+1번째에 i번째 스테레오 스트림으로 오디오 데이터를 스테레오 스트림 버퍼(131)에 쓰는 주기로, 본 발명의 실시예에서의 오디오 데이터 쓰기 주기의 단위는 ㎲인 것을 예로 하여 설명하나, 반드시 이와 같이 한정되는 것은 아니다.here,
Figure pat00004
is a cycle in which the audio HAL 120 writes audio data to the stereo stream buffer 131 as the i-th stereo stream in n + 1 th, and the unit of the audio data writing cycle in the embodiment of the present invention is μs. However, it is not necessarily limited in this way.

그리고, 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 module 130 whenever the audio HAL 120 writes audio data once into a time value (unit: ㎲ )am. Here, a method of converting the data size into a time value is a known technique, and description is not limited to any one method in the embodiment of the present invention.

그리고, k는 스테레오 스트림 버퍼(131)의 오버플로우 방지를 위해 사용하는 상수 값이다. P는 스테레오 스트림 버퍼(131)의 언더플로우 방지를 위해 사용하는 상수 값이다. 두 상수 값은 어느 하나의 값으로 한정하지 않는다.And, k is a constant value used to prevent overflow of the stereo stream buffer 131. P is a constant value used to prevent underflow of the stereo stream buffer 131. The values of the two constants are not limited to either one.

수학식 1을 설명하면, 관리 모듈(132)은 계산한 점유율이 미리 설정된 제1 구간에 해당하는 것으로 확인하면, 각 스테레오 스트림 버퍼(131)를 빠르게 비우기 위해 오디오 데이터 쓰기 주기를 특정 값으로 설정한다. 본 발명의 실시예에서는 제1 구간으로 0 < 점유율 < 20인 것을 예로 하여 설명하고, 오디오 데이터 쓰기 주기를 설정한 특정 값으로 10㎲인 것을 예로 하여 설명한다.Referring to Equation 1, the management module 132 sets the audio data writing cycle to a specific value in order to quickly empty each stereo stream buffer 131 when confirming that the calculated occupancy corresponds to the preset first section. . In the embodiment of the present invention, 0 < occupancy rate < 20 will be described as an example for the first section, and 10 μs as a specific value for setting the audio data write cycle will be described as an example.

한편, 관리 모듈(132)은 계산한 점유율이 미리 설정된 제2 구간에 해당하는 것으로 확인하면, 스테레오 스트림 버퍼(131)의 버퍼 점유율이 안정적인 것으로 판단한다. 따라서, 관리 모듈(132)은 버퍼 점유율에 비례하여 오디오 데이터 쓰기 주기를 설정한다. 본 발명의 실시예에서는 제2 구간으로 20 ≤ 점유율 < 90인 것을 예로 하여 설명한다.Meanwhile, the management module 132 determines that the buffer occupancy of the stereo stream buffer 131 is stable when it is confirmed that the calculated occupancy corresponds to the preset second section. Accordingly, the management module 132 sets the audio data writing cycle in proportion to the buffer occupancy rate. In the embodiment of the present invention, 20 ≤ occupancy rate < 90 will be described as an example in the second section.

또한, 관리 모듈(132)은 계산한 점유율이 미리 설정된 제3 구간에 해당하는 것으로 확인하면, 스테레오 스트림 버퍼(131)의 버퍼 점유율이 매우 높아 오버플로우가 발생할 가능성이 매우 높은 것으로 판단한다. 따라서, 관리 모듈(132)은 각 스테레오 스트림 버퍼(131)를 빠르게 채우기 위해 오디오 데이터 쓰기 주기를 FS * k로 계산된 값으로 설정한다. 본 발명의 실시예에서는 제3 구간으로 90 ≤ 점유율 < 100인 것을 예로 하여 설명한다.In addition, when the management module 132 confirms that the calculated occupancy corresponds to the preset third interval, the buffer occupancy of the stereo stream buffer 131 is very high, and thus, it is determined that overflow is very likely to occur. Therefore, the management module 132 sets the audio data writing cycle to a value calculated by FS * k in order to rapidly fill each stereo stream buffer 131 . In the embodiment of the present invention, 90 ≤ occupancy rate < 100 will be described as an example in the third section.

다음은, 상술한 안드로이드 오토모티브 시스템(100)으로 다수의 스테레오 스트림들을 하나의 멀티 채널 스트림으로 변환하는 방법에 대해 도 5를 참조로 설명한다. Next, a method of converting a plurality of stereo streams into a single multi-channel stream by the above-described Android automotive system 100 will be described with reference to FIG. 5 .

도 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 automotive system 100 initializes the audio HAL 120 (S100). Then, the Android automotive system 100 initializes the multi-channel plug-in module 130 (S110).

S110 단계에서 실행한 멀티 채널 플러그인 모듈(130)의 초기화를 통해, 관리 모듈(132)은 각 스테레오 오디오 스트림 운용을 위한 링 버퍼인 스테레오 스트림 버퍼(131)를 할당하고, 멀티채널 오디오 스트림 운용을 위한 링 버퍼인 멀티 채널 버퍼(134)를 할당한다. 그리고 관리 모듈(132)은 플레이백 모듈(135)로 멀티 채널 오디오 스트림 출력을 위한 장치 생성을 요청하면, 플레이백 모듈(135)은 tinyALSA 인터페이스 기반으로 라이브러리(140)로 멀티 채널 오디오 스트림을 출력하기 위한 장치 생성을 요청한다.Through the initialization of the multi-channel plug-in module 130 executed in step S110, the management module 132 allocates a stereo stream buffer 131, which is a ring buffer for each stereo audio stream operation, and for multi-channel audio stream operation. A multi-channel buffer 134, which is a ring buffer, is allocated. And, when the management module 132 requests the playback module 135 to generate a device for outputting a multi-channel audio stream, the playback module 135 outputs the multi-channel audio stream to the library 140 based on the tinyALSA interface. Request device creation for

오디오 HAL(120)로부터 복수의 스테레오 오디오 스트림들이 전달되면, 멀티 채널 플러그인 모듈(130)은 S110 단계에서 할당한 각 스테레오 스트림 버퍼(131)에 오디오 데이터를 저장한다(S120). 멀티 채널 컨버터(133)는 S120 단계에서 스테레오 스트림 버퍼(131)에 저장된 오디오 데이터들을 이용하여 멀티 채널 스트림으로 변환한다(S130). When a plurality of stereo audio streams are delivered from the audio HAL 120, the multi-channel plug-in module 130 stores audio data in each stereo stream buffer 131 allocated in step S110 (S120). The multi-channel converter 133 converts the audio data stored in the stereo stream buffer 131 into a multi-channel stream in step S120 (S130).

그러면 플레이백 모듈(135)은 S130 단계에서 변환된 멀티 채널 스트림을 tinyALSA 인터페이스 기반으로 재생하여 시스템의 최종단인 오디오 디바이스(예를 들어, 스피커)로 출력한다(S140). 이와 같은 단계를 통해 복수의 스테레오 오디오 스트림들이 하나의 멀티 채널 스트림으로 재생될 때, 관리 모듈(132)은 각 스테레오 스트림 버퍼(131)의 버퍼 점유율을 확인한다(S150). Then, the playback module 135 reproduces the multi-channel stream converted in step S130 based on the tinyALSA interface and outputs it to an audio device (eg, speaker), which is the final stage of the system (S140). When a plurality of stereo audio streams are reproduced as one multi-channel stream through these steps, the management module 132 checks the buffer occupancy of each stereo stream buffer 131 (S150).

그리고, 관리 모듈(132)은 확인한 점유율을 기초로, 오디오 HAL(120)이 스테레오 스트림 버퍼(131)에 오디오 데이터 쓰기 할 주기를 설정한다(S160). Then, the management module 132 sets a period for the audio HAL 120 to write audio data to the stereo stream buffer 131 based on the confirmed occupancy rate (S160).

이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.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.
제1항에 있어서,
오디오 디바이스로 출력하는 단계 이후에,
상기 각 스테레오 스트림 버퍼의 버퍼 점유율을 확인하는 단계, 그리고
확인한 상기 버퍼 점유율을 기초로, 상기 각 스테레오 스트림 버퍼로 상기 오디오 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.
제2항에 있어서,
상기 데이터 쓰기 주기를 설정하는 단계는,
상기 버퍼 점유율이 제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항에 있어서,
상기 데이터 쓰기 주기를 설정하는 단계는,
상기 버퍼 점유율이 제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.
제2항에 있어서,
상기 데이터 쓰기 주기를 설정하는 단계는,
상기 버퍼 점유율이 제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.
제6항에 있어서,
상기 멀티 채널 플러그인 모듈은,
상기 오디오 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.
제7항에 있어서,
상기 라이브러리는 tinyALSA 라이브러리인, 안드로이드 오토모티브 시스템.
According to claim 7,
The library is a tinyALSA library, Android Automotive System.
제8항에 있어서,
상기 멀티 채널 플러그인 모듈은,
상기 복수의 스테레오 스트림 버퍼들의 언더플로우 또는 오버플로우를 방지하는 관리 모듈
을 더 포함하는, 안드로이드 오토모티브 시스템.
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.
제9항에 있어서,
상기 관리 모듈은,
상기 각 스테레오 스트림 버퍼의 버퍼 점유율을 확인하고, 상기 버퍼 점유율을 기초로 상기 각 스테레오 스트림 버퍼로 상기 오디오 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.
제10항에 있어서,
상기 관리 모듈은,
상기 버퍼 점유율이 제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.
제10항에 있어서,
상기 관리 모듈은,
상기 버퍼 점유율이 제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.
제10항에 있어서,
상기 버퍼 점유율이 제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.
KR1020210180989A 2021-12-16 2021-12-16 Android automotive audio system and method for stream conversion using the same KR20230091661A (en)

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)

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