KR100639110B1 - 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보산출방법 - Google Patents

프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보산출방법 Download PDF

Info

Publication number
KR100639110B1
KR100639110B1 KR1020050084131A KR20050084131A KR100639110B1 KR 100639110 B1 KR100639110 B1 KR 100639110B1 KR 1020050084131 A KR1020050084131 A KR 1020050084131A KR 20050084131 A KR20050084131 A KR 20050084131A KR 100639110 B1 KR100639110 B1 KR 100639110B1
Authority
KR
South Korea
Prior art keywords
stream data
calculating
audio stream
time
size
Prior art date
Application number
KR1020050084131A
Other languages
English (en)
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 KR1020050084131A priority Critical patent/KR100639110B1/ko
Priority to US11/470,791 priority patent/US8090458B2/en
Application granted granted Critical
Publication of KR100639110B1 publication Critical patent/KR100639110B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/005Reproducing at a different information rate from the information rate of recording
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers

Abstract

본 발명은 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출 방법에 관한 것으로서, 보다 상세하게는 프레임 구조로 이루어진 오디오 또는 보이스 스트림 데이터의 재생 시에 헤더에 포함된 비트레이트 정보나 타임테이블 정보가 포함되지 않은 경우에도 스트림 데이터의 재생에 따른 시간관련 정보를 산출하는 방법에 관한 것이다. 이때 적용 되어지는 오디오 및 보이스 스트림 데이터는 프레임 단위로 이루어진 형태 외에 몇 개의 프레임이 하나의 비트스트림 블록을 구성하는 형태도 포함한다.
본 발명에 의하면 오디오 스트림 데이터 내부에 시간정보가 포함되어 있지 않아도 별도의 로딩이나 타임 테이블 구성없이 스트림 데이터의 재생시간 정보를 간단하게 산출할 수 있는 효과가 있다.
비트레이트, 프레임, 재생시간, 오디오 스트림

Description

