상기의 목적을 달성하기 위한 본 발명은, 링 구조의 버퍼에 현재 시점에 재생되는 포인트를 mUserBP, 이후 시점에서의 재생을 위해 현재 시점에 미리 읽어내는 포인트를 mEndBP, 버퍼링 시작 임계치를 mForwardTh로 정의한 상태에서, 멀티미 디어 파일 재생 요청신호가 입력되면 멀티미디어 파일 재생 리스트를 확인하는 제1 단계; 상기 버퍼를 상기 파일의 구조에 따라 다른 일정 개수의 파일 캐시로 나누고 상기 확인한 멀티미디어 파일 재생 리스트에 따라 해당되는 멀티미디어 파일들을 조각 단위로 상기 나뉘어진 캐시에 버퍼링 가능한 크기만큼 각각 순서대로 버퍼링하는 제2 단계; 및 상기 제2 단계에서 버퍼링한 멀티미디어 파일들을 재생하는 중에 상기 mUserBP부터 상기 mEndBP까지의 크기(mRemainSize)가 상기 mForwardTh보다 작아지면 상기 멀티미디어 파일 재생 리스트 중 상기 제 2 단계에서 버퍼링한 멀티미디어 파일들 이외의 멀티미디어 파일에 대하여 상기 제2 단계를 수행하는 제3 단계를 포함한다.
이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명이 적용되는 휴대형 멀티미디어 재생기에 대한 일실시예 구성도이다.
도 1에 도시된 바와 같이, 본 발명이 적용되는 휴대형 멀티미디어 재생기는 멀티미디어 파일(예; 동영상 파일, 오디오 파일 등)이 저장되어 있는 비휘발성 저장매체 형태의 저장모듈(10)과 멀티미디어 파일 재생을 위해 저장모듈(10)에 저장되어 있는 멀티미디어 파일이 복사되어 일시 저장되는 휘발성 메모리 형태의 버퍼(11) 및 버퍼(11)에 일시 저장되어 있는 멀티미디어 파일을 재생하는 멀티미디어 재생모듈(12)을 포함한다.
또한, 상기 휴대형 멀티미디어 재생기는 도면에 도시되어 있지는 않으나 멀티미디어 재생모듈(12)에서 재생한 영상신호를 표시하기 위한 디스플레이부, 멀티미디어 재생모듈(12)에서 재생한 오디오신호를 출력하기 위한 스피커, 멀티미디어 재생모듈(12)로 전진 재생 요청신호, 고배속(예; 2배속, 4배속 등) 전진 재생 요청신호, 후진 재생 요청신호, 고배속(예; 2배속, 4배속 등) 후진 재생 요청신호, 이전 시점에 재생되었던 특정 멀티미디어 파일 재생 요청신호, 이후 시점에 재생될 특정 멀티미디어 파일 재생 요청신호 등을 입력하기 위한 키 입력부, 휴대형 멀티미디어 재생기 각 구성 요소로 전원을 공급하기 위한 배터리 등을 포함하며, 이외에도 멀티미디어 재생을 위한 기본적인 구성 요소를 더 포함한다.
한편, 본 발명에서 멀티미디어 재생모듈(12)은 휴대형 멀티미디어 재생기의 각 구성 요소를 제어할 수 있는 제어 기능이 탑재되어 있으며, 멀티미디어 칩(Multimedia Chip)이라고 불리우는 칩셋 형태로 구현되는 것이 바람직하다.
도 2는 본 발명이 적용되는 링 구조의 버퍼에 대한 일실시예 설명도이다.
본 발명이 적용되는 링(ring) 구조의 버퍼(11)는 환형 구조로 구현되며, 버퍼(11)의 End 영역까지 데이터가 채워지면 다음의 데이터가 Start 영역부터 다시 채워진다.
도 2에 도시된 바와 같이, Start는 버퍼(11)를 구성하는 메모리의 시작 주소이고, End는 버퍼(11)를 구성하는 메모리의 한계 지점 주소이고, mUserBP는 현재 시점에 재생되는 포인트, 즉 현재 멀티미디어 재생모듈(12)에서 사용되는 파일 캐시를 나타내고, mEndBP는 이후 시점에서의 재생을 위해 현재 시점에 미리 읽어내는 포인트, 즉 멀티미디어 재생모듈(12)에서 미리 읽어내는 파일 캐시를 나타내고, 재생될 데이터가 남아있는 영역(mUserBP ~ mEndBP; mRemainSize)(200)은 버퍼링 시작을 위한 매개변수로 이용되어 기 설정된 버퍼링 시작 임계치인 mForwardTh보다 작은 경우에 버퍼링이 재개된다.
여기서, 멀티미디어 파일을 버퍼링하는데 이용되는 자료 구조(data structure)를 파일 캐시(file cache)라고 한다.
또한, 기 설정된 버퍼링 시작 임계치인 mForwardTh는 음악이 끊기질 않을 정도의 데이터 크기에 상응하는 버퍼링 여유 용량으로 설정되는 것이 바람직하다.
즉, 상기 mUserBP부터 mEndBP의 크기는 재생될 데이터가 남아있는 영역인데, 이 영역이 mForwardTh보다 작으면, 휴대형 멀티미디어 재생기는 이미 재생된 파일 캐시를 정리하고, 새로운 링 버퍼의 공간을 만들어 다음 파일을 캐시한다.
도 3은 본 발명이 적용되는 파일과 파일 캐시간의 관계에 대한 일실시예 설 명도이다.
도 3에서는 하나의 파일을 이루는 특정 데이터 일부가 버퍼(11)에 버퍼링된 상태에 대해서 도시하였으나, 본 발명에서는 다수의 파일, 즉 특정 파일을 이루는 모든 데이터 및 타 특정 파일을 이루는 특정 데이터 일부가 버퍼(11)에 버퍼링되는 것이 바람직하다.
본 발명에서는 파일 시스템 구조에 기반하여 멀티미디어 파일을 버퍼링한다(일명 파일 에뮬레이션).
저장모듈(10)에 저장되어 있는 멀티미디어 파일을 읽기 위해서는 멀티미디어 파일의 어느 부분부터 읽을 것인지에 대한 정보, 즉 파일 포인터(file pointer) 및 파일 크기 및 기존의 파일 입출력 관련 함수(file API)와 동일한 프로세스 처리가 이루어져야 된다.
멀티미디어 재생모듈(12), 특히 멀티미디어 재생 프로세스(어플리케이션)는 버퍼(11)에 버퍼링된 데이터의 위치값을 매개변수로 하여 멀티미디어 파일의 특정 데이터를 읽어서 재생하는 것이 아니라 선형적인 구조를 갖는 멀티미디어 파일로부터 특정 데이터를 읽어서 재생, 즉 파일 포인터를 매개변수로 하여 멀티미디어 파일로부터 특정 데이터를 읽어서 재생하는 과정을 거치므로, 사용자가 버퍼(11)의 순환 구조를 인식할 필요없이 파일을 다루듯이 해당 멀티미디어 파일을 재생시킬 수 있도록 할 수 있다.
즉, 버퍼(11)에는 현재 버퍼링 중인 멀티미디어 파일에 대한 정보가 기록되어 있으며, 멀티미디어 재생모듈(12)이 이러한 기록 정보를 이용하여 멀티미디어 파일을 저장모듈(10)로부터 직접 읽어서 재생하는 것과 같은 동일한 프로세스 처리를 할 수 있다.
도 3에 도시된 바와 같이, A 영역은 현재 재생되고 있는 멀티미디어 파일의 데이터부터 이후에 재생될 미래의 일부 데이터를 나타내고, B 영역은 현재 재생되고 있는 멀티미디어 파일의 데이터부터 이전에 재생된 과거의 일부 데이터를 나타낸다.
A와 B 영역을 합친 영역이 버퍼링되고 있는 하나의 멀티미디어 파일의 일부 또는 다수의 멀티미디어 파일을 나타낸다.
그리고, mMAXBufferSize는 버퍼(11)의 크기를 나타내며, 버퍼(11)의 크기는 파일 포인터 시작(StartFP) 부분부터 파일 포인터 끝(mEndFP) 부분까지의 크기와 동일하며, 현재 시점을 기준으로 파일 포인터 시작부분부터 파일 포인터 끝 부분까지의 데이터가 버퍼(11)에 버퍼링되어 있음을 알 수 있다.
그리고, mUserBP는 현재 재생되고 있는 부분, 즉 사용자가 읽는(시청하는) 부분을 나타내고, 파일 시스템 상의 파일 포인터의 위치를 버퍼(11)에서의 위치로 매핑된 정보를 의미하며, mEndBP는 현재 재생되고 있는 부분부터 미래에 재생될 데이터의 끝을 나타내며, 파일 캐시가 커버할 수 있는 파일의 영역은 mStartBP ~ mEndBP까지의 데이터이다.
그리고, 파일 캐시는 버퍼링 영역의 시작과 끝을 갖고 있으며, 저장모듈(10)로부터 데이터를 복사하는 방향성(Forward Direction 또는 Backward Direction)을 갖는다. 여기서, Forward Direction 방향성을 갖는 경우에는 멀티미디어 파일이 전 진 재생되는 경우를 의미하고, Backward Direction 방향성을 갖는 경우에는 멀티미디어 파일의 후진 재생되는 경우를 의미한다.
도 1 내지 도 3을 참조하여 전술한 바와 같이, 링 구조의 버퍼(11)에 현재 시점에 재생되는 포인트를 mUserBP, 이후 시점에서의 재생을 위해 현재 시점에 미리 읽어내는 포인트를 mEndBP, 버퍼링 시작 임계치를 mForwardTh로 정의할 수 있다.
도 4는 본 발명에 따른 휴대형 멀티미디어 재생기에서 다중 파일 캐싱을 이용한 리얼타임 멀티미디어 파일 재생 방법에 대한 일실시예 흐름도이며, 도 5a 및 도 5b는 본 발명이 적용되는 한 파일에 대한 다중 파일 캐싱에 대한 일실시예 설명도, 도 6은 본 발명이 적용되는 파일 조각 단위의 버퍼링 방법에 대한 일실시예 흐름도, 도 7a 및 도 7b는 본 발명이 적용된 멀티미디어 파일이 버퍼링되는 버퍼의 상태에 대한 일실시예 설명도이며, 도 8은 본 발명이 적용된 버퍼로의 멀티미디어 파일 조각 복사에 대한 일실시예 설명도이며, 도 9는 본 발명이 적용된 버퍼 포인트의 위치 교환에 대한 일실시예 설명도이다.
도 4를 참조하면, 휴대형 멀티미디어 재생기는 사용자에 의해 멀티미디어 파일 재생 요청신호가 입력되면(S400), 멀티미디어 파일 재생 리스트를 확인한다(S401). 즉, 상기 사용자는 감상하고자 하는 멀티미디어 파일을 선곡하기 위해 멀 티미디어 파일 재생 리스트를 불러와서 해당 멀티미디어 파일을 선택하고 그 멀티미디어 파일의 재생을 요청하게 된다.
그러면, 상기 휴대형 멀티미디어 재생기는 상기 사용자가 불러온 멀티미디어 파일 재생 리스트를 확인하여 멀티미디어 파일명, 멀티미디어 파일 크기 및 멀티미디어 파일 속성(예; MP3 형식, WMA 형식, 가수명, 장르 등) 등을 파악하고 나서 멀티미디어 파일 재생 순서를 확인한다.
그리고 나서, 상기 휴대형 멀티미디어 재생기는 버퍼를 해당 파일의 구조에 따라 다른 일정 개수의 파일 캐시로 나누고 상기 확인한 멀티미디어 파일 재생 리스트에 따라 해당되는 멀티미디어 파일들을 조각 단위로 상기 나뉘어진 캐시에 버퍼링 가능한 크기만큼 각각 순서대로 버퍼링한다(S402).
예를 들어, 해당 파일이 싱글 파일이면, 상기 휴대형 멀티미디어 재생기는 도 5a와 같이 상기 버퍼를 하나의 캐시로 간주하여 상기 확인한 멀티미디어 파일 재생 리스트에 따라 해당하는 멀티미디어 파일들을 조각 단위로 상기 캐시에 버퍼링 가능한 크기만큼 각각 순서대로 버퍼링한다.
도 5a를 참조하면, 초기에 멀티미디어 파일 재생 리스트 중 재생 순서 1번을 갖는 "1.MP3" 파일을 이루는 모든 데이터를 버퍼에 버퍼링한 상태에서는 현재 시점에 재생되는 포인트인 mUserBP, 이후 시점에서의 재생을 위해 현재 시점에 미리 읽어내는 포인트인 mEndBP가 동일한 파일, 즉 "1.MP3" 파일을 가르키고 있다.
이후에 버퍼의 저장 용량이 타 멀티미디어 파일을 버퍼링할 정도로 충분하므로, 도 5a의 하측에 도시된 바와 같이, 멀티미디어 파일 재생 리스트에 따라 재생 순서 2번, 재생 순서 3번, 재생 순서 4번을 갖는 "2.WMA" 파일을 이루는 모든 데이터, "3.MP3" 파일을 이루는 모든 데이터 및 "4.WMA" 파일을 이루는 일부 데이터를 순서대로 버퍼링한다.
만약, 해당 파일이 인덱스 정보가 필수적인 멀티미디어 파일이면, 상기 휴대형 멀티미디어 재생기는 상기 버퍼를 데이터 영역 캐시와 인덱스 영역 캐시로 나누고 상기 확인한 멀티미디어 파일 재생 리스트에 따라 해당되는 멀티미디어 파일들을 일정 크기의 조각 단위로 상기 나뉘어진 캐시에 버퍼링 가능한 크기만큼 각각 순서대로 버퍼링한다.
이 때, 멀티미디어 재생 프로세스(어플리케이션), 특히 멀티미디어 파일 재생 리스트를 통하여 다음에 재생(연주)할 멀티미디어 파일의 정보를 얻고 이 멀티미디어 파일을 파일 캐시를 이용하여 버퍼(11)에 등록하고 나서 이 등록한 멀티미디어 파일들을 버퍼링 가능한 크기만큼 버퍼(11)에 순서대로 버퍼링하고, 버퍼링 시작한 멀티미디어 파일을 이루는 모든 데이터가 버퍼(11)에 복사되면 현재 어플리케이션에 의해 사용되는 파일 캐시를 제외한 나머지 영역이 채워질 때까지 다른 멀티미디어 파일을 이루는 데이터 버퍼링 과정을 반복적으로 수행한다.
그럼으로 해서, 사용자가 요구하는 파일이 버퍼안에 이미 캐시되어 있기 때문에 멀티미디어 재생 모듈은 저장 모듈에서 해당 파일을 다시 잃어오지 않고 버퍼안의 데이터를 넘겨준다.
이런 경우는 요구한 파일이 버퍼안에 존재하는 경우지만 버퍼안에 존재하지 않는 파일을 요구한다면 이를 캐시 미스(cache miss)라고 하며 링 버퍼의 내용을 모두 지우고 사용자가 원하는 파일을 처음으로 해서 다시 캐싱 작업을 수행해야한다.
즉, 인덱스 정보가 필수적인 멀티미디어 데이터를 재생하기 위해서는 파일뒤의 인덱스 정보가 필수적이기 때문에 인덱스에 대한 접근이 필수적이다. 하지만 버퍼의 크기는 전체 파일 크기에 비해 그 크기가 작기 때문에 멀티미디어 데이터를 접근할 때 캐시 미스가 일어나고 다시 인덱스를 접근할때 캐시 미스가 발생한다. 캐시 미스가 반복되는 경우 시스템의 정상 동작을 기대하기는 어렵고 재생하는 곡은 음이 끊기는 현상이 나타난다.
이런 경우를 위해 도 5b 및 도 5c와 같이 한 파일에 대하여 다중 파일 캐시를 할당한다.
먼저, 오디오 파일에 다중 파일 캐시를 할당하는 것에 대하여 도 5b를 참조하여 설명하기로 한다.
도 5b를 참조하면, 저장모듈에 저장된 오디오 파일(오디오 데이터와 인덱스)을 두번 오픈해서 오디오 데이터에 캐시를 할당하고 인덱스에 캐시를 할당한다.
그러면, 버퍼는 현재 두개의 파일 캐시가 설정되어 있고, 하나는 오디오 데이터의 일부를 캐시하고, 다른 하나는 인덱스의 일부를 캐시하고 있다.
즉, 저장모듈에 저장된 오디오 파일을 버퍼링함에 있어서, 버퍼에 두개의 캐시를 할당하여 제1 캐시(500)에는 오디오 데이터를 저장하고, 제2 캐시(510)에는 인덱스(512)를 저장한다. 이때, 제1 캐시(500)와 제2 캐시(510)로 나뉘어져 할당된 영역은 서로 독립적으로 버퍼를 구성한다.
상기와 같이 하나의 파일에 대해 두개의 캐시를 할당함으로써 캐시 미스의 반복 현상이 일어나지 않으며, 파일 크기보다 작은 링버퍼에서 저장 모듈 자원을 효율적으로 다룰수 있다.
다음으로 오디오 데이터와 비디오 데이터가 혼합된 멀티미디어 파일에 다중 파일 캐시를 할당하는 것에 대하여 도 5c를 참조하여 설명하기로 한다.
도 5c를 참조하면, 동영상과 같은 멀티미디어 파일은 오디오 데이터에 대한 인덱스1, 비디오 데이터에 대한 인덱스2로 이루어져있다.
따라서, 휴대형 멀티미디어 재생기가 동영상 파일을 재생하기 위해서는 인덱스1과 인덱스2의 접근이 필수적이기 때문에 다중 파일 캐시를 사용하지 않고서는 빈번한 저장모듈의 접근이 예상되기 때문에 도 5b에서의 확장으로 파일 캐시를 하나 더 할당한다.
즉, 버퍼에는 3개의 캐시가 설정되어 있고, 제1 캐시(550)는 멀티미디어 데이터의 일부를 저장하고, 제2 캐시(560)는 인덱스1의 일부를 저장하고, 제3 캐시(570)는 인덱스2의 일부를 저장한다. 즉, 링버퍼는 저장 모듈에 저장된 멀티미디어 데이터에 대하여 버퍼링 가능한 크기만큼 제1 캐시(550)에 저장, 상기 제1 캐시(550)에 저장된 오디오 데이터에 해당하는 인덱스1을 제2 캐시(560)에 저장, 상기 제1 캐시(550)에 저장된 비디오 데이터에 해당하는 인덱스2를 제3 캐시(570)에 저장한다.
상기와 같은 다중 파일 캐싱은 저장 모듈의 접근을 최소한 줄이는 효과적인 캐시 관리에 있으며 여러 파일을 다중 파일 캐시하는 것과 재생하고자 하는 파일 구조에 따라 멀티 파일 캐싱을 적용시킴으로써 시스템의 원활한 작동을 돕는다.
다시 도 4의 단계 402에서 연속된 멀티미디어 파일을 버퍼링 가능한 크기만큼 버퍼(11)에 순서대로 버퍼링하는 방법에 대하여 도 6을 참조하여 상세히 설명하기로 한다.
도 6을 참조하면, 휴대형 멀티미디어 재생기는 임의의 멀티미디어 파일이 캐싱중인지를 판단한다(S600).
단계 600의 판단결과 임의의 파일이 캐싱중이면, 상기 휴대형 멀티미디어 재생기는 버퍼에 해당 파일을 복사하고(S601), 상기 파일의 캐싱이 종료되었는지를 판단한다(S602).
단계 602의 판단결과 상기 파일의 캐싱이 종료되었으면, 상기 휴대형 멀티미디어 재생기는 해당 파일에 대하여 전체가 캐싱되었는지를 판단한다(S603).
단계 603의 판단결과 해당 파일에 대하여 전체가 캐싱되었으면 해당 파일의 전체가 캐싱되었음을 표시한다(S604).
만약, 단계 603의 판단결과 해당 파일에 대하여 전체가 캐싱되지 않았으면, 해당 파일의 부분이 캐싱되었음을 표시한다(S605).
즉, 모든 파일이 버퍼에 복사된 상태라면, 'full'로 표시하고, 대상 파일이 너무 커서 상기 버퍼안에 담을수 없는 경우에 파일의 일부분이 캐싱되었다면 'a part of file'를 표시한다.
만약, 단계 602의 판단결과 해당 파일의 캐싱이 종료되지 않았으면, 상기 휴대형 멀티미디어 재생기는 상기 버퍼에 공간이 존재하는지를 판단한다(S606).
단계 606의 판단결과 상기 버퍼에 공간이 존재하면, 상기 휴대형 멀티미디어 재생기는 단계 601부터 수행하고, 상기 버퍼에 공간이 존재하지 않으면, 단계 605를 수행한다.
만약, 단계 600의 판단결과 현재 파일 캐싱중이 아니면, 상기 휴대형 멀티미디어 재생기는 버퍼에 공간이 존재하는지를 판단한다(S607).
단계 607의 판단결과 버퍼에 공간이 존재하면, 상기 휴대형 멀티미디어 재생기는 저장 모듈에서 다음에 캐시할 파일 정보를 읽는다(S608).
그런다음 상기 휴대형 멀티미디어 재생기는 상기 읽은 파일이 상기 버퍼에 존재하는 파일인지를 판단한다(S609).
단계 609의 판단결과 상기 읽은 파일이 상기 버퍼에 존재하는 파일이면, 상기 휴대형 멀티미디어 재생기는 단계 608을 수행한다.
만약, 단계 609의 판단결과 상기 읽은 파일이 상기 버퍼에 존재하는 파일이 아니면, 상기 휴대형 멀티미디어 재생기는 상기 버퍼에 공간을 할당하여 해당 파일을 복사하고(S610), 단계 602부터 수행한다.
상기와 같이 현재 캐시의 자료 구조가 'full' 또는 'a part of file'일 경우 다음에 캐시할 파일의 정보를 얻어 캐싱할 준비를 한다. 하지만 느린 저장 장치의 접근을 최소화한다는 목적을 생각한다면 처음 시작시 링 버퍼를 모두 채우고 링 버퍼에서 마지막으로 캐싱 된 파일이 현재 재생중이고 그 재생중인 파일의 크기가 임계값보다 작으면 이전에 버퍼링한 멀티미디어 파일에서 현재 재생하는 버퍼의 일부를 남겨두고 이전에 버퍼링한 파일 이외의 파일을 버퍼링 가능한 크기만큼 순서대 로 다시 버퍼링한다.
상기 도 6에 대한 설명을 도 7a의 상태도를 이용하여 설명하기로 한다.
도 7a의 상측에 도시된 바와 같이, 초기에 멀티미디어 파일 재생 리스트 중 재생 순서 1번을 갖는 "1.MP3" 파일을 이루는 모든 데이터를 버퍼(11)에 버퍼링한 상태에서는 현재 시점에 재생되는 포인트인 mUserBP, 이후 시점에서의 재생을 위해 현재 시점에 미리 읽어내는 포인트인 mEndBP가 동일한 파일, 즉 "1.MP3" 파일을 가르키고 있다.
이후에 버퍼(11)의 저장 용량이 타 멀티미디어 파일을 버퍼링할 정도로 충분하므로, 도 7a의 하측에 도시된 바와 같이, 멀티미디어 파일 재생 리스트에 따라 재생 순서 2번, 재생 순서 3번, 재생 순서 4번을 갖는 "2.WMA" 파일을 이루는 모든 데이터, "3.MP3" 파일을 이루는 모든 데이터 및 "4.WMA" 파일을 이루는 일부 데이터를 순서대로 버퍼링한다.
여기서, "4.WMA" 파일을 이루는 일부 데이터를 버퍼(11)에 버퍼링한 상태에서는 현재 시점에 재생되는 포인트인 mUserBP가 "1.MP3" 파일을 가르키고 있으며, 이후 시점에서의 재생을 위해 현재 시점에 미리 읽어내는 포인트인 mEndBP가 "4.WMA" 파일을 가르키고 있다.
한편, 버퍼(11)에는 "4.WMA" 파일을 이루는 모든 데이터를 저장할만큼의 용량이 존재하지 않으므로 "4.WMA" 파일을 이루는 일부 데이터만을 버퍼링한다. 즉, 도 7a에서 "FULL"은 멀티미디어 파일을 이루는 모든 데이터를 의미하며, "A part of file"은 멀티미디어 파일을 이루는 일부 데이터를 의미한다.
한편, 상기 단계 402에서의 버퍼링 과정 및 후술할 단계 405에서의 버퍼링 과정에서는 특정 멀티미디어 파일에 대한 파일 포인터(File Pointer)가 지시하는 멀티미디어 파일의 특정 부분을 조각 복사하여 버퍼링한다. 여기서, 멀티미디어 파일의 특정 부분을 순차적으로 조각 복사하는 과정에 대해서 도 8을 참조하여 상세히 설명하기로 한다.
일반적으로, 버퍼(11)에 복사 가능한 만큼의 데이터 모두를 한꺼번에 복사하는 동안에 사용자 또는 시스템으로부터 요구, 즉 재생모드 전환 요청, 랜덤한 멀티미디어 파일 선곡 및 재생 요청, 전원 오프(OFF) 이벤트 발생 등이 발생되면 현재 진행 중인 버퍼링 과정을 모두 끝마친 뒤에야 해당 요청 사항을 처리하기 때문에 사용자가 지연된 처리 결과를 반환받고 있다.
본 발명에서는 도 8과 같이 버퍼링 단위를 멀티미디어 파일 조각 단위로 하여 한 번에 적당한 크기의 데이터를 버퍼(11)에 버퍼링시키고 매 버퍼링 순간마다 사용자 또는 시스템으로부터 특정 요청 사항이 발생되는지를 감지하여 처리 시간 지연없이 바로 해당 요청 사항을 처리할 수 있도록 한다.
다시 도 4를 참조하면, 단계 402에서 버퍼(11)에 버퍼링한 멀티미디어 파일들을 재생하는 중에는 별다른 버퍼링을 수행하지 않으며, 상기 mUserBP부터 상기 mEndBP까지의 크기(mRemainSize)의 변화를 지속적으로 감지한다(S403).
그러면서, 상기 휴대형 멀티미디어 재생기는 상기 mUserBP부터 상기 mEndBP까지의 크기(mRemainSize)가 상기 mForwardTh보다 작아지는지를 판단한다(S404).
단계 404의 판단결과, 상기 mUserBP부터 상기 mEndBP까지의 크기 (mRemainSize)가 상기 mForwardTh보다 작아지면, 상기 휴대형 멀티미디어 재생기는 상기 멀티미디어 파일 재생 리스트 중 단계 402에서 버퍼링한 멀티미디어 파일들 이외의 멀티미디어 파일들을 버퍼링 가능한 크기만큼 상기 버퍼(11)에 순서대로 버퍼링한다(405). 즉, 상기 mUserBP부터 상기 mEndBP까지의 크기(mRemainSize)가 상기 mForwardTh보다 작아지면, 상기 휴대형 멀티미대어 재생기는 이전에 버퍼링한 멀티미디어 파일에서 현재 재생하는 버퍼의 일부를 남겨두고 이전에 버퍼링한 멀티미디어 파일을 버퍼링 가능한 크기만큼 순서대로 버퍼링한다. 상기 버퍼링하는 방법은 도 6에서 상세히 설명하였으므로 그 설명은 생략한다.
단계 405가 수행되는 중에도 멀티미디어 파일에 대한 재생을 계속 수행 중인 상태이며, 상기 단계 405에서 버퍼링한 멀티미디어 파일을 이전 곡에 이어서 끊김없이 재생한다.
이 때, 버퍼(11)의 상태, 즉 상기 mUserBP부터 상기 mEndBP까지의 크기(mRemainSize)의 변화(특히 mUserBP의 위치 변화)를 감지하고 있다가 현재 버퍼링된 파일들의 캐시를 합한 크기가 임계치 이하인 경우, 즉 상기 mUserBP부터 상기 mEndBP까지의 크기(mRemainSize)가 상기 mForwardTh보다 작아지는 경우에는 다음에 재생(연주)할 멀티미디어 파일의 정보를 얻고 이 멀티미디어 파일을 파일 캐시를 이용하여 버퍼(11)에 등록하고 나서 이 등록한 멀티미디어 파일들을 버퍼링 가능한 크기만큼 버퍼(11)에 순서대로 버퍼링한다.
도 7b에는 본 발명이 적용된 임계치 비교를 통해 다음에 재생될 멀티미디어 파일이 버퍼링되는 버퍼의 상태에 대해 도시되어 있다.
도 7b의 상측에는 도 7a에 도시된 버퍼(11)의 상태에서 "2.WMA" 파일이 재생되고 있는 버퍼(11)의 천이 상태를 나타내며, 도 7b의 가운데측에는 도 7b의 상측에 도시된 버퍼(11)의 상태에서 일정 시간이 경과하여 "4.WMA" 파일이 재생되고 있는 버퍼(11)의 천이 상태를 나타낸다.
도 7b의 가운데측에 도시된 바와 같이, 현재 시점에 재생되는 포인트인 mUserBP가 "4.WMA" 파일을 가르키고 있으며, 이후 시점에서의 재생을 위해 현재 시점에 미리 읽어내는 포인트인 mEndBP가 "4.WMA" 파일을 가르키고 있으며, 이러한 경우에는 mUserBP 및 mEndBP가 동일한 "4,WMA" 파일을 가르키고 있는 바 두 개의 파일 캐시가 겹쳐진 경우에는 미래에 재생(연주)할 멀티미디어 파일이 버퍼링되어 있지 않으므로, 도 7b의 하측에 도시된 바와 같이 다음에 재생이 예상되는 멀티미디어 파일을 멀티미디어 파일 재생 리스트에 따라 4.WMA를 이루는 일부 데이터, 5.MP3 파일을 이루는 모든 데이터, "6.MP3" 파일을 이루는 일부 데이터를 순서대로 버퍼링한다.
상기와 같이 파일이 재생되는 동안 휴대형 멀티미디어 재생기는 상기 mUserBP부터 상기 mEndBP까지의 크기(mRemainSize)의 변화를 지속적으로 감지하고 있다가, 상기 mUserBP부터 상기 mEndBP까지의 크기(mRemainSize)가 상기 mForwardTh보다 작아지면, 도 7b의 하측과 같이 현재 재생되고 있는 파일을 제외하고 이전에 버퍼링된 파일들 이외의 멀티미디어 파일들을 버퍼링 가능한 크기만큼 상기 버퍼에 순서대로 버퍼링한다. 이 때에도 멀티미디어 파일에 대한 재생을 계속 수행 중인 상태이며, 상기 버퍼링한 멀티미디어 파일을 이전 곡에 이어서 끊김없이 재생한다.
이 때, 버퍼의 상태, 즉 상기 mUserBP부터 상기 mEndBP까지의 크기(mRemainSize)의 변화(특히 mUserBP의 위치 변화)를 감지하고 있다가 현재 버퍼링된 파일들의 캐시를 합한 크기가 임계치 이하인 경우, 즉 상기 mUserBP부터 상기 mEndBP까지의 크기(mRemainSize)가 상기 mForwardTh보다 작아지는 경우에는 다음에 재생(연주)할 멀티미디어 파일의 정보를 얻고 이 멀티미디어 파일을 파일 캐시를 이용하여 버퍼에 등록하고 나서 이 등록한 멀티미디어 파일들을 버퍼링 가능한 크기만큼 버퍼에 순서대로 버퍼링한다.
도 7b의 하측에 도시된 바와 같이, 버퍼링 된 이후의 버퍼의 상태에서 mUserBP가 "4.WMA" 파일을 가르키고 있으며, 상기 버퍼에는 상기 "4.WMA"의 나머지 파일 "4.WMA(A part of file)", 5.MP3, 6.MP3 파일이 순차적으로 버퍼링된다.
그러므로, 이후 시점에서의 재생을 위해 현재 시점에 미리 읽어내는 포인트인 mEndBP는 "6.MP3" 파일을 가르키고 있다.
즉, 4.WMA(A part of file) 파일 캐시는 같은 파일이 링 버퍼이기 때문에 다시 start부터 복사된다. 이전에 재생된 파일들의 영역에 새로운 파일들이 캐시되어 있고, 4.WMA(A part of file)의 크기도 재조정으로 이전에 재생된 부분을 포기하고 앞으로 재생할 데이터를 채워 넣는다.
이처럼 한번 캐시하는 데이터를 읽어 들이는 순간에만 느린 저장모듈에서 읽어 들이기 때문에 캐시한 데이터가 남아있는 동안은 데이터를 저장모듈에서 읽어들이지 않는다. 이러한 캐시 작업은 OS를 이용해서 백그라운드 태스크 처리로 수행되 는 것이 유리하며 저장모듈을 사용하지 않는 동안에는 OS의 스케줄러 기능을 이용해 재생하는데 더 많은 CPU 자원을 할당함으로써 전체 수행 시간을 향상시켜 준다.
한편, 본 발명에서는 전술한 과정에 의해 버퍼(11)에 다수의 멀티미디어 파일을 버퍼링한 상태에서 멀티미디어 재생 리스트의 순서에 따라 재생하는 중에 현재 시점부터 이전 시점으로의 멀티미디어 파일 후진 재생 요청신호가 입력되거나 이전 시점에 재생되었던 특정 멀티미디어 파일 재생 요청신호가 입력되거나 현재 시점부터 이후 시점으로의 멀티미디어 파일 전진 재생 요청신호가 입력되거나 이후 시점에 재생될 특정 멀티미디어 파일 재생 요청신호가 입력되면 상기 mUserBP를 해당되는 멀티미디어 파일이 버퍼링된 버퍼 포인트로 설정(버퍼 포인트의 위치 교환)하여 재생을 시작함으로써, 저장모듈(10)에서 멀티미디어 파일을 읽어서 복사할 필요가 없으며, 그에 따라 버퍼링 접근 회수를 줄일 수 있다.
즉, 도 9의 상측에 도시된 바와 같이, 버퍼(11)에 현재 시점에 재생되는 포인트인 mUserBP가 "3.MP3" 파일을 가르키고 있으며, 이후 시점에서의 재생을 위해 현재 시점에 미리 읽어내는 포인트인 mEndBP가 "4.WMA" 파일을 가르키고 있는 상태에서 사용자로부터 이전에 재생되었던 "1.MP3" 파일 재생 요청이 있는 경우에는 도 9의 하측에 도시된 바와 같이, 현재 시점에 재생되는 포인트인 mUserBP를 "1.MP3"로 위치 교환만을 하고 나서 이 "1.MP3" 파일부터 재생을 시작하면 되기 때문에 별도의 버퍼링 과정을 수행하지 않아도 된다.
한편, 상기 mUserBP를 해당되는 멀티미디어 파일이 버퍼링된 버퍼 포인트로 설정하는 과정에서, 상기 해당되는 멀티미디어 파일이 버퍼(11)에 버퍼링되어 있지 않으면 상기 버퍼(11)를 초기화시킨 후에 해당 멀티미디어 파일을 버퍼링하는 것이 바람직하다.
이상 본 발명의 내용이 실시예를 들어 설명되었으나, 본 발명의 실시예는 본 발명의 예시에 불과하며 본 발명의 범위를 제한하는 것으로 해석되어서는 안 된다. 본 발명이 속하는 분야의 기술자는 본원의 특허청구범위에 기재된 원리 및 범위 내에서 본 발명을 여러 가지 형태로 변형 또는 변경할 수 있다.