JP5302463B2 - Adaptive streaming for digital content distribution - Google Patents

Adaptive streaming for digital content distribution Download PDF

Info

Publication number
JP5302463B2
JP5302463B2 JP2012521846A JP2012521846A JP5302463B2 JP 5302463 B2 JP5302463 B2 JP 5302463B2 JP 2012521846 A JP2012521846 A JP 2012521846A JP 2012521846 A JP2012521846 A JP 2012521846A JP 5302463 B2 JP5302463 B2 JP 5302463B2
Authority
JP
Japan
Prior art keywords
buffer
digital content
content
unit
playback
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2012521846A
Other languages
Japanese (ja)
Other versions
JP2013500635A (en
Inventor
アンソニー ニール パーク,
ウェイ ウェイ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netflix Inc
Original Assignee
Netflix Inc
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 Netflix Inc filed Critical Netflix Inc
Publication of JP2013500635A publication Critical patent/JP2013500635A/en
Application granted granted Critical
Publication of JP5302463B2 publication Critical patent/JP5302463B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44209Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network
    • 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/61Network physical structure; Signal processing
    • H04N21/6156Network physical structure; Signal processing specially adapted to the upstream path of the transmission network
    • H04N21/6175Network physical structure; Signal processing specially adapted to the upstream path of the transmission network involving transmission via Internet
    • 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/637Control signals issued by the client directed to the server or network components
    • H04N21/6373Control signals issued by the client directed to the server or network components for rate control, e.g. request to the server to modify its transmission rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

One embodiment of the present invention sets forth a technique for adapting playback bit rate to available delivery bandwidth in a content delivery system comprising a content server and a content player. A content player periodically estimates whether a given playback bit rate can feasibly provide complete playback for a given title assuming currently available bandwidth. If playback becomes unfeasible at a current bit rate assuming currently available bandwidth, then the content player adapts the bit rate downward until a feasible bit rate is achieved. If playback is feasible using a higher bit rate, then the content player may adapt the bit rate upward.

Description

関連出願の相互参照Cross-reference of related applications

[0001]本出願は、参照により本明細書に組み込まれている2009年7月24日出願の米国特許出願第12/509,365号の利益を主張する。   [0001] This application claims the benefit of US patent application Ser. No. 12 / 509,365, filed Jul. 24, 2009, which is incorporated herein by reference.

発明の背景Background of the Invention

発明の分野Field of Invention

[0002]本発明の実施形態は、一般にデジタルメディアに関し、より詳細には、デジタルコンテンツの配布のための適応型ストリーミング(adaptive streaming)に関する。   [0002] Embodiments of the present invention generally relate to digital media, and more particularly to adaptive streaming for distribution of digital content.

関連技術の説明Explanation of related technology

[0003]デジタルコンテンツ配布システムは、従来、コンテンツサーバ、コンテンツプレーヤ、及びコンテンツサーバをコンテンツプレーヤに接続する通信ネットワークを含む。コンテンツサーバは、コンテンツサーバからコンテンツプレーヤにダウンロードすることができるデジタルコンテンツファイルを格納するように構成される。各デジタルコンテンツファイルは、例えば、ユーザに親しまれている「風と共に去りぬ」など、特定の識別タイトルに対応する。デジタルコンテンツファイルは、通常、再生年代順に従って編成された一連のコンテンツデータを含んでおり、音声データ、ビデオデータ、又はその組み合わせを備え得る。   [0003] Digital content distribution systems conventionally include a content server, a content player, and a communication network that connects the content server to the content player. The content server is configured to store digital content files that can be downloaded from the content server to the content player. Each digital content file corresponds to a specific identification title such as “Gone with the wind” familiar to the user. A digital content file typically includes a series of content data organized according to playback chronological order and may comprise audio data, video data, or a combination thereof.

[0004]コンテンツプレーヤは、再生するためのタイトルを選択するユーザ要求に応答して、デジタルコンテンツファイルをダウンロードし、再生するように構成される。デジタルコンテンツファイルを再生するプロセスは、音声データ及びビデオデータを、スピーカサブシステム及びビデオサブシステムを有するディスプレイシステムを駆動することができる音声信号及びビデオ信号にデコードし、レンダリングすることを含む。再生は通常、当分野で「ストリーミング」として知られている技術を伴い、それによって、コンテンツサーバは、デジタルコンテンツファイルをコンテンツプレーヤに順次送信し、デジタルコンテンツファイルを備えるコンテンツデータが受信される間に、コンテンツプレーヤがデジタルコンテンツファイルを再生する。通信ネットワーク内での可変の待ち時間及び帯域幅を考慮に入れるために、コンテンツバッファは、コンテンツデータが実際に再生される前に、入って来るコンテンツデータを待ち行列に入れる。使用可能な帯域幅をより低減させるネットワーク輻輳の間、コンテンツデータはコンテンツバッファにあまり追加されず、ある再生ビットレートでの再生をサポートするために、コンテンツデータが待ち行列から取り出されるにつれて、コンテンツバッファは空になり得る。しかし、ネットワーク帯域幅が高い間、コンテンツバッファが再度概ねいっぱいになるまで、コンテンツバッファは補充され、追加のバッファ時間が追加される。実用的なシステムにおいて、コンテンツバッファは、数秒から1分以上にわたるタイムスパンに対応するコンテンツデータを待ち行列に入れることができる。   [0004] A content player is configured to download and play a digital content file in response to a user request to select a title for playback. The process of playing the digital content file includes decoding and rendering the audio and video data into audio and video signals that can drive a display system having a speaker subsystem and a video subsystem. Playback typically involves a technique known in the art as “streaming”, whereby the content server sequentially sends the digital content file to the content player, while content data comprising the digital content file is received. The content player plays the digital content file. In order to take into account variable latency and bandwidth within the communication network, the content buffer queues incoming content data before the content data is actually played. During network congestion that further reduces available bandwidth, content data is not added to the content buffer much, and as content data is dequeued to support playback at a certain playback bit rate, the content buffer Can be empty. However, while the network bandwidth is high, the content buffer is replenished and additional buffer time is added until the content buffer is almost full again. In practical systems, the content buffer can queue content data corresponding to time spans ranging from a few seconds to over a minute.

[0005]コンテンツサーバに格納された各デジタルコンテンツファイルは、通常、特定の再生ビットレートのためにコード化されている。再生を開始する前に、コンテンツプレーヤは、コンテンツサーバから使用可能な帯域幅を測定することができ、測定された使用可能な帯域幅によってサポートすることができるビットレートを有するデジタルコンテンツファイルを選択することができる。再生品質を最大にするために、従来、最高ビットレートが測定された帯域幅を超えないデジタルコンテンツファイルが選択される。通信ネットワークがビットレート要件を満たしながら選択されたデジタルコンテンツファイルをダウンロードするのに十分な帯域幅を提供することができる範囲で、再生は申し分なく進行する。しかし、実際には、通信ネットワークにおいて使用可能な帯域幅は、通信ネットワークに接続された異なるデバイスが独立したタスクを実行するにつれて絶えず変化している。通信ネットワークにおいて使用可能な帯域幅がかなり長い期間の間再生ビットレート要件を満たすのに必要なレベルを下回る場合、コンテンツバッファは、完全に空になり、その結果、当分野でバッファアンダーランとして知られている状態になる。バッファアンダーランが生じる場合、再生は、きわめて信頼できなくなり、又はまったく停止し、全体的な再生品質をかなり低減させる可能性がある。従来の通信ネットワーク上でのトラフィックが予測不可能な傾向にあるので、輻輳及び帯域幅の低減がよく起こり、従来のストリーミング再生システムに負の影響を与える。   [0005] Each digital content file stored in a content server is typically encoded for a specific playback bit rate. Before starting playback, the content player can measure the available bandwidth from the content server and select a digital content file having a bit rate that can be supported by the measured available bandwidth. be able to. In order to maximize playback quality, digital content files are conventionally selected where the highest bit rate does not exceed the measured bandwidth. Playback proceeds satisfactorily to the extent that the communication network can provide sufficient bandwidth to download the selected digital content file while meeting the bit rate requirements. In practice, however, the bandwidth available in a communication network is constantly changing as different devices connected to the communication network perform independent tasks. If the bandwidth available in the communication network falls below the level required to meet the playback bit rate requirement for a fairly long period of time, the content buffer is completely emptied, and as a result is known in the art as a buffer underrun. It will be in the state. If a buffer underrun occurs, playback may become very unreliable or stop at all and significantly reduce the overall playback quality. Since traffic on conventional communication networks tends to be unpredictable, congestion and bandwidth reduction often occur and negatively impact conventional streaming playback systems.

[0006]ストリーミング再生システムにおけるバッファアンダーランの可能性を低減するための1つの技術は、再生のために控えめに低いビットレートを選択することである。しかし、この際、より高品質の経験が可能であった場合でも、ユーザは、結局低品質の再生経験で終わる。バッファアンダーランの可能性を低減するための別の技術は、再生を開始する前に全体的なデジタルコンテンツファイルの比較的大きい部分をプリバッファリングすることである。しかし、この技術は必然的に、再生が始まり得る前に、ユーザが比較的長い時間待つ必要があり、したがって、全体的な再生経験を低下させる。   [0006] One technique for reducing the possibility of buffer underrun in streaming playback systems is to select a conservatively low bit rate for playback. However, even if a higher quality experience is possible at this time, the user ends up with a lower quality playback experience. Another technique for reducing the possibility of buffer underrun is to pre-buffer a relatively large portion of the overall digital content file before starting playback. However, this technique inevitably requires the user to wait a relatively long time before playback can begin, thus reducing the overall playback experience.

[0007]上記が示すように、当分野では、従来の手法より高品質の再生経験を提供するコンテンツプレーヤにデジタルコンテンツファイルをダウンロードするための手法が必要である。   [0007] As indicated above, there is a need in the art for a technique for downloading digital content files to a content player that provides a higher quality playback experience than conventional techniques.

[0008]本発明の一実施形態は、コンテンツサーバからコンテンツプレーヤにデジタルコンテンツのファイルを適応的にダウンロードするための方法を記載する。この方法は、コンテンツプレーヤ内のコンテンツバッファに、ファイル内に含まれる第1のコード化済みシーケンスから少なくとも1単位のデジタルコンテンツをダウンロードするステップであり、ファイルが複数のコード化済みシーケンスを含み、各コード化済みシーケンスが、再生のためにコンテンツバッファに格納されたデジタルコンテンツにアクセスすることができる異なるビットレートに対応し、第1のコード化済みシーケンスが、再生のためにコンテンツバッファに格納されたデジタルコンテンツにアクセスすることができる最低のビットレートに対応する、ステップと、デジタルコンテンツのファイルの中の1単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定するステップと、次の単位のデジタルコンテンツをダウンロードするための複数のコード化済みシーケンスに含まれる次のコード化済みシーケンスを決定するステップと、次の単位のデジタルコンテンツを、再生のために、次のコード化済みシーケンスからコンテンツバッファにダウンロードするステップとを含む。   [0008] One embodiment of the present invention describes a method for adaptively downloading a file of digital content from a content server to a content player. The method is the step of downloading at least one unit of digital content from a first encoded sequence contained in a file to a content buffer in a content player, wherein the file includes a plurality of encoded sequences, The encoded sequence corresponds to different bit rates that can access the digital content stored in the content buffer for playback, and the first encoded sequence is stored in the content buffer for playback Steps corresponding to the lowest bit rate at which digital content can be accessed and one or more units of digital content in the digital content file must still be downloaded and buffered for playback Determining the next encoded sequence included in the plurality of encoded sequences for downloading the next unit of digital content, and reproducing the next unit of digital content for playback. To download to the content buffer from the next encoded sequence.

[0009]開示された方法の1つの利点は、再生ビットレート及び使用可能なダウンロード帯域幅に基づく可能なバッファアンダーランが追跡され、バッファアンダーラン状態を回避しながら、複数単位のデジタルコンテンツが可能な限り最高の画質でダウンロードされることである。   [0009] One advantage of the disclosed method is that possible buffer underruns based on playback bit rate and available download bandwidth are tracked, allowing multiple units of digital content while avoiding buffer underrun conditions It will be downloaded with the best possible image quality.

[0010]他の実施形態は、それだけには限定されないが、処理ユニットが開示された方法の1つ又は複数の態様を実施することができる命令を含むコンピュータ可読媒体、及び開示された方法の1つ又は複数の態様を実施するように構成されたシステムを含む。   [0010] Other embodiments include, but are not limited to, computer readable media including instructions that allow a processing unit to perform one or more aspects of the disclosed method, and one of the disclosed methods. Or a system configured to implement a plurality of aspects.

[0011]本発明の上記の特徴を詳しく理解することができるように、実施形態を参照して上記で簡単に要約した本発明のより特定の説明を行い、その一部が添付の図面に図示される。しかし、添付の図面は本発明の代表的な実施形態のみを示しており、したがって、本発明は、他の等しく有効な実施形態を認めることができるため、その範囲を制限するものと見なされないことに留意されたい。   [0011] In order that the above features of the present invention may be more fully understood, a more particular description of the invention briefly summarized above will be made by reference to embodiments that are illustrated in part in the accompanying drawings. Is done. However, the accompanying drawings show only typical embodiments of the invention, and therefore the invention is not to be considered as limiting its scope, as other equally valid embodiments can be recognized. Please note that.

[0012] 本発明の1つ又は複数の態様を実施するように構成されたコンテンツ配布システムを示す図である。[0012] FIG. 1 illustrates a content distribution system configured to implement one or more aspects of the present invention. [0013] 本発明の一実施形態による図1のコンテンツプレーヤのより詳細な図である。[0013] FIG. 2 is a more detailed view of the content player of FIG. 1 according to one embodiment of the invention. [0014] 本発明の一実施形態による図1のコンテンツサーバのより詳細な図である。[0014] FIG. 2 is a more detailed view of the content server of FIG. 1 according to one embodiment of the invention. [0015] 本発明の一実施形態による図1のシーケンスヘッダインデックスのより詳細な図である。[0015] FIG. 2 is a more detailed view of the sequence header index of FIG. 1 according to one embodiment of the invention. [0016] 本発明の一実施形態による、ある評価ポイントで、2つの異なるビットレートにおいて実行されるバッファ予測アルゴリズムの結果を示すグラフである。[0016] Figure 6 is a graph illustrating the results of a buffer prediction algorithm executed at two different bit rates at an evaluation point, according to one embodiment of the invention. [0017] 本発明の一実施形態による、デジタルコンテンツファイルと関連したデジタルコンテンツのバッファリング及び再生のデータフローを示す図である。[0017] FIG. 5 illustrates a data flow for buffering and playing digital content associated with a digital content file, according to one embodiment of the invention. [0018] 本発明の一実施形態による、再生のためにコンテンツデータをコンテンツバッファに適応的にバッファリングするための方法ステップのフロー図である。[0018] FIG. 5 is a flow diagram of method steps for adaptively buffering content data in a content buffer for playback, according to one embodiment of the invention. [0019] 本発明の一実施形態による、再生のためにバッファリングすべきコード化済みシーケンスを変更するための方法ステップのフロー図である。[0019] FIG. 5 is a flow diagram of method steps for modifying a coded sequence to be buffered for playback, according to one embodiment of the invention. [0020] 本発明の一実施形態による、現在のビットレートで再生を完了する実行可能性を予測するための方法ステップのフロー図である。[0020] FIG. 5 is a flow diagram of method steps for predicting the feasibility of completing playback at a current bit rate, according to one embodiment of the invention. [0021] 本発明の一実施形態による、図7Aにおける変数を初期化するステップを実行するための方法ステップのフロー図である。[0021] FIG. 7B is a flow diagram of method steps for performing the step of initializing variables in FIG. 7A, according to one embodiment of the invention. [0022] 本発明の一実施形態による、図7Aにおけるコンテンツバッファ状態を推定するステップを実行するための方法ステップのフロー図である。[0022] FIG. 7B is a flow diagram of method steps for performing the step of estimating the content buffer state in FIG. 7A, according to one embodiment of the invention. [0023] 本発明の一実施形態による、図7Aにおけるコンテンツバッファ状態を推定するステップを実行するための方法ステップのフロー図である。[0023] FIG. 7B is a flow diagram of method steps for performing the step of estimating the content buffer state in FIG. 7A, according to one embodiment of the invention.

詳細な説明Detailed description

[0024]以下の説明では、本発明をより完全に理解できるように、多数の特定の詳細について記載する。しかし、本発明をこれらの特定の詳細のうちの1つ又は複数なしに実施することができることは、当業者にとって明らかである。他の例では、本発明をわかりにくくすることを避けるために、周知の特徴については記載していない。   [0024] In the following description, numerous specific details are set forth in order to provide a more thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without one or more of these specific details. In other instances, well-known features are not described in order to avoid obscuring the present invention.

[0025]図1は、本発明の1つ又は複数の態様を実施するように構成されたコンテンツ配布システム100を示す。示すように、コンテンツ配布システム100は、それだけには限定されないが、コンテンツプレーヤ110、1つ又は複数のコンテンツサーバ130、及び通信ネットワーク150を含む。コンテンツ配布システム100は、コンテンツディレクトリサーバ120も含み得る。一実施形態において、1つ又は複数のコンテンツサーバ130は、コンテンツ配布ネットワーク(CDN)140を備える。   [0025] FIG. 1 illustrates a content distribution system 100 configured to implement one or more aspects of the present invention. As shown, the content distribution system 100 includes, but is not limited to, a content player 110, one or more content servers 130, and a communication network 150. The content distribution system 100 may also include a content directory server 120. In one embodiment, the one or more content servers 130 comprise a content distribution network (CDN) 140.

[0026]通信ネットワーク150は、コンテンツプレーヤ110と1つ又は複数のコンテンツサーバ130との間のデータ通信を容易にするように構成された、ルータやスイッチなど複数のネットワーク通信システムを含む。周知のインターネット通信ネットワークを配置する際に実施される技術を含めて、通信システム150を構築するための技術的に実行可能な多くの技術があることを当業者であれば認識されよう。   [0026] Communication network 150 includes a plurality of network communication systems, such as routers and switches, configured to facilitate data communication between content player 110 and one or more content servers 130. Those skilled in the art will recognize that there are many technically feasible techniques for constructing the communication system 150, including techniques implemented in deploying known Internet communication networks.

[0027]コンテンツディレクトリサーバ120は、タイトルルックアップ要求152を受信し、ファイル位置データ154を生成するように構成されたコンピュータシステムを備える。タイトルルックアップ要求152は、それだけには限定されないが、ユーザによって要求される動画又は歌の名前を含む。コンテンツディレクトリサーバ120は、特定の再生ビットレートでコード化される所与のタイトルのビデオストリームを、関連するコンテンツサーバ130内にあるデジタルコンテンツファイル132にマップするデータベース(図示せず)に対する問い合わせを行う。ファイル位置データ154は、それだけには限定されないが、デジタルコンテンツファイル132をコンテンツプレーヤ110に提供するように構成されたコンテンツサーバ130への参照を含む。   [0027] The content directory server 120 comprises a computer system configured to receive the title lookup request 152 and generate the file location data 154. Title lookup request 152 includes, but is not limited to, the name of the movie or song requested by the user. The content directory server 120 queries a database (not shown) that maps a video stream of a given title encoded at a specific playback bit rate to a digital content file 132 residing in the associated content server 130. . File location data 154 includes, but is not limited to, a reference to content server 130 that is configured to provide digital content file 132 to content player 110.

[0028]コンテンツサーバ130は、コンテンツプレーヤ110からのデジタルコンテンツファイル132についてのダウンロード要求に応えるように構成されたコンピュータシステムである。デジタルコンテンツファイルは、コンピュータシステムからアクセス可能な大容量記憶システムに存在し得る。大容量記憶システムは、それだけには限定されないが、直接接続されたストレージ、ネットワーク接続されたファイルストレージ、又はネットワーク接続されたブロックレベルストレージを含み得る。デジタルコンテンツファイル132は、任意の技術的に実行可能な技術を使用して、フォーマットされ、大容量記憶システムに格納され得る。デジタルコンテンツファイル132をコンテンツサーバ130からコンテンツプレーヤ110にダウンロードするために、データ転送プロトコル、例えば周知のハイパーテキストトランスファプロトコル(HTTP)を使用することができる。   [0028] The content server 130 is a computer system configured to respond to a download request for the digital content file 132 from the content player 110. Digital content files may reside in mass storage systems accessible from computer systems. Mass storage systems may include, but are not limited to, directly attached storage, network attached file storage, or network attached block level storage. The digital content file 132 can be formatted and stored in a mass storage system using any technically feasible technique. To download the digital content file 132 from the content server 130 to the content player 110, a data transfer protocol, such as the well-known hypertext transfer protocol (HTTP), can be used.

[0029]各タイトル(動画、歌、又は他の形のデジタルメディア)は、1つ又は複数のデジタルコンテンツファイル132に関連付けられる。各デジタルコンテンツファイル132は、それだけには限定されないが、シーケンスヘッダインデックス114、音声データ、及びコード化済みシーケンスを備える。コード化済みシーケンスは、特定の再生ビットレートにコード化された完全なバージョンのビデオデータ対応のタイトルを備える。例えば、所与のタイトルは、デジタルコンテンツファイル132−1、デジタルコンテンツファイル132−2、及びデジタルコンテンツファイル132−3と関連付けられ得る。デジタルコンテンツファイル132−1は、シーケンスヘッダインデックス114−1、及び約250キロビット/秒(Kbps)の平均再生ビットレートにコード化されたコード化済みシーケンスを備え得る。デジタルコンテンツファイル132−2は、シーケンスヘッダインデックス114−2、及び約1000Kbpsの平均再生ビットレートにコード化されたコード化済みシーケンスを備え得る。同様に、デジタルコンテンツファイル132−3は、シーケンスヘッダインデックス114−3、及び約1500Kbpsの平均再生ビットレートにコード化されたコード化済みシーケンスを備え得る。1500Kbpsのコード化済みシーケンスは、より高品質の再生を可能にし、したがって、250Kbpsのコード化済みシーケンスに対して、再生にはより望ましい。   [0029] Each title (video, song, or other form of digital media) is associated with one or more digital content files 132. Each digital content file 132 includes, but is not limited to, a sequence header index 114, audio data, and a coded sequence. The encoded sequence comprises a title corresponding to a complete version of video data encoded to a specific playback bit rate. For example, a given title may be associated with digital content file 132-1, digital content file 132-2, and digital content file 132-3. Digital content file 132-1 may comprise a sequence header index 114-1 and a coded sequence encoded to an average playback bit rate of approximately 250 kilobits per second (Kbps). Digital content file 132-2 may comprise a sequence header index 114-2 and a coded sequence encoded to an average playback bit rate of approximately 1000 Kbps. Similarly, the digital content file 132-3 may comprise a sequence header index 114-3 and a coded sequence encoded to an average playback bit rate of about 1500 Kbps. The 1500 Kbps coded sequence allows for higher quality playback and is therefore more desirable for playback than the 250 Kbps coded sequence.

[0030]デジタルコンテンツファイル132内のコード化済みシーケンスは、固定スパンの再生時間を表す複数単位のビデオデータとして編成される。全再生時間は、それぞれ1つの再生時間の固定スパンに対応する一連のタイムスロットに編成される。所与のタイムスロットの間に、1単位のビデオデータが、デジタルコンテンツファイル132と関連した再生ビットレートについて、デジタルコンテンツファイル132内で表される。可変ビットレートのコード化が使用され得るため、再生時間の固定スパンに直接対応するにもかかわらず、各単位のビデオデータはサイズが可変とすることができる。上記の例について、1500Kbpsの再生ビットレートにコード化されるコード化済みシーケンスを備えるデジタルコンテンツファイル132−1内の各タイムスロットは、1500Kbpsでコード化される1単位のビデオデータを含む。一実施形態において、複数単位の音声データは、タイムスロットごとに固定ビットレートでコード化され、デジタルコンテンツファイル132に格納される。   [0030] The encoded sequence in the digital content file 132 is organized as multiple units of video data representing fixed span playback times. The total playback time is organized into a series of time slots, each corresponding to a fixed span of one playback time. During a given time slot, a unit of video data is represented in the digital content file 132 for the playback bit rate associated with the digital content file 132. Since variable bit rate coding can be used, each unit of video data can be variable in size, even though it directly corresponds to a fixed span of playback time. For the above example, each time slot in the digital content file 132-1 with a coded sequence encoded at a playback bit rate of 1500 Kbps contains one unit of video data encoded at 1500 Kbps. In one embodiment, multiple units of audio data are encoded at a fixed bit rate for each time slot and stored in the digital content file 132.

[0031]複数単位のビデオデータ及び複数単位の音声データは、各タイムスロットの最初に開始する、時間同期の再生を提供するように構成される。音声再生又はビデオ再生のいずれかが不足することを回避するために、音声バッファ244及びビデオバッファ246が相当する期間の再生時間をそれぞれ格納することを保証するために、複数単位の音声データ及び複数単位のビデオデータは、一般に交互のパターンでダウンロードされる。   [0031] The plurality of units of video data and the plurality of units of audio data are configured to provide time-synchronized playback starting at the beginning of each time slot. In order to avoid the shortage of either audio playback or video playback, in order to ensure that the audio buffer 244 and the video buffer 246 store the playback time of a corresponding period, Unit video data is generally downloaded in an alternating pattern.

[0032]各コード化済みシーケンスは、上記に定義した通り、デジタルコンテンツ「ストリーム」を備えることを当業者であれば容易に理解されよう。さらに、特定のコード化済みシーケンスをコンテンツサーバ130からコンテンツプレーヤ110にダウンロードするプロセスは、特定の再生ビットレートで再生のためにコンテンツプレーヤ110にデジタルコンテンツを「ストリームすること」を備える。   [0032] One skilled in the art will readily appreciate that each encoded sequence comprises a digital content "stream" as defined above. Further, the process of downloading a specific encoded sequence from the content server 130 to the content player 110 comprises “streaming” digital content to the content player 110 for playback at a specific playback bit rate.

[0033]コンテンツプレーヤ110は、コンピュータシステム、セットトップボックス、携帯電話などのモバイルデバイス、又はネットワーク接続を有し、それぞれビデオフレームを提示し、音響出力を生成するための表示装置及びスピーカ装置に結合される、又は表示装置及びスピーカ装置を含む他の任意の技術的に実行可能なコンピューティングプラットフォームを備え得る。後でより詳細に説明するように、コンテンツプレーヤ110は、選択されたビットレートについて、1単位のビデオデータをダウンロードし、通信ネットワーク150内の主だった帯域幅状態に基づいて、選択されたビットレートを、その後ダウンロードされる複数単位のビデオデータに適応させるように構成される。   [0033] The content player 110 has a mobile device, such as a computer system, set-top box, mobile phone, or network connection, each coupled to a display device and speaker device for presenting video frames and generating sound output. Or may comprise any other technically viable computing platform including a display device and a speaker device. As will be described in more detail later, the content player 110 downloads a unit of video data for the selected bit rate and selects the selected bit based on the main bandwidth state in the communication network 150. The rate is configured to adapt to multiple units of video data that are subsequently downloaded.

[0034]通信ネットワーク150内で使用可能な帯域幅が制限されるようになるにつれて、コンテンツプレーヤは、その後のタイムスロットに対応してまだダウンロードされていない複数単位のビデオデータのために、より低いビットレートのコード化を選択することができる。使用可能な帯域幅が増加するにつれて、より高いビットレートのコード化を選択することができる。   [0034] As the available bandwidth in communication network 150 becomes limited, content players become lower due to multiple units of video data that have not yet been downloaded in response to subsequent time slots. Bit rate coding can be selected. As the available bandwidth increases, a higher bit rate encoding can be selected.

[0035]上記の説明において、1つのコンテンツプレーヤ110及び1つのCDN140を含むコンテンツ配布システム100が示されているが、図1のアーキテクチャは単に本発明の実施形態例を企図するにすぎないことを当業者であれば理解されよう。他の実施形態は、任意の数のコンテンツプレーヤ110及び/又はCDN140を含むことができる。したがって、図1は、決して本発明の範囲を制限するものではない。   [0035] In the above description, a content distribution system 100 is shown that includes one content player 110 and one CDN 140, but the architecture of FIG. 1 is merely intended for an exemplary embodiment of the present invention. Those skilled in the art will appreciate. Other embodiments may include any number of content players 110 and / or CDNs 140. Accordingly, FIG. 1 in no way limits the scope of the present invention.

[0036]図2は、本発明の一実施形態による図1のコンテンツプレーヤ110のより詳細な図である。示すように、コンテンツプレーヤ110は、それだけには限定されないが、中央演算処理装置(CPU)210と、グラフィックサブシステム212と、入出力(I/O)デバイスインターフェース214と、ネットワークインターフェース218と、相互接続220と、メモリサブシステム230とを含む。コンテンツプレーヤ110は、大容量記憶装置216も含み得る。   [0036] FIG. 2 is a more detailed view of the content player 110 of FIG. 1 according to one embodiment of the invention. As shown, the content player 110 includes, but is not limited to, a central processing unit (CPU) 210, a graphics subsystem 212, an input / output (I / O) device interface 214, a network interface 218, and an interconnect. 220 and a memory subsystem 230. Content player 110 may also include a mass storage device 216.

[0037]CPU210は、メモリサブシステム230に格納されたプログラミング命令を取り出し、実行するように構成される。同様に、CPU210は、メモリサブシステム230にアプリケーションデータを格納し、メモリサブシステム230にあるアプリケーションデータを取り出すように構成される。相互接続220は、CPU210、グラフィックサブシステム212、I/Oデバイスインターフェース214、大容量記憶装置216、ネットワークインターフェース218、及びメモリサブシステム230の間の例えばプログラミング命令及びアプリケーションデータなどデータの送信を容易にするように構成される。   [0037] The CPU 210 is configured to retrieve and execute programming instructions stored in the memory subsystem 230. Similarly, the CPU 210 is configured to store application data in the memory subsystem 230 and retrieve application data in the memory subsystem 230. Interconnect 220 facilitates the transmission of data, such as programming instructions and application data, among CPU 210, graphics subsystem 212, I / O device interface 214, mass storage 216, network interface 218, and memory subsystem 230. Configured to do.

[0038]グラフィックサブシステム212は、ビデオデータの複数のフレームを生成し、ビデオデータの複数のフレームを表示装置250に送信するように構成される。一実施形態において、グラフィックサブシステム212は、CPU210とともに、集積回路に統合される。表示装置250は、表示する画像を生成するための任意の技術的に実行可能な手段を備え得る。例えば、表示装置250は、液晶式ディスプレイ(LCD)技術、陰極線技術、及び発光ダイオード(LED)ディスプレイ技術(有機又は無機)を使用して製造することができる。入出力(I/O)デバイスインターフェース214は、相互接続220を介してユーザI/O装置252から入力データを受信し、入力データをCPU210に送信するように構成される。例えば、ユーザI/O装置252は、1つ又は複数のボタン、キーボード、及びマウス又は他のポインティングデバイスを備え得る。I/Oデバイスインターフェース214は、電気音声出力信号を生成するように構成された音声出力ユニットも含む。ユーザI/O装置252は、電気音声出力信号に応答して音響出力を生成するように構成されたスピーカを含む。代替の実施形態では、表示装置250は、スピーカを含み得る。テレビは、ビデオフレームを表示し、音響出力を生成することができる、当分野で知られているデバイスの一例である。例えばハードディスクドライブ又はフラッシュメモリ記憶ドライブなど、大容量記憶装置216は、不揮発性データを格納するように構成される。ネットワークインターフェース218は、通信ネットワーク150を介してデータのパケットを送信及び受信するように構成される。一実施形態において、ネットワークインターフェース218は、周知のイーサネット標準を使用して通信するように構成される。ネットワークインターフェース218は、相互接続220を介してCPU210に結合される。   [0038] The graphics subsystem 212 is configured to generate multiple frames of video data and send the multiple frames of video data to the display device 250. In one embodiment, graphics subsystem 212 is integrated with the CPU 210 in an integrated circuit. Display device 250 may comprise any technically viable means for generating an image for display. For example, the display device 250 can be manufactured using liquid crystal display (LCD) technology, cathode ray technology, and light emitting diode (LED) display technology (organic or inorganic). The input / output (I / O) device interface 214 is configured to receive input data from the user I / O device 252 via the interconnect 220 and transmit the input data to the CPU 210. For example, user I / O device 252 may comprise one or more buttons, a keyboard, and a mouse or other pointing device. The I / O device interface 214 also includes an audio output unit configured to generate an electrical audio output signal. User I / O device 252 includes a speaker configured to generate an acoustic output in response to an electrical audio output signal. In an alternative embodiment, display device 250 may include a speaker. A television is an example of a device known in the art that can display video frames and generate audio output. The mass storage device 216, such as a hard disk drive or flash memory storage drive, is configured to store non-volatile data. The network interface 218 is configured to transmit and receive packets of data via the communication network 150. In one embodiment, network interface 218 is configured to communicate using well-known Ethernet standards. Network interface 218 is coupled to CPU 210 via interconnect 220.

[0039]メモリサブシステム230は、オペレーティングシステム232、ユーザインターフェース234、及び再生アプリケーション236を備えるデータ及びプログラミング命令を含む。オペレーティングシステム232は、例えばネットワークインターフェース218、大容量記憶装置216、I/Oデバイスインターフェース214、及びグラフィックサブシステム212を含むハードウェアデバイスの管理など、システム管理機能を実行する。また、オペレーティングシステム232は、ユーザインターフェース234及び再生アプリケーション236のプロセス及びメモリ管理モデルを提供する。ユーザインターフェース234は、コンテンツプレーヤ110とのユーザ対話のために、例えばウィンドウ及びオブジェクトメタファなど、特定の構造を提供する。当業者であれば、当分野で周知の、及びコンテンツプレーヤ110への組み込みに適している様々なオペレーティングシステム及びユーザインターフェースを認識されよう。   [0039] The memory subsystem 230 includes data and programming instructions comprising an operating system 232, a user interface 234, and a playback application 236. The operating system 232 performs system management functions, such as management of hardware devices including, for example, the network interface 218, mass storage device 216, I / O device interface 214, and graphics subsystem 212. The operating system 232 also provides a user interface 234 and playback application 236 process and memory management model. The user interface 234 provides specific structures, such as windows and object metaphors, for user interaction with the content player 110. Those skilled in the art will recognize various operating systems and user interfaces that are well known in the art and suitable for incorporation into the content player 110.

[0040]再生アプリケーション236は、ネットワークインターフェース218を介してコンテンツサーバ130からデジタルコンテンツファイル132を取り出し、グラフィックサブシステム212を介してデジタルコンテンツファイル132を再生するように構成される。グラフィックサブシステム212は、レンダリングされたビデオ信号を表示装置250に送信するように構成される。通常の動作において、再生アプリケーション236は、特定のタイトルを再生する旨のユーザからの要求を受信する。次いで、再生アプリケーション236は、要求されたタイトルと関連したデジタルコンテンツファイル132の位置を突き止め、要求されたタイトルと関連した各デジタルコンテンツファイル132は、異なる再生ビットレートにコード化されたコード化済みシーケンスを含む。一実施形態において、再生アプリケーション236は、タイトルルックアップ要求152をコンテンツディレクトリサーバ120に対して掲示することによって、デジタルコンテンツファイル132の位置を突き止める。コンテンツディレクトリサーバ120は、タイトルルックアップ要求152に、要求されたタイトルと関連した各デジタルコンテンツファイル132のファイル位置データ154で答える。各ファイル位置データ154は、要求されたデジタルコンテンツファイル132が存在する、関連するコンテンツサーバ130への参照を含む。タイトルルックアップ要求152は、要求されたタイトルの名前、又はタイトルに関する他の識別情報を含み得る。再生アプリケーション236が要求されたタイトルと関連したデジタルコンテンツファイル132の位置を突き止めた後、再生アプリケーション236は、コンテンツサーバ130から要求されたタイトルと関連した各デジタルコンテンツファイル132と関連したシーケンスヘッダインデックス114をダウンロードする。図4Aでより詳細に記載する、デジタルコンテンツファイル132と関連したシーケンスヘッダインデックス114は、デジタルコンテンツファイル132に含まれるコード化済みシーケンスに関連した情報を含む。   [0040] The playback application 236 is configured to retrieve the digital content file 132 from the content server 130 via the network interface 218 and to play the digital content file 132 via the graphics subsystem 212. The graphics subsystem 212 is configured to send the rendered video signal to the display device 250. In normal operation, the playback application 236 receives a request from the user to play a particular title. The playback application 236 then locates the digital content file 132 associated with the requested title, and each digital content file 132 associated with the requested title is encoded sequence encoded to a different playback bit rate. including. In one embodiment, playback application 236 locates digital content file 132 by posting title lookup request 152 to content directory server 120. The content directory server 120 responds to the title lookup request 152 with file location data 154 for each digital content file 132 associated with the requested title. Each file location data 154 includes a reference to the associated content server 130 where the requested digital content file 132 resides. The title lookup request 152 may include the name of the requested title or other identifying information about the title. After the playback application 236 locates the digital content file 132 associated with the requested title, the playback application 236 may include a sequence header index 114 associated with each digital content file 132 associated with the requested title from the content server 130. Download. The sequence header index 114 associated with the digital content file 132, described in more detail in FIG. 4A, includes information associated with the encoded sequence included in the digital content file 132.

[0041]一実施形態において、再生アプリケーション236は、再生のための起動時間を最小化するために最低の再生ビットレートにコード化されたコード化済みシーケンスを備える要求されたタイトルと関連したデジタルコンテンツファイル132をダウンロードし始める。単に説明上、デジタルコンテンツファイル132−1は、要求されたタイトルと関連付けられ、最低の再生ビットレートにコード化されたコード化済みシーケンスを備える。要求されたデジタルコンテンツファイル132−1は、先入れ先出しキューとして働くように構成されるコンテンツバッファ112にダウンロードされる。一実施形態において、ダウンロードされたデータの各単位は、1単位のビデオデータ、又は1単位の音声データを備える。要求されたデジタルコンテンツファイル132−1と関連した複数単位のビデオデータがコンテンツプレーヤ110にダウンロードされるにつれて、複数単位のビデオデータはコンテンツバッファ112に押し込まれる。同様に、要求されたデジタルコンテンツファイル132−1と関連した複数単位の音声データがコンテンツプレーヤ110にダウンロードされるにつれて、複数単位の音声データはコンテンツバッファ112に押し込まれる。一実施形態において、複数単位のビデオデータは、コンテンツバッファ112内のビデオバッファ246に格納され、複数単位の音声データは、この場合もコンテンツバッファ112内の音声バッファ224に格納される。   [0041] In one embodiment, the playback application 236 provides digital content associated with the requested title with a coded sequence encoded at the lowest playback bit rate to minimize start-up time for playback. Start downloading file 132. For illustrative purposes only, the digital content file 132-1 comprises a coded sequence that is associated with the requested title and coded to the lowest playback bit rate. The requested digital content file 132-1 is downloaded to the content buffer 112 that is configured to act as a first-in first-out queue. In one embodiment, each unit of downloaded data comprises one unit of video data or one unit of audio data. As multiple units of video data associated with the requested digital content file 132-1 are downloaded to the content player 110, the multiple units of video data are pushed into the content buffer 112. Similarly, as multiple units of audio data associated with the requested digital content file 132-1 are downloaded to the content player 110, the multiple units of audio data are pushed into the content buffer 112. In one embodiment, multiple units of video data are stored in video buffer 246 in content buffer 112, and multiple units of audio data are again stored in audio buffer 224 in content buffer 112.

[0042]ビデオデコーダ248は、複数単位のビデオデータをビデオバッファ246から読み出し、期間において再生時間の固定スパンに対応する一連のビデオフレームにレンダリングする。ビデオバッファ246から1単位のビデオデータを読み出すことは、ビデオバッファ246(及びコンテンツバッファ112から)の待ち行列から1単位のビデオデータを効果的に取り出す。ビデオフレームのシーケンスは、グラフィックサブシステム212によって処理され、表示装置250に送信される。   [0042] The video decoder 248 reads multiple units of video data from the video buffer 246 and renders them into a series of video frames corresponding to a fixed span of playback time in the period. Reading one unit of video data from video buffer 246 effectively retrieves one unit of video data from the queue of video buffer 246 (and from content buffer 112). The sequence of video frames is processed by the graphics subsystem 212 and transmitted to the display device 250.

[0043]オーディオデコーダ242は、複数単位の音声データを音声バッファ244から読み出し、通常、ビデオフレームのシーケンスに時間的に同期して、一連の音声サンプルにレンダリングする。一実施形態において、音声サンプルのシーケンスはI/Oデバイスインターフェース214に送信され、I/Oデバイスインターフェース214は音声サンプルのシーケンスを電気音声信号に変換する。電気音声信号は、ユーザI/O装置252内のスピーカに送信され、ユーザI/O装置252は、その送信に応答して、音響出力を生成する。   [0043] The audio decoder 242 reads multiple units of audio data from the audio buffer 244 and renders them into a series of audio samples, typically in time synchronization with a sequence of video frames. In one embodiment, the sequence of audio samples is transmitted to the I / O device interface 214, which converts the sequence of audio samples into an electrical audio signal. The electrical audio signal is transmitted to a speaker in the user I / O device 252, and the user I / O device 252 generates an acoustic output in response to the transmission.

[0044]再生が開始されると、再生アプリケーション236は、最低の使用可能なビットレートにコード化される複数単位のビデオデータを要求し、それによって、ユーザによって認められる開始時刻が最小化される。しかし、通信ネットワーク150内の帯域幅状態が許容するなら、再生アプリケーション236は、より高いビットレートにコード化される複数単位のビデオデータを要求することができ、それによって、再生アプリケーション236によって最終的に達成される最高レベルの再生品質に相応した起動の遅延をもたらすことなく、時間にわたって再生品質を向上させる。通信ネットワーク150内の帯域幅状態が再生中に悪化する場合、再生アプリケーション236は、より低いビットレートにコード化される次の複数単位のビデオデータを要求することができる。一実施形態において、再生アプリケーション236は、最近ダウンロードされた1単位又は複数単位のビデオデータにわたって計算される帯域幅の評価に基づいて、どのコード化されたビットレートが1単位のビデオデータの順次の各ダウンロードに使用されるべきかを決定する。   [0044] When playback is initiated, playback application 236 requests multiple units of video data that are encoded to the lowest available bit rate, thereby minimizing the start time allowed by the user. . However, if the bandwidth conditions within the communication network 150 allow, the playback application 236 can request multiple units of video data that are encoded at a higher bit rate, thereby causing the playback application 236 to ultimately The playback quality is improved over time without introducing a start-up delay commensurate with the highest level of playback quality achieved. If the bandwidth condition in communication network 150 deteriorates during playback, playback application 236 can request the next multiple units of video data that are encoded to a lower bit rate. In one embodiment, the playback application 236 may determine which coded bit rate is the sequential of one unit of video data based on an assessment of bandwidth calculated over the recently downloaded unit or units of video data. Decide what should be used for each download.

[0045]図3は、本発明の一実施形態による図1のコンテンツサーバ130のより詳細な図である。コンテンツサーバ130は、それだけには限定されないが、中央演算処理装置(CPU)310と、ネットワークインターフェース318と、相互接続320と、メモリサブシステム330と、大容量記憶装置316とを含む。コンテンツサーバ130は、I/Oデバイスインターフェース314も含み得る。   [0045] FIG. 3 is a more detailed view of the content server 130 of FIG. 1 according to one embodiment of the invention. The content server 130 includes, but is not limited to, a central processing unit (CPU) 310, a network interface 318, an interconnect 320, a memory subsystem 330, and a mass storage device 316. Content server 130 may also include an I / O device interface 314.

[0046]CPU310は、メモリサブシステム330に格納されたプログラミング命令を取り出し、実行するように構成される。同様に、CPU310は、メモリサブシステム330にあるアプリケーションデータを格納し、取り出すように構成される。相互接続320は、CPU310、I/Oデバイスインターフェース314、大容量記憶装置316、ネットワークインターフェース318、及びメモリサブシステム330の間の例えばプログラミング命令及びアプリケーションデータなどデータの送信を容易にするように構成される。   [0046] The CPU 310 is configured to retrieve and execute programming instructions stored in the memory subsystem 330. Similarly, the CPU 310 is configured to store and retrieve application data residing in the memory subsystem 330. Interconnect 320 is configured to facilitate the transmission of data, such as programming instructions and application data, among CPU 310, I / O device interface 314, mass storage device 316, network interface 318, and memory subsystem 330. The

[0047]大容量記憶装置316は、デジタルコンテンツファイル132−1〜132−Nを格納する。デジタルコンテンツファイル132は、任意の技術的に実行可能なファイルシステムを使用して任意の技術的に実行可能なメディアに格納され得る。例えば、大容量記憶装置316は、従来のファイルシステムを組み込む独立ディスク冗長アレイ(RAID)システムを備え得る。   [0047] The mass storage device 316 stores the digital content files 132-1 to 132-N. The digital content file 132 may be stored on any technically executable media using any technically executable file system. For example, the mass storage device 316 may comprise an independent disk redundant array (RAID) system that incorporates a conventional file system.

[0048]メモリサブシステム330は、オペレーティングシステム332、ユーザインターフェース334、及びファイルダウンロードアプリケーション336を備えるデータ及びプログラミング命令を含む。オペレーティングシステム332は、例えばネットワークインターフェース318、大容量記憶装置316、及びI/Oデバイスインターフェース314を含むハードウェアデバイスの管理など、システム管理機能を実行する。また、オペレーティングシステム332は、ユーザインターフェース334及びファイルダウンロードアプリケーション336のプロセス及びメモリ管理モデルを提供する。ユーザインターフェース334は、コンテンツサーバ130とのユーザ対話のために、例えばウィンドウ及びオブジェクトメタファ又はコマンドラインインターフェースなど、特定の構造を提供する。ユーザは、ユーザインターフェース334を使用して、コンテンツサーバの機能を管理することができる。一実施形態において、ユーザインターフェース334は、コンテンツサーバ130の動作を管理するための管理ウェブページを提示する。当業者であれば、当分野で周知の、及びコンテンツプレーヤ130への組み込みに適している様々なオペレーティングシステム及びユーザインターフェースを認識されよう。   [0048] The memory subsystem 330 includes data and programming instructions comprising an operating system 332, a user interface 334, and a file download application 336. The operating system 332 performs system management functions such as management of hardware devices including, for example, the network interface 318, the mass storage device 316, and the I / O device interface 314. The operating system 332 also provides a process and memory management model for the user interface 334 and the file download application 336. The user interface 334 provides a specific structure for user interaction with the content server 130, such as a window and object metaphor or a command line interface. The user can manage the functions of the content server using the user interface 334. In one embodiment, the user interface 334 presents a management web page for managing the operation of the content server 130. Those skilled in the art will recognize various operating systems and user interfaces that are well known in the art and suitable for incorporation into content player 130.

[0049]ファイルダウンロードアプリケーション336は、ファイルダウンロード操作又は操作の組を介して、デジタルコンテンツファイル132−1〜132−Nのコンテンツプレーヤ110への転送を容易にするように構成される。ダウンロードされたデジタルコンテンツファイル132は、ネットワークインターフェース318によって、通信ネットワーク150を介してコンテンツプレーヤ110に送信される。一実施形態において、各デジタルコンテンツファイル132のファイルコンテンツは、任意の順序(当分野で「ランダムアクセス」として知られている)でアクセスされ得る。本明細書において上述したように、各デジタルコンテンツファイル132は、シーケンスヘッダインデックス114、及びコード化済みシーケンスを含む。コード化済みシーケンスは、特定のビットレートにコード化されたフルバージョンの所与の動画又は歌を備え、コード化済みシーケンスと関連したビデオデータは、複数単位のビデオデータに分割される。各単位のビデオデータは、特定のスパンの再生時間に対応し、ビデオデータの単位に格納されたビデオデータのサイズ及び解像度を指定するシーケンスヘッダを含むフレームで開始する。   [0049] The file download application 336 is configured to facilitate the transfer of the digital content files 132-1 to 132-N to the content player 110 via a file download operation or set of operations. The downloaded digital content file 132 is transmitted to the content player 110 via the communication network 150 by the network interface 318. In one embodiment, the file content of each digital content file 132 may be accessed in any order (known in the art as “random access”). As described herein above, each digital content file 132 includes a sequence header index 114 and an encoded sequence. A coded sequence comprises a full version of a given movie or song coded to a specific bit rate, and the video data associated with the coded sequence is divided into multiple units of video data. Each unit of video data starts with a frame that includes a sequence header that corresponds to the playback time of a particular span and that specifies the size and resolution of the video data stored in the unit of video data.

[0050]図4Aは、本発明の一実施形態による図1のシーケンスヘッダインデックス114のより詳細な図である。シーケンスヘッダインデックス114は、ビデオビットレートプロフィール452を含み、任意の技術的に実行可能なやり方で埋めることができるデータ構造である。   [0050] FIG. 4A is a more detailed view of the sequence header index 114 of FIG. 1 according to one embodiment of the invention. The sequence header index 114 is a data structure that includes a video bit rate profile 452 and can be filled in any technically feasible manner.

[0051]デジタルコンテンツファイル132に含まれるシーケンスヘッダインデックス114は、デジタルコンテンツファイル132にも含まれるコード化済みシーケンスに関連した情報を指定する。ビデオビットレートプロフィール452は、コード化済みシーケンスの複数単位のビデオデータと関連した異なるシーケンスヘッダの位置及びタイムスタンプオフセットを指定する対応する1組のエントリ464を含む。通常、コード化済みシーケンスにおけるシーケンスヘッダは、(例えば3秒など)コード化済みシーケンス内で予測可能なタイムスタンプオフセットに位置する。所与のエントリ464は、ビデオビットレートプロフィール452と関連したコード化済みシーケンスの1単位のビデオデータ内に含まれる特定のシーケンスヘッダのタイムスタンプオフセット及び位置を示す。例えば、エントリ464−1は、コード化済みシーケンスの第1の単位のビデオデータと関連したシーケンスヘッダのタイムスタンプオフセット及び位置を示す。エントリ464−2は、同じコード化済みシーケンスの第2の単位のビデオデータと関連したシーケンスヘッダのタイムスタンプオフセット及び位置を示す。重要なことに、エントリ464の組に含まれるタイムスタンプオフセットに基づいて、エントリ464−Kと関連した現在の再生位置から再生の完了までの所与のコード化済みシーケンスを備えるバイトがいくつあるかを特徴付ける総バイト数を、計算することができる。   [0051] The sequence header index 114 included in the digital content file 132 specifies information associated with the encoded sequence that is also included in the digital content file 132. The video bit rate profile 452 includes a corresponding set of entries 464 that specify different sequence header locations and timestamp offsets associated with multiple units of video data in the encoded sequence. Typically, the sequence header in the coded sequence is located at a predictable time stamp offset within the coded sequence (eg, 3 seconds, etc.). A given entry 464 indicates the time stamp offset and position of a particular sequence header contained within one unit of video data of the encoded sequence associated with the video bit rate profile 452. For example, entry 464-1 indicates the time stamp offset and position of the sequence header associated with the first unit of video data in the encoded sequence. Entry 464-2 indicates the time stamp offset and position of the sequence header associated with the second unit of video data in the same encoded sequence. Importantly, how many bytes have a given encoded sequence from the current playback position associated with entry 464-K to completion of playback based on the timestamp offset contained in the set of entries 464? The total number of bytes characterizing can be calculated.

[0052]拡張されたシーケンスと関連した音声データも、デジタルコンテンツファイル132に格納される。一実施形態において、音声データは、固定ビットレートのコード化を有する。代替実施形態において、音声データに可変ビットレートコード化技術が適用され、シーケンスヘッダインデックス114に音声ビットレートプロフィール472が含まれる。音声ビットレートプロフィール472は、それぞれの再生時間に音声データのそれぞれの単位ごとにタイムスタンプオフセット及びシーケンスヘッダ位置を格納するように構成されるエントリ484を含む。   [0052] Audio data associated with the extended sequence is also stored in the digital content file 132. In one embodiment, the audio data has a constant bit rate encoding. In an alternative embodiment, variable bit rate coding techniques are applied to the audio data and the sequence header index 114 includes the audio bit rate profile 472. The audio bit rate profile 472 includes an entry 484 configured to store a timestamp offset and sequence header position for each unit of audio data at each playback time.

[0053]図4Bは、本発明の一実施形態による、ある評価ポイント444で、2つの異なるビットレート410、412において実行されるバッファ予測アルゴリズムの結果を示すグラフ401である。正の縦軸に沿って示されるバッファ時間430は、図1のコンテンツバッファ112内にどれくらい有効な再生時間が格納されるかを示す。負の縦軸に沿って示されるバッファアンダーラン時間434は、バッファアンダーラン420中の同等の時間の不足を示す。評価ポイント444で、図2の再生アプリケーション236は、現在使用可能な帯域幅が与えられると、再生が現在の再生ビットレート410で完了することができるかどうかを推定する。推定されたバッファ時間430が再生の完了の前に任意の再生時440に現在のビットレート410についてのバッファアンダーラン420を示す場合、現在のビットレートを維持することは実行不可能であるが、より低いビットレート412は実行可能であり得る。より低いビットレートは、現在使用可能な帯域幅が与えられると、再生をうまく完了することができるより低いビットレートを見つけるためにテストされる。一実施形態において、再生アプリケーション236は、再生の間、例えば3秒ごとなど周期的に、再生が、評価ポイント444で表される現在の再生ビットレートで完了することができるかどうかを推定する。   [0053] FIG. 4B is a graph 401 illustrating the results of a buffer prediction algorithm executed at two different bit rates 410, 412 at one evaluation point 444, according to one embodiment of the invention. The buffer time 430 shown along the positive vertical axis indicates how effective playback time is stored in the content buffer 112 of FIG. Buffer underrun time 434, shown along the negative vertical axis, indicates an equivalent lack of time during buffer underrun 420. At evaluation point 444, the playback application 236 of FIG. 2 estimates whether playback can be completed at the current playback bit rate 410 given the currently available bandwidth. If the estimated buffer time 430 indicates a buffer underrun 420 for the current bit rate 410 at any playback 440 before completion of playback, maintaining the current bit rate is not feasible, A lower bit rate 412 may be feasible. The lower bit rate is tested to find a lower bit rate that can successfully complete playback given the currently available bandwidth. In one embodiment, playback application 236 estimates whether playback can be completed at the current playback bit rate represented by evaluation point 444, periodically during playback, eg, every 3 seconds.

[0054]示すように、バッファ時間430は、ビットレート410については、将来のある時点でバッファアンダーランがあること、ビットレート412については、バッファアンダーランがないことを推定する。こうしたシナリオでは、現在使用可能な帯域幅が与えられると、ビットレート410で再生を完了することは、実行不可能であり、一方、現在使用可能な帯域幅が与えられると、ビットレート412で再生を完了することは、実行可能であるように思える。   [0054] As shown, buffer time 430 estimates that for bit rate 410 there is a buffer underrun at some point in the future, and for bit rate 412, there is no buffer underrun. In such a scenario, given the currently available bandwidth, completing playback at bit rate 410 is not feasible, while given the currently available bandwidth, playing at bit rate 412. Seems to be feasible.

[0055]特定のコード化済みシーケンスの実行可能性を予測するとき、再生アプリケーション236は、単一のコード化済みシーケンス、及びしたがって、単一の再生ビットレート、又は「集計されたコード化済みシーケンス(aggregate encoded sequence)」を、図5〜図7においてより詳細に記載される予測アルゴリズムへの入力として使用することを選択することができる。集計されたコード化済みシーケンスは、1つ又は複数のコード化済みシーケンスの組み合わせ、及び再生のために将来使用され得る1つ又は複数のコード化済みシーケンスについての対応する再生ビットレートを表す。例えば、再生アプリケーション236が高ビットレートのコード化済みシーケンスを再生している場合、再生アプリケーション236は、ダウンロードが一定の閾値期間の間続くことができる場合、(今のところ)コード化済みシーケンスが実行可能であると予測することができる。   [0055] When predicting the feasibility of a particular coded sequence, the playback application 236 may use a single coded sequence, and thus a single playback bit rate, or "aggregated coded sequence". (Aggregate encoded sequence) "can be chosen to be used as an input to the prediction algorithm described in more detail in FIGS. The aggregated coded sequence represents a combination of one or more coded sequences and a corresponding playback bit rate for the one or more coded sequences that may be used for playback in the future. For example, if the playback application 236 is playing a high bit rate coded sequence, the playback application 236 may (for now) have a coded sequence if the download can continue for a certain threshold period. It can be predicted that it is feasible.

[0056]閾値期間の後、再生アプリケーション236は、追加の期間の間、現在のコード化済みシーケンスをバッファリングし続けることができ、その後低ビットレートのコード化済みシーケンスに切り替えることができる。このことは、現在のコード化済みシーケンスの一部を、より低いビットレートのコード化済みシーケンスと関連した時間の後の部分と集計し、結果として得られた集計されたコード化済みシーケンス、すなわち、2つのコード化済みシーケンスの集計の実行可能性を予測することによって達成される。再生アプリケーション236は、予想された切替の方向に応じて、予測計算において2つ以上のコード化済みシーケンスについての全期間の情報を分析することを選択することもできる。例えば、再生アプリケーション236が将来の再生のためにより高いビットレートのコード化済みシーケンスを評価する予定である場合、再生アプリケーション236は、より高いビットレートで実行可能性を確実にするためにより高いビットレートの全コード化済みシーケンスを評価することができる。しかし、再生アプリケーション236は、現在のコード化済みシーケンスである高ビットレートのコード化済みシーケンスを評価している場合、代わりに、より低いビットレートのコード化済みシーケンスへの切替を遅らせるために、現在のコード化済みシーケンスとより低いビットレートのコード化済みシーケンスとの集計における実行可能性を予測することができる。   [0056] After the threshold period, playback application 236 may continue to buffer the current coded sequence for an additional period of time, and then switch to a low bit rate coded sequence. This aggregates a portion of the current coded sequence with the later portion of time associated with the lower bit rate coded sequence, and the resulting aggregated coded sequence, i.e. This is accomplished by predicting the feasibility of aggregation of two coded sequences. The playback application 236 may also choose to analyze full-time information about two or more coded sequences in the prediction calculation, depending on the expected direction of switching. For example, if the playback application 236 intends to evaluate a higher bit rate coded sequence for future playback, the playback application 236 may use a higher bit rate to ensure feasibility at a higher bit rate. The entire encoded sequence of can be evaluated. However, if the playback application 236 is evaluating a high bit rate coded sequence that is the current coded sequence, instead, to delay switching to the lower bit rate coded sequence, The feasibility in the aggregation of the current coded sequence and the lower bit rate coded sequence can be predicted.

[0057]図4Cは、本発明の一実施形態による、デジタルコンテンツファイル132と関連したデジタルコンテンツ494のバッファリング及び再生のデータフローを示す。図1のコンテンツサーバ130は、複数単位の音声データ及び複数単位のビデオデータを備える、デジタルコンテンツファイル132のコンテンツデータ494をバッファリングプロセス490に提供する。バッファリングプロセス490は、コンテンツプレーヤ110内で実行されるスレッドとして実施することができる。バッファリングプロセス490は、コンテンツデータ494をダウンロードし、コンテンツバッファ112に書き込むように構成される。バッファリングプロセス490は、コンテンツバッファ112内の音声バッファ244に複数単位の音声データを書き込み、これもまたコンテンツバッファ112内のビデオバッファ246に複数単位のビデオデータを書き込む。一実施形態において、コンテンツバッファ112は、先入れ先出し方式(FIFO)キューとして構築される。再生プロセス492は、これもまたコンテンツプレーヤ110内で実行され、再生のために、コンテンツバッファ112の待ち行列から複数単位の音声データ及び複数単位のビデオデータを取り出す。コンテンツデータ494の連続的な再生を維持するために、コンテンツバッファ112は、再生プロセス492がコンテンツバッファ112において読み出しを実行する必要があるとき、使用可能な少なくとも1単位の音声データ及び1単位のビデオデータを常に有しているものとする。コンテンツバッファ112が空であり、再生プロセス492が読み出しの実行を必要とするとき、図4Bに示すように、バッファアンダーランが生じる。   [0057] FIG. 4C illustrates a data flow for buffering and playback of digital content 494 associated with digital content file 132, according to one embodiment of the invention. The content server 130 of FIG. 1 provides the content data 494 of the digital content file 132 to the buffering process 490 comprising multiple units of audio data and multiple units of video data. The buffering process 490 can be implemented as a thread executing within the content player 110. Buffering process 490 is configured to download content data 494 and write it to content buffer 112. The buffering process 490 writes multiple units of audio data to the audio buffer 244 in the content buffer 112 and also writes multiple units of video data to the video buffer 246 in the content buffer 112. In one embodiment, the content buffer 112 is constructed as a first-in first-out (FIFO) queue. A playback process 492, also executed within the content player 110, retrieves multiple units of audio data and multiple units of video data from the queue of the content buffer 112 for playback. In order to maintain continuous playback of content data 494, content buffer 112 may use at least one unit of audio data and one unit of video when playback process 492 needs to perform a read in content buffer 112. Assume that you always have data. When the content buffer 112 is empty and the playback process 492 needs to perform a read, a buffer underrun occurs as shown in FIG. 4B.

[0058]図5は、本発明の一実施形態による、再生のためにコンテンツデータをコンテンツバッファ112に適応的にバッファリングするための方法ステップ500のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。   [0058] FIG. 5 is a flow diagram of method steps 500 for adaptively buffering content data in content buffer 112 for playback, according to one embodiment of the invention. Although the method steps are described in the context of the systems of FIGS. 1, 2, and 3, any system configured to perform the method steps in any order is within the scope of the present invention. Those skilled in the art will appreciate that.

[0059]方法は、ステップ510で開始し、図2の再生アプリケーション236は、デジタルコンテンツファイル132の再生を開始する旨の要求を受信する。ステップ512において、再生アプリケーション236は、図1のコンテンツバッファ112に、最低の使用可能なビットレートでデジタルコンテンツファイル132の1単位又は複数単位のビデオデータをプリバッファリングする。再生アプリケーション236は、コンテンツバッファ112に、対応する1単位又は複数単位の音声データもプリバッファリングする。プリバッファリングは、再生を開始する前に一定量のビデオデータ及び音声データをダウンロードすることを含む。ステップ514において、再生アプリケーション236は、再生を始める。これ以降、新しいデータをコンテンツバッファ112に入れるために方法ステップ500が実行される間に、コンテンツバッファ112からデータをレンダリングし、表示するために再生スレッドが実行される。一実施形態において、再生スレッドは、再生アプリケーション236の一部として実行される。   [0059] The method begins at step 510, where the playback application 236 of FIG. 2 receives a request to start playback of the digital content file 132. In step 512, the playback application 236 pre-buffers one or more units of video data in the digital content file 132 at the lowest available bit rate in the content buffer 112 of FIG. The playback application 236 also prebuffers the corresponding one or more units of audio data in the content buffer 112. Pre-buffering involves downloading a certain amount of video and audio data before starting playback. In step 514, the playback application 236 starts playback. Thereafter, while method step 500 is performed to place new data into content buffer 112, a playback thread is executed to render and display data from content buffer 112. In one embodiment, the playback thread is executed as part of the playback application 236.

[0060]ステップ520において、再生アプリケーション236は、ユーザシーク要求が受信されたかどうかを決定する。ステップ520で、ユーザシーク要求が受信された場合、方法はプリバッファリングのためにステップ512に戻る。しかし、ステップ520で、ユーザシーク要求が受信されていない場合、方法はステップ522に進む。ステップ522で、再生アプリケーション236は、音声バッファ244(AudioBuff)内に残っている再生時間がビデオバッファ246(VideoBuff)内に残っている再生時間未満であるかどうかを決定する。音声バッファ244内に残っている再生時間がビデオバッファ246内に残っている再生時間以上であるとき、より多くの単位のビデオデータが再生アプリケーション236によって再生のために必要とされる。音声バッファ244内に残っている再生時間がビデオバッファ246内に残っている再生時間未満であるとき、より多くの単位の音声データが再生アプリケーション236によって再生のために必要とされる。こうしたやり方で、再生アプリケーション236は、デジタルコンテンツファイル132の複数単位のビデオデータ及び複数単位の音声データのダウンロードのバランスをとる。   [0060] In step 520, the playback application 236 determines whether a user seek request has been received. If a user seek request is received at step 520, the method returns to step 512 for prebuffering. However, if, at step 520, no user seek request has been received, the method proceeds to step 522. In step 522, the playback application 236 determines whether the playback time remaining in the audio buffer 244 (AudioBuff) is less than the playback time remaining in the video buffer 246 (VideoBuff). When the playback time remaining in the audio buffer 244 is greater than or equal to the playback time remaining in the video buffer 246, more units of video data are needed for playback by the playback application 236. When the playback time remaining in the audio buffer 244 is less than the playback time remaining in the video buffer 246, more units of audio data are needed for playback by the playback application 236. In this manner, the playback application 236 balances downloading multiple units of video data and multiple units of audio data of the digital content file 132.

[0061]ステップ522で、音声バッファ244内に残っている再生時間がビデオバッファ246内に残っている再生時間以上である場合、方法はステップ530に進む。ステップ530で、再生アプリケーション236は、現在再生しているビデオデータの単位についての一連のタイムスロットに対応するビデオインデックス(VideoIndex)が、現在再生されているデジタルコンテンツファイル132のビデオデータ(VideoUnits)の単位の合計数未満かどうかを決定する。デジタルコンテンツファイル132のビデオデータの単位の合計数を、デジタルコンテンツファイル132と関連したシーケンスヘッダインデックス114から取り出すことができる。   [0061] If, at step 522, the playback time remaining in the audio buffer 244 is greater than or equal to the playback time remaining in the video buffer 246, the method proceeds to step 530. In step 530, the playback application 236 sets the video index (VideoIndex) corresponding to a series of time slots for the unit of video data currently being played back to the video data (VideoUnits) of the digital content file 132 being played back. Determine if less than the total number of units. The total number of units of video data in the digital content file 132 can be retrieved from the sequence header index 114 associated with the digital content file 132.

[0062]ステップ530で、ビデオインデックスがデジタルコンテンツファイル132のビデオデータの単位の合計数未満である場合、すなわち、デジタルコンテンツファイル132のビデオデータのすべての単位が再生されたわけではない場合、方法はステップ540に進む。ステップ540で、再生アプリケーション236は、図6でより詳細に説明したように、バッファアンダーラン予測に基づいて、次の複数単位のビデオデータをバッファリングするための次のコード化済みシーケンスを決定する。次のコード化済みシーケンスは、より高いビットレートのコード化済みシーケンス、より低いビットレートのコード化済みシーケンス、又は現在のコード化済みシーケンスと同じコード化済みシーケンスでもよい。ステップ542で、再生アプリケーション236は、決定された次のコード化済みシーケンスに基づいて、1単位のビデオデータをダウンロードし、コンテンツバッファ112内のビデオバッファ246にその単位のビデオデータをバッファリングする。   [0062] At step 530, if the video index is less than the total number of units of video data in the digital content file 132, ie, not all units of video data in the digital content file 132 have been played, the method Proceed to step 540. At step 540, playback application 236 determines the next encoded sequence for buffering the next plurality of units of video data based on the buffer underrun prediction, as described in more detail in FIG. . The next coded sequence may be a higher bit rate coded sequence, a lower bit rate coded sequence, or the same coded sequence as the current coded sequence. At step 542, playback application 236 downloads a unit of video data based on the determined next encoded sequence and buffers the unit of video data in video buffer 246 in content buffer 112.

[0063]ステップ530に戻って、ビデオインデックスが現在再生されているデジタルコンテンツファイル132のビデオデータの単位の合計数以上であると再生アプリケーション236が決定した場合、再生アプリケーション236はビデオデータの単位をそれ以上必要とせず、方法はステップ590で終了する。   [0063] Returning to step 530, if the playback application 236 determines that the video index is greater than or equal to the total number of video data units of the digital content file 132 currently being played, the playback application 236 determines the unit of video data. No more is required and the method ends at step 590.

[0064]ステップ522に戻って、音声バッファ244内に残っている時間がビデオバッファ246内に残っている時間未満であると再生アプリケーション236が決定した場合、再生アプリケーション236は再生のためにより多くの単位の音声データを必要し、方法はステップ550に進む。ステップ550で、再生アプリケーション236は、現在再生している音声データの単位についての一連のタイムスロットに対応する音声インデックス(AudioIndex)が、現在再生されているデジタルコンテンツファイル132の音声データ(AudioUnits)の単位の合計数未満かどうかを決定する。   [0064] Returning to step 522, if the playback application 236 determines that the time remaining in the audio buffer 244 is less than the time remaining in the video buffer 246, the playback application 236 may have more to play. A unit of audio data is required and the method proceeds to step 550. In step 550, the playback application 236 sets the audio index (AudioIndex) corresponding to a series of time slots for the unit of audio data currently being played back to the audio data (AudioUnits) of the digital content file 132 currently being played back. Determine if less than the total number of units.

[0065]ステップ550で、音声インデックスが現在再生されているデジタルコンテンツファイル132の音声データの単位の合計数未満であると再生アプリケーション236が決定した場合、再生アプリケーション236は別の単位の音声データを必要し、方法はステップ552に進む。ステップ552で、再生アプリケーション236は、1単位の音声データをダウンロードし、コンテンツバッファ112内の音声バッファ244にその単位の音声データをバッファリングする。   [0065] If, in step 550, the playback application 236 determines that the audio index is less than the total number of units of audio data of the digital content file 132 currently being played, the playback application 236 selects another unit of audio data. If necessary, the method proceeds to step 552. In step 552, the playback application 236 downloads one unit of audio data and buffers the unit of audio data in the audio buffer 244 in the content buffer 112.

[0066]しかし、ステップ550で、音声インデックスが現在再生されているデジタルコンテンツファイル132の音声データの単位の合計数以上であると再生アプリケーション236が決定した場合、再生アプリケーション236は音声データの単位をそれ以上必要とせず、方法はステップ590で終了する。   [0066] However, if the playback application 236 determines in step 550 that the audio index is greater than or equal to the total number of units of audio data of the digital content file 132 currently being played, the playback application 236 determines the unit of audio data. No more is required and the method ends at step 590.

[0067]図6は、本発明の一実施形態による、再生のためにバッファリングすべき次のコード化済みシーケンスを決定するための方法ステップ600のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ600は、図5のステップ540をより詳細に記載し、一実施形態において、再生アプリケーション236によって実行される。   [0067] FIG. 6 is a flow diagram of method steps 600 for determining the next coded sequence to be buffered for playback, according to one embodiment of the invention. Although the method steps are described in the context of the systems of FIGS. 1, 2, and 3, any system configured to perform the method steps in any order is within the scope of the present invention. Those skilled in the art will appreciate that. Again, method step 600 describes step 540 of FIG. 5 in more detail and is performed by playback application 236 in one embodiment.

[0068]方法は、ステップ610で開始し、再生アプリケーション236は、バッファアンダーランなしに完了まで現在のコード化済みシーケンスを再生する実行可能性を予測する。図4B及び図7Aとの関連で記載されている技術など、任意の技術的に実行可能な技術を使用して実行可能性の決定を実施することができることを当業者であれば理解されよう。   [0068] The method begins at step 610, where the playback application 236 predicts the feasibility of playing the current coded sequence to completion without buffer underrun. One skilled in the art will appreciate that the feasibility determination can be performed using any technically feasible technique, such as the technique described in connection with FIGS. 4B and 7A.

[0069]ステップ620で、現在のビットレートに対応する現在のコード化済みシーケンスが実行可能でないと再生アプリケーション236が決定すると、方法はステップ630に進む。ステップ630で、再生アプリケーション236が最低のビットレートのコード化済みシーケンスではないコード化済みシーケンスを現在再生している場合、方法はステップ632に進み、再生アプリケーション236は、現在のビットレートより低いビットレートに対応するコード化済みシーケンスをコード化済みシーケンス候補として選択する。ステップ634で、再生アプリケーション236はコード化済みシーケンス候補を再生する実行可能性を予測し、この場合もまた、このステップは、図7Aにより詳細に記載されている。ステップ640で、コード化済みシーケンス候補が実行可能であると再生アプリケーション236が決定した場合、方法はステップ690で終了し、コード化済みシーケンス候補は、次のコード化済みシーケンスとして戻される。   [0069] If, at step 620, the playback application 236 determines that the current encoded sequence corresponding to the current bit rate is not executable, the method proceeds to step 630. If, at step 630, playback application 236 is currently playing a coded sequence that is not the lowest bit rate coded sequence, the method proceeds to step 632, where playback application 236 has a bit lower than the current bit rate. A coded sequence corresponding to the rate is selected as a coded sequence candidate. At step 634, the playback application 236 predicts the feasibility of playing back the encoded sequence candidate, which again is described in more detail in FIG. 7A. If at step 640 the playback application 236 determines that the coded sequence candidate is executable, the method ends at step 690 and the coded sequence candidate is returned as the next coded sequence.

[0070]ステップ630に戻って、再生アプリケーション236が最低のビットレートに対応するコード化済みシーケンスを表すコード化済みシーケンスを現在再生している場合、方法はステップ690で終了し、現在の(最低の)コード化済みシーケンスが次のコード化済みシーケンスとして戻される。   [0070] Returning to step 630, if the playback application 236 is currently playing a coded sequence representing the coded sequence corresponding to the lowest bit rate, the method ends at step 690 and the current (lowest The encoded sequence is returned as the next encoded sequence.

[0071]ステップ620に戻って、現在のコード化済みシーケンスが実行可能であると再生アプリケーション236が決定した場合、方法はステップ650に進む。ステップ650で、再生アプリケーション236が最高のビットレートのコード化済みシーケンスではないコード化済みシーケンスを現在再生している場合、方法はステップ652に進む。ステップ652で、再生アプリケーション236は、現在のビットレートより高いビットレートに対応するコード化済みシーケンスの実行可能性を予測する。この場合もまた、実行可能性を予測することは、図7Aにより詳細に記載されている。   [0071] Returning to step 620, if the playback application 236 determines that the current coded sequence is executable, the method proceeds to step 650. If, at step 650, playback application 236 is currently playing a coded sequence that is not the highest bit rate coded sequence, the method proceeds to step 652. At step 652, playback application 236 predicts the feasibility of the encoded sequence corresponding to a higher bit rate than the current bit rate. Again, predicting feasibility is described in more detail in FIG. 7A.

[0072]ステップ660で、より高いビットレートに対応するコード化済みシーケンスが実行可能であると再生アプリケーション236が決定した場合、方法はステップ662に進む。ステップ662で、再生アプリケーション236は、より高いビットレートのコード化済みシーケンスが次のコード化済みシーケンスとして戻されるように選択する。しかし、ステップ660で、より高いビットレートに対応するコード化済みシーケンスが実行可能でないと再生アプリケーション236が決定した場合、方法はステップ690で終了し、現在のコード化済みシーケンスが次のコード化済みシーケンスとして戻される。   [0072] If, at step 660, the playback application 236 determines that the encoded sequence corresponding to the higher bit rate is executable, the method proceeds to step 662. At step 662, playback application 236 selects the higher bit rate coded sequence to be returned as the next coded sequence. However, if at step 660 the playback application 236 determines that the encoded sequence corresponding to the higher bit rate is not feasible, the method ends at step 690 and the current encoded sequence is the next encoded sequence. Returned as a sequence.

[0073]ステップ650に戻って、再生アプリケーション236が最高のビットレートに対応するコード化済みシーケンスを表すコード化済みシーケンスを現在再生している場合、方法はステップ690で終了し、現在の(最高の)コード化済みシーケンスが次のコード化済みシーケンスとして戻される。   [0073] Returning to step 650, if the playback application 236 is currently playing a coded sequence that represents the coded sequence corresponding to the highest bit rate, the method ends at step 690 and the current (highest The encoded sequence is returned as the next encoded sequence.

[0074]図7Aは、本発明の一実施形態による、現在のビットレートで再生を完了する実行可能性を予測するための方法ステップ700のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ700は、図6のステップ610、634、及び652をより詳細に記載し、一実施形態において、再生アプリケーション236によって実行される。   [0074] FIG. 7A is a flow diagram of method step 700 for predicting the feasibility of completing playback at the current bit rate, according to one embodiment of the invention. Although the method steps are described in the context of the systems of FIGS. 1, 2, and 3, any system configured to perform the method steps in any order is within the scope of the present invention. Those skilled in the art will appreciate that. Again, method step 700 describes steps 610, 634, and 652 of FIG. 6 in more detail, and in one embodiment is performed by playback application 236.

[0075]方法は、ステップ710で開始し、再生アプリケーション236は、AudioIndex、VideoIndex、AudioBuffer、及びVideoBufferを含む1組の変数を初期化する。AudioIndexは、特定のタイムスロットに対応する1単位の音声データを選択するために使用されるインデックスを表す。VideoIndexは、特定のタイムスロットに対応する1単位のビデオデータを選択するために使用されるインデックスを表す。AudioBufferは、音声バッファ244に現在格納されているバッファに入れられた再生時間量を表す。VideoBufferは、ビデオバッファ246に現在格納されているバッファに入れられた再生時間量を表す。AudioIndexは、現在の音声のコード化済みシーケンスの現在の再生状態を表す現在のAudioIndexに初期化される。VideoIndexは、現在のビデオのコード化済みシーケンスの現在の再生状態を表す現在のVideoIndexに初期化される。AudioBufferは、現在のAudioBuffer再生値に初期化される。VideoBufferは、現在のVideoBuffer再生値に初期化される。   [0075] The method begins at step 710 where the playback application 236 initializes a set of variables including an AudioIndex, a VideoIndex, an AudioBuffer, and a VideoBuffer. AudioIndex represents an index used to select one unit of audio data corresponding to a specific time slot. VideoIndex represents an index used to select one unit of video data corresponding to a specific time slot. AudioBuffer represents the amount of playback time put in the buffer currently stored in the audio buffer 244. VideoBuffer represents the amount of playback time placed in the buffer currently stored in video buffer 246. The AudioIndex is initialized to the current AudioIndex that represents the current playback state of the current audio coded sequence. The VideoIndex is initialized to the current VideoIndex that represents the current playback state of the current video coded sequence. The AudioBuffer is initialized to the current AudioBuffer playback value. VideoBuffer is initialized to the current VideoBuffer playback value.

[0076]ステップ712で、AudioBufferがVideoBuffer以上であると再生アプリケーション236が決定した場合、音声バッファより少ない再生時間がビデオバッファで使用可能であり、方法はステップ714に進んで、別の単位のビデオデータをダウンロードする影響を推定し始める。ステップ714で、VideoIndexが現在のコード化済みシーケンスのビデオデータの単位の合計数を表すVideoUnits未満であると再生アプリケーション236が決定した場合、再生アプリケーション236は、別の単位のビデオデータをダウンロードする必要があり、方法はステップ720に進む。ステップ720で、コンテンツバッファ112の現在の状態、及び主だった帯域幅の可用性が与えられると、別の単位のビデオデータがコンテンツサーバ130からダウンロードされる場合、再生アプリケーション236は、コンテンツバッファ112の結果として得られた状態を推定する。利点値も期間として計算、測定され、これは、1単位のビデオデータのダウンロードが実行される場合、ビデオバッファ246に追加することができる。利点値は、追加の単位のビデオデータをダウンロードすることと関連した追加の再生時間を表す。ステップ720は、図7Cにより詳細に記載されている。   [0076] If, in step 712, the playback application 236 determines that AudioBuffer is greater than or equal to VideoBuffer, less playback time is available in the video buffer than the audio buffer, and the method proceeds to step 714 where another unit of video Start estimating the impact of downloading data. If, at step 714, the playback application 236 determines that the VideoIndex is less than VideoUnits representing the total number of units of video data in the current coded sequence, the playback application 236 needs to download another unit of video data. And the method proceeds to step 720. In step 720, given the current state of the content buffer 112 and the main bandwidth availability, if another unit of video data is downloaded from the content server 130, the playback application 236 Estimate the resulting state. The benefit value is also calculated and measured as a duration, which can be added to the video buffer 246 if a unit of video data download is performed. The benefit value represents additional playback time associated with downloading additional units of video data. Step 720 is described in more detail in FIG. 7C.

[0077]ステップ722で、VideoBufferがゼロ以上である場合、ビデオバッファ246におけるバッファアンダーランは、現在予想されておらず、方法はステップ724に進む。ステップ724で、AudioBufferがゼロ以上である場合、音声バッファ244におけるバッファアンダーランは、現在予想されておらず、方法はステップ726に進む。ステップ726で、利点値は、1単位のビデオデータのダウンロードを考慮に入れるために、VideoBuffer変数に追加される。ステップ728で、VideoIndexは、ビデオデータの単位のダウンロードを考慮に入れるために増分される。次のダウンロードは、VideoIndexの増分された値に対応する1単位のビデオデータについてのものである。   [0077] If VideoBuffer is greater than or equal to zero at step 722, no buffer underrun in video buffer 246 is currently expected and the method proceeds to step 724. If the AudioBuffer is greater than or equal to zero at step 724, no buffer underrun in the audio buffer 244 is currently expected and the method proceeds to step 726. At step 726, the benefit value is added to the VideoBuffer variable to take into account one unit of video data download. At step 728, the VideoIndex is incremented to take into account downloading of units of video data. The next download is for one unit of video data corresponding to the incremented value of VideoIndex.

[0078]ステップ724に戻って、AudioBufferがゼロ以下であると再生アプリケーション236が決定した場合、音声バッファ244におけるバッファアンダーランが予想され、方法はステップ740で終了し、戻り値は「実行不可能」である。   [0078] Returning to step 724, if the playback application 236 determines that the AudioBuffer is less than or equal to zero, a buffer underrun in the audio buffer 244 is expected, the method ends at step 740, and the return value is "unexecutable. Is.

[0079]ステップ722に戻って、VideoBufferがゼロ以下であると再生アプリケーション236が決定した場合、ビデオバッファ246におけるバッファアンダーランが予想され、方法はステップ740で終了し、戻り値は「実行不可能」である。   [0079] Returning to step 722, if the playback application 236 determines that VideoBuffer is less than or equal to zero, a buffer underrun in the video buffer 246 is expected, the method ends at step 740, and the return value is "unexecutable. Is.

[0080]ステップ714に戻って、VideoIndexが現在のコード化済みシーケンスのビデオデータの単位の合計数を表すVideoUnits以上であると再生アプリケーション236が決定した場合、再生アプリケーション236は、別の単位のビデオデータをダウンロードする必要はなく、バッファアンダーランは検出されていない。この時点で、ビデオ及び音声のコード化済みシーケンスのダウンロードを、バッファアンダーランなしで実行することができるとアプリケーション236が決定しており、方法はステップ742で終了し、戻り値は「実行可能」である。   [0080] Returning to step 714, if the playback application 236 determines that the VideoIndex is greater than or equal to VideoUnits, which represents the total number of units of video data in the current coded sequence, the playback application 236 determines that another unit of video There is no need to download data and no buffer underrun has been detected. At this point, the application 236 has determined that the download of the video and audio encoded sequence can be performed without a buffer underrun, the method ends in step 742 and the return value is “executable”. It is.

[0081]ステップ712に戻って、AudioBufferがVideoBuffer未満であると再生アプリケーション236が決定した場合、ビデオバッファより少ない再生時間が音声バッファで使用可能であり、方法はステップ716に進んで、別の単位の音声データをダウンロードする影響を推定し始める。ステップ716で、AudioIndexが現在のコード化済みシーケンスの音声データの単位の合計数を表すAudioUnits未満であると再生アプリケーション236が決定した場合、再生アプリケーション236は、別の単位の音声データをダウンロードする必要があり、方法はステップ730に進む。ステップ730で、コンテンツバッファ112の現在の状態、及び主だった帯域幅の可用性が与えられると、別の単位の音声データがコンテンツサーバ130からダウンロードされる場合、再生アプリケーション236は、コンテンツバッファ112の結果として得られた状態を推定する。利点値も期間として計算、測定され、これは、1単位の音声データのダウンロードが実行される場合、音声バッファ244に追加することができる。ステップ730は、図7Dにより詳細に記載されている。   [0081] Returning to step 712, if the playback application 236 determines that the AudioBuffer is less than the VideoBuffer, less playback time is available in the audio buffer than the video buffer, and the method proceeds to step 716 and proceeds to another unit. Start estimating the impact of downloading audio data. If at step 716 the playback application 236 determines that the AudioIndex is less than AudioUnits representing the total number of units of audio data in the current coded sequence, the playback application 236 needs to download another unit of audio data. And the method proceeds to step 730. In step 730, given the current state of the content buffer 112 and the availability of main bandwidth, if another unit of audio data is downloaded from the content server 130, the playback application 236 Estimate the resulting state. The benefit value is also calculated and measured as a duration, which can be added to the audio buffer 244 if a unit of audio data is downloaded. Step 730 is described in more detail in FIG. 7D.

[0082]ステップ732で、VideoBufferがゼロ以上である場合、ビデオバッファ246におけるバッファアンダーランは、現在予想されておらず、方法はステップ734に進む。ステップ734で、AudioBufferがゼロ以上である場合、音声バッファ244におけるバッファアンダーランは、現在予想されておらず、方法はステップ736に進む。ステップ736で、利点値は、1単位の音声データのダウンロードを考慮に入れるために、AudioBuffer変数に追加される。ステップ738で、AudioIndexは、音声データの単位のダウンロードを考慮に入れるために増分される。次のダウンロードは、AudioIndexの増分された値に対応する1単位の音声データについてのものである。   [0082] If the VideoBuffer is greater than or equal to zero at step 732, no buffer underrun in the video buffer 246 is currently expected and the method proceeds to step 734. If at step 734 AudioBuffer is greater than or equal to zero, no buffer underrun in audio buffer 244 is currently expected and the method proceeds to step 736. At step 736, the benefit value is added to the AudioBuffer variable to take into account a unit of audio data download. At step 738, the AudioIndex is incremented to take into account downloading of units of audio data. The next download is for one unit of audio data corresponding to the incremented value of AudioIndex.

[0083]ステップ734に戻って、AudioBufferがゼロ以下であると再生アプリケーション236が決定した場合、音声バッファ244におけるバッファアンダーランが予想され、方法はステップ740で終了し、戻り値は「実行不可能」である。   [0083] Returning to step 734, if the playback application 236 determines that the AudioBuffer is less than or equal to zero, a buffer underrun in the audio buffer 244 is expected, the method ends at step 740, and the return value is "unexecutable. Is.

[0084]ステップ732に戻って、VideoBufferがゼロ以下であると再生アプリケーション236が決定した場合、ビデオバッファ246におけるバッファアンダーランが予想され、方法はステップ740で終了し、戻り値は「実行不可能」である。   [0084] Returning to step 732, if the playback application 236 determines that the VideoBuffer is less than or equal to zero, a buffer underrun in the video buffer 246 is expected, the method ends at step 740, and the return value is "unexecutable. Is.

[0085]ステップ716に戻って、AudioIndexが現在のコード化済みシーケンスの音声データの単位の合計数を表すAudioUnits以上であると再生アプリケーション236が決定した場合、再生アプリケーション236は、別の単位の音声データをダウンロードする必要はなく、バッファアンダーランは検出されていない。この時点で、ビデオ及び音声のコード化済みシーケンスのダウンロードを、バッファアンダーランなしで実行することができるとアプリケーション236が決定しており、方法はステップ742で終了し、戻り値は「実行可能」である。   [0085] Returning to step 716, if the playback application 236 determines that the AudioIndex is greater than or equal to AudioUnits, which represents the total number of units of audio data in the current coded sequence, the playback application 236 determines that another unit of audio There is no need to download data and no buffer underrun has been detected. At this point, the application 236 has determined that the download of the video and audio encoded sequence can be performed without a buffer underrun, the method ends in step 742 and the return value is “executable”. It is.

[0086]図7Bは、本発明の一実施形態による、図7Aにおける変数を初期化するステップ710を実行するための方法ステップ701のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ701は、図7Aのステップ710をより詳細に記載し、一実施形態において、再生アプリケーション236によって実行される。   [0086] FIG. 7B is a flow diagram of method step 701 for performing step 710 of initializing variables in FIG. 7A, according to one embodiment of the invention. Although the method steps are described in the context of the systems of FIGS. 1, 2, and 3, any system configured to perform the method steps in any order is within the scope of the present invention. Those skilled in the art will appreciate that. Again, method step 701 describes step 710 of FIG. 7A in more detail, and in one embodiment is performed by playback application 236.

[0087]方法は、ステップ750で開始し、AudioIndexは、現在の音声のコード化済みシーケンスの現在の再生状態を表す現在のAudioIndexに初期化される。ステップ752で、VideoIndexは、現在のビデオのコード化済みシーケンスの現在の再生状態を表す現在のVideoIndexに初期化される。ステップ754で、AudioBufferは、現在のAudioBuffer再生値に初期化される。方法は、ステップ756で終了し、VideoBufferは、現在のVideoBuffer再生値に初期化される。   [0087] The method begins at step 750, where the AudioIndex is initialized to the current AudioIndex that represents the current playback state of the current audio coded sequence. At step 752, the VideoIndex is initialized to the current VideoIndex that represents the current playback state of the current video coded sequence. In step 754, the AudioBuffer is initialized to the current AudioBuffer playback value. The method ends at step 756 and the VideoBuffer is initialized to the current VideoBuffer playback value.

[0088]図7Cは、本発明の一実施形態による、図7Aにおけるコンテンツバッファ112の状態を推定するステップを実行するための方法ステップ702のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ702は、図7Aのステップ720をより詳細に記載し、一実施形態において、再生アプリケーション236によって実行される。   [0088] FIG. 7C is a flow diagram of method step 702 for performing the step of estimating the state of content buffer 112 in FIG. 7A, according to one embodiment of the invention. Although the method steps are described in the context of the systems of FIGS. 1, 2, and 3, any system configured to perform the method steps in any order is within the scope of the present invention. Those skilled in the art will appreciate that. Again, method step 702 describes step 720 of FIG. 7A in more detail, and in one embodiment is performed by playback application 236.

[0089]方法は、ステップ760で開始し、再生アプリケーション236は、次の1単位のビデオデータのダウンロード時間を推定する。異なる再生ビットレートにコード化されたコード化済みシーケンスと関連しており、要求されたタイトルと関連した異なるデジタルコンテンツファイル132に含まれるビデオビットレートプロフィール452は、次の単位のビデオデータのサイズを調べるために、VideoIndexを使用してインデックスが付けられる。次の単位のビデオデータのサイズは、現在の帯域幅の可用性と直接連動して、推定ダウンロード時間を決定する。ステップ762で、再生アプリケーション236は、VideoBufferの現在の値からダウンロード時間を減算することによって、VideoBufferの値を計算する。この新しい値は、ダウンロード時間中のビデオバッファ246からのデータの推定された再生消費を表す。同様に、ステップ764で、再生アプリケーション236は、AudioBufferの現在の値からダウンロード時間を減算することによって、AudioBufferの値を計算する。   [0089] The method begins at step 760, where the playback application 236 estimates the download time for the next unit of video data. A video bit rate profile 452 included in a different digital content file 132 associated with a coded sequence encoded at a different playback bit rate and associated with the requested title is the size of the next unit of video data. To check, it is indexed using VideoIndex. The size of the next unit of video data determines the estimated download time in direct connection with the current bandwidth availability. In step 762, playback application 236 calculates the value of VideoBuffer by subtracting the download time from the current value of VideoBuffer. This new value represents the estimated playback consumption of data from the video buffer 246 during the download time. Similarly, at step 764, the playback application 236 calculates the value of AudioBuffer by subtracting the download time from the current value of AudioBuffer.

[0090]図7Dは、本発明の一実施形態による、図7Aにおけるコンテンツバッファ112の状態を推定するステップを実行するための方法ステップ703のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ703は、図7Aのステップ730をより詳細に記載し、一実施形態において、再生アプリケーション236によって実行される。   [0090] FIG. 7D is a flow diagram of method step 703 for performing the step of estimating the state of content buffer 112 in FIG. 7A, according to one embodiment of the invention. Although the method steps are described in the context of the systems of FIGS. 1, 2, and 3, any system configured to perform the method steps in any order is within the scope of the present invention. Those skilled in the art will appreciate that. Again, method step 703 describes step 730 of FIG. 7A in more detail, and in one embodiment is performed by playback application 236.

[0091]方法は、ステップ770で開始し、再生アプリケーション236は、次の1単位の音声データのダウンロード時間を推定する。次の単位の音声データのサイズは、現在の帯域幅の可用性と直接連動して、推定ダウンロード時間を決定する。ステップ772で、再生アプリケーション236は、VideoBufferの現在の値からダウンロード時間を減算することによって、VideoBufferの値を計算する。この新しい値は、ダウンロード時間中のビデオバッファ246からのデータの推定された再生消費を表す。同様に、ステップ774で、再生アプリケーション236は、AudioBufferの現在の値からダウンロード時間を減算することによって、AudioBufferの値を計算する。   [0091] The method begins at step 770, where the playback application 236 estimates the download time for the next unit of audio data. The size of the next unit of audio data is directly linked to the current bandwidth availability and determines the estimated download time. In step 772, the playback application 236 calculates the value of VideoBuffer by subtracting the download time from the current value of VideoBuffer. This new value represents the estimated playback consumption of data from the video buffer 246 during the download time. Similarly, in step 774, the playback application 236 calculates the value of AudioBuffer by subtracting the download time from the current value of AudioBuffer.

[0092]本発明の一実施形態は、コンテンツプレーヤ110内のコンピュータ可読記憶媒体に格納されるプログラム製品として実装することができる。この実施形態では、コンテンツプレーヤ110は、セットトップボックスなどの組み込みコンピュータプラットフォームを備える。本発明の代替実施形態は、インターネットウェブサイト内に組み込まれた実行可能命令など、コンピュータシステム内のメモリにダウンロードされるプログラム製品として実装することができる。この実施形態では、コンテンツプレーヤ110は、コンピュータシステムを備える。   [0092] One embodiment of the present invention may be implemented as a program product stored on a computer-readable storage medium in content player 110. In this embodiment, the content player 110 comprises an embedded computer platform such as a set top box. Alternative embodiments of the present invention may be implemented as a program product that is downloaded to memory within a computer system, such as executable instructions embedded within an Internet website. In this embodiment, the content player 110 includes a computer system.

[0093]要するに、コンテンツプレーヤ110上でデジタルコンテンツファイルを再生するための技術が開示される。この技術は、現在使用可能な帯域幅が与えられると、特定のデジタルコンテンツファイルを特定のビットレートでうまく再生することができるかどうかを推定するステップと、主だった帯域幅状態を考慮に入れるためにビットレートを適応させるステップとを伴う。実行可能性を推定するステップは、実質的に、再生の完了に間に合うように、現在の再生位置からビデオ及び音声データの残りの単位のダウンロードをシミュレーションすることを伴う。実行可能性は、周期的に再評価され、必要に応じて、ビットレートは実行可能なビットレートまで下げられる。しかし、実行可能である場合、表示品質を増加させるために、ビットレートが増加する。   [0093] In short, techniques for playing digital content files on the content player 110 are disclosed. This technology takes into account the main bandwidth conditions and steps to estimate whether a given digital content file can be played successfully at a given bit rate given the currently available bandwidth The step of adapting the bit rate for the purpose. The step of estimating feasibility substantially involves simulating the download of the remaining units of video and audio data from the current playback position in time for the completion of playback. Feasibility is periodically reevaluated and the bit rate is reduced to a viable bit rate if necessary. However, if feasible, the bit rate is increased to increase display quality.

[0094]開示された技術の1つの利点は、再生ビットレート及び使用可能なダウンロード帯域幅に基づく可能なバッファアンダーランが追跡され、バッファアンダーラン状態を回避しながら、複数単位のデジタルコンテンツが可能な限り最高の画質でダウンロードされることである。さらに、再生の始まりと関連した遅延時間は、比較的低いビットレートで再生を開始し、可能な場合はいつでも、より高い再生ビットレートに適応させることによって減らされる。   [0094] One advantage of the disclosed technique is that possible buffer underruns based on playback bit rate and available download bandwidth are tracked, allowing multiple units of digital content while avoiding buffer underrun conditions It will be downloaded with the best possible image quality. Further, the delay time associated with the beginning of playback is reduced by starting playback at a relatively low bit rate and adapting to a higher playback bit rate whenever possible.

[0095]上記は本発明の実施形態を対象とするが、本発明の他の及びさらなる実施形態は、その基本的な範囲を逸脱しない範囲で考案され得る。例えば、本発明の態様は、ハードウェア若しくはソフトウェア、又はハードウェアとソフトウェアとの組み合わせに実装することができる。本発明の一実施形態を、コンピュータシステム用のプログラム製品として実装することができる。プログラム製品のプログラム(複数可)は、(本明細書に記載した方法を含む)実施形態の機能を定義し、様々なコンピュータ可読記憶媒体上に含めることができる。コンピュータ可読記憶媒体例には、それだけには限定されないが、(i)情報が永久に格納される書き込み不可の記憶媒体(例えば、CD−ROMドライブによって読み込み可能なCD−ROMディスク、フラッシュメモリ、ROMチップ、又は任意のタイプの固体不揮発性半導体メモリなど、コンピュータ内の読み取り専用記憶装置)、及び(ii)変更可能な情報が格納される書き込み可能な記憶媒体(例えば、ディスケットドライブ又はハードディスクドライブ内のフロッピーディスク、又は任意のタイプの固体ランダムアクセス半導体メモリ)を含む。本発明の機能を指示するコンピュータ可読命令を含むとき、こうしたコンピュータ可読記憶媒体は本発明の実施形態である。   [0095] While the above is directed to embodiments of the invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof. For example, aspects of the invention can be implemented in hardware or software, or a combination of hardware and software. One embodiment of the present invention can be implemented as a program product for a computer system. The program product (s) define the functionality of the embodiments (including the methods described herein) and can be included on various computer-readable storage media. Examples of computer readable storage media include, but are not limited to: (i) a non-writable storage medium in which information is permanently stored (eg, a CD-ROM disk readable by a CD-ROM drive, flash memory, ROM chip) Or any type of solid state non-volatile semiconductor memory, such as a read-only storage device in a computer), and (ii) a writable storage medium in which changeable information is stored (eg, a floppy in a diskette drive or hard disk drive) Disk, or any type of solid state random access semiconductor memory). Such computer readable storage media are embodiments of the present invention when including computer readable instructions that direct the functionality of the present invention.

[0096]上記を鑑み、本発明の範囲は、以下の特許請求の範囲によって決定される。   [0096] In view of the above, the scope of the present invention is determined by the following claims.

Claims (15)

コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを決定するための方法であって、
デジタルコンテンツのファイルの中の1単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定するステップと、
第1の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記第1の単位のデジタルコンテンツと関連したダウンロード時間を推定するステップであり、前記第1の単位のデジタルコンテンツの前記サイズが、前記第1の単位のデジタルコンテンツがダウンロードされるデジタルコンテンツの前記ファイルに含まれる第1のコード化済みシーケンスによって決まる、ステップと、
前記推定されたダウンロード時間に基づいて、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算するステップと、
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
バッファアンダーランが生じない場合、前記第1のコード化済みシーケンスから前記第1の単位のデジタルコンテンツをダウンロードすることが実行可能であることを示すステップ、又は
バッファアンダーランが生じる場合、前記第1のコード化済みシーケンスから前記第1の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示すステップと
を含む方法。
A method for determining whether digital content downloaded from a content server to a content buffer can be accessed from the content buffer for playback at a predetermined bit rate without causing a buffer underrun. And
Determining that one or more units of digital content in the digital content file must still be downloaded and buffered for playback;
Estimating a download time associated with the digital content of the first unit based on a size of the digital content of the first unit and an available download bandwidth, The size is determined by a first encoded sequence included in the file of digital content from which the first unit of digital content is downloaded;
Calculating a time associated with playing all of the digital content stored in the content buffer based on the estimated download time;
Determining whether the calculated time is less than or equal to zero indicating that a buffer underrun occurs;
A step indicating that downloading the first unit of digital content from the first encoded sequence is feasible if no buffer underrun occurs, or if a buffer underrun occurs, the first Indicating that it is not feasible to download the first unit of digital content from the encoded sequence of:
前記第1の単位のデジタルコンテンツが前記第1のコード化済みシーケンスから前記コンテンツバッファにダウンロードされることを考慮に入れるために、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を更新するステップをさらに含む請求項1に記載の方法。   Playing back all of the digital content stored in the content buffer to take into account that the first unit of digital content is downloaded from the first encoded sequence to the content buffer; The method of claim 1, further comprising updating the associated time. ダウンロード時間を推定する前記ステップと、再生することと関連した時間を計算する前記ステップと、前記計算された時間がゼロ以下であるかどうかを決定する前記ステップと、ダウンロードが実行可能であるか実行不可能であるかを示す前記ステップとが、第2の単位のデジタルコンテンツについて繰り返され、前記第2の単位のデジタルコンテンツが、前記第1のコード化済みシーケンス、又はデジタルコンテンツの前記ファイルに含まれる別のコード化済みシーケンスのいずれかからダウンロードされる請求項2に記載の方法。   The step of estimating a download time; the step of calculating a time associated with playback; the step of determining whether the calculated time is less than or equal to zero; and whether the download is feasible. The step of indicating if impossible is repeated for a second unit of digital content, the second unit of digital content included in the first encoded sequence or the file of digital content The method of claim 2, wherein the method is downloaded from any of the other encoded sequences. 前記第1の単位のデジタルコンテンツが、動画又はテレビ番組と関連したビデオデータを備える請求項1に記載の方法。   The method of claim 1, wherein the first unit of digital content comprises video data associated with a video or television program. 前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算する前記ステップが、
前記ビデオデータと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内のビデオバッファに格納されたすべてのビデオデータを再生することと関連した時間を計算するステップと、
前記ビデオデータと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内の音声バッファに格納されたすべての音声データを再生することと関連した時間を計算するステップと
を含む請求項4に記載の方法。
Calculating the time associated with playing all of the digital content stored in the content buffer;
Calculating a time associated with playing all video data stored in a video buffer in the content buffer based on the estimated download time associated with the video data;
And calculating a time associated with playing all audio data stored in an audio buffer in the content buffer based on the estimated download time associated with the video data. The method described.
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定する前記ステップが、
前記ビデオバッファ内に格納されたすべてのビデオデータを再生することと関連した前記計算された時間が、ビデオバッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
前記音声バッファ内に格納されたすべての音声データを再生することと関連した前記計算された時間が、音声バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと
を含む請求項5に記載の方法。
The step of determining whether the calculated time is less than or equal to zero indicating that a buffer underrun occurs;
Determining whether the calculated time associated with playing all video data stored in the video buffer is less than or equal to zero indicating that a video buffer underrun occurs;
Determining whether the calculated time associated with playing all audio data stored in the audio buffer is less than or equal to zero indicating that an audio buffer underrun occurs. 5. The method according to 5.
示す前記ステップが、
ビデオバッファアンダーランも音声バッファアンダーランも生じない場合、前記第1のコード化済みシーケンスから前記ビデオデータをダウンロードすることが実行可能であることを示すステップ、又は
ビデオバッファアンダーラン又は音声バッファアンダーランのいずれかが生じる場合、前記第1のコード化済みシーケンスから前記ビデオデータをダウンロードすることが実行不可能であることを示すステップ
を含む請求項6に記載の方法。
Said step of indicating
If neither video buffer underrun nor audio buffer underrun occurs, a step indicating that downloading the video data from the first encoded sequence is feasible, or video buffer underrun or audio buffer underrun 7. The method of claim 6, comprising: indicating that downloading of the video data from the first encoded sequence is not feasible if any of the following occurs:
1単位の音声データのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記1単位の音声データと関連したダウンロード時間を推定するステップと、
前記1単位の音声データと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内に格納されたすべての音声データを再生することと関連した時間を計算するステップと、
前記1単位の音声データと関連した前記推定されたダウンロード時間に基づいて、前記コンテンツバッファ内に格納されたすべてのビデオデータを再生することと関連した時間を計算するステップと、
前記コンテンツバッファ内に格納された前記音声データのすべてを再生することと関連した前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
前記コンテンツバッファ内に格納された前記ビデオデータのすべてを再生することと関連した前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
バッファアンダーランが生じない場合、前記1単位の音声データをダウンロードすることが実行可能であることを示すステップ、又は
バッファアンダーランが生じる場合、前記1単位の音声データをダウンロードすることが実行不可能であることを示すステップと
をさらに含むことを特徴とする請求項4に記載の方法。
Estimating a download time associated with the unit of audio data based on the size of the unit of audio data and the available download bandwidth;
Calculating a time associated with playing all audio data stored in the content buffer based on the estimated download time associated with the unit of audio data;
Calculating a time associated with playing all video data stored in the content buffer based on the estimated download time associated with the unit of audio data;
Determining whether the calculated time associated with playing all of the audio data stored in the content buffer is less than or equal to zero indicating that a buffer underrun occurs;
Determining whether the calculated time associated with playing all of the video data stored in the content buffer is less than or equal to zero indicating that a buffer underrun occurs;
If the buffer underrun does not occur, the step indicating that the one unit of audio data can be downloaded; or if the buffer underrun occurs, the unit of audio data cannot be downloaded. The method of claim 4, further comprising the step of indicating:
前記コンテンツバッファが、ビデオデータを格納するためのビデオバッファのための音声バッファと、音声データを格納するための音声バッファとを含み、前記音声バッファに格納された前記音声データのすべてを再生することと関連した前記時間がゼロ以下、又は前記ビデオバッファに格納された前記ビデオデータのすべてを再生することと関連した前記時間がゼロ以下である場合、バッファアンダーランが生じる請求項8に記載の方法。   The content buffer includes an audio buffer for a video buffer for storing video data and an audio buffer for storing audio data, and reproduces all of the audio data stored in the audio buffer. 9. The method of claim 8, wherein a buffer underrun occurs if the time associated with is less than or equal to zero, or if the time associated with playing all of the video data stored in the video buffer is less than or equal to zero. . 処理ユニットによって実行されると、
デジタルコンテンツのファイルの中の1単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定するステップと、
第1の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記第1の単位のデジタルコンテンツと関連したダウンロード時間を推定するステップであり、前記第1の単位のデジタルコンテンツの前記サイズが、前記第1の単位のデジタルコンテンツがダウンロードされるデジタルコンテンツの前記ファイルに含まれる第1のコード化済みシーケンスによって決まる、ステップと、
前記推定されたダウンロード時間に基づいて、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算するステップと、
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
バッファアンダーランが生じない場合、前記第1のコード化済みシーケンスから前記第1の単位のデジタルコンテンツをダウンロードすることが実行可能であることを示すステップ、又は
バッファアンダーランが生じる場合、前記第1のコード化済みシーケンスから前記第1の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示すステップと
を実行することによって、コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを前記処理ユニットに決定させる命令を格納するコンピュータ可読媒体。
When executed by the processing unit,
Determining that one or more units of digital content in the digital content file must still be downloaded and buffered for playback;
Estimating a download time associated with the digital content of the first unit based on a size of the digital content of the first unit and an available download bandwidth, The size is determined by a first encoded sequence included in the file of digital content from which the first unit of digital content is downloaded;
Calculating a time associated with playing all of the digital content stored in the content buffer based on the estimated download time;
Determining whether the calculated time is less than or equal to zero indicating that a buffer underrun occurs;
A step indicating that downloading the first unit of digital content from the first encoded sequence is feasible if no buffer underrun occurs, or if a buffer underrun occurs, the first The digital content downloaded from the content server to the content buffer is buffered by performing a step indicating that downloading the first unit of digital content from the encoded sequence of A computer readable medium storing instructions that cause the processing unit to determine whether it can be accessed from the content buffer for playback at a predetermined bit rate without causing a run.
前記第1の単位のデジタルコンテンツが前記第1のコード化済みシーケンスから前記コンテンツバッファにダウンロードされていることを考慮に入れるために、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を更新するステップをさらに含む請求項10に記載のコンピュータ可読媒体。   Playing back all of the digital content stored in the content buffer to take into account that the first unit of digital content has been downloaded to the content buffer from the first encoded sequence; The computer-readable medium of claim 10, further comprising updating a time associated with the. ダウンロード時間を推定する前記ステップと、再生することと関連した時間を計算する前記ステップと、前記計算された時間がゼロ以下であるかどうかを決定する前記ステップと、ダウンロードが実行可能であるか実行不可能であるかを示す前記ステップとが、第2の単位のデジタルコンテンツについて繰り返され、前記第2の単位のデジタルコンテンツが、前記第1のコード化済みシーケンス、又はデジタルコンテンツの前記ファイルに含まれる別のコード化済みシーケンスのいずれかからダウンロードされる請求項11に記載のコンピュータ可読媒体。   The step of estimating a download time; the step of calculating a time associated with playback; the step of determining whether the calculated time is less than or equal to zero; and whether the download is feasible. The step of indicating if impossible is repeated for a second unit of digital content, the second unit of digital content included in the first encoded sequence or the file of digital content The computer-readable medium of claim 11, downloaded from any of the other encoded sequences. コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを決定するように構成されたコンテンツプレーヤデバイスであって、
ダウンロードされたデジタルコンテンツを格納するための前記コンテンツバッファを含むメモリと、
デジタルコンテンツのファイルの中の1単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定し、
第1の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記第1の単位のデジタルコンテンツと関連したダウンロード時間を推定し、前記第1の単位のデジタルコンテンツの前記サイズが、前記第1の単位のデジタルコンテンツがダウンロードされるデジタルコンテンツの前記ファイルに含まれる第1のコード化済みシーケンスによって決まり、
前記推定されたダウンロード時間に基づいて、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を計算し、
前記計算された時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定し、
バッファアンダーランが生じない場合、前記第1のコード化済みシーケンスから前記第1の単位のデジタルコンテンツをダウンロードすることが実行可能であることを示す、又は
バッファアンダーランが生じる場合、前記第1のコード化済みシーケンスから前記第1の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示す
ように構成された、前記メモリに結合された処理ユニットと
を備えるコンテンツプレーヤデバイス。
Configured to determine whether digital content downloaded from a content server to a content buffer can be accessed from the content buffer for playback at a predetermined bit rate without causing a buffer underrun A content player device,
A memory including the content buffer for storing downloaded digital content;
Determining that one or more units of digital content in the digital content file must still be downloaded and buffered for playback;
Based on the size of the first unit of digital content and the available download bandwidth, the download time associated with the first unit of digital content is estimated, and the size of the first unit of digital content is The first unit of digital content is determined by a first encoded sequence included in the file of digital content to be downloaded;
Calculating the time associated with playing all of the digital content stored in the content buffer based on the estimated download time;
Determining whether the calculated time is less than or equal to zero indicating that a buffer underrun occurs;
If no buffer underrun occurs, it indicates that it is feasible to download the first unit of digital content from the first encoded sequence, or if a buffer underrun occurs, the first A content player device comprising: a processing unit coupled to the memory configured to indicate that downloading of the first unit of digital content from an encoded sequence is not feasible.
前記処理ユニットが、前記第1の単位のデジタルコンテンツが前記第1のコード化済みシーケンスから前記コンテンツバッファにダウンロードされていることを考慮に入れるために、前記コンテンツバッファに格納された前記デジタルコンテンツのすべてを再生することと関連した時間を更新するようにさらに構成された請求項13に記載のコンテンツプレーヤデバイス。   In order for the processing unit to take into account that the first unit of digital content has been downloaded to the content buffer from the first encoded sequence, the digital content stored in the content buffer The content player device of claim 13, further configured to update a time associated with playing all. 前記処理ユニットが、第2の単位のデジタルコンテンツについて、ダウンロード時間を推定し、再生することと関連した時間を計算し、前記計算された時間がゼロ以下であるかどうかを決定し、ダウンロードが実行可能であるか実行不可能であるかを示し、前記第2の単位のデジタルコンテンツが、前記第1のコード化済みシーケンス、又はデジタルコンテンツの前記ファイルに含まれる別のコード化済みシーケンスのいずれかからダウンロードされる請求項14に記載のコンテンツプレーヤデバイス。   The processing unit estimates the download time for the second unit of digital content, calculates the time associated with playing, determines if the calculated time is less than or equal to zero, and the download is performed Whether it is possible or infeasible, and the second unit of digital content is either the first encoded sequence or another encoded sequence included in the file of digital content 15. A content player device according to claim 14, downloaded from.
JP2012521846A 2009-07-24 2010-07-23 Adaptive streaming for digital content distribution Active JP5302463B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/509,365 US8631455B2 (en) 2009-07-24 2009-07-24 Adaptive streaming for digital content distribution
US12/509,365 2009-07-24
PCT/US2010/043114 WO2011011724A1 (en) 2009-07-24 2010-07-23 Adaptive streaming for digital content distribution

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013128908A Division JP5652971B2 (en) 2009-07-24 2013-06-19 Adaptive streaming for digital content distribution

Publications (2)

Publication Number Publication Date
JP2013500635A JP2013500635A (en) 2013-01-07
JP5302463B2 true JP5302463B2 (en) 2013-10-02

Family

ID=43498420

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012521846A Active JP5302463B2 (en) 2009-07-24 2010-07-23 Adaptive streaming for digital content distribution
JP2013128908A Active JP5652971B2 (en) 2009-07-24 2013-06-19 Adaptive streaming for digital content distribution

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2013128908A Active JP5652971B2 (en) 2009-07-24 2013-06-19 Adaptive streaming for digital content distribution

Country Status (11)

Country Link
US (2) US8631455B2 (en)
EP (1) EP2457167B1 (en)
JP (2) JP5302463B2 (en)
BR (1) BR112012002182B1 (en)
CA (1) CA2768964C (en)
CL (1) CL2012000194A1 (en)
CO (1) CO6491092A2 (en)
DK (1) DK2457167T3 (en)
IN (1) IN2012DN00717A (en)
MX (1) MX2012001100A (en)
WO (1) WO2011011724A1 (en)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010025686A1 (en) * 2008-09-05 2010-03-11 The Chinese University Of Hong Kong Methods and devices for live streaming using pre-indexed file formats
US9060187B2 (en) 2008-12-22 2015-06-16 Netflix, Inc. Bit rate stream switching
US9014545B2 (en) * 2009-07-24 2015-04-21 Netflix, Inc. Adaptive streaming for digital content distribution
US8914835B2 (en) * 2009-10-28 2014-12-16 Qualcomm Incorporated Streaming encoded video data
US9872057B1 (en) * 2009-11-30 2018-01-16 The Directv Group, Inc. Method and system for accessing content in another format in a communications system
US9237178B2 (en) * 2010-02-03 2016-01-12 Futurewei Technologies, Inc. Combined binary string for signaling byte range of media fragments in adaptive streaming
US8504713B2 (en) * 2010-05-28 2013-08-06 Allot Communications Ltd. Adaptive progressive download
US9037742B2 (en) 2011-11-15 2015-05-19 International Business Machines Corporation Optimizing streaming of a group of videos
US9166864B1 (en) * 2012-01-18 2015-10-20 Google Inc. Adaptive streaming for legacy media frameworks
CN103425504A (en) * 2012-05-18 2013-12-04 阿里巴巴集团控股有限公司 Method and device for loading video files
JP6142488B2 (en) * 2012-09-13 2017-06-07 株式会社Jvcケンウッド Content playback apparatus, content playback method, and content playback program
TWI507022B (en) * 2012-12-05 2015-11-01 Ind Tech Res Inst Buffer output method for multimedia stream and multimedia stream buffer module
US9654528B1 (en) 2013-03-11 2017-05-16 Google Inc. Dynamic bitrate selection for streaming media
US10433014B2 (en) 2014-10-28 2019-10-01 Hewlett Packard Enterprise Development Lp Media content download time
CN107534798A (en) * 2015-04-22 2018-01-02 Lg 电子株式会社 Broadcast singal sends equipment, broadcasting signal receiving, broadcast singal sending method and broadcast signal received method
WO2017063189A1 (en) * 2015-10-16 2017-04-20 Qualcomm Incorporated Deadline signaling for streaming of media data
US10433023B1 (en) * 2015-10-27 2019-10-01 Amazon Technologies, Inc. Heuristics for streaming live content
WO2017132434A1 (en) * 2016-01-28 2017-08-03 Arris Enterprises Llc Variable buffer handling for adaptive bitrate streaming
US10091559B2 (en) * 2016-02-09 2018-10-02 Disney Enterprises, Inc. Systems and methods for crowd sourcing media content selection
CN108886638A (en) * 2016-03-28 2018-11-23 索尼公司 Transcriber and reproducting method and file creating apparatus and document generating method
CN108886628A (en) * 2016-03-28 2018-11-23 索尼公司 File creating apparatus and document generating method
US10735508B2 (en) * 2016-04-04 2020-08-04 Roku, Inc. Streaming synchronized media content to separate devices
US10387993B2 (en) * 2017-09-29 2019-08-20 Intel Corporation Fault-tolerant graphics display engine
CN107809647A (en) * 2017-10-24 2018-03-16 深圳市创维软件有限公司 Code check switching method, device and the storage medium of video playback
EP3767962A1 (en) * 2019-07-19 2021-01-20 THEO Technologies A media client with adaptive buffer size and the related method
US10958947B1 (en) * 2020-03-12 2021-03-23 Amazon Technologies, Inc. Content delivery of live streams with playback-conditions-adaptive encoding

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5159447A (en) * 1991-05-23 1992-10-27 At&T Bell Laboratories Buffer control for variable bit-rate channel
US5414455A (en) 1993-07-07 1995-05-09 Digital Equipment Corporation Segmented video on demand system
US5608732A (en) * 1993-09-01 1997-03-04 Zenith Electronics Corporation Television distribution system having virtual memory downloading
KR100407085B1 (en) 1994-12-28 2004-03-20 코닌클리케 필립스 일렉트로닉스 엔.브이. Buffer management in variable bit-rate compression systems
US6721952B1 (en) 1996-08-06 2004-04-13 Roxio, Inc. Method and system for encoding movies, panoramas and large images for on-line interactive viewing and gazing
US6453114B2 (en) * 1997-02-18 2002-09-17 Thomson Licensing Sa Random picture decoding
JPH11331792A (en) * 1998-05-08 1999-11-30 Sony Corp Client device and server-client system
US6438630B1 (en) * 1999-10-06 2002-08-20 Sun Microsystems, Inc. Scheduling storage accesses for multiple continuous media streams
JP2002157825A (en) * 2000-11-21 2002-05-31 Ricoh Co Ltd Information recording device
US7274661B2 (en) * 2001-09-17 2007-09-25 Altera Corporation Flow control method for quality streaming of audio/video/media over packet networks
US7646816B2 (en) * 2001-09-19 2010-01-12 Microsoft Corporation Generalized reference decoder for image or video processing
EP1359722A1 (en) 2002-03-27 2003-11-05 BRITISH TELECOMMUNICATIONS public limited company Data streaming system and method
JP2004040526A (en) * 2002-07-04 2004-02-05 Ricoh Co Ltd System for distributing image and system for distributing and reproducing image
US7263129B2 (en) * 2002-08-29 2007-08-28 Sony Corporation Predictive encoding and data decoding control
JP3935419B2 (en) 2002-11-19 2007-06-20 Kddi株式会社 Video coding bit rate selection method
EP1465186A1 (en) 2003-04-02 2004-10-06 Deutsche Thomson-Brandt Gmbh Method for buffering data streams read from an optical storage medium
US7924921B2 (en) * 2003-09-07 2011-04-12 Microsoft Corporation Signaling coding and display options in entry point headers
US8345754B2 (en) * 2003-09-07 2013-01-01 Microsoft Corporation Signaling buffer fullness
US7234007B2 (en) * 2003-09-15 2007-06-19 Broadcom Corporation Adjustable elasticity FIFO buffer have a number of storage cells equal to a frequency offset times a number of data units in a data stream
US7818444B2 (en) * 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
JP2005333478A (en) * 2004-05-20 2005-12-02 Mitsumi Electric Co Ltd Streaming content reproduction method and internet connecting device using the same
KR20060065482A (en) 2004-12-10 2006-06-14 마이크로소프트 코포레이션 A system and process for controlling the coding bit rate of streaming media data
US7480701B2 (en) 2004-12-15 2009-01-20 Microsoft Corporation Mixed-media service collections for multimedia platforms
JP4643330B2 (en) * 2005-03-28 2011-03-02 ソニー株式会社 COMMUNICATION PROCESSING DEVICE, DATA COMMUNICATION SYSTEM, COMMUNICATION PROCESSING METHOD, AND COMPUTER PROGRAM
JP2006279843A (en) * 2005-03-30 2006-10-12 Nippon Telegraph & Telephone West Corp Content distribution system and content reproduction device
EP1872536B1 (en) 2005-04-11 2008-09-10 Telefonaktiebolaget LM Ericsson (publ) Technique for controlling data packet transmissions of variable bit rate data
US7743183B2 (en) * 2005-05-23 2010-06-22 Microsoft Corporation Flow control for media streaming
JP2007036666A (en) * 2005-07-27 2007-02-08 Onkyo Corp Contents distribution system, client, and client program
JP4640860B2 (en) 2005-12-01 2011-03-02 シャープ株式会社 Communication system and communication terminal
US8607287B2 (en) 2005-12-29 2013-12-10 United Video Properties, Inc. Interactive media guidance system having multiple devices
JP4944484B2 (en) * 2006-04-20 2012-05-30 キヤノン株式会社 Playback apparatus, playback method, and program
US20080133766A1 (en) 2006-05-05 2008-06-05 Wenjun Luo Method and apparatus for streaming media to a plurality of adaptive client devices
US20080062322A1 (en) 2006-08-28 2008-03-13 Ortiva Wireless Digital video content customization
US7743161B2 (en) 2006-10-10 2010-06-22 Ortiva Wireless, Inc. Digital content buffer for adaptive streaming
US8745676B2 (en) * 2006-12-19 2014-06-03 General Instrument Corporation Admitting a data file into a channel
CN101622846B (en) 2007-03-01 2013-02-27 艾利森电话股份有限公司 Bit streams combination of downloaded multimedia files
JP4930148B2 (en) 2007-03-29 2012-05-16 ブラザー工業株式会社 Information processing apparatus, information processing method, and information processing program
US7706384B2 (en) * 2007-04-20 2010-04-27 Sharp Laboratories Of America, Inc. Packet scheduling with quality-aware frame dropping for video streaming
JP2008293436A (en) * 2007-05-28 2008-12-04 Victor Co Of Japan Ltd Content reception control device and content reception control program
US8561116B2 (en) * 2007-09-26 2013-10-15 Charles A. Hasek Methods and apparatus for content caching in a video network
ES2624910T3 (en) 2008-06-06 2017-07-18 Amazon Technologies, Inc. Client side sequence switching
KR20100009903A (en) * 2008-07-21 2010-01-29 엘지전자 주식회사 Method and apparatus for playing of contents, portable terminal device
US8726310B2 (en) * 2009-02-05 2014-05-13 Purplecomm Inc. Meta channel media system control and advertisement technology
EP2257073A1 (en) 2009-05-25 2010-12-01 Canon Kabushiki Kaisha Method and device for transmitting video data
US9014545B2 (en) 2009-07-24 2015-04-21 Netflix, Inc. Adaptive streaming for digital content distribution

Also Published As

Publication number Publication date
CO6491092A2 (en) 2012-07-31
DK2457167T3 (en) 2021-02-08
US9648385B2 (en) 2017-05-09
CL2012000194A1 (en) 2012-08-24
JP2013219819A (en) 2013-10-24
US8631455B2 (en) 2014-01-14
EP2457167A4 (en) 2015-09-02
BR112012002182B1 (en) 2020-12-08
JP2013500635A (en) 2013-01-07
IN2012DN00717A (en) 2015-06-19
WO2011011724A1 (en) 2011-01-27
US20140189771A1 (en) 2014-07-03
JP5652971B2 (en) 2015-01-14
MX2012001100A (en) 2012-06-13
CA2768964C (en) 2015-08-25
EP2457167B1 (en) 2020-12-02
BR112012002182A2 (en) 2016-05-31
US20110023076A1 (en) 2011-01-27
CA2768964A1 (en) 2011-01-27
EP2457167A1 (en) 2012-05-30

Similar Documents

Publication Publication Date Title
JP5302463B2 (en) Adaptive streaming for digital content distribution
US9769505B2 (en) Adaptive streaming for digital content distribution
US9781183B2 (en) Accelerated playback of streaming media
US8997160B2 (en) Variable bit video streams for adaptive streaming
US8689267B2 (en) Variable bit video streams for adaptive streaming
US20170034233A1 (en) Pre-Buffering Audio Streams
AU2012207151A1 (en) Variable bit video streams for adaptive streaming

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130515

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130521

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130620

R150 Certificate of patent or registration of utility model

Ref document number: 5302463

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250