KR20010093875A - 멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된푸시/풀 버퍼 관리 방법 - Google Patents

멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된푸시/풀 버퍼 관리 방법 Download PDF

Info

Publication number
KR20010093875A
KR20010093875A KR1020000017163A KR20000017163A KR20010093875A KR 20010093875 A KR20010093875 A KR 20010093875A KR 1020000017163 A KR1020000017163 A KR 1020000017163A KR 20000017163 A KR20000017163 A KR 20000017163A KR 20010093875 A KR20010093875 A KR 20010093875A
Authority
KR
South Korea
Prior art keywords
buffer
data
push
pull
buffering
Prior art date
Application number
KR1020000017163A
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 KR1020000017163A priority Critical patent/KR20010093875A/ko
Publication of KR20010093875A publication Critical patent/KR20010093875A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management
    • H04L1/1877Buffer management for semi-reliable protocols, e.g. for less sensitive applications like streaming video
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2387Stream processing in response to a playback request from an end-user, e.g. for trick-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

본 발명은 버퍼 관리 방법에 관한 것으로 보다 상세하게는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼관리 방법에 관한 것이다. 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼관리 방법은 멀티미디어 스트리밍 시스템의 클라이언트에서 다양한 미디어 재생 장치로의 데이터 공급을 위한 버퍼 관리방법에 있어서,(a) 상기 버퍼를 초기화하는 단계, (b) 초기화된 상기 버퍼에 데이터 버퍼링을 시작하는 단계, (c) 상기 데이터 버퍼링이 완료되면 버퍼링을 중단하는 단계, (d) 버퍼링이 중단된 상기 버퍼에 데이터를 추가하거나 Push 또는 Pull 방식으로 데이터를 전달하는 단계, (e) 상기 버퍼의 데이터 추가 또는 전달이 완료되면 상기 버퍼를 소멸하는 단계를 포함한다. 본 발명에 따르면, 패킷 수신 버퍼가 Push 방식과 Pull 방식을 데이터 출력을 단일한 인터페이스로 제공하여 다양한 미디어 재생 장치를 쉽게 지원할 수 있어 효율적인 미디어 관리가 가능한 효과가 있다.

Description

멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된 푸시/풀 버퍼 관리방법{An integrated push/pull buffer management method at client-side in multimedia streaming environments}
본 발명은 버퍼 관리 방법에 관한 것으로 보다 상세하게는 멀티미디어 스트리밍 시스템에서 다양한 미디어 재생 장치로의 데이터 공급을 위해 단일 메모리에서 Push 방식과 Pull 방식을 모두 지원할 수 있고, 네트워크 지터 흡수를 위한 버퍼 기능을 제공하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼관리 방법에 관한 것이다.
최근의 인터넷은 컴퓨터와 통신기술의 발전으로 인해 동영상, 음성 등과 같은 고 대역폭을 요구하는 멀티미디어 데이터의 온라인 서비스를 가능하게 하였다. 이러한 멀티미디어 통신 서비스에는 VOD(Video On Demand), AOD(Audio On Demand), 화상회의(Video Conference), 인터넷 방송(Internet Broadcasting) 등과 같이 매우 다양한 서비스가 포함되며, 멀티미디어 데이터를 처리하기에 충분한 고성능의 컴퓨터 하드웨어와 고속 통신망 기술이 요구된다.
멀티미디어 통신 시스템은 대용량의 멀티미디어 데이터를 처리하기 위한 특성상 매우 큰 크기의 다양한 버퍼를 요구하며, 버퍼에 저장된 데이터에 대한 I/O (Input/Output) 횟수가 상당히 많은 것이 특징이다. 따라서 버퍼에 대한 I/O를 효율적으로 처리하며, 응용 서비스 및 미디어에 알맞은 버퍼 크기를 계산하고, 버퍼 언더플로우와 버퍼 오버플로우에 효과적으로 대처할 수 있는 유연한 버퍼 관리 기법이 요구된다.
버퍼에 저장되어 있는 데이터의 전달 방식은 데이터 흐름의 주도권을 누가 가지고 데이터를 전달하는가에 따라 데이터를 공급하는 서버가 데이터 흐름을 제어하는 Server-Push(이하 Push로 기술함) 방식과 클라이언트가 데이터 흐름을 제어하는 Client-Pull(이하 Pull로 기술함) 방식으로 구분된다.
Push 방식은 서버가 데이터 흐름의 주도권을 가지고 주기적으로 적절한 데이터를 클라이언트로 전송하는 방식으로서, 브로드캐스트 서비스에 적합하나 데이터를 공급하는 서버에서 데이터 전달 속도(bit-rate)를 적절하게 조정해야만 클라이언트에서의 버퍼 오버플로우 및 버퍼 언더플로우를 방지할 수 있다는 단점이 있다.
이와는 반대로 Pull 방식은 클라이언트가 데이터 흐름의 주도권을 가지고 서버에 원하는 데이터를 요청하면 서버는 요청된 데이터를 클라이언트로 전달하는 요청/응답 형식을 가지는 일종의 폴링 방식으로서, 일반적인 운영체제의 파일 시스템 I/O가 여기에 해당하며 클라이언트에서의 버퍼 오버플로우 및 버퍼 언더플로우를 클라이언트가 제어할 수 있으나, 유니캐스트 서비스에 적합하다는 제약이 있다.
위와 같이 Push 방식과 Pull 방식은 각각 장단점이 있으며, 특히 멀티미디어 통신 시스템의 경우 네트워크 서버와 네트워크 클라이언트 사이뿐만 아니라 클라이언트의 패킷 수신 버퍼와 미디어 재생 장치 사이에서도 Push 방식 또는 Pull 방식을 통해 버퍼에 있는 데이터가 미디어 재생 장치로 전달된다.
지금까지 멀티미디어 통신 시스템과 관련된 많은 버퍼 관리 기법에 관한 연구 진행되어 왔다. 그러나 클라이언트에서의 버퍼 관리 기법은 종단간 네트워크 상황에 따른 버퍼 크기 제어 등과 같은 네트워크만을 고려한 버퍼 관리에 치우친 면이 많았으며, 대부분의 기법들이 클라이언트의 패킷 수신 버퍼와 미디어 재생 장치간의 데이터 전달을 Push와 Pull 방식 중의 하나만 제공하였기 때문에 다양한 미디어 재생 장치를 지원할 수 없었다.
또한 Push와 Pull 방식을 모두 지원한다 하더라도 단일한 인터페이스로 제공하지 않아 다양한 미디어 재생 장치를 손쉽게 이용할 수 없다는 한계를 가지고 있다. 특히, 통합 스트리밍 (Integrated Streaming Services Architecture) 시스템과 같이 다양한 미디어들을 지원해야하는 멀티미디어 통신 시스템에서 클라이언트의 패킷 수신 버퍼에서 미디어 별로 그에 알맞는 Push와 Pull 방식을 각기 따로 제공하는 경우는 버퍼관리 상 비효율적이며, 메모리의 낭비를 피할 수 없다. 그리고, 인터넷과 같이 패킷 손실이 빈번하고 대역폭이 불안정한 네트워크 환경에서는 종단간 지터를 적응시키기 위한 버퍼링 기법도 요구된다.
한편, 멀티미디어 스트리밍 시스템환경에서 클라이언트측의 버퍼 관리 기법과 관련된 연구는 매우 다양한 방면에서 많이 있었으나, 미디어 재생 장치를 위한 버퍼의 데이터 전달 방식과 연관된 Push와 Pull 방식의 버퍼 관리 기법에 관한 연구는 다음과 같다.
Sun Microsystems사가 연구 개발하고 있는 JMF (Java Media Framework)에서는 Push Data Source와 Pull Data Source라는 두 가지 인터페이스를 통해 각각 Push 방식과 Pull 방식을 위한 버퍼 기법을 제공한다.
(Sun Microsystems, Java Media Framework API Guide, September, 1999, http://java.sun.com/products/java-media/jmf/index.html).
JMF는 멀티미디어 데이터 처리를 위한 단일한 구조와 프로그래밍 API를 제공하는 포괄적인 멀티미디어 플랫폼으로서, 자바를 이용한 네트워크 및 로컬에서의 멀티미디어 데이터의 재생 기능 등을 지원한다. 하지만 Push와 Pull 방식을 단일화된 인터페이스로 제공하지 않는 단점을 지니고 있어 실제 이를 이용한 프로그래밍 하기가 매우 까다롭다.
Brown University에서는 Push 방식을 이용해 데이터를 브로드캐스트 서비스하는 시스템에서 Pull 방식을 함께 부가적으로 지원할 수 있는 방법과 그에 따른 버퍼 관리 기법을 제안하였다(S. Acharya, M. Franklin, and S. Zdonik, "Balancing Push and Pull for Data Broadcast", In Proceedings of ACM SIGMOD Conference, Vol. 26, No. 2, pp. 183-198, May, 1997). 이 연구에서 제안한 기법은 기존의 Push 방식의 브로드캐스트 시스템에 추가적으로 Pull 방식을 지원할 수 있는 서버와 클라이언트간의 독립적인 채널을 설정하고 이 채널을 통해 클라이언트의 요청을 전달함으로써 Pull 방식을 지원하였으며, 서버에 브로드캐스트 서비스 하고자 하는 데이터와 클라이언트에서 요청된 데이터를 멀티플렉싱하기 위한 Push/Pull MUX(Multiplexing) 버퍼를 두고 있다. 그러나 이것은 네트워크 서버와클라이언트 사이에서 Push 방식과 Pull 방식의 동시 지원에 초점을 맞춘 것으로서, 본 발명에서 제안한 기법과는 기본 개념이 다르며 여기서 Pull 방식은 단지 기존의 Push 방식을 통한 브로드캐스트 서비스의 단점을 보완하기 위해서 제공된다.
DAVIC(Digital Audio VIsual Council)에서 제안된 버퍼관리 기법은 (Delivery System Architecture And Interfaces, ftp://ftp.davic.org/Davic /Pub/Spec1_2/part04.pdf) Brown University에서 제시한 방법과 유사하나 백채널을 통해서 Pull 요구뿐만 아니라 클라이언트들이 자신들의 버퍼상태를 서버에게 알려서 미리 데이터를 받아두는 형태로, 서버와 클라이언트간의 버퍼 제어를 동적으로 수행하면서 네트워크의 지터를 적극적으로 흡수하는 방식이다. 그러나 이방법도 기본적으로 네트워크 서버와 클라이언트 사이에서 Push 방식과 Pull 방식의 동시 지원에 초점을 맞춘 것으로서 본 발명에서 제안하는 클라이언트에서 Push와 Pull 버퍼 passing을 둘다 지원할 수 있는 통합된 구조와는 접근방법이 다르다.
또한 Hong Kong University의 Jack Y. B. Lee는 Concurrent Push 방식을 사용한 병렬 비디오 서버 시스템에 관한 연구에서 서버 측에서의 버퍼 언더플로우와 클라이언트 측에서의 버퍼 오버플로우를 방지하기 위한 효율적인 버퍼 크기를 계산하는 버퍼 관리 기법을 제시하였다 (Jack Y. B. Lee, "Concurrent Push-A Scheduling Algorithm for Push-Based Parallel Video Servers", IEEE Transactions on Circuits and Systems for Video Technology, Vol. 9, No. 3, pp. 467-477, April, 1999) 그러나 이 방법은 서버와 클라이언트간의 네트워크 전송에서 기존의 단일 전송 대신에 병렬방식의 전송 기법을 사용함으로써, 매우 좋은 성능을 얻는 반면에 단일 전송에 비해 더 많은 크기의 버퍼 용량을 요구한다는 단점이 있어, 본 발명에서 제안한 버퍼 관리 기법과는 개념이 다르다.
본 발명이 이루고자 하는 기술적인 과제는 클라이언트측에서의 패킷 수신 버퍼가 Push 방식과 Pull 방식의 데이터 출력을 단일한 인터페이스로 제공하여 다양한 미디어 재생 장치를 쉽게 지원할 수 있고, 버퍼링 기법을 제공하여 종단간 지터를 적응시킬 수 있는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 기법을 제공하는데 있다.
도 1은 Push/Pull 버퍼 관리를 장치의 구성을 보이는 블록도 이다.
도 2는 도 1에 도시된 버퍼의 구조를 보인 도면이다.
도 3은 본 발명에 따른 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법 중 버퍼 초기화 알고리즘을 보이는 흐름도 이다.
도 4는 본 발명에 따른 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법 중 버퍼링 시작 알고리즘을 보이는 흐름도 이다.
도 5는 본 발명에 따른 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법 중 버퍼링 중단 알고리즘을 보이는 흐름도 이다.
도 6은 본 발명에 따른 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법 중 데이터를 Push 방식으로 전달하는 알고리즘을 보이는 흐름도 이다.
도 7은 본 발명에 따른 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법 중 데이터를 Pull 방식으로 전달하는 알고리즘을 보이는 흐름도 이다.
도 8은 본 발명에 따른 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법 중 버퍼에 데이터를 추가하는 알고리즘을 보이는 흐름도 이다.
도 9는 본 발명에 따른 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법 중 버퍼 소멸 알고리즘을 보이는 흐름도 이다.
본 발명이 이루고자 하는 기술적인 과제를 해결하기 위한 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼관리 방법은 멀티미디어 스트리밍 시스템의 클라이언트에서 다양한 미디어 재생 장치로의 데이터 공급을 위한 버퍼 관리방법에 있어서, (a) 상기 버퍼를 초기화하는 단계; (b) 초기화된 상기 버퍼에 데이터 버퍼링을 시작하는 단계; (c) 상기 데이터 버퍼링이 완료되면 버퍼링을 중단하는 단계; (d) 버퍼링이 중단된 상기 버퍼에 데이터를 추가하거나 Push 또는 Pull 방식으로 데이터를 전달하는 단계; 및 (e) 상기 버퍼의 데이터 추가 또는 전달이 완료되면 상기 버퍼를 소멸하는 단계를 포함하는 것이 바람직하다.
이하, 첨부된 도면을 참조하여 본 발명을 상세히 설명한다.
클라이언트에서의 Push/Pull 버퍼 관리 기법의 전체적인 동작 구조는 도 1과 같이 이루어지며, 실제 클라이언트에 위치한 Push/Pull 버퍼 관리 방법이 미디어재생 장치와 연관되어 동작하는 구조를 표현한 것이다.
도 1에서 서버측의 송신버퍼(10)로부터 패킷 송신자(Packet Sender)(11)를 통해 Push나 Pull 방식으로 전송된 패킷을 클라이언트측에서의 패킷 수신자(Packet Receiver)(12)를 통해 수신되어 해석된 후 수신 버퍼(13)로 전달된다. 수신 버퍼(13)로 전달된 미디어 스트림 데이터는 설정된 미디어 재생장치(MPEG 디코딩부(14), 오디오 디바이스(15))로 설정된 Push 또는 Pull의 데이터 전달 방식을 이용해 재생된다.
즉, 버퍼 관리 방법은 초기에 교섭을 통해 미디어 재생 장치에 알맞는 데이터 전달 방식을 설정한 후 전송 세션이 시작하면 이미 설정된 전달 방식에 따라 데이터를 적절한 장치로 전달한다. 이때 버퍼로 데이터를 입력해주는 패킷 수신자(12)는 서버로부터 데이터를 Push 방식으로 받을 수도 있으며 Pull 데이터 요청을 처리하는 스터브(Stub)를 설치하면 Pull 방식으로도 데이터를 받을 수 있어, 실제 수신 버퍼(13)는 입력 데이터의 네트워크 전달 방식과 상관없이 유연하게 동작한다.
한편, 발명한 버퍼 관리 방법은 Push와 Pull 방식을 단일의 버퍼에서 지원하고 Push와 Pull 방식의 모드 전환을 자유롭게 하기 위해 도 2와 같은 데이터 저장을 위한 내부 버퍼 구조를 가진다.
여기서, Buffer to store stream data는 실제 네트워크를 통해 수신된 데이터가 저장되는 물리적인 선형 버퍼(20)로서, 실제 저장된 데이터 스트림의 앞을 가리키는 Pointer to stream head와 데이터 스트림의 끝을 가리키는 Pointer tostram tail을 이용해 논리적으로 환형 버퍼로서 동작한다.
Info block linked-list는 버퍼(20)에 저장된 스트림을 블록 단위로 관리하여 블록마다 해당하는 정보를 저장하고 있는 정보 블록들의 연결 리스트(21,22,23,24)로서, 버퍼(20)가 Push 방식으로 동작할 때 필요한 구성요소이다. 각 블록은 블록 데이터가 표현되어야 하는 마감 시간을 나타내는 Expire Time과 실제 데이터를 저장하는 선형 버퍼(20)에서 블록이 표현하는 데이터의 위치를 가리기는 Pointer to Data, 블록이 표현하는 데이터의 크기를 나타내는 Data Length와 같은 정보를 저장하고 있다.
발명한 버퍼 관리 방법을 위하나 알고리즘은 버퍼를 초기화(InitBuffer)하는 알고리즘, 버퍼링 시작(StartBuffering) 알고리즘, 버퍼링 중단(StopBuffering) 알고리즘, 데이터를 Push 방식으로 전달하는 알고리즘, 데이터를 Pull 방식으로 전달하는 알고리즘, 데이터를 추가하는 알고리즘, 버퍼를 소멸(DeinitBuffer)시키는 알고리즘으로 구성되어 있다. 각 알고리즘은 상호 보완적으로 동작하며, 각각의 동작 결과에 따라 서로 영향을 받을 수 있다.
도 3은 버퍼를 초기화하는 알고리즘으로서 알고리즘 수행 초기에는 미디어 데이터를 표현할 미디어 표현 장치에서 지원하는 버퍼 데이터 전달 방식(Push 또는 Pull)을 알아내서 사용할 전달방식을 결정한다(S30).
전달 방식 결정 후에 버퍼의 크기(Buffer Size)를 계산한다(S31).
buffer size = bitrate of the given media * buffering time * scale factor
위의 공식에서 bitrate of the given media는 주어진 미디어의 속도, 즉 초당 비트 속도이고, buffering time은 주어진 미디어의 재생속도에 상대적인 값을 가지는 초 단위의 버퍼링 시간이며, scale factor는 이상적인 버퍼 크기보다 더 큰 실재 사용할 버퍼의 크기를 구하기 위한 실수 값의 인자로서 scale factor가 1.0인 경우 계산된 버퍼의 크기는 이상적인 버퍼의 크기와 동일하다. scale factor를 이용하여 버퍼의 크기를 이상적인 값보다 더 크게 해주는 이유는 서버로부터 미디어에 데이터를 전달받는 수신 버퍼에서의 버퍼 오버플로우를 방지하기 위한 것이다.
버퍼의 크기를 계산한 다음에는 실제 데이터를 저장할 메모리(기억장소)를 계산된 크기만큼 할당한다(S32).
메모리 할당 후에 초기 버퍼링 작업을 위한 버퍼링 시작 알고리즘을 호출한다(S33).
도 4는 버퍼링을 시작하는 알고리즘으로 처음에 버퍼링 상태를 시작 상태로 바꿈으로서 시작한다(S40).
버퍼링이 시작되면 재생할 때 필요한 플레이백 지연 시간(Playback delay time)을 계산하기 위해 현재 시간을 저장한다(S41).
버퍼에 있는 데이터의 크기가 버퍼링할 크기 이상인지를 판단한다(S42).
버퍼에 버퍼링 크기만큼의 데이터가 들어올 때까지 Push/Pull 동작을 잠근다(S43).
버퍼에 버퍼링 크기만큼의 데이터가 들어오면 버퍼링을 중단시키는 알고리즘을 호출한다(S44).
한편, 버퍼링 크기(Buffering size)는 버퍼 크기를 구하는 공식에서 scale factor를 곱하는 것을 제외한 공식을 이용해 다음과 같이 구한다.
buffering size = bitrate of the given media * buffering time
도 5는 버퍼링 중단 알고리즘으로 버퍼링 시작 알고리즘에서 버퍼링이 끝난 후에 호출된다. 처음에 현재 시간과 버퍼링이 시작했던 때의 시간을 빼서 Additional playback delay time을 구한다(S50).
이를 총 재생 지연 시간인 playback delay time에 더하며, 만약 현재 버퍼의 데이터 전달모드가 Push 이면 다음 Push 방식의 데이터 전달 동작을 위한 타이머 이벤트를 설정하고, 현재 버퍼의 데이터 전달모드가 Pull이면 잠들어 있는 Pull방식의 데이터 전달 동작을 깨우는 작업을 수행함으로써 Push/Pull 동작의 잠금을 해제한다(S51).
Push/Pull 동작의 잠금을 해제한 후 버퍼링 상태를 정지 상태로 전환한다(S52).
도 6은 버퍼에 있는 데이터를 Push 방식으로 미디어 재생 장치로 출력하는 알고리즘으로, 버퍼가 잠긴 상태(S60)에서 알고리즘 초기에 버퍼에 있는 데이터의 크기를 검사하여 언더플로우가 일어났는지 검사한다(S61).
버퍼에 언더플로우가 일어난 경우에는 버퍼링을 재 시작하기 위해 버퍼링 시작 알고리즘을 호출하고(S62), 본 알고리즘을 중단한다.
버퍼에 언더플로우가 일어나지 않은 경우에는 미디어 재생장치로 데이터를 Push한다(S63).
버퍼의 스트림 헤드에 대한 포인터를 바꿈으로써 버퍼에서 데이터 및 정보 블록을 삭제한다(S64).
블록 삭제 후에 다음 Push 데이터 전달 동작을 위한 타이머 이벤트를 설정하고 버퍼 잠금을 해제한다(S65,S66).
도 7은 버퍼에 있는 데이터를 Pull 방식으로 미디어 재생 장치로 출력하는 알고리즘으로, 버퍼가 잠긴 상태(S70)에서 알고리즘 초기에 버퍼에 있는 데이터의 크기를 검사하여 언더플로우가 일어났는지 검사한다(S71).
버퍼에 언더플로우가 일어난 경우에는 버퍼링을 재 시작하기 위해 버퍼링 시작 알고리즘을 호출한(S72) 후, 버퍼링이 멈출때까지 대기한다(S73). 이것이 버퍼에 있는 데이터를 Push 방식으로 미디어 재생 장치로 출력하는 알고리즘과 다른 점이라고 할 수 있다.
버퍼에 언더플로우가 일어나지 않은 경우에는 미디어 재생장치로 데이터를 Pull 방식으로 전달한다(S74).
데이터 전달이 완료되면 데이터를 삭제하고, 버퍼 잠금을 해제한다(S75,S76).
Pull 데이터 전달 방식은 Push 데이터 전달 방식과는 다르게 타이머 이벤트를 사용하지 않고 미디어 표현 장치 인터페이스로부터 자율적으로 호출된다.
도 8은 버퍼에 데이터를 추가하는 알고리즘으로, 동작을 위하여 버퍼를 잠그고(S80), 네트워크로부터 수신된 새로운 데이터에 대하여 Playback delay time을 적용한다(S81). 즉, 수신된 새로운 데이터의 시간 값을 보정한다.
시간 값 보정 후에 버퍼에 오버 플로우가 발생했는지 검사하여 버퍼에 오버플로우가 발생한 경우에는 새로운 데이터를 포기하고 알고리즘을 중단한다(S82,S83).
버퍼에 오버플로우가 발생하지 않은 경우에는 새로 수신된 데이터를 버퍼에 복사한다(S84).
현재의 데이터 전달모드가 Push인 경우에는 추가된 데이터에 해당하는 정보 블록을 정보 블록 링크드 리스트에 추가한다(S85,S86).
그런 다음 버퍼 데이터 크기를 갱신하고, 버퍼 잠금을 해제한다(S87,S88).
한편, 버퍼에 오버플로우가 일어난 경우의 처리는 현재 데이터 추가 알고리즘 상에서 데이터를 포기하도록 설정되어 있어, 사용자 레벨의 서비스 품질 측면에서 바람직하지 한다. 따라서, 이를 해결하기 위해 버퍼에 더 이상 추가할 수 없는 데이터를 위한 임시 버퍼를 만들어 여기에 임시로 저장해 두었다가 여분의 시간에 임시 버퍼에 있는 데이터를 실제 버퍼로 이동시키는 방안을 생각해 볼 수 있다. 하지만 이런 방식의 경우 임시 버퍼로 인한 버퍼 처리 오버 헤드가 매우 커질 수 있기 때문에, 미디어 데이터의 실시간 처리를 보장할 수 없다는 단점이 있어 이러한 오버 헤드를 최소화하는 것이 관건이다.
도 9는 버퍼 소멸 알고리즘으로 버퍼 초기화 알고리즘과는 반대로 버퍼를 소멸할 때나 미디어 재생을 중단할 때 사용된다.
현재 버퍼링이 진행 중이면 버퍼링 중단 알고리즘을 호출해서 버퍼링을 중단한다(S90,S91).
그 후에 버퍼에 있는 데이터가 모두 소모될 때까지 대기하고 있다가, 버퍼를 위해 할당된 메모리(기억장소)를 해제한 후 종료한다(S92,S93).
본 발명은 상술한 실시 예에 한정되지 않으며 본 발명의 사상 내에서 당업자에 의한 변형이 가능함은 물론이다.
상술한 바와 같이 본 발명에 따르면, 패킷 수신 버퍼가 Push 방식과 Pull 방식을 데이터 출력을 단일한 인터페이스로 제공하여 다양한 미디어 재생 장치를 쉽게 지원할 수 있어 효율적인 미디어 관리가 가능한 효과가 있다.
또한 본 발명에 따른 버퍼 관리 방법은 다양한 미디어 장치마다 그에 알맞는 버퍼 패싱을 위한 스터브와 같은 변환기를 따로 설치할 필요가 없어 메모리 사용의 낭비를 피할 수 있고 인터넷과 같이 패킷 손실이 빈번하고 대역폭이 불안정한 네트워크 환경에서 종단간 지터를 흡수할 수 있는 버퍼링 기능도 동시에 제공할 수 있어 경제적인 효과가 있다.

Claims (13)

  1. 멀티미디어 스트리밍 시스템의 클라이언트에서 다양한 미디어 재생 장치로의 데이터 공급을 위한 버퍼 관리방법에 있어서,
    (a) 상기 버퍼를 초기화하는 단계;
    (b) 초기화된 상기 버퍼에 데이터 버퍼링을 시작하는 단계;
    (c) 상기 데이터 버퍼링이 완료되면 버퍼링을 중단하는 단계;
    (d) 버퍼링이 중단된 상기 버퍼에 데이터를 추가하거나 Push 또는 Pull 방식으로 데이터를 전달하는 단계; 및
    (e) 상기 버퍼의 데이터 추가 또는 전달이 완료되면 상기 버퍼를 소멸하는 단계를 포함하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  2. 제 1항에 있어서, Push 와 Pull 방식을 단일의 상기 버퍼에서 지원하고 Push 또는 Pull 방식의 모드 전환을 자유롭게 하기 위해 상기 버퍼에 저장된 데이터 스트림의 앞을 가리키는 포인터 스트림 헤드와 데이터 스트림의 끝을 가리키는 포인터 스트림 테일을 이용해 논리적으로 환형 버퍼로서 구축하는 것을 특징으로 하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  3. 제 2항에 있어서, 상기 버퍼는
    상기 버퍼에 저장된 데이터 스트림을 블록 단위로 관리하기 위해 상기 각 블록은 블록 데이터가 표현되어야 하는 마감시간 데이터, 실제 저장된 데이터의 위치를 가리키는 데이터 포인터, 상기 블록이 표현하는 데이터의 크기를 나타내는 데이터 랭쓰 데이터를 저장하고 있는 연결 리스트가 구축되어 상기 버퍼가 Push 방식인 경우 동작하는 것을 특징으로 하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  4. 제 1항에 있어서, 상기 (a) 단계는
    (a-1) 상기 미디어 표현 장치에서 지원하는 버퍼 데이터 전달 방식(Push 또는 Pull)을 결정하는 단계;
    (a-2) 상기 버퍼의 크기를 계산하는 단계; 및
    (a-3) 상기 데이터를 저장할 기억장소를 할당하고 버퍼링을 시작하는 단계를 포함하는 것을 특징으로 하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  5. 제 4항에 있어서, 상기 버퍼의 크기 계산은
    상기 미디어의 속도, 상기 미디어의 재생속도에 상대적인 값을 가지는 버퍼링 시간, 이상적인 버퍼 크기보다 더 큰 실재 사용할 버퍼의 크기를 구하기 위한 스캐일 팩터의 곱으로 계산되는 것을 특징으로 하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  6. 제 1항에 있어서, 상기 (b) 단계는
    (b-1) 재생 시에 필요한 총 재생 지연시간(Playback delay time)을 계산하기 위해 현재 시간을 저장하는 단계;
    (b-2) 상기 버퍼에 버퍼링 크기만큼의 데이터가 들어올 때까지 Push 또는 Pull 동작을 정지시키는 단계; 및
    (b-3) 상기 버퍼에 버퍼링 크기만큼의 데이터가 들어오면 버퍼링을 중단하는 단계를 포함하는 것을 특징으로 하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  7. 제 1항에 있어서, 상기 (c) 단계는
    (c-1) 현재 시간과 버퍼링 시작 시간으로부터 총 재생 지연시간을 갱신하는 단계; 및
    (c-2) 상기 버퍼의 데이터 전달 모드가 Push 이면 다음 Push 방식의 데이터 전달 동작을 위한 타이머 이벤트를 설정하고, 상기 버퍼의 데이터 전달모드가 Pull 이면 대기중인 Pull 방식의 데이터 전달 동작을 깨우는 단계를 포함하는 것을 특징으로 하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  8. 제 1항에 있어서, 상기 (d)단계 중 데이터를 추가하는 단계는
    (d-1) 새로이 입력되는 데이터에 총 재생 지연시간을 적용하는 단계;
    (d-2) 상기 버퍼에 오버플로우가 발생하지 않은 경우 새로 수신된 데이터를 상기 버퍼로 복사하는 단계; 및
    (d-3) 상기 버퍼의 전달 모드가 Push 인 경우 추가된 데이터에 해당하는 데이터 블록을 상기 연결 리스트에 추가하는 단계를 포함하는 것을 특징으로 하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  9. 제 8항에 있어서,
    (d-4) 상기 버퍼에 오버플로우가 발생한 경우 새로운 데이터를 포기하고 상 데이터 추가를 중단하는 단계를 더 포함하는 것을 특징으로 하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  10. 제 1항에 있어서, 상기 (d)단계 중 데이터를 Push 방식으로 전달하는 단계는
    (d-11) 상기 버퍼에 언더플로우가 발생하지 않은 경우 상기 미디어 재생 장치로 데이터를 Push 하는 단계;
    (d-12) 상기 버퍼의 스트림 헤드에 대한 포인터를 바꿈으로써 버퍼에서 데이터를 삭제하는 단계; 및
    (d-13) 다음 Push 동작을 위한 타이머 이벤트를 설정하는 단계를 포함하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  11. 제 10항에 있어서,
    (d-14) 상기 버퍼에 언더플로우가 발생한 경우 버퍼링을 재 시작하는 단계를 더 포함하는 것을 특징으로 하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  12. 제 1항에 있어서, 상기 (d)단계 중 데이터를 Pull 방식으로 전달하는 단계는
    (d-111) 상기 버퍼에 언더플로우가 발생한 경우 버퍼링을 재시작하고 버퍼링이 멈출 때까지 대기하는 단계; 및
    (d-112) 상기 버퍼에 언더플로우가 발생하지 않은 경우 상기 데이터를 Pull 방식으로 상기 미디어 재생장치로 전달하하고, 전달한 데이터를 삭제하는 단계를 포함하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
  13. 제 1항에 있어서, 상기 (e)단계는
    (e-1) 현재 버퍼링이 진행 중인 경우 상기 (c)단계를 호출하여 버퍼링을 중단하는 단계;
    (e-2) 버퍼링 중단 이후 상기 버퍼에 저장된 데이터가 모두 소모될 때까지 대기하는 단계; 및
    (e-3) 상기 버퍼를 위해 할당된 기억장소를 해제하는 단계를 포함하는 것을 특징으로 하는 멀티미디어 스트리밍 환경에서 클라이언트측에서 통합된 Push/Pull 버퍼 관리 방법.
KR1020000017163A 2000-04-01 2000-04-01 멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된푸시/풀 버퍼 관리 방법 KR20010093875A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020000017163A KR20010093875A (ko) 2000-04-01 2000-04-01 멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된푸시/풀 버퍼 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020000017163A KR20010093875A (ko) 2000-04-01 2000-04-01 멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된푸시/풀 버퍼 관리 방법

Publications (1)

Publication Number Publication Date
KR20010093875A true KR20010093875A (ko) 2001-10-31

Family

ID=19661087

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000017163A KR20010093875A (ko) 2000-04-01 2000-04-01 멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된푸시/풀 버퍼 관리 방법

Country Status (1)

Country Link
KR (1) KR20010093875A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030032414A (ko) * 2001-10-18 2003-04-26 주식회사 엠씨글로벌 멀티미디어 데이터의 버퍼링 방법
KR100478584B1 (ko) * 2002-02-25 2005-03-28 삼성에스디에스 주식회사 중복적 콘텐츠의 전송 방법
KR100678891B1 (ko) * 2004-07-30 2007-02-05 삼성전자주식회사 Av데이터 수신시 버퍼량을 컨텐츠 속성에 따라탄력적으로 조절하는 방법 및 장치
KR20210006983A (ko) * 2018-10-02 2021-01-19 구글 엘엘씨 라이브 스트림 커넥터

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572645A (en) * 1994-03-01 1996-11-05 International Business Machines Corporation Buffer management policy for an on-demand video server
KR19980019466A (ko) * 1998-03-19 1998-06-05 양승택 중계자를 이용한 멀티미디어 서버의 버퍼 관리시스템 및 관리방법(buffer management method and system of multimedia server with coordinator)
KR19990005320A (ko) * 1997-06-30 1999-01-25 배순훈 비디오 온 디멘드 시스템의 클라이언트 버퍼 관리 장치
JPH11184780A (ja) * 1997-03-25 1999-07-09 Matsushita Electric Ind Co Ltd ストリームデータ転送方法およびシステム
US5928331A (en) * 1997-10-30 1999-07-27 Matsushita Electric Industrial Co., Ltd. Distributed internet protocol-based real-time multimedia streaming architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572645A (en) * 1994-03-01 1996-11-05 International Business Machines Corporation Buffer management policy for an on-demand video server
JPH11184780A (ja) * 1997-03-25 1999-07-09 Matsushita Electric Ind Co Ltd ストリームデータ転送方法およびシステム
KR19990005320A (ko) * 1997-06-30 1999-01-25 배순훈 비디오 온 디멘드 시스템의 클라이언트 버퍼 관리 장치
US5928331A (en) * 1997-10-30 1999-07-27 Matsushita Electric Industrial Co., Ltd. Distributed internet protocol-based real-time multimedia streaming architecture
KR19980019466A (ko) * 1998-03-19 1998-06-05 양승택 중계자를 이용한 멀티미디어 서버의 버퍼 관리시스템 및 관리방법(buffer management method and system of multimedia server with coordinator)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문2000.02 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030032414A (ko) * 2001-10-18 2003-04-26 주식회사 엠씨글로벌 멀티미디어 데이터의 버퍼링 방법
KR100478584B1 (ko) * 2002-02-25 2005-03-28 삼성에스디에스 주식회사 중복적 콘텐츠의 전송 방법
KR100678891B1 (ko) * 2004-07-30 2007-02-05 삼성전자주식회사 Av데이터 수신시 버퍼량을 컨텐츠 속성에 따라탄력적으로 조절하는 방법 및 장치
KR20210006983A (ko) * 2018-10-02 2021-01-19 구글 엘엘씨 라이브 스트림 커넥터

Similar Documents

Publication Publication Date Title
US10298638B2 (en) Streaming media delivery system
US7325073B2 (en) Peer to peer video on demand system selectively using client and server to forward the requested video program to another client
KR101178853B1 (ko) 채널 변경 응답 시간 향상 방법 및 채널 변경 응답 시간 향상 장치
EP1866788B1 (en) Stream control failover
US7742504B2 (en) Continuous media system
US7913282B2 (en) Distributed cooperative memory for interactive and scalable video-on-demand system
US8185611B2 (en) Streaming media delivery system
US7797391B2 (en) Load balancing and admission scheduling in pull-based parallel video servers
JP5536779B2 (ja) 移動体デバイス上で映像を再生するための方法及びシステム
KR20180031547A (ko) 서버에서 멀티 비트 레이트 스트림 미디어를 적응적으로 제공하기 위한 방법 및 장치
KR20010093875A (ko) 멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된푸시/풀 버퍼 관리 방법
JP2004088315A (ja) コンテンツ配信システム、エッジサーバ及び端末装置
Venkatasubramanian et al. E ective load management for scalable video servers
Chang et al. Medic: A memory and disk cache for multimedia clients
Lee et al. An integrated push/pull buffer management method in multimedia communication environments
WO2003063423A9 (en) Pseudorandom data storage
KR101241507B1 (ko) 멀티캐스트를 이용한 주문형 컨텐츠 서비스를 위한 캐시 시스템 및 캐시 할당 방법
Veeravalli et al. Design, analysis, and implementation of an agent driven pull-based distributed video-on-demand system
Ali et al. Synchronized delivery of multimedia information over ATM networks
KR100449492B1 (ko) 멀티캐스팅 채널을 사용하여 스트림 데이터를 전송하는주문형 비디오 시스템에서 점프 방법
Kosch Distributed Multimedia Database Systems
Lee et al. An Integrated Push/Pull Buffer Management Method
Tran Design and implementation of periodic broadcast video servers
Dan et al. The research server complex manager for large-scale multimedia servers
Baier Implementation of a DSM-CC-Server for a DAVIC-Terminal

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application