프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법{METHOD OF ESTABLISHING TIME INFORMATION OF FRAME BASED AUDIO STREAM DATA}
도1은 종래기술에 따른 타임테이블 작성시스템의 구조를 나타낸 구성도.
도2는 프레임 기반 오디오 스트림 데이터의 구조를 나타낸 블럭도.
도3은 본 발명의 실시예에 따른 시간정보 산출시스템의 구조를 나타낸 구성도.
본 발명은 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법에 관한 것으로서, 보다 상세하게는 프레임 구조로 이루어진 오디오 또는 보이스 스트림 데이터의 재생시에 헤더정보에 비트레이트나 타임테이블 정보가 포함되지 않은 경우에도 스트림 데이터의 재생에 따른 시간관련정보를 산출할 수 있도록 하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법에 관한 것이다.
CD, DVD, MP3 등의 디지털 저장매체에는 오디오 신호가 디지털 신호로 인코딩되어 저장된다. 이러한 디지털 신호는 재생장치에 포함된 버퍼에 임시로 저장된 후, 디코더에 의하여 오디오 신호로 디코딩되어 출력된다.
최근 오디오 저장매체가 발달하고 다양한 형태의 플레이어가 개시되면서 저장매체에 포함된 신호를 선택적으로 재생하거나 반복, 고속전진, 고속후진 시키기 위한 다양한 방법들이 개시되고 있다.
이러한 종래기술들은 코딩된 디지털 신호의 헤더정보에 포함된 비트레이트(bitrate) 정보를 이용하여 파일전체의 재생시간, 특정 부분의 시간적 위치, 현재 재생시간 등을 산출하고, 이를 외부 LCD(Liquid Crystal Display)에 표시하여 사용자에게 재생상태에 관한 정보를 제공한다. 즉, CBR(Constant Bitrate; 고정 비트레이트)로 인코딩된 MP3 와 같이 프레임 헤더 내에 비트레이트 정보를 가지고 있는 경우에는 이러한 비트레이트 정보와 파일 크기 정보를 이용하여 오디오 파일의 전체 재생시간을 용이하게 계산할 수 있다.
또한 VBR(Variable Bitrate; 가변 비트레이트)로 인코딩된 파일의 경우에도 부가 헤더 내에 전체 프레임수나 재생시간 등에 관한 정보가 기재되어 있는 경우에는 이를 이용하여 전체 재생시간을 용이하게 계산할 수 있다.
그러나 전체 프레임 수나 타임 테이블(Time Table)등과 같이 시간 정보를 산출할 수 있는 부가적인 헤더 정보가 없는 VBR과 같이, 매 프레임마다 크기가 변하는 오디오 스트림이나, 비트레이트 정보 등이 없는 프레임 기반의 오디오 스트림의 경우에는 정확한 재생시간을 계산하기가 어렵다.
이러한 데이터의 경우에 재생시간의 정보를 산출하기 위해서는 재생 이전에 전체 파일을 로딩하여 오디오 스트림을 구성하는 전체 프레임수를 계산한다.
도1은 종래기술에 따른 타임테이블 작성시스템의 구조를 나타낸 구성도이며, 이와 같은 종래기술에 따르면, 오디오 데이터 파일이 데이터 저장장치(32)로부터 버퍼 메모리 또는 순환 버퍼(25)를 통해 스트리밍될 때, 마이크로 컨트롤러 또는 타임키퍼(22)는 오디오 데이터의 각 세그먼트에 대한 경과 재생시간(T1)을 계산한다. DSP 메모리 또는 선형버퍼(11)는 순환버퍼(25)로부터 오디오 데이터 스트림을 수신하고, 선형버퍼(11)는 오디오 데이터의 시간길이(ΔT)를 포함한다. 선형버퍼(11)로부터 출력되어 디코딩용 DSP 디코더(12)로 입력되는 경과 재생시간(T2)을 계산 및 표시하기 위해, 타임키퍼(11)는 순환버퍼(25)로부터 출력되는 오디오 데이터의 경과 재생시간(T1)으로부터 선형버퍼(11)에 포함되어 있는 오디오 데이터의 시간길이(ΔT)를 감시한다. 따라서 T2는 DSP(12)에 의해 현재 디코딩되고 있는 오디오 데이터용 오디오 데이터 파일의 경과 재생시간을 나타낸다.
그러나 이와 같이 오디오 스트림의 재생 이전에 전체 파일을 로딩하기 위해서는 별도의 데이터 로딩시간이 필요하고 별도의 전력이 소모되므로, 재생을 위하여 필요한 대기시간이 길어지고 소형화된 플레이어에 있어서 전력소비가 커져서 전원사용시간이 줄어드는 단점이 있었다.
본 발명은 전술한 문제점을 해결하기 위하여 안출된 것으로서, 헤더내에 비트레이트나 전체 재생시간에 대한 정보가 포함되어 있지 않아도 스트림 데이터가 프레임 단위로 구성되어 있다면, 전체 프레임수와 파일크기를 가지고 정확한 재생시간에 대한 정보를 산출할 수 있도록 하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법을 제공하는 것을 목적으로 한다.
또한 본 발명은 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보를 구하기 위하여 별도의 로딩시간을 필요로 하지 않고, 스트림 데이터의 재생과 동시에 각종 시간정보를 구할 수 있도록 하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법을 제공하는 것을 목적으로 한다.
또한 본 발명은 별도의 타임테이블을 구성 또는 이용할 수 없는 환경이나 비트스트림이 저장되어 있는 메모리 등 저장 매체를 직접 엑세스할 수 없는 환경 하에서 스트림 데이터의 고속전진, 고속후진, 반복을 위하여 필요한 비트스트림 내의 시간위치를 별도의 비트레이트 정보 없이도 파악할 수 있도록 하는 프레임 단위로 이루어진 오디오 및 보이스 스트림 데이터의 시간정보 산출방법을 제공하는 것을 목적으로 한다.
전술한 문제점을 해결하기 위한 본 발명은 오디오 스트림 데이터를 재생하는 시스템에서 스트림 데이터의 시간정보를 산출하는 방법으로서, 프레임 구조로 인코딩된 오디오 스트림 데이터가 버퍼에 입력되면, 단위시간당 디코딩 프레임수를 계산하는 단계와; 상기 버퍼에 저장된 오디오 스트림 데이터의 프레임당 데이터 크기를 계산하는 단계와; 상기 오디오 스트림 데이터의 전체 크기를 상기 단위시간당 디코딩 프레임수와 프레임당 데이터 크기의 곱으로 나누어 상기 오디오 스트림 데이터의 전체 재생 시간을 계산하는 단계;를 포함한다.
다른 실시예에 따른 본 발명은 오디오 스트림 데이터를 재생하는 시스템에서 스트림 데이터의 시간정보를 산출하는 방법으로서, 프레임 구조로 코딩된 오디오 스트림 데이터가 버퍼에 입력되면, 단위시간당 디코딩 프레임수를 계산하는 단계와; 상기 시스템에 의하여 디코딩이 수행되어 재생된 상기 오디오 스트림 데이터의 재생 프레임수를 업데이트하고, 상기 업데이트된 재생 프레임수를 저장하는 단계와; 상기 재생 프레임수를 상기 단위시간당 디코딩 프레임수로 나누어 진행중인 오디오 스트림 데이터의 현재 재생 시간을 계산하는 단계;를 포함한다.
상기 단위시간당 디코딩 프레임수를 계산하는 단계는 단위시간당 최종 PCM(Pulse Code Modulation) 데이터로 디코딩되어 출력되는 PCM 샘플수인 샘플링 레이트를 계산하는 단계와; 상기 샘플링 레이트를 프레임당 PCM 샘플데이터수로 나누어서 단위시간당 디코딩 프레임수를 계산하는 단계;로 이루어지는 것을 특징으로 한다.
상기 프레임당 데이터 크기는 상기 버퍼에 저장된 전체 오디오 스트림 데이터의 크기를 상기 버퍼에 입력되는 오디오 스트림 데이터의 프레임수로 나누어서 계산하는 것을 특징으로 한다.
한편 또 다른 실시예에 따른 본 발명은 오디오 스트림 데이터를 재생하는 시스템에서 스트림 데이터의 시간정보를 산출하는 방법으로서, 프레임 구조로 코딩된 오디오 스트림 데이터가 버퍼에 입력되면, 상기 버퍼에 저장된 오디오 스트림 데이터의 프레임당 데이터 크기를 계산하는 단계와; 상기 오디오 스트림 데이터의 전체 크기를 상기 프레임당 데이터 크기로 나누어 전체 프레임수를 계산하는 단계와; 상기 전체 프레임수를 단위시간당 디코딩 프레임수로 나누어 상기 오디오 스트림 데 이터의 전체 재생 시간을 계산하는 단계;를 포함한다.
또 다른 실시예에 따른 본 발명은 오디오 스트림 데이터를 재생하는 시스템에서 스트림 데이터의 시간정보를 산출하는 방법으로서, 프레임 구조로 코딩된 스트림 데이터가 버퍼에 입력되면, 단위시간당 디코딩 프레임수와, 상기 버퍼에 저장된 스트림 데이터의 프레임당 데이터 크기를 곱하여 단위시간당 스트림 데이터 크기를 계산하는 단계와; 상기 오디오 스트림의 재생중에 이동신호가 입력되면, 입력된 이동시간과 상기 단위시간당 스트림 데이터 크기를 곱하여 이동할 스트림 데이터 크기를 계산하는 단계와; 상기 버퍼로 입력되는 스트림 데이터 크기를 누적시켜 버퍼입력 데이터 크기를 계산하는 단계와; 상기 버퍼에 저장된 스트림 데이터 중에서 현재까지 디코딩되어 재생된 스트림 데이터 크기를 나타내는 디코딩된 버퍼입력 데이터 크기를 계산하는 단계와; 상기 이동신호가 전진이동 신호인 경우에, 상기 오디오 스트림 데이터에서 현재 재생되고 있는 시간 위치와, 상기 이동할 스트림 데이터 크기를 가산하여 새로 재생을 시작할 위치에 대한 정보를 계산하는 단계와; 상기 이동신호가 후진이동 신호인 경우에, 상기 오디오 스트림 데이터에서 현재 재생되고 있는 시간 위치와, 상기 이동할 스트림 데이터 크기를 감산하여 새로 재생을 시작할 위치에 대한 정보를 계산하는 단계;를 포함한다.
현재 재생시간과, 상기 이동시간을 더하여 새 위치의 현재 재생시간을 구하는 단계;를 추가로 포함한다.
상기 현재 재생되고 있는 시간 위치는 상기 버퍼입력 데이터 크기에 최대 패킷 크기를 뺀 후, 상기 디코딩된 버퍼입력 데이터 크기를 더하여 계산되는 것을 특 징으로 한다.
또 다른 실시예에 따른 본 발명은 오디오 스트림 데이터를 재생하는 시스템에서 스트림 데이터의 시간정보를 산출하는 방법으로서, 버퍼에 입력된 스트림 데이터의 재생 도중, 반복시작 신호가 입력되면, 상기 버퍼에 입력된 스트림 데이터의 현재 재생 프레임을 반복시점 프레임으로 결정하고, 상기 현재 재생 프레임까지의 누적 프레임수를 반복시점 프레임수로 저장하는 단계와; 반복종점 신호가 입력되면, 상기 반복종점 신호가 입력되는 순간의 현재 재생 프레임을 반복종점 프레임수로 결정하여 저장하고, 반복 플래그를 생성하여 저장하는 단계와; 상기 반복시점 프레임수로부터 상기 반복종점 프레임수까지 스트림 데이터의 재생을 반복하고, 반복재생이 완료될 때마다 상기 반복 플래그를 갱신하는 단계;를 포함한다.
본 발명은 반복종료 신호가 입력되면, 상기 반복시점 프레임수와 반복종점 프레임수에 대한 정보를 삭제하는 단계;를 추가로 포함한다.
이하, 도면을 참조하여 설명한다.
도2는 프레임 기반 오디오 스트림 데이터(10)의 일반적인 구조를 나타낸 블럭도이며, 도3은 본 발명의 실시예에 따른 시간정보 산출시스템의 구조를 나타낸 구성도이다.
도2에 도시된 바와 같이, 스트림 데이터(10)는 ID3 Tag (2, 4)와 프레임 단위의 코딩된 데이터(6, 8)를 가지고 있으며, 핸드폰(110)이나 마이크로 컨트롤러(120)의 데이터 저장장치로부터 Hera, DSP 또는 MAP(Multimedia Application Processor)(130) 등에 포함된 버퍼메모리(132)에 저장되어 디코더(134)에 의하여 오디오 신호로 디코딩된다.
스트림 데이터(10)의 전후에 위치한 ID3 Tag (2, 4)에는 해당 음악에 대한 상세정보가 저장되는데, 곡명, 저작자, 음악채널 등에 대한 정보가 여기에 포함된다. ID3 Tag V.1.X (4)는 128 byte의 고정된 크기를 갖는데 비하여, ID3 Tag V.2.X (2)는 가변적인 블록크기를 가지며, 이미지나 가사 등의 정보도 저장할 수 있는 점에서 차이가 있다. 이때 이러한 ID3 Tag(2, 4)는 스트림 데이터(10)에 경우에 따라서는 포함 되지 않을 수 있다.
스트림 데이터(10)는 경우에 따라서는 스트림 데이터(10)와 무관한 다른 용도의 부가 데이터(6)가 스트림 앞·뒤 또는 프레임 사이에 존재 할 수 있다. 이때 스트림 데이터(10)는 단일 프레임 단위(8)로 구성되어질 수 있으며, 몇 개의 프레임들이 묶여 블록이나 페이지 단위(8-1)로 구성되어 질 수 있다. 각 프레임의 데이터 크기는 일정하거나 가변적이며, 본 발명은 프레임의 데이터 크기가 일정한 경우와 가변적인 경우 모두에 적용될 수 있다.
본 발명이 적용될 수 있는 스트림 데이터는 프레임 단위의 구조로 이루어진 모든 데이터를 의미하며, 구체적으로는 아래와 같은 데이트를 대상으로 할 수 있다.
① 프레임 헤더 내에 비트레이트 정보를 가지고 있는 경우
: MP1, MP2, MP3 등
② 프레임 헤더 내에 비트레이트 정보를 가지고 있지 않은 경우
: AAC(Advanced Audio Coder), ADTS, 일반 Voice 스트림
③ 몇개의 프레임을 통해 블럭을 구성하는 경우
: Real Audio Format, Ogg, WMA(Windows Media Audio) 등
④ 프레임 헤더를 포함하지 않고 프레임 단위로 구성된 경우
: MP4 Audio, 3GPP 파일 포맷, Quick Time 포맷 등
⑤ 전체 재생시간을 계산하기 위해 부가적인 Xing. Vbri 헤더를 가지고 있지 않은 프레임 단위의 파일 포맷 등
⑥ 고속전진(FF), 고속후진(FR), 탐색(Seeking), 반복(Repaet), 재생시간표시(Time Dispaly)를 위한 타임테이블을 가지고 있지 않은 파일 포맷 등.
이와 같이, 헤더정보내에 스트림 데이터(10)의 시간정보를 전혀 포함하고 있지 않더라도 데이터의 구조가 프레임 단위로 이루어져 있다면 본 발명의 산출방법이 적용될 수 있다.
이하의 실시예에서 스트림 데이터(10)의 시간정보를 계산하는 방법을 각 경우별로 설명한다.
비트레이트 정보가 없는 경우에 재생시간 산출방법
매 프레임마다 데이터 크기가 변하거나 비트레이트 정보가 없는 경우에 전체 또는 현재의 재생시간을 파악하기 위해서는 프레임수 또는 데이터 크기로부터 비트레이트를 계산해야 한다.
① 프레임 단위의 오디오 스트림 데이터의 경우에는 매 프레임마다 압축 비트스트림을 디코딩하여 출력하는 PCM(Pulse Code Modulation) 데이터의 수기에 대한 정보를 가지고 있다. 최종 PCM 데이터의 출력을 위한 샘플링 레이트를 이러한 프레임당 PCM 샘플 데이터 수로 나누면 단위시간당 디코더(134)가 디코딩해야 할 스트림 데이터(10)의 프레임수가 계산된다.
Figure 112005050548696-pat00001
Figure 112005050548696-pat00002
Figure 112005050548696-pat00003
이와 같은 계산은 Real Audio 와 Ogg, WMA 에서와 같이 몇개의 프레임을 모아 하나의 블럭(8-1)을 형성한 스트림 데이터에 대하여도 적용될 수 있을 것이다.
② 핸드폰(110) 또는 마이크로 컨트롤러(120)로부터 버퍼메모리(132)로 전달된 스트림 데이터(10)의 프레임수를 카운트하여 기록하고, 이를 이용하여 프레임당 처리해야 할 데이터 크기를 계산한다.
Figure 112005050548696-pat00004
Figure 112005050548696-pat00005
Figure 112005050548696-pat00006
단, 이때 핸드폰(110) 또는 마이크로 컨트롤러(120)로부터 버퍼메모리(132)로의 데이터 전송 단위를 패킷이라고 할 때,
Figure 112005050548696-pat00007
는 임의의 i 번째 패킷에서 전달된 데이터 사이즈를 의미하고, m은 VBR일 경우 패킷마다 가변이다.
③ 위의 계산결과를 이용하여 단위시간당 디코더(134)에서 처리해야 할 스트림 데이터(10)의 크기를 계산할 수 있다.
Figure 112005050548696-pat00008
Figure 112005050548696-pat00009
Figure 112005050548696-pat00010
④ 전체 스트림 데이터의 재생시간(total play time)은 전체 스트림 데이터 크기를 단위시간당 스트림 데이터 크기로 나누어서 구할 수 있다.
Figure 112005050548696-pat00011
Figure 112005050548696-pat00012
⑤ 한편, 전체 스트림 데이터 중에서 재생되고 있는 오디오 스트림의 현재 재생시간(current play time)을 파악할 수 있다. 이를 위해 매 프레임마다 디코더(134)가 디코딩하여 출력장치(140)에 의하여 출력된 재생 프레임수(frame count)를 카운트하여 저장한다.
Figure 112005050548696-pat00013
Figure 112005050548696-pat00014
⑥ 이상에서 산출한 시간정보들을 비트레이트 단위로 계산할 수도 있다. 즉 단위시간당 스트림 데이터 크기는 bytes 단위로 계산되므로, 여기에 8을 곱하여 bit 단위로 변환할 수 있을 것이다.
Figure 112005050548696-pat00015
Figure 112005050548696-pat00016
이다.
전체 프레임수에 대한 정보가 있는 경우에 재생시간 산출방법
CBR 모드나 부가 헤더정보에 오디오 스트림 데이터(10)의 전체 프레임수에 대한 정보가 포함되어 있는 경우에는 이를 이용하여 간단하게 전체 재생시간 등을 구할 수 있다.
① 스트림 데이터의 전체 프레임수는 전체 파일 크기를 식 2에서 구한 프레임당 데이터 크기로 나누어서 구할 수 있다. 이때 부가 정보가 없는 VBR모드 일 경우 m은 전송 패킷들에 대한 평균값을 취할 수 있다.
Figure 112005050548696-pat00017
② 그리고 전체 재생시간은 전체 프레임수를 식 1의 단위시간당 디코딩 프레임수로 나누어서 구할 수 있다.
Figure 112005050548696-pat00018
오디오 스트림 재생중 고속전진(forward)하는 경우에 재생위치 결정방법
다음으로 오디오 스트림 데이터(10)의 재생중에 특정한 위치로 전진 이동시키기 위하여 고속전진(fast forward) 신호가 입력된 경우에 정해진 위치로 이동하여 재생하기 위한 시간정보 산출방법에 대하여 설명한다.
Xing 이나 Vbri와 같은 부가 헤더정보에 타임 테이블을 보유하고 있는 경우 나 종래 기술과 같이 파일을 전체 로딩하여 타임 테이블을 생성한 경우에는 이를 이용하여 새로운 재생위치를 결정하면 되지만, 부가정보를 포함하지 않는 일반적인 포맷은 새로운 방법을 적용하여야 한다.
이동하고자 하는 스트림 데이터(10)의 타임 테이블을 작성하기 위하여 오디오 스트림 데이터의 디코딩 전에 DSP 또는 마이크로 컨트롤러(130)를 통하여 전체 파일을 한 번 로딩하는 방법을 적용할 수도 있으나, 전술한 바와 같이 각 파일 또는 스트림에 대한 별도의 테이블 저장공간이 필요하고, 전체 파일 로딩 및 테이블 생성에 필요한 프로세스가 진행되어야 하므로 시간과 전력이 소요된다.
여기서는 오디오 스트림 파일내의 임의의 Offset 위치로 디코딩 포인트를 이동한다는 관점에서 별도의 프로세스가 필요하지 않는 방법을 설명한다. 또한 스트림 데이터(10)가 저장 되어 있는 메모리 공간 등을 DSP 또는 MAP(Multimedia Application Processor)(130)가 직접 엑세스를 할 수 없고 핸드폰(110)이나 마이크로 컨트롤러(120)에서 버퍼메모리(132) 내부로 넘겨주는 데이터 정보만을 이용해야 하는 환경 하에서 재생 시간 위치에 해당하는 Offset위치를 계산하는 방법을 설명한다.
① 먼저 사용자 인터페이스로부터 사용자가 이동하고 싶은 시간(time scale) 값이 입력되면, 이 값과 식 3의 단위시간당 스트림 데이터 크기를 이용하여 이동할 스트림 데이터 크기(play offset)를 구한다.
Figure 112005050548696-pat00019
Figure 112005050548696-pat00020
② 핸드폰(110)이나 마이크로 컨트롤러(120)에서 버퍼메모리(132) 내부로 입력된 스트림 데이터의 크기(buffer copy size)를 지속적으로 업데이트하여 기록한다. 이것은 디코딩 프로세스를 진행하기 위하여 핸드폰(110)이나 마이크로 컨트롤러(120)에서 버퍼메모리(132) 내부로 카피한 데이터의 사이즈로서, 버퍼메모리(132)에 카피할 때마다 이 값을 누적시킨다. 그리고 이값은 카피한 사이즈가 고정이거나 가변인 상황을 모두 포함한다.
③ DSP 또는 MAP(Multimedia Application Processor)(130) 내에서는 해당 버퍼메모리(132)내에서 실제 디코딩을 수행한 오프셋(relative offset in buffer) 또는 디코딩한 프레임 크기를 매 프레임 디코딩시마다 업데이트 하는데, 이 값은 핸드폰(110)이나 마이크로 컨트롤러(120)로부터 새로운 데이터가 카피될 때마다 초기화(reset)된다. 즉, 현재 버퍼메모리(132)에 저장된 스트림 데이터 중에서 현재 디코딩된 프레임의 상대적인 위치를 나타내게 되는 것이다.
④ 이러한 누적 버퍼 데이터 크기(buffer copy size)와 버퍼내 디코딩된 데 이터 크기(relative offset in buffer)를 이용하여 스트림 데이터(10)에서의 현재 재생위치(frame start))를 계산한다.
Figure 112005050548696-pat00021
Figure 112005050548696-pat00022
여기서 최대 패킷 크기는 핸드폰(110)이나 마이크로 컨트롤러(120)로부터 버퍼메모리(132)로 한 번에 카피될 수 있는 최대의 데이터 패킷의 크기를 의미한다.
⑤ 사용자가 입력한 전진이동하여 새로 재생을 시작할 위치(new frame start)는 현재 재생위치와, 식 10의 이동할 스트림 데이터 크기에 의하여 결정된다.
Figure 112005050548696-pat00023
Figure 112005050548696-pat00024
⑥ 한편, 새로 이동할 위치에서의 현재 재생되고 있는 시간은 전진이동을 하기 직전의 현재 재생시간으로부터 이동시간을 증가시킴으로써 구할 수 있다.
Figure 112005050548696-pat00025
⑦ 이때, VBR(Variable Bit-Rate) 모드와 같이 프레임 당 가변 사이즈를 갖는 경우를 포함하여 매 프레임 당 디코딩 결과에 대한 정확한 재생 시간을 산출하기 위하여 식 1의 단위 시간당 디코딩 프레임 수와 사용자 입력의 이동하고자 하는 시간을 이용하여 식 5에서의 재생 프레임 수를 증가시킴으로써 새 위치에서의 재생 시간을 계산할 수 있다.
Figure 112005050548696-pat00026
Figure 112005050548696-pat00027
오디오 스트림 재생중 고속후진하는 경우에 재생위치 결정방법
고속전진과 유사하게 고속후진(fast rewind) 신호가 입력된 경우, 전술한 알고리즘과 유사한 방법으로 새로운 재생위치를 구할 수 있다.
고속후진의 경우에는 식 12에서와 반대로 스트림 데이터의 위치를 후진시켜 새로운 위치를 찾아내게 된다.
Figure 112005050548696-pat00028
또한 후진이동한 위치에서의 재생시간은 식 13b에서와 같이 계산된다.
Figure 112005050548696-pat00029
오디오 스트림 재생중 랜덤 재생 또는 탐색하는 경우에 재생위치 결정방법
스트림 데이터의 재생 도중 무작위적으로 정해진 위치에서 재생을 재개하거 나 특정한 시간위치를 탐색하는 경우에도 전술한 고속전진이나 고속후진의 알고리즘을 복합적으로 사용함으로써 구현할 수 있다.
즉, 사용자 인터페이스로부터 입력되는 특정한 이동시간(time scale) 값을 바탕으로 전진이나 후진을 하는 것이 아니라, 제어부(도면 미도시)에 의하여 무작위로 발생되는 이동시간 값을 이용하여 전진이나 후진을 하는 것을 의미한다.
오디오 스트림 재생중 구간 반복재생하는 경우에 재생구간 결정방법
사용자 인터페이스를 통하여 특정한 구간에 대한 반복신호가 입력되면, 반복시점과 반복종점을 파악하고 각 지점의 시간정보를 계산하여 이동할 수 있도록 한다. 따라서 각각의 반복시점과 반복종점을 계산하여 저장한 후, 고속전진이나 고속후진 방법을 이용하여 이를 구현할 수 있을 것이다.
① 사용자 인터페이스로부터 반복재생 신호가 입력되면, 식 11에서와 같이, 버퍼메모리(132) 내의 파일 또는 스트림 내에서의 현재 디코딩되는 위치(frame start)를 반복시점 위치(repeat start point A)로 기억하여 별도의 메모리에 저장한다.
Figure 112005050548696-pat00030
② 반복 재개시 현재 위치에서의 재생시간을 복원하기 위하여 현재 프레임 카운트 정보(frame count)를 백업하여 반복시점에서의 프레임 카운트 정보(frame count repeat start)로 저장시키고 플레이를 다시 진행시킨다.
③ 사용자 인터페이스로부터 반복재생 신호가 다시 입력되면, 버퍼메모리(132) 내의 파일 또는 스트림 내에서의 현재 디코딩되는 위치(frame start)를 반복종점 위치(repeat end point B)로 기억하여 메모리에 저장한다.
Figure 112005050548696-pat00031
통상적으로는 반복재생 버튼을 누를 때마다 반복시점과 반복종점을 각각 지정하는 것으로 설정되어 있지만, 별도의 반복시점과 반복종점 버튼이 구비되어 있는 시스템이라면 각각의 버튼의 입력에 의하여 시점과 종점이 지정될 것이며, 본 발명에서는 이와 같은 경우에도 적용되는 것으로 이해되어야 한다.
반복종점 위치가 결정된 경우에 반복재생이 설정되어 있음을 알려주는 플래그(flag)를 1로 초기화하여 설정한다.
④ 반복재생 플래그가 설정된 경우에 현재 재생중인 재생위치(frame start)의 offset 값(OC)을 매 프레임 디코딩 시마다 체크한다. 즉, 반복시점의 프레임으로부터, 반복시점 프레임과 반복종점 프레임의 차이(repeat end offset)만큼 프레 임이 진행되었는지를 매 프레임마다 판단하는 것이다.
만약 반복시점 프레임으로부터 재생된 스트림 데이터 프레임수가 repeat end offset 을 초과하면, 미리 백업해둔 반복시점 프레임에 대한 데이터를 호출하고, 전술한 방법을 사용하여 반복시점까지 후진이동 시킨다. 그리고 반복플래그를 하나 증가시켜서 현재의 반복이 몇회째인지를 저장하고, 반복시점에서의 재생을 시작한다.
사용자 인터페이스로부터 반복플래그의 해제신호가 입력될 때까지 이러한 반복재생을 계속한다.
이상에서 본 발명의 실시예를 설명하였으나 본 발명의 권리범위는 이러한 실시예에 제한되지 않으며, 당업자가 용이하게 변형할 수 있는 범위에도 그 권리가 미친다.
본 발명에 의하면 오디오 스트림 데이터 내부에 시간정보가 포함되어 있지 않아도 별도의 로딩이나 타임 테이블 작성없이 스트림 데이터의 재생시간 정보를 간단하게 산출할 수 있는 효과가 있다. 또한 스트림 데이터(10)가 저장 되어 있는 메모리 공간 등을 DSP 또는 MAP(Multimedia Application Processor)(130)가 직접 액세스를 할 수 없고 핸드폰(110)이나 마이크로 컨트롤러(120)에서 버퍼메모리(132) 내부로 넘겨주는 데이터 정보만을 이용해야 하는 환경 하에서 재생 시간 위치에 해당하는 스트림 데이터내의 오프셋을 계산하여 액세스할 수 있도록 제어할 수 있다.

