JP2004514336A - Idle time reduction and constant bandwidth data on demand broadcast distribution matrix - Google Patents

Idle time reduction and constant bandwidth data on demand broadcast distribution matrix Download PDF

Info

Publication number
JP2004514336A
JP2004514336A JP2002542135A JP2002542135A JP2004514336A JP 2004514336 A JP2004514336 A JP 2004514336A JP 2002542135 A JP2002542135 A JP 2002542135A JP 2002542135 A JP2002542135 A JP 2002542135A JP 2004514336 A JP2004514336 A JP 2004514336A
Authority
JP
Japan
Prior art keywords
data
matrix
transmission
bandwidth
computer
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.)
Withdrawn
Application number
JP2002542135A
Other languages
Japanese (ja)
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.)
PrediWave Corp
Original Assignee
PrediWave Corp
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
Priority claimed from US09/709,948 external-priority patent/US6725267B1/en
Priority claimed from US09/841,792 external-priority patent/US20020023267A1/en
Priority claimed from US09/892,017 external-priority patent/US20020026501A1/en
Application filed by PrediWave Corp filed Critical PrediWave Corp
Publication of JP2004514336A publication Critical patent/JP2004514336A/en
Withdrawn legal-status Critical Current

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/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26208Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
    • H04N21/26216Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints involving the channel capacity, e.g. network bandwidth
    • 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/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
    • 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/47End-user applications
    • H04N21/482End-user interface for program selection
    • H04N21/4821End-user interface for program selection using a grid, e.g. sorted out by channel and broadcast time

Abstract

【解決手段】データブロックに分解されたデータファイル用のアイドルタイム減少スケジューリング行列(520)のための方法およびシステム。スケジューリング行列が生成され、データブロックの元のシーケンスを維持したまま、アイドルタイムが行列の後の方に現れるデータブロックで満たされる。次に、この動作が繰り返されるか(550)、または、新しいアイドルタイム減少スケジューリング行列が生成される(560)。特別に設計されたセット・トップ・ボックスが、これらのデータブロックを受信する。
【選択図】図9
A method and system for a reduced idle time scheduling matrix (520) for data files decomposed into data blocks. A scheduling matrix is generated and idle time is filled with data blocks appearing later in the matrix, while maintaining the original sequence of data blocks. This operation is then repeated (550) or a new idle time reduction scheduling matrix is generated (560). A specially designed set top box receives these data blocks.
[Selection diagram] FIG.

Description

【0001】
【発明の属する技術分野】
ビデオ・オン・デマンド(VOD)システムは、データ・オン・デマンド(DOD)システムの一種である。VODシステムでは、ビデオデータファイルは、サーバまたは複数サーバのネットワークによって、1以上のクライアントにオン・デマンドで提供される。これらのシステムは、当業者にとって周知である。
【0002】
【従来の技術】
従来のVODアーキテクチャでは、サーバまたは複数サーバのネットワークは、標準的な階層クライアント・サーバモデルでクライアントと通信する。例えば、クライアントは、データファイル(例えば、ビデオデータファイル)の要求をサーバに送信する。クライアントの要求に応じて、サーバは、要求されたファイルをクライアントに送信する。標準的なクライアント・サーバモデルでは、クライアントからのデータファイル要求は、1以上のサーバによって実現されることが可能である。クライアントは、受信されたデータファイルすべてを、後の使用のために不揮発性メモリにローカル格納する機能を有してもよい。標準的なクライアント・サーバモデルは、双方向通信のインフラストラクチャを必要とする。既存のケーブルは単方向の通信しか提供できないため、現時点で双方向通信を行うには、新しいインフラストラクチャを構築する必要がある。双方向通信インフラストラクチャの例として、光ファイバ・同軸ハイブリットケーブル(HFC)や、すべてのファイバインフラストラクチャが挙げられる。既存のケーブルを置き換えると、非常にコストが掛かるため、その結果として提供されるサービスの価格は、大部分のユーザにとって手の届かないものになるだろう。
【0003】
また、標準的なクライアント・サーバモデルは、サービスプロバイダ(例えば、ケーブル会社)が多数のクライアントにVODサービスを提供しようとする場合には、多くの制約を受ける。標準的なクライアント・サーバモデルの制約の1つは、サービスプロバイダが、ネットワーク内の各クライアントからの要求すべてを連続的に受け入れて実現するためのメカニズムを実装する必要があるために、サービスを受けることのできるクライアントの数が、このようなメカニズムの収容能力に依存するという点である。あるメカニズムは、大型で高速なディスクアレイを有する超並列コンピュータをローカルサーバとして用いる。しかしながら、既存のローカルサーバのうちで最速のものでも、一度に約1,000から2,000のクライアントにビデオデータストリームを配信できるにすぎない。したがって、より多くのクライアントにサービスを提供するためには、ローカルサーバの数を増やさなければならない。ローカルサーバの数が増えると、ローカルサーバの制御を維持するために、より多くの上位サーバが必要となる。
【0004】
標準的なクライアント・サーバモデルが受ける別の制約は、各クライアントが専用の帯域幅を必要とする点である。したがって、必要となる全帯域幅は、加入クライアントの数に正比例する。帯域幅の制約に対処するために、これまでローカルサーバ内のキャッシュメモリが使用されてきたが、キャッシュメモリ自体にも限界があるため、キャッシュメモリを用いても問題は解決されない。
【0005】
クライアントがより低価格でビデオ・オン・デマンドを利用できるようにするために、既存のサービスプロバイダは、ローカルサーバ当たりのクライアントの割合をローカルサーバの能力を超えて増大させている。典型的に、1,000のクライアントにサービスを提供できるローカルサーバが、実際には、10,000のクライアントに対するサービスを請け負っている。この技術は、加入クライアントの大部分が同時にビデオを注文しないのであれば、機能し得る。しかしながら、大部分のクライアントが同時に(すなわち、夜間や週末に)ビデオの視聴を所望することで、ローカルサーバがオーバーロードされる可能性があるため、この技術の構成には欠陥がある。
【0006】
したがって、既存のインフラストラクチャを置き換えることなく、実質的にすべての伝送媒体を通して多数のクライアントにオン・デマンドサービスを提供することができるシステムを提供することが望まれている。
【0007】
【発明の概要】
代表的な実施形態では、サーバ側において、データ・オン・デマンドサービスを提供するためにクライアントにデータを送信する方法は、データファイルを受信するステップと、時間間隔を特定するステップと、時間間隔に基づいてデータファイルを複数のデータブロックに分解することで、その時間間隔中に各データブロックを表示できるようにするステップと、データファイルを送信するために必要とされるタイムスロットの数を決定するステップと、複数のデータブロックのうち少なくとも第1のデータブロックと、随意的に1以上の追加のデータブロックとを、各タイムスロットに割り当てることで、クライアントが、どのタイムスロット中にデータファイルにアクセスしても複数のデータブロックを順番に利用できるようにするステップと、割り当てステップに基づいて複数のデータブロックを送信するステップと、を備える。一実施形態において、分解ステップは、推定データブロックサイズを決定するステップと、チャンネルサーバ内のメモリのクラスタサイズを決定するステップと、推定データブロックサイズおよびクラスタサイズに基づいてデータファイルを分解するステップと、を含む。別の実施形態において、決定ステップは、リソースの割り当てと帯域幅の利用可能性とを評価するステップを含む。
【0008】
代表的な実施形態では、クライアント側において、データ・オン・デマンドサービスを提供するためにサーバから受信されたデータを処理する方法は、(a)第1のタイムスロット中にデータファイルの選択を受信するステップと、(b)第2のタイムスロット中にデータファイルのうちの少なくとも1つのデータブロックを受信するステップと、(c)次のタイムスロット中に、まだ受信されていない任意のデータブロックを受信して、そのデータファイルのデータブロックを順次表示するステップと、データファイルの全データブロックが受信および表示されるまでステップ(c)を繰り返すステップと、を備える。一実施形態では、サーバから受信されたデータを処理するための方法は、クライアント側のセット・トップ・ボックスによって実行される。
【0009】
代表的な実施形態では、データファイルがいくつかのデータブロックに分割され、スケジューリング行列がデータブロックの数に基づいて生成される。サーバ側で、スケジューリング行列は、データブロックを送信するための送信順序を提供することで、クライアントがいつでも順番にデータブロックにアクセスできるようにする。代表的な実施形態では、データファイルのためのスケジューリング行列を生成する方法は、(a)1つのデータファイルのためのデータブロックの数[x]を受信するステップと、(b)第1の変数[j]を0に設定するステップと、(c)第2の変数[i]を0に設定するステップと、(d)参照配列のなかの全エントリを消去するステップと、(e)行列内の列[(i+j) modulo x]の行列位置に格納された少なくとも1つのデータブロックを参照配列が含んでいない場合に、そのデータブロックを参照配列に書き込むステップと、(f)参照配列がデータブロック[i]を含んでいない場合に、参照配列および行列の行列位置[(i+j) modulo x,j]にデータブロック[i]を書き込むステップと、(g)第2の変数[i]を1だけ増分し、第2の変数[i]がデータブロックの数[x]に等しくなるまでステップ(e)を繰り返すステップと、(h)第1の変数[j]を1だけ増分し、第1の変数[j]がデータブロックの数[x]に等しくなるまでステップ(c)を繰り返すステップと、を備える。一実施形態では、スケジューリング行列は、1セットのデータファイル内のデータファイルごとに生成されるので、その1セットのデータファイルの送信用に、これらスケジューリング行列に基づいて配信行列を生成するために、畳み込み方法が用いられる。
【0010】
データ・オン・デマンドシステムは、第1のセットのチャンネルサーバと、第1のセットのチャンネルサーバを制御するための中央制御サーバと、第1のセットのチャンネルサーバに接続された第1のセットのアップコンバータと、第1のセットのアップコンバータに接続されたコンバイナ/アンプリファイアと、伝送媒体を介してデータを伝送するよう適合されたコンバイナ/アンプリファイアとを備える。代表的な実施形態において、データ・オン・デマンドシステムは、さらに、システムを監視するためのチャンネル監視モジュールと、スイッチ行列と、第2のセットのチャンネルサーバと、第2のセットのアップコンバータとを備える。チャンネル監視モジュールは、システム障害が起きた際に中央制御サーバに報告するよう構成されている。中央制御サーバは、チャンネル監視モジュールからの報告に応答して、第1のセットのチャンネルサーバの中で不具合を生じたチャンネルサーバを第2のセットのチャンネルサーバ内のチャンネルサーバで置き換え、第1のセットのアップコンバータの中で不具合を生じたアップコンバータを第2のセットのアップコンバータで置き換えるよう、スイッチ行列に命令する。
【0011】
データ・オン・デマンドサービスを提供するための方法は、データファイルの配信行列を計算するステップと、配信行列に従ってデータファイルを送信することで、多数のクライアントがデータファイルをオン・デマンドで視聴できるようにするステップとを備える。一実施形態では、データファイルはビデオファイルを含む。
【0012】
本発明のさらに別の実施形態では、すべてのタイムスロットが満杯になり、帯域幅全体が用いられるまで、配信行列内の次のデータブロックを繰り上げることにより、配信行列に生じるアイドルタイムを減少できる。このように、配信行列は、むしろ、元の行列の順番を維持するデータのストリームとして考えられる。いつでも、ユーザは、そのストリームに加わって、開始ブロックが受信されるとすぐにデータ・オン・デマンドサービスを用いることができる。
【0013】
行列をストリームとして考えることができるので、ユーザは、任意の時間にストリームに入り、開始ブロックを受信してデータ・オン・デマンドサービスを利用するまでの時間だけ待てばよい。その時間は、元の配信行列の所定の時間よりも短いだろう。
【0014】
本発明の別の実施形態は、VODおよびデジタル放送などの複数のデジタルサービスを受信して扱うことができる汎用STBを開示している。この実施形態は、受信データの高度な処理が可能である非常に柔軟なアーキテクチャを有する汎用STBを開示している。このアーキテクチャは、データバスと、デジタル放送の通信媒体への接続に適した第1の通信装置と、データバスに双方向的に接続された永続および一時メモリを典型的に含むメモリと、データバスに双方向的に接続されたデジタルデータデコーダと、データバスに双方向的に接続された中央処理装置(CPU)と、を備える。本発明のこの実施形態のCPUは、メモリと、デジタルデコーダと、デモジュレータとを制御するためのSTB制御プロセスを実行する。STB制御プロセスは、第1の通信装置で受信されるデータのようなデジタルデータを処理するよう動作可能である。STB制御プロセスは、データブロックの並列ストリーミングだけでなく、アイドルタイム減少スケジューリング行列から引き出されるデータも受信可能であることが好ましい。
【0015】
【発明の実施の形態】
図1Aは、本発明の一実施形態に従う代表的なDODシステム100を示している。この実施形態では、DODシステム100は、ビデオファイルなどのデータファイルをオン・デマンドで提供する。しかしながら、DODシステム100は、ビデオファイルをオン・デマンドで提供することに限定されず、例えばゲームファイルなど、他のデータファイルをオン・デマンドで提供することもできる。DODシステム100は、中央制御サーバ102と、中央ストレージ103と、複数のチャンネルサーバ104a〜104nと、複数のアップコンバータ106a〜106nと、コンバイナ/アンプリファイア108とを含む。中央制御サーバ102は、チャンネルサーバ104を制御する。中央ストレージ103は、デジタルフォーマットでデータファイルを格納する。代表的な実施形態では、中央ストレージ103に格納されたデータファイルは、ネットワークに接続された中央制御サーバ102などの任意の許可コンピュータによって、標準的なネットワークインターフェース(例えば、イーサネット接続)を介してアクセス可能である。各チャンネルサーバ104は、1つのチャンネルに割り当てられ、1つのアップコンバータ106に接続されている。チャンネルサーバ104は、中央制御サーバ102からの命令に従って、中央ストレージ103から読み出されたデータファイルを提供する。各チャンネルサーバ104の出力は、対応するアップコンバータ106に適した周波数を有すると共に直交振幅変調(QAM)によって変調された中間周波(IF)信号である。QAM変調IF信号は、採用された規格によって決まる。米国で現在採用されている規格は、データ・オーバー・ケーブル・システムス・インターフェース・スペフィシケイション(DOCSIS)規格であり、約43.75MHzのIF周波数を必要とする。アップコンバータ106は、チャンネルサーバ104から受信されたIF信号を高周波信号(RF信号)に変換する。RF信号は、周波数および帯域幅を含んでおり、所望のチャンネルおよび採用規格によって決まる。例えば、米国における現行の規格では、ケーブルテレビチャンネル80に対して、RF信号は、約559.25MHzの周波数と約6MHzの帯域幅とを有する。アップコンバータ106の出力は、コンバイナ/アンプリファイア108に送られる。コンバイナ/アンプリファイア108は、受信されたRF信号を増幅、調節、および結合し、次いで、伝送媒体110へと出力する。
【0016】
代表的な実施形態では、中央制御サーバ102は、サービスプロバイダがドラッグ・アンド・ドロップ動作によってデータ配信をスケジューリングすることを可能とするために、グラフィックユーザインターフェース(図示せず)を備える。さらに、中央制御サーバ102は、チャンネルサーバ104を認証および制御して、配信行列に従って開始または停止させる。代表的な実施形態では、中央制御サーバ102は、チャンネルを自動的に選択し、選択されたチャンネルでデータファイルを伝送するための配信行列を計算する。中央制御サーバ102は、データファイル情報(例えば、継続時間、カテゴリ、レーティング、および/または、要旨)のオフラインでの追加、削除、および更新を提供する。さらに、中央制御サーバ102は、中央ストレージ103に格納されているデータファイルおよびデータベースを更新することによって中央ストレージ103を制御する。
【0017】
代表的な実施形態では、既存のケーブルテレビシステム120は、クライアントに非DODサービスを提供するために、コンバイナ/アンプリファイア108に信号を供給し続けてもよい。したがって、本発明に従ったDODシステム100は、現在のケーブルテレビサービスを妨げることはない。
【0018】
図1Bは、本発明に従って、DODシステム100の別の代表的な実施形態を示している。図1Aに示した要素に加えて、DODシステム100は、スイッチ行列112と、チャンネル監視モジュール114と、1セットのバックアップ・チャンネルサーバ116a〜116bと、1セットのバックアップ・アップコンバータ118a〜118bとを含む。一実施形態では、スイッチ行列112は、アップコンバータ106とコンバイナ/アンプリファイア108との間に物理的に設けられる。スイッチ行列112は、中央制御サーバ102によって制御される。チャンネル監視モジュール114は、DODシステム100の正常性を監視するために、潜在的なクライアントをシミュレートするよう構成された複数のセット・トップ・ボックスを備える。監視の結果は、チャンネル監視モジュール114によって中央制御サーバ102に伝達される。チャンネル障害(すなわち、チャンネルサーバ障害、アップコンバータ障害、または通信回線障害)が生じた場合は、中央制御サーバ102は、スイッチ行列112を通して、機能不全の構成要素を外すと共に、正常なバックアップ構成要素116および/または118を用いて、サービスを再開する。
【0019】
代表的な実施形態では、DODシステム100から放送されているデータファイルは、モーション・ピクチャース・イクスパート・グループ(MPEG)ファイル内に含まれている。各MPEGファイルは、時間軸に沿ってデータファイルの特定部分に対してマップするデータブロックおよびサブブロックに動的に分割される。これらのデータブロックおよびサブブロックは、中央制御サーバ102によって提供される三次元の配信行列に従って、所定の期間中に送信される。フィードバックチャンネルは、DODシステム100がDODサービスを提供する際には必要ない。しかしながら、フィードバックチャンネルが利用可能であれば、フィードバックチャンネルは、請求やインターネットサービスの提供など、他の目的のために用いることができる。
【0020】
図2は、本発明の一実施形態に従う代表的なチャンネルサーバ104を示している。チャンネルサーバ104は、サーバコントローラ202と、CPU204と、QAMモジュレータ206と、ローカルメモリ208と、ネットワークインターフェース210とを備える。サーバコントローラ202は、データファイルをブロックに(さらに、サブブロックおよびデータパケットに)分割し、中央制御サーバ102によって提供された配信行列に従って伝送するためにデータブロックを選択し、選択されたデータをエンコードし、エンコードされたデータを圧縮し、次いで、圧縮されたデータをQAMモジュレータ206に送信するよう、CPU204に命令することにより、チャンネルサーバ104の動作全体を制御する。QAMモジュレータ206は、バス(すなわち、PCIまたはCPUローカルバス)またはイーサネット接続を介して伝送されるデータを受信する。代表的な実施形態では、QAMモジュレータ206は、下流側QAMモジュレータ、前進型誤り訂正デコーダを備える上流側直交振幅変調/直交位相変位変調方式(QAM/QPSK)バーストデモジュレータ、および/または、上流側チューナを備えてもよい。QAMモジュレータ206の出力は、アップコンバータ106に直接適用できるIF信号である。
【0021】
ネットワークインターフェース210は、中央制御サーバ102からのスケジューリングおよび制御の命令と、中央制御サーバ102へのステータスの報告と、中央ストレージ103からのデータファイルの受信と、を実行するために、チャンネルサーバ104を、他のチャンネルサーバ104および中央制御サーバ102に接続する。中央ストレージ103から読み出された任意のデータファイルは、サーバコントローラ202からの命令に従って処理される前に、チャンネルサーバ104のローカルメモリ208に格納することができる。代表的な実施形態では、チャンネルサーバ104は、ケーブルチャンネルの帯域幅(例えば6、6.5、または8MHz)と、QAM変調(例えばQAM64またはQAM256)と、DODデータストリームの圧縮規格/ビットレート(すなわち、MPEG−1またはMPEG−2)とに応じて、1またはそれ以上のDODデータストリームを送信してよい。
【0022】
図3は、本発明の一実施形態に従う汎用セット・トップ・ボックス(STB)300を示している。STB300は、QAMデモジュレータ302と、CPU304と、ローカルメモリ308と、バッファメモリ310と、ビデオおよびオーディオをデコードできるデコーダ312と、グラフィクスオーバーレイモジュール314と、ユーザインターフェース318と、通信回線320と、図のようにこれらの装置を接続する高速データバス322と、を備える。CPU302は、クライアントの要求に応じてデータを選択し、選択されたデータをデコードし、デコードされたデータを解凍し、デコードされたデータを再組み立てし、デコードされたデータをローカルメモリ308またはバッファメモリ310に格納し、格納されたデータをデコーダ312に送信するよう、汎用STB300の動作全体を制御する。代表的な実施形態では、ローカルメモリ308は不揮発性メモリ(例えば、ハードドライブ)を備え、バッファメモリ310は揮発性メモリを備える。
【0023】
一実施形態では、QAMデモジュレータ302は、送信および受信モジュールと、以下に示す要素の内の少なくとも1つとを備える。プライバシ暗号化/復号化モジュール、前進型誤り訂正デコーダ/エンコーダ、チューナ制御、下流側および上流側プロセッサ、CPU、および、メモリインターフェース回路。QAMデモジュレータ302は、変調IF信号を受信し、信号をサンプリングおよび復調してデータを復元する。
【0024】
代表的な実施形態では、アクセスが許可されると、デコーダ312は、少なくとも1つのデータブロックをデコードして、そのデータブロックを出力画面上で表示可能な画像に変換する。デコーダ312は、再生、停止、一時停止、コマ送り、巻き戻し、早送りなど、加入クライアントからの命令をサポートする。デコーダ312は、クライアントが利用できるように、デコードされたデータを出力装置324に提供する。出力装置324は、テレビ、コンピュータ、任意の適当なディスプレイモニタ、VCRなどの任意の適切な装置でよい。
【0025】
グラフィクスオーバーレイモジュール314は、表示されたグラフィクスの質を、例えば、アルファブレンディングまたはピクチャ・イン・ピクチャ機能を提供することによって向上させる。代表的な実施形態において、グラフィクスオーバーレイモジュール314は、サービスプロバイダが、本発明に従ったシステムを用いてゲーム・オン・デマンドサービスを提供する際に、ゲームプレイングモード中にグラフィクスを加速させるために用いることもできる。
【0026】
ユーザインターフェース318は、ユーザがSTB300を制御することを可能とするものであり、リモートコントロール装置、キーボード、スマートカードなど、任意の適切な装置であってよい。通信回線320は、さらなる通信接続を提供する。これは、別のコンピュータに接続されてもよいし、双方向通信を実施するために用いられてもよい。データバス322は、本発明に必要とされるリアルタイムでのデータ通信を実行するのに適した市販の「高速」データバスであることが好ましい。適切な例としては、USB、ファイヤワイヤなどが挙げられる。
【0027】
代表的な実施形態では、データファイルは、すべてのケーブルテレビ加入者に対して放送されるのだが、データ・オン・デマンドサービスをデコードして利用することができるのは、互換性のあるSTB300を持っているDOD加入者のみである。代表的な実施形態では、オン・デマンドでデータファイルを取得するための許可は、ユーザインターフェース318のスマートカードシステムを介して取得することができる。スマートカードは、サービスプロバイダが設置した各地の小売店や自動販売機において再支払い可能であってよい。別の代表的な実施形態では、加入者は、定額の料金体系で、利用可能なデータファイルすべてに対して無制限にアクセスできる。
【0028】
好ましい実施形態では、データ・オン・デマンドの対話式の特徴により、クライアントは、利用可能なデータファイルをいつでも選択できる。クライアントが選択ボタンを押してから、選択されたデータファイルが再生を開始するまでの時間は、応答時間と呼ばれる。DODサービスを提供するために割り当てられるリソース(例えば、帯域幅、サーバの能力)が大きいほど、応答時間は短くなる。代表的な実施形態では、応答時間は、リソースの割り当ておよび所望のサービス品質に対する評価に基づいて決定することができる。第1のデータブロックを並列ストリームに置く実施形態と組み合わせると、応答時間は、第1のデータブロックを受信および処理するために掛かる時間だけの要素となる。
【0029】
一実施形態では、各データファイルのデータブロックの数(NUM_OF_BLKS)は、以下のように計算することができる。
【0030】
【数1】

