KR20040093483A - 데이터 스트리밍 시스템을 위한 데이터 구조 - Google Patents

데이터 스트리밍 시스템을 위한 데이터 구조 Download PDF

Info

Publication number
KR20040093483A
KR20040093483A KR10-2004-7015313A KR20047015313A KR20040093483A KR 20040093483 A KR20040093483 A KR 20040093483A KR 20047015313 A KR20047015313 A KR 20047015313A KR 20040093483 A KR20040093483 A KR 20040093483A
Authority
KR
South Korea
Prior art keywords
data
stream
streams
client
encoded
Prior art date
Application number
KR10-2004-7015313A
Other languages
English (en)
Other versions
KR100917743B1 (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 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니
Publication of KR20040093483A publication Critical patent/KR20040093483A/ko
Application granted granted Critical
Publication of KR100917743B1 publication Critical patent/KR100917743B1/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/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
    • 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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2401Monitoring of the client 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/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • 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/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • 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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • 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/44016Processing 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 splicing one content stream with another content stream, e.g. for substituting a video clip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8455Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Databases & Information Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Communication Control (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)

Abstract

스트리밍 시스템용 데이터 소스를 저장하기 위한 데이터 구조에 있어서, 데이터 소스는 복수의 인코딩된 데이터 스트림을 포함하고, 복수의 데이터 스트림의 각각은 복수의 데이터 스트림 중의 다른 것과 상이한 해상도로 인코딩된 데이터 소스로부터의 데이터의 독립적인 표현이며, 데이터 구조는 헤더(600-680), 인코딩된 데이터 스트림들의 각각에 대한 스트림 데이터 구조(700) 및 인코딩된 데이터 스트림들의 하나 이상의 패킷들(800)을 포함하고, 헤더(600-680)는 스트림 데이터 구조(700)들 중의 하나에 링크되며, 여기서 각 스트림 데이터 구조(700)는 헤더(705, 740, 750), 다음 스트림 데이터 구조에 대한 링크(710), 인코딩된 데이터 스트림의 첫번째 패킷에 대한 링크(720)를 포함한다.

Description

데이터 스트리밍 시스템을 위한 데이터 구조{DATA STRUCTURE FOR DATA STREAMING SYSTEM}
본 발명은 IP(Internet Protocol) 네트워크를 통해 스트리밍되는 오디오 및 비디오 콘텐트를 저장하기에 적합한 데이터 구조에 관한 것이다. 특히, 본 발명은 이용가능한 비트 속도가 물리적인 네트워크 특성 및/또는 다른 트래픽과의 경쟁 때문에 원래부터 가변적인 시스템에 사용되기에 적합하다. 예를 들면, 본 발명은 GPRS(General Packet Radio Service)나 3G 네트워크를 통해 PDA(Personal Digital Assistant)와 같은 모바일 핸드헬드 단말기로 멀티미디어 스트리밍을 하는데 적합하다.
케이블과 ADSL(Asymmetric Digital Subscriber Line) 모뎀과 같은 새로운 데이터 네트워크 액세스 기술은 무료 클라이언트 소트트웨어의 이용가능성과 압축에서의 진보와 함께 인터넷 상에서의 비디오 스트리밍의 성장을 구동하고 있다. 이러한 기술의 사용은 매 6개월마다 크기에 있어서는 아마도 2배로 되면서 기하급수적으로 성장하고 있으며, 2000년에는 5억개의 스트림이 서비스되고 있다고 추정된다. 그러나, 인터넷 스트리밍에 대한 사용자의 지각은 정체와 큰 시동 지연의 경험에 의해 여전히 특징지워진다.
현재의 IP 네트워크는 가변적인 달성가능한 스루풋(throughput) 뿐만 아니라패킷 손실, 지연 및 지터(지연 변동)를 보임에 따라 비디오 콘텐트의 스트리밍에 그렇게 적합하지 않으며, 이것들 모두는 멀티미디어 콘텐트에 대한 최종 사용자의 즐거움을 떨어뜨린다.
실시간 비디오 애플리케이션은 모든 패킷이 시간에 맞게 도착할 것을 요구한다. 만약 패킷이 손실된다면, 인코더와 디코더 사이의 동기는 깨지며, 에러는 렌더링된 비디오를 통해 얼마간의 시간 동안 전파된다. 만약 패킷이 과도하게 지연된다면, 그것들은 실시간으로 동작해야만 하는 디코더에서는 쓸모없게 되며, 손실로서 취급된다. 패킷 손실과 렌더링된 비디오에 대한 그것의 시각적 효과는 H. 263과 같은 예측적 비디오 코딩 시스템에서 특히 심각하다. 패킷 손실의 효과는 비디오 스트림에 에러 보호를 도입함으로써 감소되어 질 수는 있지만 제거될 수는 없다. 그러한 탄력 기술은 패킷 손실의 효과를 제거하기 보다는 최소화시킬 수 있을 뿐이라는 것이 알려져 왔다.
스루풋에서의 장기 저하를 가리키는 지속적인 패킷 손실의 경우에, 스트리밍 시스템은 그것의 장기 필요조건들을 감소시킬 수 있을 필요가 있다. 일반적으로 이것은 스트리밍되는 매체의 비트 속도가 감소되어야 함을 의미한다.
H.263 및 MPEG-4와 같은 표준 압축 기술은 인코딩 속도를 동적으로 변화시킬 수 있는 멀티미디어 소스를 제공할 수 있다. 그러한 특성을 갖는 비디오 소스는 여기서 신축적 소스, 즉 네트워크 스루풋에서의 장기 변동에 적응할 수 있는 소스로 설명된다. 이것은 일반적으로 연속적으로 적응 비디오 비트 속도를 제공함으로써 성취된다. 이것은 아마도 오디오 코덱과는 다르게, 비디오 압축 표준은 절대적인 작동 비트 속도를 규정하기 않기 때문일 것이다.
비디오 스트리밍 시스템은 가변하는 비트 속도를 갖는 인코딩된 스트림을 제공하도록 설계될 수 있으며, 여기서 비트 속도는 클라이언트의 피드백에 응답하여, 이용가능한 네트워크 대역폭에 순간적으로 적응한다. 그러한 시스템은 패킷 손실의 경우에는 급격하게 감소하고 다른 경우에는 천천히 증가하도록 전송 속도를 제어함으로써 네트워크에 우호적으로 만들어질 수 있다.
그러나, 그러한 솔루션은 두 가지 이유에서 실용적이지 않다. 첫째, 실시간 비디오 인코딩은 대개 많은 양의 처리 전력을 필요로 하고, 그리하여 그러한 솔루션이 많은 사용자를 지원하게끔 스케일링(scaling)되는 것을 막는다. 둘째, 전체적인 품질에 대한 최종 사용자의 지각은 순간적인 품질에서의 급격한 변동에 의해 불리하게 영향받을 것이다.
단방향 스트리밍 애플리케이션에 대해서, 전송자와 수신자 사이의 지연은 단지 시동 시에만 지각가능하다. 그러므로, 일반적인 기술은 패킷 손실과 지터를 지연과 교환한다. 비디오 스트림의 평균 스루풋 필요조건이 평균 이용가능 대역폭과 일치한다면 수신기의 버퍼 크기는 지연에서의 평균 변동을 포함하도록 크기가 변동될 수 있다.
시장을 선도하는 스트리밍 시스템은 인터넷에서 마주칠 수 있는 지터의 효과를 감소시키기 위해서 상당한 클라이언트측 버퍼링을 사용한다고 믿기고 있다. 이것은 도움이 되는 반면에, 그것은 또한 버퍼가 차는 동안에 일반적으로 5초에서 30초 사이의 큰 시동 지연을 도입한다. 이들 시스템은 클라이언트로 하여금 이용가능한 대역폭에서의 변동에 적응하도록 허용하는 기술을 또한 포함한다. 이들 기술의 상세가 공개적으로 이용가능하지 않다할 지라도, 그것들은 일반적으로 단일 파일내에서 다중 데이터 속도 인코딩(SNR 스케일러빌리티(scalability)) 및 오디오 품질을 유지하기 위해 비디오 픽처 속도의 서버측 감소와 같은 지능형 전송 기술을 사용한다고 의심된다. 그러한 많은 양의 버퍼링은 아마도 패킷의 상당한 비율이 재전송되도록 허용할 수 있을 것인데, 하지만 이들 재전송은 동일한 네트워크 특성에 종속된다. 손실된 데이터를 재전송하는 결정은 이것과 다른 다수의 요인에 따른다. 그러한 기술은 일반적으로 유니캐스트(unicast) 전송에만 적용가능하다. 멀티캐스트 전송 시스템은 일반적으로 RLM 및 RLC와 같은 수신기 기반 스케일러빌리티나 포워드(forward) 에러 정정에 의해 보다 잘 서비스된다. S. McCanne, 'Receiver driven layered multicast', Proceedings of SIGCOMM 96, 스탠포드. CA. 1996년 8월. L. Vicisano, L. Rizzo 및 J. Crowcroft, 'TCP-like cogestion control for layered multicast data transfer', Infocom '98.
전술한 바와 같은 버퍼의 사용은 시스템으로 하여금 패킷 손실과 지터를 극복하도록 허용한다. 그러나, 네트워크로부터 이용가능한 불충분한 비트 속도가 있는 문제는 극복하지 못한다. 만약 비디오물의 장기 평균 비트 속도 필요조건이 네트워크로부터 이용가능한 평균 비트 속도를 초과한다면, 클라이언트 버퍼는 결국 고갈될 것이며 비디오 렌더러는 버퍼가 다시 찰 때까지 정지할 것이다. 이용가능한 네트워크 비트 속도와 콘텐트가 인코딩된 속도 사이의 불일치의 정도가 버퍼를 다시 채우기 위한 일시정지의 빈도를 결정한다.
전술한 바와 같이, H.263과 MPEG-4와 같은 대부분의 비디오 압축 알고리듬은 연속적으로 적응하는 비트 속도를 제공하도록 구현될 수 있다. 그러나, 일단 비디오 및 오디오가 압축되고 나면, 그것들은 비탄력적이 되며, 인코딩된 비트 속도로 전송될 필요가 있다.
네트워크 스루풋에서의 단기 변동과 네트워크 지터가 수신기에서의 퍼버 동작에 의해 흡수될 수 있지만, 탄력성은 네트워크 스루풋에서의 장기 변동이 또한 흡수될 수 있을 때에만 성취될 수 있다.
레어어드(layered) 인코딩은 탄력적인 비디오 소스를 생성하는 잘 알려진 기술이다. 레이어드 비디오 압축은 계층적인 코딩 스킴을 사용하는데, 여기서 수신기에서의 품질은 보다 고층 레이어들의 수신과 디코딩에 의해 향상되며, 이들 고층 레이어들은 기본 화상(representation)에 순차적으로 부가된다. 임의의 시간에, 각 클라이언트는 임의의 갯수의 이들 비디오 레이어를 수신할 수 있으며, 이는 소스에 대한 현재 네트워크의 연결성에 의존한다. 가장 단순한 구현에서, 이것은 네트워크 상태에 대한 조악한 적응을 제공하며, 이는 멀티캐스트 상황에서 유리하다. 레어어드 비디오 압축은 네트워크 상태에 대한 세밀한 적응을 부가하기 위해 클라이언트에서의 버퍼링과 또한 결합되었다. 그러나, 레어어드 인코딩 기술은 비효율적이며, 아마도 감소된 처리 능력을 갖는 모바일 장치를 다룰 특별한 문제를 야기하는 클라이언트에서 상당히 더 많은 프로세싱을 일반적으로 필요로 할 것이다.
트랜스코딩은 탄력적인 비디오 소스를 생성하는 또다른 공지의 기술이다. 비디오 트랜스코딩은 비디오 인코딩보다 훨씬 더 낮은 계산 복잡도를 갖도록 설계될 수 있음이 알려져 왔다. 그러나, 계산 복잡도는 무시할 수 없을 정도이며, 그리하여 비디오 스트리밍을 위한 스케일러블 구조로 귀결되지 않을 것이다.
본 발명의 일국면에 따르면, 스트리밍 시스템용 데이터 소스를 저장하기 위한 데이터 구조가 제공되며, 상기 데이터 소스는 복수의 인코딩된 데이터 스트림을 포함하고, 상기 복수의 데이터 스트림의 각각은 상기 복수의 데이터 스트림 중의 다른 것과 상이한 해상도로 인코딩된 상기 데이터 소스로부터의 데이터의 독립적인 표현이며, 상기 데이터 구조는 헤더, 상기 인코딩된 데이터 스트림들의 각각에 대한 스트림 데이터 구조 및 상기 인코딩된 데이터 스트림들의 하나 이상의 패킷들을 포함하고, 상기 헤더는 상기 스트림 데이터 구조들 중의 하나에 링크되며, 여기서 각 스트림 데이터 구조는 헤더, 다음 스트림 데이터 구조에 대한 링크, 상기 인코딩된 데이터 스트림의 첫번째 패킷에 대한 링크를 포함한다.
상기 데이터 구조를 이용하기 위한 적절한 시스템과 방법이 아래에서 상세히 설명된다. 데이터 구조의 복잡성은 잠재적으로 많은 스트림들이 인터리브되는 것으로부터의 패킷들의 결과이며, 스위칭과 복구의 지원 필요의 결과이다. 패킷으로부터 패킷으로의 내비게이션은 일반적으로 한 스트림 내에서 연속적인 패킷들이 파일 내에서는 연속적으로 저장되지 않을 것이기 때문에 반드시 포인터들에 의한다. 스위칭 및 복구 패킷들을 쓰는 것은 소스 및 데스티네이션 패킷들의 정밀한 상세가 기록되는 것을 필요로 한다. 재생 동안에 스트림들간의 스위칭은 우선 다음번 이용가능한 스위칭 패킷의 식별을 필요로 하며, 이 후로 스위칭 "전" 스트림으로부터의 잔여 패킷의 재생, 스위칭 패킷의 재생, 적절한 지점으로부터 스위칭 "후" 스트림으로부터의 패킷의 재생이 이어진다. 또한, 스트림들 사이에서 스위칭 할 때는 어떠한 상당한 지연도 없는 것이 바람직하다.
바람직하게는, 복수의 인코딩된 데이터 스트림은 비디오 데이터 스트림들이다. 오디오 데이터는 데이터 스트림으로서 인코딩될 수 있다.
비디오와 오디오 데이터 스트림을 위한 스트림 데이터 구조는 각 데이터 스트림에 대한 데이터를 인코딩하는 비트 속도를 포함할 수 있다.
데이터 소스는 비디오 데이터 스트림들 중의 하나와 비디오 데이터 스트림들 중의 다른 것 사이에서 스위칭하기 위한 복수의 스위칭 지점을 정의하는 스위칭 스트림을 추가로 포함할 수 있으며, 스위칭 데이터 스트림을 위한 데이터 스트림 구조는 비디오 스트림들에 대한 데이터와 스위칭이 가능한 시작 및 끝 패킷들에 데이터를 포함한다.
데이터 구조의 헤더는 마지막 스트림 데이터 구조에 대한 링크를 포함할 수 있다. 스트림 데이터 구조의 헤더는 인코딩된 데이터 스트림의 마지막 패킷에 대한 링크를 포함할 수 있다.
본 발명은 변화하는 네트워크 상태에 따라 압축 비디오의 전송 비트 속도를 스케일링하는 것을 허용한다.
설명된 시스템에서, 제작된 오디오-비주얼 스트림은 고정된 단일 비트 속도로 전송될 필요가 없으며, 그리하여 데이터 구조는 네트워크가 순간적으로 지원하는 어떠한 속도에서의 전송도 허용하는 이것을 지원해야만 한다.
시스템과 데이터 구조는 GPRS 네트워크 상에서 잘 동작하며, 이용가능한 네트워크 대역폭을 충분히 이용하고, 만족스러운 멀티미디어 품질을 제공함을 보여주었다.
시스템과 데이터 구조는 IP 네트워크, 특히 모바일 IP 네트워크의 특성을 극복하며, 일정한 품질의 멀티미디어를 갖는 사용자에게 최소의 시동 지연을 제공하도록 설계되었다.
본 발명의 예는 아래의 첨부된 도면을 참조하면서 상세히 설명될 것이다.
도 1은 본 발명에서 사용되는 오디오-비주얼 데이터 스트리밍 시스템의 도식도;
도 2는 도 1의 시스템에서 사용된 비디오 인코딩 계층구조의 도식도;
도 3은 성취될 비디오 스트림들 사이에서 미스매치가 없는 스위칭을 허용하는 비디오 인코딩 아키텍처의 도식도;
도 4는 도 1의 시스템에서 사용되기에 적합한 클라이언트-서버 아키텍처의 도식도;
도 5a와 5b는 각각 도 1의 시스템에 대해 구현된 구조의 변동과 표준 TKPT 전송 패킷 수송 구조를 예시하는 다이어그램; 및
도 6a 내지 6c는 본 발명의 실시예에 따른 오디오-비주얼 데이터 스트림을 포함하는 데이터 구조의 양상들을 예시하는 도식도이다.
도 1은 본 발명의 실시예에서 사용되는 오디오-비주얼 데이터 스트리밍 시스템의 도식도
서버(10)는 인코딩된 멀티미디어 콘텐트를 직접 인코더(20)로부터 또는 파일(30)로부터 수신하며, 이 콘텐트를 하나 이상의 클라이언트(40-60)에 서비스한다. 서버(10)는 그것이 거의 아무런 프로세싱도 수행하지 않는 동안에 독립적으로 콘텐트의 많은 부분을 액세스하는 많은 클라이언트(40-60)를 지원하기 위해 스케일링하며, 온워드(onward) 전송을 위한 패킷들을 단지 선택한다. 매체에 대한 어떠한 인코딩이나 트랜스코딩도 서버(10)에서 수행되지 않는다.
원칙적으로, 서버(10)는 인코더(20)로부터 제공되고 양쪽의 라이브 스트림에 대해 그리고 파일(30)로부터의 프리(pre)-인코딩된 스트림에 대해 동일한 방식으로 동작한다. 이러한 특별한 실시예에서, 라이브 매체의 스트리밍이 설명된다. 프리-인코딩된 파일로부터의 매체를 스트리밍하는 것에서의 차이점은 차후의 실시예에서 설명된다.
서버(10)는 다수의 원형 버퍼(70-90)를 포함한다. 각각의 클라이언트(40-60)에 대해 패킷 전송기(100)의 하나의 실례가 있다. 패킷 전송기(100)는 언제 그리고 어느 버퍼(70-90)로부터 다음번 패킷이 판독될 지를 결정하고, 선택된 패킷을 판독하며 그것을 네트워크 연결(110)을 통해 개개의 클라이언트에게 전송한다.
서버(10)로부터 각각의 개별 클라이언트(40-60)까지의 반신뢰성있는(semi-reliable) 네트워크 연결(110)은 거의 모든 패킷이 수신됨을 보장하기 위해 필요하며, 그리하여 사용자가 인식하는 품질에 있어서의 혼란을 최소화한다. 그러므로, 버퍼(120, 130)는 네트워크 연결(110)의 개별 끝단에서 사용되어 손실된 패킷의 재전송을 허용한다. 네트워크 연결(110)은 또한 네트워크 친화적으로, 즉 정체가 경험되지 않을 때는 사용되는 비트 속도가 증가하도록 하고, 정체가 발생할 때는 극적으로 감소하도록 하는 것이 요구된다.
시스템 구성요소들이 예시되고 통합되고 분리된 구성요소들의 조합으로서 설명되지만, 상이한 구성이 사용될 수도 있음이 이해될 것이다. 예를 들면, 외부 인코더(20) 및/또는 파일 저장장치(30)가 사용될 수 있다. 동등하게, 버퍼(130)는 클라이언트 장치(40-60)에 통합될 수 있다.
도 2는 도 1의 시스템에서 사용된 비디오 인코딩 계층구조의 도식도이다. 인코더(20)는 라이브 또는 저장된 멀티미디어 콘텐트를 탄력적으로 인코딩된 화상으로 인코딩한다. 오디오는 단일 인코딩된 비트 스트림으로 낮은 비트 속도로 인코딩되며, 그리하여 그 자체로서는 비탄력적이다. 그러나, 오디오는 일반적으로 비디오 보다 작은 비트 속도를 필요로 하기 때문에, 만약 비디오가 탄력적인 방식으로 인코딩되면, 오디오와 비디오의 결합 인코딩은 탄력적이라고 간주될 수 있다.
오디오는 AMR(Adaptive Multi-Rate) 인코더를 사용하여 4.8kbit/s로 인코딩된다. 비디오는 탄력적인 화상으로 인코딩된다. 레이어링과 유사한 방식으로, 인코더(20)는 독립적인 비디오 스트림의 계층구조를 생성한다. 각 스트림을 계층구조에서 보다 낮은 모든 스트림에 종속적으로 만듦으로써 이러한 계층구조를 설립하는 대신에, 각 스트림은 독립적으로 인코딩된다. 그러한 계층구조는 잘 알려져 있으며, '동시방송(simulcast)'이라고 지칭된다.
오디오 데이터는 낮은 비트 속도 AMR 스킴을 사용하여 인코딩되는 것으로 설명되었지만, 다른 AMR 인코딩 속도 및 MP3와 같은 다른 인코딩 표준이 또한 지원될 수 있다. 다양한 속도로 인코딩된 오디오는 비디오에 대해 아래에서 설명되는 것과 유사한 방식으로 독립적인 스트림의 계층구조로 조직될 수 있다. 그러나, 각 오디오 프레임이 일반적으로 독립적으로 코딩된다는 사실로부터 인코딩된 화상들 사이의 스위칭은 보다 간단하다.
ITU-T 표준 H.263으로의 연장을 사용하여 생성된 비디오 계층구조는 비디오 스트림에 대한 랜덤 액세스를 허용하기 위한 인트라 스트림(200)과, 콘텐트에 대한 일상적인 열람을 위한 하나 이상의 플레이 스트림(210a, 210b)을 포함한다. 각각의 플레이 스트림(210a, 210b)은 상이한 비트 속도로 인코딩되며, 그리하여 주어진 클라이언트(40-60)로 하여금 서버(10)로의 현재 네트워크 연결(110)에 적합한 속도로 수신하는 것을 허용한다. 계층구조는 인트라 스트림(200)으로부터 최저 속도 플레이 스트림(210a)으로의 스위칭과 플레이 스트림들간의 스위칭을 허용하는 스위칭 스트림(220, 230, 240)을 또한 포함한다.
인코딩 알고리듬은 움직임-보상 예측을 이용하기 때문에, 플레이 스트림에서 임의의 지점에서의 비트스트림들간의 스위칭은, 비록 가능하다고는 해도, 상이한 비트 스트림의 동일한 시간 순간에서 재구성된 프레임들간의 불일치로 인한 시각적인 결과물로 귀결될 것이다.
현재의 비디오 인코딩 표준에서, 비트 스트림 사이의 완전한(불일치가 없는) 스위칭은 미래 프레임/영역이 현재의 스위칭 지점 이전의 어떤 정보를 사용하지 않는 위치에서만, 즉 액세스 픽처에서만 가능하다. 또한, 액세스 픽처를 고정된(예를 들면, 1초) 구간에 위치시킴에 의해, 스트리밍 비디오 콘텐트에 대한 랜덤 액세스나 "빨리 감기" 및 "뒤로 감기"(증가된 재생 속도)와 같은 VCR 기능들이 성취된다. 사용자는 비디오의 일부를 건너 뛸 수 있으며, 임의의 액세스 픽처 지점에서 재생을 다시 시작할 수 있다. 유사하게, 증가된 재생 속도, 즉 빨리감기는 단지 액세스 픽처만을 전송함에 의해 성취될 수 있다.
그러나, 액세스 픽처는 움직임-보상 예측된 프레임보다 더 많은 비트를 필요로 함이 잘 알려져 있다. 그리하여, 인트라 스트림(200)과 스위칭 스트림(220, 230, 240)이 사용된다. 스위칭 스트림의 주요 특성은 상이한 기준 프레임들이 사용될 때 조차도 동일한 픽처들이 얻어질 수 있다는 것이다.
계층구조의 주요 목적은 서버(10)로 하여금 플레이 스트림(210a 또는 210b)을 클라이언트(40-60)로 전송하는 것을 허용하여 패킷 손실과 네트워크 스루풋에서의 갑작스러운 저하에 대한 탄력성을 제공하기 위해 클라이언트(40-60)에서 수신되는 데이터의 버퍼를 만드는 것과, 네트워크 연결(110)의 순간적으로 지원하는 최고의 비트 속도에 따라 클라이언트(40-60)에 최선의 플레이 스트림(210a 또는 210b)를 제공하는 것 사이에서의 최적의 균형을 성취하는 것이다.
인트라 스트림(200)은 심각한 에러 상태로부터의 복구와 랜덤 액세스를 제공하기 위해 사용되는 일련의 인트라 코딩된 픽처(201, 202)이다. 플레이 스트림(210a, 210b)은 양방향으로 예측될 수 있는 예측적으로 코딩된 픽처(211a, 212a, 213a, 214a, 215a; 211b, 212b, 213b, 214b, 215b)를 포함하며, 다수의 기준 화상으로부터 예측될 수 있다. 플레이 스트림(210a, 210b)은 주기적 액세스 픽처(216a, 217a; 216b, 217b)를 또한 포함한다. 스위칭 스트림(220, 230, 240)은 일련의 연결 픽처(221, 222; 231, 232; 241, 242)로 구성된다.
원형 버퍼(70-92)는 각각의 스트림 유형에 대해 지정되며, 각각의 인트라(70), 플레이(80, 95) 및 콘텐트의 각 부분에 대한 스위칭(90, 91, 92) 스트림에 대해서 하나씩이다.
우선 클라이언트(40)가 서버(10)에 연결될 때, 서버(10)는 인트라 스트림을 저장하고 있는 원형 버퍼(70)로부터 적절한 인트라 픽처(예를 들면, 인트라 픽처(201))를 찾아내며, 이것을 클라이언트(40)로 전송한다. 서버(10)는 이후 최저의 인코딩 비트 속도로 인트라 스트림(220)으로부터 플레이 스트림(210a)으로 스위칭하기 위한 연결 픽처(221)를 선택하고, 이후 그 플레이 스트림(213a 전방)으로부터 서비스를 계속한다.
클라이언트(40)로의 패킷의 전송은 독립적인 프로세스이며 사용된 전송 프로토콜과 네트워크의 상태에 따른 전송 속도를 갖는다. 그러나, 의도는 다음과 같다. 즉, 최초에 전송 속도는 최저 인코딩 비트 속도를 갖는 플레이 스트림(210a)의 인코딩 비트 속도보다 더 크다. 이것은 클라이언트(40)로 하여금 디코딩을 개시하고 데이터가 수신되고 디코딩되는 지점에서 즉시 사용자에게 매체를 상연하는 것을 허용하며, 동시에 클라이언트(40)로 하여금 디코딩 버퍼에 과도하게 압축된 매체 데이터를 쌓아 놓는 것을 또한 허용한다.
액세스 픽처(위의 예에서의 액세스 픽처(217a)와 같은)의 지점에서, 클라이언트(40) 및/또는 서버(10)는 상이한 플레이 스트림이 보다 적합하다고 판정할 수 있다(예를 들면 증가된 또는 감소된 네트워크 용량에 기인하여). 위의 예에서, 낮은 속도 플레이 스트림(210a)으로부터 보다 높은 속도 플레이 스트림(210b)으로의스위칭은 서버(10)가 액세스 픽처(217a) 대신에 연결 픽처(232)를 전송함으로써 성취된다. 연결 픽처(232)는 보다 높은 속도 플레이 스트림(210b)의 플레이 스트림 픽처(215b)에 연결되며 클라이언트(40)로 하여금 그 플레이 스트림을 수신하는 것을 허용한다. 감소된 비트 속도의 플레이 스트림으로의 스위칭은 유사한 방식으로 성취된다.
연결 픽처를 인코딩하는 세가지 방법이 연구되어 왔다. 각 방법은 스위칭으로부터의 드리프트(drift)의 축적, 실제 스위칭의 비트 속도에 관한 비용, 및 드리프트가 없는 낮은 비트 속도 스위칭을 허용하는 유형의 통상적 픽처를 인코딩함으로써 야기되는 개개 플레이 스트림의 품질에 대한 영향 사이에서의 상이한 타협을 제공한다.
1. 예측적으로 코딩된 연결 픽처
제 1 방법에서, 연결 픽처는 예측된 픽처로서 생성된다. 그것들은 재구성될 때 목적지의 플레이 스트림에 있는 동시적인 액세스 픽처의 재구성과 예를 들면 작은 평균 제곱 차이를 갖는다는 점에서 유사하게 되는 방식으로 코딩된다. 액세스 픽처는 예측된 픽처로서 코딩될 수 있다. 연결 픽처를 인코딩하는데 사용되는 비트의 갯수는 재구성된 연결 픽처가 재구성된 액세스 픽처와 얼마나 잘 일치하는가를 결정하며, 그리하여 스위칭의 결과로서 발생할 드리프트의 양을 결정한다. 그러나, 드리프트는 각각의 스위칭의 발생에 대해 축적될 것이다.
2. 인트라 코딩된 연결 픽처
제 2 방법에서, 연결 픽처는 인트라 픽처로서 생성된다. 그것들은 재구성될때 목적지의 플레이 스트림에 있는 동시적인 액세스 픽처의 재구성과 예를 들면 작은 평균 제곱 차이를 갖는다는 점에서 유사하게 되는 방식으로 코딩된다. 액세스 픽처는 예측된 픽처로서 코딩될 수 있다. 연결 픽처를 인코딩하는데 사용되는 비트의 갯수는 재구성된 연결 픽처가 재구성된 액세스 픽처와 얼마나 잘 일치하는가를 결정하며, 그리하여 스위칭의 결과로서 발생할 드리프트의 양을 결정한다. 그러나, 주어진 불일치의 양에 대해서, 인트라 코딩된 연결 픽처는 대개 예측적으로 코딩된 연결 픽처보다 더 많은 비트를 필요로 할 것이다. 연결 픽처에 대한 인트라 코딩의 사용은 드리프트의 축적을 방지한다.
3. 양자화된-소스 코딩된 연결 픽처
제 3 방법에서, 연결 픽처는 "ITU-텔리커뮤니케이션 표준화 섹터 비디오 코딩 전문가 그룹의 12번째 회의에 Marta Karczewicz와 Ragip Kurceren에 의해 제출된 VCEG-L27, SP-프레임을 위한 제안: Eibsee, 독일, 2001년 1월 9-12일, ftp://standard.pictel.com/video-site/에서 이용가능함"에서 설명된, 이하 양자화된-소스 픽처로서 지칭되는 개념에 기초한 기술로써 코딩된다.
양자화된-소스 픽처에 대한 인코딩 아키텍처는 도 3에 도시되어 있다. 소스 픽처와 움직임 보상된 예측은 동일한 양자화 지수에 의해서 각각 단계(300 및 310)에서 독립적으로 양자화되고, 단계(320)에서 감산되고 단계(330)에서 가변 길이 인코딩되기 이전에 변환된다. 재구성된 픽처는 단계(340)에서 감산기(320)의 출력과 양자화 및 변환(310)의 출력을 더함에 의해, 그리고 단계(350)에서 그 결과를 역변환하고 역양자화함에 의해 형성된다. 재구성된 픽처는 픽처 저장장치(360)에 저장된다. 그 결과는 재구성된 픽처가 단순히, 양자화된 소스 픽처이며, 움직임 보상된 예측에 독립적이라는 것이다. 따라서, 주어진 소스 픽처는 상이한 기준 픽처들로부터 예측될 때 동일하게 재구성될 수 있으며, 따라서 드리프트가 없는 스위칭이 가능해 진다. 움직임 보상된 예측은 무관하지 않은데, 왜냐하면 그것은 가변 길이 인코딩될 신호의 엔트로피를 감소시키고, 따라서 픽처를 인코딩함으로써 제작된 비트들의 갯수를 감소시키기 때문이다.
액세스 픽처는 연결 픽처와 동일한 코딩 모드, 인트라 혹은 인터의 선택과 양자화기 선택을 통해 양자화기-소스 픽처로서 또한 코딩된다. 이것은 연결 픽처가 목적지 플레이 스트림에 있는 동시적인 액세스 픽처와 동일하게 재구성되는 것을 보장한다.
연결 픽처를 인코딩하는데 요구되는 비트의 갯수는 상응하는 액세스 픽처의 인코딩에 의해 결정된다. 액세스 픽처를 인코딩하는데 사용되는 비트의 갯수는 양자화가 어떻게 수행되느냐에 의존하지만, 일반적으로 예측된 픽처를 인코딩하는데 사용되는 비트의 갯수보다는 더 많고 인트라 픽처를 인코딩하는데 사용되는 비트의 갯수보다는 더 적다. 이것은 인코딩이 예측의 사용으로 인해 인트라 인코딩보다 더 효율적이지만, 예측 에러의 양자화에 기인하여 정상적인 예측보다 효율적이지는 못하기 때문이다. 따라서 양자화된-소스 픽처의 사용은 드리프트가 없는 스위칭을 허용하지만 플레이 스트림의 덜 효율적인 인코딩이라는 비용이 든다.
양자화된-소스 픽처는 예측된 픽처와 동일하게 H.263 신택스(syntax)로써 인코딩되며, MPPTYPE의 처음 세 비트를 유보된 값인 "110"로 설정함으로써 예측된 픽처로부터 그것들이 구별된다는 차이가 있다.
양자화된-소스 픽처의 주기적인 인코딩은 픽처의 정적인 영역에 비팅(beating) 효과를 야기할 수 있다. 이것은 다음과 같이 설명된다. 보통의 예측적 코딩에서, 이미 소스 픽처의 합리적인 화상으로서 인코딩된, 픽처의 정적인 영역은 변경되지 않는다. 양자화된-소스 픽처에 있는 그러한 영역의 인코딩에서, 예측은 양자화되어야 하며, 만약 그 픽처의 비정적인 영역에 대해 사용된 양자화기 지수로써 행해진다면, 그 예측은 그 영역을 변화시키며, 그리하여 아마도 그것을 더 악화시킬 것이고, 어쨌든 그것을 변화시킨다. 이러한 변화가 비팅 효과이다.
이것은 그 픽처의 영역에 대한 예측이 소스에 대한 충분히 양호한 화상을 제공할 때는 정보를 전송할 필요가 없으며, 따라서 그 영역을 변화시킬 필요가 없다는 점을 주목함으로써 극복된다. 그래서, 액세스 픽처가 양자화된-소스 픽처로서 인코딩될 때, 만약 픽처가 양자화된-소스 픽처 보다는 예측된 픽처로서 인코딩되었다면 그 영역에 대한 정보가 전송되었을 것인지를 판정하는 테스트가 수행된다. 만약 어떠한 정보도 전송되지 않았을 거라면, 단계(300, 310)의 양자화 및 단계(350)의 약양자화에 의해 사용된 양자화기 지수는 작은 값으로 설정되며, 일반적으로 예측 에러라고 알려진 감산기(320)의 출력은 영으로 설정된다. 그리하여, 새로이 재구성된 픽처의 이 영역은 세밀한 양자화기로써 양자화된 이전에 재구성된 픽처의 상응하는 영역과 동일하다. H.263 및 다른 표준에서, 양자화기 지수의 범위는 1(세밀)에서 31(조악)까지 이다. 작은 지수라 함은, 일반적으로 8 이하의 값을 의미한다. 이것은 재구성된 픽처에 대한 불필요한 변화를 최소화하면서 동시에 전송되어야만 하는 정보의 양을 최소화한다. 그러나 상응하는 연결 픽처의 비트 속도에서의 비용이 있을 것이며, 여기서 예측 에러는 아마 0이 되지 않을 것이지만, 동일한 세밀 양자화기가 사용되어야 한다.
도 4는 도 1의 시스템에서 사용되기에 적합한 클라이언트-서버 아키텍처의 도식도이다.
클라이언트(40)는 네트워크 버퍼(130), 디코딩 버퍼(41) 및 디코더(42)를 포함한다. 서버(10)는 전술한 바와 같은 원형 버퍼(70, 80, 90)를 포함하며, 패킷 전송기(100)와 각 클라이언트에 대한 네트워크 버퍼(120)를 포함한다.
클라이언트(40)는 디코딩 버퍼(41)에 있는 정보의 양과 데이터의 수신 속도를 서버(10)가 계속 알고 있도록 유지한다. 서버(10)는 이 정보를 이용하여 언제 플레이 스트림들 사이에서 스위칭할 것인지를 결정한다. 예를 들면, 클라이언트(40)가 디코딩 버퍼(41)에서 예를 들어 15초의 데이터라는 임계 데이터 보다 더 많이 축적하였고, 클라이언트(40)가 계층구조에서의 다음번 상위의 플레이 스트림의 인코딩 속도 이상의 속도로 수신하고 있을 때, 서버(10)는 클라이언트의 패킷 전송기(100)를 다음 연결 픽처에서 다음번 상위 플레이 스트림으로 스위칭할 수 있다.
유사하게, 클라이언트(40)에 의해 디코딩 버퍼(41)에 축적된 데이터의 양이 임계치 보다 적어질 때, 서버(10)는 클라이언트의 패킷 전송기(100)를 다음 연결 픽처에서 다음번 하위 플레이 스트림으로 스위칭할 수 있다.
전체적인 효과는 다음과 같다. 즉, 전송 속도는 네트워크에서의 정체의 상태에 따라 네트워크 친화적인 방식으로 변화하지만, 클라이언트의 디코딩 버퍼(41)에서의 데이터의 축적 때문에, 사용자는 전송 속도에서의 단기 변화의 결과로서의 품질 변화를 지각하지 못한다. 전송 속도에서의 보다 장기간의 변화는 상이한 인코딩 속도를 갖는 스트림으로 스위칭함에 의해 취급되며, 그리하여 네트워크가 그것을 허용할 때 증가된 품질을 허용하며, 그리고 네트워크 스루풋이 저하될 때 사용자에게 상연을 멈추거나 오염된 매체를 상연함이 없이 품질을 저하시킨다.
클라이언트에서의 디코딩 버퍼(41)는 사용자에게 상연되는 매체의 품질에 대한 네트워크 성능 변동의 영향을 감소시키기 위해 사용된다. 버퍼가 취급하도록 설계된 네트워크 특성은 세 가지 카테고리로 나뉘어진다: 패킷 지터, 패킷 손실 및 가변 스루풋. 실제에 있어서, 이들 세 가지 네트워크 특성은 독립적이지 않으며, 모두는 네트워크 정체와 연과되어 있고, 모바일 네트워크인 경우에는 물리적 레이어에서의 열화와 연관되어 있다.
전송 속도를 매체 인코딩 속도와 디커플링시킴으로써, 클라이언트의 디코딩 버퍼(41)는 네트워크의 상태가 양호할 때 채워질 수 있으며, 네트워크 상태가 그렇게 좋지 못하는 시간을 위한 탄력성을 제공한다.
디코딩 버퍼(41)에 수십초의 데이터를 축적하는 것은 동일한 크기의 패킷 지터(지연 변동)가 사용자로부터 숨겨지는 것을 허용한다. 실제에 있어서, 이것은 모든 패킷 지터를 숨기는데, 왜냐하면 더 큰 양의 지터는 일시적인 연결 드롭-아웃(drop-outs)으로 보다 잘 분류되기 때문이며, 이것은 아래에서 설명되는 에러 복구 프로세스에 의해 처리된다.
디코딩 버퍼(41)에 데이터를 축적함에 의해, 손실된 패킷들은 그것들이 디코딩에 필요해지기 전에 재전송하기 위한 시간이 이용가능하다. 또한, 다수의 왕복 지연보다 더 많은 데이터를 포함하도록 디코딩 버퍼(41)의 크기를 정함으로써, 패킷 손실로부터 회복하기 위한 약간의 재전송 시도를 위한 시간이 있다. 이것은 디코딩된 매체 품질에 영향을 미침이 없이 대부분의 패킷 손실 경우로부터의 회복을 허용하며, 연결을 반신뢰성 있게끔 만든다.
최종적으로 또한, 디코딩 버퍼(41)에 데이터를 축적함에 의해, 클라이언트(40)는 수신 비트 속도가 인코딩 비트 속도보다 더 작은 약간의 시간 동안, 그리고 수신 속도가 영으로 떨어지는 약간의 시간 동안, 일정한 매체 품질을 유지할 수 있다.
데이터가 인코딩 속도와는 독립적인 속도로 클라이언트(40)에게로 스트리밍되고 디코딩 버퍼(41)에 버퍼링됨에 따라, 데이터의 디코딩은 단순히 가능한한 빨리 디코딩되고 상연되기 보다는 정확히 시간이 맞추어지는 것이 필요하다. 타임스탬프는 오디오와 비디오의 동기화를 위해서 뿐만 아니라 이러한 목적을 위해서도 사용된다.
네트워크 변동 때문에, 바이트로 측정되는, 클라이언트의 디코딩 버퍼(41)에 있는 데이터의 양은 시간에 따라 변할 수 있다. 또한, 그것이 나타내는 매체 상연 시간의 길이에 대해 측정되는, 디코딩 버퍼(41)에 있는 데이터의 양도 또한 시간에 따라 변할 것이다. 이것은 라이브 콘텐트의 스트리밍에 영향을 미친다: 만약 클라이언트(40)에게로 전송된 첫번째 데이터가 그것이 캡처링되고 인코딩된 시간으로부터 최소한의 지연을 갖고서 전송된다면, 디코딩 버퍼(41)에 데이터를 쌓는 것은 가능하지 않다. 따라서, 클라이언트(40)에게로 전송되는 첫번째 데이터는 옛 데이터, 즉 클라이언트(40)가 서버에 연결되기 약간의 시간 전에 발생한 이벤트를 나타내는 데이터이어야만 한다. 이후, 디코딩 버퍼(41)가 채워짐에 따라, 그것에 있는 가장 최근의 데이터는 점점 더 최근의 것이 되며, 동시에 사용자에게 상연되는 매체는 실제 발생 시간으로부터 일정한 지연을 갖도록 유지된다.
서버 버퍼는 인코딩 후 일정한 시간 구간 동안, 클라이언트(40)가 서버(10)에 연결될 때, '옛' 데이터가 클라이언트(40)로의 스트리밍을 위해 이용가능하도록 원형 버퍼(70, 80, 90)에 있는 데이터를 인코딩한다. 클라이언트의 디코딩 버퍼(41)가 채워짐에 따라, 원형 버퍼(70, 80, 90)로부터의 판독 지점은 이들 버퍼에 있는 가장 최신 데이터에 점점 더 가까워진다.
원형 버퍼(70, 80, 90)와 클라이언트 디코딩 버퍼(41)의 최적의 크기는, 그것이 나타내는 매체 상연의 시간으로 측정될 때, 바람직하게는 각각이 동일한 양의 데이터를 포함할 수 있도록 하는 것이다.
서버(10)와 클라이언트(40)에 각각 있는 네트워크 버퍼(120, 130)는 반신뢰성있는 데이터 연결을 구현하는 수송 프로토콜에 의해 사용된다. 일반적으로, 데이터는 그것과 모든 이전 데이터가 클라이언트(40)에 수신되었다는 수신통지를 받기 전까지는 서버의 네트워크 버퍼(120)에 보존된다. 유사하게, 데이터는 그것과 모든 이전 데이터가 성공적으로 디코딩 버퍼(41)에 수신되고 전달되었을 때 클라이언트의 네트워크 버퍼(130)로부터 제거될 것이다. 결론적으로, 서버(10)는 자신의 네트워크 버퍼(120)에 보존된 데이터를 알고 있음으로써, 단방향 전송 지연에 의해주어진 제한 내에, 어떤 데이터가 클라이언트(40)에 의해 성공적으로 수신되었는지를 안다.
이것은 클라이언트(40)에 의해 얼마나 많은 데이터가 수신되었는지를 서버(10)가 알기 위해서는 수송 프로토콜 자체에 의해 요구되는 것 이외에 클라이언트(40)으로부터 서버(10)로의 어떠한 피드백도 필요하지 않으며, 그리하여 그것은 플레이 스트림들 사이의 스위칭에 대한 결정을 내릴 수 있음을 의미한다.
클라이언트의 디코딩 버퍼(41)에 있는 데이터의 축적의 존재는 지터, 패킷 손실 및 가변 스루풋과 같은 다수의 네트워크 결함에 대한 탄력성을 제공한다. 명확하게, 디코딩 버퍼(41)가 전체 매체 콘텐트를 보유하도록 그 크기가 정해지지 않고, 모든 데이터가 수신될 때까지 상연이 지연되지 않는다면, 모든 네트워크 결함으로부터 회복하는 것은 가능하지 않다. 이러한 경우는 스트리밍이 아니고 다운로드이므로, 심각한 네트워크 결함을부터의 회복 전략이 필요하다.
네트워크 스루풋이 상당한 시간 동안 최저 속도 플레이 스트림의 인코딩 속도 아래 수준으로 내려가는 시간에, 디코딩 버퍼(41)에 있는 데이터의 양은 감소할 것이고 결국은 영이 될 것이다. 이러한 시간에, 사용자에 대한 상연은 정지할 것이다. 그러나, 원형 버퍼를 채우는 동작은 서버(10)에서 계속될 것이다. 결과적으로, 네트워크가 최저 속도 플레이 스트림의 전송이 다시 가능한 상태로 회복될 때, 클라이언트(40)에 의해 요구되는 다음 데이터는, 그것이 보다 최신의 데이터에 의해 덮어씌어졌을 것이기 때문에, 아마도 대개의 경우는 서버의 원형 버퍼(70, 80, 90)에 있지 않을 것이다.
이러한 상황으로부터 회복하기 위해, 서버(10)는 마치 새로운 연결이 클라이언트로부터 만들어진 것처럼 스트리밍을 재시작해야 한다: 그것은 인트라 스트림에서 한 지점을 발견해서, 그것으로부터 스트리밍을 시작하고, 이후 연결 스트림을 통해 최저 속도 플레이 스트림으로 스위칭해야 한다. 사용자에 대한 영향은 디코딩 버퍼(41)가 비워진 시간부터 서버가 인트라 스트림을 전송하는 시간까지의 매체의 손실일 것이다.
서버(10)는 클라이언트의 디코딩 버퍼(41)가 비워짐을 인지할 것인데, 왜냐하면 그것은 클라이언트가 디코딩을 시작한 때와 얼마나 많은 데이터가 성공적으로 수신되었는지를 알고 있기 때문이다. 따라서 그것은 클라이언트로부터의 특정 메시지가 필요없이 인트라 스트림 픽처에서 재시작할 수 있을 것이다. 그러나, 시스템에 탄력성을 제공하기 위해서는, 예를 들면 서버와 클라이언트에서의 상이한 클락 속도의 영향으로부터 회복하기 위해서는, 이러한 상황에서 클라이언트(40)로부터 서버(10)로 제어 메시지가 전송된다.
원칙적으로, 파일로부터의 스트리밍은 라이브 스트리밍과 동일하다. 실제에 있어서, 그것은 다소 더 간단하다. 데이터는 필요한 때 필요한 바대로 파일로부터 읽혀질 수 있기 때문에 원형 버퍼(70, 80, 90)에 대한 필요가 없다. 그러나 서버(10)는 클라이언트(40)에서의 디코딩 버퍼(41)를 채우고 플레이 스트림들 사이에서 스위칭하기 위해 동일한 기술을 사용한다. 디코딩 버퍼(41)가 비게 되는 경우에, 인트라 스트림 픽처를 갖는 콘텐트에서의 나중 지점에서 재시작할 필요는 없는데, 왜나하면 상연은 네트워크 스루풋이 다시 충분히 될 때 재개될 수 있기 때문이다:사용자는 단순히 어떠한 매체도 상연되지 않는 구간을 인식한다.
빨리 감기, 되감기 및 랜덤 액세스와 같은 트릭 모드는 인트라 스트림의 사용에 의해 가능해 진다.
덮어씌어지기 바로 전에 원형 버퍼(70, 80, 90)에 '옛' 데이터를 쓰는 것에 의해, 디코딩 버퍼(41)가 비게 되고, 인트라 스트림 픽처에 의해 회복이 발생하기 전까지 사용자가 콘텐트를 놓치는 전술한 문제는 회피될 수 있는데, 왜냐하면 클라이언트에게로 스트리밍하기 위한 데이터는 항상 이용가능할 것이기 때문이다: 그것은 원형 버퍼(70, 80, 90)로부터 보다는 파일로부터 읽혀져야 할 것이다.
그러한 기능은 또한 클라이언트로 하여금 상연 중인 매체를 정해지지 않은 시간 동안 일시 멈추게 하고, 나중에 스트리밍을 계속하는 것을 허용한다. 그것은 또한 사용자로 하여금 일시멈춤 후에 라이브 스트림을 따라잡기 위해 빨리 감기를 하는 것을 허용할 것이다.
전술한 클라이언트-서버 아키텍처에서 시험된 수송 프로토콜의 구현은 ISO TCP 수송 프로토콜 TKPT에 기초하는데, 이것은 RFC-2126에 있는, Y. Pouffary에 의한 "ISO Transport Service on top of TCP(ITOT)"에 상세히 설명되어 있다.
표준 TPKT 프로토콜은 도 5a에 예시된 헤더를 정의하며, 그 뒤에 페이로드(payload)가 따른다. 패킷 길이는 8단위로 헤더 및 페이로드의 결합 길이를 나타낸다.
본 발명을 위해 사용된 구현예에서, TPKT는 헤더를 갖도록 연장되며, 그것의 예는 도 5b에 예시되어 있으며, 그 뒤에 페이로드가 따른다. 패킷 길이는 8단위로헤더, 만약 존재한다면 타임스탬프, 및 페이로드의 결합 길이를 나타낸다. T는 타임스탬프가 존재하는 비트를 가리키며, M은 페이로드가 오디오 또는 비디오 정보를 포함하고 있는지를 가리키는 비트이다.
전술한 바와 같이, 타임스탬프는 데이터 디코딩의 정확한 타이밍을 위해 필요하다. 패킷 헤더에 임베딩된 정보는 패킷의 길이, 패킷에 있는 데이터에 대한 타임스탬프, 스트림 식별자를 포함한다.
스트림 식별자는 오디오 및 비디오가 단일 TCP 연결내로 다중화되는 것을 허용하기 위해 제공된다. 이것은 오디오와 비디오 전송의 동기화를 보장한다. 만약 분리된 TCP 연결들이 사용된다면, 네트워크 특성에 대해 다소 상이하게 응답하고 상이한 스루풋을 성취하는 것이 가능할 것인데, 이는 결과적으로 클라이언트의 디코딩 버퍼에 있는 매우 상이한 양의 데이터(상연 시간으로 측정된)로 귀결될 것이다. 비록 이러한 차이는 관리될 수 있지만, 그 문제는 단일 TCP 연결을 이용하고 이웃 패킷에서 동일한 상연 시간을 갖는 오디오와 비디오를 다중화함으로써 완전히 회피될 수 있다. 사실, 비디오만 있는 시스템에 오디오 부가하는 것은 관련된 비디오와 동일한 시간에 오디오 패킷을 전송할 것을 요구한다: 추가적인 어떠한 제어도 필요하지 않는다.
서버(10)는 가능한한 빨리 패킷을 전송하려 시도한다. 초기에, 다수의 패킷은 네트워크 용량에 상관없이 백-투-백(back-to-back)으로 전송되어, 서버의 네트워크 버퍼(120)에 단순히 쌓인다. 네트워크 버퍼(120)가 꽉 찰 때, 패킷이 네트워크 버퍼(120)로 전송될 수 있는 속도는 네트워크를 통한 전송 속도와 일치하며, 전송 프로세스는 소켓 전송 기능에 대한 콜(call)을 차단함에 의해 제한된다.
전송 속도는 또한 클라이언트에서 버퍼링되는 데이터의 양이 임계치, 예를 들면 30초에 도달할 때 제한된다. 클라이언트의 디코딩 버퍼(41)가 이러한 양의 데이터를 가지고 있을 때, 서버(10)는 이러한 수준의 차 있는 정도를 유지하기 위해 전송 속도를 제한한다.
네트워크 스루풋은 네트워크 버퍼(120)에 전송된 바이트를 세고, 이 값에서 네트워크 버퍼의 크기를 빼고, 전송 개시로부터의 시간으로 나눔으로써 추산된다. 네트워크 스루풋의 단기 추산치는 전송된 바이트에 대한 2회의 계산과 그것들을 전송하는데 소요된 시간에 대한 2회의 측정을 이용하여 계산되는데, 한 쌍으로부터는 스루풋을 계산하고, 주기적으로 그들 사이에서 스위칭하며, 더 이상 사용되지 않는 쌍을 영으로 재설정한다. 예를 들면, 만약 재설정이 매 200초마다 일어난다면, 네트워크 스루풋은 재설정 직후 200초 후부터 다시 재설정하기 40초 전까지의 구간 동안에서 추산된다.
이러한 기술은 서버(10)가 가능한한 빨리 스트리밍을 시도하고 있다면 만족스럽게 작동한다. 그러나, 전술한 바와 같이, 디코딩 버퍼(41)에 있는 데이터의 양이 임계치를 초과한다면, 서버(10)는 일정한 버퍼 충만도를 유지하기 위해서 전송 속도를 제한한다. 이 경우, 네트워크 스루풋은 현재 플레이 스트림의 인코딩 비트 속도로서 추산될 것이다. 이러한 상태에 있을 때, 네트워크는 현재 스트리밍되고 있는 것보다 더 높은 속도의 플레이 스트림을 전송할 수 있을 것이지만, 서버(10)는 자신의 속도 제한 때문에 네트워크 스루풋에 대한 엄밀한 추산을 할 수 없기 때문에 스위칭하지 않는다. 이러한 상태로부터 탈출하기 위해서, 서버는 클라이언트 디코딩 버퍼 충만도 임계치를 주기적으로 무시할 것이며, 주어진 시간 구간 동안에 또는 주어진 데이터 양에 대해서 최대 속도로 스트리밍할 것이다. 그것은 네트워크 버퍼(120)에 전송된 바이트의 갯수와 걸린 시간을 기록하는데, 전송 기능에 대한 콜을 차단함에 의해 검출되는 바, 네트워크 버퍼(120)가 완전히 차는 때에 시작한다. 이후 그것은 성취가능한 스루풋을 추산하며, 보다 높은 속도의 플레이 스트림으로 스위칭할지 여부를 판정하기 위해 그것을 이용한다.
전술한 바와 같이, 네트워크 버퍼(120)에 간직되어 있는 데이터를 알고 있음으로써, 서버(10)는 어떤 데이터가 클라이언트(40)에 의해 수신되었으며 디코딩 버퍼(41)에 전달되었는지를 암시적으로 안다. 이러한 정보는 이후 언제 플레이 스트림들 사이에서 스위칭할 것이며, 언제 에러 복구 프로시져를 불러일으킬 것인지를 판정하는데 사용될 수 있다. 그러나, 대개의 소켓 구현에서 서버의 네트워크 버퍼(120)의 충만도와 콘텐트에 대한 가시성은 지원되지 않는다. 네트워크 버퍼(120)의 콘텐트를 모니터링하기 위해서, 미러 버퍼(120a)가 구현된다. 미러 버퍼(120a)는 네트워크 버퍼(120)로 전송된 실제 데이터를 저장하지 않으며, 대신에 전송된 데이터의 갯수와 데이터의 타임스탬프를 저장한다. 네트워크 버퍼(120)의 크기를 알고 있기 때문에, 그리고 그것이 항상 차 있다고 가정하기 때문에, 서버(10)는 미러 버퍼(120a)를 통해 네트워크 버퍼(120)에 있는 가장 오래된 데이터의 타임스탬프에 대한 액세스를 가지며, 여기서 미러 버퍼는 클라이언트의 디코딩 버퍼(41)에 있는 가장 최신의 데이터의 타임스탬프와 거의 동일하다.
테스트에서, 서버(10)에서의 네트워크 버퍼(120)가 항상 차 있다는 가정은 대개의 경우 정확하다는 것이 발견되었다. 이것은 전송 프로세스는 네트워크 버퍼(120)로 가능한한 빨리 전송하게끔 제어되기 때문이다. 만약 네트워크 버퍼(120)가 덜 충만하게 된다면, 그 효과는 클라이언트(40)에서의 데이터의 양을 과소평가하는 것이며, 이것은 대개의 경우에는 안전한데, 왜냐하면 주요 문제는 오버플로우보다는 클라이언트(40)에서의 데이터의 고갈로 간주되기 때문이다. 실제에 있어서, 디코딩 버퍼(41)는 저장될 필요가 있는 가장 큰 양의 데이터보다 더 크게 그 크기가 정해질 수 있다. 어떤 경우에, 만약 디코딩 버퍼(41)가 충만하게 된다면, 클라이언트(40)는 네트워크 버퍼(130)으로부터 읽기를 중단하며, 이는 다시 서버 네트워크 버퍼(120)가 비게 되는 것을 방지하고 전송은 중단된다.
클라이언트의 디코딩 버퍼(41)에 있는 데이터의 정확한 양을 판정하기 위해서, 서버는 또한 클라이언트가 현재 디코딩하고 상연하고 있는 데이터 패킷의 타임스탬프를 알 필요가 있다. 서버(10)는 두 가지 가정을 이용하여 이를 계산한다: 첫째, 클라이언트(40)는 서버(10)가 첫번째 패킷을 전송한 직후 디코딩을 시작한다; 둘째, 클라이언트의 클락은 스트리밍 기간 동안에 서버의 클락으로부터 크게 벗어나지는 않는다.
실제에 있어서, 두 가정은 유효한 것으로 알려졌다. 클라이언트(40)는 데이터를 수신하자 마자 디코딩을 시작하도록 설계되며, 그리하여 서버의 추산된 상연 시간에 있어서의 임의의 에러는 디코딩 버퍼(41)에 있는 데이터 양에 대한 과소평가로 귀결될 것인데, 이것은 위에서 설명된 바대로 문제가 안된다. 일반적인 스트리밍 세션 동안의 클라이언트 및 서버 클락간의 어긋남은 버퍼링되는 데이터의 양에 비하면 아마도 무시할 수 있을 것이다. 예를 들면, 100ppm(parts per million)의 차이를 가지는 경우, 1초의 어긋남이 발생하는 데는 10000초, 거의 3시간이 걸릴 것이다. 많은 양의 어긋남이 축적되는 드문 경우에, 클라이언트(40)는 전술한 바와 같이, 디코딩 버퍼 언더플로우에 대해 전송되는 것과 같은 제어 메시지를 사용함에 의해 서버(10)에게 경고할 수 있다.
서버(10)는 초기에 최저의 비트 속도로 플레이 스트림을 스트리밍하며, 그리하여 클라이언트(40)로 하여금 사용자에게 즉시 매체를 디코딩하고 상연할 수 있도록 하며, 동시에 또한 디코딩 버퍼(41)에 데이터의 수준을 쌓아 네트워크 결함에 대한 탄력성을 제공한다. 만약 네트워크가 보다 높은 속도의 플레이 스트림의 전송을 지원하기에 충분한 용량을 가진다면, 서버(10)는, 적절한 시간에, 보다 높은 속도의 플레이 스트림으로 스위칭해야 한다.
언제 보다 높은 속도의 플레이 스트림으로 스위칭할 것인지를 결정하는데 사용될 수 있는 많은 가능한 전략이 있다. 바람직하게는, 클라이언트(40)는 소정의 시간 구간 동안에, 예를 들면 15초 동안 매체를 디코딩하고 상연하는 것을 계속할 수 있기 위해서는 디코딩 버퍼(41)에 충분한 데이터를 가지고 있어야 한다. 또한, 다음이 바람직하다. 즉, 가장 최근 60초 동안에 측정되고 최근 과거에 성취된 네트워크 스루풋은 무기한으로 스위칭되도록 플레이 스트림의 스트리밍을 유지하기에 충분해야만 한다; 즉, 최근에 성취된 네트워크 스루풋 속도는 플레이 스트림의 비트 속도 이상이어야 한다. 목표는 스트림들간의 빈번한 스위칭을 피하는 것인데,왜냐하면 이것은 낮은 속도로 일정한 품질을 보여주는 경우보다 사용자에게 더 성가신 것이 될 수 있기 때문이다.
이러한 목적을 달성하기 위해서, 스위칭 다운 결정은 스위칭 업 결정에 히스테리시스한 관계를 포함하는 것이 바람직하다. 예를 들면, 다음번 낮은 속도 비트 플레이 스트림으로의 스위칭 다운은 특정한 시간 구간, 예를 들면 8초 동안에 매체를 계속해서 디코딩하고 상연할 수 있을 정도로 디코딩 버퍼(41)에 더 이상 충분한 데이터를 가지고 있지 않을 때 촉발될 수 있다. 세 개 이상의 플레이 스트림을 갖고, 현재 스트리밍되는 플레이 스트림이 세 번째나 훨씬 더 높은 속도의 플레이 스트림인 구성의 경우에, 이 전략은 계층구조의 바닥으로 즉시 떨어지는 결과를 낳지 않는데, 이는 액세스 픽처는 단지 주기적으로 발생하기 때문이며, 따라서 디코딩 버퍼 충만도는 제 2 스위칭 다운이 필요해지지 않도록 제 1 스위칭 다운 후에 회복되는 것이 바람직하다.
도 6a 내지 6c는 본 발명의 실시예에 따른 오디오-비주얼 데이터 소스를 저장하기 위한 데이터 구조의 양상들에 대한 도식도이다.
도 6a에 도시된 주요 데이터 구조는 다중 오디오 플레이 스트림, 인트라 비디오 스트림과 다중 비디오 플레이 및 스위칭 스트림을 단일 파일에 저장하는 것을 허용한다.
본 발명에서 생성되고 사용되는 오디오 비주얼 데이터 소스는 클라이언트에게 임의의 시간에 전송될 수 있는 다수의 인코딩된 스트림을 갖기 때문에, 종래의 시퀀셜 파일에 저장하는 것은 가능하지 않다. 예를 들면, 비디오의 경우에, 특정한 소스 픽처는 각각의 플레이 스트림에 인코딩될 수 있으며, 스위칭 스트림의 모두 또는 약간 및 인트라 스트림에 또한 인코딩될 수 있다.
파일은 데이터 구조를 포함하며, 그 예는 도 6a에 예시되어 있으며, 그 뒤를 스트림 데이터가 따른다. 데이터 구조는 스트림의 갯수와 유형(오디오, 비디오, 스위칭 등)에 대한 정보를 포함하는 헤드(600)를 포함한다. 각 유형의 스트림의 첫번째와 마지막 인스턴스(instance)에 대해서, 그것은 각 스트림에 대한 헤드에 대한 포인터들(610-680)(파일의 처음으로부터의 오프셋으로 표현됨)을 포함한다.
각 포인터(620-680)는 스트림 헤더(700)를 포함하는 스트림 데이터 구조를 가리키며, 스트림 헤더는 동일 유형의 다음번 스트림 헤더에 대한 포인터(710), 각각 스트림의 첫번째와 마지막 패킷에 대한 포인터(720, 730)를 포함한다. 각 스트림 유형은 특정 스트림 헤더 유형을 사용하지만, 어떤 요소들은 모든 스트림 헤더 유형에 공통이다: 스트림 식별 번호(705), 동일 유형의 다음번 스트림 헤더에 대한 포인터(710), 각각 스트림의 첫번째와 마지막 패킷에 대한 포인터(720, 730). 이들 공통 요소만을 포함하는 예시적인 스트림 헤더가 도 6b에 예시되어 있다. 플레이 및 오디오 스트림 헤더는 스트림이 인코딩된 비트 속도를 추가적으로 포함한다. 스위칭 스트림 헤더는 스위칭 스트림이 스위칭할 수 있는 플레이 스트림들의 스트림 식별자를 포함한다.
각 스트림은 패킷들의 시퀀스로 구성되며, 각각 패킷 데이터 구조에 의해 표현되는데, 그 예는 도 6c에 예시되어 있다. 각 패킷 데이터 구조는 패킷 헤더(800)와 페이로드(810)를 포함한다. 헤더는 스트림에 있는 다음 패킷에 대한 포인터(801), 타임스탬프(802), 패킷 시퀀스 번호(803), 패킷 크기(804), 프레임 번호(805)(즉, 아마도 다른 패킷들과 함께 그 패킷이 나타내는 비디오 픽처 또는 오디오 프레임의 시퀀스 번호)를 포함하는 데이터를 포함한다. 스위칭 패킷은 비트 속도 스위칭이 일어날 수 있는 플레이 스트림들에 있는 패킷들의 시퀀스 번호들을 추가로 포함한다. 스위치 스트림 패킷 헤더는 스위칭 지점을 효과적으로 정의하며, 스위칭하기 "전" 스트림으로부터 플레이되는 마지막 패킷의 시퀀스 번호와, 스위칭 "후" 스트림으로부터 플레이되는 첫번째 패킷의 시퀀스 번호를 포함한다. 시퀀스 번호는 0에서 시작하며, 결코 음수가 아니다. 포인터의 사용은 스위칭이 가능할 때 스트림들 사이에서의 내비게이션을 돕는다. 하지만, 이러한 접근은 이 특별한 실시예에서 사용되지 않았다.
마지막 스트림 데이터 구조와 마지막 패킷에 대한 포인터들은 파일에 첨부할 때 유용한데, 왜냐하면 그것들은 전체 파일을 통한 검색이 필요없이, 파일이 연장되어져 있어야만 하는 지점들에 대한 즉각적인 액세스를 제공하기 때문이다.
데이터 구조의 복잡성은 잠재적으로 많은 스트림들이 인터리브되는 것으로부터의 패킷들의 결과이며, 스위칭과 복구의 지원 필요의 결과이다. 패킷으로부터 패킷으로의 내비게이션은 일반적으로 한 스트림 내에서 연속적인 패킷들이 파일 내에서는 연속적으로 저장되지 않을 것이기 때문에 반드시 포인터들에 의한다. 스위칭 및 복구 패킷들을 쓰는 것은 소스 및 데스티네이션 패킷들의 정밀한 상세가 기록되는 것을 필요로 한다. 재생 동안에 스트림들간의 스위칭은 우선 다음번 이용가능한 스위칭 패킷의 식별을 필요로 하며, 이 후로 스위칭 "전" 스트림으로부터의잔여 패킷의 재생, 스위칭 패킷의 재생, 적절한 지점으로부터 스위칭 "후" 스트림으로부터의 패킷의 재생이 이어진다. 또한, 스트림들 사이에서 스위칭 할 때는 어떠한 상당한 지연도 없어야만 한다.
테스트에서, 파일-기반 및 라이브 스트리밍 시나리오는 BTCellnet™GPRS 네트워크를 이용하여 조사되었다. 데스크톱 펜티엄 PC가 인코더와 서버를 실행하기 위해 사용되었다. 클라이언트는 Motorola Timeport™GPRS 이동전화에 대한 적외선 링크를 통해 연결된 Compaq iPaq™이었다.
비디오만 있는 구성에서, 두 개의 스위칭 스트림이 사용되었으며, 6kbit/s와 12kbit/s의 비트속도였다.
시스템은 예상했던대로 수행하였다. 전송은 인트라 스트림으로 시작되고 이후 6kbit/s 플레이 스트림으로 스위칭되며, 여기서 약간의 시간동안 머물면서, 6kbit/s 보다 더 빠른 실제 전송의 결과로서 클라이언트에 데이터를 축적한다. 이후, 충분한 데이터가 축적되었을 때, 단기 평균 수신 속도는 12kbit/s 이상이며, 그것은 더 높은 속도의 플레이 스트림으로 스위칭한다.
긴 세션 동안에, 때때로 더 낮은 속도의 플레이 스트림으로 다시 스위칭이 일어나는데 이는 감소된 네트워크 스루풋의 결과이다. 매우 드물게, 매체 상연은 네트워크가 데이터를 클라이언트에게 배달할 수 없는 심각한 기간 때문에 중단된다.
전체적인 결과는 대부분의 세션에 대해서, 사용자는 연속적인 매체 상연을 볼 수 있으며, 때때로 품질에서의 변화가 수반되지만, 비트 에러 및 패킷 손실과대개 연관된 유형의 왜곡은 없다. 단지 매우 드물게 심각한 네트워크 결함과 스루풋의 손실의 결과로서 관찰된 매체 상연의 완전한 일시중단이 있다.

Claims (8)

  1. 스트리밍 시스템용 데이터 소스를 위한 데이터 구조에 있어서,
    상기 데이터 소스는 복수의 인코딩된 데이터 스트림을 포함하고, 상기 복수의 데이터 스트림의 각각은 상기 복수의 데이터 스트림 중의 다른 것과 상이한 해상도로 인코딩된 상기 데이터 소스로부터의 데이터의 독립적인 표현이며, 상기 데이터 구조는 헤더(600-680), 상기 인코딩된 데이터 스트림들의 각각에 대한 스트림 데이터 구조(700) 및 상기 인코딩된 데이터 스트림들의 하나 이상의 패킷들(800)을 포함하고, 상기 헤더(600-680)는 상기 스트림 데이터 구조(700)들 중의 하나에 링크되며, 여기서 각 스트림 데이터 구조(700)는 헤더(705, 740, 750), 다음 스트림 데이터 구조에 대한 링크(710) 및 상기 인코딩된 데이터 스트림의 첫번째 패킷에 대한 링크(720)를 포함하는 것을 특징으로 하는 데이터 구조.
  2. 제 1 항에 있어서,
    상기 복수의 인코딩된 데이터 스트림은 비디오 데이터 스트림들인 것을 특징으로 하는 데이터 구조.
  3. 제 1 항 또는 제 2 항에 있어서,
    데이터 스트림으로서 인코딩된 오디오 데이터를 포함하는 것을 특징으로 하는 데이터 구조.
  4. 제 2 항 또는 제 3 항에 있어서,
    비디오 및 오디오 데이터 스트림들을 위한 스트림 데이터 구조(700)는 상기 각 데이터 스트림에 대한 데이터를 인코딩하는 비트율을 포함하는 것을 특징으로 하는 데이터 구조.
  5. 제 2 항, 제 3 항, 또는 제 4 항에 있어서,
    상기 데이터 소스는 상기 비디오 데이터 스트림들 중의 하나와 상기 비디오 데이터 스트림들 중의 다른 것 사이에서의 스위칭을 위한 복수의 스위칭 지점을 정의하는 스위칭 스트림을 추가로 포함하며, 상기 스위칭 데이터 스트림을 위한 상기 데이터 스트림 구조는 스위칭이 가능한 시작 및 끝 패킷들과 비디오 스트림들에 대한 데이터를 포함하는 것을 특징으로 하는 데이터 구조.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 데이터 구조의 상기 헤더는 마지막 스트림 데이터 구조에 대한 링크를 포함하는 것을 특징으로 하는 데이터 구조.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    스트림 데이터 구조의 상기 헤더는 상기 인코딩된 데이터 스트림의 마지막 패킷에 대한 링크(730)를 포함하는 것을 특징으로 하는 데이터 구조.
  8. 컴퓨터 판독가능 매체상에 인코딩된 제 1 항 내지 제 7 항 중 어느 한 항에 따른 데이터 구조.
KR1020047015313A 2002-03-27 2003-03-14 데이터 스트리밍 시스템을 위한 데이터 구조 KR100917743B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP02252214 2002-03-27
EP02252214.8 2002-03-27
PCT/GB2003/001090 WO2003084233A1 (en) 2002-03-27 2003-03-14 Data structure for data streaming system

Publications (2)

Publication Number Publication Date
KR20040093483A true KR20040093483A (ko) 2004-11-05
KR100917743B1 KR100917743B1 (ko) 2009-09-15

Family

ID=28459565

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047015313A KR100917743B1 (ko) 2002-03-27 2003-03-14 데이터 스트리밍 시스템을 위한 데이터 구조

Country Status (10)

Country Link
US (1) US20050120038A1 (ko)
EP (1) EP1488644B1 (ko)
JP (1) JP4440651B2 (ko)
KR (1) KR100917743B1 (ko)
CN (1) CN100471266C (ko)
AT (1) ATE363809T1 (ko)
AU (1) AU2003216817A1 (ko)
CA (1) CA2479585A1 (ko)
DE (1) DE60314106T2 (ko)
WO (1) WO2003084233A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008133420A1 (en) * 2007-04-25 2008-11-06 Lg Electronic Inc. Providing of link information between various application information and using the link information

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2428325C (en) * 2000-11-29 2011-08-30 Matthew David Walker Transmitting and receiving real-time data
KR20040041170A (ko) * 2001-09-21 2004-05-14 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 혼잡 제어를 위한 전송률을 계산하기 위해 수신 버퍼 크기를 사용하는 데이터 통신 방법 및 시스템
DE60222581T2 (de) * 2001-11-30 2008-06-19 British Telecommunications Public Ltd. Co. Datenübertragung
EP1359722A1 (en) * 2002-03-27 2003-11-05 BRITISH TELECOMMUNICATIONS public limited company Data streaming system and method
DE60335178D1 (de) * 2002-03-27 2011-01-13 British Telecomm Videokodierung und -übertragung
GB0306296D0 (en) * 2003-03-19 2003-04-23 British Telecomm Data transmission
EP1499131A1 (en) * 2003-07-14 2005-01-19 Deutsche Thomson-Brandt Gmbh Method and apparatus for decoding a data stream in audio video streaming systems
US7657672B2 (en) * 2004-01-30 2010-02-02 Telefonaktiebolaget L M Ericsson (Publ) Packet scheduling for data stream transmission
US8018945B2 (en) * 2004-04-29 2011-09-13 Interdigital Technology Corporation Method and apparatus for forwarding non-consecutive data blocks in enhanced uplink transmissions
EP1810110A1 (en) * 2004-09-29 2007-07-25 Nokia Corporation Data file including encrypted content
ES2313323T3 (es) * 2005-04-11 2009-03-01 Telefonaktiebolaget Lm Ericsson (Publ) Tecnica para controlar transmisiones de paquetes de datos de velocidad binaria variable.
KR100724899B1 (ko) * 2005-11-22 2007-06-04 삼성전자주식회사 호환성있는(compatible) 프로그레시브 다운로드방법 및 그 시스템
WO2009058118A1 (en) * 2007-11-01 2009-05-07 Thomson Licensing A method and apparatus for streaming scalable multimedia data streams
EP2114076B1 (en) * 2008-04-21 2013-09-11 Samsung Electronics Co., Ltd. Apparatus and method for composing scenes using rich media contents
WO2010049440A1 (en) 2008-10-29 2010-05-06 Edgeware Ab A method and an apparatus for data recording and streaming
EP2204965B1 (en) * 2008-12-31 2016-07-27 Google Technology Holdings LLC Device and method for receiving scalable content from multiple sources having different content quality
KR101744977B1 (ko) 2010-10-08 2017-06-08 삼성전자주식회사 멀티미디어 스트리밍 서비스에서 서비스 품질을 보장하는 방법
US20120096180A1 (en) * 2010-10-14 2012-04-19 Invensys Systems Inc. Achieving Lossless Data Streaming in a Scan Based Industrial Process Control System
KR101782453B1 (ko) 2013-07-08 2017-09-28 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 재생 제어 방법, 장치 및 시스템
JP7312022B2 (ja) * 2019-06-04 2023-07-20 アルプスアルパイン株式会社 通信装置、及び、通信方法
US11588876B2 (en) * 2020-06-16 2023-02-21 T-Mobile Usa, Inc. Device-side playback restrictions on high throughput networks
GB202015327D0 (en) * 2020-09-28 2020-11-11 British Telecomm Adaptive bit rate streaming
US20240196049A1 (en) * 2022-12-08 2024-06-13 Synamedia Limited Client Device Switching to Low Latency Content

Family Cites Families (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4813044A (en) * 1987-01-30 1989-03-14 International Business Machines Corporation Method and apparatus for detecting transient errors
USRE34824E (en) * 1987-09-23 1995-01-10 British Telecommunications Public Limited Company Video coder
US5150417A (en) * 1991-02-25 1992-09-22 Socon Ab Bass reflex type speaker system
US5159447A (en) * 1991-05-23 1992-10-27 At&T Bell Laboratories Buffer control for variable bit-rate channel
US5506983A (en) * 1992-07-06 1996-04-09 Microsoft Corporation Method and system for transactioning of modifications to a tree structured file
US5675696A (en) * 1992-07-14 1997-10-07 Mitsubishi Denki Kabsuhiki Kaisha Digital video signal recording and reproducing apparatus
US5511054A (en) * 1993-03-31 1996-04-23 Sony Corporation Apparatus and method for multiplexing encoded data signals and recording medium having multiplexed signals recorded thereon
US5561466A (en) * 1993-06-23 1996-10-01 Nec Corporation Video and audio data multiplexing into ATM cells with no dummy cell used and ATM cell demultiplexing
AU699823B2 (en) * 1993-12-20 1998-12-17 Rodney John Smith Data compression system
US5566208A (en) * 1994-03-17 1996-10-15 Philips Electronics North America Corp. Encoder buffer having an effective size which varies automatically with the channel bit-rate
US5874997A (en) * 1994-08-29 1999-02-23 Futuretel, Inc. Measuring and regulating synchronization of merged video and audio data
US5956321A (en) * 1995-03-16 1999-09-21 Kabushiki Kaisha Toshiba Stream scheduling system for real time stream server
US5535209A (en) * 1995-04-10 1996-07-09 Digital Equipment Corporation Method and apparatus for transporting timed program data using single transport schedule
US5822524A (en) * 1995-07-21 1998-10-13 Infovalue Computing, Inc. System for just-in-time retrieval of multimedia files over computer networks by transmitting data packets at transmission rate determined by frame size
JPH11512583A (ja) * 1995-09-14 1999-10-26 フジツウ ネットワーク コミュニケーションズ,インコーポレイテッド 広域atm網内のバッファ割付用送信側制御式フロー制御
JP3545110B2 (ja) * 1995-09-26 2004-07-21 富士通株式会社 通信サービスの品質制御方式
US6122668A (en) * 1995-11-02 2000-09-19 Starlight Networks Synchronization of audio and video signals in a live multicast in a LAN
US5754849A (en) * 1996-01-30 1998-05-19 Wayfarer Communications, Inc. Self-describing object providing dynamic manipulation of heterogeneous data values and semantic identity between memory and transmission representations
US5864678A (en) * 1996-05-08 1999-01-26 Apple Computer, Inc. System for detecting and reporting data flow imbalance between computers using grab rate outflow rate arrival rate and play rate
US6678311B2 (en) * 1996-05-28 2004-01-13 Qualcomm Incorporated High data CDMA wireless communication system using variable sized channel codes
US6396804B2 (en) * 1996-05-28 2002-05-28 Qualcomm Incorporated High data rate CDMA wireless communication system
US5909434A (en) * 1996-05-31 1999-06-01 Qualcomm Incorporated Bright and burst mode signaling data transmission in an adjustable rate wireless communication system
JP3668556B2 (ja) * 1996-06-13 2005-07-06 ソニー株式会社 ディジタル信号符号化方法
KR0169248B1 (ko) * 1996-07-24 1999-02-01 양승택 패킷 상호 연결망에서의 메시지 송신 장치 및 메시지 송신 제어방법
KR0178766B1 (ko) * 1996-09-02 1999-05-15 삼성전자주식회사 압축되지 않은 디지탈데이타의 전송기능을 갖는 디지탈 인터페이스 장치
US5928330A (en) * 1996-09-06 1999-07-27 Motorola, Inc. System, device, and method for streaming a multimedia file
US5751741A (en) * 1996-11-20 1998-05-12 Motorola, Inc. Rate-adapted communication system and method for efficient buffer utilization thereof
US6480541B1 (en) * 1996-11-27 2002-11-12 Realnetworks, Inc. Method and apparatus for providing scalable pre-compressed digital video with reduced quantization based artifacts
US6124878A (en) * 1996-12-20 2000-09-26 Time Warner Cable, A Division Of Time Warner Enterainment Company, L.P. Optimum bandwidth utilization in a shared cable system data channel
US5960452A (en) * 1996-12-23 1999-09-28 Symantec Corporation Optimizing access to multiplexed data streams on a computer system with limited memory
US6011779A (en) * 1996-12-30 2000-01-04 Hyundai Electronics America ATM switch queuing system
US6014706A (en) * 1997-01-30 2000-01-11 Microsoft Corporation Methods and apparatus for implementing control functions in a streamed video display system
US6092115A (en) * 1997-02-07 2000-07-18 Lucent Technologies Inc. Method for supporting per-connection queuing for feedback-controlled traffic
US5918020A (en) * 1997-02-28 1999-06-29 International Business Machines Corporation Data processing system and method for pacing information transfers in a communications network
JP3003618B2 (ja) * 1997-03-19 2000-01-31 日本電気株式会社 動画像送受信装置
US6081843A (en) * 1997-03-20 2000-06-27 Nokia Telecommunications System using simulation cell and simulation buffer for regulating cell transfer rate according to occupancy level of the simulation buffer
US6240103B1 (en) * 1997-03-21 2001-05-29 Scientific-Atlanta, Inc. Method and apparatus for detecting and preventing bandwidth overflow in a statistical multiplexer
KR100302263B1 (ko) * 1997-03-25 2001-09-22 모리시타 요이찌 스트림 데이터 전송방법 및 시스템
US6269078B1 (en) * 1997-04-04 2001-07-31 T. V. Lakshman Method and apparatus for supporting compressed video with explicit rate congestion control
US6181821B1 (en) * 1997-04-30 2001-01-30 Massachusetts Institute Of Technology Predictive source encoding and multiplexing
JP2000515706A (ja) * 1997-05-26 2000-11-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ストリームサーバにおいてデータを取り出すシステム
US6310857B1 (en) * 1997-06-16 2001-10-30 At&T Corp. Method and apparatus for smoothing and multiplexing video data flows
US6014694A (en) * 1997-06-26 2000-01-11 Citrix Systems, Inc. System for adaptive video/audio transport over a network
JP3547944B2 (ja) * 1997-07-17 2004-07-28 Kddi株式会社 ディジタルvtrのダビングデータ送信装置
US6065104A (en) * 1997-07-23 2000-05-16 S3 Incorporated Method of embedding page address translation entries within a sequentially accessed digital audio data stream
US6701372B2 (en) * 1997-08-22 2004-03-02 Canon Kabushiki Kaisha Data communication apparatus and method
JP3478100B2 (ja) * 1997-12-09 2003-12-10 三菱電機株式会社 無線回線割当装置及び無線回線割当方法
US6285661B1 (en) * 1998-01-28 2001-09-04 Picturetel Corporation Low delay real time digital video mixing for multipoint video conferencing
US6216173B1 (en) * 1998-02-03 2001-04-10 Redbox Technologies Limited Method and apparatus for content processing and routing
US6373855B1 (en) * 1998-03-05 2002-04-16 Intel Corporation System and method for using audio performance to control video bandwidth
JPH11261589A (ja) * 1998-03-13 1999-09-24 Fujitsu Ltd Atmネットワーク装置
IL123906A0 (en) * 1998-03-31 1998-10-30 Optibase Ltd Method for synchronizing audio and video streams
JP4366725B2 (ja) * 1998-04-01 2009-11-18 ソニー株式会社 画像信号処理装置及び方法並びに画像信号記録装置及び方法
US6104441A (en) * 1998-04-29 2000-08-15 Hewlett Packard Company System for editing compressed image sequences
JPH11341477A (ja) * 1998-05-25 1999-12-10 Niles Parts Co Ltd 画像記憶処理装置
DE69926689T2 (de) * 1998-06-18 2006-06-08 Sony Corp. Vorrichtung und Methode zur Übertragung von Information, Vorrichtung und Methode zum Empfang von Information, Vorrichtung zur Bereitstellung eines computerlesbaren Programms und Fernsehübertragungssystem
US6584509B2 (en) * 1998-06-23 2003-06-24 Intel Corporation Recognizing audio and video streams over PPP links in the absence of an announcement protocol
US6850564B1 (en) * 1998-06-26 2005-02-01 Sarnoff Corporation Apparatus and method for dynamically controlling the frame rate of video streams
WO2000001160A2 (en) * 1998-06-29 2000-01-06 Limt Technology Ab Method and apparatus for splicing data streams
US6097697A (en) * 1998-07-17 2000-08-01 Sitara Networks, Inc. Congestion control
GB9821792D0 (en) * 1998-10-06 1998-12-02 Sgs Thomson Microelectronics Data transfer
US6445701B1 (en) * 1998-10-09 2002-09-03 Microsoft Corporation Channel access scheme for use in network communications
US6618363B1 (en) * 1998-10-09 2003-09-09 Microsoft Corporation Method for adapting video packet generation and transmission rates to available resources in a communications network
FR2784844B1 (fr) * 1998-10-14 2002-03-29 France Telecom Procede de basculement de la ou des composantes video d'un premier programme audiovisuel numerique sur la ou les composantes d'un second programme audiovisuel numerique
KR100310055B1 (ko) * 1998-10-28 2001-12-17 구자홍 광디스크기록/재생기의기록속도가변장치및방법
US6637031B1 (en) * 1998-12-04 2003-10-21 Microsoft Corporation Multimedia presentation latency minimization
US6625119B1 (en) * 1999-03-17 2003-09-23 3Com Corporation Method and system for facilitating increased call traffic by switching to a low bandwidth encoder in a public emergency mode
WO2000055854A1 (fr) * 1999-03-17 2000-09-21 Kabushiki Kaisha Toshiba Procede d'enregistrement de donnees en fluxet de leur structure
US6754189B1 (en) * 1999-04-08 2004-06-22 Lucent Technologies Inc. Method of queue length based burst management in wireless communication systems
JP4503858B2 (ja) * 1999-04-14 2010-07-14 ライト チャンス インコーポレイテッド 遷移ストリームの生成/処理方法
US6614843B1 (en) * 1999-04-15 2003-09-02 Diva Systems Corporation Stream indexing for delivery of interactive program guide
US6697369B1 (en) * 1999-09-28 2004-02-24 Lucent Technologies Inc Admission control adjustment in data networks using maximum cell count
US7522631B1 (en) * 1999-10-26 2009-04-21 Qualcomm, Incorporated Method and apparatus for efficient data transmission control in a wireless voice-over-data communication system
US7206580B2 (en) * 1999-11-04 2007-04-17 Qualcomm Incorporated Method and apparatus for performing handoff in a high speed communication system
US7203732B2 (en) * 1999-11-11 2007-04-10 Miralink Corporation Flexible remote data mirroring
US6700893B1 (en) * 1999-11-15 2004-03-02 Koninklijke Philips Electronics N.V. System and method for controlling the delay budget of a decoder buffer in a streaming data receiver
US6593930B1 (en) * 1999-12-16 2003-07-15 Intel Corporation Method and apparatus to execute a memory maintenance operation during a screen blanking interval
EP1133190A1 (en) * 2000-03-06 2001-09-12 Canon Kabushiki Kaisha Moving image generation apparatus, moving image playback apparatus, their control method, and storage medium
US7058723B2 (en) * 2000-03-14 2006-06-06 Adaptec, Inc. Congestion control for internet protocol storage
US6738386B1 (en) * 2000-05-11 2004-05-18 Agere Systems Inc. Controlled latency with dynamically limited queue depth based on history and latency estimation
US7260826B2 (en) * 2000-05-31 2007-08-21 Microsoft Corporation Resource allocation in multi-stream IP network for optimized quality of service
US7003794B2 (en) * 2000-06-27 2006-02-21 Bamboo Mediacasting, Inc. Multicasting transmission of multimedia information
US6909693B1 (en) * 2000-08-21 2005-06-21 Nortel Networks Limited Performance evaluation and traffic engineering in IP networks
US6993604B2 (en) * 2000-11-15 2006-01-31 Seagate Technology Llc Dynamic buffer size allocation for multiplexed streaming
CA2428325C (en) * 2000-11-29 2011-08-30 Matthew David Walker Transmitting and receiving real-time data
US7277955B2 (en) * 2000-12-22 2007-10-02 Verizon Corporate Services Group Inc. Streaming content
US20020122491A1 (en) * 2001-01-03 2002-09-05 Marta Karczewicz Video decoder architecture and method for using same
JP2004531925A (ja) * 2001-03-05 2004-10-14 インタービデオインコーポレイテッド 圧縮されたビデオビットストリームにおける冗長な動きベクトルを符号化し復号するシステム及び方法
US7626999B2 (en) * 2001-03-16 2009-12-01 Tellabs San Jose, Inc. Apparatus and methods for circuit emulation of a point-to-point protocol operating over a multi-packet label switching network
TW511365B (en) * 2001-05-15 2002-11-21 Corbett Wall Method allowing individual user to record song and forward to others for listening by connecting to a service provider with telecommunication device signal
US7191246B2 (en) * 2001-07-18 2007-03-13 Sharp Laboratories Of America, Inc. Transmission rate selection for a network of receivers having heterogenous reception bandwidth
US7106758B2 (en) * 2001-08-03 2006-09-12 Adc Telecommunications, Inc. Circuit and method for service clock recovery
KR20040041170A (ko) * 2001-09-21 2004-05-14 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 혼잡 제어를 위한 전송률을 계산하기 위해 수신 버퍼 크기를 사용하는 데이터 통신 방법 및 시스템
US20030076858A1 (en) * 2001-10-19 2003-04-24 Sharp Laboratories Of America, Inc. Multi-layer data transmission system
US6898313B2 (en) * 2002-03-06 2005-05-24 Sharp Laboratories Of America, Inc. Scalable layered coding in a multi-layer, compound-image data transmission system
EP1359722A1 (en) * 2002-03-27 2003-11-05 BRITISH TELECOMMUNICATIONS public limited company Data streaming system and method
DE60335178D1 (de) * 2002-03-27 2011-01-13 British Telecomm Videokodierung und -übertragung
US20040181817A1 (en) * 2003-03-12 2004-09-16 Larner Joel B. Media control system and method
GB0306296D0 (en) * 2003-03-19 2003-04-23 British Telecomm Data transmission
KR20060088303A (ko) * 2005-02-01 2006-08-04 엘지전자 주식회사 디지털 방송 수신기의 동영상 저장/재생 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008133420A1 (en) * 2007-04-25 2008-11-06 Lg Electronic Inc. Providing of link information between various application information and using the link information
US8966002B2 (en) 2007-04-25 2015-02-24 Lg Electronics Inc. Providing of link information between various application information and using the link information

Also Published As

Publication number Publication date
DE60314106D1 (de) 2007-07-12
AU2003216817A1 (en) 2003-10-13
KR100917743B1 (ko) 2009-09-15
JP2005522115A (ja) 2005-07-21
CA2479585A1 (en) 2003-10-09
CN1643932A (zh) 2005-07-20
DE60314106T2 (de) 2008-01-24
WO2003084233A1 (en) 2003-10-09
EP1488644B1 (en) 2007-05-30
CN100471266C (zh) 2009-03-18
ATE363809T1 (de) 2007-06-15
JP4440651B2 (ja) 2010-03-24
EP1488644A1 (en) 2004-12-22
US20050120038A1 (en) 2005-06-02

Similar Documents

Publication Publication Date Title
KR100966447B1 (ko) 데이터 스트리밍 시스템 및 방법
KR100917743B1 (ko) 데이터 스트리밍 시스템을 위한 데이터 구조
JP5341629B2 (ja) ピクチャ復号化方法
RU2385541C2 (ru) Изменение размера буфера в кодере и декодере
CA2294511C (en) System for adaptive video/audio transport over a network
KR100891150B1 (ko) 데이터 전송
CN1478349A (zh) 发送及接收实时数据
KR20030025285A (ko) 비디오 부호화
JP2005033556A (ja) データ送信装置、データ送信方法、データ受信装置、データ受信方法

Legal Events

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

Payment date: 20120903

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130829

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140828

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150827

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160901

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170901

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180831

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190829

Year of fee payment: 11