KR20050097738A - 비디오 스트림을 재생하는 클라이언트 및 재생 방법 - Google Patents

비디오 스트림을 재생하는 클라이언트 및 재생 방법 Download PDF

Info

Publication number
KR20050097738A
KR20050097738A KR1020040022980A KR20040022980A KR20050097738A KR 20050097738 A KR20050097738 A KR 20050097738A KR 1020040022980 A KR1020040022980 A KR 1020040022980A KR 20040022980 A KR20040022980 A KR 20040022980A KR 20050097738 A KR20050097738 A KR 20050097738A
Authority
KR
South Korea
Prior art keywords
packet
time
burst error
video
video stream
Prior art date
Application number
KR1020040022980A
Other languages
English (en)
Other versions
KR100643270B1 (ko
Inventor
매튜 마누
임은희
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020040022980A priority Critical patent/KR100643270B1/ko
Priority to EP05251840A priority patent/EP1585334A1/en
Priority to US11/097,083 priority patent/US7602812B2/en
Publication of KR20050097738A publication Critical patent/KR20050097738A/ko
Application granted granted Critical
Publication of KR100643270B1 publication Critical patent/KR100643270B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client
    • 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/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
    • 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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23608Remultiplexing multiplex streams, e.g. involving modifying time stamps or remapping the packet identifiers
    • 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4344Remultiplexing of multiplex streams, e.g. by modifying time stamps or remapping the packet identifiers
    • 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
    • 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4425Monitoring of client processing errors or hardware failure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/633Control signals issued by server directed to the network components or client
    • H04N21/6332Control signals issued by server directed to the network components or client directed to client

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 가변적인 통신 상황 및 전송하고자 하는 비디오 스트림의 크기에 따라서 비디오 재생을 적응적으로 조절하는 방법 및 장치에 관한 것이다.
본 발명에 따른 비디오 스트림을 재생하는 클라이언트는 비디오 스트림을 역다중화하여 ES(Elementary Stream) 패킷을 생성하는 역다중화부와, ES 패킷을 비디오 디코더에 제공하기 전까지 일시적으로 저장하는 FIFO 버퍼와, 버스트 에러가 발생한 것으로 판단되는 경우에 FIFO 버퍼에 존재하는 ES 패킷의 시간 스탬프를 조절함으로써 버스트 에러로 인한 재생 시각의 공백을 감소시키는 재생타이밍 조절부와, 시간 스탬프가 조절된 ES 패킷을 복호화하여 출력 비디오를 생성하는 비디오 디코더로 이루어진다.
본 발명의 일 실시예에 따르면, 무선 또는 유선 네트워크를 통한 멀티미디어 통신에서, 비디오 스트리밍의 품질을 상대적으로 향상시키는 효과가 있다.

Description

비디오 스트림을 재생하는 클라이언트 및 재생 방법{Client and method for playing video stream}
본 발명은 비디오 재생에 관한 것으로, 보다 상세하게는 가변적인 통신 상황 및 전송하고자 하는 비디오 스트림의 크기에 따라서 비디오 재생을 적응적으로 조절하는 방법 및 장치에 관한 것이다.
이에 관련된 종래의 스트리밍 시스템의 블록도를 도 1에 나타내었다. 상기 시스템은 스트리밍 서버(streaming server)와, 클라이언트(client)와, 패킷 전송 네트워크(이하 채널이라 함)를 포함한다. 미디어는 서버로부터 UDP(User Datagram Protocol), RTP(Real Time Protocol), TCP(Transmission Control Protocol), HTTP(Hypertext Transfer Protocol) 등과 같은 전송 프로토콜(transport protocol)을 이용하여 클라이언트로 전송된다.
보다 효율적인 스트리밍을 위하여 상기 시스템은 RTSP(Real Time Streaming Protocol)나, MMS(Microsoft Media Server)과 같은 스트리밍 제어 채널(streaming control channel)을 사용할 수 있다. 이 때, 모든 클라이언트/서버 통신은 스트리밍 제어 채널(streaming control channel)을 통하여 일어나지만, 실제로 데이터 스트리밍은 전송 채널(transport channel)을 통하여 일어난다.
그런데, 클라이언트 측에서 수신하는 비디오 스트림의 품질은 비디오 데이터 자체만큼이나 중요하다. 에러가 많은 비디오 프레임을 보고자 하는 이는 없을 것이기 때문이다. 비디오 스트림의 품질에 영향을 미치는 주요 인자에는 네트워크 대역폭의 제한(bandwidth-limited network), 패킷 손실(packet loss), 지연 지터(delay jitter) 등이 있다.
(i) 네트워크 대역폭의 제한
때때로 우리는 스트림을 전송하기 위한 충분한 대역폭을 갖지 못하는 경우가 많다. 이에 대한 손쉬운 해결책은 낮은 대역폭을 갖는 스트림을 사용하는 것이다. 만약, 스케일러빌리티(scalability)를 지원하는 코덱으로 압축된 비디오 스트림의 경우에는 더 낮은 밴드폭을 갖도록 변환하기가 용이하다. 그러나, 일반적인 VOD(Video on Demand)의 경우에는 스케일러빌리티를 지원하지 않는 경우가 대부분이고, 따라서 압축된 비디오 스트림의 대역폭을 감소시키기가 어렵다.
(ii) 패킷 손실
서버로부터 전송된 패킷은 손실되어 클라이언트에 도달하지 못하는 경우가 있다. 이 경우, 상기 손실된 패킷에 해당하는 클라이언트 측의 비디오 출력은 나타나지 않게 된다.
이러한 패킷 손실에 따른 에러는 적절한 에러 은닉 알고리즘(error concealment algorithm)을 사용함으로써 사용자가 그 손실을 감지하기 힘들게 할 수 있다. 예를 들어, MPEG-2 스트림에서, 주변의 모션 벡터를 이용하여 손실된 모션 벡터를 재구성하는 에러 은닉 알고리즘을 사용할 수 있다.
(iii) 지연 지터(Delay jitter)
패킷 전송 네트워크를 통하여 전송되는 패킷의 정확한 도달시간을 예측하는 것은 어렵다. 이것은 클라이언트 측에서 원하지 않는 결과를 유발할 수 있다. 비디오 디코더는 패킷을 기다리고 있지만, 그 패킷은 필요한 시간에 도착하지 않을 수 있다. 이러한 문제의 해결책은 클라이언트 측에서 프리-롤 버퍼(pre-roll buffer)를 사용하는 것이다. 이러한 버퍼가 재생시에 추가적인 지연을 야기하기는 하지만, 지연 지터로 인한 문제는 거의 제거될 수 있게 된다.
이러한 네트워크를 이용한 비디오 스트리밍의 문제점을 해결하기 위한 종래 기술로서, 동적 스트리밍 대역폭 제어(Dynamic streaming bandwidth control)와 적응적 미디어 재생(Adaptive Media Playout) 등이 있다.
먼저, 동적 스트리밍 대역폭 제어에 관하여 살펴본다. 클라이언트는 클라이언트 버퍼에 남은 데이터의 양에 관한 정보를 서버에 피드백할 수 있다. 클라이언트 버퍼의 레벨이 낮으면 스트리밍 레이트(streaming rate)가 증가하고, 클라이언트 버퍼의 레벨이 높으면 스트리밍 레이트는 감소한다. 스트리밍 초기에 클라이언트 버퍼는 비어 있기 때문에 클라이언트는 서버에 더 빨리 스트리밍할 것을 요구한다. 따라서 스트리밍의 시작 지연(startup delay) 내지 프리-롤 지연(pre-roll delay)은 감소될 수 있다.
이러한 방법에서는 상당량의 비디오 데이터를 캐쉬(cache)하기 때문에, 클라이언트는 어느 정도의 대역폭 변동에는 영향을 받지 않을 수 있을 것이다. 미국특허 US5,292,834호(발명의 명칭 : "Dynamic Bandwidth Selection For Efficient Transmission Of Multimedia Streams In A Computer Network")에서 이에 관한 알고리즘을 제시하고 있는데, 그 기본 알고리즘을 도 2에서 나타내었다.
한편, 적응적 미디어 재생은 버퍼 언더플로(buffer underflow)로 인한 에러를 은닉하는 알고리즘으로서 사용된다. 이 방법에서, 버퍼 레벨이 소정의 문턱값보다 낮아지면 비디오의 재생 속도는 느려지지만, 비디오 재생이 멈추지는 않는다. 그리고, 다시 버퍼 레벨이 소정의 문턱값보다 높아지면 비디오의 재생 속도는 원래 속도를 회복한다. 그러나, 이 방법은 미디어의 총 재생시간을 증가시킨다.
상기와 같은, 동적 대역폭 제어 알고리즘(Dynamic bandwidth control algorithm)은 충분한 대역폭을 가지고 있어야 제대로 동작하며. 가용한 대역폭이 작으면 제대로 동작하지 않는다. 예를들면, 무선 랜(wireless lan)에서 멀티캐스트(multicast) 통신을 예로 들 수 있다. 무선 인터페이스 카드는 가용한 대역폭을 총 가용 대역폭의 10% 수준으로 제한한다. 그러나 일반적으로, 전송하고자 하는 데이터 스트림, 즉 소스 스트림(source stream)의 대역폭이 가용한 대역폭보다 더 큰 경우를 흔히 직면할 수 있다. 이러한 경우에, 우리는 소스 스트림의 대역폭을 감소시켜야 할 것이고, 만약 압축 코덱이 스케일러빌리티를 지원하지 않는다면 서버 측에서 정체(congestion)를 겪게 될 것이다.
한편, 이와 같이 비디오 스트림이 네트워크를 통하여 전달되는 동안에 연속된 손실(loss) 또는 에러(error)가 발생하면 때때로 비디오 재생이 정지될 수도 있다. 종래의 적응적 미디어 재생 방법은 느린 속도로 전송되는 비디오 스트림을, 화면 멈춤(freezing) 현상 없이 재생하는 방법에 관한 것이지만, 비디오 스트림을 구성하는 패킷에 연속된 손실 또는 에러가 발생할 때 이를 해결하는 것과는 무관하거나 해결하기에 적합하지 않다.
본 발명은 상기한 문제점을 고려하여 창안된 것으로, 비디오 스트림 전송중에 패킷의 연속적 손실 또는 에러(이하 버스트 에러라고 함)가 발생하는 경우에, 클라이언트 측에서 적응적으로 비디오를 재생하는 방법 및 클라이언트를 제공하는 것을 목적으로 한다.
또한, 본 발명은 서버 측의 송신 대역폭이 비디오 스트림의 대역폭보다 작은 경우에 효율적으로 패킷 버림을 하는 방법 및 비디오 서버를 제공하는 것을 목적으로 한다.
상기한 목적을 달성하기 위하여, 본 발명에 따른 비디오 스트림을 재생하는 클라이언트는, 비디오 스트림을 역다중화하여 ES(Elementary Stream) 패킷을 생성하는 역다중화부; 상기 ES 패킷을 비디오 디코더에 제공하기 전까지 일시적으로 저장하는 FIFO 버퍼; 버스트 에러가 발생한 것으로 판단되는 경우에 상기 FIFO 버퍼에 존재하는 ES 패킷의 시간 스탬프를 조절함으로써 상기 버스트 에러로 인한 재생 시각의 공백을 감소시키는 재생타이밍 조절부; 및 상기 시간 스탬프가 조절된 ES 패킷을 복호화하여 출력 비디오를 생성하는 비디오 디코더를 포함하는 것을 특징으로 한다.
상기한 목적을 달성하기 위하여, 본 발명에 따른 비디오 스트림을 재생하는 방법은, 비디오 스트림을 역다중화하여 ES(Elementary Stream) 패킷을 생성하는 단계; 상기 ES 패킷을 일시적으로 저장하는 단계; 버스트 에러가 발생한 것으로 판단되는 경우에 상기 저장된 ES 패킷의 시간 스탬프를 조절함으로써 상기 버스트 에러로 인한 재생 시각의 공백을 감소시키는 단계; 및 상기 시간 스탬프가 조절된 ES 패킷을 복호화하여 출력 비디오를 생성하는 단계를 포함하는 것을 특징으로 한다.
상기 버스트 에러는 비디오 스트림을 제공하는 서버측에서 완전한 비디오 스트림으로부터 일부 패킷을 버림으로써 발생하는 것이 바람직하다.
상기 일부 패킷을 버리는 것은 완전한 비디오 스트림의 비트레이트가 가용한 송신측 대역폭보다 큰 경우에 수행하는 것이 바람직하다.
상기 시간 스탬프는 PTS(Presentation Time Stamps)인 것이 바람직하다.
상기 재생 시각의 공백을 감소시키는 것은 상기 FIFO 버퍼에 존재하는 상기 ES 패킷의 재생 시각이 등간격 배치되도록 상기 시간 스탬프를 조절하는 것이 바람직하다.
상기 재생 시각의 공백을 감소시키는 것은 상기 FIFO 버퍼에 존재하는 상기 ES 패킷의 재생 시각이, 패킷 손실부분에서 멀어질수록 작은 간격이 되도록 상기 시간 스탬프를 조절하는 것이 바람직하다.
상기 시간 스탬프를 조절하는 것은, 상기 FIFO 버퍼에 저장된 패킷 중에서 버스트 에러가 있기 전까지의 패킷에 대하여 순방향 보정 루틴을 수행하고, 버스트 에러가 있은 후의 패킷에 대하여 역방향 보정루틴을 수행하는 것이 바람직하다.
상기 버스트 에러가 발생한 것으로 판단하는 것은 인접한 패킷의 시간 스탬프의 차이가 소정의 문턱값을 넘는가를 기준으로 하는 것이 바람직하다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비디오 스트림의 비트레이트가 가용한 송신측 대역폭보다 크다면, 추가적 비디오 스트림을 스트리밍하고자 할 때에는 비트레이트를 줄여야 한다. 비디오 스트림을 생성하는데 사용되는 코덱이 스케일러블하다면, 이와 같이 비트레이트를 줄이는 일은 매우 쉬운 작업이겠지만, 그렇지 않다면 트랜스코딩(transcoding)을 수행하여야 할 것이다. 여기서, 트랜스코딩이란 상기 비디오 스트림을 압축해제하고 이를 다시 압축하는 과정을 의미한다. 그러나, 이러한 트랜스코딩은 높은 컴퓨팅 능력(computing power)을 필요로 한다.
대역폭을 줄이는 방법으로서, 선택적으로 패킷을 버리는 방법을 선택할 수 있다. 버려질 패킷은, 상기 패킷을 버림으로써 결과적으로 상당량의 왜곡(distortion; 원 비디오와 최종 비디오간의 차이)을 초래하지 않도록 적절히 선택되어야 한다. 인트라 코딩(intra coding) 형식으로 된 패킷을 버리는 것은 매우 큰 왜곡을 초래한다. 따라서, 가능하다면 인트라 코딩 형식으로 된 패킷을 버리지 않도록 하여야 한다.
이와 같이 패킷 버림을 하는 경우라면, 전송에러가 나지 않을 때까지 연속적으로 패킷을 버리는 것이 불연속적으로 패킷을 버리는 것보다 유리하다. 서버 측에서 이러한 연속적 패킷 버림을 수행하면 클라이언트 측에서는 필연적으로 버스트 에러를 경험할 것이다.
본 발명에서는 연속적으로 패킷 버림을 하는데 보다 효율적인 알고리즘을 제공하려 한다. 표 1에서 이러한 알고리즘의 일 예를 나타내었다.
#define PERCENTAGE_PACKET_DROP 5iPacketCount=0;iPacketDropCount=0;While(1){iPacketCount++;thisPacket = GetPacket();if(iPacketDropCount==0){err = SendPacket(thisPacket);if(err){iPacketDropCount=iPacketCount*PERCENTAGE_PACKET_DROP/100;iPacketCount=0;}}else{ iPacketDropCount--;}}
먼저, PERCENTAGE_PACKET_DROP(패킷 버림을 할 비율)을 결정한다. 본 실시예에서는 이 값을 5로 하였지만, 이는 패킷 버림을 수행한 후의 비디오 스트림의 대역폭이 송신 대역폭과 일치하도록 정하면 된다.
먼저, iPacketCount(패킷수)와 iPacketDropCount(패킷을 버린 수)를 0으로 초기화한다. 그리고, while 루프를 수행한다.
While 루프 내의 내용을 보면, 먼저 iPacketCount를 1만큼 증가시키고, 송신 버퍼로부터 하나의 패킷 추출한다. 그리고, iPacketDropCount가 0이 아니면, 계속하여 iPacketDropCount을 감소시킨다.
만약, iPacketDropCount가 0이라면, 현재 패킷을 송신한다. 송신중에 에러가 발생하지 않으면 while 루프의 처음으로 돌아가고, 송신 중에 에러가 발생하면 iPacketDropCount를 현재 iPacketCount에 패킷 버림 비율을 곱한 값으로 두고, iPacketCount를 0으로 갱신한다. 이러한 과정을 반복함으로써 패킷 버림 과정을 적응적으로 수행할 수 있게 된다.
표 1의 코드에서 보는 바와 같이, 일단 송신 시스템이 패킷을 보낼 수 없다면, 패킷을 버리는 과정을 시작한다. 패킷을 버리는 기간 동안은 패킷을 송신하려는 시도를 하지 않기 때문에, 송신 시스템은 이전의 에러(대역폭 부족으로 인한 에러 또는 다른 이유의 에러)로부터 회복할 시간을 충분히 가질 수 있다.
상기와 같이 송신 중에 에러를 검출하는 방법을 살펴보면 다음과 같다. 송신 시스템은 마이크로소프트 사의 윈도우에서 제공하는 소켓 함수 콜(Sockets function call)인 WSASend()를 사용할 수 있다. WSASend()는 하나의 패킷(본 실시예에서는 TS 패킷)을 소켓 버퍼에 복사한다. 만약, 소켓 버퍼가 꽉 차게 되면, WSASend()는 SOCKET_ERROR 값을 반환한다. 실제 데이터 송신 레이트는 데이터가 소켓 버퍼에 복사되는 비율에 비하여 낮기 때문에 소켓 버퍼가 꽉 차는 일은 일어나기 쉽다.
GetLastError()라는 함수는 전송시 에러가 발생한 경우에는 WSAEWOULDBLOCK 값을 반환한다. 스트리밍 시스템이 패킷을 보낼 수 없다고 감지하면, 이후에 송신하는 패킷에 대하여 패킷 버림 알고리즘을 적용하게 되는 것이다.
본 실시예에서는 WSASend()를 사용하는 예를 설명하였지만, 패킷 버림 알고리즘은 여러 소켓 기반의 송신 메커니즘에 적용될 수 있다.
이와 같은 패킷 버림 알고리즘을 사용하면 클라이언트 측에서는 버스트 에러가 발생하게 된다. 뿐만 아니라, 서버 측에서 전체 비디오 스트림을 패킷 버림 없이 송신한 경우에도 통신 프로토콜 또는 네트워크 상황에 따라서 버스트 에러가 발생할 수 있다.
스트리밍은 종종 UDP와 같은 신뢰하기 어려운 프로토콜을 사용한다. 따라서 스트리밍 중에 많은 에러가 발생할 수 있다. 따라서, 클라이언트 측에서 사용자가 느끼는 에러를 은닉하기 위한 적절한 에러 은닉 기술을 사용할 필요가 있다. 에러는 두 개의 카테고리로 나뉜다. 버스트 에러(burst error)와 비버스트 에러(non-burst error)가 그것이다. 이 중 버스트 에러는 상당한 긴 시간 동안 지속되는 에러를 의미하며, 주로 무선 네트워크 환경에서 자주 발생한다.
따라서, 어떤 이유에서든 버스트 에러가 발생하면, 클라이언트에서는 적응적 미디어 재생(adaptive media playout) 방법을 사용할 필요가 있다. 다만, 이는 비디오 스트림에 대하여만 적용할 것이다.
왜냐하면, 오디오 스트림은 비디오 스트림과 비교할 때 상대적으로 낮은 대역폭을 사용하므로, 서버측에서 오디오 TS 패킷은 버리는 것은 별 도움이 되지 않으므로, 오디오 TS 패킷은 버리지 않는 것으로 한다. 마찬가지로, 클라이언트 측에서 오디오에 대하여는 적응적 미디어 재생 방법을 적용할 필요가 적다.
본 발명에서는 이러한 버스트 에러가 발생한 경우에 대비한 적응적 미디어 재생(adaptive media playout) 방법 새로이 제시하고자 한다. 버스트 에러는 클라이언트 측에서 비디오 재생의 멈춤을 일으킬 수 있다. 따라서 이러한 버스트 에러를 은닉할 적응적 미디어 재생을 제시할 필요가 있다.
도 3은 본 발명의 일 실시예에 따른 적응적 미디어 재생 방법의 개괄을 나타낸 도면이다. (a)는 버스트 에러에 의하여 손실된 패킷이 연속적으로 존재하는 경우에, 클라이언트 측에서 수신하는 비디오 스트림의 예를 나타낸 것이고, (b)는 전체 패킷이 갖는 원래 PTS 값을 나타낸 것이며, (c)는 적응적 미디어 재생 방법을 적용하여 변경한 PTS 값을 나타낸 것이다.
(a)와 같은 비디오 스트림에 대하여, (b)와 같이 원래 PTS에 따라서 재생을 하게 되면, 도시한 바와 같이 재생시각의 공백이 발생함으로써 사용자 입장에서는 화면 멈춤(freezing) 현상을 보게 된다. 따라서, 이런 문제를 극복하고 보다 자연스러운 화면을 제공하기 위해서는 본 발명에서의 적응적 미디어 재생 방법을 통하여 손실된 패킷이 위치하는 부분의 주변에 존재하는 패킷의 PTS를 조정함으로써, 화면 전환이 부드럽게 되도록 할 필요가 있다.
이와 같이 본 발명을 적용함으로써, 순간적으로 약간 느린 재생이 발생하더라도 버스트 에러가 크지 않을 경우에는 사용자가 인지하지 못할 수 있다. 또한, 버스트 에러가 상당히 큰 경우에는 사용자가 재생이 느려짐을 인식할 수 있겠지만, 이 경우에도 화면이 멈추어 사용자에게 불편을 일으키는 것보다는 유리하다.
도 4는 본 발명의 일 실시예에 따른 클라이언트(400)의 구성을 나타낸 블록도이다.
클라이언트(400)는 데이터 수신부(410)를 통하여 비디오 스트림을 읽어 들인다. 이러한 비디오 스트림은 여러가지 형식으로 나타날 수 있겠으나 본 실시예에서는 TS 패킷(transport stream packet)으로 하여 설명한다. 상기 데이터 수신부(410)는 소켓(socket) 프로그램으로 구현될 수 있다.
데이터 수신부(410)에서 읽어 들인 TS 패킷은 역다중화부(demultiplexer; 420)에서 역다중화(demultiplex)되어 ES(Elementary Stream) 패킷으로 된다. 상기 ES 패킷에는 비디오 프레임 데이터와, 비디오 재생 시각을 알려주는 시간 스탬프인 PTS(Presentation Time Stamps)가 포함되어 있다.
상기 ES 패킷은 FIFO 버퍼(440)에 일시적으로 저장된다. 재생타이밍 조절부(430)에 의하여 PTS 조절과정을 거친다. 재생타이밍 조절부(430)는 버스트 에러가 발생한 것으로 판단되는 경우, 즉 소정의 문턱값 이상 재생 시각의 공백이 발생하는 경우에, FIFO 버퍼(440)에 존재하는 ES 패킷의 PTS를 조절함으로써 상기 공백을 감소시킨다. 상기 PTS 조절과정에 대한 보다 상세한 설명은 도 5 및 도 6의 설명에서 하기로 한다.
상기 조절과정을 거친 ES 패킷은 다시 FIFO 버퍼(440)에 저장되었다가 순서대로 비디오 디코더(450)에 입력된다. 비디오 디코더(450)는 입력된 상기 ES 패킷을 복호화하여 출력 비디오를 생성한다.
도 4에서 각 구성요소는 "모듈"로 정의될 수 있다. 이러한 모듈이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 모듈들로 결합되거나 추가적인 모듈들로 더 분리될 수 있다. 뿐만 아니라, 모듈들은 통신 시스템 내의 하나 또는 그 이상의 컴퓨터들을 실행시키도록 구현될 수도 있다.
한편, 재생타이밍 조절부(430)에서 수행되는 PTS 조정 알고리즘(Algorithm for PTS modification)은, 버스트 에러가 발생한 경우에 FIFO 버퍼에 저장된 패킷, 즉 버스트 에러로 인하여 손실된 패킷을 제외한 패킷들을 분산하여 배치한다. 이와 같이 분산, 배치하는 방법에는 에러가 발생한 부분에 멀어질수록 작은 시간 간격이 되도록 패킷을 배치하는 방법과, 등간격으로 패킷을 배치하는 방법으로 나누어 생각할 수 있다.
패킷 손실부분에서 멀어질수록 작은 간격이 되도록 배치하는 알고리즘은 도 5에 나타낸 바와 같다.
먼저, 비디오 디코더 FIFO 버퍼에 저장된 패킷들으로부터, MIN_PTS 값, MAX_PTS 값, 및 MAX_DIFF_PTS, 및 PACKET_COUNT를 찾아낸다(S510). 본 명세서에서, MIN_PTS 값은 FIFO 버퍼에 저장된 제1 번째 패킷의 PTS 값이고, MIN_PTS 값은 마지막 패킷의 PTS 값이다. 그리고, MAX_DIFF_PTS는 인접한 패킷이 갖는 PTS 값 간의 최대차로서, 패킷의 PTS가 등간격으로 되어 있으면 이 값은 그 등간격과 같다. 만약, 버스트 에러가 발생하여 특정 패킷간에 PTS값이 등간격보다 큰 값이 있으면 그 값이 MAX_DIFF_PTS가 된다. 또한, PACKET_COUNT는 현재 FIFO 버퍼에 저장된 패킷의 수를 의미한다.
상기 찾아낸 MAX_DIFF_PTS 값이 소정의 문턱값(예를 들어, 300 밀리 초)을 넘으면, 버스트 에러가 있는 것으로 판단한다(S520의 예). 만약, 버스트 에러가 없으면(S520의 아니오), 적응적 미디어 재생 알고리즘은 종료된다.
다음, PTS 값에 필요한 변화를 계산한다. MAX_DIFF_PTS를 (TOT_COUNT ×2)로 나눈 값을 PTS_CHANGE 라고 정의한다(S530). 여기서 TOT_COUNT는 버스트 에러가 없었을 경우에 전체 패킷의 총수를 나타낸다. 즉, TOT_COUNT는 PACKET_COUNT와 버스트 에러에 의하여 손실된 패킷 수를 더한 값이다. 버스트 에러에 의하여 손실된 패킷 수는 MAX_DIFF_PTS와 패킷 간의 PTS 간격을 비교하면 쉽게 알 수 있다.
다음으로, 초기값으로 DPTS 및 TOTAL은 0으로 둔다(S540).
FIFO 버퍼에 저장된 패킷 중에서 제1 패킷으로부터 버스트 에러가 발생하기 직전 패킷(이하 제N 패킷이라고 함)까지, 즉 n=1 부터 n=N 되는 동안 반복하여 순방향 보정 루틴을 수행한다(S550). 여기서, n은 FIFO 버퍼(440)에 저장되어 있는 패킷의 순번을 나타내는 더미(dummy) 값이다.
순방향 보정 루틴을 보다 자세히 보면, DPTS에 TOTAL을 더한 값을 새로운 DPTS 값으로 갱신하는 단계와, 제n 패킷으로부터 PTS 값을 추출하고 여기에 상기 갱신한 DPTS를 더한 값을 제n 패킷의 PTS 값으로 기록하는 단계와, TOTAL에 PTS_CHANGE를 더한 값을 새로운 TOTAL로 갱신하는 단계로 구성된다.
S550 단계를 수행한 후, DPTS 및 TOTAL은 0으로 둔다(S560).
FIFO 버퍼에 저장된 패킷 중에서 마지막 패킷으로부터 버스트 에러가 발생한 직후 패킷(제N+1 패킷)까지, 즉 n=PACKET_COUNT 부터 n=N+1 되는 동안 역순으로 반복하여 역방향 보정 루틴을 수행한다(S570).
역방향 보정 루틴을 보다 자세히 보면, DPTS에 TOTAL을 더하여 이를 새로운 DPTS 값으로 갱신하는 단계와, 제n 패킷으로부터 PTS 값을 추출하고 여기에 상기 갱신한 DPTS를 뺀 값을 제n 패킷의 PTS 값으로 기록하는 단계와, TOTAL에 PTS_CHANGE를 더한 값을 새로운 TOTAL로 갱신하는 단계로 구성된다. S570 단계를 수행한 후 종료된다.
패킷 손실부분에서 멀어질수록 작은 간격이 되도록 배치하는 방법은, 이상의 실시예뿐만 아니라 여러가지 다른 관계식을 통하여 패킷을 재배치함으로써 구현할 수 있음을 당업자라면 이해할 것이다.
상술한 바와 같이 비등간격으로 배치하는 알고리즘도 있을 수 있지만, 간단히 등간격으로 배치할 수도 있을 것이다. 이에 관한 알고리즘은 도 6에 나타낸 바와 같다.
먼저, 비디오 디코더 FIFO 버퍼에 저장된 패킷들으로부터, MIN_PTS 값, MAX_PTS 값, 및 MAX_DIFF_PTS, 및 PACKET_COUNT를 찾아낸다(S610).
상기 찾아낸 MAX_DIFF_PTS 값이 소정의 문턱값(예를 들어, 300 밀리 초)을 넘으면, 버스트 에러가 있는 것으로 판단한다(S620의 예). 만약, 버스트 에러가 없으면(S620의 아니오), 적응적 미디어 재생 알고리즘은 종료된다.
다음, MAX_PTS와 MIN_PTS의 차이값을 (PACKET_COUNT -1)로 나눈 값을 PTS_CHANGE이라고 둔다(S630). 그리고, PTS의 초기값은 0으로 둔다(S640).
FIFO 버퍼에 저장된 패킷 중에서 제1 패킷으로부터 마지막 패킷까지 등간격 보정 루틴을 수행한다(S650). 등간격 보정 루틴은, 현재 PTS 값을 제n 패킷의 PTS 값으로 기록하는 단계와, 현재 PTS 값에 PTS_CHANGE를 더한 값을 새로운 PTS 값으로 갱신하는 단계로 구성된다. S650 단계를 수행한 후 종료된다.
도 7a 내지 도 7d는 도 5 및 도 6에서의 동작을 실예를 들어서 설명한 도면이다. 도 7a에서 보면, 에러가 없는 정상적인 비디오에서 패킷의 수는 15개이고, 각 패킷 간의 시간 간격은 30ms 이며, 첫 패킷(F1)은 0ms에 위치한다. 따라서, 마지막 패킷(F15)은 420ms에 위치하게 된다.
만약, 도 b에서와 같이 상기 패킷 중에서 일부의 패킷(F6 ~ F10)이 버스트 에러에 의하여 손실되었다고 하면, 손실된 기간만큼 MAX_DIFF_PTS 값이 커져서 180ms가 된다. 이대로 비디오를 재생하게 되면, 제5 패킷(F5)이 표시된 뒤 180ms 동안 비디오가 정지 했다가, 정상적으로 수신되는 제11패킷(F11)으로부터 다시 비디오가 재생된다. 따라서 비디오를 감상하는 자의 입장에서는 화면 멈춤(freezing) 현상을 보게 된다.
이런 문제를 극복하고 보다 자연스러운 화면을 제공하기 위해서는 손실된 패킷이 위치하는 부분의 전후에서 패킷의 PTS를 조정하여 화면 전환이 부드럽게 되도록 할 필요가 있다. 이러한 방법으로서 도 6의 등간격으로 조정하는 방법과, 도 5의 비등간격으로 조정하는 방법을 수행한 결과를 각각 도 7c와 도 7d에 나타내었다.
도 7c에서, 각 패킷의 시간간격은 등간격을 이루며 그 시간간격은 46.7ms이 된다. 그 결과, 예컨대 F5의 PTS는 186.7ms로, F11의 PTS는 233.3ms로 조정된다.
한편 도 7d에서, TOT_COUNT = 15, MAX_DIFF_PTS = 180ms 이므로, PTS_CHANGE = 180/(15×2) = 6ms가 된다. 결과를 보면 손실이 발생한 부분 근처로 갈수록 넓은 간격이 되고 그로부터 멀어질수록 좁은 간격이 되는데, 예컨대 F5의 PTS는 180ms로, F11의 PTS는 240ms로 조정된다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
본 발명의 일 실시예에 따르면, 무선 또는 유선 네트워크를 통한 멀티미디어 통신에서, 비디오 스트리밍의 품질을 상대적으로 향상시키는 효과가 있다. 특히, 무선 네트워크로 연결된 두 개의 디바이스의 통신(Peer-to-Peer 통신 등)에 더욱 적합하다. 또한, 버스트 에러가 발생한 경우에 나타나는 화면 멈춤 현상을 효율적으로 제거할 수 있다.
본 발명의 다른 실시예에 따르면, 비디오 스트림 서버에서 채널이 충분한 대역폭을 확보하고 있지 못한 경우에, 버스트 패킷 버림을 이용하여 재생시간을 유지하면서 비디오 스트림을 전송할 수 있다. 즉, 전송하는 비디오 스트림에 의사 스케일러빌리티(pseudo-scalability)를 제공하는 효과가 있다.
도 1은 종래의 스트리밍 시스템의 블록도.
도 2는 동적 스트리밍 대역폭 제어 방법을 간략히 나타낸 흐름도.
도 3은 본 발명의 일 실시예에 따른 적응적 미디어 재생 방법의 개괄을 나타낸 도면.
도 4는 본 발명의 일 실시예에 따른 클라이언트의 구성을 나타낸 블록도.
도 5는 패킷 손실부분에서 멀어질수록 작은 간격이 되도록 패킷을 배치하는 알고리즘을 나타낸 흐름도.
도 6은 등간격이 되도록 패킷을 배치하는 알고리즘을 나타낸 흐름도.
도 7a는 에러가 없는 정상적인 비디오에서 시간 간격을 나타낸 도면.
도 7b는 버스트 에러가 발생한 경우에 시간 간격을 나타낸 도면.
도 7c는 도 7b에 도 6의 방법을 적용한 후 시간 간격을 나타낸 도면.
도 7d는 도 7b에 도 5의 방법을 적용한 후 시간 간격을 나타낸 도면.
(도면의 주요부분에 대한 부호 설명)
400 : 클라이언트 410 : 데이터 수신부
420 : 역다중화부 430 : 재생타이밍 조절부
440 : FIFO 버퍼 450 : 비디오 디코더

Claims (15)

  1. 비디오 스트림을 역다중화하여 ES(Elementary Stream) 패킷을 생성하는 역다중화부;
    상기 ES 패킷을 비디오 디코더에 제공하기 전까지 일시적으로 저장하는 FIFO 버퍼;
    버스트 에러가 발생한 것으로 판단되는 경우에 상기 FIFO 버퍼에 존재하는 ES 패킷의 시간 스탬프를 조절함으로써 상기 버스트 에러로 인한 재생 시각의 공백을 감소시키는 재생타이밍 조절부; 및
    상기 시간 스탬프가 조절된 ES 패킷을 복호화하여 출력 비디오를 생성하는 비디오 디코더를 포함하는 것을 특징으로 하는 비디오 스트림을 재생하는 클라이언트.
  2. 제1항에 있어서,
    상기 시간 스탬프는 PTS(Presentation Time Stamps)인 것을 특징으로 하는 비디오 스트림을 재생하는 클라이언트.
  3. 제1항에 있어서, 상기 재생 시각의 공백을 감소시키는 것은
    상기 FIFO 버퍼에 존재하는 상기 ES 패킷의 재생 시각이 등간격 배치되도록 상기 시간 스탬프를 조절하는 것을 특징으로 하는 비디오 스트림을 재생하는 클라이언트.
  4. 제1항에 있어서, 상기 재생 시각의 공백을 감소시키는 것은
    상기 FIFO 버퍼에 존재하는 상기 ES 패킷의 재생 시각이, 패킷 손실부분에서 멀어질수록 작은 간격이 되도록 상기 시간 스탬프를 조절하는 것을 특징으로 하는 비디오 스트림을 재생하는 클라이언트.
  5. 제4항에 있어서, 상기 시간 스탬프를 조절하는 것은,
    상기 FIFO 버퍼에 저장된 패킷중에서 버스트 에러가 있기 전까지의 패킷에 대하여 순방향 보정 루틴을 수행하고, 버스트 에러가 있은 후의 패킷에 대하여 역방향 보정루틴을 수행하는 것을 특징으로 하는 비디오 스트림을 재생하는 클라이언트.
  6. 제1항에 있어서, 상기 버스트 에러가 발생한 것으로 판단하는 것은
    인접한 패킷의 시간 스탬프의 차이가 소정의 문턱값을 넘는가를 기준으로 하는 것을 특징으로 하는 비디오 스트림을 재생하는 클라이언트.
  7. 비디오 스트림을 역다중화하여 ES(Elementary Stream) 패킷을 생성하는 단계;
    상기 ES 패킷을 일시적으로 저장하는 단계;
    버스트 에러가 발생한 것으로 판단되는 경우에 상기 저장된 ES 패킷의 시간 스탬프를 조절함으로써 상기 버스트 에러로 인한 재생 시각의 공백을 감소시키는 단계; 및
    상기 시간 스탬프가 조절된 ES 패킷을 복호화하여 출력 비디오를 생성하는 단계를 포함하는 것을 특징으로 하는 비디오 스트림을 재생하는 방법.
  8. 제7항에 있어서, 상기 버스트 에러는
    비디오 스트림을 제공하는 서버측에서 완전한 비디오 스트림으로부터 일부 패킷을 버림으로써 발생하는 것을 특징으로 하는 비디오 스트림을 재생하는 방법.
  9. 제8항에 있어서, 상기 일부 패킷을 버리는 것은
    완전한 비디오 스트림의 비트레이트가 가용한 송신측 대역폭보다 큰 경우에 수행하는 것을 특징으로 하는 비디오 스트림을 재생하는 방법.
  10. 제7항에 있어서,
    상기 시간 스탬프는 PTS(Presentation Time Stamps)인 것을 특징으로 하는 비디오 스트림을 재생하는 방법.
  11. 제7항에 있어서, 상기 재생 시각의 공백을 감소시키는 것은
    상기 FIFO 버퍼에 존재하는 상기 ES 패킷의 재생 시각이 등간격 배치되도록 상기 시간 스탬프를 조절하는 것을 특징으로 하는 비디오 스트림을 재생하는 방법.
  12. 제1항에 있어서, 상기 재생 시각의 공백을 감소시키는 것은
    상기 FIFO 버퍼에 존재하는 상기 ES 패킷의 재생 시각이, 패킷 손실부분에서 멀어질수록 작은 간격이 되도록 상기 시간 스탬프를 조절하는 것을 특징으로 하는 비디오 스트림을 재생하는 방법.
  13. 제4항에 있어서, 상기 시간 스탬프를 조절하는 것은,
    상기 FIFO 버퍼에 저장된 패킷중에서 버스트 에러가 있기 전까지의 패킷에 대하여 순방향 보정 루틴을 수행하고, 버스트 에러가 있은 후의 패킷에 대하여 역방향 보정루틴을 수행하는 것을 특징으로 하는 비디오 스트림을 재생하는 방법.
  14. 제1항에 있어서, 상기 버스트 에러가 발생한 것으로 판단하는 것은
    인접한 패킷의 시간 스탬프의 차이가 소정의 문턱값을 넘는가를 기준으로 하는 것을 특징으로 하는 비디오 스트림을 재생하는 방법.
  15. 제7항 내지 제14항 중 어느 한 항에서의 방법을 컴퓨터로 판독 가능한 프로그램으로 기록한 기록매체.
KR1020040022980A 2004-04-02 2004-04-02 비디오 스트림을 재생하는 클라이언트 및 재생 방법 KR100643270B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020040022980A KR100643270B1 (ko) 2004-04-02 2004-04-02 비디오 스트림을 재생하는 클라이언트 및 재생 방법
EP05251840A EP1585334A1 (en) 2004-04-02 2005-03-24 Method and client for playing a video stream.
US11/097,083 US7602812B2 (en) 2004-04-02 2005-04-04 Client for video stream play and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040022980A KR100643270B1 (ko) 2004-04-02 2004-04-02 비디오 스트림을 재생하는 클라이언트 및 재생 방법

Publications (2)

Publication Number Publication Date
KR20050097738A true KR20050097738A (ko) 2005-10-10
KR100643270B1 KR100643270B1 (ko) 2006-11-10

Family

ID=34910080

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040022980A KR100643270B1 (ko) 2004-04-02 2004-04-02 비디오 스트림을 재생하는 클라이언트 및 재생 방법

Country Status (3)

Country Link
US (1) US7602812B2 (ko)
EP (1) EP1585334A1 (ko)
KR (1) KR100643270B1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8866915B2 (en) * 2005-11-15 2014-10-21 Lawrence Livermore National Security, Llc High speed, real-time, camera bandwidth converter
US20070143729A1 (en) * 2005-11-15 2007-06-21 The Regents Of The University Of Ca High speed camera bandwidth converter
JP2008005374A (ja) * 2006-06-26 2008-01-10 Mitsubishi Electric Corp マルチストリーム対応マルチプレクサ及びデマルチプレクサシステム
JP5020316B2 (ja) * 2006-06-27 2012-09-05 トムソン ライセンシング パフォーマンスを意識したピアツーピアビデオオンデマンドの許可制御
US8020100B2 (en) 2006-12-22 2011-09-13 Apple Inc. Fast creation of video segments
US8943410B2 (en) 2006-12-22 2015-01-27 Apple Inc. Modified media presentation during scrubbing
US7992097B2 (en) 2006-12-22 2011-08-02 Apple Inc. Select drag and drop operations on video thumbnails across clip boundaries
US8055779B1 (en) 2007-05-10 2011-11-08 Adobe Systems Incorporated System and method using data keyframes
FR2916925B1 (fr) * 2007-05-30 2009-07-17 Alcatel Lucent Sas Procede et dispositif de tamponnage de paquets de donnees transmis via une communication plesiochrone.
US9979931B2 (en) * 2007-05-30 2018-05-22 Adobe Systems Incorporated Transmitting a digital media stream that is already being transmitted to a first device to a second device and inhibiting presenting transmission of frames included within a sequence of frames until after an initial frame and frames between the initial frame and a requested subsequent frame have been received by the second device
US8831402B2 (en) 2008-06-16 2014-09-09 Telefonaktiebolaget Lm Ericsson (Publ) Media stream processing
EP2302845B1 (en) 2009-09-23 2012-06-20 Google, Inc. Method and device for determining a jitter buffer level
US8848746B2 (en) * 2010-06-30 2014-09-30 Vitesse Semiconductor Corporation Packet protocol processing with precision timing protocol support
US8630412B2 (en) 2010-08-25 2014-01-14 Motorola Mobility Llc Transport of partially encrypted media
US20120297405A1 (en) 2011-05-17 2012-11-22 Splendorstream, Llc Efficiently distributing video content using a combination of a peer-to-peer network and a content distribution network
US20120320993A1 (en) * 2011-06-14 2012-12-20 Google Inc. Apparatus and method for mitigating the effects of packet loss on digital video streams
CN104469373B (zh) * 2014-12-09 2018-02-09 中国航空工业集团公司第六三一研究所 一种音视频编码系统
US10158889B2 (en) * 2015-01-31 2018-12-18 Intel Corporation Replaying old packets for concealing video decoding errors and video decoding latency adjustment based on wireless link conditions
US10602139B2 (en) * 2017-12-27 2020-03-24 Omnivision Technologies, Inc. Embedded multimedia systems with adaptive rate control for power efficient video streaming

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652627A (en) * 1994-09-27 1997-07-29 Lucent Technologies Inc. System and method for reducing jitter in a packet-based transmission network
US5726989A (en) * 1995-11-06 1998-03-10 Stellar One Corporation Method for ensuring synchronization of MPEG-1 data carried in an MPEG-2 transport stream
JPH09298734A (ja) 1996-04-30 1997-11-18 Matsushita Electric Ind Co Ltd ビデオオンデマンドシステム
US5767746A (en) * 1996-06-07 1998-06-16 David Sarnoff Research Center, Inc. Method and apparatus for adjusting phase-lock-loop parameters
US6292834B1 (en) * 1997-03-14 2001-09-18 Microsoft Corporation Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
US6101195A (en) * 1997-05-28 2000-08-08 Sarnoff Corporation Timing correction method and apparatus
US6188703B1 (en) * 1997-08-01 2001-02-13 International Business Machines Corp. Multiplexer for multiple media streams
US6247072B1 (en) * 1998-01-27 2001-06-12 Cisco Technology, Inc. Real-time data rate matching across a medium
SG71835A1 (en) * 1998-09-07 2000-04-18 Victor Company Of Japan A dejittering and clock recovery technique for real-time audio/visual network applications
AU5140200A (en) * 1999-05-26 2000-12-18 Enounce, Incorporated Method and apparatus for controlling time-scale modification during multi-media broadcasts
US7031306B2 (en) * 2000-04-07 2006-04-18 Artel Video Systems, Inc. Transmitting MPEG data packets received from a non-constant delay network
KR100460529B1 (ko) 2001-11-15 2004-12-08 박홍성 무선 데이터통신망에서 데이터 스트리밍을 위한 데이터 송수신 시스템 및 그 방법
KR100511291B1 (ko) 2002-03-22 2005-08-31 엘지전자 주식회사 무선통신에서의 영상신호 전송방법
KR100453505B1 (ko) 2002-04-03 2004-10-20 주식회사 케이티프리텔 무선 네트워크 클라이언트에서 스트리밍 데이터의 멀티비트 레이트 기능 제어 방법 및 그 장치
JP3833571B2 (ja) * 2002-05-28 2006-10-11 富士通株式会社 データ復号器およびデータ復号化方法
US7004018B2 (en) 2002-08-27 2006-02-28 Nissan Motor Co., Ltd. Vehicle driving force control apparatus
US7953194B2 (en) * 2002-09-27 2011-05-31 Broadcom Corporation Handling video transition errors in video on demand streams
FR2849328A1 (fr) * 2002-12-20 2004-06-25 St Microelectronics Sa Procede et dispositif de synchronisation de la presentation de trames audio et/ou de trames video
RU2375839C2 (ru) * 2003-02-18 2009-12-10 Нокиа Корпорейшн Способ кодирования изображений
US7298741B2 (en) * 2003-02-27 2007-11-20 Sharp Laboratories Of America, Inc. Robust MPEG-2 multiplexing system and method using an adjustable time stamp

Also Published As

Publication number Publication date
US20050232290A1 (en) 2005-10-20
US7602812B2 (en) 2009-10-13
EP1585334A1 (en) 2005-10-12
KR100643270B1 (ko) 2006-11-10

Similar Documents

Publication Publication Date Title
US7602812B2 (en) Client for video stream play and method thereof
US9426335B2 (en) Preserving synchronized playout of auxiliary audio transmission
US8300667B2 (en) Buffer expansion and contraction over successive intervals for network devices
JP4690280B2 (ja) メディアデータをストリーミングする方法、システム及びクライアント装置
US7881335B2 (en) Client-side bandwidth allocation for continuous and discrete media
US7652994B2 (en) Accelerated media coding for robust low-delay video streaming over time-varying and bandwidth limited channels
KR101330907B1 (ko) 디지털 비디오 장치에서 채널 변경 시간을 단축하는 방법
JP5452495B2 (ja) オーディオ・ビデオレンダリングの早期開始システム及び方法
AU2002231829A1 (en) Method and system for buffering streamed data
US20050094965A1 (en) Methods and apparatus to improve the rate control during splice transitions
US20060161676A1 (en) Apparatus for IP streaming capable of smoothing multimedia stream
Steinbach et al. Adaptive media playout
JP2023161219A (ja) 送信装置、受信装置及びそれらのプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120927

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130927

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140929

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150925

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180117

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180822

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20191111

Year of fee payment: 14