Figure 2004514336
【0031】
式(1)〜(4)では、Estimated_BLK_Sizeは、(バイト数で表される)推定ブロックサイズであり、DataFile_Sizeは、(バイト数で表される)データファイルサイズであり、TSは、(秒数で表される)タイムスロットの継続時間であり、DataFile_Lengthは、(秒数で表される)データファイルの継続時間であり、BLK SIZEは、データブロックごとに必要とされるクラスタの数であり、CLUSTER_SIZEは、各チャンネルサーバ104のためのローカルメモリ208内のクラスタのサイズであり(例えば、64キロバイトなど)、BLK_SIZE_BYTESは、バイト数で表されるブロックサイズである。この実施形態では、ブロックの数(NUM_OF_BLKS)は、(バイト数で表される)データファイルサイズに、バイト数で表されるデータブロックのサイズを加え、そこから1バイトを引き、さらに、バイト数で表されるデータブロックサイズで割ったものに等しい。式(1)〜(4)は、1つの具体的な実施形態を示している。当業者にとって、データファイルのデータブロック数を計算するために、他の方法を用いてもよいことは明らかである。例えば、データファイルをいくつかのデータブロックに分割するステップは、主に、チャンネルサーバ104のローカルメモリ208の推定ブロックサイズおよびクラスタサイズの関数である。したがって、本発明は、上述の具体的な実施形態に限定されない。
【0032】
図4は、本発明の一実施形態に従うデータファイルを送信するためのスケジューリング行列を生成する代表的なプロセスを示している。代表的な実施形態では、本発明は、サーバ側においてデータ配信を圧縮およびスケジューリングするために、時分割多重化(TDM)および周波数分割多重化(FDM)技術を用いる。代表的な実施形態では、スケジューリング行列は、データファイルごとに生成される。一実施形態において、各データファイルがいくつかのデータブロックに分割され、スケジューリング行列がデータブロックの数に基づいて生成される。一般に、スケジューリング行列は、データファイルのデータブロックをサーバからクライアントへと送信するための送信順序を提供することで、任意の時間にデータファイルにアクセスしようとする任意のクライアントが、順番にデータブロックにアクセスできるようにする。
【0033】
ステップ402では、データファイルのデータブロックの数(x)が受信される。第1の変数jが、0に設定される(ステップ404)。参照配列が、消去される(ステップ406)。参照配列は、内部管理のためにデータブロックのトラックを維持する。次に、jは、xと比較される(ステップ408)。jがx未満である場合には、第2の変数iが0に設定される(ステップ412)。次に、iは、xと比較される(ステップ414)。iがx未満である場合には、スケジューリング行列の列[(i+j) modulo (x)]に格納されたデータブロックが、参照配列に書き込まれる(ステップ418)。参照配列がそのようなデータブロックをすでに有している場合には、重複して書き込まない。初めは、スケジューリング行列はまだ何のエントリも有していないので、このステップは省略することができる。次に、参照配列は、データブロックiを含むか否か調べられる(ステップ420)。初めは、参照配列内のエントリはすべてステップ406で消去されているので、参照行列内には何も存在しない。参照配列がデータブロックiを含まない場合には、スケジューリング行列の行列位置[(i+j) modulo (x),j]および参照配列に、データブロックiが追加される(ステップ422)。データブロックiがスケジューリング行列および参照配列に追加された後、i=i+1になるようにiが1だけ増分され(ステップ424)、プロセスは、i=xになるまでステップ414を繰り返す。参照配列がデータブロックiを含む場合には、i=i+1になるようにiが1だけ増分され(ステップ424)、プロセスは、i=xになるまでステップ414を繰り返す。i=xである場合には、j=j+1になるようにjが1だけ増分され(ステップ416)、プロセスは、j=xになるまでステップ406を繰り返す。プロセス全体は、j=xになると終了する(ステップ410)。
【0034】
代表的な実施形態において、データファイルが6つのデータブロックに分割される(x=6)場合には、スケジューリング行列および参照配列は、以下のようになる。
【0035】
【表1】
Figure 2004514336
【0036】
【表2】
Figure 2004514336
【0037】
本願に添付された別表Aは、上述のスケジューリング行列および参照配列を生成するための図4に示された代表的なプロセスの段階的なプロセスを説明している。この代表的な実施形態では、上述のスケジューリング行列に基づいて、データファイルの6つのデータブロックが、以下の順番で送信される。
【0038】
【数2】
Figure 2004514336
【0039】
別の代表的な実施形態では、先読みスケジューリング行列を計算して、予測されるアクセス時間に先立ってデータファイルの所定数のデータブロックを送信するために、先読みプロセスを使用することができる。例えば、タイムスロットの番号が4以上の任意のタイムスロットに対して、所定の先読み時間が1タイムスロットの継続時間である場合には、データファイルのデータブロック4(blk4)は、加入クライアントのSTB300によって、TS3またはそれよりも前に受信することが好ましいが、blk4は、TS4まで再生されない。先読みスケジューリング行列を生成するためのプロセスのステップは、この実施形態での先読みスケジューリング行列が、先読み時間に基づいて早めの送信シーケンスをスケジューリングするという点を除き、図4に関連して上述したプロセスのステップと実質的に同じである。データファイルが6つのデータブロックに分割されると仮定すると、先読みスケジューリング行列に基づいた代表的な送信シーケンスは、2タイムスロットの継続時間の先読み時間を有し、以下のように表すことができる。
【0040】
【数3】
Figure 2004514336
【0041】
1セットのデータファイルを送信するための三次元の配信行列は、その1セットのデータファイルの各データファイル用のスケジューリング行列に基づいて生成される。三次元の配信行列では、1セットのデータファイルの中の各データファイルのためのIDを含む第3の次元が生成される。三次元の配信行列は、各チャンネルの利用可能な帯域幅を効率的に用いて、複数のデータストリームを送信するために計算される。代表的な実施形態では、三次元のデリバリ行列を生成して、1セットのデータファイルの効率的な配信をスケジューリングするために、当該分野において周知である畳み込み方法が用いられる。例えば、畳み込み方法は、以下の方針を含んでよい。(1)任意のタイムスロット(TS)の継続時間中に送信されるデータブロックの総数は、可能な限り少数に保たれることが望ましい。(2)複数の部分的解決法が方針(1)に対して利用可能である場合は、任意の参照タイムスロットの継続時間中に送信されるデータブロックと、(参照タイムスロットの)前のタイムスロットの継続時間中に送信されるデータブロックと、(参照タイムスロットの)次のタイムスロットの継続時間中に送信されるデータブロックと、を加算することによって得られるデータブロックの和が最小である解決法が好ましい。例えば、2つの短いデータファイルすなわちMおよびNを送信する代表的なシステムが想定すると、各データファイルが6つのデータブロックにそれぞれ分割される場合には、スケジューリング行列に基づいた送信シーケンスは、以下のようになる。
【0042】
【数4】
Figure 2004514336
【0043】
上述したような代表的な畳み込み方法を適用すると、以下のような配信行列の組み合わせが可能である。
【0044】
【表3】
Figure 2004514336
【0045】
【表4】
Figure 2004514336
【0046】
【表5】
Figure 2004514336
【0047】
【表6】
Figure 2004514336
【0048】
【表7】
Figure 2004514336
【0049】
【表8】
Figure 2004514336
【0050】
方針(1)を適用すると、オプション2、4、6は、任意のタイムスロット中に送信されるデータブロックの最大数が最も小さい(すなわち、6データブロック)。方針(2)を適用すると、この代表的な実施形態での最適な配信行列は、オプション4である。何故なら、オプション4では、任意の参照タイムスロットのデータブロックと、隣接するタイムスロットのデータブロックとの和が最小(すなわち、16データブロック)であるからである。したがって、この実施形態では、データファイルNの送信シーケンスは、3タイムスロットだけシフトされることが最も好ましい。代表的な実施形態では、三次元の配信行列は、チャンネルサーバ104ごとに生成される。
【0051】
各データファイルのデータブロックが配信行列に従って送信されると、多数の加入クライアントがいつでもデータファイルにアクセスすることができるので、各加入クライアントは、データファイルの適切なデータブロックを適時に利用することが可能である。上述の例において、タイムスロットの継続時間が5秒間であると仮定すると、DODシステム100は、以下のように、最適な配信行列に従って(すなわち、データファイルNの配信シーケンスを3タイムスロットだけシフトさせる)、データファイルMおよびNのデータブロックを送信する。
【0052】
【数5】
Figure 2004514336
【0053】
クライアントAが、時刻00:00:00において映画Mを選択すると、クライアントAのSTB300は、データブロックの受信、格納、再生、および拒否を以下のように行う。
【0054】
【数6】
Figure 2004514336
【0055】
クライアントBが、時刻00:00:10において映画Mを選択すると、クライアントBのSTB300は、データブロックの受信、格納、再生、および拒否を以下のように行う。
【0056】
【数7】
Figure 2004514336
【0057】
クライアントCが、時刻00:00:15において映画Mを選択すると、クライアントCのSTB300は、データブロックの受信、格納、再生、および拒否を以下のように行う。
【0058】
【数8】
Figure 2004514336
【0059】
クライアントDが、時刻00:00:30において映画Mを選択すると、クライアントDのSTB300は、データブロックの受信、格納、再生、および拒否を以下のように行う。
【0060】
【数9】
Figure 2004514336
【0061】
上述の例で示したように、任意の組み合わせのクライアントが、サービスプロバイダによって提供される任意のデータファイルの選択および再生開始を、任意の時間に独立して行うことができる。システムは、タイムスロットによって決定されるデータブロックの連続的なストリームを常に受信しているが、ある任意の時間に、受信STBは、ある特定のデータブロックのみを必要として、その他の受信データブロックをすでに受信して格納していてもよいため、「受信」という上述の用語は少し紛らわしい。この要求は、上では「受信」と呼ばれているが、「拒否せず」の方が正確である。したがって、「M4を受信」は、「M4以外のすべてを拒否」とすることができ、「受信せず」は、「すべてを拒否」とすることができる。
【0062】
上述の例から明らかになることは、利用可能な帯域幅が、ある特定のタイムスロット中には完全には利用されていないことである。特に、少なくとも一部のタイムスロット中には、伝送が行われていない「アイドルタイム」が存在する。このアイドルタイムは、利用可能な帯域幅に関する本質的に無駄な利用である。それぞれのタイムスロット中に2つのデータブロックが伝送される上述のオプション4を例に取る。換言すると、6つのデータブロックを伝送するのに適した帯域幅を有するタイムスロットで、4つのデータブロック伝送期間がアイドル状態のままになる。これは、オプション4では劇的ではないが、データファイルが数千データブロックの大きさになると、より極端なものとなる。データを組み合わせるための最適な組み合わせプロトコルを用いても、なお、かなりの部分が、空のブロックスペースとなるだろう。
【0063】
この空のブロックスペースは、利用されていない帯域幅と同一視されるため、無駄な帯域幅である。本発明の目的は、できる限り多くのアイドルタイムを減少させることであり、したがって、本発明の一実施形態は、スケジューリング行列(本明細書では、アイドルタイム減少スケジューリング行列と呼ぶ)が決定された後に、別のステップを実行することである。
【0064】
アイドルタイム減少スケジューリング行列の代表的なモデルは、上述の6つのブロックスケジューリング行列を参照して説明できるが、ここでは、便宜上繰り返して説明する。帯域幅をデータブロックの伝送に利用できるアイドルタイムは、明確にするために<−−>で示されている。
【0065】
【数10】
Figure 2004514336
【0066】
これは、図5に図示されている。スケジューリング行列は、明らかに、ほとんどのタイムスロット内にアイドルタイムの形態で未利用の帯域幅を有している。本発明は、タイムスロットごとに一定の帯域幅を利用することによって、このアイドルタイムを低減することを教示している。一定の帯域幅の利用によってアイドル伝送タイムの低減を実現する鍵は、データブロックの配信シーケンスは遵守される必要があるものの、データブロックがアクセスされる必要のある時間またはそれよりも前に受信されなければならないことを除けば、データブロックが正確なタイムスロットで配信される必要はないことを理解することである。したがって、一定の帯域幅の利用は、スケジューリング行列によって示される配信シーケンスに従って、スケジューリング行列によって割り当てられるタイムスロットに関係なく、各タイムスロットで一定数のデータブロックを伝送することにより実現される。
【0067】
先に詳述した6つのブロックスケジューリング行列では、TS0、TS1、TS2およびTS4にかなりの量のアイドルタイムが存在する。例えば、タイムスロット当たり4つのデータブロックの伝送に相当する所望の一定の帯域幅を想定する。したがって、アイドルタイムは、4つのデータスロットが各タイムスロット中に伝送されるようスケジューリングされるまで、前方のデータブロックを移動させることにより減少される。そのための手順は、シーケンス内の次のデータブロックを取って、それを空のスペースに移動させることである。故に、この例では、TS1内の第1のブロックblk0がTS0に移動される。さらに、TS1内の次のブロックblk1が繰り上げられる。次いで、TS0は、まだ、空のデータブロックスペースを有しているので、さらに、TS1からblk3が繰り上げられる。これで、TS0はスペースがすべて満たされ、以下のようになる。
【0068】
【数11】
Figure 2004514336
【0069】
この時点で、TS1とTS2のほとんどは空なので、TS3からデータブロックが繰り上げられる。この手順が終わると、行列は以下のようになる。
【0070】
【数12】
Figure 2004514336
【0071】
これは、図6にも図示されている。この例のTS4およびTS5のように、空のタイムスロットと不完全なタイムスロットは、元のシーケンスを繰り返して、さらにアイドルタイムを埋めることにより、埋められる。したがって、第1の6つのタイムスロットは以下のようになる。
【0072】
【数13】
Figure 2004514336
【0073】
このシーケンス内の次の2つのタイムスロットTS6およびTS7は、TS2およびTS3と同じデータブロックを有する。したがって、新たな短いスケジューリング行列で、このプロセスによって実際に生成されるものは、4タイムスロットの長さにすぎない。図7は、アイドルタイムを埋めることによって生成される新しい反復行列を示している。
【0074】
上述の例から、元々の順序が維持される限り、ユーザは、元のスケジューリング行列のオンタイム配信と違って、前もってデータファイルを受信することができることは明らかである。ユーザは、システムの中間のタイムスロットに入って、開始ブロックblk0が受信されるとすぐにデータの利用を開始してもよい。
【0075】
このように、データブロックが連続的なストリームになると、タイムスロットは、ほとんど計算上のフィクションとなるため、ストリームの任意の時点で、ユーザは、システムに入りデータの受信を開始してよい。図8に示すように、この追加のステップは、手順410の終了の位置したところで実行される比較的簡単なステップ510である。
【0076】
簡単のため、図4〜10の説明では、選択された帯域幅が、整数であるデータブロック数に等しい定数に設定された場合を扱った。しかしながら、その一定の帯域幅は、整数であるデータブロック数に等しい必要はない。むしろ、単に、配信シーケンスが、図8で作成されたシーケンスに従えばよい。図8で作成された配信シーケンスによって生成されるデータストリームは、次に、デジタルデータの放送を制御する下位のハードウェアデバイス(例えば、ネットワークカードまたはチャンネルサーバ)に提供される。整数のデータブロックを放送するというより、下位のハードウェアデバイスは、ファイルに割り当てられた帯域幅の範囲でできる限り多くのデータを伝送する。
【0077】
当業者にとって明らかなように、配信シーケンスの抽象化レベルでは、データの実際の伝送を気にする必要はない。代わりに、配信行列がシーケンスを提供し、下位のハードウェアデバイスが、割り当てられた帯域幅を用いてデータの放送を制御する。したがって、割り当てられた帯域幅のうち、一部分のデータブロックサイズしか含まないものを完全に利用できる。割り当てられた帯域幅が利用されると、下位のデバイスは、帯域幅が再び利用可能となるまで、この特定のデータファイルの放送を中断する。
【0078】
全体の動作:
サービスプロバイダは、放送に先立って、いくつかのデータファイル(例えばビデオファイル)をチャンネルサーバ104に送信するようスケジューリングすることができる。中央制御サーバ102は、三次元の配信行列(ID、タイムスロット、およびデータブロック送信順序)を計算してチャンネルサーバ104に送信する。放送中に、チャンネルサーバ104は、適切なデータブロックを適切な順序で送信するために三次元の配信行列を参照する。各データファイルは、複数のデータブロックに分割されるので、多数の加入クライアントが、独立して、任意の時間に連続的かつ順番にデータファイルの視聴を始めることができる。データファイルのデータブロックのサイズは、選択されたタイムスロットの継続時間と、データファイルのデータストリームのビットレートとに依存する。例えば、ビットレートが一定のMPEGデータストリームでは、各データブロックは、以下の式で表される固定サイズを有する。ブロックサイズ(メガバイト)=ビットレート(メガバイト毎秒)×TS(秒)/8…(1)。
【0079】
代表的な実施形態では、データブロックのサイズは、チャンネルサーバ104のローカルメモリ208内のメモリクラスタサイズの倍数になるように切り上げされる。例えば、上述の式(1)に従って計算されたデータブロックの長さが720キロバイトであり、ローカルメモリ208のクラスタサイズが64キロバイトである場合は、結果として、データブロックの長さは768キロバイトであることが好ましい。この実施形態において、データブロックは、クラスタサイズと同じサイズをそれぞれ有する複数のサブブロックにさらに分割されることが好ましい。この例では、データブロックは、64キロバイトである12のサブブロックを有する。
【0080】
サブブロックは、さらにデータパケットに分割することができる。各データパケットは、パケットヘッダとパケットデータとを含む。パケットデータの長さは、各チャンネルサーバのCPUのデータ送信先である物理層の最大伝送単位(MTU)に依存する。好ましい実施形態では、パケットヘッダおよびパケットデータの合計サイズは、MTU未満であることが好ましい。しかしながら、最大限の効率を得るためには、パケットデータの長さはできるだけ長いことが好ましい。
【0081】
代表的な実施形態では、パケットヘッダのデータは、加入クライアントのSTB300が、任意の受信データをデコードして、データパケットが選択データファイルに属するか否かを決定することを許可する情報(例えば、プロトコル署名、バージョン、ID、またはパケットタイプ情報など)を含む。パケットヘッダは、さらに、ブロック/サブブロック/パケット番号、パケット長、サブブロック内での巡回冗長検査(CRC)およびオフセット、および/またはエンコード情報など、他の情報を含んでもよい。
【0082】
チャンネルサーバ104によって受信されると、データパケットは、QAMモジュレータ206に送信され、そこで、QAM変調されたIF出力信号を生成するために別のヘッダを追加される。QAMモジュレータ206に対する最大ビットレート出力は、利用可能な帯域幅に依存する。例えば、6MHzの帯域幅を有するQAMモジュレータ206では、最大ビットレートは5.05(ビット/シンボル)×6(MHz)=30.3メガビット/秒である。
【0083】
QAM変調されたIF信号は、アップコンバータ106に送信され、ある特定のチャンネルに適したRF信号(例えばCATVチャンネル80では、559.250MHzで、6MHzの帯域幅)に変換される。例えば、ケーブルネットワークが高い帯域幅(またはビットレート)を有する場合には、各チャンネルは、それぞれが仮想サブチャンネルを占有する2以上のデータストリームを提供するために用いることができる。例えば、QAM変調を用いて、3つのMPEG1データストリームを6MHzチャンネルに適合させることができる。アップコンバータ106の出力は、結合された信号を伝送媒体110に送信するコンバイナ/アンプリファイア108に送られる。
【0084】
代表的な実施形態では、「N」個のデータストリームを伝送するためのシステム帯域幅(BW)の合計は、BW=N×bwであり、bwは、データストリーム当たりに必要な帯域幅である。例えば、各MPEG−1データストリームは、9メガビット/秒のシステム帯域幅を占めるので、3つのMPEG−1データストリームは、30.3メガビット/秒のシステム帯域幅を有するDOCSISケーブルチャンネルによって、同時に伝送することができる。
【0085】
一般に、帯域幅は、DODサービスに実際にアクセスしている加入クライアントの数に関係なく消費される。したがって、DODサービスを利用している加入クライアントが存在しない場合でも、システムのオン・デマンド能力を確保するために、やはり帯域幅が消費される。
【0086】
STB300は、作動されると、STB300のローカルメモリ308に格納された番組ガイドの受信および更新を連続的に行う。代表的な実施形態では、STB300は、最新の番組ガイドを含むデータファイル情報をTV画面上に表示する。ビデオファイル情報などのデータファイル情報は、映画のID、映画のタイトル、(複数言語での)説明、カテゴリ(例えば、アクションや子供向けなど)、格付け(例えばR指定やPG13指定など)、ケーブル会社の方針(例えば、値段や無料試聴の長さなど)、加入期間、映画のポスタ、および映画の予告を含んでよい。代表的な実施形態では、データファイル情報は、ファームウェアの更新、コマーシャル、および/または緊急情報のために確保されたチャンネルなど、確保された物理チャンネルを介して送信される。別の代表的な実施形態では、情報は、他のデータストリームによって共有された物理チャンネルで送信される。
【0087】
加入クライアントは、テレビ画面上に表示されたカテゴリごとの配列の利用可能データファイルのリストを見ることができる。クライアントが利用可能データファイルの1つを選択すると、STB300は、そのデータファイルのデータパケットの受信を開始するために、ハードウェアを制御して、対応する物理チャンネルおよび/または仮想サブチャンネルに同調する。STB300は、すべてのデータパケットヘッダを検査し、データパケット内のデータをデコードし、受信されたデータパケットを保存すべきか否かを決定する。STB300が、データパケットを保存すべきでないと決定した場合は、そのデータパケットは廃棄される。そうでない場合は、データパケットは、後の読み出しに備えてローカルメモリ308に保存されるか、あるいは、デコーダ312に送信されるまで、バッファメモリ310に一時的に格納される。
【0088】
ローカルメモリ308に対する頻繁な読み出し/書き込みを回避することによって性能効率を向上させるため、代表的な実施形態において、STB300は、メモリバッファ310内の予測されるデータブロックを、可能であればいつでもロックする「スライディングウィンドウ」予測技術を用いる。予測ウィンドウにおいてヒットが生じた場合、データブロックは、メモリバッファ310から直接、デコーダ312へと伝送される。予測ミスが生じた場合、データブロックは、メモリバッファ310からデコーダ312へと伝送される前に、ローカルメモリ308からメモリバッファ310へと読み込まれる。
【0089】
代表的な実施形態では、STB300は、一時停止、スローモーション再生、巻き戻し、ズーム、およびシングルステップのためのボタンを備える赤外線(IR)リモコン装置ボタン、IRキーボード、またはフロントパネル押しボタンを介して、加入クライアントの命令に応じる。代表的な実施形態では、加入クライアントが所定の期間に何のアクションも入力しなかった場合には、スケジューリングされたコマーシャルが自動的に再生される。スケジューリングされたコマーシャルは、加入クライアントがアクションを提供したとき(例えば、リモコン装置のボタンを押したとき)に自動的に停止される。別の代表的な実施形態では、STB300は、ビデオの再生中にコマーシャルを自動的に挿入することができる。サービスプロバイダ(例えば、ケーブル会社)は、再生中のビデオにどれくらいの頻度でコマーシャルを割り込ませることが好ましいかを指示する価格決定方針を設定することができる。
【0090】
緊急情報ビットがデータパケットヘッダ内で発見された場合は、STB300は、あらゆるデータ受信動作を一時停止し、データファイル情報の受信用に確保されているチャンネルに同調するようハードウェアを制御して、出力画面上に表示すべきあらゆる緊急情報を取得およびデコードする。代表的な実施形態において、STB300が待機状態の際には、STB300は、データファイル情報の受信用に確保されたチャンネルに同調され、あらゆる緊急情報を遅滞なく受信および表示する用意が常に整っている。
【0091】
上述の例は、本発明の特定の代表的な実施形態を例示したものであり、当業者は、これらから、他の実施形態、変形例、変更例を容易に導くことができるだろう。したがって、本発明は、上述した特定の実施形態に限定されず、添付した特許請求の範囲によって規定される。
【図面の簡単な説明】
【図1A】本発明の一実施形態に従う代表的なDODシステムを示す図である。
【図1B】本発明の別の実施形態に従う代表的なDODシステムを示す図である。
【図2】本発明の一実施形態に従う代表的なチャンネルサーバを示す図である。
【図3】本発明の一実施形態に従う代表的なセット・トップ・ボックスを示す図である。
【図4】本発明の一実施形態に従うスケジューリング行列を生成する代表的なプロセスを示す図である。
【図5】6つのデータブロックファイルのスケジューリング行列の例を示す図である。
【図6】すべてのアイドルタイムスロットが満杯になるまで、図6のスケジューリング行列のデータブロックが繰り上げられる様子を示す図である。
【図7】新しいアイドルタイム減少スケジューリング行列を示す図である。
【図8】アイドルタイム減少の実施形態の追加を示す図である。
【図9】アイドルタイム減少の実施形態が実現される方法を示すフローチャート。
【図10】元のスケジューリング行列から作成される反復データの複数ストリームを示す図である。
【符号の説明】
100…DODシステム
102…中央制御サーバ
103…中央ストレージ
104a〜104n…チャンネルサーバ
106a〜106n…アップコンバータ
108…コンバイナ/アンプリファイア
110…伝送媒体
112…スイッチ行列
114…チャンネル監視モジュール
116a〜116b…バックアップ・チャンネルサーバ
118a〜118b…バックアップ・アップコンバータ
120…ケーブルテレビシステム
202…サーバコントローラ
204…CPU
206…QAMモジュレータ
208…ローカルメモリ
210…ネットワークインターフェース
300…汎用セット・トップ・ボックス
302…QAMデモジュレータ
304…CPU
308…ローカルメモリ
310…バッファメモリ
312…デコーダ
314…グラフィクスオーバーレイモジュール
318…ユーザインターフェース
320…通信回線
322…高速データバス
324…出力装置[0001]
TECHNICAL FIELD OF THE INVENTION
Video-on-demand (VOD) systems are a type of data-on-demand (DOD) systems. In a VOD system, video data files are provided on demand to one or more clients by a server or a network of servers. These systems are well known to those skilled in the art.
[0002]
[Prior art]
In a conventional VOD architecture, a server or a network of servers communicates with clients in a standard hierarchical client-server model. For example, a client sends a request for a data file (eg, a video data file) to a server. In response to the client's request, the server sends the requested file to the client. In a standard client-server model, data file requests from clients can be fulfilled by one or more servers. The client may have the ability to store all received data files locally in non-volatile memory for later use. The standard client-server model requires a two-way communication infrastructure. Existing cables can only provide one-way communication, so a two-way communication requires a new infrastructure to be built at this time. Examples of two-way communication infrastructures include fiber optic and coaxial hybrid cables (HFC) and all fiber infrastructures. Replacing existing cables would be very costly and the price of the resulting service would be out of reach for most users.
[0003]
Also, the standard client-server model is subject to many limitations when a service provider (eg, a cable company) attempts to provide VOD services to a large number of clients. One of the limitations of the standard client-server model is that service providers need to implement mechanisms to continuously accept and fulfill all requests from each client in the network to receive services. The number of clients that can do so depends on the capacity of such a mechanism. Some mechanisms use massively parallel computers with large, high-speed disk arrays as local servers. However, even the fastest of the existing local servers can only deliver a video data stream to about 1,000 to 2,000 clients at a time. Therefore, in order to provide services to more clients, the number of local servers must be increased. As the number of local servers increases, more host servers are required to maintain control of the local servers.
[0004]
Another limitation imposed by the standard client-server model is that each client requires dedicated bandwidth. Thus, the total bandwidth required is directly proportional to the number of subscribing clients. To cope with the bandwidth limitation, a cache memory in the local server has been used so far. However, since the cache memory itself has a limit, the use of the cache memory does not solve the problem.
[0005]
To enable clients to use video-on-demand at lower prices, existing service providers are increasing the ratio of clients per local server beyond the capabilities of the local server. Typically, a local server that can provide service to 1,000 clients is actually contracting service to 10,000 clients. This technique can work if most of the subscribing clients do not order video at the same time. However, the configuration of this technique is flawed because the local server can be overloaded because most clients desire to watch video at the same time (ie, at night or on weekends).
[0006]
Therefore, it is desirable to provide a system that can provide on-demand services to a large number of clients through virtually all transmission media without replacing existing infrastructure.
[0007]
Summary of the Invention
In an exemplary embodiment, on the server side, a method of transmitting data to a client to provide a data-on-demand service includes the steps of receiving a data file, identifying a time interval; Decomposing the data file into a plurality of data blocks based on which each data block can be displayed during the time interval, and determining the number of time slots required to transmit the data file Assigning a step and at least a first data block of the plurality of data blocks and optionally one or more additional data blocks to each time slot so that the client accesses the data file during any time slot Even if multiple data blocks can be used sequentially. Comprising a-up, and transmitting the plurality of data blocks based on the allocation step. In one embodiment, the decomposing comprises: determining an estimated data block size; determining a cluster size of a memory in the channel server; and decomposing the data file based on the estimated data block size and the cluster size. ,including. In another embodiment, the determining step includes evaluating resource allocation and bandwidth availability.
[0008]
In an exemplary embodiment, on the client side, a method of processing data received from a server to provide a data-on-demand service includes: (a) receiving a selection of a data file during a first time slot; (B) receiving at least one data block of the data file during a second time slot; and (c) removing any data block not yet received during the next time slot. Receiving and sequentially displaying the data blocks of the data file; and repeating step (c) until all data blocks of the data file have been received and displayed. In one embodiment, the method for processing data received from a server is performed by a client-side set top box.
[0009]
In an exemplary embodiment, a data file is divided into a number of data blocks, and a scheduling matrix is generated based on the number of data blocks. On the server side, the scheduling matrix provides the transmission order for transmitting the data blocks so that the client can access the data blocks in order at any time. In an exemplary embodiment, a method of generating a scheduling matrix for a data file comprises: (a) receiving a number [x] of data blocks for one data file; and (b) a first variable. Setting [j] to 0; (c) setting a second variable [i] to 0; (d) deleting all entries in the reference array; and (e) If the reference array does not include at least one data block stored in the matrix position of the column [(i + j) modulo x], the data block is written to the reference array; and (f) the reference array is a data block. Writing a data block [i] at the matrix position [(i + j) modulo x, j] of the reference array and the matrix when [i] is not included; Incrementing the variable [i] by 1 and repeating step (e) until the second variable [i] is equal to the number of data blocks [x]; and (h) changing the first variable [j] to 1 And repeating step (c) until the first variable [j] is equal to the number of data blocks [x]. In one embodiment, a scheduling matrix is generated for each data file in the set of data files, so for generating a distribution matrix based on these scheduling matrices for transmission of the set of data files, A convolution method is used.
[0010]
The data-on-demand system includes a first set of channel servers, a central control server for controlling the first set of channel servers, and a first set of channel servers connected to the first set of channel servers. An upconverter, a combiner / amplifier connected to the first set of upconverters, and a combiner / amplifier adapted to transmit data over a transmission medium. In an exemplary embodiment, the data-on-demand system further includes a channel monitoring module for monitoring the system, a switch matrix, a second set of channel servers, and a second set of upconverters. Prepare. The channel monitoring module is configured to report to the central control server when a system failure has occurred. The central control server, in response to the report from the channel monitoring module, replaces the failed channel server in the first set of channel servers with a channel server in the second set of channel servers, and Instruct the switch matrix to replace the failed upconverter in the set of upconverters with a second set of upconverters.
[0011]
A method for providing a data-on-demand service includes calculating a distribution matrix of a data file and transmitting the data file according to the distribution matrix so that a large number of clients can view the data file on demand. And the step of In one embodiment, the data files include video files.
[0012]
In yet another embodiment of the invention, the idle time that occurs in the distribution matrix can be reduced by advancing the next data block in the distribution matrix until all time slots are full and the entire bandwidth is used. Thus, the distribution matrix is rather considered as a stream of data that maintains the order of the original matrix. At any time, the user can join the stream and use the data-on-demand service as soon as the start block is received.
[0013]
Since the matrix can be considered as a stream, the user only has to enter the stream at any time and wait for the time to receive the start block and use the data-on-demand service. That time will be shorter than the predetermined time in the original distribution queue.
[0014]
Another embodiment of the present invention discloses a general-purpose STB that can receive and handle multiple digital services such as VOD and digital broadcasting. This embodiment discloses a general-purpose STB having a very flexible architecture capable of advanced processing of received data. The architecture includes a data bus, a first communication device suitable for connection to a digital broadcast communication medium, a memory typically including permanent and temporary memory bi-directionally connected to the data bus; And a central processing unit (CPU) bidirectionally connected to the data bus. The CPU of this embodiment of the present invention executes an STB control process for controlling a memory, a digital decoder, and a demodulator. The STB control process is operable to process digital data, such as data received at a first communication device. Preferably, the STB control process can receive not only parallel streaming of data blocks, but also data derived from the idle time reduction scheduling matrix.
[0015]
BEST MODE FOR CARRYING OUT THE INVENTION
FIG. 1A illustrates an exemplary DOD system 100 according to one embodiment of the present invention. In this embodiment, DOD system 100 provides data files, such as video files, on demand. However, the DOD system 100 is not limited to providing video files on demand, and may also provide other data files, such as game files, on demand. The DOD system 100 includes a central control server 102, a central storage 103, a plurality of channel servers 104a to 104n, a plurality of upconverters 106a to 106n, and a combiner / amplifier 108. The central control server 102 controls the channel server 104. Central storage 103 stores data files in a digital format. In an exemplary embodiment, the data files stored in the central storage 103 are accessed by any authorized computer, such as a central control server 102 connected to a network, via a standard network interface (eg, an Ethernet connection). It is possible. Each channel server 104 is assigned to one channel and connected to one upconverter 106. The channel server 104 provides the data file read from the central storage 103 according to an instruction from the central control server 102. The output of each channel server 104 is an intermediate frequency (IF) signal having a frequency suitable for the corresponding upconverter 106 and modulated by quadrature amplitude modulation (QAM). The QAM modulated IF signal depends on the standard adopted. The standard currently adopted in the United States is the Data over Cable Systems Interface Specification (DOCSIS) standard, which requires an IF frequency of about 43.75 MHz. The up-converter 106 converts the IF signal received from the channel server 104 into a high-frequency signal (RF signal). RF signals include frequency and bandwidth and depend on the desired channel and standards adopted. For example, under current standards in the United States, for cable television channel 80, the RF signal has a frequency of about 559.25 MHz and a bandwidth of about 6 MHz. The output of upconverter 106 is sent to combiner / amplifier 108. Combiner / amplifier 108 amplifies, conditions, and combines the received RF signal, and then outputs it to transmission medium 110.
[0016]
In an exemplary embodiment, the central control server 102 includes a graphic user interface (not shown) to allow a service provider to schedule data delivery via a drag and drop operation. Further, the central control server 102 authenticates and controls the channel server 104 to start or stop according to the distribution queue. In an exemplary embodiment, the central control server 102 automatically selects a channel and calculates a distribution matrix for transmitting data files on the selected channel. Central control server 102 provides offline addition, deletion, and updating of data file information (eg, duration, category, rating, and / or gist). Further, the central control server 102 controls the central storage 103 by updating data files and databases stored in the central storage 103.
[0017]
In an exemplary embodiment, existing cable television system 120 may continue to provide signals to combiner / amplifier 108 to provide non-DOD services to clients. Thus, the DOD system 100 according to the present invention does not interfere with current cable television services.
[0018]
FIG. 1B illustrates another exemplary embodiment of a DOD system 100 in accordance with the present invention. In addition to the elements shown in FIG. 1A, the DOD system 100 includes a switch matrix 112, a channel monitoring module 114, a set of backup channel servers 116a-116b, and a set of backup upconverters 118a-118b. Including. In one embodiment, switch matrix 112 is physically provided between upconverter 106 and combiner / amplifier 108. The switch matrix 112 is controlled by the central control server 102. The channel monitoring module 114 includes a plurality of set top boxes configured to simulate potential clients to monitor the health of the DOD system 100. The monitoring result is transmitted to the central control server 102 by the channel monitoring module 114. In the event of a channel failure (i.e., a channel server failure, upconverter failure, or communication line failure), the central control server 102 removes the malfunctioning component through the switch matrix 112 and removes the normal backup component 116. And / or 118 to resume service.
[0019]
In an exemplary embodiment, the data file being broadcast from DOD system 100 is contained within a Motion Pictures Experts Group (MPEG) file. Each MPEG file is dynamically divided along the time axis into data blocks and sub-blocks that map to specific portions of the data file. These data blocks and sub-blocks are transmitted during a predetermined period according to a three-dimensional distribution matrix provided by the central control server 102. The feedback channel is not needed when the DOD system 100 provides the DOD service. However, if a feedback channel is available, the feedback channel can be used for other purposes, such as billing or providing Internet services.
[0020]
FIG. 2 illustrates an exemplary channel server 104 according to one embodiment of the present invention. The channel server 104 includes a server controller 202, a CPU 204, a QAM modulator 206, a local memory 208, and a network interface 210. Server controller 202 divides the data file into blocks (and further into sub-blocks and data packets), selects data blocks for transmission according to a distribution matrix provided by central control server 102, and encodes the selected data. Then, it controls the overall operation of the channel server 104 by instructing the CPU 204 to compress the encoded data and then send the compressed data to the QAM modulator 206. QAM modulator 206 receives data transmitted over a bus (ie, a PCI or CPU local bus) or an Ethernet connection. In an exemplary embodiment, QAM modulator 206 includes a downstream QAM modulator, an upstream quadrature amplitude modulation / quadrature phase shift keying (QAM / QPSK) burst demodulator with a forward error correction decoder, and / or an upstream A tuner may be provided. The output of QAM modulator 206 is an IF signal that can be applied directly to upconverter 106.
[0021]
The network interface 210 configures the channel server 104 to execute scheduling and control instructions from the central control server 102, report status to the central control server 102, and receive data files from the central storage 103. , Connect to other channel servers 104 and central control server 102. Any data files read from the central storage 103 can be stored in the local memory 208 of the channel server 104 before being processed according to instructions from the server controller 202. In an exemplary embodiment, the channel server 104 includes a cable channel bandwidth (e.g., 6, 6.5, or 8 MHz), QAM modulation (e.g., QAM64 or QAM256), and a compression standard / bit rate (e.g., DOD data stream). That is, one or more DOD data streams may be transmitted according to MPEG-1 or MPEG-2).
[0022]
FIG. 3 illustrates a general-purpose set top box (STB) 300 according to one embodiment of the present invention. The STB 300 includes a QAM demodulator 302, a CPU 304, a local memory 308, a buffer memory 310, a decoder 312 capable of decoding video and audio, a graphics overlay module 314, a user interface 318, a communication line 320, And a high-speed data bus 322 for connecting these devices. The CPU 302 selects data according to a request of the client, decodes the selected data, decompresses the decoded data, reassembles the decoded data, and stores the decoded data in the local memory 308 or the buffer memory. The entire operation of the general-purpose STB 300 is controlled so as to store the data in the decoder 310 and transmit the stored data to the decoder 312. In an exemplary embodiment, local memory 308 comprises non-volatile memory (eg, a hard drive) and buffer memory 310 comprises volatile memory.
[0023]
In one embodiment, QAM demodulator 302 comprises a transmit and receive module and at least one of the following elements: Privacy encryption / decryption module, forward error correction decoder / encoder, tuner control, downstream and upstream processors, CPU, and memory interface circuit. QAM demodulator 302 receives the modulated IF signal and samples and demodulates the signal to recover the data.
[0024]
In an exemplary embodiment, when access is granted, decoder 312 decodes at least one data block and converts the data block into an image that can be displayed on an output screen. The decoder 312 supports commands from subscribing clients, such as play, stop, pause, step forward, rewind, and fast forward. Decoder 312 provides the decoded data to output device 324 for use by the client. Output device 324 may be any suitable device, such as a television, computer, any suitable display monitor, VCR, or the like.
[0025]
The graphics overlay module 314 enhances the quality of the displayed graphics, for example, by providing alpha blending or picture-in-picture functionality. In an exemplary embodiment, graphics overlay module 314 is used by a service provider to accelerate graphics during a game playing mode when providing a game-on-demand service using a system according to the present invention. You can also.
[0026]
User interface 318 allows a user to control STB 300 and may be any suitable device, such as a remote control device, keyboard, smart card, and the like. Communication line 320 provides an additional communication connection. This may be connected to another computer or used to implement two-way communication. Data bus 322 is preferably a commercially available "high speed" data bus suitable for performing the real-time data communications required by the present invention. Suitable examples include USB, firewire, and the like.
[0027]
In the exemplary embodiment, the data file is broadcast to all cable television subscribers, but the ability to decode and use the data-on-demand service depends on a compatible STB 300. Only DOD subscribers who have it. In an exemplary embodiment, permission to obtain a data file on demand may be obtained via a smart card system of the user interface 318. The smart card may be re-payable at retail outlets and vending machines located locally by the service provider. In another exemplary embodiment, the subscriber has unlimited access to all available data files for a flat fee.
[0028]
In a preferred embodiment, the interactive feature of data-on-demand allows the client to select an available data file at any time. The time from when the client presses the select button until the selected data file starts playing is called the response time. The greater the resources (eg, bandwidth, server capabilities) allocated to provide the DOD service, the shorter the response time. In an exemplary embodiment, the response time can be determined based on the allocation of resources and an assessment of the desired quality of service. Combined with the embodiment of placing the first data block in a parallel stream, the response time is a factor only in the time it takes to receive and process the first data block.
[0029]
In one embodiment, the number of data blocks in each data file (NUM_OF_BLKS) can be calculated as follows.
[0030]
(Equation 1)
Figure 2004514336
[0031]
In equations (1)-(4), Estimated_BLK_Size is the estimated block size (expressed in bytes), DataFile_Size is the data file size (expressed in bytes), and TS is (seconds) Is the duration of the time slot (represented by), DataFile_Length is the duration of the data file (represented in seconds), BLK SIZE is the number of clusters required per data block, CLUSTER_SIZE is the size of the cluster in local memory 208 for each channel server 104 (eg, 64 kilobytes, etc.), and BLK_SIZE_BYTES is the block size in bytes. In this embodiment, the number of blocks (NUM_OF_BLKS) is calculated by adding the size of the data block expressed in bytes to the data file size (expressed in bytes), subtracting 1 byte from it, Equivalent to dividing by the data block size represented by. Equations (1)-(4) show one specific embodiment. It will be apparent to one skilled in the art that other methods may be used to calculate the number of data blocks in the data file. For example, the step of dividing a data file into several data blocks is primarily a function of the estimated block size and cluster size of the local memory 208 of the channel server 104. Therefore, the present invention is not limited to the specific embodiments described above.
[0032]
FIG. 4 illustrates an exemplary process for generating a scheduling matrix for transmitting data files according to one embodiment of the present invention. In an exemplary embodiment, the present invention uses time division multiplexing (TDM) and frequency division multiplexing (FDM) techniques to compress and schedule data distribution on the server side. In an exemplary embodiment, a scheduling matrix is generated for each data file. In one embodiment, each data file is divided into a number of data blocks, and a scheduling matrix is generated based on the number of data blocks. In general, a scheduling matrix provides a transmission order for transmitting data blocks of a data file from a server to a client so that any client attempting to access the data file at any time can sequentially convert the data blocks into data blocks. Make it accessible.
[0033]
At step 402, the number (x) of data blocks of a data file is received. A first variable j is set to 0 (step 404). The reference sequence is deleted (step 406). The reference array keeps track of the data blocks for internal management. Next, j is compared to x (step 408). If j is less than x, the second variable i is set to 0 (step 412). Next, i is compared to x (step 414). If i is less than x, the data block stored in column [(i + j) modulo (x)] of the scheduling matrix is written to the reference array (step 418). If the reference array already has such a data block, it will not be duplicated. Initially, this step can be omitted since the scheduling matrix does not yet have any entries. Next, it is checked whether the reference array includes the data block i (step 420). Initially, all entries in the reference array have been deleted in step 406, so there is nothing in the reference matrix. If the reference array does not include the data block i, the data block i is added to the matrix position [(i + j) modulo (x), j] of the scheduling matrix and the reference array (step 422). After data block i is added to the scheduling matrix and reference array, i is incremented by 1 so that i = i + 1 (step 424), and the process repeats step 414 until i = x. If the reference array includes data block i, i is incremented by one so that i = i + 1 (step 424), and the process repeats step 414 until i = x. If i = x, j is incremented by 1 so that j = j + 1 (step 416) and the process repeats step 406 until j = x. The entire process ends when j = x (step 410).
[0034]
In an exemplary embodiment, if the data file is divided into six data blocks (x = 6), the scheduling matrix and the reference array are as follows:
[0035]
[Table 1]
Figure 2004514336
[0036]
[Table 2]
Figure 2004514336
[0037]
Appendix A attached to this application describes a step-by-step process of the exemplary process shown in FIG. 4 for generating the above-described scheduling matrix and reference array. In this exemplary embodiment, based on the scheduling matrix described above, the six data blocks of the data file are transmitted in the following order.
[0038]
(Equation 2)
Figure 2004514336
[0039]
In another exemplary embodiment, a look-ahead process may be used to calculate a look-ahead scheduling matrix and transmit a predetermined number of data blocks of a data file prior to an expected access time. For example, if the predetermined look-ahead time is the duration of one time slot for an arbitrary time slot whose time slot number is 4 or more, the data file 4 (blk4) of the data file is stored in the STB 300 of the joining client. , It is preferable to receive before or before TS3, but blk4 is not played until TS4. The steps of the process for generating the look-ahead scheduling matrix are similar to those of the process described above in connection with FIG. 4, except that the look-ahead scheduling matrix in this embodiment schedules an earlier transmission sequence based on the look-ahead time. Substantially the same as the steps. Assuming that the data file is divided into six data blocks, a typical transmission sequence based on the look-ahead scheduling matrix has a look-ahead time of two time slots duration and can be expressed as:
[0040]
[Equation 3]
Figure 2004514336
[0041]
A three-dimensional distribution matrix for transmitting a set of data files is generated based on a scheduling matrix for each data file in the set of data files. In a three-dimensional distribution matrix, a third dimension is generated that includes an ID for each data file in a set of data files. A three-dimensional distribution matrix is calculated for transmitting multiple data streams, efficiently using the available bandwidth of each channel. In an exemplary embodiment, a convolution method known in the art is used to generate a three-dimensional delivery matrix and schedule efficient delivery of a set of data files. For example, the convolution method may include the following policy. (1) It is desirable to keep the total number of data blocks transmitted during the duration of a given time slot (TS) as small as possible. (2) if multiple partial solutions are available for policy (1), the data block transmitted during the duration of any reference time slot and the previous time (of the reference time slot) The sum of the data blocks obtained by adding the data block transmitted during the duration of the slot and the data block transmitted during the duration of the next time slot (of the reference time slot) is minimal. A solution is preferred. For example, assuming a typical system transmitting two short data files, M and N, and if each data file is divided into six data blocks, respectively, the transmission sequence based on the scheduling matrix would be: Become like
[0042]
(Equation 4)
Figure 2004514336
[0043]
When the typical convolution method described above is applied, the following combinations of distribution matrices are possible.
[0044]
[Table 3]
Figure 2004514336
[0045]
[Table 4]
Figure 2004514336
[0046]
[Table 5]
Figure 2004514336
[0047]
[Table 6]
Figure 2004514336
[0048]
[Table 7]
Figure 2004514336
[0049]
[Table 8]
Figure 2004514336
[0050]
Applying policy (1), options 2, 4, 6 have the smallest maximum number of data blocks transmitted during any time slot (ie, 6 data blocks). Applying policy (2), the optimal delivery matrix in this exemplary embodiment is option 4. This is because in option 4, the sum of the data block of an arbitrary reference time slot and the data block of an adjacent time slot is the minimum (ie, 16 data blocks). Therefore, in this embodiment, the transmission sequence of data file N is most preferably shifted by three time slots. In an exemplary embodiment, a three-dimensional distribution matrix is generated for each channel server 104.
[0051]
Once the data blocks of each data file are transmitted according to the distribution matrix, a large number of subscribing clients can access the data file at any time, so that each subscribing client can use the appropriate data blocks of the data file in a timely manner. It is possible. In the above example, assuming a time slot duration of 5 seconds, DOD system 100 shifts the distribution sequence of data file N by three time slots according to the optimal distribution matrix as follows: ), Transmit data blocks of data files M and N.
[0052]
(Equation 5)
Figure 2004514336
[0053]
When client A selects movie M at time 00: 00: 00: 00, STB 300 of client A performs reception, storage, reproduction, and rejection of the data block as follows.
[0054]
(Equation 6)
Figure 2004514336
[0055]
When client B selects movie M at time 00:00:10, STB 300 of client B performs reception, storage, reproduction, and rejection of the data block as follows.
[0056]
(Equation 7)
Figure 2004514336
[0057]
When the client C selects the movie M at time 00:00:15, the STB 300 of the client C performs reception, storage, reproduction, and rejection of the data block as follows.
[0058]
(Equation 8)
Figure 2004514336
[0059]
When client D selects movie M at time 00:00:30, STB 300 of client D performs reception, storage, reproduction, and rejection of the data block as follows.
[0060]
(Equation 9)
Figure 2004514336
[0061]
As shown in the above example, any combination of clients can independently select and start playing any data file provided by the service provider at any time. The system is always receiving a continuous stream of data blocks determined by time slots, but at any one time the receiving STB needs only certain data blocks and replaces other received data blocks. The above term "receive" is a bit confusing because it may have already been received and stored. This request is called "received" above, but "do not reject" is more accurate. Therefore, “receive M4” can be “reject everything except M4”, and “not receive” can be “reject all”.
[0062]
It becomes clear from the above example that the available bandwidth is not fully utilized during a particular time slot. In particular, in at least some of the time slots, there is an “idle time” in which transmission is not being performed. This idle time is essentially a wasteful use of the available bandwidth. Take for example option 4 above, where two data blocks are transmitted during each time slot. In other words, four data block transmission periods remain idle in a time slot having a bandwidth suitable for transmitting six data blocks. This is not as dramatic with Option 4, but becomes more extreme when the data file is several thousand data blocks in size. Even with the best combination protocol for combining data, a significant portion will still be empty block space.
[0063]
This empty block space is a useless bandwidth because it is equated with an unused bandwidth. It is an object of the present invention to reduce as much idle time as possible, and therefore one embodiment of the present invention is to determine after the scheduling matrix (referred to herein as the idle time reduction scheduling matrix) has been determined. Is to perform another step.
[0064]
A representative model of the idle time reduction scheduling matrix can be described with reference to the above-described six block scheduling matrices, but will be repeatedly described here for convenience. The idle time for which bandwidth is available for data block transmission is indicated by <-> for clarity.
[0065]
(Equation 10)
Figure 2004514336
[0066]
This is illustrated in FIG. The scheduling matrix clearly has unused bandwidth in the form of idle time in most time slots. The present invention teaches reducing this idle time by utilizing a constant bandwidth per time slot. The key to achieving a reduction in idle transmission time through the use of constant bandwidth is that the delivery sequence of the data blocks needs to be adhered to, but received at or before the time when the data blocks need to be accessed. It is to be understood that the data blocks do not need to be delivered in the exact time slots, except that they must. Thus, constant bandwidth utilization is achieved by transmitting a fixed number of data blocks in each time slot according to the distribution sequence indicated by the scheduling matrix, regardless of the time slots allocated by the scheduling matrix.
[0067]
In the six block scheduling matrices detailed above, there is a significant amount of idle time in TS0, TS1, TS2 and TS4. For example, assume a desired constant bandwidth corresponding to the transmission of four data blocks per time slot. Thus, idle time is reduced by moving forward data blocks until four data slots are scheduled to be transmitted during each time slot. The procedure for that is to take the next block of data in the sequence and move it to an empty space. Therefore, in this example, the first block blk0 in TS1 is moved to TS0. Further, the next block blk1 in TS1 is carried forward. Next, since TS0 still has an empty data block space, blk3 is further carried over from TS1. With this, TS0 is completely filled with space, and becomes as follows.
[0068]
(Equation 11)
Figure 2004514336
[0069]
At this point, since most of TS1 and TS2 are empty, the data block is carried forward from TS3. At the end of this procedure, the matrix looks like this:
[0070]
(Equation 12)
Figure 2004514336
[0071]
This is also illustrated in FIG. Like TS4 and TS5 in this example, empty time slots and incomplete time slots are filled by repeating the original sequence and further filling idle time. Therefore, the first six time slots are as follows.
[0072]
(Equation 13)
Figure 2004514336
[0073]
The next two time slots TS6 and TS7 in this sequence have the same data blocks as TS2 and TS3. Thus, the new short scheduling matrix, which is actually generated by this process, is only four timeslots long. FIG. 7 shows a new iteration matrix generated by filling idle time.
[0074]
From the above example, it is clear that the user can receive the data file in advance, unlike on-time delivery of the original scheduling matrix, as long as the original order is maintained. The user may enter an intermediate time slot of the system and start using the data as soon as the start block blk0 is received.
[0075]
Thus, at any point in the stream, a user may enter the system and begin receiving data, as the data slots become a continuous stream and the time slots are almost computationally fictional. As shown in FIG. 8, this additional step is a relatively simple step 510 that is performed at the end of procedure 410.
[0076]
For simplicity, the description of FIGS. 4-10 dealt with the case where the selected bandwidth is set to a constant equal to the integer number of data blocks. However, the fixed bandwidth need not be equal to an integer number of data blocks. Rather, the distribution sequence may simply follow the sequence created in FIG. The data stream generated by the distribution sequence created in FIG. 8 is then provided to a lower hardware device (eg, a network card or a channel server) that controls the broadcasting of digital data. Rather than broadcasting an integer block of data, the underlying hardware device transmits as much data as possible within the bandwidth allocated to the file.
[0077]
As will be appreciated by those skilled in the art, at the abstraction level of the delivery sequence, one does not need to worry about the actual transmission of the data. Instead, a distribution matrix provides the sequence, and the underlying hardware device controls the broadcast of the data using the allocated bandwidth. Therefore, among the allocated bandwidths, those that include only a part of the data block size can be completely used. Once the allocated bandwidth has been utilized, the underlying device will stop broadcasting this particular data file until the bandwidth is available again.
[0078]
Overall behavior:
The service provider may schedule some data files (eg, video files) to be transmitted to the channel server 104 prior to the broadcast. The central control server 102 calculates a three-dimensional distribution matrix (ID, time slot, and data block transmission order) and transmits it to the channel server 104. During the broadcast, the channel server 104 references a three-dimensional distribution matrix to transmit the appropriate data blocks in the appropriate order. Since each data file is divided into a plurality of data blocks, a large number of subscribing clients can independently start viewing the data file continuously and sequentially at any time. The size of the data block in the data file depends on the duration of the selected time slot and the bit rate of the data stream in the data file. For example, in an MPEG data stream having a constant bit rate, each data block has a fixed size represented by the following equation. Block size (megabyte) = bit rate (megabyte per second) × TS (second) / 8 (1).
[0079]
In an exemplary embodiment, the size of the data block is rounded up to a multiple of the memory cluster size in the local memory 208 of the channel server 104. For example, if the length of the data block calculated according to the above equation (1) is 720 kilobytes and the cluster size of the local memory 208 is 64 kilobytes, the result is that the length of the data block is 768 kilobytes. Is preferred. In this embodiment, the data block is preferably further divided into a plurality of sub-blocks each having the same size as the cluster size. In this example, the data block has 12 sub-blocks that are 64 kilobytes.
[0080]
Sub-blocks can be further divided into data packets. Each data packet includes a packet header and packet data. The length of the packet data depends on the maximum transmission unit (MTU) of the physical layer, which is the data transmission destination of the CPU of each channel server. In a preferred embodiment, the total size of the packet header and packet data is preferably less than the MTU. However, in order to obtain the maximum efficiency, it is preferable that the length of the packet data is as long as possible.
[0081]
In an exemplary embodiment, the data in the packet header contains information (eg, such as, for example, information that allows the joining client's STB 300 to decode any received data and determine whether the data packet belongs to the selected data file. Protocol signature, version, ID, or packet type information). The packet header may further include other information such as block / subblock / packet number, packet length, cyclic redundancy check (CRC) and offset within the subblock, and / or encoding information.
[0082]
When received by the channel server 104, the data packet is sent to the QAM modulator 206, where another header is added to generate a QAM modulated IF output signal. The maximum bit rate output for QAM modulator 206 depends on the available bandwidth. For example, for a QAM modulator 206 having a 6 MHz bandwidth, the maximum bit rate is 5.05 (bits / symbol) × 6 (MHz) = 30.3 Mbit / s.
[0083]
The QAM-modulated IF signal is transmitted to the up-converter 106 and converted into an RF signal suitable for a specific channel (for example, 555.250 MHz in CATV channel 80 with a 6 MHz bandwidth). For example, if the cable network has a high bandwidth (or bit rate), each channel can be used to provide two or more data streams, each occupying a virtual subchannel. For example, using QAM modulation, three MPEG1 data streams can be adapted to a 6 MHz channel. The output of upconverter 106 is sent to a combiner / amplifier 108 that sends the combined signal to transmission medium 110.
[0084]
In an exemplary embodiment, the total system bandwidth (BW) for transmitting “N” data streams is BW = N × bw, where bw is the required bandwidth per data stream. . For example, since each MPEG-1 data stream occupies a system bandwidth of 9 Mbit / s, three MPEG-1 data streams are transmitted simultaneously over a DOCSIS cable channel having a system bandwidth of 30.3 Mbit / s. can do.
[0085]
Generally, bandwidth is consumed regardless of the number of subscribing clients that are actually accessing the DOD service. Therefore, even if there are no subscribing clients using the DOD service, bandwidth is still consumed to ensure the on-demand capability of the system.
[0086]
When activated, the STB 300 continuously receives and updates the program guide stored in the local memory 308 of the STB 300. In an exemplary embodiment, STB 300 displays data file information including the latest program guide on a TV screen. Data file information such as video file information includes movie ID, movie title, description (in multiple languages), category (for example, for action or children), rating (for example, R designation or PG13 designation, etc.), cable company Policies (eg, price and length of free listening), subscription periods, movie posters, and movie previews. In an exemplary embodiment, the data file information is transmitted over a reserved physical channel, such as a channel reserved for firmware updates, commercials, and / or emergency information. In another exemplary embodiment, the information is transmitted on a physical channel shared by another data stream.
[0087]
The subscribing client can view a list of available data files in an array by category displayed on the television screen. When the client selects one of the available data files, STB 300 controls the hardware to tune to the corresponding physical channel and / or virtual subchannel to begin receiving data packets for that data file. . STB 300 examines all data packet headers, decodes the data in the data packet, and determines whether to save the received data packet. If STB 300 determines that the data packet should not be saved, the data packet is discarded. Otherwise, the data packet is stored in local memory 308 for later reading, or temporarily stored in buffer memory 310 until transmitted to decoder 312.
[0088]
To improve performance efficiency by avoiding frequent reads / writes to local memory 308, in an exemplary embodiment, STB 300 locks the predicted data block in memory buffer 310 whenever possible. Use a "sliding window" prediction technique. If a hit occurs in the prediction window, the data block is transmitted directly from the memory buffer 310 to the decoder 312. If a misprediction occurs, the data block is read from the local memory 308 into the memory buffer 310 before being transmitted from the memory buffer 310 to the decoder 312.
[0089]
In an exemplary embodiment, the STB 300 is via an infrared (IR) remote control button with buttons for pause, slow motion play, rewind, zoom, and single step, an IR keyboard, or a front panel push button. , According to the order of the joining client. In an exemplary embodiment, the scheduled commercial is played automatically if the subscribing client does not enter any action for a predetermined period of time. Scheduled commercials are automatically stopped when the subscribing client provides an action (eg, pressing a button on a remote control). In another exemplary embodiment, STB 300 may automatically insert commercials during video playback. The service provider (eg, a cable company) can set a pricing policy that dictates how often commercials are preferably interrupted during playback.
[0090]
If an emergency information bit is found in the data packet header, STB 300 suspends any data reception operations and controls the hardware to tune to the channel reserved for receiving data file information, Obtain and decode any emergency information to be displayed on the output screen. In an exemplary embodiment, when the STB 300 is in a standby state, the STB 300 is tuned to a channel reserved for receiving data file information and is always ready to receive and display any emergency information without delay. .
[0091]
The above examples illustrate certain representative embodiments of the present invention, and those skilled in the art will readily be able to derive other embodiments, modifications, and variations therefrom. Accordingly, the invention is not limited to the specific embodiments described above, but is defined by the appended claims.
[Brief description of the drawings]
FIG. 1A illustrates an exemplary DOD system according to one embodiment of the present invention.
FIG. 1B illustrates an exemplary DOD system according to another embodiment of the present invention.
FIG. 2 is a diagram illustrating an exemplary channel server according to one embodiment of the present invention.
FIG. 3 illustrates an exemplary set top box according to one embodiment of the present invention.
FIG. 4 illustrates an exemplary process for generating a scheduling matrix according to one embodiment of the present invention.
FIG. 5 is a diagram illustrating an example of a scheduling matrix of six data block files.
FIG. 6 is a diagram showing how data blocks of the scheduling matrix of FIG. 6 are carried up until all idle time slots are full.
FIG. 7 shows a new idle time reduction scheduling matrix.
FIG. 8 illustrates the addition of an embodiment of idle time reduction.
FIG. 9 is a flowchart illustrating a method by which an embodiment of idle time reduction is implemented.
FIG. 10 is a diagram showing a plurality of streams of repetition data created from an original scheduling matrix.
[Explanation of symbols]
100 ... DOD system
102: Central control server
103 ... Central storage
104a to 104n: Channel server
106a to 106n: Up converter
108 ... Combiner / Amplifier
110 ... Transmission medium
112 ... Switch matrix
114 ... Channel monitoring module
116a-116b ... backup channel server
118a-118b ... backup upconverter
120 ... Cable TV system
202: Server controller
204 ... CPU
206 ... QAM modulator
208: Local memory
210 ... Network interface
300 ... General-purpose set top box
302 ... QAM demodulator
304 ... CPU
308: Local memory
310 ... buffer memory
312 ... Decoder
314 ... Graphics overlay module
318 ... User interface
320 Communication line
322: High-speed data bus
324 output device

Claims (35)

コンピュータによって実行される汎用放送方法であって、
非クライアント固有の方式で複数のクライアントにオン・デマンドデータを放送するのに適したデータ伝送シーケンスを規定する配信行列を準備する工程を備え、
前記オン・デマンドデータファイルの伝送に必要な伝送帯域幅の量は、前記複数のクライアントの数と無関係となる、方法。
A general-purpose broadcasting method executed by a computer,
Providing a delivery matrix that defines a data transmission sequence suitable for broadcasting on-demand data to a plurality of clients in a non-client-specific manner;
The method, wherein the amount of transmission bandwidth required to transmit the on-demand data file is independent of the number of the plurality of clients.
請求項1に記載のコンピュータによって実行される方法であって、
配信行列を生成する工程は、
第1のデータファイルの伝送に適した第1のスケジューリング行列を準備する工程であって、前記第1のデータファイルは、第1の複数のデータブロックによって表され、前記第1のスケジューリング行列は、前記第1のスケジューリング行列に従って前記第1のデータファイルの伝送を受信する任意のクライアントが、1タイムスロット内で前記第1のデータファイルへアクセス開始できるように、前記第1の複数のデータブロックを、複数のタイムスロット内で順番に伝送するための第1のシーケンスを提供する工程を備える、方法。
A computer-implemented method according to claim 1, wherein
The step of generating a distribution matrix includes:
Preparing a first scheduling matrix suitable for transmission of a first data file, wherein the first data file is represented by a first plurality of data blocks, and wherein the first scheduling matrix comprises: The first plurality of data blocks so that any client that receives the transmission of the first data file according to the first scheduling matrix can start accessing the first data file within one time slot. , Providing a first sequence for transmission in sequence within a plurality of time slots.
請求項2に記載のコンピュータによって実行される方法であって、
前記第1のスケジューリング行列は、一定帯域幅のスケジューリング行列である、方法。
A computer-implemented method according to claim 2, wherein:
The method, wherein the first scheduling matrix is a constant bandwidth scheduling matrix.
請求項3に記載のコンピュータによって実行される方法であって、
前記第1の複数のデータブロックからの一定量のデータは、割り当てられた帯域幅の中での伝送のためにスケジューリングされる、方法。
A computer-implemented method according to claim 3, wherein
A method wherein a quantity of data from the first plurality of data blocks is scheduled for transmission within an allocated bandwidth.
請求項4に記載のコンピュータによって実行される方法であって、
割り当てられた帯域幅の中での伝送の制御は、下位ハードウェアデバイスによって実行される、方法。
A computer-implemented method according to claim 4, wherein
A method wherein control of transmission within the allocated bandwidth is performed by a lower hardware device.
請求項3に記載のコンピュータによって実行される方法であって、
前記第1のスケジューリング行列は、可変帯域幅のスケジューリング行列である、方法。
A computer-implemented method according to claim 3, wherein
The method, wherein the first scheduling matrix is a variable bandwidth scheduling matrix.
非クライアント固有のフォーマットでのオン・デマンドデータの配信に適した一定帯域幅アイドルタイム減少スケジューリング行列を生成するためのコンピュータによって実行される方法であって、
第1のデータファイルの伝送に適したスケジューリング行列を生成する工程であって、前記第1のデータファイルは、第1の複数のデータブロックによって表され、前記第1のスケジューリング行列は、前記第1のスケジューリング行列に従って前記第1のデータファイルの伝送を受信する任意のクライアントが、1タイムスロット内で前記第1のデータファイルへアクセス開始できるように、前記第1の複数のデータブロックを、複数のタイムスロット内で順番に伝送するための第1のシーケンスを提供する工程と、
所望の一定の伝送帯域幅を決定する工程であって、前記一定の帯域幅は、次いで、前記第1のスケジューリング行列の順序に従って、前記データブロックを順番に流すために用いられる工程と、
を備える、方法。
A computer-implemented method for generating a constant bandwidth idle time reduction scheduling matrix suitable for delivery of on-demand data in a non-client-specific format, comprising:
Generating a scheduling matrix suitable for transmitting a first data file, wherein the first data file is represented by a first plurality of data blocks, and wherein the first scheduling matrix includes the first scheduling matrix; The first plurality of data blocks is stored in a plurality of times so that any client receiving the transmission of the first data file can start accessing the first data file within one time slot according to the scheduling matrix of Providing a first sequence for transmission in sequence within a time slot;
Determining a desired constant transmission bandwidth, wherein the constant bandwidth is then used to sequentially stream the data blocks according to an order of the first scheduling matrix;
A method comprising:
汎用セット・トップ・ボックス(STB)を制御するためのコンピュータによって実行される方法であって、
複数のチャンネルでデジタルデータを受信すると共に、前記複数のチャンネルの各々で伝送されるデータの性質を示す電子番組ガイド(EPG)を受信する工程であって、前記複数のチャンネルの内の第1のチャンネルは、非クライアント固有のフォーマットでオン・デマンドデータを提供するデータ・オン・デマンド番組を含み、前記EPGは、前記データ・オン・デマンド番組が、第1の複数のデータブロックによって表される第1のデータファイルを含むことを示し、前記第1の複数のデータブロックは、前記汎用STBのユーザが1タイムスロット内で前記第1のデータファイルへ任意の時間にアクセス開始できるように、複数のタイムスロット内で順番に提供される工程と、
前記汎用STBの前記ユーザに前記EPGデータを提供する工程と、
前記第1のデータファイルへのアクセスを必要とする前記汎用STBの前記ユーザからデータ処理命令を受信する工程と、
前記汎用STBの前記ユーザからの前記命令を実行する工程と、
を備える、方法。
A computer-implemented method for controlling a general-purpose set top box (STB), comprising:
Receiving digital data on a plurality of channels and receiving an electronic program guide (EPG) indicative of a property of data transmitted on each of the plurality of channels, wherein the first one of the plurality of channels comprises: The channel includes a data-on-demand program that provides on-demand data in a non-client-specific format, and the EPG includes a data-on-demand program in which the data-on-demand program is represented by a first plurality of data blocks. One data file, and the first plurality of data blocks are arranged such that a user of the general-purpose STB can start accessing the first data file at any time within one time slot. Steps provided sequentially in the time slot;
Providing the EPG data to the user of the general purpose STB;
Receiving a data processing instruction from the user of the general purpose STB that requires access to the first data file;
Executing the instructions from the user of the general purpose STB;
A method comprising:
請求項8に記載のコンピュータによって実行される方法であって、
前記汎用STBの前記ユーザからの命令を実行する前記工程は、
前記STBを前記第1のチャンネルに同調させて、前記ユーザによって要求されるデータを選択する工程と、
受信の際に前記第1の複数のデータブロックを処理する工程であって、
前記受信されたデータブロックをデコードする工程と、
前記受信されたデータブロックを解凍する工程と、
前記受信されたデータブロックを必要に応じて再組み立てする工程と、
前記受信されたデータブロックを前記STB内に存在するローカルメモリに格納する工程のうち、少なくとも1つの工程を含む工程と、
前記第1のデータファイルを前記汎用STBの前記ユーザによって選択された出力装置に提供する工程と、
を備える、方法。
A computer-implemented method according to claim 8, wherein
The step of executing an instruction from the user of the general-purpose STB includes:
Tuning the STB to the first channel to select data requested by the user;
Processing the first plurality of data blocks upon reception,
Decoding the received data block;
Decompressing the received data block;
Reassembling the received data blocks as needed;
Storing at least one of the steps of storing the received data block in a local memory residing in the STB;
Providing the first data file to an output device selected by the user of the general purpose STB;
A method comprising:
請求項9に記載のコンピュータによって実行される方法であって、
前記出力装置はテレビである、方法。
A computer-implemented method according to claim 9, wherein:
The method, wherein the output device is a television.
請求項9に記載のコンピュータによって実行される方法であって、
前記出力装置はディスプレイモニタである、方法。
A computer-implemented method according to claim 9, wherein:
The method, wherein the output device is a display monitor.
請求項9に記載のコンピュータによって実行される方法であって、
前記出力装置はビデオカセットレコーダ(VCR)である、方法。
A computer-implemented method according to claim 9, wherein:
The method, wherein the output device is a video cassette recorder (VCR).
請求項9に記載のコンピュータによって実行される方法であって、
前記出力装置はコンピュータシステムである、方法。
A computer-implemented method according to claim 9, wherein:
The method, wherein the output device is a computer system.
請求項8に記載のコンピュータによって実行される方法であって、
前記第1の複数のデータブロックは、一定数のデータブロックが各タイムスロット中に受信される一定帯域幅の方式で提供される、方法。
A computer-implemented method according to claim 8, wherein
The method of claim 1, wherein the first plurality of data blocks is provided in a fixed bandwidth manner, wherein a fixed number of data blocks are received during each time slot.
コンピュータによって実行される汎用データ放送方法であって、
汎用データ放送システムにおいて、
非クライアント固有の方式で複数のクライアントにオン・デマンドデータを放送するのに適したデータ伝送シーケンスを規定する配信行列を準備する工程であって、前記オン・デマンドデータファイルの伝送に必要な伝送帯域幅の量は、前記複数のクライアントの数と無関係となる工程と、
第1のチャンネルを介してのオン・デマンドデータの伝送に適した第1のチャンネルサーバを提供する工程と、
データ放送に先立って、データ・オン・デマンド情報の伝送のために前記第1のチャンネルサーバを準備する工程であって、前記配信行列を前記第1のチャンネルサーバのメモリ内に読み出す工程および前記配信行列によって配信のためにスケジューリングされたデータブロックを前記第1のチャンネルサーバの前記メモリ内に読み出す工程を含む工程と、
前記第1のチャンネルがオン・デマンドデータを含むことを示す情報を含む電子番組ガイド(EPG)を伝送する工程と、
前記第1のチャンネルおよび前記第2のチャンネルからのデータを伝送する工程と、
を実行し、
汎用STBにおいて、
前記第1のチャンネルのデータと、前記EPGとを含むデジタルデータを受信する工程と、
前記汎用STBのユーザに前記EPGデータを提供する工程と、
前記汎用STBの前記ユーザからデータ処理命令を受信する工程と、
前記汎用STBの前記ユーザからの前記命令を実行する工程と、
を実行する、方法。
A general-purpose data broadcasting method executed by a computer,
In general-purpose data broadcasting systems,
Providing a delivery matrix that defines a data transmission sequence suitable for broadcasting on-demand data to a plurality of clients in a non-client-specific manner, comprising: a transmission bandwidth required for transmitting the on-demand data file; The amount of width being independent of the number of the plurality of clients;
Providing a first channel server suitable for transmitting on-demand data via the first channel;
Preparing the first channel server for transmission of data-on-demand information prior to data broadcasting, wherein the step of reading the distribution matrix into a memory of the first channel server; Reading data blocks scheduled for distribution by a matrix into the memory of the first channel server;
Transmitting an electronic program guide (EPG) including information indicating that the first channel includes on-demand data;
Transmitting data from the first channel and the second channel;
Run
In general-purpose STB,
Receiving digital data including the first channel data and the EPG;
Providing the EPG data to a user of the general-purpose STB;
Receiving a data processing instruction from the user of the general purpose STB;
Executing the instructions from the user of the general purpose STB;
The way to do.
請求項15に記載のコンピュータによって実行される方法であって、
配信行列を生成する工程は、
第1のデータファイルの伝送に適した第1のスケジューリング行列を準備する工程であって、前記第1のデータファイルは、第1の複数のデータブロックによって表され、前記第1のスケジューリング行列は、前記第1のスケジューリング行列に従って前記第1のデータファイルの伝送を受信する任意のクライアントが、1タイムスロット内で前記第1のデータファイルへアクセス開始できるように、前記第1の複数のデータブロックを、複数のタイムスロット内で順番に伝送するための第1のシーケンスを提供する工程を備える、方法。
A computer-implemented method according to claim 15, wherein
The step of generating a distribution matrix includes:
Preparing a first scheduling matrix suitable for transmission of a first data file, wherein the first data file is represented by a first plurality of data blocks, and wherein the first scheduling matrix comprises: The first plurality of data blocks so that any client that receives the transmission of the first data file according to the first scheduling matrix can start accessing the first data file within one time slot. , Providing a first sequence for transmission in sequence within a plurality of time slots.
請求項16に記載のコンピュータによって実行される方法であって、
前記第1のスケジューリング行列は、一定帯域幅のスケジューリング行列である、方法。
A computer-implemented method according to claim 16, wherein:
The method, wherein the first scheduling matrix is a constant bandwidth scheduling matrix.
請求項17に記載のコンピュータによって実行される方法であって、
一定数の前記第1の複数のデータブロックは、各タイムスロット内での伝送のためにスケジューリングされる、方法。
A computer-implemented method according to claim 17, wherein
A method wherein a number of said first plurality of data blocks are scheduled for transmission within each time slot.
請求項15に記載のコンピュータによって実行される方法であって、
前記第1のスケジューリング行列は、可変帯域幅のスケジューリング行列である、方法。
A computer-implemented method according to claim 15, wherein
The method, wherein the first scheduling matrix is a variable bandwidth scheduling matrix.
データ配信行列であって、
いくつかのデータブロックに分割されたデータファイルを備え、
前記いくつかのデータブロックが配列される順序は、
a)前記データファイルを前記いくつかのデータブロックに分割する工程と、
b)第1の変数を0に設定する工程と、
c)参照配列を消去する工程と、
d)前記第1の変数を前記いくつかのデータブロックの総数と比較する工程と、
e)前記第1の変数が前記いくつかのデータブロックの総数未満であった場合に、第2の変数を0に設定する工程と、
f)前記第2の変数を前記いくつかのデータブロックの総数と比較する工程と、
g)前記第2の変数が前記いくつかのデータブロックの総数未満であった場合に、スケジューリング行列の列に格納された1以上の格納データブロックを前記参照配列に書き込む工程であって、前記列が、iを前記第2の変数、jを前記第1の変数、xを前記いくつかのデータブロックとした場合の[(i+j)mod(x)]によって決定される工程と、
h)前記参照配列が少なくとも1つの前記格納されたデータブロックをすでに有している場合には、第2のコピーを書き込まない工程と、
i)前記参照配列が前記第2の変数に対応するブロックを含むか否かを調べる工程と、
j)前記参照配列が前記第2の変数に対応する前記データブロックを含まない場合に、前記データブロックが、前記参照配列と、前記スケジューリング行列の[(i+j)mod(x),j]に等しい前記行列内の位置に付加され、前記第2の変数が1だけ増加される工程と、
k)前記参照配列が前記第2の変数に対応する前記データブロックを含む場合に、前記第2の変数が1だけ増加される工程と、
l)前記第2の変数がデータブロックの前記総数に等しくなるまで、工程g)からk)を繰り返す工程と、
m)前記第1の変数を1だけ増分させる工程と、
n)前記第1の変数がデータブロックの前記総数に等しくなるまで、工程c)からm)を繰り返す工程と、
o)前記スケジューリング行列をストリームに再構成する工程と、
によって決定され、
前記順序は、前記データファイルに割り当てられた帯域幅を有する媒体を介して反復信号で伝送され、前記帯域幅は、前記反復信号によって完全に利用される、データ配信行列。
A data distribution matrix,
It has a data file divided into several data blocks,
The order in which the several data blocks are arranged is:
a) dividing the data file into the number of data blocks;
b) setting the first variable to 0;
c) erasing the reference sequence;
d) comparing the first variable to a total number of the number of data blocks;
e) setting a second variable to 0 if the first variable is less than the total number of the some data blocks;
f) comparing the second variable to a total number of the some data blocks;
g) writing one or more stored data blocks stored in a column of a scheduling matrix to the reference array when the second variable is less than the total number of the some data blocks; Is determined by [(i + j) mod (x)] where i is the second variable, j is the first variable, and x is the number of data blocks;
h) not writing a second copy if the reference array already has at least one of the stored data blocks;
i) checking whether the reference sequence includes a block corresponding to the second variable;
j) if the reference array does not include the data block corresponding to the second variable, the data block is equal to the reference array and [(i + j) mod (x), j] of the scheduling matrix; Added to a position in the matrix, wherein the second variable is incremented by one;
k) increasing the second variable by 1 if the reference sequence includes the data block corresponding to the second variable;
l) repeating steps g) to k) until said second variable is equal to said total number of data blocks;
m) incrementing the first variable by one;
n) repeating steps c) to m) until said first variable is equal to said total number of data blocks;
o) reconstructing the scheduling matrix into a stream;
Determined by
The data distribution matrix, wherein the order is transmitted in a repetition signal over a medium having a bandwidth allocated to the data file, wherein the bandwidth is fully utilized by the repetition signal.
請求項20のデータ配信行列であって、
前記スケジューリング行列をストリームに再構成する前記工程は、前記データファイルに割り当てられる前記帯域幅のサイズを決定する工程を含む、データ配信行列。
21. The data delivery matrix of claim 20, wherein
A data distribution matrix, wherein reconfiguring the scheduling matrix into a stream comprises determining a size of the bandwidth allocated to the data file.
請求項21のデータ配信行列であって、
前記ファイルに割り当てる前記帯域幅のサイズを決定する工程は、前記帯域幅を最小限にする、データ配信行列。
22. The data distribution matrix of claim 21, wherein:
Determining a size of the bandwidth to allocate to the file, wherein the step of minimizing the bandwidth.
請求項21のデータ配信行列であって、
前記ファイルに割り当てる前記帯域幅のサイズを決定する工程は、前記帯域幅を最大限にする、データ配信行列。
22. The data distribution matrix of claim 21, wherein:
Determining a size of the bandwidth to be allocated to the file, wherein maximizing the bandwidth.
請求項20に記載のデータ配信行列から得られた複数のデータ配信ストリームを有するデータ配信システムであって、
前記データファイルは、複数の異なるデータファイルを備える、データ配信システム。
A data distribution system having a plurality of data distribution streams obtained from the data distribution matrix according to claim 20,
The data distribution system, wherein the data file includes a plurality of different data files.
オン・デマンドデータファイルを伝送するためにコンピュータによって実行される方法であって、
非固有の方式で複数のクライアントに媒体を介して行う放送に適した反復データ伝送シーケンスを規定する配信行列を準備する工程を備え、
前記配信行列を準備する前記工程は、さらに、データファイルを、少なくとも第1のブロックを有する複数のデータブロックに変える工程と、前記データブロックを前記反復データ伝送シーケンスに順序付ける工程と、を備え、
ユーザは、前記反復データ伝送シーケンスを受信し、前記第1のブロックが受信されるとすぐに途切れずに前記データファイルの利用を開始することが可能であり、
前記反復データ伝送シーケンスは、所定の帯域幅を必要とし、さらに、前記反復データ伝送シーケンスの伝送においてアイドルタイムは最小限となり、
前記データ・オン・デマンドファイルの伝送に必要な伝送帯域幅の量は、前記複数のクライアントの数と無関係となる、方法。
A method performed by a computer to transmit an on-demand data file, the method comprising:
Providing a distribution matrix that defines a repetitive data transmission sequence suitable for broadcasting over a medium to a plurality of clients in a non-specific manner,
Preparing the distribution matrix further comprises: converting a data file into a plurality of data blocks having at least a first block; and ordering the data blocks into the repetitive data transmission sequence.
A user can receive the repetitive data transmission sequence and start using the data file without interruption as soon as the first block is received;
The repetitive data transmission sequence requires a predetermined bandwidth, furthermore, idle time is minimized in transmitting the repetitive data transmission sequence,
The method, wherein the amount of transmission bandwidth required to transmit the data-on-demand file is independent of the number of the plurality of clients.
請求項25に記載のオン・デマンドデータファイルを伝送するためにコンピュータによって実行される方法であって、
前記反復データ伝送シーケンスは、新しいアイドルタイム減少スケジューリング行列に変換される、方法。
A computer-implemented method for transmitting an on-demand data file according to claim 25, comprising:
The method, wherein the repetitive data transmission sequence is converted to a new idle time reduction scheduling matrix.
請求項25に記載のオン・デマンドデータファイルを伝送するためにコンピュータによって実行される方法であって、
前記データ伝送シーケンスは、一定の帯域幅を有する、方法。
A computer-implemented method for transmitting an on-demand data file according to claim 25, comprising:
The method, wherein the data transmission sequence has a constant bandwidth.
請求項27に記載のオン・デマンドデータファイルを伝送するためにコンピュータによって実行される方法であって、
一定数の前記データブロックは、各タイムスロット内での伝送のためにスケジューリングされる、方法。
A computer-implemented method for transmitting an on-demand data file according to claim 27, comprising:
A method wherein a number of said data blocks are scheduled for transmission in each time slot.
請求項27に記載のオン・デマンドデータファイルを伝送するためにコンピュータによって実行される方法であって、
前記データ伝送シーケンスは、可変の帯域幅を有する、方法。
A computer-implemented method for transmitting an on-demand data file according to claim 27, comprising:
The method, wherein the data transmission sequence has a variable bandwidth.
コンピュータによって実行される汎用データ放送方法であって、
非クライアント固有の方式で複数のクライアントにオン・デマンドデータを放送するのに適したデータ伝送シーケンスを規定する配信行列を準備する工程であって、前記オン・デマンドデータファイルの伝送に必要な伝送帯域幅の量は、前記複数のクライアントの数と無関係となり、伝送帯域幅の前記量の利用は、完全に最適化される工程と、
第1のチャンネルを介してのオン・デマンドデータの伝送に適した第1のチャンネルサーバを提供する工程と、
データ放送に先立って、データ・オン・デマンド情報の伝送のために前記第1のチャンネルサーバを準備する工程であって、前記配信行列を前記第1のチャンネルサーバのメモリ内に読み出す工程および前記配信行列によって配信のためにスケジューリングされたデータブロックを前記第1のチャンネルサーバの前記メモリ内に読み出す工程を含む工程と、
前記第1のチャンネルがオン・デマンドデータを含むことを示す情報を含む電子番組ガイド(EPG)を伝送する工程と、
前記第1のチャンネルおよび前記第2のチャンネルからのデータを伝送する工程と、
を備え、
汎用セット・トップ・ボックス(STB)において、
前記第1のチャンネルのデータと、前記EPGとを含むデジタルデータを受信する工程と、
前記汎用STBのユーザに前記EPGデータを提供する工程と、
前記汎用STBの前記ユーザからデータ処理命令を受信する工程と、
前記汎用STBの前記ユーザからの前記命令を実行する工程と、
を実行する、方法。
A general-purpose data broadcasting method executed by a computer,
Providing a delivery matrix that defines a data transmission sequence suitable for broadcasting on-demand data to a plurality of clients in a non-client-specific manner, comprising: a transmission bandwidth required for transmitting the on-demand data file; The amount of width is independent of the number of the plurality of clients, and the utilization of the amount of transmission bandwidth is fully optimized;
Providing a first channel server suitable for transmitting on-demand data via the first channel;
Preparing the first channel server for transmission of data-on-demand information prior to data broadcasting, wherein the step of reading the distribution matrix into a memory of the first channel server; Reading data blocks scheduled for distribution by a matrix into the memory of the first channel server;
Transmitting an electronic program guide (EPG) including information indicating that the first channel includes on-demand data;
Transmitting data from the first channel and the second channel;
With
In general-purpose set top box (STB),
Receiving digital data including the first channel data and the EPG;
Providing the EPG data to a user of the general-purpose STB;
Receiving a data processing instruction from the user of the general purpose STB;
Executing the instructions from the user of the general purpose STB;
The way to do.
請求項30に記載のコンピュータによって実行される方法であって、
配信行列を生成する工程は、
第1のデータファイルの伝送に適した第1のスケジューリング行列を準備する工程であって、前記第1のデータファイルは、第1の複数のデータブロックによって表され、前記第1のスケジューリング行列は、前記第1のスケジューリング行列に従って前記第1のデータファイルの伝送を受信する任意のクライアントが、1タイムスロット内で前記第1のデータファイルへアクセス開始できるように、前記第1の複数のデータブロックを、複数のタイムスロット内で順番に伝送するための第1のシーケンスを提供する工程を備える、方法。
A computer-implemented method according to claim 30, wherein
The step of generating a distribution matrix includes:
Preparing a first scheduling matrix suitable for transmission of a first data file, wherein the first data file is represented by a first plurality of data blocks, and wherein the first scheduling matrix comprises: The first plurality of data blocks so that any client that receives the transmission of the first data file according to the first scheduling matrix can start accessing the first data file within one time slot. , Providing a first sequence for transmission in sequence within a plurality of time slots.
請求項31に記載のコンピュータによって実行される方法であって、
前記第1のスケジューリング行列は、一定帯域幅のスケジューリング行列である、方法。
A computer-implemented method according to claim 31, wherein
The method, wherein the first scheduling matrix is a constant bandwidth scheduling matrix.
請求項32に記載のコンピュータによって実行される方法であって、
一定数の前記第1の複数のデータブロックは、各タイムスロット内での伝送のためにスケジューリングされる、方法。
A computer-implemented method according to claim 32, comprising:
A method wherein a number of said first plurality of data blocks are scheduled for transmission within each time slot.
請求項30に記載のコンピュータによって実行される方法であって、
前記第1のスケジューリング行列は、可変帯域幅のスケジューリング行列である、方法。
A computer-implemented method according to claim 30, wherein
The method, wherein the first scheduling matrix is a variable bandwidth scheduling matrix.
非クライアント固有のフォーマットでのオン・デマンドデータの配信に適した一定帯域幅アイドルタイム減少スケジューリング行列を生成するためのコンピュータによって実行される方法であって、
第1のデータファイルの伝送に適したスケジューリング行列を生成する工程であって、前記第1のデータファイルは、第1の複数のデータブロックによって表され、前記第1のスケジューリング行列は、前記第1のスケジューリング行列に従って前記第1のデータファイルの伝送を受信する任意のクライアントが、1タイムスロット内で前記第1のデータファイルへアクセス開始できるように、前記第1の複数のデータブロックを、複数のタイムスロット内で順番に伝送するための第1のシーケンスを提供する工程と、
所望の一定の伝送帯域幅を決定する工程であって、前記一定の帯域幅は、タイムスロット当たりの規定された一定数のデータブロックの伝送によって規定される工程と、
次のタイムスロットに対して、前記規定された一定数のデータブロックに等しい伝送のためのいくつかのデータブロックを順番に選択すると共に、前記第1のシーケンスのデータブロックの全体が伝送のためにスケジューリングされると、前記第1のシーケンスのデータブロックの先頭に戻る工程であって、前記一定の帯域幅の利用は、完全に最適化される工程と、
を備える、方法。
A computer-implemented method for generating a constant bandwidth idle time reduction scheduling matrix suitable for delivery of on-demand data in a non-client-specific format, comprising:
Generating a scheduling matrix suitable for transmitting a first data file, wherein the first data file is represented by a first plurality of data blocks, and wherein the first scheduling matrix includes the first scheduling matrix; The first plurality of data blocks is stored in a plurality of times so that any client receiving the transmission of the first data file can start accessing the first data file within one time slot according to the scheduling matrix of Providing a first sequence for transmission in sequence within a time slot;
Determining a desired constant transmission bandwidth, said constant bandwidth being defined by transmission of a defined fixed number of data blocks per time slot;
For the next time slot, several data blocks for transmission equal to the defined fixed number of data blocks are selected in turn, and the entire data block of the first sequence is transmitted for transmission. Returning to the beginning of the first sequence of data blocks when scheduled, wherein the utilization of the constant bandwidth is fully optimized;
A method comprising:
JP2002542135A 2000-11-10 2001-06-27 Idle time reduction and constant bandwidth data on demand broadcast distribution matrix Withdrawn JP2004514336A (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/709,948 US6725267B1 (en) 2000-05-31 2000-11-10 Prefetched data in a digital broadcast system
US09/841,792 US20020023267A1 (en) 2000-05-31 2001-04-24 Universal digital broadcast system and methods
US09/892,017 US20020026501A1 (en) 2000-05-31 2001-06-25 Decreased idle time and constant bandwidth data-on-demand broadcast delivery matrices
PCT/US2001/020679 WO2002039744A1 (en) 2000-11-10 2001-06-27 Decreased idle time and constant bandwidth data-on-demand broadcast delivery matrices

Publications (1)

Publication Number Publication Date
JP2004514336A true JP2004514336A (en) 2004-05-13

Family

ID=27418871

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002542135A Withdrawn JP2004514336A (en) 2000-11-10 2001-06-27 Idle time reduction and constant bandwidth data on demand broadcast distribution matrix

Country Status (7)

Country Link
EP (1) EP1340376A1 (en)
JP (1) JP2004514336A (en)
CN (1) CN1203675C (en)
AU (1) AU2001271600A1 (en)
CA (1) CA2428829A1 (en)
HK (1) HK1053402B (en)
WO (1) WO2002039744A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060146780A1 (en) * 2004-07-23 2006-07-06 Jaques Paves Trickmodes and speed transitions
KR101453131B1 (en) 2007-12-14 2014-10-27 톰슨 라이센싱 Apparatus and method for simulcast over a variable bandwidth channel
WO2009078839A1 (en) 2007-12-18 2009-06-25 Thomson Licensing Apparatus and method for file size estimation over broadcast networks
CN107707490B (en) * 2017-09-26 2021-06-29 郑州云海信息技术有限公司 Bandwidth control method and device and readable storage medium

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003071A (en) * 1994-01-21 1999-12-14 Sony Corporation Image data transmission apparatus using time slots
US5757415A (en) * 1994-05-26 1998-05-26 Sony Corporation On-demand data transmission by dividing input data into blocks and each block into sub-blocks such that the sub-blocks are re-arranged for storage to data storage means
US5930493A (en) * 1995-06-07 1999-07-27 International Business Machines Corporation Multimedia server system and method for communicating multimedia information
US5850218A (en) * 1997-02-19 1998-12-15 Time Warner Entertainment Company L.P. Inter-active program guide with default selection control

Also Published As

Publication number Publication date
EP1340376A1 (en) 2003-09-03
CA2428829A1 (en) 2002-05-16
HK1053402A1 (en) 2003-10-17
AU2001271600A1 (en) 2002-05-21
CN1393108A (en) 2003-01-22
WO2002039744A1 (en) 2002-05-16
HK1053402B (en) 2006-01-13
CN1203675C (en) 2005-05-25

Similar Documents

Publication Publication Date Title
US6557030B1 (en) Systems and methods for providing video-on-demand services for broadcasting systems
US20020175998A1 (en) Data-on-demand digital broadcast system utilizing prefetch data transmission
US20020165943A1 (en) Universal STB architectures and control methods
US20020026501A1 (en) Decreased idle time and constant bandwidth data-on-demand broadcast delivery matrices
US20020026646A1 (en) Universal STB architectures and control methods
US20020138845A1 (en) Methods and systems for transmitting delayed access client generic data-on demand services
JP5038574B2 (en) Method for providing video-on-demand services for broadcast systems
JP2004514336A (en) Idle time reduction and constant bandwidth data on demand broadcast distribution matrix
JP2004536491A (en) Data-on-demand digital broadcasting system using prefetch data transmission
JP2005506725A (en) Method and system for transmitting client generic data-on-demand service with delayed access
KR20030051800A (en) Decreased idle time and constant bandwidth data-on-demand broadcast delivery ma-trices
TWI223563B (en) Methods and systems for transmitting delayed access client generic data-on-demand services
KR20040063795A (en) Transmission of delayed access client data and demand
AU2001253797A1 (en) Universal digital broadcast system and methods
EP1402331A2 (en) Methods and systems for transmitting delayed access client generic data-on demand services

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080626

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090605