Claims (10)

  1. 오디오 스트림 데이터를 재생하는 시스템에서 스트림 데이터의 시간정보를 산출하는 방법에 있어서,
    프레임 구조로 인코딩된 오디오 스트림 데이터가 버퍼에 입력되면, 단위시간당 디코딩 프레임수를 계산하는 단계와;
    상기 버퍼에 저장된 오디오 스트림 데이터의 프레임당 데이터 크기를 계산하는 단계와;
    상기 오디오 스트림 데이터의 전체 크기를 상기 단위시간당 디코딩 프레임수와 프레임당 데이터 크기의 곱으로 나누어 상기 오디오 스트림 데이터의 전체 재생 시간을 계산하는 단계;를 포함하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법.
  2. 오디오 스트림 데이터를 재생하는 시스템에서 스트림 데이터의 시간정보를 산출하는 방법에 있어서,
    프레임 구조로 코딩된 오디오 스트림 데이터가 버퍼에 입력되면, 단위시간당 디코딩 프레임수를 계산하는 단계와;
    상기 시스템에 의하여 디코딩이 수행되어 재생된 상기 오디오 스트림 데이터의 재생 프레임수를 업데이트하고, 상기 업데이트된 재생 프레임수를 저장하는 단계와;
    상기 재생 프레임수를 상기 단위시간당 디코딩 프레임수로 나누어 진행중인 오디오 스트림 데이터의 현재 재생 시간을 계산하는 단계;를 포함하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법.
  3. 제1항 또는 제2항에 있어서,
    상기 단위시간당 디코딩 프레임수를 계산하는 단계는
    단위시간당 최종 PCM(Pulse Code Modulation) 데이터로 디코딩되어 출력되는 PCM 샘플수인 샘플링 레이트를 계산하는 단계와;
    상기 샘플링 레이트를 프레임당 PCM 샘플데이터수로 나누어서 단위시간당 디코딩 프레임수를 계산하는 단계;로 이루어지는 것을 특징으로 하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법.
  4. 제1항에 있어서,
    상기 프레임당 데이터 크기는
    상기 버퍼에 저장된 전체 오디오 스트림 데이터의 크기를 상기 버퍼에 입력되는 오디오 스트림 데이터의 프레임수로 나누어서 계산하는 것을 특징으로 하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법.
  5. 오디오 스트림 데이터를 재생하는 시스템에서 스트림 데이터의 시간정보를 산출하는 방법에 있어서,
    프레임 구조로 코딩된 오디오 스트림 데이터가 버퍼에 입력되면, 상기 버퍼에 저장된 오디오 스트림 데이터의 프레임당 데이터 크기를 계산하는 단계와;
    상기 오디오 스트림 데이터의 전체 크기를 상기 프레임당 데이터 크기로 나누어 전체 프레임수를 계산하는 단계와;
    상기 전체 프레임수를 단위시간당 디코딩 프레임수로 나누어 상기 오디오 스트림 데이터의 전체 재생 시간을 계산하는 단계;를 포함하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법.
  6. 오디오 스트림 데이터를 재생하는 시스템에서 스트림 데이터의 시간정보를 산출하는 방법에 있어서,
    프레임 구조로 코딩된 스트림 데이터가 버퍼에 입력되면, 단위시간당 디코딩 프레임수와, 상기 버퍼에 저장된 스트림 데이터의 프레임당 데이터 크기를 곱하여 단위시간당 스트림 데이터 크기를 계산하는 단계와;
    상기 오디오 스트림의 재생중에 이동신호가 입력되면, 입력된 이동시간과 상기 단위시간당 스트림 데이터 크기를 곱하여 이동할 스트림 데이터 크기를 계산하는 단계와;
    상기 버퍼로 입력되는 스트림 데이터 크기를 누적시켜 버퍼입력 데이터 크기를 계산하는 단계와;
    상기 버퍼에 저장된 스트림 데이터 중에서 현재까지 디코딩되어 재생된 스트림 데이터 크기를 나타내는 디코딩된 버퍼입력 데이터 크기를 계산하는 단계와;
    상기 이동신호가 전진이동 신호인 경우에, 상기 오디오 스트림 데이터에서 현재 재생되고 있는 시간 위치와, 상기 이동할 스트림 데이터 크기를 가산하여 새로 재생을 시작할 위치에 대한 정보를 계산하는 단계와;
    상기 이동신호가 후진이동 신호인 경우에, 상기 오디오 스트림 데이터에서 현재 재생되고 있는 시간 위치와, 상기 이동할 스트림 데이터 크기를 감산하여 새로 재생을 시작할 위치에 대한 정보를 계산하는 단계;를 포함하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법.
  7. 제6항에 있어서,
    현재 재생시간과, 상기 이동시간을 더하여 새 위치의 현재 재생시간을 구하는 단계;를 추가로 포함하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법.
  8. 제6항에 있어서,
    상기 현재 재생되고 있는 시간 위치는
    상기 버퍼입력 데이터 크기에 최대 패킷 크기를 뺀 후, 상기 디코딩된 버퍼입력 데이터 크기를 더하여 계산되는 것을 특징으로 하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법.
  9. 오디오 스트림 데이터를 재생하는 시스템에서 스트림 데이터의 시간정보를 산출하는 방법에 있어서,
    버퍼에 입력된 스트림 데이터의 재생 도중, 반복시작 신호가 입력되면, 상기 버퍼에 입력된 스트림 데이터의 현재 재생 프레임을 반복시점 프레임으로 결정하고, 상기 현재 재생 프레임까지의 누적 프레임수를 반복시점 프레임수로 저장하는 단계와;
    반복종점 신호가 입력되면, 상기 반복종점 신호가 입력되는 순간의 현재 재생 프레임을 반복종점 프레임수로 결정하여 저장하고, 반복 플래그를 생성하여 저장하는 단계와;
    상기 반복시점 프레임수로부터 상기 반복종점 프레임수까지 스트림 데이터의 재생을 반복하고, 반복재생이 완료될 때마다 상기 반복 플래그를 갱신하는 단계;를 포함하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법.
  10. 제9항에 있어서,
    반복종료 신호가 입력되면, 상기 반복시점 프레임수와 반복종점 프레임수에 대한 정보를 삭제하는 단계;를 추가로 포함하는 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보 산출방법.
KR1020050084131A 2005-09-09 2005-09-09 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보산출방법 KR100639110B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020050084131A KR100639110B1 (ko) 2005-09-09 2005-09-09 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보산출방법
US11/470,791 US8090458B2 (en) 2005-09-09 2006-09-07 Method of calculating temporal information of frame-based audio stream data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050084131A KR100639110B1 (ko) 2005-09-09 2005-09-09 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보산출방법

Publications (1)

Publication Number Publication Date
KR100639110B1 true KR100639110B1 (ko) 2006-10-31

Family

ID=37621021

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050084131A KR100639110B1 (ko) 2005-09-09 2005-09-09 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보산출방법

Country Status (2)

Country Link
US (1) US8090458B2 (ko)
KR (1) KR100639110B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160032819A (ko) * 2014-09-17 2016-03-25 삼성전자주식회사 오디오 데이터 운용 방법과 이를 지원하는 전자 장치
US10834435B2 (en) 2016-08-18 2020-11-10 Samsung Electronics Co., Ltd. Display apparatus and content display method thereof

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008058259A2 (en) * 2006-11-08 2008-05-15 Mywaves, Inc. An apparatus and method for dynamically providing web-based multimedia to a mobile phone
JP2008185769A (ja) * 2007-01-30 2008-08-14 Oki Electric Ind Co Ltd 圧縮オーディオ再生装置
US9076484B2 (en) * 2008-09-03 2015-07-07 Sandisk Technologies Inc. Methods for estimating playback time and handling a cumulative playback time permission
US8588575B2 (en) * 2010-04-26 2013-11-19 Eldon Technology Limited Apparatus and methods for high-speed video presentation
JP5912496B2 (ja) * 2011-12-16 2016-04-27 東芝アルパイン・オートモティブテクノロジー株式会社 デジタル再生装置
US8880929B2 (en) * 2012-11-19 2014-11-04 Blackfire Research Corporation Indirect clock measuring and media adjustment
CN103594103B (zh) * 2013-11-15 2017-04-05 腾讯科技(成都)有限公司 音频处理方法及相关装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6278678B1 (en) * 1999-02-12 2001-08-21 Sony Corporation Editing apparatus, editing method, and recording medium
CA2393824C (en) * 1999-12-08 2014-01-07 Tune To Com Inc. Scheduled retrieval, storage and access of media data
US6738427B2 (en) * 2000-09-15 2004-05-18 International Business Machines Corporation System and method of processing MPEG streams for timecode packet insertion
US6928039B2 (en) * 2001-06-29 2005-08-09 Texas Instruments Incorporated Method and apparatus for the reduction of power consumption in a compact disc player
KR100913843B1 (ko) * 2001-09-06 2009-08-26 톰슨 라이센싱 가변 비트율 디지털 인코딩 오디오 데이터 파일의 경과재생 타임키핑용 방법 및 장치
WO2004084553A1 (ja) * 2003-03-19 2004-09-30 Matsushita Electric Industrial Co., Ltd. データ処理装置
JP2004341430A (ja) * 2003-05-19 2004-12-02 Sony Corp 再生装置および再生方法、記録媒体、並びにプログラム
KR100546398B1 (ko) * 2003-11-25 2006-01-26 삼성전자주식회사 압축된 오디오 비트스트림에서 싱크 워드를 찾는 방법 및상기 방법을 기록한 기록 매체
US7400351B2 (en) * 2004-10-06 2008-07-15 Microsoft Corporation Creation of image based video using step-images

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160032819A (ko) * 2014-09-17 2016-03-25 삼성전자주식회사 오디오 데이터 운용 방법과 이를 지원하는 전자 장치
KR102229603B1 (ko) * 2014-09-17 2021-03-18 삼성전자주식회사 오디오 데이터 운용 방법과 이를 지원하는 전자 장치
US10834435B2 (en) 2016-08-18 2020-11-10 Samsung Electronics Co., Ltd. Display apparatus and content display method thereof

