KR102411811B1 - Apparatus and method for buffer control to reduce audio input processing delay - Google Patents
Apparatus and method for buffer control to reduce audio input processing delay Download PDFInfo
- Publication number
- KR102411811B1 KR102411811B1 KR1020180023095A KR20180023095A KR102411811B1 KR 102411811 B1 KR102411811 B1 KR 102411811B1 KR 1020180023095 A KR1020180023095 A KR 1020180023095A KR 20180023095 A KR20180023095 A KR 20180023095A KR 102411811 B1 KR102411811 B1 KR 102411811B1
- Authority
- KR
- South Korea
- Prior art keywords
- buffer
- audio input
- user
- dma
- converter
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
- G11B2020/1062—Data buffering arrangements, e.g. recording or playback buffers
- G11B2020/10675—Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control
- G11B2020/10685—Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control input interface, i.e. the way data enter the buffer, e.g. by informing the sender that the buffer is busy
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
- G11B2020/1062—Data buffering arrangements, e.g. recording or playback buffers
- G11B2020/10675—Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control
- G11B2020/10712—Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control buffer capacity, e.g. when the buffer capacity is exhausted, buffered data are overwritten with more recent data, accepting that the old data are lost
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Bus Control (AREA)
Abstract
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치 및 방법이 개시된다. 본 발명에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치에 의해 수행되는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 방법은, 사용자의 최소 버퍼 크기를 기반으로 DMA(Direct Memory Access) 버퍼를 할당하는 단계, 아날로그 음파를 디지털 음파 데이터로 변환하는 A/D 변환기를 초기화한 후, 상기 사용자로부터 오디오 입력 요청을 수신하기 이전에 상기 A/D 변환기의 동작을 실행시키는 단계, 변환된 상기 디지털 음파 데이터를 상기 DMA 버퍼로 전달하는 단계, 상기 오디오 입력 요청을 수신한 상태에서 상기 A/D 변환기의 인터럽트 수신 시, 상기 DMA 버퍼에 저장된 상기 디지털 음파 데이터를 사용자 버퍼로 복사하는 단계, 그리고 상기 오디오 입력 요청에 상응하는 프로세스로, 상기 사용자 버퍼가 가득 찼음을 알리는 버퍼 풀 알림을 전송하는 단계를 포함한다. A buffer control apparatus and method for reducing audio input processing delay are disclosed. A buffer control method for reducing audio input processing delay performed by a buffer control apparatus for reducing audio input processing delay according to the present invention comprises the steps of allocating a DMA (Direct Memory Access) buffer based on a user's minimum buffer size; After initializing an A/D converter that converts analog sound waves into digital sound wave data, executing an operation of the A/D converter before receiving an audio input request from the user, converting the converted digital sound wave data into the DMA transferring the audio input request to a user buffer, and copying the digital sound wave data stored in the DMA buffer to a user buffer upon reception of the interrupt of the A/D converter in a state in which the audio input request is received, and corresponding to the audio input request. process, comprising sending a buffer pool notification indicating that the user buffer is full.
Description
본 발명은 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 기술에 관한 것으로, 특히 디지털 오디오 장치에서 초기 입력 시간을 축소하여 사용자가 느끼는 초기 지연을 축소시키는 기술에 관한 것이다.The present invention relates to a buffer control technique for reducing audio input processing delay, and more particularly, to a technique for reducing an initial delay felt by a user by reducing an initial input time in a digital audio device.
디지털 오디오 입력 장치는 아날로그 형태의 음파 신호를 디지털 음파 데이터로 변환한다. 이때, 디지털 처리를 위해서는 데이터를 저장하는 버퍼(buffer)를 필요로 하며, 일반적인 PC에서는 아날로그 디지털 변환기(Analog-Digital Converter)가 데이터를 버퍼로 직접 전달하는 DMA(Direct Memory Access) 방식을 사용한다. The digital audio input device converts an analog sound wave signal into digital sound wave data. At this time, a buffer for storing data is required for digital processing, and a DMA (Direct Memory Access) method in which an analog-to-digital converter directly transfers data to the buffer is used in a general PC.
아날로그 디지털 변환기는 변환된 디지털 음파 데이터를 DMA 방식을 통해 DMA 버퍼(Direct Memory Access Buffer)로 전송하고, DMA 버퍼가 일정 수준 이상 채워지면 인터럽트를 발생시킨다. 인터럽트 발생 시, 운영 체제는 인터럽트 서비스 루틴을 통해 인터럽트 수신 응답을 하고, DMA 버퍼의 내용을 사용자가 요청한 사용자 버퍼(User Buffer)에 복사하며, 응용 프로그램에 알린다. The analog-to-digital converter transmits the converted digital sound wave data to the DMA buffer (Direct Memory Access Buffer) through the DMA method, and generates an interrupt when the DMA buffer is filled to a certain level or more. When an interrupt occurs, the operating system responds to interrupt reception through the interrupt service routine, copies the contents of the DMA buffer to the user buffer requested by the user, and notifies the application program.
대부분의 경우, DMA 방식은 데이터가 변환될 때마다 DMA 버퍼의 시작 주소부터 마지막까지 채워가고, 버퍼의 마지막 지점에 도달하면 다시 시작 주소부터 복사를 계속 수행한다. 이때, 버퍼 크기의 1/2 정도가 찬 경우 인터럽트 신호를 발생시켜 인터럽트 서비스 루틴이 데이터를 가져가도록 하고, 데이터를 가져가는 동안 버퍼의 나머지 부분을 계속 채워나가는 이중 버퍼링(double buffering) 방식을 주로 사용한다. In most cases, the DMA method fills the DMA buffer from the start address to the end whenever data is converted, and continues copying from the start address when the last point of the buffer is reached. At this time, when about 1/2 of the buffer size is full, an interrupt signal is generated so that the interrupt service routine takes the data, and the double buffering method is mainly used while the rest of the buffer is filled while taking the data. do.
음성 통신 분야에서는 아날로그 형태의 음파 신호를 디지털 음파 데이터로 변환하고 디지털 음파 데이터를 사용자 버퍼에 복사할 때, 사용자가 신속하게 디지털 음파 데이터를 수신하여 처리할 수 있도록 하는 것이 중요한 이슈이다. In the field of voice communication, when converting an analog sound wave signal into digital sound wave data and copying the digital sound wave data to the user buffer, it is an important issue to enable the user to quickly receive and process the digital sound wave data.
따라서, 오디오 초기 입력 시간을 축소하여, 사용자가 느끼는 초기 지연을 축소할 수 있는 기술의 개발이 필요하다. Accordingly, it is necessary to develop a technology capable of reducing the initial delay felt by the user by reducing the initial audio input time.
본 발명의 목적은 디지털 오디오 입력 장치에서 변환된 디지털 음파 데이터를 신속하게 제공하는 것이다. SUMMARY OF THE INVENTION It is an object of the present invention to quickly provide digital sound wave data converted in a digital audio input device.
또한, 본 발명의 목적은 오디오 초기 입력 시간을 축소하여, 사용자가 느끼는 초기 지연을 축소하는 것이다. Another object of the present invention is to reduce an initial delay felt by a user by reducing an audio initial input time.
또한, 본 발명의 목적은 실시간 녹음이나 실시간 통화 등의 응용 프로그램 및 시스템에서 재생 지연 및 전송 지연을 최소화하는 것이다. Another object of the present invention is to minimize playback delay and transmission delay in applications and systems such as real-time recording or real-time calls.
상기한 목적을 달성하기 위한 본 발명에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치에 의해 수행되는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 방법은, 사용자의 최소 버퍼 크기를 기반으로 DMA(Direct Memory Access) 버퍼를 할당하는 단계, 아날로그 음파를 디지털 음파 데이터로 변환하는 A/D(Analog-Digital) 변환기를 초기화한 후, 상기 사용자로부터 오디오 입력 요청을 수신하기 이전에 상기 A/D 변환기의 동작을 실행시키는 단계, 변환된 상기 디지털 음파 데이터를 상기 DMA 버퍼로 전달하는 단계, 상기 오디오 입력 요청을 수신한 상태에서 상기 A/D 변환기의 인터럽트 수신 시, 상기 DMA 버퍼에 저장된 상기 디지털 음파 데이터를 사용자 버퍼로 복사하는 단계, 그리고 상기 오디오 입력 요청에 상응하는 프로세스로, 상기 사용자 버퍼가 가득 찼음을 알리는 버퍼 풀 알림을 전송하는 단계를 포함한다. A buffer control method for reducing audio input processing delay performed by a buffer control apparatus for reducing audio input processing delay according to the present invention for achieving the above object is a direct memory access (DMA) method based on a user's minimum buffer size ) Allocating a buffer, initialize an A/D (Analog-Digital) converter that converts analog sound waves into digital sound wave data, and then execute the operation of the A/D converter before receiving an audio input request from the user transmitting the converted digital sound wave data to the DMA buffer, when receiving the interrupt of the A/D converter while receiving the audio input request, transferring the digital sound wave data stored in the DMA buffer to a user buffer copying, and sending, in a process corresponding to the audio input request, a buffer pool notification indicating that the user buffer is full.
이때, 상기 A/D 변환기의 동작을 실행시키는 단계는, 상기 A/D 변환기에 상기 DMA 버퍼의 시작 주소 및 크기를 전달하는 단계, 상기 A/D 변환기에서 인터럽트 발생 시 인터럽트 서비스 루틴이 실행되도록, 운영체제에 인터럽트 서비스 루틴을 등록하는 단계, 그리고 상기 A/D 변환기의 동작을 실행시키고, 상기 사용자의 상기 오디오 입력 요청 수신을 대기하는 단계를 포함할 수 있다. In this case, the step of executing the operation of the A/D converter includes: transmitting the start address and size of the DMA buffer to the A/D converter; so that an interrupt service routine is executed when an interrupt occurs in the A/D converter; The method may include registering an interrupt service routine in the operating system, executing the operation of the A/D converter, and waiting for the user to receive the audio input request.
이때, 상기 인터럽트 서비스 루틴은, 수신한 상기 오디오 입력 요청이 첫 번째 요청인 경우, 상기 첫 번째 요청에 상응하는 시점 이전의 상기 디지털 음파 데이터를 무음으로 처리한 후, 상기 DMA 버퍼의 상기 디지털 음파 데이터를 상기 사용자 버퍼로 복사할 수 있다. At this time, when the received audio input request is the first request, the interrupt service routine silences the digital sound wave data before the time point corresponding to the first request, and then the digital sound wave data in the DMA buffer can be copied to the user buffer.
이때, 상기 인터럽트 서비스 루틴은, 현재 시간, 상기 DMA 버퍼가 채워지는 시간 및 상기 오디오 입력 요청을 수신한 시간 중 적어도 어느 하나를 포함하는 시간 정보를 기반으로 무음으로 처리할 상기 디지털 음파 데이터를 설정할 수 있다. At this time, the interrupt service routine may set the digital sound wave data to be processed in silence based on time information including at least one of a current time, a time when the DMA buffer is filled, and a time when the audio input request is received. have.
이때, 상기 디지털 음파 데이터를 상기 DMA 버퍼로 전달하는 단계는, 인터럽트의 발생 빈도를 최소화하기 위하여, 상기 사용자 버퍼의 크기마다 상기 인터럽트를 발생할 수 있다. In this case, in the step of transferring the digital sound wave data to the DMA buffer, the interrupt may be generated for each size of the user buffer in order to minimize the frequency of occurrence of the interrupt.
또한, 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치는, 사용자의 최소 버퍼 크기를 기반으로 DMA(Direct Memory Access) 버퍼를 할당하는 DMA 버퍼 할당부, 아날로그 음파를 디지털 음파 데이터로 변환하는 A/D 변환기를 초기화한 후, 상기 사용자로부터 오디오 입력 요청을 수신하기 이전에 상기 A/D 변환기의 동작을 실행시키는 A/D 변환기 실행부, 변환된 상기 디지털 음파 데이터를 상기 DMA 버퍼로 전달하는 DMA 버퍼 전달부, 상기 오디오 입력 요청을 수신한 상태에서 상기 A/D 변환기의 인터럽트 수신 시, 상기 DMA 버퍼에 저장된 상기 디지털 음파 데이터를 사용자 버퍼로 복사하는 사용자 버퍼 복사부, 그리고 상기 오디오 입력 요청에 상응하는 프로세스로, 상기 사용자 버퍼가 가득 찼음을 알리는 버퍼 풀 알림을 전송하는 알림 전송부를 포함한다. In addition, the buffer control apparatus for reducing audio input processing delay according to an embodiment of the present invention includes a DMA buffer allocator for allocating a DMA (Direct Memory Access) buffer based on a user's minimum buffer size, and a digital sound wave for analog sound waves. After initializing the A/D converter that converts data into an A/D converter, before receiving an audio input request from the user, an A/D converter executing unit that executes the operation of the A/D converter, converts the converted digital sound wave data into the DMA A DMA buffer transfer unit that transfers to a buffer, a user buffer copy unit that copies the digital sound wave data stored in the DMA buffer to a user buffer when the interrupt of the A/D converter is received while receiving the audio input request, and the A process corresponding to the audio input request, and includes a notification transmitter that transmits a buffer pool notification indicating that the user buffer is full.
이때, 상기 A/D 변환기 실행부는, 상기 A/D 변환기에 상기 DMA 버퍼의 시작 주소 및 크기를 전달하고, 상기 A/D 변환기에서 인터럽트 발생 시 인터럽트 서비스 루틴이 실행되도록, 운영체제에 인터럽트 서비스 루틴을 등록하며, 상기 A/D 변환기의 동작을 실행시키고, 상기 사용자의 상기 오디오 입력 요청 수신을 대기할 수 있다. At this time, the A/D converter execution unit transmits the start address and size of the DMA buffer to the A/D converter, and provides an interrupt service routine to the operating system so that the interrupt service routine is executed when an interrupt occurs in the A/D converter. It may register, execute the operation of the A/D converter, and wait for reception of the audio input request from the user.
이때, 상기 인터럽트 서비스 루틴은, 수신한 상기 오디오 입력 요청이 첫 번째 요청인 경우, 상기 첫 번째 요청에 상응하는 시점 이전의 상기 디지털 음파 데이터를 무음으로 처리한 후, 상기 DMA 버퍼의 상기 디지털 음파 데이터를 상기 사용자 버퍼로 복사할 수 있다. At this time, when the received audio input request is the first request, the interrupt service routine silences the digital sound wave data before the time point corresponding to the first request, and then the digital sound wave data in the DMA buffer can be copied to the user buffer.
이때, 무음으로 처리할 상기 디지털 음파 데이터를 설정하기 위하여, 현재 시간, 상기 DMA 버퍼가 채워지는 시간 및 상기 오디오 입력 요청을 수신한 시간 중 적어도 어느 하나를 포함하는 시간 정보를 저장하는 데이터 요청 처리부를 더 포함할 수 있다. At this time, in order to set the digital sound wave data to be processed in silence, a data request processing unit for storing time information including at least one of a current time, a time at which the DMA buffer is filled, and a time at which the audio input request is received may include more.
이때, 상기 DMA 버퍼 전달부는, 인터럽트의 발생 빈도를 최소화하기 위하여, 상기 사용자 버퍼의 크기마다 상기 인터럽트를 발생할 수 있다. In this case, the DMA buffer transfer unit may generate the interrupt for each size of the user buffer in order to minimize the occurrence frequency of the interrupt.
본 발명에 따르면, 디지털 오디오 입력 장치에서 변환된 디지털 음파 데이터를 신속하게 제공 할 수 있다. According to the present invention, it is possible to quickly provide digital sound wave data converted by a digital audio input device.
또한 본 발명에 따르면, 오디오 초기 입력 시간을 축소하여, 사용자가 느끼는 초기 지연을 축소 할 수 있다. In addition, according to the present invention, by reducing the initial audio input time, it is possible to reduce the initial delay felt by the user.
또한 본 발명에 따르면, 실시간 녹음이나 실시간 통화 등의 응용 프로그램 및 시스템에서 재생 지연 및 전송 지연을 최소화할 수 있다. In addition, according to the present invention, it is possible to minimize playback delay and transmission delay in applications and systems such as real-time recording or real-time calls.
도 1은 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치가 적용되는 환경을 개략적으로 나타낸 도면이다.
도 2는 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치의 구성을 나타낸 블록도이다.
도 3은 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 5는 본 발명의 일실시예에 따른 A/D 변환기의 동작 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 일실시예에 따른 DMA 버퍼 할당 과정을 설명하기 위한 순서도이다.
도 7은 본 발명의 일실시예에 따른 인터럽트 서비스 루틴의 동작 방법을 설명하기 위한 순서도이다.
도 8은 도 7의 S790 단계에서 DMA 버퍼 복사 루틴을 호출하는 과정을 설명하기 위한 순서도이다.
도 9은 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 블록도이다.1 is a diagram schematically illustrating an environment to which a buffer control apparatus for reducing delay in processing an audio input according to an embodiment of the present invention is applied.
2 is a block diagram illustrating a configuration of a buffer control apparatus for reducing delay in processing an audio input according to an embodiment of the present invention.
3 is a flowchart illustrating a buffer control method for reducing audio input processing delay according to an embodiment of the present invention.
4 is a flowchart for explaining a method of operating a buffer control system for reducing audio input processing delay according to an embodiment of the present invention.
5 is a flowchart illustrating a method of operating an A/D converter according to an embodiment of the present invention.
6 is a flowchart illustrating a DMA buffer allocation process according to an embodiment of the present invention.
7 is a flowchart illustrating an operation method of an interrupt service routine according to an embodiment of the present invention.
8 is a flowchart illustrating a process of calling the DMA buffer copy routine in step S790 of FIG. 7 .
9 is a block diagram illustrating a computer system according to an embodiment of the present invention.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.Since the present invention can have various changes and can have various embodiments, specific embodiments are illustrated in the drawings and described in detail.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.However, this is not intended to limit the present invention to specific embodiments, and it should be understood to include all modifications, equivalents and substitutes included in the spirit and scope of the present invention.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the present application are only used to describe specific embodiments, and are not intended to limit the present invention. The singular expression includes the plural expression unless the context clearly dictates otherwise. In the present application, terms such as “comprise” or “have” are intended to designate that a feature, number, step, operation, component, part, or combination thereof described in the specification exists, but one or more other features It should be understood that this does not preclude the existence or addition of numbers, steps, operations, components, parts, or combinations thereof.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical and scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related art, and should not be interpreted in an ideal or excessively formal meaning unless explicitly defined in the present application. does not
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the accompanying drawings. In describing the present invention, in order to facilitate the overall understanding, the same reference numerals are used for the same components in the drawings, and duplicate descriptions of the same components are omitted.
도 1은 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치가 적용되는 환경을 개략적으로 나타낸 도면이다. 1 is a diagram schematically illustrating an environment to which a buffer control apparatus for reducing delay in processing an audio input according to an embodiment of the present invention is applied.
도 1에 도시한 바와 같이, A/D 변환기(110)는 아날로그 음파(10)를 디지털 음파 데이터(20)로 변환한다. 그리고 A/D 변환기(110)는 DMA 방식을 통해 디지털 음파 데이터(20)를 DMA 버퍼(120)로 전달한다. As shown in FIG. 1 , the A/
DMA 버퍼(120)가 일정 수준 이상 채워지면, A/D 변환기(110)는 인터럽트를 발생시킨다. 인터럽트가 발생하면 운영체제는 인터럽트 서비스 루틴을 통해 인터럽트 수신 응답을 하고, DMA 버퍼(120)의 내용을 사용자가 요청한 사용자 버퍼(130)에 복사하고, 사용자에게 알린다. When the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 시스템은, 오디오 입력을 시작하기 위한 준비 과정, 아날로그 입력을 디지털로 변환하는 과정 및 일정량 이상 누적된 데이터를 사용자에게 제공하는 과정을 수행한다. The buffer control system for reducing audio input processing delay performs a preparation process for starting audio input, a process of converting an analog input to digital, and a process of providing data accumulated over a certain amount to a user.
오디오 입력을 시작하기 위한 준비 과정에서는, DMA 버퍼(120)를 할당하고, A/D 변환기(110)를 초기화한 후 A/D 변환기(110) 동작을 설정하며, A/D 변환기 동작 시작을 요청한다. 그리고 동작 시작 요청을 수신한 A/D 변환기(110)는 아날로그 음파(10)를 디지털 음파 데이터(20)로 변환한다. In the preparation process for starting the audio input, the
그리고 아날로그 입력을 디지털로 변환하는 과정에서 A/D 변환기(110)는 DMA 버퍼(120)로 데이터를 전달하고, A/D 변환기(110)는 인터럽트를 발생한다. And in the process of converting the analog input to digital, the A/
또한, 일정량 이상 누적된 데이터를 사용자에게 제공하는 과정에서 운영체제는 인터럽트를 수신하고, 자체 스케줄링 정책에 따라 인터럽트 서비스 루틴을 실행하고, 인터럽트 서비스 루틴에서 DMA 버퍼(120)의 데이터를 사용자 버퍼(130)로 복사한다. 그리고 운영체제는 사용자 버퍼(130)에 녹음을 요청한 프로세스로 사용자 버퍼(130)가 가득 찼음을 알리는 버퍼 풀 알림(BufferFullNotify)을 전송한다.In addition, in the process of providing data accumulated over a certain amount to the user, the operating system receives an interrupt, executes an interrupt service routine according to its own scheduling policy, and transfers data from the
디지털 시스템에서는 주로 버퍼를 사용하며 버퍼 단위로 데이터를 처리한다. 그리고 디지털 시스템에서 지연을 줄이기 위해서는 버퍼를 신속하게 채우거나 버퍼에 저장된 데이터를 신속하게 복사하는 것이 중요하다. In digital systems, buffers are mainly used and data is processed in units of buffers. And to reduce latency in digital systems, it is important to quickly fill a buffer or copy data stored in a buffer quickly.
종래 기술에 따르면, A/D 변환기(110)가 DMA 버퍼(120)로 데이터를 전달할 때 버퍼가 채워질 때까지 초기 지연이 필수적이다. 기존 시스템은 대부분 고정된 DMA 버퍼를 사용하므로 버퍼를 채우는데 소요되는 지연 시간은 해당 버퍼의 크기에 의존적이다. According to the prior art, when the A/
즉, 버퍼를 채우는데 소요되는 시간은 버퍼를 채우도록 시작한 시점부터 아날로그 오디오를 샘플링하는 주기(sampling rate)(Hz 단위), 채널 수(모노=1채널, 스테레오=2채널 등) 및 채널당 바이트 수(byte 단위)에 따라 결정된다. That is, the time it takes to fill the buffer depends on the sampling rate (in Hz), the number of channels (mono = 1 channel, stereo = 2 channels, etc.) and the number of bytes per channel from the time the buffer starts to be filled. It is determined according to (byte unit).
따라서, 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 오디오 입력을 시작하기 위한 준비 과정에서 사용자가 요청한 버퍼의 크기에 따라 DMA 버퍼(120)를 할당하고, A/D 변환기(110)의 초기화를 수행한 후 아날로그 음파(10)를 디지털 음파 데이터(20)로 변환한다. Therefore, the
즉, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자가 데이터를 복사할 사용자 버퍼(130)의 크기와 DMA 버퍼(120)의 크기가 최대한 일치하도록 하여, 인터럽트 발생 주기 및 버퍼 풀 알림(BufferFullNotify)을 전송하는 주기를 맞춘다. 이를 통하여, 인터럽트가 발생하여 사용자 버퍼(130)를 채우는 경우, 사용자 버퍼(130)가 다 채워지지 않아 버퍼 풀 알림(BufferFullNotify)을 전송하지 못하는 경우를 최소화한다. That is, the
또한, 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 아날로그 입력을 디지털로 변환하는 과정에서, 실행 플래그(RunFlag)를 이용하여, 실행 플래그가 ON인 경우에만 버퍼 복사를 수행한다. A/D 변환기(110)가 이미 동작하고 있는 상태이므로, 인터럽트의 발생 시점이 기존 방식보다 빨라져 사용자에게 데이터를 최초로 전달하는 시간을 축소시킬 수 있다. In addition, the
그리고 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 일정량 이상 누적된 데이터를 사용자에게 제공하는 과정에서, 사용자가 입력을 요청한 시간 이전의 데이터가 DMA 버퍼(120)에 존재하는 것으로 판단된 경우, 이전의 데이터를 무음 데이터로 변환한 후 사용자 버퍼(130)로 전송한다. In the process of providing the data accumulated over a certain amount to the user, the
이때, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 시스템의 현재 시간을 측정하는 시스템 타이머(System Timer), DMA 버퍼(120)가 채워지는 시간을 저장하는 메모리인 DMA BufferFill-up time counter 및 오디오 입력 요청을 수신한 시간을 저장하는 메모리인 User Request Time Saver 중 적어도 어느 하나를 이용하여, 무음 데이터로 변환할 데이터를 설정할 수 있다. At this time, the
이하에서는 도 2를 통하여 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치의 구성에 대하여 더욱 상세하게 설명한다. Hereinafter, a configuration of a buffer control apparatus for reducing audio input processing delay according to an embodiment of the present invention will be described in more detail with reference to FIG. 2 .
도 2는 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치의 구성을 나타낸 블록도이다. 2 is a block diagram illustrating a configuration of a buffer control apparatus for reducing delay in processing an audio input according to an embodiment of the present invention.
도 2에 도시한 바와 같이, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼 할당부(210), A/D 변환기 실행부(220), DMA 버퍼 전달부(230), 사용자 버퍼 복사부(240), 알림 전송부(250) 및 데이터 요청 처리부(260)를 포함한다. As shown in FIG. 2 , the
먼저, DMA 버퍼 할당부(210)는 사용자의 최소 버퍼 크기를 기반으로 DMA 버퍼(120)를 할당한다. 이때, DMA 버퍼 할당부(210)는 이중 버퍼링이 가능하도록 사용자의 최소 버퍼 크기의 2배로 DMA 버퍼(120)를 할당할 수 있다. First, the DMA buffer allocator 210 allocates the
그리고 A/D 변환기 실행부(220)는 아날로그 음파(10)를 디지털 음파 데이터(20)로 변환하는 A/D 변환기(110)를 초기화한다. 또한, A/D 변환기 실행부(220)는 사용자로부터 오디오 입력 요청을 수신하기 이전에 A/D 변환기(110)의 동작을 실행시킨다. And the A/D converter execution unit 220 initializes the A/
A/D 변환기 실행부(220)는 A/D 변환기(110)에 DMA 버퍼(120)의 시작 주소 및 크기를 전달하고, A/D 변환기(110)에서 인터럽트가 발생한 경우 인터럽트 서비스 루틴이 실행되도록 운영체제에 인터럽트 서비스 루틴을 등록한다. 그리고 A/D 변환기 실행부(220)는 A/D 변환기(110)의 동작을 실행시키고 사용자의 오디오 입력 요청 수신을 대기할 수 있다. The A/D converter execution unit 220 transfers the start address and size of the
여기서, 인터럽트 서비스 루틴은, 수신한 오디오 입력 요청이 첫 번째 요청인 경우, 첫 번째 요청에 상응하는 시점 이전의 디지털 음파 데이터를 무음으로 처리한 후, DMA 버퍼(120)의 디지털 음파 데이터(20)를 사용자 버퍼(130)로 복사할 수 있다. Here, when the received audio input request is the first request, the interrupt service routine silences the digital sound wave data before the time point corresponding to the first request, and then the digital
이때, 인터럽트 서비스 루틴은 현재 시간, DMA 버퍼(120)가 채워지는 시간 및 오디오 입력 요청을 수신한 시간 중 적어도 어느 하나를 포함하는 시간 정보를 기반으로 무음으로 처리할 디지털 음파 데이터를 설정할 수 있다. In this case, the interrupt service routine may set the digital sound wave data to be processed in silence based on time information including at least one of the current time, the time when the
현재 시간은 시스템의 시간을 측정하는 시스템 타이머(System Timer)로부터 획득한 것이고, DMA 버퍼(120)가 채워지는 시간은 DMA BufferFill-up time counter에 저장된 것일 수 있으며, 오디오 입력 요청을 수신한 시간은 User Request Time Saver에 데이터 요구 시점 값으로 저장된 것일 수 있다. The current time is obtained from a system timer that measures the time of the system, and the time when the
다음으로 DMA 버퍼 전달부(230)는 변환된 디지털 음파 데이터(20)를 DMA 버퍼(120)로 전달한다. 이때, 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자 버퍼(130)의 크기마다 인터럽트가 발생하도록 하여, 인터럽트의 발생 빈도를 최소화하고, 사용자에게 버퍼 풀 알림을 전송하는 주기를 최소화할 수 있으며, 초기 버퍼 지연을 사용자 요구 수준으로 낮출 수 있다. Next, the DMA
그리고 사용자 버퍼 복사부(240)는 오디오 입력 요청을 수신한 상태에서 A/D 변환기(110)의 인터럽트를 수신한 경우, DMA 버퍼(120)에 저장된 디지털 음파 데이터(20)를 사용자 버퍼(130)로 복사한다. And when the user buffer copy unit 240 receives the interrupt of the A/
알림 전송부(250)는 오디오 입력 요청에 상응하는 프로세스로, 사용자 버퍼(130)가 가득 찼음을 알리는 버퍼 풀 알림을 전송한다. As a process corresponding to the audio input request, the
마지막으로 데이터 요청 처리부(260)는 현재 시간, 상기 DMA 버퍼가 채워지는 시간 및 상기 오디오 입력 요청을 수신한 시간 중 적어도 어느 하나를 포함하는 시간 정보를 기록한다. 이때, 기록된 시간 정보기반으로 인터럽트 서비스 루틴은 무음으로 처리할 디지털 음파 데이터를 설정할 수 있다. Finally, the data
이하에서는 도 3 내지 도 8을 통하여, 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치에 의해 수행되는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 방법에 대하여 더욱 상세하게 설명한다. Hereinafter, a buffer control method for reducing audio input processing delay performed by the buffer control apparatus for reducing audio input processing delay according to an embodiment of the present invention will be described in detail with reference to FIGS. 3 to 8 .
도 3은 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 방법을 설명하기 위한 순서도이다. 3 is a flowchart illustrating a buffer control method for reducing audio input processing delay according to an embodiment of the present invention.
먼저, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼를 할당한다(S310). First, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자가 응용 프로그램에서 처리하는데 최소한으로 필요하다고 하는 버퍼 크기인 최소 버퍼 크기를 입력받고, 최소 버퍼 크기를 기반으로 DMA 버퍼를 할당한다. The
기존의 시스템에서는 인터럽트가 발생하여 DMA 버퍼의 내용을 사용자 버퍼로 복사할 때, 사용자 버퍼 크기와 DMA 버퍼 크기의 차이로 인하여 사용자 버퍼가 채워지지 않은 경우 버퍼가 채워졌음을 알릴 수 없어 다음 인터럽트 주기까지 기다려야 하며, 이러한 이유로 지연이 발생하였다. In the existing system, when an interrupt occurs and the contents of the DMA buffer are copied to the user buffer, if the user buffer is not filled due to the difference between the user buffer size and the DMA buffer size, it cannot be notified that the buffer is full until the next interrupt cycle. You have to wait, and for this reason, there is a delay.
그러나 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 이중 버퍼링을 고려하여, 사용자가 요구하는 최소 버퍼 크기의 2배수로 DMA 버퍼를 할당하고, 이를 통하여 버퍼 크기 차이로 인한 지터(jitter)를 최소화할 수 있다. However, the
또한, DMA 버퍼에 데이터를 저장하는 경우 사용자가 요구하는 사용자 버퍼의 크기마다 인터럽트가 발생하도록 하여, 인터럽트 발생 빈도 및 사용자에게 알리는 주기를 최소화하고, 초기 버퍼 지연을 낮출 수 있다. In addition, when data is stored in the DMA buffer, an interrupt is generated for each size of the user buffer requested by the user, thereby minimizing the frequency of interrupt generation and the period of notifying the user, and lowering the initial buffer delay.
그리고 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 A/D 변환기를 초기화하고, A/D 변환기의 동작을 실행한다(S320). In addition, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼를 할당받은 후 A/D 변환기를 초기화한 후 동작시킨다. 여기서, A/D 변환기는 아날로그 음파 신호를 디지털 형태로 변환한다. The
기존의 시스템에서는 A/D 변환기를 초기화 시킨 후, 사용자의 실질적 데이터 요구 시점에 A/D 변환기를 동작시켰다. 그러나, 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자가 오디오 입력 장치의 사용을 준비하는 순간부터 A/D 변환기를 동작시켜, DMA 버퍼를 신속하게 채울 수 있도록 한다. In the existing system, after initializing the A/D converter, the A/D converter is operated when the user actually requests data. However, the
다음으로 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 A/D 변환기에 의해 변환된 디지털 음파 데이터를 DMA 버퍼로 전달한다(S330). Next, the
이중 버퍼링 방식을 사용하는 경우, 디지털 음파 데이터가 전체 DMA 버퍼 크기의 절반 지점까지 저장되면, 인터럽트가 발생한다. When using the double buffering method, an interrupt occurs when digital sound wave data is stored up to half the size of the entire DMA buffer.
A/D 변환기의 인터럽트를 수신한 경우, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼의 데이터를 사용자 버퍼로 복사한다(S340). When receiving the interrupt of the A/D converter, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자로부터 오디오 입력 요청을 수신한 경우, 실행 플래그(RunFlag)를 ON으로 설정하고, DMA 버퍼의 내용을 사용자 버퍼로 복사하여, 사용자에게 제공할 수 있다. When receiving an audio input request from a user, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자가 오디오 입력 요청을 전송하기 전부터, DMA 버퍼에 디지털 음파 데이터를 저장하는 동작을 수행하고 있으므로, 사용자가 실질적으로 오디오 입력 요청을 전송한 시점 이전의 데이터가 DMA 버퍼에 저장되어 있을 수 있다. Since the
따라서, 요구 시점 이전의 데이터를 처리하기 위하여 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼에 채워진 디지털 음파 데이터들 중에서, 사용자가 실제 오디오 입력 요청을 전송한 시점 이전의 데이터를 무음으로 처리할 수 있다. 이때, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 오디오 입력 요청을 전송한 시점 이전의 데이터를 무음(silence) 데이터로 설정하여 사용자 버퍼에 복사할 수 있다. Therefore, in order to process the data before the request time, the
무음 데이터로 설정된 구간과 오디오 프로세싱이 수행되지 않아 소리가 없는 구간은 구별이 어려워, 사용자가 실질적으로 데이터를 요구한 시점(오디오 입력 요청을 전송한 시점) 이전의 데이터를 무음 데이터로 설정하여도, 사용자에게 미치는 영향은 거의 없다. It is difficult to distinguish between the section set as silent data and the section in which there is no audio because audio processing is not performed, so even if the data before the time the user actually requested data (the time when the audio input request is transmitted) is set as silent data, There is little impact on users.
그리고 사용자 버퍼가 가득 찬 경우, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 버퍼 풀 알림을 전송한다(S350). And when the user buffer is full, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 녹음을 요청한 프로세스로 사용자 버퍼가 가득 찼음을 알리는 버퍼 풀 알림(ButterFullNotify)을 전송할 수 있다. The
도 4는 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 시스템의 동작 방법을 설명하기 위한 순서도이다. 4 is a flowchart for explaining a method of operating a buffer control system for reducing audio input processing delay according to an embodiment of the present invention.
도 4에 도시한 바와 같이, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 실행 플래그를 OFF로 설정하고(S410), 시스템 타이머를 동작시키며(S415), A/D 변환기를 초기화한다(S420). As shown in FIG. 4, the
실행 플래그(RunFlag)는 사용자가 오디오 입력 요청을 전송한 상태인지를 나타내는 것으로, 사용자로부터 오디오 입력 요청을 수신하기 이전에, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 시스템의 시간 정보를 제공하는 시스템 타이머(System Timer)를 동작시킨다. 또한, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 A/D 변환기를 실행하기 이전에 A/D 변환기를 초기화한다. The run flag (RunFlag) indicates whether the user has transmitted an audio input request. Before receiving the audio input request from the user, a system timer ( System Timer). Also, the
다음으로 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자 요청에 따른 DMA 버퍼를 할당하고(S425), A/D 변환기에 DMA 버퍼의 정보를 전달한다(S430). Next, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자로부터 최소 버퍼 크기를 입력받고, 최소 버퍼 크기를 기반으로 DMA 버퍼를 할당한다. 그리고 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 초기화된 A/D 변환기로 DMA 버퍼의 시작 주소 및 크기를 포함하는 DMA 버퍼의 정보를 전달한다. The
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 운영체제에 인터럽트 서비스 루틴을 등록하고(S435), A/D 변환기의 동작을 실행한다(S440).The
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 A/D 변환기가 인터럽트를 발생하면, 인터럽트 서비스 루틴이 자동적으로 실행되도록 운영체제에 인터럽트 서비스 루틴을 등록할 수 있다. 인터럽트 서비스 루틴은 A/D 변환기에서 인터럽트가 발생될 때마다, DMA 버퍼의 내용을 사용자가 요청한 사용자 버퍼로 복사하는 동작을 수행할 수 있다. The
그리고 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자의 오디오 입력 요청의 수신을 대기하고(S445), 오디오 입력 요청을 수신한 경우 시스템 타이머의 현재 시간을 저장한다(S450). 또한, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 실행 플래그를 ON으로 설정한다(S455).In addition, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자로부터 오디오 입력 요청을 수신한 경우, 시스템 타이머의 현재 시간을 User Request Time Saver에 저장할 수 있다. 그리고 실행 플래그(RunFlag)를 ON으로 설정하여 DMA 버퍼의 내용을 사용자 버퍼에 복사한다. When receiving an audio input request from a user, the
버퍼 복사를 수행하는 동안 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자의 중지 요청 수신을 대기하며(S460), 사용자로부터 중지 요청을 수신한 경우 실행 플래그를 다시 OFF로 설정한다(S465).The
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자로부터 오디오 입력 중지 요청을 수신한 경우, 실행 플래그(RunFlag)를 OFF로 설정하고, DMA 버퍼의 내용을 사용자 버퍼로 복사하는 과정의 수행을 중지할 수 있다. When the
도 5는 본 발명의 일실시예에 따른 A/D 변환기의 동작 방법을 설명하기 위한 순서도이다. 5 is a flowchart illustrating a method of operating an A/D converter according to an embodiment of the present invention.
먼저, A/D 변환기(110)는 동작 시작 요청의 수신을 대기한다(S510). First, the A/
A/D 변환기(110)는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)에 의해 초기화가 수행된 후, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)로부터 동작 시작 요청을 수신할 수 있다. After initialization is performed by the
그리고 동작 시작 요청을 수신하면, A/D 변환기(110)는 A/D 변환을 수행하고, 변환된 디지털 음파 데이터를 DMA 버퍼로 전달한다(S520). And, upon receiving the operation start request, the A/
A/D 변환기(110)는 아날로그 음파를 디지털 음파 데이터로 변환하고, 변환된 디지털 음파 데이터를 DMA 버퍼에 저장한다. 여기서, 디지털 음파 데이터가 저장되는 DMA 버퍼는 사용자의 최소 버퍼 크기를 기반으로 할당된 것일 수 있다. The A/
DMA 버퍼의 1/2 지점에 아직 도달하지 않은 경우(S530 NO), A/D 변환기(110)는 다시 S520 단계를 수행하여 A/D 변환된 디지털 음파 데이터를 DMA 버퍼로 전달할 수 있다. If the 1/2 point of the DMA buffer has not yet been reached (S530 NO), the A/
반면, DMA 버퍼의 1/2 지점에 도달한 경우(S530 Yes), A/D 변환기(110)는 인터럽트 신호를 발생하고(S540), 디지털 음파 데이터를 계속 DMA 버퍼로 전달한다(S550). On the other hand, when the 1/2 point of the DMA buffer is reached (S530 Yes), the A/
인터럽트가 발생하면, 운영체제는 등록된 인터럽트 서비스 루틴을 실행하여, 인터럽트 수신 응답을 하고, DMA 버퍼에 저장된 디지털 음파 데이터를 DMA 버퍼로 복사한다. When an interrupt occurs, the operating system executes the registered interrupt service routine, responds to the interrupt reception, and copies the digital sound wave data stored in the DMA buffer to the DMA buffer.
그리고 A/D 변환기(110)는 DMA 버퍼의 마지막 지점에 도달하였는지 여부를 판단하고(S560), DMA 버퍼의 마지막 지점에 도달한 경우 인터럽트 신호를 발생한다(S570). Then, the A/
DMA 버퍼의 마지막 지점까지 디지털 음파 데이터가 저장된 경우 A/D 변환기(110)는 인터럽트를 발생시키고, 운영체제는 인터럽트 서비스 루틴을 실행한다. When digital sound wave data is stored up to the last point of the DMA buffer, the A/
또한, A/D 변환기(110)는 인터럽트 신호를 발생시킨 후, DMA 버퍼의 시작 지점부터 다시 디지털 음파 데이터를 저장한다(S580). In addition, after generating the interrupt signal, the A/
A/D 변환기 동작 종료 요청을 수신할 때까지(S590), A/D 변환기(110)는 S520 단계 이후의 과정을 반복 수행하여, 디지털 음파 데이터를 DMA 버퍼로 전달하고, 인터럽트를 발생시킬 수 있다. Until the A/D converter operation end request is received (S590), the A/
이하에서는 도 6을 통하여 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)가 도 3의 S310 단계에서 DMA 버퍼를 할당하는 과정에 대하여 더욱 상세하게 설명한다. Hereinafter, a process of allocating a DMA buffer in step S310 of FIG. 3 by the
도 6은 본 발명의 일실시예에 따른 DMA 버퍼 할당 과정을 설명하기 위한 순서도이다. 6 is a flowchart illustrating a DMA buffer allocation process according to an embodiment of the present invention.
먼저, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 최소 버퍼 크기를 입력받는다(S610). First, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자로부터 사용자 버퍼의 크기인 최소 버퍼 크기(BS)를 입력받아, 최대한 사용자가 입력한 최소 버퍼 크기(BS)에 맞추어 DMA 버퍼를 할당한다. The
이중 버퍼링의 특성 상, DMA 버퍼의 1/2의 내용을 사용자 버퍼로 복사하는 시간보다, DMA 버퍼의 1/2 부분에 디지털 음파 데이터를 저장하는 시간이 길어질 경우, 데이터의 오버라이팅으로 데이터가 훼손될 수 있다. Due to the characteristics of double buffering, if the time to store digital sound wave data in the 1/2 part of the DMA buffer is longer than the time to copy the contents of 1/2 of the DMA buffer to the user buffer, the data will be damaged due to overwriting of the data can be
따라서, 본 발명의 일실시예에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자로부터 입력받은 최소 버퍼 크기(BS)를 반영하여, DMA 버퍼를 할당한다. Accordingly, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 인터럽트 발생 주기와 사용자 버퍼 복사 주기가 최대한 같아지도록 하여, 초기 버퍼 지연을 최소화할 수 있다. 이때, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 데이터의 손실이나 훼손이 발생하지 않도록 시스템 내에서 DMA 버퍼의 크기를 조절하여, 지연 축소와 동시에 오디오 데이터의 무결성을 최대한 보장할 수 있다. The
다음으로 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 시간을 계산하고, 계산된 시간 정보를 저장한다(S620). Next, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 다음의 수학식 1과 같이 DMA 시간(DMA Time)을 연산할 수 있다. The
[수학식 1][Equation 1]
DMA 시간을 연산한 후, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 연산된 DMA 시간을 DMA BufferFill-up Count에 저장할 수 있다. After calculating the DMA time, the
그리고 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 테스트용 DMA 버퍼 및 테스트용 사용자 버퍼를 할당한다(S630). In addition, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 사용자가 요청한 버퍼 크기인 최소 버퍼 크기(BS)로, 테스트용 DMA 버퍼 및 테스트용 사용자 버퍼를 할당할 수 있다. The
또한, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 시스템의 현재 시간을 Tcur에 저장한다(S640). In addition, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 인터럽트 서비스 루틴에 버퍼 크기를 전송하며, 현재 시간을 Tnow에 저장한다(S650). The
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 테스트 모드를 호출하고, 인터럽트 서비스 루틴에 사용자가 요청한 버퍼 크기인 최소 버퍼 크기(BS)의 정보를 전송하며, 인터럽트 서비스 루틴의 응답을 대기한다. 그리고 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 인터럽트 서비스 루틴으로부터 응답을 수신하면, 시스템 타이머의 현재 시간을 Tnow에 저장한다. The
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 Tnow와 Tcur의 차이와 DMA BufferFill-up Count 값을 비교하고(S660), Tnow와 Tcur의 차이가 DMA BufferFill-up Count 값보다 작은 경우, 최소 버퍼 크기의 2배 크기로 DMA 버퍼를 할당한다(S670). The
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 Tnow-Tcur이 DMA BufferFill-up Count 값보다 작은 경우, DMA 버퍼의 크기를 사용자 버퍼의 크기인 최소 버퍼 크기(BS)의 2배로 설정하여 DMA 버퍼를 할당할 수 있다. When Tnow-Tcur is less than the DMA BufferFill-up Count value, the
반면, Tnow와 Tcur의 차이가 DMA BufferFill-up Count 값보다 큰 경우, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼 크기를 연산하여 할당하고(S680), Tnow와 Tcur의 차이를 DMA BufferFill-up Count에 저장한다(S690). On the other hand, when the difference between Tnow and Tcur is greater than the DMA BufferFill-up Count value, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 다음의 수학식 2와 같이 DMA 버퍼의 크기를 설정할 수 있다. The
[수학식 2][Equation 2]
여기서, 프레임 레이트는 시스템에 설정된 Hz 단위의 Frame Rate를 의미하고, 채널당 바이트 수는 Byte 단위이다. Here, the frame rate means a frame rate in Hz units set in the system, and the number of bytes per channel is in bytes.
도 6에서, 임의의 인터럽트를 발생시킨 후 인터럽트 서비스 루틴에서 DMA 버퍼와 사용자 버퍼를 할당하여 실제 복사에 소요되는 시간을 시험하고, 그 결과값을 DMA 버퍼의 내용을 사용자 버퍼로 복사하는데 소요되는 시간으로 활용할 수 있다. In FIG. 6, after generating an arbitrary interrupt, the time required for actual copying is tested by allocating a DMA buffer and a user buffer in the interrupt service routine, and the time taken to copy the result value of the DMA buffer to the user buffer can be used as
도 7은 본 발명의 일실시예에 따른 인터럽트 서비스 루틴의 동작 방법을 설명하기 위한 순서도이다. 7 is a flowchart illustrating an operation method of an interrupt service routine according to an embodiment of the present invention.
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 시스템 타이머의 현재 시간을 Ttemp에 저장한다(S710). The
그리고 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 현재 호출된 모드가 테스트 모드인지 여부를 판단하고(S720), 테스트 모드인 경우 테스트용 DMA 버퍼의 내용을 테스트용 사용자 버퍼에 저장한다(S730). And the
DMA 버퍼와 사용자 버퍼 간 데이터 복사 시간을 측정하기 위한 테스트 모드인 경우, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 테스트용 DMA 버퍼의 내용을 테스트용 사용자 버퍼에 저장한 후, 도 7의 과정의 수행을 종료할 수 있다. In the test mode for measuring the data copy time between the DMA buffer and the user buffer, the
반면, 테스트 모드가 아닌 경우, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 인터럽트 수신에 응답하고(S740), 실행 플래그가 OFF인지 여부를 판단한다(S750). On the other hand, if it is not in the test mode, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼의 1/2에 데이터가 저장되어 인터럽트가 발생된 것인 경우, 실행 플래그(RunFlag)를 확인하여, 사용자로부터 오디오 입력 요청을 수신하였는지 여부를 확인한다. When an interrupt is generated because data is stored in 1/2 of the DMA buffer, the
실행 플래그가 OFF인 경우, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 도 7의 인터럽트 서비스 루틴의 실행을 종료한다(S750 No).When the execution flag is OFF, the
실행 플래그가 OFF인 경우, 즉 사용자의 오디오 입력 요청을 수신하지 않은 경우 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 도 7의 과정의 수행을 종료할 수 있다.When the execution flag is OFF, that is, when the user's audio input request is not received, the
실행 플래그가 ON인 경우, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 데이터 요구 시점 값이 0보다 큰 지 여부를 판단하고(S760), 0 이하인 경우 DMA 버퍼 복사를 수행한다(S770). When the execution flag is ON, the
실행 플래그가 ON인 경우, 즉 사용자로부터 오디오 입력 요청을 수신한 경우 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼의 내용을 사용자 버퍼에 복사한다. 이때, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)가 DMA 버퍼의 내용을 사용자 버퍼로 복사하는 과정은 기존의 이중 버퍼링 방식과 동일하다. When the execution flag is ON, that is, when an audio input request is received from the user, the
또한, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 해당 오디오 입력 요청이 최초 요청인지 여부를 확인하기 위하여, 데이터 요구 시점 값(User Request Time Saver)이 0보다 큰지 여부를 확인할 수 있다. Also, the
오디오 입력 요청이 최초 요청이 아닌 경우 데이터 요구 시점 값은 0이다. 따라서, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 데이터 요구 시점 값이 0 이하인 경우, S770 단계를 수행할 수 있다. If the audio input request is not the first request, the data request time value is 0. Accordingly, the
데이터 요구 시점 값이 0보다 큰 경우, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 삭제할 바이트를 설정하고, 삭제할 바이트를 무음으로 처리한다(S780). When the data request time value is greater than 0, the
오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 다음의 수학식 3과 같이 Tdur을 연산하고, 수학식 4와 같이 삭제할 바이트(Byte-to-delete)를 설정한다. The
[수학식 3] [Equation 3]
[수학식 4] [Equation 4]
Byte-to-delete = Byte-to-delete =
그리고 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼 복사 루틴을 호출하고(S790), 데이터 요구 시점 값을 재설정한다(S800). Then, the
오디오 입력 요청이 최초 요청인 경우, 데이터 요구 시점 값(User Request Time Saver)의 값이 0이 아니다. 그리고 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 오디오 입력 요청을 수신한 시간이 기록된 데이터 요구 시점 값과, 데이터가 채워져 인터럽트 서비스 루틴이 호출된 시간을 이용하여, 사용자가 오디오 입력 요청을 전송하기 이전의 데이터를 삭제할 바이트로 설정한다. When the audio input request is the first request, the value of the data request time value (User Request Time Saver) is not 0. In addition, the
또한, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 삭제할 바이트로 설정된 데이터를 무음을 나타내는 데이터로 채워 전송하고, 데이터 요구 시점 값을 0으로 재설정하여 이후 과정에서는 S780 단계 내지 S800 단계를 통한 초기 데이터 삭제 과정이 수행되지 않도록 할 수 있다. In addition, the
도 8은 도 7의 S790 단계에서 DMA 버퍼 복사 루틴을 호출하는 과정을 설명하기 위한 순서도이다. 8 is a flowchart illustrating a process of calling the DMA buffer copy routine in step S790 of FIG. 7 .
도 8에서 제1 인터럽트는 이중 버퍼링 방식에서 DMA 버퍼의 시작 주소부터 DMA 버퍼 크기의 1/2만큼의 DMA 버퍼가 채워진 경우 발생하는 인터럽트를 의미하고, 제2 인터럽트는 DMA 버퍼의 1/2 지점을 시작 주소로 하여 DMA 버퍼 전체가 채워진 경우 발생하는 인터럽트를 의미한다. In FIG. 8 , the first interrupt means an interrupt that occurs when the DMA buffer from the start address of the DMA buffer to half the size of the DMA buffer is filled in the double buffering method, and the second interrupt refers to the half point of the DMA buffer. It means an interrupt that occurs when the entire DMA buffer is filled with the start address.
먼저, 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 제1 인터럽트인지 여부를 확인하고(S810), 제1 인터럽트인 경우 DMA 버퍼 시작 주소부터 삭제할 바이트를 무음으로 처리한다(S820). First, the
그리고 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼 시작 주소부터 DMA 버퍼 크기의 1/2만큼의 데이터를 사용자 버퍼에 복사한다(S830). In addition, the
반면, 제1 인터럽트가 아닌 제2 인터럽트인 경우(S810 No), 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼 시작 주소 + DMA 버퍼 크기의 1/2 지점부터 삭제할 바이트를 무음으로 처리한다(S840). On the other hand, in the case of the second interrupt instead of the first interrupt (S810 No), the
그리고 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치(200)는 DMA 버퍼 시작 주소 + DMA 버퍼 크기의 1/2 지점부터 DMA 버퍼 크기의 1/2만큼의 데이터를 사용자 버퍼에 복사한다(S850). In addition, the
이때, S820 단계 및 S840 단계에서 삭제할 바이트를 무음으로 처리하는 방법은, 오디오 데이터를 변환하는 방식에 따라 상이하며, A-law, u-law 등의 변환알고리즘에서 지정한 무음값을 사용하여 삭제할 바이트를 무음으로 처리할 수 있다. At this time, the method of processing the byte to be deleted as silence in steps S820 and S840 differs depending on the method of converting audio data, and the byte to be deleted is selected using the silence value specified in the conversion algorithm such as A-law and u-law. It can be handled silently.
도 9은 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 블록도이다.9 is a block diagram illustrating a computer system according to an embodiment of the present invention.
도 9을 참조하면, 본 발명의 실시예는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(900)에서 구현될 수 있다. 도 9에 도시된 바와 같이, 컴퓨터 시스템(900)은 버스(920)를 통하여 서로 통신하는 하나 이상의 프로세서(910), 메모리(930), 사용자 인터페이스 입력 장치(940), 사용자 인터페이스 출력 장치(950) 및 스토리지(960)를 포함할 수 있다. 또한, 컴퓨터 시스템(900)은 네트워크(980)에 연결되는 네트워크 인터페이스(970)를 더 포함할 수 있다. 프로세서(910)는 중앙 처리 장치 또는 메모리(930)나 스토리지(960)에 저장된 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(930) 및 스토리지(960)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들어, 메모리는 ROM(931)이나 RAM(932)을 포함할 수 있다.Referring to FIG. 9 , an embodiment of the present invention may be implemented in a
따라서, 본 발명의 실시예는 컴퓨터로 구현된 방법이나 컴퓨터에서 실행 가능한 명령어들이 기록된 비일시적인 컴퓨터에서 읽을 수 있는 매체로 구현될 수 있다. 컴퓨터에서 읽을 수 있는 명령어들이 프로세서에 의해서 수행될 때, 컴퓨터에서 읽을 수 있는 명령어들은 본 발명의 적어도 한 가지 태양에 따른 방법을 수행할 수 있다.Accordingly, the embodiment of the present invention may be implemented as a computer-implemented method or a non-transitory computer-readable medium in which computer-executable instructions are recorded. When the computer readable instructions are executed by a processor, the computer readable instructions are capable of performing a method according to at least one aspect of the present invention.
이상에서와 같이 본 발명에 따른 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다. As described above, in the buffer control apparatus and method for reducing audio input processing delay according to the present invention, the configuration and method of the above-described embodiments are not limitedly applicable, but various modifications may be made to the embodiments. All or part of each embodiment may be selectively combined and configured.
10: 아날로그 음파 20: 디지털 음파 데이터
110: A/D 변환기 120: DMA 버퍼
130: 사용자 버퍼
200: 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치
210: DMA 버퍼 할당부 220: A/D 변환기 실행부
230: DMA 버퍼 전달부 240: 사용자 버퍼 복사부
250: 알림 전송부 900: 컴퓨터 시스템
910: 프로세서 920: 버스
930: 메모리 931: 롬
932: 램 940: 사용자 인터페이스 입력 장치
950: 사용자 인터페이스 출력 장치
960: 스토리지 970: 네트워크 인터페이스
980: 네트워크10: analog sound wave 20: digital sound wave data
110: A/D converter 120: DMA buffer
130: user buffer
200: Buffer control device for reducing audio input processing delay
210: DMA buffer allocation unit 220: A / D converter execution unit
230: DMA buffer transfer unit 240: user buffer copy unit
250: notification transmitter 900: computer system
910: processor 920: bus
930: memory 931: ROM
932: ram 940: user interface input device
950: user interface output device
960: storage 970: network interface
980: network
Claims (10)
사용자의 최소 버퍼 크기를 기반으로 DMA(Direct Memory Access) 버퍼를 할당하는 단계,
아날로그 음파를 디지털 음파 데이터로 변환하는 A/D 변환기를 초기화한 후, 상기 사용자로부터 오디오 입력 요청을 수신하기 이전에 상기 A/D 변환기의 동작을 실행시키는 단계,
변환된 상기 디지털 음파 데이터를 상기 DMA 버퍼로 전달하는 단계,
상기 오디오 입력 요청을 수신한 상태에서 상기 A/D 변환기의 인터럽트 수신 시, 상기 DMA 버퍼에 저장된 상기 디지털 음파 데이터를 사용자 버퍼로 복사하는 단계, 그리고
상기 오디오 입력 요청에 상응하는 프로세스로, 상기 사용자 버퍼가 가득 찼음을 알리는 버퍼 풀 알림을 전송하는 단계를 포함하고,
상기 A/D 변환기의 동작을 실행시키는 단계는,
상기 A/D 변환기에 상기 DMA 버퍼의 시작 주소 및 크기를 전달하는 단계;
상기 A/D 변환기에서 인터럽트 발생 시 인터럽트 서비스 루틴이 실행되도록, 운영체제에 인터럽트 서비스 루틴을 등록하는 단계; 그리고
상기 A/D 변환기의 동작을 실행시키고, 상기 사용자의 상기 오디오 입력 요청 수신을 대기하는 단계를 포함하는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 방법. A buffer control method for reducing audio input processing delay performed by a buffer control device for reducing audio input processing delay, the method comprising:
allocating a direct memory access (DMA) buffer based on the user's minimum buffer size;
After initializing an A/D converter that converts analog sound waves into digital sound wave data, executing an operation of the A/D converter before receiving an audio input request from the user;
transferring the converted digital sound wave data to the DMA buffer;
Copying the digital sound wave data stored in the DMA buffer to a user buffer upon reception of the interrupt of the A/D converter in a state in which the audio input request is received, and
sending, to a process corresponding to the audio input request, a buffer pool notification indicating that the user buffer is full;
The step of executing the operation of the A/D converter,
transmitting the start address and size of the DMA buffer to the A/D converter;
registering the interrupt service routine in the operating system so that the interrupt service routine is executed when an interrupt occurs in the A/D converter; and
and executing the operation of the A/D converter and waiting for the user to receive the audio input request.
상기 인터럽트 서비스 루틴은,
수신한 상기 오디오 입력 요청이 첫 번째 요청인 경우, 상기 첫 번째 요청에 상응하는 시점 이전의 상기 디지털 음파 데이터를 무음으로 처리한 후, 상기 DMA 버퍼의 상기 디지털 음파 데이터를 상기 사용자 버퍼로 복사하는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 방법.The method according to claim 1,
The interrupt service routine is
When the received audio input request is the first request, the digital sound wave data before the time corresponding to the first request is silenced, and then the digital sound wave data in the DMA buffer is copied to the user buffer. Buffer control method to reduce input processing delay.
상기 인터럽트 서비스 루틴은,
현재 시간, 상기 DMA 버퍼가 채워지는 시간 및 상기 오디오 입력 요청을 수신한 시간 중 적어도 어느 하나를 포함하는 시간 정보를 기반으로 무음으로 처리할 상기 디지털 음파 데이터를 설정하는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 방법.4. The method according to claim 3,
The interrupt service routine is
Buffer for reducing audio input processing delay for setting the digital sound wave data to be processed in silence based on time information including at least one of a current time, a time when the DMA buffer is filled, and a time when the audio input request is received control method.
상기 디지털 음파 데이터를 상기 DMA 버퍼로 전달하는 단계는,
인터럽트의 발생 빈도를 최소화하기 위하여, 상기 사용자 버퍼의 크기마다 상기 인터럽트를 발생시키는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 방법.The method according to claim 1,
The step of transferring the digital sound wave data to the DMA buffer comprises:
A buffer control method for reducing audio input processing delay in which the interrupt is generated for each size of the user buffer in order to minimize the frequency of occurrence of the interrupt.
아날로그 음파를 디지털 음파 데이터로 변환하는 A/D 변환기를 초기화한 후, 상기 사용자로부터 오디오 입력 요청을 수신하기 이전에 상기 A/D 변환기의 동작을 실행시키는 A/D 변환기 실행부;
변환된 상기 디지털 음파 데이터를 상기 DMA 버퍼로 전달하는 DMA 버퍼 전달부;
상기 오디오 입력 요청을 수신한 상태에서 상기 A/D 변환기의 인터럽트 수신 시, 상기 DMA 버퍼에 저장된 상기 디지털 음파 데이터를 사용자 버퍼로 복사하는 사용자 버퍼 복사부; 그리고
상기 오디오 입력 요청에 상응하는 프로세스로, 상기 사용자 버퍼가 가득 찼음을 알리는 버퍼 풀 알림을 전송하는 알림 전송부를 포함하고,
상기 A/D 변환기 실행부는,
상기 A/D 변환기에 상기 DMA 버퍼의 시작 주소 및 크기를 전달하고,
상기 A/D 변환기에서 인터럽트 발생 시 인터럽트 서비스 루틴이 실행되도록, 운영체제에 인터럽트 서비스 루틴을 등록하며,
상기 A/D 변환기의 동작을 실행시키고,
상기 사용자의 상기 오디오 입력 요청 수신을 대기하는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치.a DMA buffer allocator for allocating a DMA (Direct Memory Access) buffer based on the user's minimum buffer size;
an A/D converter executing unit that initializes an A/D converter that converts analog sound waves into digital sound wave data, and then executes an operation of the A/D converter before receiving an audio input request from the user;
a DMA buffer transfer unit transferring the converted digital sound wave data to the DMA buffer;
a user buffer copy unit for copying the digital sound wave data stored in the DMA buffer to a user buffer upon reception of the interrupt of the A/D converter in a state in which the audio input request is received; and
A process corresponding to the audio input request, comprising a notification transmitter for transmitting a buffer pool notification indicating that the user buffer is full,
The A/D converter execution unit,
transmitting the start address and size of the DMA buffer to the A/D converter;
Register the interrupt service routine in the operating system so that the interrupt service routine is executed when an interrupt occurs in the A/D converter,
Execute the operation of the A/D converter,
A buffer control device for reducing an audio input processing delay waiting for the user to receive the audio input request.
상기 인터럽트 서비스 루틴은,
수신한 상기 오디오 입력 요청이 첫 번째 요청인 경우, 상기 첫 번째 요청에 상응하는 시점 이전의 상기 디지털 음파 데이터를 무음으로 처리한 후, 상기 DMA 버퍼의 상기 디지털 음파 데이터를 상기 사용자 버퍼로 복사하는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치.7. The method of claim 6,
The interrupt service routine is
When the received audio input request is the first request, the digital sound wave data before the time corresponding to the first request is silenced, and then the digital sound wave data in the DMA buffer is copied to the user buffer. Buffer control device to reduce input processing delay.
무음으로 처리할 상기 디지털 음파 데이터를 설정하기 위하여, 현재 시간, 상기 DMA 버퍼가 채워지는 시간 및 상기 오디오 입력 요청을 수신한 시간 중 적어도 어느 하나를 포함하는 시간 정보를 저장하는 데이터 요청 처리부를 더 포함하는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치.9. The method of claim 8,
In order to set the digital sound wave data to be processed as silence, a data request processing unit for storing time information including at least one of a current time, a time at which the DMA buffer is filled, and a time at which the audio input request is received, further comprising a data request processing unit Buffer control device for reducing delay in processing audio input.
상기 DMA 버퍼 전달부는,
인터럽트의 발생 빈도를 최소화하기 위하여, 상기 사용자 버퍼의 크기마다 상기 인터럽트를 발생시키는 오디오 입력 처리 지연 축소를 위한 버퍼 컨트롤 장치.7. The method of claim 6,
The DMA buffer transfer unit,
A buffer control apparatus for reducing audio input processing delay for generating the interrupt for each size of the user buffer in order to minimize the frequency of occurrence of interrupts.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180023095A KR102411811B1 (en) | 2018-02-26 | 2018-02-26 | Apparatus and method for buffer control to reduce audio input processing delay |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180023095A KR102411811B1 (en) | 2018-02-26 | 2018-02-26 | Apparatus and method for buffer control to reduce audio input processing delay |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190102569A KR20190102569A (en) | 2019-09-04 |
KR102411811B1 true KR102411811B1 (en) | 2022-06-23 |
Family
ID=67950465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180023095A Active KR102411811B1 (en) | 2018-02-26 | 2018-02-26 | Apparatus and method for buffer control to reduce audio input processing delay |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102411811B1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008077174A (en) * | 2006-09-19 | 2008-04-03 | Sony Computer Entertainment Inc | Audio processor, input/output processor, and information processor |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100490403B1 (en) * | 2002-05-04 | 2005-05-17 | 삼성전자주식회사 | Method for controlling buffering of audio stream and apparatus thereof |
WO2010019750A1 (en) | 2008-08-14 | 2010-02-18 | Dolby Laboratories Licensing Corporation | Audio signal transformatting |
KR20120108564A (en) * | 2011-03-24 | 2012-10-05 | 삼성전자주식회사 | Data processing system, and method of operating the same |
-
2018
- 2018-02-26 KR KR1020180023095A patent/KR102411811B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008077174A (en) * | 2006-09-19 | 2008-04-03 | Sony Computer Entertainment Inc | Audio processor, input/output processor, and information processor |
Non-Patent Citations (1)
Title |
---|
이경희, 정찬근, "Windows NT 환경하에서 오디오 입력 지연 축소화를 위한 버퍼의 최적화", 대한전자공학회 학술대회, 1996.11.* |
Also Published As
Publication number | Publication date |
---|---|
KR20190102569A (en) | 2019-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7568057B2 (en) | Method and apparatus for maintaining synchronization of audio in a computing system | |
US20210240650A1 (en) | Methods and devices for extending usb 3.0-compliant communication over an extension medium | |
US20210109681A1 (en) | Nvme-based data writing method, apparatus, and system | |
JP5527512B2 (en) | Bus protocol conversion device and bus protocol conversion method | |
US7046628B2 (en) | Apparatus and method for just-in-time transfer of transmit commands to a network interface | |
US20130132960A1 (en) | Usb redirection for read transactions | |
WO2020015670A1 (en) | File sending method, file receiving method and file transceiving apparatus | |
WO2015192685A1 (en) | Data storage method and network interface card | |
US7975090B2 (en) | Method for efficient I/O controller processor interconnect coupling supporting push-pull DMA read operations | |
US20110010417A1 (en) | Data transfer system and data transfer method | |
JP6523707B2 (en) | Memory subsystem that performs continuous reading from lap reading | |
CN108874310A (en) | The read buffer method, apparatus and computer readable storage medium of distributed storage | |
US20230315675A1 (en) | Techniques for deconflicting usb traffic in an extension environment | |
US9258834B2 (en) | Method of mobile terminal internal communications | |
KR20120072134A (en) | Apparatus and method for accelerating virtual desktop | |
KR102411811B1 (en) | Apparatus and method for buffer control to reduce audio input processing delay | |
CN108419103B (en) | A video transmission method and device | |
CN111858363A (en) | Method, device, terminal and storage medium for identifying stack overflow | |
US6564280B1 (en) | Communication controller configurability for optimal resource usage | |
JP2010198138A (en) | Data transfer device, data transfer control method, data transfer control program, and recording medium | |
US12050544B2 (en) | Predicting free buffer space in a USB extension environment | |
CN101442387B (en) | Method and apparatus for processing back-pressure data | |
CN115914393A (en) | Communication method, device, equipment and medium | |
KR100932925B1 (en) | Direct memory access control device and its method for the transmission efficiency of MMO | |
CN113127222B (en) | Data transmission method, device, equipment and medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20180226 |
|
PG1501 | Laying open of application | ||
A201 | Request for examination | ||
PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20201217 Comment text: Request for Examination of Application Patent event code: PA02011R01I Patent event date: 20180226 Comment text: Patent Application |
|
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20210830 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20220329 |
|
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20220617 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20220620 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration |