KR20140062465A - 대역폭 가변 접속을 통한 동적 비트 레이트 적응 - Google Patents

대역폭 가변 접속을 통한 동적 비트 레이트 적응 Download PDF

Info

Publication number
KR20140062465A
KR20140062465A KR1020147003664A KR20147003664A KR20140062465A KR 20140062465 A KR20140062465 A KR 20140062465A KR 1020147003664 A KR1020147003664 A KR 1020147003664A KR 20147003664 A KR20147003664 A KR 20147003664A KR 20140062465 A KR20140062465 A KR 20140062465A
Authority
KR
South Korea
Prior art keywords
current
interval
time
encoding
media
Prior art date
Application number
KR1020147003664A
Other languages
English (en)
Other versions
KR101996877B1 (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 KR20140062465A publication Critical patent/KR20140062465A/ko
Application granted granted Critical
Publication of KR101996877B1 publication Critical patent/KR101996877B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • 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/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission 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, manipulating MPEG-4 scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 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/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • 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/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/41407Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a portable device, e.g. video client on a mobile phone, PDA, laptop
    • 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/643Communication protocols
    • H04N21/64322IP
    • 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/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments

Abstract

매체 파일의 오디오 및 비디오 스트림은 변환 부호화 프로세스가 벽 시계와 동기되도록 함으로써 실 시간으로 변환 부호화된다. 변환 부호화는 초기에 실시간 보다 약간 더 빠르게 구성된다. 변환 부호화된 프레임은 변환 부호화되면 곧바로 가변 대역폭 접속을 통해 변환 부호화기로부터 푸싱(pushing)된다. 그 다음, 변환 부호화된 버퍼의 전송 동안에 이용 가능하였던 대역폭을 평가하기 위해 변환 부호화가 주기적으로 모니터링된다. 2개의 시간 간격, 즉 이전의 2개의 전송의 변환 부호화된 버퍼 타임스탬프에 있어서의 차이는 버퍼 간격 및 최종 변환 부호화된 버퍼의 실시간 전송 시간에 대응하는 클럭 간격이 측정된다. 차이가 큰 것으로 관측되면, 그 차이로부터 도출되는 계수만큼 변환 부호화기 비트 레이트가 조정된다.

Description

대역폭 가변 접속을 통한 동적 비트 레이트 적응{DYNAMIC BIT RATE ADAPTATION OVER BANDWIDTH VARYING CONNECTION}
본 발명은 실시간 매체의 전송에 관한 것이다.
도 1에는, 예를 들어 인터넷과 같은 네트워크(106)를 통해 이동 유닛 또는 종착지 유닛(104)에 접속되는 매체 서버 서브시스템(102)을 포함하는 종래 기술의 매체 전송 시스템(100)이 도시된다.
이동 유닛(104)은, 예를 들어, 매체 세션(media session)을 수립할 수 있도록 된 스마트 폰(smart phone) 또는 랩탑 컴퓨터(laptop computer)일 수 있다.
매체 서버 서브시스템(102)은 매체 파일을 생성하는 매체 서버 계산 디바이스(108)와, 매체 파일을 프로세싱하는 ICAP(Internet Content Adaptation Protocol) 서버 계산 디바이스(110) 및 이동 유닛 또는 단말로부터의 요청을 처리하고 다른 기능을 수행하기 위한 HTTP(Hypertext Transfer Protocol) 프록시 서버 계산 디바이스(112)를 포함할 수 있다.
매체 세션은 이동(종착지) 유닛(104)에 의해 요청될 수 있다. 매체 세션의 목적은 매체 서버 서브시스템(102)에서 이동 유닛(104)으로 매체 패킷 스트림(매체 파일)을 전송하기 위한 것이다.
네트워크(106)를 통한 요청 이동 유닛(104)과 매체 서버 서브시스템(102)간의 접속 대역폭이 원본 매체 파일을 실시간으로 전송하는데 필요한 대역폭보다 낮으면, 매체 파일은 전형적으로 HTTP 프록시 서버(112)의 부속품인 ICAP 서버(110)에 배치된 장비에 의해 낮은 대역폭에 맞게 적응화된다.
네트워크(106)를 통한 접속의 대역폭은 시간에 따라 가변되어, 매체 파일의 적응화(adaptation of the media file)에 대해 추가적인 문제를 일으킨다.
따라서, 가변 대역폭을 가진 접속을 통한 전송을 위한 매체 파일의 대역폭 적응화를 개선하기 위한 방법 및 시스템이 필요하다.
본 발명의 목적은 이동 유닛에 가변 대역폭 링크를 통해 실시간으로 전송하기 위한 매체 파일 또는 그의 일부를 인코딩하는 방법 및 시스템을 제공하는 것이다.
본 발명의 일 측면에 따르면, 이동 유닛 또는 종착지 유닛에 가변 대역폭 링크를 통해 실시간으로 전송하기 위한 매체 파일 또는 그의 일부를 인코딩하는 방법이 제공되는데, 그 방법은,
(ⅰ) 스트림 단편(stream fragment)을 형성하기 위해 매체 파일의 하나 이상의 단편을 변환 부호화된 매체 단편(transcoded media fragment)으로 인코딩하고,
(ⅱ) 이전에 형성된 스트림 단편의 추정 전송 시간 - 추정 전송 시간은 이전 형성된 스트림 단편이 변환 부호화기로부터 운반되고 가변 대역폭 링크에 의해 소모되는데 요구되는 시간 간격임 - 을 판정하고,
(ⅲ) 변환 부호화된 매체 단편의 현재 인코딩 레이트(current encoding rate)를 추정 전송 시간의 함수로서 조정하는,
적어도 하나의 프로세서를 채용하는 것을 포함한다.
상술한 방법에 있어서, 단계 (ⅰ)은, 초기 인코딩 레이트로, 매체 파일의 적어도 제 1 단편을 대응하는 제 1 변환 부호화된 매체 단편으로 인코딩하고, 현재 인코딩 레이트를 초기 인코딩 레이트와 동일하게 설정하는 것을 포함하고,
단계 (ⅲ)은, 조정된 현재 인코딩 레이트로, 매체 파일의 후속 단편들을 대응하는 변환 부호화된 매체 단편들로 인코딩하는 것을 포함한다.
상술한 방법에 있어서, 단계 (ⅲ)은 현재 인코딩 레이트를 이동 유닛에서의 상기 스트림 단편의 추정 디스플레이 시간(estimated display time) - 추정 디스플레이 시간은 이전에 형성된 2개의 스트림 단편들과 연관된 타임스탬프(timestamp)로부터 도출됨 - 의 함수로서 조정하는 것을 더 포함한다.
단계 (ⅲ)는 현재 인코딩 레이트를 현재 인코딩 레이트의 함수로서 조정하는 것을 더 포함한다.
본 발명의 일 실시 예에 있어서, 그 함수는 추정 디스플레이 시간과 추정 전송 시간에 좌우되는 조정 계수(adjustment factor)와 현재 인코딩 레이트의 승산(product)이다.
편리하게도, 조정 계수는 추정 디스플레이 시간을 추정 전송 시간으로 제산한 것이다.
그 방법은 변환 부호화된 매체 단편을 디스플레이를 위한 이동 유닛에 전송하는 것을 포함한다.
상술한 방법에 있어서, 현재 인코딩 레이트를 조정하는 것은 가끔씩(from time to time) 수행될 수 있다. 예를 들어, 그 조정은 주기적으로 실행될 수 있다.
본 발명의 실시 예에 있어서, 단계 (ⅱ)는 최종 인코딩의 이전 시간과 현재 시간간의 현재 클럭 간격(clock interval)으로서 추정 전송 시간을 추정하는 것을 더 포함하며, 단계 (ⅲ)은,
이동 유닛에서의 이전 스트림 단편의 추정 디스플레이 시간을 나타내는 현재 버퍼 간격(buffer interval) - 현재 버퍼 간격은 이전에 형성된 2개의 스트림 단편에 내장된 타임스탬프로부터 도출됨 - 을 판정하고,
현재 클럭 간격과 현재 버퍼 간격을 비교하고,
현재 클럭 간격과 현재 버퍼 간격의 함수로서 현재 인코딩 레이트를 조정하는 것을 더 포함한다.
편리하게도, 이전에 형성된 2개의 스트림 단편은 마지막 2개의 스트림 단편을 포함한다.
상술한 방법에 있어서, 그 조정은, 현재 클럭 간격이 사전 설정된 량만큼 현재 버퍼 간격과 차이가 나면, 현재 인코딩 레이트를 조정하는 것을 포함한다.
예를 들어, 단계 (ⅲ)은 N 초의 현재 클럭 간격이 경과된 후 현재 인코딩 레이트를 조정하는 것을 포함한다. 본 발명의 실시 예에 있어서, N은 2초와 4초 사이의 범위내이며, 예를 들어, N은 3초이다.
현재 인코딩 레이트를, 현재 클럭 간격과 현재 버퍼 간격의 함수로서 조정하는 것은,
현재 버퍼 간격과 현재 클럭 간격간의 제 1 상대적 차이가 제 1 사전 설정된 임계치 TH1을 초과하면, 제 1 상대적 차이로부터 계산된 제 1 증분값만큼 현재 인코딩 레이트를 증가시키고,
현재 버퍼 간격과 현재 클럭 간격간의 제 2 상대적 차이가 제 2 사전 설정된 임계치 TH2를 초과하면, 제 2 상대적 차이로부터 계산된 제 2 증분값만큼 현재 인코딩 레이트를 감소시킴으로써 실행된다.
편리하게도, TH1은 적어도 0.05, TH2는 적어도 0.02인 것으로 선택될 수 있다.
상술한 방법에 있어서, 제 1 증분값은 제 1 상대적 차이값을 제 1 감쇄 계수(attenuation factor) AF1에 의해 제산한 것이고, 제 2 증분값은 제 2 상대적 차이값을 제 2 감쇄 계수 AF2로 제산한 것이며, 제 1 및 제 2 감쇄 계수는 현재 인코딩 레이트의 과도한 또는 급속한 과잉 조정(excessive or rapid over-adjusting)을 방지하고, 조정 단계의 안정성을 보장하도록 선택된다.
본 발명의 다른 실시 예에 있어서, 단계 (ⅲ)은, 변환 부호화된 매체 단편의 전송 중지가 검출되지 않을 경우에만 현재 인코딩 레이트를 조정하는 것을 포함한다.
본 발명의 상기 다른 실시 예에 있어서, 단계 (ⅲ)은 그 중지를 검출하는 단계를 더 포함하며, 상기 중지 검출 단계는,
매체 파일의 인코딩이 시작된 이래의 과거의 현재 클럭 간격- 현재 클럭 간격은 최종 인코딩의 현재 시간과 이전 시간간에 측정됨 - 들의 평균으로서 클럭 간격 평균을 계산하고,
현재 클럭 간격이 클럭 간격 평균을 사전 설정된 마진(margin) XC만큼 초과하면 그 중지가 검출된 것으로 판정하는 것을 포함한다.
상술한 방법은,
적어도 2개의 현재 클럭 간격이 발생하였고,
중지가 이미 검출된 횟수가 검출된 중지의 최대 횟수(MP) 미만이면,
중지가 검출되었다고 판정하는 것을 더 포함한다.
그 방법은 현재 클럭 간격이 계수 M에 의해 승산된 클럭 간격 평균을 초과하면 중지가 검출되었다고 판정하는 것을 더 포함한다. 그 방법은, 중지가 검출되면, 현재 클럭 간격을 평균 클럭 간격으로 대체하는 것을 더 포함한다. 본 발명의 실시 예에 있어서, MP는 3이고, XC는 1이고, M은 4이다.
본 발명의 다른 측면에 따르면, 가변 대역폭 링크를 통해 실시 간으로 이동 유닛에 전송하기 위한 매체 파일 또는 그의 일부를 인코딩하는 매체 프로세싱 시스템이 제공되며, 그 시스템은,
프로세서와, 상기 프로세서에 의한 실행을 위한, 컴퓨터 판독 가능 명령어가 저장된 비-일시적 컴퓨터 판독 가능 매체를 포함하고.
상기 명령어는,
스트림 단편을 형성하기 위해 매체 파일의 하나 이상의 단편들을 변환 부호화된 매체 단편들로 변환 부호화하도록 구성된 변환 부호화기와,
변환 부호화기의 현재 인코딩 비트 레이트를 이전에 형성된 스트림 단편의 추정 전송 시간- 추정 전송 시간은 이전 형성된 매체 단편이 변환 부호화기에 의해 운반되고 가변 대역폭 링크에 의해 소모되는데 요구되는 시간 간격임 - 의 함수로서 조정하도록 구성된 동적 비트 레이트 어댑터(dynamic bit rate adapter)를 형성한다.
상술한 매체 프로세싱 시스템에 있어서, 동적 비트 레이트 어댑터는, 현재 인코딩 레이트를 이동 유닛에서의 상기 스트림 단편의 추정 디스플레이 시간(estimated display time) - 추정 디스플레이 시간은 이전에 형성된 2개의 스트림 단편들과 연관된 타임스탬프(timestamp)로부터 도출됨 - 의 함수로서 조정하도록 구성된다.
매체 프로세싱 시스템은, 변환 부호화된 매체 단편을 네트워크로 전송하고 변환 부호화된 매체 단편의 적어도 일부와 관련된 타임스탬프를 동적 비트 레이트 어댑터로 전송하는 변환 부호화기 버퍼를 더 포함한다.
동적 비트 레이트 어댑터는,
현재 시간을 추적하는 벽 시계 모듈과,
가끔씩 변환 부호화기의 인코딩 비트 레이트를 조정하기 위해, 현재 시간과 타임스탬프들을 변환 부호화기로 전송될 QoS(Quality of Service) 값으로 프로세싱하도록 구성된 QoS 조정기를 포함한다.
상술한 매체 프로세싱 시스템에 있어서, 동적 비트 레이트 어댑터는, 변환 부호화된 매체 단편의 전송의 중지를 검출하고, 중지가 검출되었으면, 동적 비트 레이트 어댑터가 현재 인코딩 레이트를 조정하는 것을 금지하도록 구성된 중지 검출기를 더 포함한다.
동적 비트 레이트 어댑터는 현재 인코딩 레이트를 현재 인코딩 레이트의 함수로서 조정하도록 추가 구성된다.
본 발명의 일 실시 예에 있어서, 동적 비트 레이트 어댑터는 최종 인코딩의 이전 시간과 현재 시간간의 현재 클럭 간격(clock interval)으로서 추정 전송 시간을 추정하도록 추가 구성된다.
동적 비트 레이트 어댑터는,
이동 유닛에서의 이전 스트림 단편의 추정 디스플레이 시간을 나타내는 현재 버퍼 간격(buffer interval) - 현재 버퍼 간격은 이전에 형성된 2개의 스트림 단편에 내장된 타임스탬프로부터 도출됨 - 을 판정하고,
현재 클럭 간격과 현재 버퍼 간격을 비교하고,
현재 클럭 간격과 현재 버퍼 간격의 함수로서 현재 인코딩 레이트를 조정하도록 추가 구성된다.
동적 비트 레이트 어댑터는, 현재 클럭 간격이 사전 설정된 량만큼 현재 버퍼 간격과 차이가 나면, 현재 인코딩 레이트를 조정하도록 추가 구성된다.
본 발명의 또 다른 측면에 따르면, 이동 유닛에 가변 대역폭 링크를 통해 실시간으로 전송하기 위한 매체 파일 또는 그의 일부를 인코딩하는 방법이 제공되는데, 그 방법은,
(a) 스트림 단편(stream fragment)을 형성하기 위해 초기 인코딩 레이트와 동일한 현재 인코딩 레이트로 매체 파일의 적어도 제 1 단편을 변환 부호화된 매체 단편으로 인코딩하고 스트림 단편을 전송하고,
(b) 이전에 전송된 스트림 단편의 추정 전송 시간 - 추정 전송 시간은 상기 스트림 단편이 가변 대역폭 링크에 의해 소모되는데 요구되는 시간 간격임 - 에 기초하여, 현재 인코딩 레이트를 새로운 인코딩 레이트로 재평가하며,
(c) 현재 인코딩 레이트를 새로운 인코딩 레이트와 동일하게 되도록 설정하고,
(d) 매체 파일의 다른 단편을 현재 인코딩 레이트로 변환 부호화된 매체 단편으로 인코딩하고,
(e) 매체 파일 또는 그의 일부가 완전히 변환 부호화될 때까지 단계 (b) 내지 (d)를 반복하는
적어도 하나의 프로세서를 채용하는 것을 포함한다.
상술한 방법에 있어서, 단계 (b)는 최종 재평가의 현재 시간과 이전 시간간의 현재 클럭 간격으로서 추정 전송 시간을 추정하는 것을 포함한다.
단계 (b)는,
이동 유닛에서의 최종 스트림 단편의 추정 디스플레이 시간을 나타내는 현재 버퍼 간격(buffer interval) - 현재 버퍼 간격은 최종 스트림 단편과 이전 스트림 단편의 변환 부호화된 매체 단편의 적어도 일부에 내장된 타임스탬프로부터 도출됨 - 을 판정하고,
현재 클럭 간격과 현재 버퍼 간격을 비교하고,
현재 클럭 간격이 현재 버퍼 간격과 다르면, 현재 인코딩 레이트를 정정하는 것을 더 포함한다.
상술한 방법에 있어서, 현재 인코딩 레이트는 현재 클럭 간격과 현재 버퍼 간격의 함수로서 정정된다.
상술한 방법에 있어서, 단계 (b)는 현재 인코딩 레이트의 함수로서 새로운 인코딩 레이트를 계산하고, 이동 유닛에서의 최종 스트림 단편의 추정 디스플레이 시간 - 추정 디스플레이 시간은 최종 스트림 단편과 이전 스트림 단편의 변환 분호화된 매체 단편들의 적어도 일부에 내장된 타임스탬프의 함수임 - 을 계산하는 것을 더 포함한다.
예를 들어, 그 함수는 추정 디스플레이 시간과 추정 전송 시간에 좌우되는 조정 계수(adjustment factor)와 현재 인코딩 레이트의 승산(product)이다.
본 발명의 실시 예에 있어서, 단계 (b)는 N초의 현재 클럭 간격이 경과된 후에만 현재 인코딩 레이트를 재평가하는 것을 포함한다.
본 발명의 대안적인 실시 예에 있어서, 단계 (b)는 변환 부호화된 매체 단편의 전송의 중지를 검출하고, 중지가 검출되었으면, 현재 인코딩 레이트의 조정을 억제하는 것을 더 포함한다.
따라서, 가변 대역폭 링크를 통해 실시 간으로 이동 유닛에 전송하기 위한 매체 파일 또는 그의 일부를 인코딩하는 개선된 방법 및 시스템이 제공되었다.
본 발명의 실시 예는 첨부된 도면을 참조하여 예시적으로 설명될 것이다.
도 1은 종래 기술의 매체 전송 시스템(100)을 도시한 도면,
도 2는 가변 비트 레이트 변환 부호화기(202)를 포함하는, 본 발명의 실시 예에 따른 매체 운반 시스템(200)을 도시한 도면,
도 3은 도 2의 가변 비트 레이트 변환 부호화기(202)를 포함하는, 가변 비트 레이트 변환 부호화기 시스템(300)의 간단한 블럭도,
도 4는 본 발명의 실시 예에 따른 동적 비트 레이트 적응 프로세스(400)의 흐름도,
도 5는 도 4의 QoS 재 평가 단계(408)의 보다 세부적인 흐름도,
도 6은 도 5의 "QoS 계산 초기화" 단계(508)의 연장 흐름도,
도 7은 도 5의 "중지 검출" 단계(520)의 연장 흐름도,
도 8은 도 5의 "중지 프로세스" 단계(524)의 연장 흐름도,
도 9는 도 5의 "QoS 계산" 단계(528)의 연장 흐름도,
도 10은 도 4의 "새로운 QoS 값 적용" 단계(412)의 연장 흐름도,
도 11은 본 발명의 다른 실시 예에 따른 정정된 동적 비트 레이트 적응 프로세스(1100)의 흐름도,
도 12는 도 11의 세그먼트 QoS 재평가 단계(1108)의 보다 세부적인 흐름도,
도 13은 도 12의 "세그먼트 QoS 계산 초기화" 단계(1206)의 보다 세부적인 흐름도.
본 발명의 실시 예는 대역폭이 시간에 걸쳐 가변하는 네트워크를 통한 HTTP 멀티미디어(multimedia) 운반에 있어서 사용자 경험의 개선을 도모한다. 이것은 이용 가능한 대역폭과 매칭(matching)되도록 멀티미디어 파일의 인코딩 레이트를 동적으로 변경하는 것에 의해 실행된다.
이 해법은 ICAP 프로토콜상에 구현되지만, 그 디바이스로의 최종적인 운반은 HTTP에 기반하며, 그 해법은 양 프로토콜에 동일하게 적용된다.
사용자가 이동 네트워크를 통해 비디오를 스트리밍(streaming)하는 경우, 네트워크는 거의 실시간 운반을 제공하는데 이용할 수 있는 충분한 대역폭을 갖지 않을 때도 있다. 결과적으로, 뷰잉 체험(viewing experience)의 품질이 떨어지게 되는데, 이는 비디오가 단부 디바이스(end device)상에서 지연되기 때문이다.
이러한 문제점을 피하기 위해, 매체의 인코딩 레이트가 본 발명의 실시 예에 의해 동적으로 조정되는데, 이것은 이용 가능한 대역폭과 대략 매칭되도록 가끔씩 현재 인코딩 레이트를 조정함에 의해 이루어진다. 스트리밍을 위해 HTTP 프로토콜을 이용하면, 클라이언트 애플리케이션은 서버로 어떠한 피드백(feedback)도 전송하지 못하며, 기반 TCP(underlying Transmission Control Protocol) 접속 정보가 신뢰성있게 이용될 수 없다.
종래의 해법은 데이터 운반을 위해 제어 프로토콜로서 UDT(User Datagram Protocol)을 통한 RTP(Real-time Transport Protocol)을 가진 RTSP(Real Time Streaming Protocol)을 이용하였다. 이들 프로토콜을 이용하는 경우, 비디오 재생기는 매 초마다 수차례 이동 유닛에서 서버로 피드백을 전송한다. 이러한 피드백은 네트워크 장애(network impairment)(패킷 손실, 지터 등)에 대한 정보를 포함하며, 인코딩 레이트가 자동 조정되도록 한다. "DATA STREAMING THROUGH TIME-VARYING TRANSPORT MEDIA"라는 명칭의 Francis R. Labonte등에 의한 미국특허 7,844,725호는, 그의 전체가 본 명세서에 참조로서 인용되며, 시가변 접속을 통한 데이터 스트리밍 방법을 개시한다.
RTSP와 RTP의 조합이 아닌 HTTP를 이용하는 것이 바람직한데, 그 이유는 HTTP가 웹(web)에 대한 편재 프로토콜(omnipresent protocol)이기 때문이다. 그것은 거의 모든 유형의 데이터를 전송하는데 이용된다. HTTP 지원이 웹 클라이언트와 서버의 모두에 대한 요건이기 때문에, HTTP를 통한 비디오의 전송은, 예를 들어 훨씬 더 특정적인 목적에만 도움을 주는 RTSP/RTP와 같은 병렬 프로토콜을 이용하지 않고도, 클라이언트와 서버간의 상호 운용성(interoperability)을 최대화하는데 아주 적합하다. 간단히 예를 들어, 파일 다운로드를 고려하자. FTP(File Transfer Protocol)는 특히 그와 같은 목적을 위해 고안되었지만, 오늘날에는 웹상에서 아주 높은 백분율의 파일이 FTP 대신 HTTP를 통해 전송된다.
다른 고려할 것은 장비의 상호 운용성이다. HTTP는 상호 운용성이 넓다. 그것은 서버측 및 클라이언트측 모두에 대해 무수한 구현을 가진다. 그것은 모든 클라이언트가 상호 운용할 수 있는 사실상의 기준 구현으로서 아파치(Apache)를 가진다. 다른 한편으로, RTSP는 많은 상업적 구현에 있어서 표준을 따르지 않는다(http://www.remlab.net/op/vod.shtml에 있는 HTTP 대 RTSP/RTP에 관한 논문 참조).
그러나, 오디오 및 비디오 스트리밍에 HTTP를 이용하는 경우, 단지 운반에 대해 이용할 수 있는 정보만이, 운용 시스템 계층(Operating System layer)에서 관리되고 멀티미디어를 알지 못하는 TCP 접속으로부터 유래한다. 또한, 멀티미디어 서버와 클라이언트간에 프록시 서버들이 발견되는 경우도 있다. 이들 프록시들은 클라이언트 디바이스와의 접속을 다루고, 그들은 그들 자신의 접속을 수립한다. 본 발명의 실시 예에서는 수신 클라이언트에서 스트리밍 서버로의 명확한 피드백을 요구하지 않고도 HTTP 접속을 통한 효율적인 오디오 및 비디오 스트리밍이 가능하게 된다.
도 2에는 본 발명의 실시 예에 따른 매체 운반 시스템(200)이 도시되는데, 그 시스템은 매체 서버 계산 디바이스(108)로부터 가변 대역폭 링크(204)를 통해 이동 유닛(104)내의 이동 비디오 애플리케이션(206)으로 전송되는 매체 파일에 동적 비트 레이트 적응을 제공하는 가변 비트 레이트 변환 부호화기(202)를 포함한다. 바람직하게, 이동(종착지) 유닛(104)으로의 가변 대역폭 링크(204)는 HTTP 프록시 서버 계산 디바이스(112)에 대한 HTTP 접속을 제공한다. 도 2에는 이동 유닛(104)으로의 HTTP 링크(204)가 도시된다. 이 링크는 예를 들어 실험실내의 직접 링크일 수 있으며, 또는 이동 유닛(104) 그 자신에 대한 무선 드랍(wireless drop)을 포함하여, 인터넷을 거칠 수 있다.
이동 유닛(104)은, 예를 들어, 스마트 폰, 랩탑(laptop), 태블릿(tablet) 또는 매체 세션을 수립할 수 있도록 된 다른 컴퓨터 유형 디바이스(computer-like device)와 같은 디바이스이다.
이동 비디오 애플리케이션(206)은 프로세서에 의한 실행을 위한 메모리와 같은 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 판독 가능 명령을 포함한다.
일 실시 예에 있어서, 가변 비트 레이트 변환 부호화기(202)는 프로세서에 의한 실행을 위한 메모리와 같은 컴퓨터 독출 가능 저장 매체에 저장된 컴퓨터 독출 가능 명령을 포함한다. 대안적으로, 가변 비트 레이트 변환 부호화기(202)는 펌웨어(firmware)로 구현될 수 있다.
가변 비트 레이트 변환 부호화기(202)는 ICAP 링크를 통해 HTTP 프록시 서버(112)에 결합되는 ICAP 서버(110)에 내장된 것으로 도시되지만, 대안적으로 가변 비트 레이트 변환 부호화기(202)가 HTTP 프록시 서버(112) 또는 매체 서버(108)내에 내장될 수도 있음을 알 것이다.
도 3에는 가변 비트 레이트 변환 부호화기 시스템(300)의 간단한 블럭도가 도시되며, 그 시스템은 최소한 프로그램 저장 메모리(304), CPU(306), 네트워크 인터페이스(308) 및 도 2의 가변 비트 레이트 변환 부호화기(202)를 포함하는 계산 디바이스인 매체 프로세싱 서버(302)를 포함한다. 바람직하게, 가변 비트 레이트 변환 부호화기(202)는 프로그램 저장 메모리(304)에 저장되고 CPU(306)에 의해 실행되는 명령을 포함하는 소프트웨어 모듈로서 실현된다. 매체 프로세싱 서버(302)는, 본 발명의 여러 실시 예에 있어서, 매체 서버(108), ICAP(Internet Content Adaptation Protocol) 서버(108), 또는 HTTP(Hypertext Transfer Protocol) 프록시 서버(112)를 나타낼 수 있다.
가변 비트 레이트 변환 부호화기(202)는 동적 비트 레이트 어댑터(Dynamic Bit Rate Adapter: DBRA, 310), 세션 변수 저장 모듈(312), 변환 부호화기(314), 변환 부호화기 버퍼(316) 및 벽 시계(318)를 포함한다. 동적 비트 레이트 어댑터(310)는 QoS 조정기 모듈(320)과 중지 검출기 모듈(322)을 포함한다. 세션 변수 저장 모듈(312)은 구성 파일(324)과 적립 변수 저장(Saved Variables Storage)(326)을 포함한다. 따라서, 본 발명의 일 실시 예에 있어서, 가변 비트 레이트 변환 부호화기(202)의 상술한 모듈들(310,312,314,316,318,320,322 및 324)은 프로세서에 의한 실행을 위해 컴퓨터 메모리에 저장된 컴퓨터 독출 가능 명령을 포함한다.
네트워크 인터페이스(308)는 하드웨어(물리적 인터페이스) 및 소프트웨어(프로토콜)를 포함한다.
CPU(306)는 그 프로토콜들을 포함하는 예를 들어 리눅스(Linux)와 같은 운영 시스템(OS, 도시되지 않음)을 구동한다.
OS는 컴퓨터에서 이용할 수 있는, 현재 시간(CT)이 도출되는 클럭 칩(clock chip)에 기반한 타이밍 서비스(timing service)를 제공한다. 이것은 벽 시계(318) 모듈에서 표시된다. DBRA(310) 모듈은 필요할 때 OS 소프트웨어(커널(kernel))로부터 시간(벽 시계 시간)을 판독하지만, 벽 시계(318) 모듈은, 예를 들어 그것을 스케일링(scaling)하거나 오프셋(offset)하는 것과 같이 윤색(embellish)할 수 있으며, 변환 부호화된 매체 단편의 전송이 시작되면 시간을 0부터 카운트하는 국부(local) "벽 시계"가 계속 가변될 수 있게 하고, 그에 따라 현재 시간(CT)을 DBRA(310)가 이용할 수 있게 된다.
동작에 있어서, 변환 부호화기(314)는 매체 파일(328)을 수신하고, 변환 부호화기 버퍼(316) 및 네트워크 인터페이스(308)을 거쳐 가변 대역폭 링크(204)를 통해 이동 유닛(104)에 전송하기에 적합한 비트 레이트로 매체 파일(328)을 변환 부호화하거나 인코딩하는데, 이때 네트워크 인터페이스(308)의 기능은 HTTP와 같은 애플리케이션 프로토콜을 기반으로 하는 신뢰성 있는 전송 제어 프로토콜(TCP)을 구현하기 위한 것이다.
하나 이상의 변환 부호화된 매체 단편(스트림 단편이라고 함)을 전송하는데 이용되는 시간 간격은, 가변 대역폭 링크(204)상에서 이용 가능하고 신뢰성 있는 전송 제어 프로토콜(TCP)의 제어하에 있는 대역폭에 의존한다. 스트림 단편의 전송에 이용되는 근사 시간(approximate time)은, 연속하는 스트림 단편들이 변환 부호화기 버퍼(316)를 떠날 때의 시간 인스턴스(instances of time)를 관측함에 의해 계산될 수 있으며, 그 시간 값은 벽 시계(318)의 출력으로부터 획득된다. 계산된 전송 시간을 "추정 전송 시간"이라 한다.
용어 "전송 시간" 또는 "추정 전송 시간"을 명확히 하자면, 이것은 실질적으로 변환 부호화된 단편들이 가변 대역폭 링크(204)의 비트 레이트로 직렬 전송되는데 필요한 기간, 즉, 가변 비트 레이트 변환 부호화기(202)를 벗어날 때의 변환 부호화된 단편들이 차지하는 시간임을 알아야 한다. 그것은 가변 비트 레이트 변환 부호화기(202)와 이동 유닛(104) 사이의 지연 시간이 아니며, 본 발명의 실시 예의 동작과 무관하고 알지도 못한다.
추정 전송 시간은 하나 이상의 이전 스트림 단편이 변환 부호화기로부터 운반되어 가변 대역폭 링크에 의해 소모되는데 요구되는 시간 간격이다.
바람직한 실시 예의 변형에 있어서, 추정 전송 시간은 추정 시점 직전이 아니라 그보다 이전의 스트림 단편(earlier stream fragment)들로부터 도출될 수 있음을 이해할 것이다.
동적 비트 레이트 어댑터(310)는 변환 부호화기 버퍼(316)으로부터의 타임스탬프를 모니터링하고, 벽 시계 및 세션 변수 저장 모듈(312)을 이용하여 가변 대역폭 링크(204)상에서 이용할 수 있는 대역폭을 추정하고, 그에 따라, 현재 QoS 값을 조정하기 위한 알고리즘을 실행한다. 그 다음, 변환 부호화기(314)는 현재 인코딩 비트 레이트를 조정하기 위해 현재 QoS 값을 적용한다. 이하에 있어서, 용어 "변환 부호화 비트 레이트", "인코딩 레이트" 및 "QoS 값"은 본 출원에서 교호적으로 이용된다. "변환 부호화 비트 레이트" 및 "인코딩 레이트"는 변환 부호화기(314)의 변환 부호화 동작으로부터 결과하는 비트 레이트를 직접 지칭하며, "QoS 값"은 인코딩 레이트를 제어하는, 변환 부호화기(314)에 입력된 파라메타로서, 인코딩 레이트를 간접적으로 특정한다.
세션이 개시되면, 초기 QoS 값을 포함하는 세션 파라메타가 판정되어 구성 파일(324)에 저장된다.
새로운 QoS 값은, 스트림 단편(하나 이상의 변환 부호화된 단편을 포함)이 가변 비트 레이트 변환 부호화기(202)로부터 전송되는데 걸렸던 시간인, 추정 전송 시간을 비교하기 위해 비트 레이트 적응 함수를 이용하는 QoS 조정기 모듈(320)에서 주기적으로 계산된다. 또한, 추정 전송 시간을 이하에서는 현재 클럭 간격이라고도 할 것이며, 추정 디스플레이 시간은 스트림내에 내장된 타임스탬프에 의해 표시된, 이동 유닛(104)에 있어서 동일 스트림 단편을 디스플레이하는데 필요한 시간이다. 현재 버퍼 간격이라고도 지칭되는 추정 디스플레이 시간은 스트림 단편을 실시간으로 디스플레이하는데 있어서 이동 유닛의 디스플레이 기능에 의해 사용하기 위한 스트림 단편의 타임스탬프에 암시적으로 특정된 시간이다. 예를 들어, 스트림 단편의 전송 시작시의 타임스탬프 및 벽 시계 시간과 같이 이전의 관측되고 계산된 값 및 간격 평균들을 계산하는데 필요한 값은 적립 변수 저장(326)에 유지된다. 본 발명의 일 실시 예에 있어서, 현재 클럭 간격은 적어도 3초의 적응 리프레시 간격(adaptation refresh interval)과 동일하다.
링크(204)상에서 이용할 수 있는 비트 레이트는 직접 관측 가능하지 않으며, 이용할 수 있는 이동 유닛(104)내의 임의 버퍼의 점유에 대한 어떠한 정보도 아님을 알 것이다. 그러나 내장된 타임스탬프에 의해 지시된 대로 실시간으로 비디오 스트림을 수신하고, 버퍼링하고 디스플레이하면서, 이동 유닛(104)은 가끔씩 추가적인 스트림 단편들을 자동으로 수신할 것이다. 이 경우, 전송 레이트는, 예를 들어, 기반 네트워크 프로토콜(TCP)에 의해 관리된다. 가변 비트 레이트 변환 부호화기(202)가 벽 시계에 의해 측정된 대로 그러한 단편의 각각을 실시간으로 전송할 수 있다면, 그 링크 비트 레이트는 충분하다. 그러나, 그 비트 레이트가 불충분하였으면, 이것은 가변 비트 레이트 변환 부호화기(202)에서 검출되었을 수 있는데, 그 이유는 이전 스트림 단편이 짧은 충분한 시간에 전송될 수 없었을 것이기 때문이다. 이동 유닛(104)이 비트 레이트 변화를 스무드(smooth)하게 하기 위한 수신 버퍼를 가지고 있다고 가정할 때, 링크 비트 레이트가 장시간에 걸쳐 불충분하였다면 이 수신 버퍼는 비어있게 된다. 이를 피하기 위해, 가변 비트 레이트 변환 부호화기(202)는 인코딩 레이트(QoS)를 줄일 필요가 있다.
유사하게, 이용 가능한 비트 레이트가 훨씬 높을 경우, 하나의 스트림 단편을 전송하는데 걸리는 시간은 타임스탬프에 의해 표시된 시간 간격보다 적게 되며, QoS 값은 증가될 수 있다. QoS 조정기 모듈(320)의 기능은 이하의 도 9에서 상세하게 설명된다.
이동 유닛(104)에 있어서의 스트림의 디스플레이가 일시적으로 중지되면, 즉, 변환 부호화된 매체 단편의 전송 중지가 발생하게 되면, 가변 비트 레이트 변환 부호화기(202)는 추가적인 스트림 단편들을 전송할 수 없을 것이다. 이러한 상황을 검출하고 QoS 값을 부정확하게 조정하는 것을 피하기 위해 중지 검출기 모듈(322)이 제공된다.
타임스탬프는 주어진 원본 및 변환 부호화된 매체 파일 포맷에 대해 포맷 표준 문서에서 지정된 바와 같이 원본 및 변환 부호화된 매체에 내장된다. 타임스탬프는 그 포맷과 무관하게 변환 부호화된 매체 파일들의 적어도 일부에 내장된다. 아래의 표 1은 타임스탬프를 지원하는 공통 매체 파일 포맷 및 표준 코덱(standard codecs)의 부분적인 리스트를 보여준다. 타임스탬프는 이동 유닛(104)에 있어서의 수신 비디오 시퀀스의 실시간 디스플레이를 원본 비디오 시퀀스의 대응하는 실시간 시퀀스에 고정시키는데 이용되는 상대적인 실시간 인스턴스를 정의한다. 그 결과, "디스플레이 시간", 즉 이동 유닛에서 하나 이상의 변환 부호화된 매체 단편들을 정상적으로(고속 감기(fast-forward)가 아닌) 디스플레이함에 의해 차지하는 시간 간격은, 변환 부호화된 매체 단편들내의 타임스탬프가 전송될 때 그들을 관측하고, 그에 따라 "추정 디스플레이 시간"을 계산함에 의해 가변 비트 레이트 변환 부호화기(202)에서 추정될 수 있다.
표 1 : 파일 포맷 및 코덱 표준
파일 포맷 오디오 코덱 비디오 코덱
F4V, MP4, 3GPP, 3GP2, MOV AAC
AMR,AMR-WB
H.263
H.264
MPEG-4
FLV AAC
MP3
H.263
H.264
VP6
MPEG TS AAC
MP3(MP2)
MPEG-2
H.264
WebM Vorbis VP8
표 1은 여러 포맷 및 대응하는 코덱을 지칭하는데 이용되는 공통적으로 이해하는 약어를 포함한다.
F4V 및 FLV는 어도비 시스템(Adobe System)으로부터의 플래시 비디오(Flash Video)이라고 알려진 비디오 파일 포맷이다. 3GPP(3rd Generation Partnership Project) 및 3GPP2(3rd Generation Partnership Project 2)는, 각각 UMTS(Universal Mobile Telecommunications System) 및 CDMA2000(Code Division Multiple Access 2000)에 기초하는 셀룰러 폰 네트워크에 대한 3G 기술을 제공한다. MOV는 퀵타임(Quicktime)(Apple Inc.)에서 이용되는 파일 포맷이다. MPEG(Moving Picture Expert Group) TS(Transport Stream)는 MPEG 스트림에 대한 파일 포맷을 정의한다. WebM은 구글(Google)이 후원하는, HTML5 비디오 용 개방 비디오 압축 포맷(open video compression format for use with HTML5 video)을 제공하도록 고안된 오디오-비디오 포맷이다.
본 명세서에서 리스트된 오디오 코덱의 약어들을 풀어쓰면, AAC(Advanced Audio Coding), AMR(Adaptive Multi-Rate audio codec), AMR-WB(Adaptive Multi-Rate audio codec - wideband), MP2(MPEG-2 Audio standards) 및 MP3(MPEG-Part 3)이다.
Vorbis는 오디오 포맷의 명칭으로서, Xiph.Org Foundation의 코덱 구현을 정의한다. 비디오 코덱들 중에서 ITU(International Telecommunications Union) 표준에 따른 코덱은 H.263 및 H.264에 정의되지만, MPEG-2 및 MPEG-4는 MPEG 코덱 표준의 다른 버전이다. VP6은 On2 Technologies로부터의 비디오 코덱 구현이고, VP8은 원래는 On2 Technologies에 의해 창출되었지만, 구글이 임대한 개방 비디오 압축 포맷이다.
변환 부호화기(314)는 요즈음에 여러 시스템에서 이용 가능하고 사용되는 (편견없는) 리스트된 포맷들 중 임의 포맷의 변환 부호화를 구현한다. 그러나, 변환 부호화기(314)의 세부 사항은 이용 가능 네트워크 대역폭에 변환 부호화된 비트 레이트를 적응시키기 위해 변환 부호화기(314)에 QoS(또는 인코딩 비트 레이트) 파라메타를 공급하는 것에 중점을 두는 본 발명의 범주 밖이다.
동적 비트 레이트 어댑터(310)에 의해 제공되는 DBRA(Dynamic Bit Rate Adaptation)는 즉시 변환 부호화되는 세션을 위한 것이다. 이것이 의미하는 것은, 변환 부호화 프로세스를 벽 시계에 동기되게 유지시킴에 의해 매체 파일의 오디오 및 비디오 스트림이 적기에 변환 부호화된다는 것이다. DBRA 알고리즘이 작업하는 실시간 보다 변환 부호화가 약간 더 빠르게 구성된다는 점이 중요하다. 변환 부호화기(314)는 변환 부호화기 버퍼(316)에 전송될 변환 부호화된 데이터를 저장한다. 변환 부호화된 프레임들은, 변환 부호화되면 곧바로, 변환 부호화기 버퍼(316)로부터 HTTP 접속을 통해 푸싱(pushing)된다.
DBRA가 인에이블되면, 변환 부호화 세션(변환 부호화 세션을 간단히 세션이라고 할 것임)은 가끔씩, 예를 들어, 주기적으로(예를 들어, 3초 간격으로) 모니터링되어, 그 간격 동안에 이용 가능하였던 대역폭을 평가하는데, 이것은, 벽 시계(318)에 의해 측정된, 하나 이상의 비디오 단편을 나타내는 상당량의 변환 부호화된 데이터를 전송하는 데 걸리는 시간(상기에서 정의한 전송 시간 또는 추정 전송 시간)과, 비디오 단편들이, 비디오 단편내에 내장된 타임스탬프에 의해 표시된 바와 같이, 이동 유닛(104)에서 실시간으로 디스플레이되는데 걸리는 시간(상기에서 정의된 디스플레이 시간 또는 추정 디스플레이 시간)을 비교함에 의해 이루어진다.
다시 말해, 전송 시간은 네트워크 링크의 이용 가능 비트 레이트(대역폭)에 의해 관리되지만, 디스플레이 시간은 수신 디바이스, 예를 들어, 이동 유닛(104)이 수신된 단편들을 디스플레이하는데 걸리는 시간이다. 명백히, 지연(stalling)을 방지하기 위해서, 단편들은 실제 비디오 단편의 디스플레이 시간 주기(time period)보다 길지 않은 시간 주기에 전송될 필요가 있다.
따라서, 본 발명의 실시 예는 단편의 전송동안에 이용 가능하였던 대역폭을 개방 루프 방식으로 추정하고; 그것을 단편의 디스플레이 시간과 비교하고; 필요한 경우 전송될 다음 단편에 대한 변환 부호화 비트 레이트를 조정하는 것을 제안한다. 이하에서는, 용어 "단편" 및 "버퍼" 또는 "변환 부호화된 버퍼"가 교호적으로 이용될 것이다.
그들의 파일 포맷에 따라 타임스탬프로 마킹된 변환 부호화된 데이터(단편)는 변환 부호화기 버퍼(316)를 통해 네트워크 인터페이스(308)로 전송된다. 변환 부호화기 버퍼(316)내의 변환 부호화된 데이터가 전송되면, 간격(간격 A, 또는 현재 버퍼 간격(CurrentBufferInterval)이라고도 함, 아래의 표 2의 변수 이름 참조) 계산을 위해 그들의 타임스탬프가 체크된다. 그 시스템은, 변환 부호화기 버퍼(316)내의 변환 부호화된 데이터를 클라이언트로 전송하고, 일단 그것이 실행되면, DBRA는 그 버퍼의 타임스탬프가 무엇이었는지를 체크한다.
2개의 시간 간격이 판정된다:
간격 A: 마지막 전송되었던 버퍼의 타임스탬프 - 이전 반복에서 전송된 최종 버퍼의 타임스탬프, 및
간격 B: 현재 벽 시계 시간 - 이전 반복의 벽 시계 시간.
간격 B는 현재 클럭 간격(CurrentClockInterval)이라고도 하며, 아래의 표 2에서 변수 이름을 참조하라.
2개의 간격은 가끔씩 비교되며, 큰 차이가 계산되면(음 또는 양), 비트 레이트는 그 차이에 대해 상대적인 계수만큼 조정된다(증가 또는 감소된다). 비트 레이트는 결코 세션의 시작시에 수립되었던 초기 비트 레이트보다 높게 증가되지 못할 것이다.
· 간격 A가 간격 B보다 크면, 그 매체가 현재 전송 레이트에서의 실시간보다 더 빠르게 전달될 수 있으며, 따라서, 비트 레이트를 증가시킬 수 있음을 의미한다.
· 간격 B가 간격 A보다 크면, 그 매체가 이용 가능한 대역폭으로 실시간 전달될 수 없으며, 인코딩 비트 레이트가 감소되어야만 함을 의미한다.
현재 클럭 간격(간격 B)은 추정 전송 시간 또는 상한, 즉, 그 간격 동안에 버퍼에서 이동 유닛으로 변환 부호화된 매체 단편을 전송하는데 걸리는 시간(즉, 상술한 바와 같이, 버퍼를 떠나 링크에 의해 소모된 시간)을 제공한다. 현재 버퍼 간격(간격 A)은 현재 클럭 간격 동안에 전송된 변환 부호화된 매체 단편의 디스플레이 시간의 추정치이다. 매체를 디스플레이할 것으로 상정되는 이동 유닛내의 디스플레이 재생기는 본 발명의 실시 예의 시스템에 의해 직간접적으로 액세스될 수 없다. 그러나, 변환 부호화된 매체 단편의 적어도 일부에 내장되어 이동 유닛내의 비디오 재생기가 비디오를 실시 간으로 디스플레이하는데 이용하는 타임스탬프는 이 정보를 제공한다.
본 설명에 있어서, 용어 "단편"은 필요한 경우 명확성을 위해 여러 수식어(qulaifier)와 함께 이용된다. 매체 파일(328)(변환 부호화 전)은 "매체 단편"이라고도 하는 단편을 포함하며, 각 매체 단편은 예를 들어 하나 이상의 비디오 프레임들, 또는 변환 부호화기의 동작에 충분한 최소 수밀리초의 오디오(minimum number of milliseconds of audio)에 대응한다. 각 매체 단편은 변환 부호화될 수 있는 충분한 크기를 갖는다. 변환 부호화 후, 대응하는 "변환 부호화된 매체 단편'은 "매체 단편"과 동일한 의미의 내용을 가지지만, 일반적으로 보다 적은 수의 비트들을 포함한다. "변환 부호화된 매체 단편"은 이동 유닛으로 전송(스트리밍)되는데, 다수의 연속하는 "변환 부호화된 매체 단편들"의 그룹이 "스트림 단편"을 형성한다. 본 발명의 실시 예에 따르면, "스트림 단편"은 이동 유닛에서 실시 간으로 디스플레이되는데 대략 3초가 걸리는 변환 부호화된 매체 단편들인, 대략 3초의 실시간 비디오 또는 오디오를 나타내는 다수의 "변환 부호화된 매체 단편"을 포함한다. 이러한 "디스플레이 시간"은 원본 "매체 파일" 및 "변환 부호화된 매체 단편"에 내장된 타임스탬프에 의해 특정된다. "변환 부호화된 매체 단편"은 변환 부호화된 버퍼를 통해 전송되기 때문에, 변환 부호화된 매체의 이들 버퍼링된 단편을 간단히 "변환 부호화된 버퍼" 또는 "변환 부호화된 버퍼 단편"이라고 지칭하기도 한다.
HTTP 접속이 비디오 재생기로부터 피드백(feedback)을 제공하지 않기 때문에, DBRA 알고리즘은 또한 비디오 재생기가 중지되는 경우들을 검출하거나 또는 보다 정확히 말하면 "추측"을 시도한다. 그러한 경우에 있어서, 원격 유닛내의 재생기 버퍼는 궁극적으로 가득 채워지고, 그 재생기는 데이터 판독을 중지하며, 그에 따라 간격 비교는 인코딩 레이트와 전달 레이트간에 크게 차이나게 된다. 이것은 네트워크나 대역폭 문제는 아니며, 또한 비트 레이트를 감소시킬 이유도 되지 않는다.
사용자 중지의 이하의 속성들이 인식되는데, 이는 그들이 사용자 중지의 표시자(indicator)인 것으로 추정되기 때문이다.
1. 벽 시계 간격은 각 반복에서 조정되는 평균 벽 시계 간격보다 크다.
2. 벽 시계 간격은 1초 초과만큼 더 크다.
3. 벽 시계 간격은 평균 벽 시계 간격이 4배 승산된 것 보다 크다.
4. 중지는 2차례를 초과하여 발생하지 않았다.
중지 경우가 검출되면, 비트 레이트는 정정되지 않으며, 이러한 불규칙한 반복에 대한 벽 시계 간격은 폐기된다. 즉, 추가 반복이 영향받는 것을 방지하기 위해 벽 시계 간격 평균이 재 조정된다.
이하의 도면에서의 흐름도의 도움과 함께 DBRA(310)의 기능의 보다 상세한 설명을 제공하겠다.
도 4에는 동적 비트 레이트 적응 프로세스(400)의 흐름도가 도시되며, 그 프로세스는:
402: "변환 부호화 시작" 단계;
404: "다음 변환 부호화된 버퍼 생성" 단계;
406: "변환 부호화된 버퍼 전송" 단계;
408: "QoS 재 평가" 단계;
410: "QoS 값이 변경되었나?" 단계;
412: "새로운 QoS 값 적용" 단계;
414: "변환 부호화 완료?" 단계;
416: "종료" 단계를 포함한다.
"다음 변환 부호화된 버퍼 생성" 단계(404) 내지 "변환 부호화 완료?" 단계(414)는, 매체가 완전히 변환 부호화되어 전송될 때까지 실행되는 동적 비트 레이트 적응 루프(418)를 형성한다. 그 루프는 또한 세션이 중단되면 멈춘다.
"변환 부호화 시작" 단계(402)는 매체의 변환 부호화 시작점이다. 그것은 매체가 변환 부호화되어 클라이언트에 제공되도록 새로운 세션이 생성되는 시점을 나타낸다.
"다음 변환 부호화된 버퍼 생성" 단계(404)는 변환 부호화된 매체의 버퍼링된 단편, 간단히 "변환 부호화된 버퍼"를 생성함에 의해 매체 파일(328)의 단편을 변환 부호화된 매체 단편으로 변환 부호화하는 단계를 나타낸다. 그것은 원본 매체, 즉, 매체 파일(329)에 대해 변환 부호화기(314)에서 인코딩 알고리즘을 적용함에 의해 생성된다.
"변환 부호화된 버퍼의 전송" 단계(406)에서는, 하나의 변환 부호화된 버퍼(변환 부호화된 매체 단편)가 원본 매체로부터 생성되면, 수립된 세션(established session)을 통해 클라이언트에 전송된다.
"QoS 재 평가" 단계(408)에서는, 현재 QoS 값이 재평가 또는 조정된다. 이 단계는 이하의 도 5에서 보다 상세하게 연장된다. QoS 값은 변환 부호화된 버퍼가 전송될 때마다 잠재적으로 재평가된다(조정된다). 이에 따라 비트 레이트는 버퍼가 전송됨에 따라 동적으로 조정될 수 있게 된다.
"QoS 값이 변경되었나?" 단계(410)에서는, 이전 단계에서의 재평가의 결과로서 QoS 값이 변경되었는지를 판단한다. QoS 값이 변경되었으면(단계 410에서 "예"로 진행), 도 10에서 보다 상세하게 연장된 "새로운 QoS 값 적용" 단계(412)에서 설명한 바와 같이 다음 변환 부호화된 버퍼의 생성을 위해 인코딩 비트 레이트를 변경하는데 새로운 QoS 값이 이용되며, 그렇지 않으면, "변환 부호화 완료?" 단계(414)(단계 410에서 "아니오"로 진행)를 실행한다.
"변환 부호화 완료?" 단계(414)에 있어서, 매체가 완전히 변환 부호화되어 전송되었는지를 판단한다. 변환 부호화가 되었으면(단계 414에서 "예"로 진행), "종료" 단계(416)와 함께 동적 비트 레이트 적응 프로세스(400)가 종료되고, 그렇지 않으면, 실행 루프가 "다음 변환 부호화된 버퍼 생성" 단계(404)로 되돌아 간다.
DBRA 알고리즘에서 이용되는 세션 변수들은 세션 변수 모듈(312)에 저장되며(도 3), 아래의 표 2에 목록으로 작성된다.
표 2: DBRA 알고리즘에 이용되는 세션 변수
변수 이름 약어 설명
현재 시간 CT 실시간으로 증가하는 현재 벽 시계 시간
클럭간격평균 CIA 2개의 QoS 재 평가들간의 벽 시계 차이의 계산된 평균값. 알고리즘이 새로운 재 평가를 실행하기 전에 적어도 3초 대기하기 때문에, 이것은 그 변수에 대한 최소값이다. 그것은 매체가 중지될 때를 검출하고자 시도하는데 이용되는 요소들 중 하나이다. 중지가 발생하면, 현재클럭간격의 값은 클럭간격평균보다 훨씬 높게 될 가능성이 가장 높다.
클럭간격합 CIS QoS의 후속 재평가들간의 모든 계산된 벽 시계 차이들의 합. 다시 말해, 그것은 모든 현재클럭간격 값의 합이다. 그것은 각 QoS 재 평가에서 클럭간격평균을 갱신하는데 이용된다.
현재버퍼간격 CBI 직전에 전송되엇던 변환 부호화된 데이터 버퍼의 타임스탬프와 이전에 전송되었던 것간의 차이
현재버퍼타임스탬프 CBT 직전에 전송되었던 변환 부호화된 데이터 버퍼의 타임스탬프
현재클럭간격 CCI 이전의 변환 부호화된 데이터 버퍼가 전송되었을 때의 벽 시계 시간과 현재 벽 시계 시간간의 차이
델타 Delta QoS를 재평가 할 때, 현재버퍼간격과 현재클럭간격간의 (양(positive)의)차이. 이것은 실시간으로부터의 편차를 계산하는데 있어서의 제 1 단계이다.
차이 Diff QoS를 재평가할 때, 현재버퍼간격과 현재클럭간격중 보다 높은 값으로 델타를 제산함에 의해 획득된 비율.
이것은 실시간으로부터의 편차를 계산하는데 있어서의 제 2 단계이다.
간격인덱스 CII 현재 간격의 인덱스. 그것은 QoS가 재평가되고 현재클럭간격이 3초를 초과할 때마다 증가된다. 간격인덱스는 클럭간격평균을 계산하는데 이용된다.
중지검출 PD 매체가 중지되었다고 판단했는지 여부를 나타내는 부울값(Boolean value)
중지추측카운트 PGC 매체가 아마도 중지되었다고 판단했던 횟수
이전버퍼타임스탬프 PBT (이전 간격인덱스 값으로) QoS 재 평가가 마지막으로 실행되었을 때 직전에 전송되었던 변환 부호화된 데이터 버퍼의 타임스탬프
이전클럭간격합 PCIS (이전 간격인덱스 값으로) QoS 재 평가가 마지막으로 실행되었을 때의 모든 현재클럭간격 값들의 합. 그것은, 중지가 검출되면, 클럭간격평균의 계산으로부터의 주어진 간격을 폐기하는데 이용된다. 이전클럭간격합과 간격인덱스로 그 값을 다시 계산함에 의해 그 데이터는 평균으로부터 제거된다.
이전QoS계산시간 PQCT QoS가 마지막으로 계산되었을 때의 벽 시계 시간. 그것은 현재클럭간격을 계산하는데 이용된다.
QoS QoS 각 간격마다 계산되고, 변환 부호화 비트 레이트를 정정하기 위해 필요한 경우 인코더로 전송되는 값. 1 미만의 값은 비트 레이트가 감소되어야 함을 인코더에 표시한다. 1 초과의 값은 비트 레이트가 증가될 수 있음을 표시한다.
변환부호화스로틀링레이트(TranscodingThrottlingRate) TTR 매체 비트 레이트가 아닌 클럭 레이트의 계수로서 변환 부호화 모드시에 매체가 클라이언트로 전송되는 레이트. 예를 들어, 1.0은 클럭 레이트와 동일하고, 2.0은 클럭 레이트의 2배이다.
도 5에는 도 4의 QoS 재 평가 단계(408)의 보다 상세한 흐름도가 도시되며, 그 단계(408)는:
502: "시작" 단계;
504: "TTR≥1.0?" 단계;
506: "제 1 QoS 계산?" 단계;
508: "QoS 계산의 초기화" 단계;
510: "현재 클럭 간격(CCI)과 현재 버퍼 간격(CBI)의 계산" 단계;
512: "CCI>Ns?" 단계;
514: "간격 인덱스 증가" 단계;
516: "클럭 간격 합 계산" 단계;
518: "클럭 간격 평균 계산" 단계;
520: "중지 검출" 단계;
522: "중지 검출?" 단계;
524: "중지 프로세스" 단계;
526: "CCI가 CBI와 동일?" 단계;
528: "QoS 계산" 단계; 및
530: "복귀" 단계를 포함한다.
Qos 재 평가 단계(408)는 "시작" 단계(502)와 함께 시작되어, 단계 504 내지 528에서 새로운 QoS값을 계산하고, "복귀" 단계(530)과 함께 복귀한다.
"TTR≥1.0?" 단계(504)에 있어서, 현재 변환 부호화 스로틀링 레이트가 1.0 이상인지를 판단한다. 그렇다면(단계 504에서 "예"로 진행), 다음 단계(506)를 실행하고, 그렇지 않으면(단계 504에서 "아니오"로 진행), 비트 레이트를 감소시키기 위한 변환 부호화가 필요치 않으며, 그 절차는 복귀한다(단계 530).
TTR은 세션이 구성되면 수립되는 파라메타이다. TTR이 1.0 미만이면, 변환 부호화가 실행되지 않으며, 그 절차는 즉시 복귀한다. TTR은 원본 매체가 변환 부호화되는 속도를 제어하기 위한 방법을 제공한다. TTR이 1.0이면, 약 1분내에 1분 매체(1 minute media)가 변환 부호화될 것이다. TTR이 2.0이면, 그 매체는 약 30초내에 변환 부호화될 것이다. 이 값은 변환 부호화 속도 대 CPU 사용 비율을 정정하기 위한 방법을 제공한다. TTR을 증가시키면 변환 부호화된 매체를 보다 빠르게 제공하지만 추가적인 CPU를 이용한다. 비트 레이트는 원본 및 변환 부호화된 매체 모두에 적용된다. 그 둘은 인코딩 비트 레이트를 가지지만, DBRA(310)의 작업은, 예를 들어, 원본보다 낮은 비트 레이트를 가진 변환 부호화된 매체가 되도록 보다 낮은 비트 레이트로 변환 부호화하도록 변환 부호화기(314)에 알려줌에 의해 요구된 변환 부호화된 매체의 비트 레이트를 동적으로 정정하기 위한 것이다.
"제 1 QoS 계산?" 단계(506)에서는, 이것이 이러한 세션에 대한 제 1 QoS 계산인지를 판단한다. 만약 그렇다면(단계 506에서 "예"로 진행), 여러 세션 변수들이 초기화되는 "QoS 계산의 초기화" 단계(508)를 실행한다. 단계(508)는 아래의 도 6에서 연장된다. 이것이 이러한 세션을 위한 제 1 QoS 계산이 아니면(단계 506에서 "아니오"로 진행), 단계(510)를 실행한다.
"현재 클럭 간격(CCI)과 현재 버퍼 간격(CBI)의 계산" 단계(510)에서는, 현재 클럭 간격과 현재 버퍼 간격이 아래와 같이 계산된다.
CCI:= CT-PQCT
CT는 현재 시간이고, PQCT는 이전 QoS 계산 시간이다.
CBI:= (CBT-PBT)/TTR
PBT는 이전 버퍼 타임스탬프이고, TTR은 변환 부호화 스로틀링 레이트이다.
CCI 및 CBI는 새로운 QoS 값의 계산에 이용된다. 현재 클럭 간격은 단계(528)에서 계산된 이전 QoS 계산 시간에서부터 현재 시간까지의 시간 주기이다. 현재 버퍼 간격은 단계(528)에서 계산된 이전 버퍼 타임스탬프에서부터 현재 버퍼 타임스탬프까지의 시간 주기을 변환 부호화 스로틀링 레이트로 제산함에 의해 획득된다. 변환 부호화 스로틀링 레이트(TTR)는, 매체 세션이 수립될 때(단계 402, 도 4) 구성 파일에 특정된다.
"CCI>Ns?" 단계(512)에서는, 현재 클럭 간격(CCI)이 N(N은 바람직하게 3으로 설정되지만, 예를 들어 2 내지 5초 사이일 수 있다)초의 최소 현재 클럭 간격을 초과하는지를 판단한다. 만약 그렇다면(단계 512에서 "예"로 진행), 다음 단계(514)를 실행하고, 그렇지 않으면(단계 512에서 "아니오"로 진행), 그 절차는 복귀한다(단계 530). N의 값은, 비디오 버퍼가 오버플로우(overflowing) 또는 언더플로우(underflowing)되는 것을 방지하기 위해, 이용 가능한 대역폭에 있어서의 변경에 충분히 빠른 응답을 제공하도록 선택된다. 단계(512)는, 현재 인코딩 레이트의 실제 재 평가(단계 528, "QoS 계산")가 대략 매 N초마다 주기적으로 유효하게 실행되는 것을 보장한다.
"간격 인덱스 증가" 단계(514)에서는, 현재 간격 인덱스(CII)가 증가된다. 간격 인덱스는 QoS가 재 계산될 때마다 증가되어야 한다. 그것은 간격 평균 계산시에 제수(divisor)로서 이용된다.
"클럭 간격 합 계산" 단계(516)에서는, 새로운 클럭 간격(현재 클럭 간격(CCI)))을 증가시킴에 의해 현재 클럭 간격 합(CIS)이 갱신된다. 클럭 간격의 합은, 클럭 간격 평균이 다음 단계에서 계산될 수 있도록 유지된다.
"클럭 간격 평균 계산" 단계(518)에서는, 상술한 단계(514)에서 설정되었던 현재 간격 인덱스(CII)로 현재 클럭 간격의 합(CIS)을 제산한 결과로서 클럭 간격 평균(CIA)이 계산된다.
"중지 검출" 단계(520)에서는, 사용자가 매체를 중지시켰을 가능성이 있음을 추측으로서 나타내기에 경험적으로 충분한 상황이 분석된다. 그것은 정보에 근거한 추측일 뿐, 확실한 것은 아니다. 단계(520)는 아래의 도 7에서 연장된다.
"중지 검출?" 단계(522)에서는, 이전 단계(520)의 결과가 이용되어, 사용자가 매체를 중지시켰을 가능성이 있는지를 판단한다. 중지가 검출되었으면(단계 522에서 "예"로 진행), 다음 단계(524)에서 중지가 처리되고, 그렇지 않으면(단계 522에서 "아니오"로 진행), 단계(526)를 실행한다.
"중지 프로세스" 단계(524)에서는, 이용 가능한 대역폭이 부정확하게 하향 추정되지 않도록 알고리즘 변수가 조정된다. 아래의 도 8에서 보다 상세하게 연장되는 단계(524)는 사용자에 의해 개시되는 매체의 중지와 대역폭 문제를 구별하도록 하는데 필요하다. 그 둘은 버퍼 전송을 느리게 하거나 중지시킬 것이다.
"CCI가 CBI와 동일?" 단계(526)에서는, 최종 변환 부호화기 버퍼의 전송 시간이 벽 시계에 의해 표시된 바와 같이 실 시간에 대응하는지를 판단한다. 이것은 현재 버퍼 간격(CBI)과 현재 클럭 간격(CCI)의 동일성에 의해 입증된다. 그들이 동일하면(단계 526에서 "예"로 진행), QoS를 다시 계산할 필요가 없으며, 단계(408)는 단계(530)에서 복귀되어 종료되고, 그렇지 않으면(단계 526에서 "아니오"로 진행), 새로운 QoS 값이 다음 단계(528)에서 계산된다.
"QoS 계산" 단계(528)에서는, 동적 비트 레이트 적응 루프(418)의 다음 반복의 준비를 위해 새로운 QoS 값이 계산되는데, 이것은 이전 단계(526)에서 클럭과 버퍼 간격간에 차이가 있다고 판단된 경우 및 상술한 단계(522)에서 중지가 검출된 적이 없다고 판단된 경우에만 이루어진다. 단계(528) 이후, 단계(530)에서의 복귀에 의해 단계(408)의 프로세스가 종료된다. 단계(528)는 이하의 도 9에서 보다 상세하게 연장된다.
도 6에는, 도 5의 "QoS 계산의 초기화" 단계(508)의 연장된 흐름도가 도시되며, 그 단계는,
602: "이전 QoS 계산 시간 := 현재 시간" 단계;
604: "이전 버퍼 타임스탬프 := 현재 버퍼 타임스탬프" 단계;
606: "간격 인덱스 := 0" 단계; 및
608: "클럭 간격 합 := 0" 단계를 포함한다.
변환 부호화된 버퍼가 전송되면, 이전 QoS 계산 시간, 이전 버퍼 타임스탬프, 간격 인덱스 및 클럭 간격 합의 값들이 적립되지만, 새로운 세션이 시작될 때 및 제 1 변환 부호화된 버퍼가 전송되기 전에는, 이들 적립된 값들은 초기화되어야 한다(단계 602 내지 608에서).
"이전 QoS 계산 시간 := 현재 시간" 단계(602)에서는, 이전 QoS 계산 시간이 현재 시간으로 초기화된다. 실제로는 이전 QoS 계산 시간이 없는데, 그 이유는 이것이 단지 제 1 QoS 계산이기 때문이다. 그 값은 다음 QoS 계산에서 사용하기 위해 적립된다.
"이전 버퍼 타임스탬프 := 현재 버퍼 타임스탬프" 단계(604)에서는, 이전 버퍼 타임스탬프의 값이 현재 버퍼 타임스탬프로 초기화된다. 실제로는 이전 버퍼 타임스탬프가 없는데, 그 이유는 그것이 제 1 버퍼이기 때문이다. 그 값은 다음 QoS 계산에 이용되도록 적립된다.
"간격 인덱스 := 0" 단계(606)에서는, 간격 인덱스가 0으로 초기화된다. 이것은 제 1 간격이 아니며, 그 이유는 제 1 간격이 첫번째 2개의 버퍼로부터 계산되기 때문이다.
"클럭 간격 합 := 0" 단계(608)에서는, 클럭 간격 합이 0으로 초기화된다. 클럭 간격 합은 아직 없는데, 그것은 단계(606)에서 설명한 대로 제 1 간격이 아직 존재하지 않기 때문이다.
도 7에는 도 5의 "중지 검출" 단계(520)의 연장된 흐름도가 도시되며, 그 단계는,
702: "간격 인덱스>1?" 단계;
704: "중지 추측 카운트<MP?" 단계;
706: "(CCI - CIA)> XCs?" 단계;
708: "CCI>(CIA*M)?" 단계;
710: "중지 검출됨 := '참'" 단계; 및
712: "중지 검출됨 := '거짓'" 단계를 포함한다.
단계(702) 내지 단계(708)는 중지가 검출되는지를 판단하도록 검사받는 다수의 조건들을 포함한다. 이들 조건들의 모두가 참인 경우에만, 중지가 일어난 것으로 간주된다.
"간격 인덱스>1?" 단계(702)에서는, 간격 인덱스가 1보다 큰지를 판단한다. 만약 아니면(단계 702에서 "아니오"로 진행), 단계(712)로 점프하여 실행하고, 그렇지 않으면, 다음 단계(704)에서 다음 조건이 검사된다.
"중지 추측 카운트<MP?" 단계(704)에서는, 중지 추측 카운트, 즉, 검출된 중지의 횟수가 검출된 중지의 최대 횟수 "MP" 미만인지를 판단하는데, 이때 MP의 값은 3으로 설정됨이 바람직하다. 만약 아니면(단계 704에서 "아니오"로 진행), 단계(712)로 점프하여 실행하고, 그렇지 않으면, 단계(706)에서 다음 조건이 검사된다.
"(CCI - CIA)> XCs?" 단계(706)에서는, 현재 클럭 간격(CCI)이 계산된 클럭 간격 평균(CIA)보다 수 초의 마진 "XC"을 초과하여 더 큰지를 판단하는데, 이때 마진 XC의 값은 1로 설정됨이 바람직하다. 만약 아니면(단계 706 에서 "아니오"로 진행), 단계(712)로 점프하여 실행하고, 그렇지 않으면, 단계(708)에서 다음 조건이 검사된다.
"CCI>(CIA*M)?" 단계(708)에서는, 현재 클럭 간격(CCI)의 값이 계산된 클럭 간격 평균(CIA)보다 계수 "M"배를 초과하여 높은지를 판단한다. 만약 아니면(단계 708에서 "아니오"로 진행), 단계(712)로 점프하여 실행하고, 그렇지 않으면, 단계(710)를 실행한다. 계수 "M"은 4의 값으로 설정됨이 바람직하다.
"중지 검출됨 := '참'" 단계(710)에서는, 부울 변수 중지 검출(PD)이 '참'으로 설정되고 단계(520)의 프로세스가 종료된다.
"중지 검출됨 := '거짓'" 단계(712)에서는, 부울 변수 중지 검출(PD)이 '거짓'으로 설정되고, 단계(520)의 프로세스가 종료된다.
상수 "MP", "MC" 및 "M"의 바람직한 값은, 단순히 이용 가능한 대역폭에 있어서의 감소가 아니라 중지가 발생하였을 때를 검출하는데 있어서 정당한 "추측"을 제공하도록 선택되었음을 알아야 한다. 유효한 다른값들이 발견될 수 있다.
도 8에는 도 5의 "중지 프로세스" 단계(524)의 연장된 흐름도가 도시되며, 그 단계는,
802: "이전 클럭 간격 합 := 클럭 간격 합 - 현재 클럭 간격" 단계;
804: "클럭 간격 합 := 이전 클럭 간격 합 + (이전 클럭 간격 합/(간격 인덱스 - 1))" 단계; 및
806: "중지 추측 카운트 증가" 단계를 포함한다.
단계(524)의 프로세스에 있어서, 검출된 사용자 중지는 관련 변수들을 갱신함에 의해 처리된다.
"이전 클럭 간격 합 := 클럭 간격 합 - 현재 클럭 간격" 단계(802)는 PCIS := CIS - CCI로서 보다 정밀하게 표현될 수 있다. 현재 클럭 간격 합을 현재 클럭 간격의 값으로 공제함에 따라, 이전 클럭 간격 합의 값은 그의 이전 값으로 리셋된다.
"클럭 간격 합 := 이전 클럭 간격 합 + (이전 클럭 간격 합/(간격 인덱스 - 1))" 단계(804)는 CIS := PCIS + (PCIS/(II - 1))로서 보다 정밀하게 표현될 수 있다. 현재 클럭 간격 합의 값은 이전 클럭 간격 합을 1 미만의 간격(현재 중지 간격)의 횟수로 제산함으로써 계산된 평균 증가만큼 증가된 정정된 이전 클럭 간격 합으로부터 추정된 값으로 설정된다.
PGC := PGC + 1로서 보다 정밀하게 표현되는 "중지 추측 카운트 증가" 단계(806)에서는, 중지가 특정 제한치보다 높게 검출되는 것을 방지하기 위해 중지 추측 카운트가 1 증가된다(상기 단계 704 참조).
단계(524)의 프로세스는 주로, 비 정상적으로 긴 클럭 간격이 사용자 중지의 검출을 초래한 후, 클럭 간격 합(및 그에 따른 클럭 간격 평균)을 정확하게 재 계산하는 것이다. 그러한 클럭 간격은 폐기되고, 평균 클럭 간격으로 대체됨으로써, 그들은 후속하는 계산에 영향을 미치지 못하게 된다. 그들은 기본적으로 무시되는데, 그 이유는 사용자 중지가 대역폭 문제가 아니며 비트 레이트의 정정을 야기하지도 않기 때문이다.
도 9에서는 도 5의 "QoS 계산" 단계(528)의 연장된 흐름도가 도시되며, 그 단계는,
902: "CBI>CCI?" 단계;
904: "델타 1 := CBI - CCI" 단계;
906: "차이 1 := 델타 1/CBI" 단계;
908: "차이 1>TH1?" 단계;
910: "QoS := 1.0 + 차이 1/AF1" 단계;
912: "델타 2 := CCI - CBI" 단계;
914: "차이 2 := 델타 2/CCI" 단계;
916: "차이 2>TH2?" 단계;
918: "QoS := 1.0 + 차이 2/AF2" 단계;
920: "이전 QoS 계산 시간 := 현재 시간" 단계; 및
922: "이전 버퍼 타임스탬프 := 현재 버퍼 타임스탬프" 단계를 포함한다.
단계(528)의 프로세스에 있어서, QoS 값은 현재 클럭 간격(CCI)과 현재 버퍼 간격(CBI)간의 차이로부터 추정되는 명확한 링크 대역폭에 있어서의 임의의 변경을 평가하고, 그 변경을 추종하도록 QoS를 증감시킴에 의해 재 계산된다.
도 3의 QoS 조정기 모듈(320)의 기능의 예시인 비트 레이트 적응 기능(924)에 단계(902) 내지 단계(918)가 제공된다.
"CBI>CCI?" 단계(902)에서는, CBI(현재 버퍼 간격)의 값이 CCI(현재 클럭 간격)의 값보다 큰지를 판단한다. CBI가 CCI보다 크면, QoS의 값은 단계(904) 내지 단계(910)에서 계산된대로 증가할 것이지만, 그렇지 않을 경우에는, QoS의 값은 단계(912) 내지 단계(918)에서 계산된대로 감소할 것이다. 단계(902)는 이전 단계(526)(도 5)에서 판단된 바와 같이, CBI가 CCI와 동일하지 않을 경우에만 시작된다.
"델타 1 := CBI - CCI" 단계(904)는, 현재 버퍼 간격이 현재 클럭 간격보다 큰 경우, 즉, 비트 레이트가 증가되어야만 할 경우, 현재 클럭 간격과 현재 버퍼 간격간의 델타(델타 1)의 계산을 나타낸다.
"차이 1 := 델타 1/CBI" 단계(906)는, 현재 버퍼 간격이 현재 클럭 간격보다 얼마나 더 큰지를 나타내기 위해 제 1 상대적 차이(차이 1)의 계산을 나타낸다. 차이 1의 값은 단계(904)에서 계산된 델타(델타 1)를 현재 버퍼 간격으로 제산함에 의해 획득된다. 그 다음 단계(910)에서 새로운 QoS 값이 계산될 것이지만, 이러한 계산은 차이 1이 "차이 1>TH1?" 단계(908)에서 판단된 바와 같이 제 1 임계치 "TH1"보다 큰 경우에만 이루어진다. 그 임계치는 매우 낮은 변동(fluctuation)에 대한 비트 레이트 정정을 방지하는데 도움을 준다.
"차이 1>TH1?" 단계(908)에서는, 이전 단계에서 계산된 제 1 상대적 차이가 제 1 임계치를 초과하는지를 판단한다. 제 1 임계치(TH1)는 5%의 상대적 차이에 대응하는, 적어도 0.05의 값으로 설정됨이 바람직하다. 제 1 상대적 차이가 제 1 임계치를 초과하면(단계 908에서 "예"로 진행), QoS 값이 조정되는 다음 단계(910)를 실행하고, 그렇지 않으면, QoS는 조정되지 않고 단계(920)로 점프하여 실행한다.
"QoS := 1.0 + 차이 1/AF1" 단계(910)는, 비트 레이트가 제 1 증가값만큼 증가되어야 한다고 판단되는 경우에 새로운 QoS 값을 계산하는 방법을 나타낸다. 1.0의 값은 정정이 없음을 나타내기 때문에, 그보다 낮은 QoS값은 비트 레이트 감소를 나타내고, 그보다 높은 QoS값은 비트 레이트 증가를 나타낸다. 따라서, 이 경우에 조정된 QoS 값은 1.0보다 클 것이다. 단계(910)에서, 상술한 단계(906)으로부터의 제 1 상대적 차이(차이 1)를 바람직하게 대략 8.0의 값을 가진 제 1 감쇄 계수 "AF1"으로 제산함으로써 제 1 증가값이 계산된다. 1.0이 가산된 제 1 증가값이 인코더에 전송될 새로운 QoS값이며(도 4의 단계 412), 그에 따라 제 1 증가값만큼 (인코딩 비트 레이트에 대응하는) QoS 계수가 증가된다.
"델타 2 := CCI - CBI" 단계(912)는, 현재 버퍼 간격이 현재 클럭 간격보다 크지 않는 경우, 즉, 비트 레이트가 감소되어야 하거나 변경되지 않은 채로 유지되어야 하는 경우에, 현재 클럭 간격과 현재 버퍼 간격간의 델타(델타 2)의 계산을 나타낸다.
"차이 2 := 델타 2/CCI" 단계(914)는 현재 클럭 간격이 현재 버퍼 간격보다 얼마나 더 큰지를 나타내는 비율로서의 제 2 상대적 차이의 계산을 나타낸다. 차이 2의 값은 단계(912)에서 계산된 델타(델타 2)를 현재 클럭 간격으로 제산함에 의해 획득된다. 그 다음, 단계(918)에서 새로운 QoS 값이 계산될 것인데, 이것은 차이 2가 "차이 2>TH2?" 단계(916)에서 판단된 바와 같이 제 2 임계치 "TH2"보다 큰 경우에만 이루어진다. 이것은 매우 낮은 변동에 대한 비트 레이트 정정을 방지하는데 도움을 준다.
"차이 2>TH2?" 단계(916)에서는, 이전 단계에서 계산된 제 2 상대적 차이가 제 2 임계치를 초과하는지를 판단한다. 제 2 임계치(TH2)는 2%의 상대적 차이에 대응하는, 적어도 0.02의 값으로 설정됨이 바람직하다. 제 2 상대적 차이가 제 2 임계치를 초과하면(단계 916에서 "예"로 진행), QoS 값이 조정될 다음 단계(918)를 실행하고, 그렇지 않으면, 단계(920)로 점프하여 실행한다.
임계치 TH1 및 TH2는 매우 낮은 변동에 대한 불 필요한 비트 레이트 정정을 방지하는데 도움을 준다.
"QoS := 1.0 + 차이 2/AF2" 단계(918)는, 비트 레이트가 제 2 증가값만큼 감소되어야 한다고 판단되는 경우에 새로운 QoS 값을 계산하는 방법을 나타낸다. 단계(918)에서, 상술한 단계(914)으로부터의 제 2 상대적 차이(차이 2)를 바람직하게 대략 6.0의 값을 가진 제 2 감쇄 계수 "AF2"로 제산함으로써 제 2 증가값이 계산된다. 1.0이 가산된 제 2 증가값이 인코더에 전송될 새로운 QoS값이며(도 4의 단계 412), 그것은 제 2 증가값만큼 (인코딩 비트 레이트에 대응하는) QoS 계수를 감소시킨다.
감쇄 계수들(AF1 및 AF2)의 값은 조정 알고리즘의 안정성을 보장하도록, 즉, 인코딩 레이트(QoS 값)의 과도한 또는 너무 신속한 과잉-정정을 방지하도록 선택되었다. 어떠한 조정 계수 없는, 인코딩 레이트의 각각의 조정은 인코딩 레이트가 각 조정에 따라 너무 높은 곳에서 너무 낮은 곳으로 계속적으로 바운스(bounce)되게 한다. 조정 계수는 각 정정의 영향을 감소시키고, 일종의 댐핑 효과(damping effect)를 가지며, 그에 따라, 이상적으로 인코딩 레이트는 다수의 조정 간격을 통해 점차적으로 전송 비트 레이트에 근접하게 된다. 다른 한편, 조정 계수가 너무 크면(과도한 댐핑), 전송 비트 레이트로의 인코딩 레이트의 근접성이 너무 느려질 것이다. 조정 계수(AF1 및 AF2)를 사려깊게 선택함에 의해, 충분히 신속한 정정이 달성된다.
"이전 QoS 계산 시간 := 현재 시간" 단계(920)에서는, PQCT의 값이 동적 비트 레이트 적응 루프(418)(도 4)의 다음 반복에서의 계산 단계(510)(도 5)에서 이용될 수 있도록, 각 QoS 계산 이후에 이전 QoS 계산 시간(PQCT)으로서 현재 시간을 적립한다.
유사하게, "이전 버퍼 타임스탬프 := 현재 버퍼 타임스탬프" 단계(922)에서는, PBTS의 값이 동적 비트 레이트 적응 루프(418)(도 4)의 다음 반복에서의 계산 단계(510)(도 5)에서 이용될 수 있도록, 각 QoS 계산 이후에 이전 버퍼 타임스탬프(PBTS)로서 현재 버퍼 타임스탬프를 적립한다.
파라메타 "TH1", "TH2", "AF1" 및 "AF2"의 바람직한 값은 설명된 바람직한 조정 동작을 제공하도록 선택되었다. 다른 값들이 동일하거나 보다 양호하게 작용할 수 있다. 예를 들어, "TH1" 및 "TH2"는 각각 적어도 0.05 및 0.02로 설정되도록 제안되며, "AF1" 및 "AF2"의 제안값들(각각 8.0 및 6.0)은 단지 대략적인 것일 뿐이다.
도 10에는 도 4의 "새로운 QoS 값 적용" 단계(412)의 연장된 흐름도가 도시되는데, 그 단계는,
1002: "인코더에 QoS 정정 요청을 통지" 단계;
1004: "QoS 정정 요청 허용" 단계;
1006: "현재 인코딩 비트 레이트에 QoS 적용" 단계; 및
1008: "인코딩 비트 레이트 바운스" 단계를 포함한다.
단계(1002)는 갱신된 QoS 값이 변환 부호화기(314)(도 3)에 전송되면 동적 비트 레이트 어댑터(310)(도 3)에서 수행되며, 변환 부호화기(314)에서는 잔여 단계들(1004 내지 1008)이 수행된다. 변환 부호화기(314)는 가변 비트 레이트 변환 부호화기 서브시스템(202)내의 DBRA 어댑터(310)로부터 QoS 정정 통지를 수신하는 기능을 가짐을 알아야 한다.
"인코더에 QoS 정정 요청을 통지" 단계(1002)에서는, QoS 통지를 포함하는 이벤트(event)가 동적 비트 레이트 어댑터(310)에서 변환 부호화기(314)로 전송된다.
"QoS 정정 요청 허용" 단계(1004)에서는, 변환 부호화기(314)에 의해 QoS 통지가 수신되고 허용된다.
"현재 인코딩 비트 레이트에 QoS 적용" 단계(1006)에서는, 이러한 변경 통지가 수신되면 변환 부호화기(314)가 활성 인코딩 비트 레이트를 정정한다. 비트 레이트에 있어서의 차이는 새로운 QoS 값에 좌우되며, 그 값에 비례한다.
"인코딩 비트 레이트 바운스" 단계(1008)에서는, 인코딩 비트 레이트를 새로운 QoS 값에 대응하도록 정정하는 동안, 실제 인코딩 비트 레이트가 구성된 최소 및 최대값내에 있도록 보장하며, 이것은 새로운 QoS 값을 적용함으로 인해 수학적으로 그 범위 밖의 비트 레이트를 이끌지라도 그러하다.
본 발명의 실시 예의 DBRA 알고리즘(원 서비스(original service)로서 지칭하기도 함)은 이하의 단계에서 요약된다.
(a1) HTTP 세션(변환 부호화 세션, 또는 간단히 "세션")은 서버 또는 프록시(proxy)와 이동 유닛 사이에 수립된다.
(b1) 초기 비트 레이트(인코딩 레이트)는 이동 유닛에 의해 수립된다.
(c1) 이동 유닛은 HTTP-GET를 이용하는 매체 파일을 요청한다.
(d1) 변환 부호화된 매체는 그의 전체가 서버로부터 전송되며, 비트 레이트는 상술한 바와 같이 처리되고, 이동 유닛으로부터 수신되는 추가적인 GET 요청은 없다.
(e1) 변환 부호화된 매체가 전송되었으면, HTTP 세션이 종료된다.
세션 구성에 있어서의 이동 유닛의 프로파일과 변환 부호화되고 있는 원본 매체의 비트 레이트로부터 초기 비트 레이트가 판정된다. 원 서비스는 매체를 점진적으로 변환 부호화하여 임의의 추가적인 HTTP 요청 수신 없이도 클라이언트에게 전송한다. 매체가 전송되었으면(또는 클라이언트가 중단시키면) 세션은 종료된다. 비트 레이트는 모든 버퍼가 전송된 후에 정정될 수 있다.
본 발명의 다른 실시 예에 있어서, 이하의 단계에서 요약된 정정된 DBRA 알고리즘(정정된 서비스라고도 함)이 제안된다.
(a2) 변환 부호화(HTTP) 세션은 서버 또는 프록시와 이동 유닛 사이에 수립된다.
(b2) 초기 비트 레이트는 이동 유닛에 의해 수립된다.
(c2) 이동 유닛은 HTTP-GET를 이용하는 매체 파일의 세그먼트만을 요청한다.
(d2) 변환 부호화된 매체 세그먼트는 서버로부터 전송되고, 비트 레이트는 세그먼트의 전송 동안에 처리되지 않는다.
(e2) 세그먼트가 전송되었으면, 그 시점에 이동 유닛이 다른 세그먼트를 요청할 것을 결정할(GET) 때까지, 그 세션은 유예된다.
(f) 이전 세그먼트 전송의 적립된 파라메타로부터 다음 세그먼트에 대한 새로운 비트 레이트가 계산된다.
(g) 변환 부호화 세션이 계속된다. 즉, 단계(c2)로 진행한다.
이동 유닛에 의해 요청되는 각 세그먼트는 하나 이상의 매체 단편으로 이루어져 있음을 알아야 한다. 정정된 서비스의 변환 부호화된 매체 세그먼트는 인코딩 레이트 조정의 견지에서 원 서비스의 스트림 단편에 유효하게 대응하며, 그 차이는 원 서비스의 스트림 세그먼트가 시간(대략 N초 간격)으로 묘사되지만, 정정된 서비스에서는 변환 부호화된 매체 세그먼트(스트림 단편)가 이동 유닛에 의해 요청되기 때문에 세그먼트에 의해 정의된다는 점이다.
정정된 DBRA 알고리즘은, 변환 부호화 세션(HTTP 세션)내의 개별적이지만 관련된 짧은 세그먼트 세션(TCP 세션)이 매체 콘텐츠를 다운로딩하기 위해 수립되는, Apple Inc에 의해 제조되는 iPhone과 같은 특정 스마트폰에 의한 사용 규약에 매칭되도록 고안되었다.
정정된 DBRA 알고리즘에 있어서, 초기 비트 레이트는 이동 유닛의 프로파일(구성)과 변환 부호화되고 있는 원본 매체의 비트 레이트로부터 판정된다. 클라이언트, 즉, 이동 유닛은 HTTP를 이용하는 매체를 요청한다. 그것은 우선적으로 어느 세그먼트가 존재하는지 및 그들이 어디에 배치되는지를 알려주는 재생목록(playlist)을 수신하는데, 아직 변환 부호화가 수반된 것은 아니다. 그 다음, 클라이언트는 HTTP를 이용하는 세그먼트를 요청한다. 그러한 제 1 요청을 수신하면, 정정된 서비스에 의해 서버상에 변환 부호화 세션이 생성된다. 변환 부호화 세그먼트 상태로 유지되는 정보, 즉, 시간 간격들에 기초하여 각 세그먼트에 적용하기 위한 연속하는 비트 레이트 조정이 판정된다. 정정된 서비스는 변환 부호화하여 변환 부호화된 매체 단편내에 변환 부호화된 세그먼트를 전송한다. 변환 부호화된 매체 단편(변환 부호화된 버퍼)은, 그 세그먼트의 끝이 도착할 때 까지 클라이언트에 전송된다. 다음 세그먼트가 재생목록의 최종 세그먼트이었거나 클라이언트가 중단시킴으로써, 그 시점에 변환 부호화 세션이 서버상에 종료되는 경우가 아니라면, 클라이언트는 다음 세그먼트를 요청한다. 정정된 서비스는, 각 변환 부호화 세그먼트가 동일 변환 부호화 세션이 일부임을 인식하고, 재 조정된 비트 레이트를 가진 다음 요청된 세그먼트들의 각각을 변환 부호화하여 그것을 전송한다.
세그먼트가 변환 부호화되기 전, 변환 부호화 세그먼트 상태는 초기(원본) 비트 레이트에 적용하기 위한 백분율을 판단하는데 사용된다. 변환 부호화 비트 레이트는 초기 비트 레이트보다 높을 수 없으며, 그에 따라 백분율은 100%를 초과할 수 없다.
원 서비스는 단일 세션내의 매체 파일의 전송을 제공하는데, 그 동안 (단일 변환 부호화된 매체 단편을 포함할 수 있는) 각 변환 부호화 스트림 단편이 전송되고 나면 변환 부호화기 비트 레이트가 조정될 수 있으며, 반면에 정정된 서비스에서는 개별적 세그먼트(매체 세그먼트라고도 함)가 별도로 관련된 세그먼트 세션내에 전송되고, 원래 수립된 비트 레이트가 사용되는 제 1 세션 전을 제외한 각 세그먼트 세션전에 변환 부호화기 비트 레이트가 재조정된다. 또한, 세그먼트가 일련의 변환 부호화된 버퍼(변환 부호화된 매체 단편)로서 전송될 지라도, 동일 세그먼트에 있어서 버퍼들간에 이루어지도록 의도된 비트 레이트 정정은 없다.
초기 세그먼트에 대한 QoS 값(비트 레이트)은 이동 유닛에 의해 수립되며, 이동 유닛의 특성의 함수이다. 후속하는 각 세그먼트의 변환 부호화가 시작되기 전에, 이하의 도 12에 상세하게 설명된 바와 같이 QoS 값이 계산된다(세그먼트 시작 간격에 의해 제산되고, 이전 세그먼트가 요청되었을 때 마지막으로 적립되었던 QoS에 의해 승산된 최종 세그먼트의 기간). "누적" 보관된 QoS값을 최종 세그먼트에 기초하여 계산된 값으로 승산함에 의해, 세그먼트가 요청될 때마다 변환 부호화기 비트 레이트(즉, QoS)가 재조정된다. 그 값은 다음 세그먼트의 변환 부호화의 시작전에 세그먼트의 초기 비트 레이트에 적용하기 위한 계수를 제공한다. 세그먼트 요청이 그 요청에 표시된 초기(원본) 비트 레이트를 가진 세그먼트 파일에 대한 새로운 접속이기 때문에, 초기 비트 레이트의 얼마의 백분율에서 다음 세그먼트가 변환 부호화되어야 하는지를 기억할 필요가 있다. 그 백분율은 다른 세그먼트가 요청될 때마다 조정된다.
정정된 서비스의 "시작 간격"은 원 서비스의 "현재 클럭 간격"에 대응하며, 그 둘은 추정 디스플레이 시간과의 비교를 위한 추정 전송 시간 - 단편들의 세그먼트의 디스플레이 시간(정정된 서비스) 대(verse) 스트림 단편, 즉, 각각 대략 3초의 간격으로 전송되는 변환 부호화 단편들의 디스플레이 시간(원 서비스) - 을 계산하는데 이용된다.
정정된 서비스에 있어서, 비트 레이트가 세그먼트 동안에 가변될 필요가 없도록, 즉, 이전 매체 단편이 전송되고 난 후에 수립된 비트 레이트로 다수의 변환 부호화된 버퍼(변환 부호화된 매체 단편)가 전송되도록, 매체 세그먼트는 충분히 짧은 것으로 상정된다. 비트 레이트는 단지 세그먼트들간에만 가변될 수 있다.
원 서비스에 있어서의 중지 검출은, 최종 클럭 간격이 비 정상적으로 길었는지를 판단하기 위해 클럭 간격 평균을 이용한다. 정정된 서비스에 있어서의 중지 검출은, 최종 시작 간격이 훨씬 더 길었는지는 판단하기 위해 시작 간격(2개의 세그먼트 요청들간의 시간)의 대응하는 평균을 이용한다. 그러므로, 세그먼트의 전송 동안에 시도되는 중지 검출은 없다. 중지가 검출된다면, 이것은 세그먼트가 요청되어 오래전에 최종 세그먼트가 요청되었음을 알게 된 경우일 것이다. 다른 조건(중지가 검출된 횟수 및 간격이 얼마나 정상에서 벗어났는지 등)이 충족되면, 비디오가 중지되었다고 가정 또는 추측하여, 비트 레이트 정정이 실행되지 않는다.
2가지 실시 예, 즉, 세그먼트 동안에 중지 검출을 포함하는 각 세그먼트의 변환 부호화된 버퍼에 대해 원 서비스를 운영하고 그 다음 누적된 평균 세그먼트 비트 레이트에 따라 다음 세그먼트에 대해 QoS를 리셋하는 것을 조합하거나 또는 적어도 부분적으로 조합할 수 있다. 세그먼트내에 버퍼의 프로세싱을 위한 원 서비스의 일부를 통합할 수도 있다.
도 11에는 본 발명의 다른 실시 예에 따른 정정된 동적 비트 레이트 적응 프로세스(1100)의 흐름도가 도시되며, 그 프로세스는,
1102: "이동 유닛이 하나의 세그먼트를 다운로드하기 위해 접속" 단계;
1104: "세션이 존재?" 단계;
1106: "세션 생성" 단계;
1108: "세그먼트 QoS 재 평가" 단계;
1110: "세그먼트 QoS 값 적립" 단계;
1112: "적립된 세그먼트 QoS 적용" 단계;
1114: "세그먼트의 변환 부호화 시작" 단계;
1116: "다음 변환 부호화된 버퍼 생성" 단계(=404);
1118: "변환 부호화된 버퍼 전송" 단계(=406);
1120: "세그먼트의 끝이 도착되었나?" 단계를 포함한다.
정정된 동적 비트 레이트 적응(Modified Dynamic Bit Rate Adaptation: MDBRA) 프로세스(1100)는 단계 1102 내지 1120을 포함하는 루프를 포함하며, 이동 유닛이 매체 프로세싱 서버(302)(도 3)로부터 세그먼트의 재생 목록을 획득한 후에 시작한다. MDBRA 프로세스(1100)는 필요한 경우에 세그먼트를 다운로드하기 위해 접속한 이동 유닛에 의해 생성된 요청시에 매체 세그먼트의 변환 부호화 및 전송을 다룬다. 변환 부호화 세션은 제 1 접속이 수립되면 생성되어 후속하는 요청을 위해 이용된다. MDBRA 프로세스(1100)는 이동 유닛이 서버와의 접속을 종료하거나 중단하면(도 11에 도시되지 않음) 종료한다.
제 2 세그먼트에서 시작하여, "세그먼트 QoS 재 평가" 단계(1108)와 "세그먼트 QoS 값 적립" 단계(1110)는, 각각의 새로운 세그먼트가 요청된 후, 및 변환 부호화 직전에 실행되는데, 그 이유는 그때가 현재 세그먼트의 시작 간격을 알게 되는 시점이기 때문이다. 그 시점에, 현재 세그먼트 시작 간격으로 최종 세그먼트의 기간을 제산함으로써 계산되는 QoS 조정 계수와, 마지막 적립된 QoS 값(즉, 세그먼트를 요청했던 이전 시간)을 승산함에 의해, 단계 1108에서 설명된 바와 같이 새로운 QoS 값(인코딩 비트 레이트)이 계산될 수 있다. 다시 말해, QoS값은 계산이 이루어질 때마다 적립되고, 다른 세그먼트가 요청될 때마다 재조정되는데, 이것은 최종 세그먼트에 기초하여 계산된 값과 적립된 값을 승산함에 의해 이루어진다. 각 세그먼트 요청은 초기(원본) 비트 레이트를 가진 세그먼트 파일에 대한 새로운 접속이기 때문에, 초기 비트 레이트의 얼마의 백분율로 변환 부호화하는지를 각 세그먼트마다 기억할 필요가 있다. 그 백분율은 세그먼트가 요청될 때마다 조정된다.
"이동 유닛이 하나의 세그먼트를 다운로드하기 위해 접속" 단계(1102)에서는 이동 유닛이 접속하여 하나의 세그먼트를 요청한다.
"세션이 존재?" 단계(1104)에서는, 서버와 이동 유닛간에 변환 부호화 세션이 이미 존재하는지를 판단한다. 만약 그렇다면(단계 1104에서 "예"로 진행) 단계(1108)를 실행하고, 그렇지 않다면(단계 1104에서 "아니오"로 진행), 다음 단계(1106)에서 변환 부호화 세션이 생성된다.
"세션 생성" 단계(1106)에서는, 이동 유닛의 프로파일(구성)에 따라 초기 변환 부호화 비트 레이트(QoS = 1.0)가 수립된다. 그 다음 단계(1114)를 실행한다.
"세그먼트 QoS 재 평가" 단계(1108)에서는, 마지막으로 완료된 세그먼트를 변환 부호화하는데 이용되었던 적립 QoS 값이 재 평가되는데, 이것은 이와 같이 마지막으로 완료된 세그먼트와 이전의 세그먼트간의 시간 간격에 기초하여 이루어진다. 단계(1108)는 이하의 도 12에서 보다 상세하게 연장된다.
"세그먼트 QoS 값 적립" 단계(1110)에서는, 다음 세그먼트의 변환 부호화를 준비하기 위해 새로 계산된 세그먼트 QoS 값이 적립된다.
"적립된 세그먼트 QoS 적용" 단계(1112)에서는, 새로 적립된 QoS 값이 적용된다. 즉, 도 10에 상세하게 설명된 바와 같이 단계(412)와 유사하게 변환 부호화기(314)에 전송된다.
"세그먼트의 변환 부호화 시작" 단계(1114)에서는, 현재 세그먼트의 변환 부호화가 시작된다. 이 단계는 단계(402)와 유사하다.
MDBRA 프로세스(1100)의 "다음 변환 부호화된 버퍼 생성" 단계(1116)와 "변환 부호화된 버퍼 전송" 단계(1118)는 각각 DBRA 프로세스(400)의 단계(404) 및 단계(406)와 유사하다.
"세그먼트의 끝이 도착되었나?" 단계(1120)에서는, 현재 전송된 세그먼트의 끝이 도착했는지를 판단한다. 도착하지 않았으면(단계 1120에서 "아니오"로 진행), 다음 버퍼를 처리하기 위해 실행 루프가 단계(1116)로 되돌아 가지만, 도착하였으면(단계 1120에서 "예"로 진행), 이동 유닛에 의한 다음 세그먼트의 요청을 대기하기 위해 단계(1102)를 실행한다.
도 12에는 도 11의 세그먼트 QoS 재평가 단계(1108)의 보다 상세한 흐름도가 도시되며, 그 단계는
1202: "TTR≥1.0?" 단계;
1204: "제 1 세그먼트 QoS 계산?" 단계;
1206: "세그먼트 QoS 계산 초기화" 단계;
1208: 현재 시작 간격(CSI) 및 출력된 세그먼트 기간(Outputted Segment Duration: OSD)의 계산" 단계;
1210: "간격 인덱스 증가" 단계;
1212: "시작 간격 합 계산" 단계;
1214: "시작 간격 평균 계산" 단계;
1216: "세그먼트 중지 검출" 단계;
1218: "세그먼트 중지 검출?" 단계;
1220: "세그먼트 중지 프로세스" 단계;
1222: "최종 세그먼트 QoS := OSD/CSI" 단계;
1224: "SQoS := SQoS*최종 세그먼트 QoS" 단계를 포함한다.
세그먼트 QoS 재평가 단계(1108)는, 각각 클럭 간격 및 버퍼 간격을 대신하여 세그먼트 시작 간격과 출력된 세그먼트 기간 값의 이용으로 인한 차이를 가진 도 4의 DBRA 프로세스(도 5에서 연장됨)의 QoS 재 평가 단계(408)와 유사하다.
"TTR≥1.0?" 단계(1202)에서는, 현재 변환 부호화 스로틀링 레이트가 1.0 이상인지를 판단한다. 만약 그렇다면(단계 1202에서 "예"로 진행), 다음 단계(1204)를 실행하고, 그렇지 않으면(단계 1202에서 "아니오"로 진행), 비트 레이트를 줄이기 위한 변환 부호화를 요구하지 않고 그 절차는 복귀한다.
"제 1 세그먼트 QoS 계산?" 단계(1204)에서는, 이것이 세그먼트에 대한 제 1 QoS 평가인지를 판단한다. 세그먼트 QoS는 도 5의 단순한 QoS와 비교하여 차이가 있는데, 그 이유는 그 세그먼트 QoS가 변환 부호화기 버퍼 전송이 아니라 전체 세그먼트에 대한 변환 부호화기 비트 레이트를 판정하기 때문이다. 이것이 제 1 세그먼트 QoS 계산이라면(단계 1204에서 "예"로 진행), "세그먼트 QoS 계산 초기화" 단계(1206)를 실행하는데, 이것은 아래의 도 13에서 연장된다. 만약 이것이 제 1 세그먼트 QoS 계산이 아니라면(단계 1204에서 "아니오"로 진행) 단계(1208)를 실행한다.
"현재 시작 간격(CSI) 및 출력된 세그먼트 기간(Outputted Segment Duration: OSD)의 계산" 단계(1208)에서는, 현재 시작 간격 및 출력된 세그먼트 기간이 다음과 같이 계산된다.
CSI := CT - PSST
CT는 현재 시간이고, PSST는 이전 세그먼트 시작 시간이며, OSD는 최종 출력된 세그먼트의 기간임
단계(1208)는 도 5의 단계(510)와 얼마간 유사하지만, 최종 세그먼트의 변환 부호화된 매체 단편내에 내장된 타임스탬프에 의해 제공된, 최종 세그먼트의 기간(디스플레이 시간) 및 시작 시간(현재 시작 간격)에만 전적으로 의존한다.
"간격 인덱스 증가" 단계(1210)에서는, 현재 간격 인덱스(CII)가 증가된다. 간격 인덱스는, QoS가 재 계산될 때마다 증가된다. 간격 평균을 계산할 때 그것은 제수로서 이용된다. 단계(1210)는 도 5의 단계(514)와 동일하다.
"시작 간격 합 계산" 단계(1212)에서는, 현재 시작 간격만큼 시작 간격 합(SIS)이 증가된다. 단계(1212)는 도 5의 단계(516)와 유사하지만, 클럭 간격(CCI) 대신에 시작 간격(CSI)의 합을 제공한다.
"시작 간격 평균 계산" 단계(1214)에서는, 시작 간격 합을 간격 인덱스로 제산함에 의해 시작 간격 평균(SIA)이 계산된다. 단계(1214)는 도 5의 단계(518)와 유사하지만, 클럭 간격 대신에 시작 간격의 평균을 제공한다.
"세그먼트 중지 검출" 단계(1216)는 도 5의 "중지 검출" 단계(520)와 유사하지만, CCI 및 CIA 대신에, 중지 검출의 부울 값을 판정하기 위해 각각 CSI 변수 및 SIA 변수를 이용한다.
"세그먼트 중지 검출?" 단계(1218)는 도 5의 "중지 검출?" 단계(522)와 유사하지만, 단계(1218)에서는, 이용자가 매체를 중지시켰을 가능성이 있는지를 판단하기 위해 이전 단계(1216)의 결과를 이용한다. 세그먼트 중지는 세그먼트가 요청되어 오래전에 최종 세그먼트가 요청되었음을 알게 되면 검출될 것이다. 세그먼트 중지가 검출되었으면(단계 1218에서 "예"로 진행), 다음 단계(1220)에서 세그먼트 중지가 처리되며, 그렇지 않으면(단계 1218에서 "아니오"로 진행), 단계(1222)를 실행한다.
"세그먼트 중지 프로세스" 단계(1220)는 도 5의 "중지 프로세스" 단계(524)와 유사하며, 비정상적으로 긴 세그먼트 간격이 사용자 중지의 검출을 초래한 이후 (단계 524에서의 클럭 간격 합 대신에, 도 8 참조) 주로 세그먼트 시작 간격 합을 정확하게 재 계산한다.
"최종 세그먼트 QoS := OSD/CSI" 단계(1222)에서는 최종 세그먼트를 변환 부호화하는데 이용되었던 QoS 조정 계수(상대적 비트 레이트에 대응함)인 변수 "최종 세그먼트 QoS"가 계산되는데, 이 계산은 최종 출력된 세그먼트(OSD)의 기간, 즉 최종 세그먼트의 추정 디스플레이 시간을, 현재 시작 간격, 즉 최종 세그먼트의 추정 전송 시간으로 제산함에 의해 이루어진다.
"SQoS := SQoS*최종 세그먼트 QoS" 단계(1224)에서는, 최종 세그먼트 QoS가 현재 세그먼트 QoS에 의해 승산되어, 다음 세그먼트를 변환 부호화하는데 이용될 세그먼트 QoS로 된다. 단계(1224) 이후, 세그먼트 QoS 재평가 프로세스(1108)는 종료되고, 새로 계산된 세그먼트 QoS 값이 적립된다(도 11, 단계 1110에서).
도 13은 도 12의 "세그먼트 QoS 계산 초기화" 단계(1206)의 보다 상세한 흐름도이며, 그 단계는,
1302: 세그먼트 QoS를 1.0으로 초기화하기 위한 "세그먼트 QoS := 1.0" 단계;
1304: 이전 세그먼트가 아직 존재하지 않기 때문에, 이전 세그먼트 시작 시간을 "입수할 수 없음(N/A)"의 값으로 초기화하기 위한 "이전 세그먼트 시작 시간 := N/A" 단계;
1306: 간격 인덱스를 0으로 초기화하기 위한 "간격 인덱스 := 0" 단계;
1308: 시작 간격 합을 0으로 초기화하기 위한 "시작 간격 합 := 0" 단계를 포함한다.
단계(1206)의 목적은 제 1 세그먼트가 변환 부호화되기 전에 변수들을 초기화하기 위한 도 5의 단계(508)의 단계와 유사하다.
가변 대역폭을 가진 접속을 통한 전송을 위해 매체 파일의 대역폭 적응을 제공하는 방법 및 시스템이 본 발명의 실시 예에 의해 제공되며, 그에 따라 대역폭이 시간에 걸쳐 가변하는 네트워크를 통한 HTTP 멀티미디어 전달에 있어서의 사용자 경험을 개선한다.
HTTP와는 다른 네트워크를 통해 매체 파일을 스트리밍하는 프로토콜은 본 발명의 범주 이내이다. 그러한 프로토콜은 이동 유닛에서 동적 비트 레이트 어댑터로 피드백되는 애플리케이션 레벨을 제공할 필요가 없으며, 신뢰성있는 운송 메카니즘을 제공할 것으로 여겨진다.
또한, 중지를 검출하는 추가적인 파라메타 또는 방법이 고려될 수 있으며, 이론적 고려에 기반하여 또는 순수하게 실험적으로 구현될 수 있다. 그러한 개선은 본 개시의 범주 이내인 것으로 고려된다.
본 발명의 실시 예에 있어서, 변환 부호화기(314)는 프로세서에 의해 실행하기 위한 메모리에 저장된 컴퓨터 독출 가능 명령어를 가진 소프트웨어를 포함하지만, 대안적으로 변환 부호화기(314)는 DSP(Digital Signal Processor) 칩 또는 ASIC(Application Specific Integrated Circuit)내의 보조 프로세서(coprocessor)와 같은 별도의 프로세서상의 하드웨어로 구현될 수 있다.
본 발명의 특정 실시 예가 상세하게 설명되었지만, 설명된 실시 예는 예시적일 뿐 제한적이 아님을 알아야 한다. 그 실시 예들의 여러 변경 및 정정은 보다 넓은 측면에서 본 발명의 범주를 벗어남이 없이 이하의 청구범위의 범위 이내에서 이루어질 수 있을 것이다.

Claims (16)

  1. 종착지 유닛에 가변 대역폭 링크를 통해 실시간으로 전송하기 위한 매체 파일 또는 그의 일부를 인코딩하는 방법으로서,
    (ⅰ) 스트림 단편(stream fragment)을 형성하기 위해 매체 파일의 하나 이상의 단편을 변환 부호화된 매체 단편(transcoded media fragment)으로 인코딩하고;
    (ⅱ) 이전에 형성된 스트림 단편의 추정 전송 시간 - 상기 추정 전송 시간은 이전 형성된 상기 스트림 단편이 변환 부호화기로부터 운반되고 상기 가변 대역폭 링크에 의해 소모되는데 요구되는 시간 간격임 - 을 판정하고;
    (ⅲ) 상기 변환 부호화된 매체 단편의 현재 인코딩 레이트(current encoding rate)를 상기 추정 전송 시간의 함수로서 조정하는;
    적어도 하나의 프로세서를 채용하는 것을 포함하는
    인코딩 방법.
  2. 제 1 항에 있어서,
    상기 단계 (ⅰ)은,
    초기 인코딩 레이트로, 상기 매체 파일의 적어도 제 1 단편을 대응하는 제 1 변환 부호화된 매체 단편으로 인코딩하고;
    상기 현재 인코딩 레이트를 초기 인코딩 레이트와 동일하게 설정하는 것을 포함하고,
    상기 단계 (ⅲ)은, 조정된 상기 현재 인코딩 레이트로, 상기 매체 파일의 후속 단편들을 대응하는 변환 부호화된 매체 단편들로 인코딩하는 것을 포함하는
    인코딩 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 단계 (ⅲ)은, 상기 현재 인코딩 레이트를 상기 종착지 유닛에서의 상기 스트림 단편의 추정 디스플레이 시간(estimated display time) - 상기 추정 디스플레이 시간은 이전에 형성된 2개의 스트림 단편들과 연관된 타임스탬프(timestamp)로부터 도출됨 - 의 함수로서 조정하는 것을 더 포함하는
    인코딩 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 단계 (ⅱ)는 최종 인코딩의 이전 시간과 현재 시간간의 현재 클럭 간격(clock interval)으로서 상기 추정 전송 시간을 추정하는 것을 더 포함하는
    인코딩 방법.
  5. 제 4 항에 있어서,
    상기 단계 (ⅲ)은,
    상기 종착지 유닛에서의 이전 스트림 단편의 추정 디스플레이 시간을 나타내는 현재 버퍼 간격(buffer interval) - 상기 현재 버퍼 간격은 이전에 형성된 2개의 스트림 단편에 내장된 타임스탬프로부터 도출됨 - 을 판정하고,
    상기 현재 클럭 간격과 상기 현재 버퍼 간격을 비교하고,
    상기 현재 클럭 간격과 상기 현재 버퍼 간격의 함수로서 상기 현재 인코딩 레이트를 조정하는 것을 더 포함하는
    인코딩 방법.
  6. 제 5 항에 있어서,
    상기 조정하는 것은,
    상기 현재 버퍼 간격과 상기 현재 클럭 간격간의 제 1 상대적 차이가 제 1 사전 설정된 임계치 TH1을 초과하면, 상기 제 1 상대적 차이로부터 계산된 제 1 증분값만큼 상기 현재 인코딩 레이트를 증가시키고,
    상기 현재 버퍼 간격과 상기 현재 클럭 간격간의 제 2 상대적 차이가 제 2 사전 설정된 임계치 TH2를 초과하면, 상기 제 2 상대적 차이로부터 계산된 제 2 증분값만큼 현재 인코딩 레이트를 감소시키는 것을 더 포함하는
    인코딩 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 단계 (ⅲ)은 상기 변환 부호화된 매체 단편의 전송 중지를 검출하고, 상기 중지가 검출되었으면, 상기 현재 인코딩 레이트의 조정을 억제하는 것을 더 포함하는
    인코딩 방법.
  8. 제 7 항에 있어서,
    상기 전송 중지를 검출하는 것은,
    상기 매체 파일의 인코딩이 시작된 이래의 과거의 현재 클럭 간격- 상기 현재 클럭 간격은 최종 인코딩의 현재 시간과 이전 시간간에 측정됨 - 들의 평균으로서 클럭 간격 평균을 계산하고,
    상기 현재 클럭 간격이 상기 클럭 간격 평균을 사전 설정된 마진(margin) XC만큼 초과하면 상기 중지가 검출된 것으로 판정하는 것을 포함하는
    인코딩 방법.
  9. 가변 대역폭 링크를 통해 실시 간으로 종착지 유닛에 전송하기 위한 매체 파일 또는 그의 일부를 인코딩하는 매체 프로세싱 시스템으로서,
    프로세서와, 상기 프로세서에 의한 실행을 위해, 컴퓨터 판독 가능 명령어가 저장된 비-일시적 컴퓨터 판독 가능 매체를 포함하고,
    상기 명령어는,
    스트림 단편을 형성하기 위해 매체 파일의 하나 이상의 단편들을 변환 부호화된 매체 단편들로 변환 부호화하도록 구성된 변환 부호화기와,
    상기 변환 부호화기의 현재 인코딩 비트 레이트를 이전에 형성된 스트림 단편의 추정 전송 시간- 상기 추정 전송 시간은 이전에 형성된 상기 매체 단편이 상기 변환 부호화기로부터 운반되고 상기 가변 대역폭 링크에 의해 소모되는데 요구되는 시간 간격임 - 의 함수로서 조정하도록 구성된 동적 비트 레이트 어댑터(dynamic bit rate adapter)를 형성하는
    매체 프로세싱 시스템.
  10. 제 9 항에 있어서,
    상기 동적 비트 레이트 어댑터는, 최종 인코딩의 현재 시간과 이전 시간간의 현재 클럭 간격으로서 상기 추정 전송 시간을 추정하도록 추가 구성되는
    매체 프로세싱 시스템.
  11. 제 9 항 또는 제 10 항에 있어서,
    상기 동적 비트 레이트 어댑터는, 상기 종착지 유닛에서의 상기 스트림 단편의 추정 디스플레이 시간(estimated display time) - 상기 추정 디스플레이 시간은 이전에 형성된 2개의 스트림 단편들과 연관된 타임스탬프(timestamp)로부터 도출됨 - 의 함수로서 상기 현재 인코딩 레이트를 조정하도록 추가 구성되는
    매체 프로세싱 시스템.
  12. 제 9 항 내지 제 11 항 중 어느 한 항에 있어서,
    변환 부호화된 매체 단편을 네트워크로 전송하고 변환 부호화된 매체 단편의 적어도 일부와 관련된 타임스탬프를 상기 동적 비트 레이트 어댑터로 전송하는 변환 부호화기 버퍼를 더 포함하는
    매체 프로세싱 시스템.
  13. 제 10 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 동적 비트 레이트 어댑터는,
    상기 종착지 유닛에서의 이전 스트림 단편의 추정 디스플레이 시간을 나타내는 현재 버퍼 간격(buffer interval) - 상기 현재 버퍼 간격은 이전에 형성된 2개의 스트림 단편에 내장된 타임스탬프로부터 도출됨 - 을 판정하고,
    상기 현재 클럭 간격과 상기 현재 버퍼 간격을 비교하고,
    상기 현재 클럭 간격과 상기 현재 버퍼 간격의 함수로서 상기 현재 인코딩 레이트를 조정하도록 추가 구성되는
    매체 프로세싱 시스템.
  14. 제 10 항 내지 제 13 항 중 어느 한 항에 있어서,
    상기 동적 비트 레이트 어댑터는,
    현재 시간을 추적하는 벽 시계 모듈과,
    상기 변환 부호화기의 인코딩 비트 레이트를 조정하기 위해, 상기 현재 시간과 상기 타임스탬프들을 상기 변환 부호화기로 전송될 QoS(Quality of Service) 값으로 프로세싱하도록 구성된 QoS 조정기를 포함하는
    매체 프로세싱 시스템.
  15. 제 9 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 동적 비트 레이트 어댑터는, 상기 현재 인코딩 레이트를 상기 현재 인코딩 레이트의 함수로서 조정하도록 추가 구성되는
    매체 프로세싱 시스템.
  16. 제 9 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 동적 비트 레이트 어댑터는, 상기 변환 부호화된 매체 단편의 전송의 중지를 검출하고, 중지가 검출되었으면, 상기 동적 비트 레이트 어댑터가 상기 현재 인코딩 레이트를 조정하는 것을 금지시키도록 구성된 중지 검출기를 더 포함하는
    매체 프로세싱 시스템.
KR1020147003664A 2011-08-16 2012-07-10 대역폭 가변 접속을 통한 동적 비트 레이트 적응 KR101996877B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/210,652 US9137551B2 (en) 2011-08-16 2011-08-16 Dynamic bit rate adaptation over bandwidth varying connection
US13/210,652 2011-08-16
PCT/CA2012/000658 WO2013023271A1 (en) 2011-08-16 2012-07-10 Dynamic bit rate adaptation over bandwidth varying connection

Publications (2)

Publication Number Publication Date
KR20140062465A true KR20140062465A (ko) 2014-05-23
KR101996877B1 KR101996877B1 (ko) 2019-07-08

Family

ID=47712649

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147003664A KR101996877B1 (ko) 2011-08-16 2012-07-10 대역폭 가변 접속을 통한 동적 비트 레이트 적응

Country Status (8)

Country Link
US (2) US9137551B2 (ko)
EP (1) EP2745523B1 (ko)
JP (1) JP6255342B2 (ko)
KR (1) KR101996877B1 (ko)
CN (1) CN103733632B (ko)
CA (1) CA2842391C (ko)
IL (1) IL230995A (ko)
WO (1) WO2013023271A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170103869A (ko) * 2015-01-08 2017-09-13 애리스 인터프라이지즈, 인크. Dlna http 스트리밍 클라이언트들을 위한 서버측 적응형 비트 레이트 제어

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013030852A2 (en) 2011-08-29 2013-03-07 Sling Media Pvt Ltd. Systems and methods for controlling the encoding of a segmented media stream using segment transmit times
US20130304934A1 (en) * 2011-09-29 2013-11-14 Avvasi Inc. Methods and systems for controlling quality of a media session
US9462302B2 (en) * 2012-02-23 2016-10-04 Mobitv, Inc. Efficient delineation and distribution of media segments
CN104641638B (zh) * 2012-06-28 2018-08-03 阿克西斯股份公司 使用虚拟帧内帧对视频内容进行编码的系统和方法
US20150327197A1 (en) * 2012-08-14 2015-11-12 Nokia Corporation Method and apparatuses for adjusting time, computer-readable storage media and a computer program product
US9699103B2 (en) * 2012-09-05 2017-07-04 Flash Networks, Ltd Method and system for flow controlling
US9560392B2 (en) * 2012-09-07 2017-01-31 Google Inc. Dynamic bit rate encoding
EP2951972A1 (en) * 2013-01-31 2015-12-09 Codemate AS Network content delivery method using a delivery helper node
US20140286438A1 (en) * 2013-03-19 2014-09-25 Nvidia Corporation Quality of service management server and method of managing streaming bit rate
US9462032B2 (en) * 2013-07-24 2016-10-04 Google Inc. Streaming media content
US9137285B2 (en) 2013-10-21 2015-09-15 Broadcom Corporation Adaptive audio video (AV) stream processing
ITBA20130077A1 (it) * 2013-11-25 2015-05-26 Cicco Luca De Meccanismo per il controllo del bitrate di codifica in un sistema di video streaming adattivo basato su buffer di playout e sulla stima di banda.
CN110691037A (zh) * 2014-02-21 2020-01-14 瑞典爱立信有限公司 通信网络中的服务递送
US10708328B2 (en) * 2014-03-17 2020-07-07 Intel Corporation Hardware assisted media playback and capture synchronization
FR3022426A1 (fr) * 2014-06-16 2015-12-18 Orange Gestion par un equipement intermediaire de la qualite de transmission d'un flux de donnees vers un terminal mobile
JP2016005095A (ja) * 2014-06-16 2016-01-12 三菱電機株式会社 通信装置及び通信レート調整装置及びアプリケーション実行装置及び通信システム及びプログラム
CN104038816B (zh) * 2014-06-20 2017-06-23 深圳市九洲电器有限公司 一种视频同步方法及系统
CA2953422C (en) * 2014-06-26 2021-04-13 Arris Enterprises Llc Server side adaptive bit rate control for http streaming clients
US20160191598A1 (en) * 2014-08-04 2016-06-30 Likqid Media, Inc. System and methods that enable embedding, streaming, and displaying video advertisements and content on internet webpages accessed via mobile devices
US9635069B2 (en) * 2014-08-06 2017-04-25 Verizon Patent And Licensing Inc. User feedback systems and methods
CN105376176B (zh) * 2014-08-21 2019-03-19 中国电信股份有限公司 保障移动互联网视频业务服务质量的方法、装置和系统
CN105791735B (zh) * 2014-12-24 2018-11-27 中国电信股份有限公司 用于视频通话码流动态调整的方法和系统
US9756112B2 (en) * 2015-02-11 2017-09-05 At&T Intellectual Property I, L.P. Method and system for managing service quality according to network status predictions
US9935993B2 (en) * 2015-03-31 2018-04-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Streaming video over a hybrid network
US9894366B2 (en) * 2016-01-28 2018-02-13 Arris Enterprises Llc Variant and buffer handling for adaptive bitrate streaming
CA3035086C (en) * 2016-09-19 2021-07-13 Arris Enterprises Llc Http streaming apparatus and system with pseudo manifest file and just-in-time encoding
US10832735B2 (en) * 2017-01-03 2020-11-10 Ayre Acoustics, Inc. System and method for improved transmission of digital data
US10812559B2 (en) 2017-01-18 2020-10-20 Amazon Technologies, Inc. Just-in-time variable adaptive encoding and delivery of media content
JP6922267B2 (ja) * 2017-03-07 2021-08-18 株式会社リコー 端末、プログラム、データ送信方法
CN106993237B (zh) * 2017-04-13 2019-05-10 中北大学 基于mpeg-dash协议的动态自适应码率选择方法
KR102307447B1 (ko) * 2017-05-02 2021-09-30 삼성전자주식회사 네트워크 환경 모니터링에 기반하는 http 적응적 스트리밍 서버, 방법, 및 클라이언트 단말
US10801678B1 (en) * 2017-10-30 2020-10-13 Race, LLC Modular emitting device and light emission system
US10944808B2 (en) * 2018-07-27 2021-03-09 Verizon Digital Media Services Inc. Server-side reproduction of client-side quality-of-experience
EP3818719B1 (en) 2019-09-23 2024-05-01 Google LLC Interruptible video transcoding
CN114731450A (zh) * 2019-10-01 2022-07-08 串流猴子有限责任公司 服务器端自适性媒体串流
US11463651B2 (en) 2019-12-23 2022-10-04 Carrier Corporation Video frame-based media stream bandwidth reduction
US11438545B2 (en) 2019-12-23 2022-09-06 Carrier Corporation Video image-based media stream bandwidth reduction
CN113596377A (zh) * 2021-08-02 2021-11-02 北京数码视讯技术有限公司 卫星通信的监控视频转换装置和系统
CN114221870B (zh) * 2021-12-16 2023-01-20 北京达佳互联信息技术有限公司 用于服务器的带宽分配方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006174419A (ja) * 2004-12-10 2006-06-29 Microsoft Corp ストリーミングメディアデータの符号化ビットレートを制御するシステム
US20080232469A1 (en) * 2002-07-15 2008-09-25 Xiaochun Nie Rate Control for a Multimedia Compression and Encoding System
US20090103607A1 (en) * 2004-06-07 2009-04-23 Sling Media Pvt. Ltd. Systems and methods for controlling the encoding of a media stream

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3236000A1 (de) * 1982-09-29 1984-03-29 Blaupunkt-Werke Gmbh, 3200 Hildesheim Verfahren zum klassifizieren von audiosignalen
US4893197A (en) * 1988-12-29 1990-01-09 Dictaphone Corporation Pause compression and reconstitution for recording/playback apparatus
JP3042102B2 (ja) * 1991-11-22 2000-05-15 日本電気株式会社 多重化送信装置
US6633609B1 (en) * 1996-12-24 2003-10-14 Intel Corporation Method and apparatus for bit rate control in a digital video environment for arbitrary bandwidth
US7041941B2 (en) 1997-04-07 2006-05-09 Patented Medical Solutions, Llc Medical item thermal treatment systems and method of monitoring medical items for compliance with prescribed requirements
US7184426B2 (en) 2002-12-12 2007-02-27 Qualcomm, Incorporated Method and apparatus for burst pilot for a time division multiplex system
US6400954B1 (en) 1998-05-15 2002-06-04 Tlelefonaktiebolaget Lm Ericsson (Publ) Methods and systems for mode selection based on access network capacity
US6563517B1 (en) * 1998-10-02 2003-05-13 International Business Machines Corp. Automatic data quality adjustment to reduce response time in browsing
US6208620B1 (en) 1999-08-02 2001-03-27 Nortel Networks Corporation TCP-aware agent sublayer (TAS) for robust TCP over wireless
JP3841256B2 (ja) 2000-02-15 2006-11-01 三菱電機株式会社 通信システム及び通信方法及び送信端末
US7299291B1 (en) 2000-05-18 2007-11-20 Akamai Technologies, Inc. Client-side method for identifying an optimum server
US7260826B2 (en) 2000-05-31 2007-08-21 Microsoft Corporation Resource allocation in multi-stream IP network for optimized quality of service
US20020164024A1 (en) 2000-08-25 2002-11-07 Hiroshi Arakawa Data transmission method and data relay method
US20020173315A1 (en) 2001-05-17 2002-11-21 Mazen Chmaytelli Method and apparatus for adapting capabilities of a wireless communication system to load requirements
US7460629B2 (en) 2001-06-29 2008-12-02 Agere Systems Inc. Method and apparatus for frame-based buffer control in a communication system
JP2003046976A (ja) * 2001-07-31 2003-02-14 Matsushita Electric Ind Co Ltd 映像配信装置、映像配信方法及びプログラム
KR100954253B1 (ko) 2001-11-30 2010-04-23 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 데이터 전송 시스템, 동작 방법 및 디지털 미디어 캐리어
JP3900413B2 (ja) 2002-02-14 2007-04-04 Kddi株式会社 映像情報伝送方式およびプログラム
US7596373B2 (en) 2002-03-21 2009-09-29 Mcgregor Christopher M Method and system for quality of service (QoS) monitoring for wireless devices
JP4000895B2 (ja) 2002-04-23 2007-10-31 日本電気株式会社 リアルタイム通信のためのビットレート制御方法および装置
US20030229693A1 (en) 2002-06-06 2003-12-11 International Business Machines Corporation Self-correcting monitor
KR20030095995A (ko) 2002-06-14 2003-12-24 마츠시타 덴끼 산교 가부시키가이샤 미디어 전송방법 및 그 송신장치 및 수신장치
EP1418764A1 (en) * 2002-11-05 2004-05-12 STMicroelectronics S.A. Method and apparatus for transcoding sub-picture data, and video display system comprising such apparatus
SG111978A1 (en) 2002-11-20 2005-06-29 Victor Company Of Japan An mpeg-4 live unicast video streaming system in wireless network with end-to-end bitrate-based congestion control
JP4069444B2 (ja) 2002-12-10 2008-04-02 ソニー株式会社 符号化制御方法及び符号化制御プログラム
CN1729641A (zh) 2002-12-18 2006-02-01 皇家飞利浦电子股份有限公司 数字多媒体信息的自适应编码
JP2006525693A (ja) 2003-02-13 2006-11-09 ノキア コーポレイション マルチメディア・ストリーミングにおけるクライアント速度機能のシグナリング方法
US7444425B2 (en) 2003-03-10 2008-10-28 Meetrix, Inc. Applying multicast protocols and VPN tunneling techniques to achieve high quality of service for real time media transport across IP networks
JP3838511B2 (ja) 2003-03-24 2006-10-25 株式会社Kddi研究所 動画像圧縮符号化送受信装置
US20050060364A1 (en) 2003-07-07 2005-03-17 Rakesh Kushwaha System and method for over the air (OTA) wireless device and network management
US7400588B2 (en) 2003-08-01 2008-07-15 Thomson Licensing Dynamic rate adaptation using neural networks for transmitting video data
US7016409B2 (en) * 2003-11-12 2006-03-21 Sony Corporation Apparatus and method for use in providing dynamic bit rate encoding
SE526535C2 (sv) 2003-12-22 2005-10-04 Operax Ab Förfarande och nod för att kontrollera vidarebefordringskvaliteten i ett datanät
JP2005217199A (ja) 2004-01-29 2005-08-11 Sanyo Electric Co Ltd 信号線回路装置
EP1580914A1 (en) * 2004-03-26 2005-09-28 STMicroelectronics S.r.l. Method and system for controlling operation of a network
US7720983B2 (en) 2004-05-03 2010-05-18 Microsoft Corporation Fast startup for streaming media
US7353466B2 (en) 2004-05-28 2008-04-01 Microsoft Corporation System and method for generating message notification objects on dynamically scaled timeline
CA2569610C (en) 2004-06-07 2012-11-27 Sling Media, Inc. Personal media broadcasting system
US7474707B2 (en) * 2004-09-09 2009-01-06 Ibiquity Digital Corporation Bandwidth reduction of an FM broadcast signal using a baseband precompensation technique
JP2006129439A (ja) 2004-09-28 2006-05-18 Kyocera Corp 通信システム、基地局装置、サーバ装置、移動局装置、及び送信データ量決定方法
US8281356B2 (en) 2004-11-17 2012-10-02 Sharp Kabushiki Kaisha Transmitter
JP2006180036A (ja) * 2004-12-21 2006-07-06 Matsushita Electric Ind Co Ltd 動画符号化伝送制御装置および動画符号化伝送制御方法
GB2423219B (en) 2005-02-10 2007-04-18 Motorola Inc A network proxy client, a communication system and a method for providing a service between a server and an end client
JP4697525B2 (ja) 2005-04-20 2011-06-08 ソニー株式会社 送受信システム、送信装置および送信方法、受信装置および受信方法、並びにプログラム
JP4516496B2 (ja) * 2005-07-27 2010-08-04 株式会社日立製作所 マルチキャスト配信方法及びシステム、コンテンツサーバ
US8218657B2 (en) 2005-09-02 2012-07-10 Netgear, Inc. System and method for automatic adjustment of streaming video bit rate
US8842555B2 (en) 2005-10-21 2014-09-23 Qualcomm Incorporated Methods and systems for adaptive encoding of real-time information in packet-switched wireless communication systems
US8548048B2 (en) 2005-10-27 2013-10-01 Qualcomm Incorporated Video source rate control for video telephony
KR100735373B1 (ko) 2006-02-06 2007-07-04 삼성전자주식회사 통신 시스템에서 데이터 전송 방법 및 시스템
WO2007130695A2 (en) 2006-05-05 2007-11-15 Globstream, Inc. Method and apparatus for streaming media to a plurality of adaptive client devices
KR101330631B1 (ko) * 2006-08-21 2013-11-18 삼성전자주식회사 통신 환경에 대한 정보를 이용한 데이터 전송 방법 및 장치
US20080062322A1 (en) 2006-08-28 2008-03-13 Ortiva Wireless Digital video content customization
US8606966B2 (en) 2006-08-28 2013-12-10 Allot Communications Ltd. Network adaptation of digital content
WO2008033423A2 (en) 2006-09-13 2008-03-20 Marvell Semiconductor, Inc. Decoding method for alamouti scheme with harq and/or repetition coding
US8780717B2 (en) 2006-09-21 2014-07-15 General Instrument Corporation Video quality of service management and constrained fidelity constant bit rate video encoding systems and method
US7743161B2 (en) 2006-10-10 2010-06-22 Ortiva Wireless, Inc. Digital content buffer for adaptive streaming
US7652993B2 (en) * 2006-11-03 2010-01-26 Sharp Laboratories Of America, Inc. Multi-stream pro-active rate adaptation for robust video transmission
JP2008125063A (ja) 2006-11-09 2008-05-29 Innowireless Co Ltd 基地局エミュレーティング機能を有する携帯インターネット計測器及びこれを利用したul同期取得及び端末のテスト方法
US8116805B2 (en) 2006-12-17 2012-02-14 Qualcomm Incorporated Uplink scheduling for OFDM systems
US7843824B2 (en) 2007-01-08 2010-11-30 General Instrument Corporation Method and apparatus for statistically multiplexing services
US8139487B2 (en) * 2007-02-28 2012-03-20 Microsoft Corporation Strategies for selecting a format for data transmission based on measured bandwidth
US20080300025A1 (en) 2007-05-31 2008-12-04 Motorola, Inc. Method and system to configure audio processing paths for voice recognition
JP2009005193A (ja) * 2007-06-22 2009-01-08 Panasonic Corp 通信端末
CN102084683B (zh) 2008-03-12 2016-09-28 松下电器(美国)知识产权公司 无线通信装置、无线通信系统以及无线通信方法
US7844725B2 (en) 2008-07-28 2010-11-30 Vantrix Corporation Data streaming through time-varying transport media
EP2204954B1 (en) * 2009-01-06 2017-12-27 Alcatel Lucent Optimised bandwidth utilisation in networks
US8396114B2 (en) 2009-01-29 2013-03-12 Microsoft Corporation Multiple bit rate video encoding using variable bit rate and dynamic resolution for adaptive video streaming
WO2010111261A1 (en) 2009-03-23 2010-09-30 Azuki Systems, Inc. Method and system for efficient streaming video dynamic rate adaptation
US9501329B2 (en) 2009-05-08 2016-11-22 Rackspace Us, Inc. Methods and systems for cloud computing management
US20100312828A1 (en) * 2009-06-03 2010-12-09 Mobixell Networks Ltd. Server-controlled download of streaming media files
CN102123303B (zh) * 2011-03-25 2012-10-24 天脉聚源(北京)传媒科技有限公司 一种音视频文件播放方法、系统及传输控制装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080232469A1 (en) * 2002-07-15 2008-09-25 Xiaochun Nie Rate Control for a Multimedia Compression and Encoding System
US20090103607A1 (en) * 2004-06-07 2009-04-23 Sling Media Pvt. Ltd. Systems and methods for controlling the encoding of a media stream
JP2006174419A (ja) * 2004-12-10 2006-06-29 Microsoft Corp ストリーミングメディアデータの符号化ビットレートを制御するシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170103869A (ko) * 2015-01-08 2017-09-13 애리스 인터프라이지즈, 인크. Dlna http 스트리밍 클라이언트들을 위한 서버측 적응형 비트 레이트 제어

Also Published As

Publication number Publication date
CA2842391C (en) 2017-04-04
EP2745523A4 (en) 2015-03-18
CA2842391A1 (en) 2013-02-21
JP6255342B2 (ja) 2017-12-27
EP2745523A1 (en) 2014-06-25
US20160007033A1 (en) 2016-01-07
WO2013023271A1 (en) 2013-02-21
EP2745523B1 (en) 2020-03-18
US20130044801A1 (en) 2013-02-21
IL230995A (en) 2016-04-21
CN103733632B (zh) 2017-09-22
CN103733632A (zh) 2014-04-16
US10499071B2 (en) 2019-12-03
KR101996877B1 (ko) 2019-07-08
IL230995A0 (en) 2014-03-31
JP2014529931A (ja) 2014-11-13
US9137551B2 (en) 2015-09-15

Similar Documents

Publication Publication Date Title
KR101996877B1 (ko) 대역폭 가변 접속을 통한 동적 비트 레이트 적응
US10939178B2 (en) Media streaming with latency minimization
US9191664B2 (en) Adaptive bitrate management for streaming media over packet networks
US7779146B2 (en) Methods and systems for HTTP streaming using server-side pacing
KR101931407B1 (ko) Http 의사 스트리밍용 적분 제어기 기반 페이싱
WO2014149257A1 (en) Video streaming with buffer occupancy prediction based quality adaptation
EP3135038B1 (en) Class-based intelligent multiplexing over unmanaged networks
CN111886875B (zh) 一种通过网络传送媒体内容的方法及服务器
US20170208106A1 (en) Integral controller based pacing for http pseudo-streaming
JP2016059037A (ja) 少なくとも2つの連続するセグメントに分離されたマルチメディアコンテンツを受信するための方法およびクライアント端末、ならびに対応するコンピュータプログラム製品およびコンピュータ可読媒体
JP2005286749A (ja) 映像復号化装置およびそれを用いた映像伝送システム

Legal Events

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