Also Published As

Publication number Publication date
US8090458B2 (en) 2012-01-03
US20070116435A1 (en) 2007-05-24

Similar Documents

Publication Publication Date Title
KR100639110B1 (ko) 프레임 단위로 이루어진 오디오 스트림 데이터의 시간정보산출방법
JP2006221714A (ja) 符号化ディジタルオーディオ再生装置
JP2002351466A5 (ko)
US8185815B1 (en) Live preview
CN101206894A (zh) 记录再现装置
JP4649901B2 (ja) 曲の符号化伝送のための方法および装置
JP2004341430A (ja) 再生装置および再生方法、記録媒体、並びにプログラム
JP4305867B2 (ja) 音声符号化方法及び音声復号方法
JP2013029679A (ja) 圧縮オーディオ再生装置及び平均ビットレート算出方法
JP2005310306A (ja) 再生時間表示用装置および再生時間算出方法
JP2004348905A (ja) オーディオ再生装置、方法及びプログラム
KR101254320B1 (ko) 미디어 파일의 정확한 재생시간을 표시하는 전자장치 및 그방법
JP2007141378A (ja) 圧縮オーディオ再生制御方法
JP3346406B2 (ja) 音声符号化方法及び音声復号方法
JP3346402B2 (ja) 音声符号化方法及び音声復号方法
JP3346404B2 (ja) 音声符号化装置
JP4305866B2 (ja) 音声符号化方法及び音声復号方法
JP3346405B2 (ja) 音声符号化方法
JP3346393B2 (ja) 音声符号化方法
EP0982727A1 (en) Digital signal processing method and device, digital signal generating method and device, and signal recording medium and program recording medium
JP3346394B2 (ja) 音声符号化方法及び音声復号方法
JP2005189884A (ja) 音声符号化方法及び音声復号方法
JPH08147883A (ja) 信号処理装置
KR20060026690A (ko) Mp3 파일 플레이 방법
JP2006031036A (ja) 音声符号化方法及び音声復号方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121011

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131008

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee