IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ソニー株式会社の特許一覧

特表2022-507911受信パケットストリームのファイルを記憶するためのバッファ管理
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-01-18
(54)【発明の名称】受信パケットストリームのファイルを記憶するためのバッファ管理
(51)【国際特許分類】
   H04N 21/438 20110101AFI20220111BHJP
   H04N 21/433 20110101ALI20220111BHJP
   H04H 20/20 20080101ALI20220111BHJP
   H04H 60/82 20080101ALI20220111BHJP
【FI】
H04N21/438
H04N21/433
H04H20/20
H04H60/82
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021528943
(86)(22)【出願日】2019-10-11
(85)【翻訳文提出日】2021-07-15
(86)【国際出願番号】 IB2019058667
(87)【国際公開番号】W WO2020104870
(87)【国際公開日】2020-05-28
(31)【優先権主張番号】16/199,117
(32)【優先日】2018-11-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
2.JAVA
3.ANDROID
(71)【出願人】
【識別番号】000002185
【氏名又は名称】ソニーグループ株式会社
(74)【代理人】
【識別番号】100092093
【弁理士】
【氏名又は名称】辻居 幸一
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100109335
【弁理士】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100158551
【弁理士】
【氏名又は名称】山崎 貴明
(72)【発明者】
【氏名】クリフト グラハム
【テーマコード(参考)】
5C164
【Fターム(参考)】
5C164FA11
5C164UB21P
5C164UB36P
5C164UB41S
5C164UC27S
5C164YA21
(57)【要約】
ファイルを記憶するための、予め設定されたバイトサイズを有するバッファを管理する方法が、着信ファイルのファイル識別子及び長さを判定するステップを含む。方法は、着信ファイルが次の書き込み位置とバッファの最後との間のスペースに収まらないと判定するステップを含む。方法は、着信ファイルが収まらないとの判定に応答して、マップ内で、着信ファイルの範囲に少なくとも部分的に重なり合うファイルに対応する各エントリを削除するステップと、着信ファイルのためのエントリをマップ内に追加するステップとを含む。方法は、バッファ内の連続領域を着信ファイルのために割り当てた後に、次の書き込み位置を割り当て連続領域の最後に移動させるステップと、着信ファイルのパケットを受け取り、受け取られたパケットを割り当てられた連続領域に記憶するステップとをさらに含む。
【選択図】 図4
【特許請求の範囲】
【請求項1】
パケットストリームを介して受け取られたファイルを記憶するための、予め設定されたバイトサイズを有するバッファを管理する方法であって、
着信ファイルのファイル識別子及び長さを判定するステップと、
前記着信ファイルが次の書き込み位置と前記バッファの最後との間のスペースに収まらないと判定するステップと、
前記着信ファイルが前記次の書き込み位置と前記バッファの前記最後との間の前記スペースに収まらないとの前記判定に応答して、
前記バッファに記憶された1又は2以上のファイルを識別するマップにおいて、前記バッファの初期書き込み位置から開始する領域に少なくとも部分的に記憶されたファイルに対応し、かつ前記着信ファイルの前記長さに等しいサイズを有する各エントリを削除するステップと、
前記着信ファイルの前記ファイル識別子及び前記長さを含むエントリを、前記バッファ内の前記初期書き込み位置に関連付けて前記マップ内に追加するステップと、
前記バッファ内の前記初期書き込み位置から開始して前記着信ファイルの前記長さに等しい前記サイズを有する前記バッファ内の連続領域を割り当てた後に、前記次の書き込み位置を前記割り当てられた連続領域の前記最後に移動させるステップと、
前記着信ファイルのパケットを受け取り、該受け取られたパケットを前記割り当てられた連続領域に記憶するステップと、
を含むことを特徴とする方法。
【請求項2】
前記パケットストリームは、高度テレビジョンシステムズ委員会(ATSC)3.0デジタルテレビ信号の一部である、
請求項1に記載の方法。
【請求項3】
前記着信ファイルは、前記バッファに記憶された他のファイルと共通するトランスポートセッション識別子(TSI)値を有する階層符号化トランスポート(LCT)チャネルで受け取られ、
対応する異なるTSI値を有するファイルを記憶するために、新規バッファ及び別のマップが初期化される、
請求項2に記載の方法。
【請求項4】
前記マップ内の前記追加されたエントリは、前記着信ファイルの前記ファイル識別子及び前記長さを含む、
請求項1に記載の方法。
【請求項5】
前記着信ファイルの前記受け取られたパケットが、前記ファイルに割り当てられた前記バッファ内の前記連続領域を満たすまで、前記マップ内の前記追加されたエントリに不完全とのラベルを付けるステップをさらに含む、
請求項4に記載の方法。
【請求項6】
前記パケットストリームの各着信パケットについて、
対応するファイルのファイル識別子を判定するステップと、
前記対応するファイルの前記ファイル識別子を有し、かつ不完全とのラベルが付いた前記マップ内のエントリが存在するかどうかを判定するステップと、
前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在するとの判定に応答して、
前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域に前記着信パケットを記憶するステップと、
前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるかどうかを判定するステップと、
前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるとの判定に応答して、
前記マップ内の前記エントリに関連する前記不完全ラベルを削除するステップと、
前記マップ内の前記エントリと同じファイル名を有する前記マップ内の他の全てのエントリを削除するステップと、
前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在しないとの判定に応答して、前記着信パケットを新規着信ファイルとして処理するステップと、
をさらに含む、請求項5に記載の方法。
【請求項7】
前記ファイル識別子は、トランスポートオブジェクト識別子(TOI)及びファイル名を含む、
請求項6に記載の方法。
【請求項8】
パケットストリームを介して受け取られたファイルを、予め設定されたバイトサイズを有するバッファに記憶するバッファ管理装置であって、
着信ファイルのファイル識別子及び長さを判定し、
前記着信ファイルが次の書き込み位置と前記バッファの最後との間のスペースに収まらないと判定し、
前記着信ファイルが前記次の書き込み位置と前記バッファの前記最後との間の前記スペースに収まらないとの前記判定に応答して、
前記バッファに記憶された1又は2以上のファイルを識別するマップにおいて、前記バッファの初期書き込み位置から開始する領域に少なくとも部分的に記憶されたファイルに対応し、かつ前記着信ファイルの前記長さに等しいサイズを有する各エントリを削除し、
前記着信ファイルの前記ファイル識別子及び前記長さを含むエントリを、前記バッファ内の前記初期書き込み位置に関連付けて前記マップ内に追加し、
前記バッファ内の前記初期書き込み位置から開始して前記着信ファイルの前記長さに等しい前記サイズを有する前記バッファ内の連続領域を割り当てた後に、前記次の書き込み位置を前記割り当てられた連続領域の前記最後に移動させ、
前記着信ファイルのパケットを受け取り、該受け取られたパケットを前記割り当てられた連続領域に記憶する、
ように構成された回路を備える、
ことを特徴とするバッファ管理装置。
【請求項9】
前記パケットストリームは、高度テレビジョンシステムズ委員会(ATSC)3.0デジタルテレビ信号の一部である、
請求項8に記載のバッファ管理装置。
【請求項10】
前記着信ファイルは、前記バッファに記憶された他のファイルと共通するトランスポートセッション識別子(TSI)値を有する階層符号化トランスポート(LCT)チャネルで受け取られ、
対応する異なるTSI値を有するファイルを記憶するために、新規バッファ及び別のマップが初期化される、
請求項9に記載のバッファ管理装置。
【請求項11】
前記マップ内の前記追加されたエントリは、前記着信ファイルの前記ファイル識別子及び前記長さを含む、
請求項8に記載のバッファ管理装置。
【請求項12】
前記回路は、前記着信ファイルの前記受け取られたパケットが、前記着信ファイルに割り当てられた前記バッファ内の前記連続領域を満たすまで、前記マップ内の前記追加されたエントリに不完全とのラベルを付けるようにさらに構成される、
請求項11に記載のバッファ管理装置。
【請求項13】
前記回路は、前記パケットストリームの各着信パケットについて、
対応するファイルのファイル識別子を判定し、
前記対応するファイルの前記ファイル識別子を有し、かつ不完全とのラベルが付いた前記マップ内のエントリが存在するかどうかを判定し、
前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在するとの判定に応答して、
前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域に前記着信パケットを記憶し、
前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるかどうかを判定し、
前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるとの判定に応答して、
前記マップ内の前記エントリに関連する前記不完全ラベルを削除し、
前記マップ内の前記エントリと同じファイル名を有する前記マップ内の他の全てのエントリを削除し、
前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在しないとの判定に応答して、前記着信パケットを新規着信ファイルとして処理する、
ようにさらに構成される、請求項12に記載のバッファ管理装置。
【請求項14】
前記ファイル識別子は、トランスポートオブジェクト識別子(TOI)及びファイル名を含む、
請求項13に記載のバッファ管理装置。
【請求項15】
コンピュータ可読命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記コンピュータ可読命令は、プロセッサによって実行された時に、パケットストリームを介して受け取られたファイルを記憶するための、予め設定されたバイトサイズを有するバッファを管理する方法を前記プロセッサに実行させ、前記方法は、
着信ファイルのファイル識別子及び長さを判定するステップと、
前記着信ファイルが次の書き込み位置と前記バッファの最後との間のスペースに収まらないと判定するステップと、
前記着信ファイルが前記次の書き込み位置と前記バッファの前記最後との間の前記スペースに収まらないとの前記判定に応答して、
前記バッファに記憶された1又は2以上のファイルを識別するマップにおいて、前記バッファの初期書き込み位置から開始する領域に少なくとも部分的に記憶されたファイルに対応し、かつ前記着信ファイルの前記長さに等しいサイズを有する各エントリを削除するステップと、
前記着信ファイルの前記ファイル識別子及び前記長さを含むエントリを、前記バッファ内の前記初期書き込み位置に関連付けて前記マップ内に追加するステップと、
前記バッファ内の前記初期書き込み位置から開始して前記着信ファイルの前記長さに等しい前記サイズを有する前記バッファ内の連続領域を割り当てた後に、前記次の書き込み位置を前記割り当てられた連続領域の前記最後に移動させるステップと、
前記着信ファイルのパケットを受け取り、該受け取られたパケットを前記割り当てられた連続領域に記憶するステップと、
を含む、ことを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項16】
前記パケットストリームは、高度テレビジョンシステムズ委員会(ATSC)3.0デジタルテレビ信号の一部である、
請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記着信ファイルは、前記バッファに記憶された他のファイルと共通するトランスポートセッション識別子(TSI)値を有する階層符号化トランスポート(LCT)チャネルで受け取られ、
対応する異なるTSI値を有するファイルのために、新規バッファ及び別のマップが初期化される、
請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記マップ内の前記追加されたエントリは、前記着信ファイルの前記ファイル識別子及び前記長さを含み、前記ファイル識別子は、トランスポートオブジェクト識別子(TOI)及びファイル名を含む、
請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
前記着信ファイルの前記受け取られたパケットが、前記ファイルに割り当てられた前記バッファ内の前記連続領域を満たすまで、前記マップ内の前記追加されたエントリに不完全とのラベルを付けるステップをさらに含む、
請求項18に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
前記パケットストリームの各着信パケットについて、
対応するファイルのファイル識別子を判定するステップと、
前記対応するファイルの前記ファイル識別子を有し、かつ不完全とのラベルが付いた前記マップ内のエントリが存在するかどうかを判定するステップと、
前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在するとの判定に応答して、
前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域に前記着信パケットを記憶するステップと、
前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるかどうかを判定するステップと、
前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるとの判定に応答して、
前記マップ内の前記エントリに関連する前記不完全ラベルを削除するステップと、
前記マップ内の前記エントリと同じファイル名を有する前記マップ内の他の全てのエントリを削除するステップと、
前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在しないとの判定に応答して、前記着信パケットを新規着信ファイルとして処理するステップと、
をさらに含む、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、着信パケットストリームのパケットをバッファリングしながら限られたメモリリソースの管理を最適化する方法、装置及びコンピュータ可読記憶媒体に関する。
【背景技術】
【0002】
様々なサービス及びアプリケーションは、パケットストリームの受信を伴う。例えば、高度テレビジョンシステムズ委員会(Advanced Television Systems Committee)(ATSC)3.0標準には、放送局が送信チャネルを介して受信機にインターネットプロトコル(IP)パケットを配信する放送方法が規定されている。具体的に言えば、ATSC標準では、ATSC標準A/322-物理層プロトコル(Physical Layer Protocol)(文書A/322:2017、2017年6月6日付)(以下、「A/322標準」)、及びATSC標準A/321-システム発見及びシグナリング(System Discovery and Signaling)(文書A/321:2016、2016年3月23日付)(以下、「A/321標準」)に物理層プロトコルが規定されており、これらの各文書はその全体が引用により本明細書に組み入れられる。これらのプロトコルは、全体が引用により本明細書に組み入れられるATSC標準:リンク層プロトコル(Link-Layer Protocol)(A/330)(文書A/330:2016、2016年9月19日付)(以下、「A/330標準」)におけるリンク層プロトコルと共に実装されて上位層にUDP/IPパケットを配信する。
【0003】
ATSC3.0受信装置の上位層プロトコルは、受信、復調及び下位層処理が行われる下位層からUDP/IPパケットを受け取って解釈し、インターネット通信に共通する多くのプロトコルに基づいて設計される。これらは、全体が引用により本明細書に組み入れられるATSC提案標準(Proposed Standard)A/331(文書S33-331r1、2017年11月7日付)(以下、「A/331標準)に記載されているROUTE(Real-Time Object Delivery over Unidirectional Transport))と呼ばれるファイル配信のための修正されたFile Delivery over Unidirectional Transport:FLUTE)プロトコル、及びインターネット技術特別調査委員会(Internet Engineering Task Force:(IETF))によって開発された他の多くのインターネットプロトコルの使用を含む。A/331標準には、UDP/IPベースのトランスポートプロトコルも規定される。
【0004】
ATSC3.0テレビ受信機は、シグナリングを処理し、パケットを選択し、復号してユーザに提供するために、ストリーミングデータの受信を毎秒数十メガビットの速度で管理することができる。放送ストリーム内で配信されるオブジェクトはファイルである。主にシグナリングデータを搬送するこれらのいくつかは単一のUDP/IPパケットに収まるのに対し、他のものは長さが数メガバイトになることもあり、従って複数のUDP/IPパケットに断片化されて配信される。
【発明の概要】
【発明が解決しようとする課題】
【0005】
ATSC3.0受信機の設計は、メモリに関連する複数の検討事項に対処することができる。例えば、ATSC3.0受信機のメモリは限られており、従ってその動作はメモリ使用を最適化すべきである。別の限られたリソースはCPUサイクルであり、従ってATSC3.0受信機における受信データの記憶及び処理はCPUサイクルの数を最小化すべきである。他の検討事項としては、メモリリークの回避、並びに揮発性メモリから不揮発性メモリへの適切なデータ転送を含む揮発性メモリ(例えば、RAM)及び不揮発性メモリ(例えば、FLASH)の適切な使用が挙げられる。最後に、ATSC3.0受信機は、利用可能なメモリが不十分な場合でも容認できる性能及びユーザ体験をサポートするように設計されるべきである。本開示では、これらの課題に対処する方策について説明する。
【課題を解決するための手段】
【0006】
本開示の実施形態によれば、パケットストリームを介して受け取られたファイルを記憶するための、予め設定されたバイトサイズを有するバッファを管理する方法が提供される。方法は、着信ファイルのファイル識別子及び長さを判定するステップと、着信ファイルが次の書き込み位置とバッファの最後との間のスペースに収まらないと判定するステップとを含む。方法は、着信ファイルが次の書き込み位置とバッファの最後との間のスペースに収まらないとの判定に応答して、バッファに記憶された1又は2以上のファイルを識別するマップにおいて、バッファの初期書き込み位置から開始する領域に少なくとも部分的に記憶されたファイルに対応し、かつ着信ファイルの長さに等しいサイズを有する各エントリを削除するステップを含む。方法は、削除するステップと共に、着信ファイルのファイル識別子及び長さを含むエントリを、バッファ内の初期書き込み位置に関連付けてマップ内に追加するステップと、バッファ内の初期書き込み位置から開始して着信ファイルの長さに等しいサイズを有するバッファ内の連続領域を割り当てた後に、次の書き込み位置を割り当てられた連続領域の最後に移動させるステップとを含む。最後に、方法は、着信ファイルのパケットを受け取り、受け取られたパケットを割り当てられた連続領域に記憶するステップを含む。
【0007】
本開示の実施形態によれば、パケットストリームを介して受け取られたファイルを、予め設定されたバイトサイズを有するバッファに記憶するバッファ管理装置が提供される。バッファ管理装置は、着信ファイルのファイル識別子及び長さを判定し、着信ファイルが次の書き込み位置とバッファの最後との間のスペースに収まらないと判定するように構成される。バッファ管理装置は、着信ファイルが次の書き込み位置とバッファの最後との間のスペースに収まらないとの判定に応答して、バッファに記憶された1又は2以上のファイルを識別するマップにおいて、バッファの初期書き込み位置から開始する領域に少なくとも部分的に記憶されたファイルに対応し、かつ着信ファイルの長さに等しいサイズを有する各エントリを削除するように構成される。バッファ管理装置は、削除すると共に、着信ファイルのファイル識別子及び長さを含むエントリを、バッファ内の初期書き込み位置に関連付けてマップ内に追加し、バッファ内の初期書き込み位置から開始して着信ファイルの長さに等しいサイズを有するバッファ内の連続領域を割り当てた後に、次の書き込み位置を割り当てられた連続領域の最後に移動させるように構成される。最後に、バッファ管理装置は、着信ファイルのパケットを受け取り、受け取られたパケットを割り当てられた連続領域に記憶するように構成される。
【0008】
本開示の実施形態によれば、プロセッサによって実行された時に、パケットストリームを介して受け取られたファイルを記憶するための、予め設定されたバイトサイズを有するバッファを管理する方法をプロセッサに実行させるコンピュータ可読命令を記憶した非一時的コンピュータ可読記憶媒体が提供される。方法は、着信ファイルのファイル識別子及び長さを判定するステップと、着信ファイルが次の書き込み位置とバッファの最後との間のスペースに収まらないと判定するステップとを含む。方法は、着信ファイルが次の書き込み位置とバッファの最後との間のスペースに収まらないとの判定に応答して、バッファに記憶された1又は2以上のファイルを識別するマップにおいて、バッファの初期書き込み位置から開始する領域に少なくとも部分的に記憶されたファイルに対応し、かつ着信ファイルの長さに等しいサイズを有する各エントリを削除するステップを含む。方法は、削除するステップと共に、着信ファイルのファイル識別子及び長さを含むエントリを、バッファ内の初期書き込み位置に関連付けてマップ内に追加するステップと、バッファ内の初期書き込み位置から開始して着信ファイルの長さに等しいサイズを有するバッファ内の連続領域を割り当てた後に、次の書き込み位置を割り当てられた連続領域の最後に移動させるステップとを含む。最後に、方法は、着信ファイルのパケットを受け取り、受け取られたパケットを割り当てられた連続領域に記憶するステップを含む。
【0009】
上述した段落は、概略紹介として示したものであり、以下の特許請求の範囲を限定するものではない。添付図面と併せて行う以下の詳細な説明を参照することにより、説明する実施形態及びさらなる利点が最も良く理解されるであろう。
【0010】
本開示のより完全な理解及びこれに付随する利点の多くは、添付図面と併せて検討する以下の詳細な説明を参照することによってこれらがより良く理解されるようになるにつれて容易に取得されるであろう。
【図面の簡単な説明】
【0011】
図1】例示的なデジタルテレビ放送システムを示す図である。
図2】例示的な受信装置を示す図である。
図3】受信装置において実行される例示的なプロセスを示す図である。
図4】受信装置において実行される例示的な「新規ファイル開始」サブプロセスを示す図である。
図5A】例示的なバッファを示す図である。
図5B図5Aの例示的なバッファに対応するハッシュテーブルを示す図である。
図6A】例示的なバッファを示す図である。
図6B図6Aの例示的なバッファに対応するハッシュテーブルを示す図である。
図7A】例示的なバッファを示す図である。
図7B図7Aの例示的なバッファに対応するハッシュテーブルを示す図である。
図8A】例示的なバッファを示す図である。
図8B図8Aの例示的なバッファに対応するハッシュテーブルを示す図である。
図9A】例示的なバッファを示す図である。
図9B図9Aの例示的なバッファに対応するハッシュテーブルを示す図である。
図10A】例示的なバッファを示す図である。
図10B図10Aの例示的なバッファに対応するハッシュテーブルを示す図である。
図11A】例示的なバッファを示す図である。
図11B図11Aの例示的なバッファに対応するハッシュテーブルを示す図である。
図12A】例示的なバッファを示す図である。
図12B図12Aの例示的なバッファに対応するハッシュテーブルを示す図である。
図13A】例示的なバッファを示す図である。
図13B図13Aの例示的なバッファに対応するハッシュテーブルを示す図である。
図14A】例示的なバッファを示す図である。
図14B図14Aの例示的なバッファに対応するハッシュテーブルを示す図である。
図15】コンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【0012】
本開示は多くの異なる形の実施形態が可能であるが、図面には特定の実施形態を示して本明細書ではこれらについて詳細に説明しており、このような実施形態の開示は本原理の一例とみなすべきであって、図示及び説明する特定の実施形態に本開示を限定することを意図するものではないと理解されたい。
【0013】
本明細書で使用する「1つの(英文不定冠詞)」という用語は、1つ又は1つよりも多くとして定義される。本明細書で使用する「複数の」という用語は、2つ又は2つよりも多くとして定義される。本明細書で使用する「別の」という用語は、少なくとも第2の又はそれ以降のとして定義される。本明細書で使用する「含む(including)」及び/又は「有する(having)」という用語は、「備える(comprising)」(すなわちオープンランゲージ)として定義される。本明細書で使用する「結合される(coupled)」という用語は、「接続される」として定義されるが、必ずしも直接的なものではなく、必ずしも機械的なものでもない。本明細書で使用する「プログラム」又は「コンピュータプログラム」という用語又は同様の用語は、コンピュータシステム上で実行されるように設計された一連の命令として定義される。「プログラム」又は「コンピュータプログラム」は、実行可能アプリケーション、アプレット、サーブレット、ソースコード、オブジェクトコード、スクリプト、プログラムモジュール、共有ライブラリ/動的ロードライブラリ及び/又はコンピュータシステム上で実行するように設計されたその他の一連の命令におけるサブルーチン、プログラムモジュール、スクリプト、関数、手順、オブジェクト方法、オブジェクト実装を含むことができる。
【0014】
本明細書で使用する「プログラム(program)」という用語は、第2の文脈で使用することもできる(上記の定義を第1の文脈とする)。第2の文脈では、この用語は「テレビ番組」の意味で使用される。この文脈では、この用語は、単一のテレビ番組として解釈されて電子番組ガイド(EPG)で伝えられるものなどのいずれかのコヒーレントな一連のオーディオビデオコンテンツを意味するために使用され、このコンテンツが映画、スポーツイベント、連続番組の一部、ニュース放送などのいずれであるかは関係ない。この用語は、EPGでは番組として伝えられないこともあるコマーシャルスポット及びその他の番組様コンテンツを含むと解釈することもできる。
【0015】
本明細書全体を通じて、「1つの実施形態」、「いくつかの実施形態」、「ある実施形態」、「ある実装」、「ある実施例」又は同様の用語に対する言及は、実施形態に関連して説明する特定の特徴、構造又は特性が、本開示の少なくとも1つの実施形態に含まれることを意味する。従って、本明細書を通じて至るところに出現するこのような語句は、必ずしも全てが同じ実施形態を意味するわけではない。さらに、これらの特定の特徴、構造又は特性は、1又は2以上の実施形態においていずれかの好適な方法で無制限に組み合わせることもできる。
【0016】
本明細書で使用する「又は(or)」という用語は、包括的なもの、すなわちいずれか1つ又はいずれかの組み合わせを意味するものとして解釈されたい。従って、「A、B又はC」は、「A、B、C、AとB、AとC、BとC、AとBとC」のうちのいずれかを意味する。この定義に対する例外は、要素、機能、ステップ又は行為の組み合わせが何らかの点で本質的に互いに相容れない場合にのみ生じる。
【0017】
ここで複数の図全体を通じて同一の又は対応する部分を同じ参照数字によって示す図面を参照すると、以下の説明は、受信パケットストリームのファイルを記憶するバッファ管理システムに関する。
【0018】
本開示の実施形態は、テレビ受信装置(例えば、ATSC3.0受信機)において受け取られたファイルを収集して記憶する方法に関する。この方法は、例えばATSC3.0放送送信の特性に基づいてCPUサイクルが最小化されて動作が最適化されるように管理される1又は2以上の循環バッファを使用する。このようなATSC3.0送信の1つの特性は、特定のファイルが頻繁に繰り返される点である。頻繁に繰り返されるファイルの一例は、ストリーミングメディアの各要素(例えば、ビデオエレメンタリストリーム、オーディオエレメンタリストリームなど)の復号を開始するために必要な「初期化セグメント」(IS)ファイルである。
【0019】
本開示の実施形態は、以下の概念に基づく。
(1)例えばA/331標準に規定されるシグナリングによって着信ファイルの長さが予め分かっている。
(2)ファイルの断片を搬送する各パケットが、ファイルの開始からその断片が属するファイル内の地点までのオフセットを示すオフセットパラメータを含む。このオフセットパラメータは、バッファ内のどこに断片を配置すべきであるかを決定するためにテレビ受信装置によって使用されることにより、断片の順不同受信(out-of-order reception)を可能にすることができる。
(3)ファイルが、バッファの非連続領域に分割されることなくバッファの連続バイトに書き込まれる。従って、ファイルの最初がバッファの最後の方に書き込まれて残りのファイルがバッファの先頭に書き込まれるような「ラッピング」が生じない。すなわち、「ラッピング」が生じると、ファイルの部分がバッファの不連続領域に、すなわちバッファの最後及びバッファの最初に存在するようになるので、本開示の実施形態では「ラッピング」が実行されない。
(4)(3)で上述したように「ラッピング」は実行されないが、所与のファイルが現在の書き込み位置とバッファの最後との間のバッファ領域に収まりきらない場合には、バッファの最初の1又は2以上のファイルを削除して場所を空け、現在の書き込み位置をバッファの最初又はその方向に移動できるという意味で、循環的にファイルを書き込むことができる。
(5)各バッファが、ビデオ、オーディオ及びキャプションの復号及び同期提示を維持するために必要な数のファイルを記憶できるように適切にサイズ設定される。
(6)既にバッファ内に存在するファイルの複製物である新規ファイルが受け取られた場合、新規ファイルの最後のバイトがバッファに記憶された後に、先に受け取られたファイルを記憶しているバッファの領域を解放することができる。
【0020】
本開示の実施形態で使用される各循環バッファは、メモリ(例えば、RAM)内の固定された連続するメモリ範囲を占有してファイルオブジェクトを記憶する。各バッファでは、次の新規ファイルの最初のバイトが書き込まれるメモリ位置をポインタ(以下、「次の開始位置」)が識別することができる。各バッファは、割り当てられた固有のバッファ番号と、バッファ内のファイルを表すエントリを記載又は別様に識別する関連するハッシュテーブル(或いは他のテーブル又はデータ構造)とを有する。バッファのハッシュテーブル内の各エントリは、バッファに記憶された1つのファイルに対応し、1つの実施形態では、そのファイルに関する少なくともファイル名、A/331標準に従うファイルの伝送に関連するトランスポートオブジェクト識別子(Transport Object Identifier(TOI)、ファイルの最初のバイトのバッファ内位置、及び総ファイル長といったパラメータを含む。A/331に規定されるトランスポートプロトコルはFLUTEに基づくので、A/331のTOIは、RFC 6726に規定されるFLUTE標準のTOI値と同じ機能を実行する。
【0021】
図1は、テレビコンテンツへのアクセスを提供する例示的なデジタルテレビ放送システム100である。このシステムは、サービスプロバイダ102、受信装置120及び入力装置140を含む。受信装置102は、アンテナを介してデータを受け取るように構成することができる。受信装置102は、データを受け取るためにインターネット130に接続するようにさらに構成することができる。
【0022】
1つの例では、サービスプロバイダ102がテレビコンテンツの放送局であり、受信装置120は、テレビとして動作するように構成された、フラット画面TV、ラップトップ、タブレット又はスマートフォンなどのいずれかの装置とすることができる。入力装置140は、受信装置120に物理的に又は無線で接続することができ、数字キー及び/又は英数字キーを有するリモコン、QWERTYキーボード、或いは受信装置120に適合するアプリケーションを実行するスマートフォンなどの、受信装置120を操作するのに適したいずれかの装置とすることができる。入力装置140のキーは、物理的ボタン、或いはタッチ画面上の数字又は英数字キーのデジタル表現とすることができる。本開示の実施形態は、他の放送コンテンツ(例えば、HTML5アプリケーションなどの実行可能アプリケーション)へのアクセスを提供するために利用することができる。サービスプロバイダ102は、テレビコンテンツを含む放送ストリームを送信し、デジタルテレビ放送信号を介して配信することができる。
【0023】
1つの実施形態では、サービスプロバイダ102(例えば、放送エンティティ又は放送局)が、受信装置120にデータストリーム(例えば、放送ストリーム)でコンテンツ、アプリケーション及び/又はサービスを送信するように構成された送信機を有する送信装置を含むサービス配信システムを運用する。送信機は、例えばデジタル地上波放送を介して受信装置120にデータストリームを提供するように構成される。他の例では、デジタル地上波放送、携帯電話ネットワーク、インターネットなどのブロードバンドネットワーク、ケーブルネットワーク及び衛星リンクのうちの1つ又はこれらの組み合わせを介して受信装置120にデータストリームを送信することができる。サービス配信システムは、いずれか1つの又は様々な送信技術を使用して受信装置120にデータストリームを伝達することができる。
【0024】
1つの実施形態によるサービス配信システムは、ソースエンコーダ、チャネルエンコーダ及び変調器を含む。ソースエンコーダは、ソースから受け取られたオーディオデータ、ビデオデータ、シグナリングデータ、制御データ又はその他のデータを圧縮するデータエンコーダ、オーディオエンコーダ及びビデオエンコーダを含む。チャネルエンコーダは、圧縮されたメディアデータ及びシグナリングデータをランダム化し、インターレース化し、チャネルコード化してフレームマッピングする。例えば、チャネルエンコーダは、多くのデータセルを直行周波数分割多重(OFDM)記号で伝えられるシーケンスに形成するフレームビルダを含む。変調器(例えば、マルチプレクサ)は、処理されたデジタルデータを、例えばOFDM記号とすることができる変調記号に変換する。次に、この多重化されたデータは、周波数領域信号を時間領域信号に変換する逆高速フーリエ変換器(IFTF)に受け渡される。時間領域信号は、記号間のガードインターバル(GI)を生成するガード挿入モジュールに供給された後に、デジタル-アナログ(D/A)コンバータに供給される。その後、アップコンバージョン、RF増幅及びover-the-air放送を実行して放送ストリームを送信する。
【0025】
他の実施形態では、送信装置又は受信装置のいくつかのコンポーネントが不要な場合もある。OFDM送信機及び受信機の詳細は、例えば、DVB-T2標準(ETSI EN 302 755 V1.4.1、2015年7月1日付)(引用により本明細書に組み入れられる)、A/322標準及びA/321標準において見出すことができる。
【0026】
図2に、テレビコンテンツ及び放送局アプリケーションにアクセスするように構成された例示的な受信装置120を示す。受信装置120は、テレビ受像機、セットトップボックス、スマートフォン、タブレットコンピュータ、ラップトップ、ポータブルコンピュータ、又はテレビコンテンツを受け取るように構成された他のいずれかの装置などの固定装置又はモバイル装置とすることができる。さらに、受信装置120は、車両、或いは上述した固定装置又はモバイル装置のうちのいずれかに組み込まれたデジタルテレビ受信機とすることができる。
【0027】
受信装置120は、1又は2以上のサービスプロバイダ102からデータストリーム(例えば、放送ストリーム)を受け取るように構成された受信機回路と、受信装置120の様々な機能を実行するように構成された処理回路とを含む。1つの実施形態では、チューナ/復調器202が、放送ストリームを含む放送排出物(broadcast emissions)を受け取る。これに代えて又はこれに加えて、受信装置200は、実施形態によってはケーブルテレビ送信又は衛星放送を受信するように構成することもできる。
【0028】
チューナ/復調器202によってATSC3.0放送排出物が取得されると、現在説明中の実施形態に従って着信データパケットをワーキングメモリ240にバッファリングすることができる。いくつかの実施形態では、現在説明中の管理法に従ってバッファリングされたいくつかのファイルが、例えば永続ストレージ280、バッファ及びハッシュマップによって占有されていないワーキングメモリ240の部分、又は別のRAMに選択的に移動される。このファイルが上書きされるバッファ以外のメモリへの選択的移動は、後の時点で参照(又は再びアクセス)される可能性があるファイルに適用される。例としては、シグナリングテーブル、及び放送局アプリケーションに関連するファイルが挙げられる。メディアに関連するファイル(例えば、ビデオ、オーディオ及びキャプション)は、これらが受け取られたバッファから直接レンダリングされて提示され、後の時点でこれらを再生できる永続ストレージに移動しないことができる。一方で、パーソナルビデオレコーダ(PVR)機能を実装する受信装置では、メディアファイルがタイムシフト再生のために永続ストレージに移動される。
【0029】
デマルチプレクサ204は、ストレージ280からのいずれかの必要なファイルを使用してデータストリームを多重分離し、多重分離されたデータを、別個のオーディオ及びビデオ(A/V)ストリームに復号するためにメディアエンジン290に供給することができる。メタデータ、低水準シグナリング(LLS)及びサービス層シグナリング(SLS)ファイル、メディアファイル、並びに電子サービスガイド(ESG)ファイルなどの、デマルチプレクサ204によって出力されたファイルは、処理のためにCPU238に提供することができる。オーディオはオーディオデコーダ210によって復号され、ビデオはビデオデコーダ214によって復号される。さらに、利用可能な場合には、非圧縮A/Vインターフェイス(例えば、HDMIインターフェイス)を介して非圧縮A/Vデータを受け取ることもできる。
【0030】
一般に、受信装置200は、1又は2以上のバス(例えば、バス250)を介して永続ストレージ280、ワーキングメモリ240、プログラムメモリ242及びグラフィクスサブシステム244に結合されたCPU238などの少なくとも1つのプロセッサの制御下で動作する。1つの実施形態によれば、CPU238は、受け取ったメディアをユーザに出力するためのユーザインターフェイスを生成するように構成される。グラフィクスサブシステム244によって出力されたグラフィクスは、ビデオディスプレイ上での表示に適した出力を生成する合成器及びビデオインターフェイス260によってビデオ画像と合成される。
【0031】
CPU238は、例えばプログラムメモリ242に記憶されたHTML5ユーザエージェントを使用して放送局アプリケーション(例えば、HTML5アプリケーション)、ネイティブ放送局アプリケーションなどに含まれるスクリプトオブジェクト(制御オブジェクト)を実行することを含む、受信装置200の機能を実行するように動作する。
【0032】
1つの実施形態では、放送局アプリケーションを構成する一群のファイルを、例えば全体が引用により組み入れられるATSC標準A/331(文書A/331:2017、2017年12月6日付)(以下、A/331標準)に記載されているROUTEプロトコルを介して放送を通じてパッケージとして配信することができる。ATSC標準A/344(文書A/331:2017、2017年12月18日付)(以下、「A/334標準」)には例示的な放送局アプリケーションが記載されており、この文書はその全体が引用により組み入れられる。
【0033】
いくつかの実施形態では、CPU238を受信装置120のリソースのうちのいずれか1つ又はこれらの組み合わせに結合して、1又は2以上の機能の制御を集中化させることができる。1つの実施形態では、CPU238が、チューナ/復調器202及びその他のテレビリソースを含む受信装置120の制御を監視するようにも動作する。
【0034】
1つの実施形態では、着信データパケットを通じて受け取られたファイルのバッファリングがCPU238によって制御される。図3を参照しながら、バッファリング管理プロセス300について説明する。このプロセスは、パケットを受け取るステップS30から開始する。このパケットは、初期化されたバッファ及び対応するハッシュテーブルにとっての最初に受け取られたパケットとすることも、或いはパケットストリームで受け取られた後続パケットのうちの1つとすることもできる。
【0035】
最初のパケットを受け取る前者のシナリオでは、所定のバイトサイズのバッファが初期化され、バッファに対応するハッシュテーブルが作成される。初期状態では、バッファ及びハッシュテーブルの両方が空であり、次の開始位置ポインタがバッファの先頭に初期化される。受信機がATSC3.0放送排出物にチューニングしてシグナリングテーブルが検索されると、要求されたサービスに関連する階層符号化トランスポート(Layered Codng Transport:LCT)チャネルが識別される。例えば、LCTチャネルは、A/331標準によって規定されるように、サービスリストテーブル(SLT)と、サービスベースのトランスポートセッションインスタンス記述(Service-based Transport Session Instance Description)(S-TSID)を含むサービス層シグナリング(SLS)テーブルとを使用して識別することができる。
【0036】
各LCTチャネルは、発信元及び宛先のIPアドレス、ポート値及びTSI値の特定の組み合わせに関連する。同じ発信元及び宛先IPアドレス及びポート値のIPパケット内で複数のLCTチャネルを搬送することができる。1つの実施形態では、TSI値が特定のLCTチャネルを区別する。すなわち、受け取られた各LCTチャネルは、LCTチャネルのTSI値を有するパケットを記憶して管理する、対応する初期化されたバッファ及びハッシュテーブルを有する。
【0037】
ATSC A/331標準には、ROUTE/DASH及びMPEG MMTという2つの異なる可能なトランスポートプロトコルが規定されている。本開示によるバッファ管理プロセスの実施形態は、これらの両方のトランスポートプロトコルに適用可能である。MPEG DASH標準は、ISO/IEC 23009-1:2014、「情報技術-Dynamic Adaptive Streaming over HTTP(DASH)-第1部:メディアプレゼンテーション記述及びセグメントフォーマット」、国際標準化機構、2014年5月15日付(以下、「MPEG DASH標準」)に記載されており、この文書の内容は全体が引用により組み入れられる。
【0038】
再び図3のバッファ管理プロセス300のステップS30を参照すると、パケットを受け取った後のステップは、ステップS32における対応するハッシュテーブルを通じた反復である。ハッシュテーブルを通じた反復の目的は、ステップS34において、受信パケットと同じTOI番号を有する不完全とのラベルが付いたハッシュテーブル内のエントリが存在するかどうかを判定することである。いくつかの実施形態では、例えばTOI番号自体が一意的にファイル名を識別しない実施形態では、ステップS34が、同じファイル識別子(例えば、ファイル名及びTOI)を有するハッシュテーブル内のエントリが存在するかどうかを判定することを含む。受信パケットの名前及びTOI番号に一致する不完全とのラベルが付いたハッシュテーブル内のエントリが見つかった場合には、この受信パケットが、既に部分的に受け取られてバッファリングされたファイルのセグメントであることの表れである。従って、このファイルには適切なバッファスペースが割り当てられており、受信パケットは、この割り当てられたバッファスペースに属する。
【0039】
従って、プロセス300のステップS34からのYESの分岐はステップS36に進み、ハッシュテーブル内の見つかったエントリに対応するファイルの割り当てバッファ領域に受信パケットを記憶する。ハッシュテーブル内の見つかったエントリは、このファイルのために割り当てられたスペースの最初のバイトの位置を示す。上述したように、受信パケットは、ファイルの最初から受信パケットの断片が属するファイル内の地点までのオフセットを示すオフセットパラメータを含む。ステップS36では、バッファ内のファイルの最初のバイトの位置に受信パケットのオフセットパラメータを追加することによって、受信パケットのファイル断片に適したバッファ内の位置を決定し、ファイル断片をバッファに記憶することができる。
【0040】
バッファに記憶されたファイルがファイル断片によって完成した場合、完成したファイルに対応するハッシュテーブル内のエントリから「不完全」ラベルが削除される。ファイルの最後のファイル断片が受け取られて、ハッシュテーブル内のエントリから「不完全」ラベルが削除されると、ハッシュテーブルの検索が実行されて、ハッシュテーブル内に同じ名前の別のファイルが既に存在するかどうか、すなわち過去に同じファイルが受け取られてバッファリングされているかどうかが判定される。ハッシュテーブル内でこのような重複エントリが見つかった場合、この重複エントリはハッシュテーブルから削除される。先に受け取られた重複ファイルのバイトはバッファ内に残って消去されないが、このファイルに対応するエントリがハッシュテーブルから削除されることにより、ハッシュテーブルは、先に受け取られた重複ファイルが書き込まれたバッファの領域への参照を含まないようになる。
【0041】
再びステップS34を参照すると、受信パケットのTOI番号に一致する不完全とのラベルが付いたエントリがハッシュテーブル内で見つからない場合には、2つの可能性の一方が示される。受信パケットのTOI番号を有するエントリがハッシュテーブル内に存在しない場合、このパケットは、新規着信ファイルの最初のパケットである。或いは、ハッシュテーブル内に受信パケットと同じTOI番号を有するエントリが存在するが、このエントリに不完全とのラベルが付いていない場合には、同じファイルの以前の送信が過去の時点で完全にバッファリングされており、受信パケットがこのファイルの新たな送信の最初のパケットであることの表れである。
【0042】
上記のいずれの場合にも、受信パケットのTOI番号に一致する不完全とのラベルが付いたハッシュテーブル内のエントリが見つからなかったことを示すステップS34のNOの分岐では、ステップS38において新規ファイルを開始するプロセスが実行される。この新規ファイルを開始するプロセスを、図4を参照しながら新規ファイル開始動作400として説明する。
【0043】
新規ファイル開始動作は、ステップS40から開始してステップS41に進み、新規ファイルがバッファ内の残りのスペースに収まるかどうかを判定する。この判定を行うために、例えばA/331標準において上述したように、シグナリングを通じて予め受け取られている新規ファイルのサイズを次の開始位置ポインタのバイト位置に追加する。結果として得られた位置がバッファの最後を越えている場合には、ステップS41において、最初にさらなるスペースを利用可能にしない限り新規ファイルがバッファの残りスペースに収まらないと判定される。次の開始位置ポインタの位置とバッファの最後との間の残りのバッファ領域よりも新規ファイルのサイズの方が大きい場合、作成されるスペースはバッファの先頭から取られる。
【0044】
一方で、次の開始位置ポインタのバイト位置に新規ファイルのサイズを追加することによって得られる位置がバッファの最後を越えない場合には、ステップS41において、ハッシュテーブル内のエントリを削除する必要なく新規ファイルがバッファ内の残りスペースに収まると判定される。この場合、プロセスはステップS46に進み、新規ファイルの範囲がハッシュテーブル内にリストされる他のファイルに重なり合うかどうかを判定する。
【0045】
ステップS41において、ファイルが次の開始位置とバッファの最後との間に収まると判定されたので、ステップS46では、次の開始位置ポインタからファイルの書き込みが開始することが分かっている。従って、ステップS46における新規ファイルの範囲は、次の開始位置から開始して新規ファイルの長さに及ぶ。ステップS46では、この新規ファイルの範囲を考慮して、ハッシュテーブルにリストされたいずれかの(単複の)ファイルが新規ファイルの範囲に重なり合うかどうかを判定する。このプロセスでは、ハッシュテーブル内の各エントリの割り当てられた連続バッファ領域が、ファイルの最初のバイト位置のハッシュテーブルフィールドに示されるバイト番号から開始して、ハッシュテーブルエントリのファイル長フィールドに等しい長さであると判定される。次に、各それぞれのハッシュテーブルエントリの関連する連続バッファ領域が新規ファイルの範囲に重なり合うかどうかが判定される。換言すれば、ステップS46は、仮に新規ファイルがバッファに記憶された場合に、ハッシュテーブルにリストされたいずれかの(単複の)ファイルが部分的に又は全体的に上書きされるかどうかを判定する。
【0046】
ステップS46において、新規ファイルの範囲がハッシュテーブル内のファイルに重なり合わないと判定された場合、プロセスはステップS47に進んで、次の開始位置から開始される新規ファイルのためにバッファ内の領域が割り当てられる。ステップS47の割り当ての一部として、シグナリングを通じて予め受け取られていてステップS30において受け取られたパケットに含まれている新規ファイルに関する情報に基づいて、ハッシュテーブル内で新規エントリが作成される。例えば、ファイル名、ファイルのTOI及びファイル長がハッシュテーブル内に1つのエントリとして追加される。ファイルの最初のバイトの位置は、次の開始位置ポインタの現在位置としてハッシュテーブル内に追加される。最後に、ステップS30において受け取られたパケットがファイル全体を含んでいない場合、ハッシュテーブル内の新規エントリに不完全とのラベルが付けられる。
【0047】
従って、ステップS47では、ハッシュテーブル内の作成されたエントリに基づいて、バッファ内の領域が新規ファイルのために割り当てられる。割り当てバッファ領域は連続し、次の開始位置ポインタの現在位置から開始する。割り当てバッファ領域のサイズは、新たに作成されたハッシュテーブルエントリに示されるファイルの長さである。ステップS47においてバッファ内の領域が割り当てられると、ステップS48において、次の開始位置ポインタの位置が割り当て領域の最初から割り当て領域の最後に移動し、或いは新規ファイルがバッファの最後までぴったりと埋まる場合にはバッファの先頭に移動する。本開示で使用する「バッファの先頭」は、バイト0又はそれに近接する別の位置とすることができるバッファの最初に近い位置を示す。
【0048】
次に、ステップS49において、ステップS30において受け取られたパケットを割り当て領域に記憶する。ステップS30において受け取られたパケットは、必ずしも新規ファイルの最初の断片を搬送しているわけではないので、ステップS49では、ステップS36のものと同じオフセット判定が実行される。すなわち、受信パケットは、ファイルの最初から受信パケットの断片が属するファイル内の地点までのオフセットを示すオフセットパラメータを含む。ステップS49では、バッファ内のファイルの最初のバイトの位置に受信パケットのオフセットパラメータを追加することによって、受信パケットのファイル断片に適したバッファ内の位置を決定し、このファイル断片をバッファに記憶することができる。
【0049】
再びステップS46を参照すると、ステップS46において、ハッシュテーブルに記憶された(単複の)ファイルの割り当てバッファ領域に新規ファイルの範囲が重なり合うと判定された場合には、このステップのYES分岐をたどる。上述したように、新規ファイルの範囲は、次の開始位置から開始して新規ファイルの長さに及び、ハッシュテーブル内の各ファイルの割り当てバッファ領域は、ハッシュテーブルに記憶された情報に基づいて決定することができる。ハッシュテーブル内の少なくとも1つのファイルの割り当てバッファ領域が新規ファイルの範囲に重なり合うことが判明した場合、ステップS50が実行される。ステップS50において、新規ファイルの範囲に重なり合うことが判明したハッシュテーブル内の(単複の)ファイルをハッシュテーブルから削除する。これにより、プロセスは、新規ファイルの割り当て領域に重なり合うエントリをハッシュテーブル内に有することなく、新規ファイルにバッファ領域を割り当てるためのステップS47に進むことができる。その後、上述したようにステップS48及びS49が実行される。
【0050】
再びステップS41を参照すると、新規ファイルがバッファ内の残りスペースに収まらないと判定された場合には、このステップのNO分岐をたどる。上述したように、この判定は、次の開始位置ポインタのバイト位置とバッファの最後との間に残っているバッファ領域よりも新規ファイルのサイズの方が大きい場合に行われる。この場合、ステップS42において「スペース作成」動作が実行される。
【0051】
ステップS42では、ステップS41においてバッファ内の残りスペースに新規ファイルが収まらないと判定された結果として、スペース作成動作を開始する。従って、新規ファイルの範囲は、バッファの最初又はバッファの最初の方の初期書き込みバッファ位置から開始して、新規ファイルの長さに及ぶ。新規ファイルの範囲は、連続ブロック内でこの開始地点から新規ファイルの長さに及ぶ。
【0052】
上述したように、いくつかの実施形態では、必ずしもバッファの最初ではないとしても新規ファイルの長さを収容できる初期書き込みバッファ位置に新規ファイルが書き込まれる。上述したように、「バッファの先頭」は、バイト0又はそれに近接する別の位置とすることができるバッファの最初に近い位置を示すために使用される。すなわち、いくつかの実施形態における新規ファイルの範囲は、バイト0からではなく他の何らかの初期書き込みバッファ位置から開始して新規ファイルの長さに及ぶ。1つの実施形態では、新規ファイルの範囲が、新規ファイルを記憶するために上書きされるべきである以前に記憶されたファイル又は一群のファイルの最初のバイトに対応するバイト番号から開始する。別の実施形態では、新規ファイルの範囲が、新規ファイルを記憶するために必要なさらなるバイト数だけ次の開始位置を移動させることによって決定されるバイト番号から開始する。
【0053】
次に、ステップS43において、新規ファイルの範囲に重なり合うハッシュテーブル内の各エントリを識別する。ステップS41において、新規ファイルがバッファの残りスペースに収まらないことが判明しているので、上述したように、新規ファイルの範囲は、バッファの先頭又はその付近に存在し得る初期書き込みバッファ位置から開始して新規ファイルの長さに及ぶ。
【0054】
ステップS43では、ハッシュテーブル内の各エントリについて、バッファ内のファイルの関連する連続領域が、ハッシュテーブルフィールドに示されるファイルの最初のバイトの位置のバイト番号から開始して、ハッシュテーブルエントリのファイル長フィールドに等しい長さであると判定される。次に、各それぞれのハッシュテーブルエントリの関連する連続バッファ領域が新規ファイルの範囲に重なり合うかどうかが判定される。換言すれば、ステップS43は、仮に新規ファイルがバッファに記憶された場合に部分的に又は全体的に上書きされる、ハッシュテーブルにリストされた全てのファイルを識別する。
【0055】
ステップS44において、ステップS43において識別された全てのハッシュテーブルエントリをハッシュテーブルから削除する。このステップは、新規ファイルを書き込むことによって、ハッシュテーブルから削除されるエントリを有するファイルを部分的に又は全体的に上書きすることに備えて行われる。
【0056】
ステップS44が完了すると、プロセスはステップS45に進み、初期書き込み位置から開始するバッファ内の領域が新規ファイルに割り当てられる。ステップS45における割り当ての一部として、ハッシュテーブル内で新規エントリが作成される。シグナリングを通じて予め受け取られていてステップS30において受け取られたパケットに含まれている新規ファイルに関する情報に基づいて、ファイル名、ファイルのTOI及びファイル長がハッシュテーブル内に新規エントリとして追加される。新規エントリでは、初期書き込み位置がファイルの最初のバイトの位置として示される。上述したように、いくつかの実施形態では、バッファ容量を最適化するために、初期書き込み位置がバッファの先頭に配置される。他の実施形態では、初期書き込み位置とバッファの最後との間のスペースが新規ファイルのサイズを収容できる限り、初期書き込み位置が別のバッファ位置に配置される。最後に、ステップS30において受け取られたパケットがファイル全体を含んでいない場合、ハッシュテーブル内の新規エントリに不完全とのラベルが付けられる。
【0057】
ステップS45が完了すると、ステップS48において、次の開始位置ポインタの位置を割り当て領域の最後に移動させ、ステップS49において、ステップS30で受け取られたパケットを割り当て領域に記憶する。上述したように、ステップS49では、バッファ内のファイルの最初のバイトの位置(この位置は、ステップS47においてバッファ領域が割り当てられた場合には次の開始位置ポインタの位置であり、或いはステップS45においてバッファ領域が割り当てられた場合には初期書き込み位置である)に受信パケットのオフセットパラメータを追加することによってパケットの「順不同」受信に対応する。ステップS49では、このような追加に従って受信パケットのファイル断片に適したバッファ内の位置を決定し、ファイル断片をバッファに記憶することができる。
【0058】
次に、図3及び図4を参照しながら上述したプロセスによるバッファ及びハッシュテーブルの動作例を示す。図5A及び図5Bに、バッファ及び対応するハッシュテーブルの初期状態を示す。この例では、バッファの所定のバイトサイズが20,000,000バイトである。いくつかの実施形態では、バッファがRAM内の連続するメモリブロックである。図5Aの初期化状態では、次の開始位置ポインタの位置がバッファの先頭である。以下の例における0~20,000,000のバイト番号は、バッファの連続するメモリブロック内の相対的位置を示すものであり、バッファが配置されるRAM内の絶対的メモリアドレス又は位置を示すものではない。
【0059】
上述したように、初期化されたバッファ及びハッシュテーブルは、同じTSI値のパケットを有する受け取られたLCTチャネルに対応する。この図5A及び図5Bの例では、選択されたサービスが、3つのLCTチャネルを定めるROUTEセッションを含む。この例では、サービスのビデオコンポーネントのファイルが、TSI値443に関連するLCTチャネルで伝送されて、図5Aの初期化済みバッファにバッファリングされる。いくつかの実施形態では、TSI値がハッシュテーブル識別子に含まれる。
【0060】
図6A及び図6Bに、ファイルに関するシグナリングを受け取って処理することによって導出された「ch4-2-v00392.mp4」という名前のビデオDASHメディアセグメントファイルに関する情報に基づいてプロセス300を実行した結果を示す。1つの実施形態では、シグナリングが、選択されたサービスに関連するS-TSIDにおいて見出される、A/331標準による拡張ファイル配信テーブル(Extended File Delivery Table:EFDT)である。図6Aの例示的な実施形態では、このファイルを搬送するパケットがバッファに記憶され始めている。
【0061】
ファイルch4-2-v00392.mp4に対応する最初に受け取られるパケットについては、ハッシュテーブルが依然として図5Bの初期化状態にあり、ファイルch4-2-v00392.mp4と同じTOI番号を有する不完全なエントリが存在しないので、ステップS34の判定はNOである。バッファは図5Aの初期化状態にあるので、新規ファイル動作400では、ステップS41において、ファイルがバッファ内の残りスペースに収まると判定される。図6Bには、ファイルの受信前の次の開始位置ポインタの位置であったバイト0にファイルの最初のバイトが記憶されており、ファイルの長さが5,000,000バイトであることを示す、このファイルの新規エントリの作成を示す。
【0062】
図6Aには、(TOI=392によって示す)バッファ内の領域が新規ファイルに割り当てられて、次の開始位置の位置が割り当て領域の最後(すなわち、バイト5,000,000)に移動したバッファの状態を示す。割り当て領域の網掛け部分は、ファイルを搬送するいくつかのパケットが受け取られてバッファに記憶されたが、未だファイルが完全でない状態を示す。
【0063】
図6Bに示すように、最初に、ファイルに関連する全てのバイトが取り出されるまでは、シグナリングで(例えば、EFDT.FDT-Instance,File@Content-Locationで)受け取られたファイル名文字列が、「.new」が添付された状態でハッシュテーブルに保存される。「.new」の存在は、ハッシュテーブルのエントリを不完全なものとして示す方法であり、バッファ内の受信が不完全なファイルをハッシュテーブル内のエントリが表していることを示す。ファイルの受信が完了していないことを示すには、別の識別子を添付し、又はハッシュテーブルに別のパラメータを追加することもできる。
【0064】
従って、図6Bのハッシュテーブルは、この時点でこのファイルの不完全なエントリを含んでいるので、ファイルを搬送する全ての後続の(すなわち、最初に受け取られたものではない)パケットの処理では、ステップS34において、一致するTOIを有するハッシュテーブル内の不完全なエントリが見つかる。従って、ファイルを搬送する後続の受信パケットは、ステップS36に従って、図6Aに示す割り当て領域に記憶される。
【0065】
ファイルの最後のバイトが受け取られると、ハッシュテーブル内でファイル名の「.new」部分が削除され、最初のバイトの記録位置においてファイルにアクセスできるようになる。ファイル名の「.new」部分が削除されることによってファイルに完全とのラベルが付けられると、ハッシュテーブル内に同じファイル名の別のエントリが存在するかどうかを調べるチェックが行われる。複製物が見つかった場合には、上述したようにハッシュテーブル内の同じファイル名を有する以前のエントリが削除される。1つの実施形態では、新バージョンのファイルが旧バージョンとは異なるTOI番号を有する。
【0066】
図7A及び図7Bの例示的な実施形態では、第1のファイル(ch4-2-v00392.mp4)の受け取りが完全に完了しており、このことは、ファイル名の最後に「.new」が存在せず、バイト0~5,000,000の割り当てバッファ領域が完全な網掛け状態であることによって示される。例えばEFDTを解析することによって、第2のファイルに関する情報が発見されている。
【0067】
第2のファイルの最初の受信パケットについても、上記と同様にプロセス300が実行される。第2のファイルの長さは、7,000バイトとして伝えられる。第2のファイルの最初の受信パケットについては、ステップS34における回答がNOであり、新規ファイル動作400が実行される。ステップS41において、第2のファイルの7,000バイトが、全てバッファの最後を越えることなくバッファ内に収まると判定される。ステップS46において、新規ファイルの範囲がハッシュテーブル内のいずれのファイルにも重なり合わないと判定される。従って、第2のファイルに対応するエントリがハッシュテーブルに追加される。図7Bには、第2のファイルが完全に受け取られた後のハッシュテーブルの状態を示しており、従って第2のファイルに対応するエントリはファイル名の最後の「.new」で不完全としてラベル付けされていない。第2のファイルの最初のバイトは、図6Aに示すように第2のファイルを受け取る前の次の開始位置ポインタの位置であったバイト5,000,000に存在する。図7Aに示すように、第2のファイルにバッファスペースを割り当てた後には、次の開始位置ポインタの位置が、第2のファイルに割り当てられたバッファスペースの最後であるバイト5,007,000に移動する。
【0068】
第2のファイル「ch4-2-v-init.mp4」は、サービスのビデオエレメンタリストリーム要素のための初期化ファイル(すなわち、初期化セグメント)である。いくつかの実施形態では、何時でもストリームに参加する可能性がある受信装置へのアクセスを容易にするために、このような初期化ファイルがパケットストリーム内で頻繁に繰り返される。いくつかの実施形態では、初期化ファイルの利用可能性を常に確実にするために、バッファのサイズが、いかなる時点でも初期化ファイルを記憶できるほど十分に大きく設定される。例えば、バッファのサイズは、初期化ファイルの繰り返し率及びファイルストリームの他の要因を考慮して、次の初期化ファイルが受け取られてバッファに記憶される際に以前に受け取られた初期化ファイルがまだ上書きされていないようなサイズに設定することができる。いくつかの実施形態では、受信機を、着信放送ファイルのサイズに基づいてバッファサイズを動的に変化させるように構成することができる。いくつかの実施形態では、初期化ファイルをメモリの別の部分に移動させることによって、初期化ファイルが常に利用可能であって上書きされないことを保証することができる。
【0069】
次に、この例示的な実施形態では、放送ストリーム内で第3のファイルに関連するパケットが発見されて処理される。第3のファイルは、「ch4-2-v00393.mp4」という名称の後続のビデオメディアセグメントである。長さは、4,000,000バイトとして伝えられる。ファイルch4-2-v00393.mp4に対応する最初に受け取られるパケットについては、ハッシュテーブルが依然として図7Bの状態にあり、ファイルch4-2-v00393.mp4と同じTOI番号を有する不完全なエントリが存在しないので、ステップS34の判定はNOである。バッファは図7Aに示す状態にあり、次の開始位置ポインタとバッファの最後との間のスペースは第3のファイルの4,000,000バイト長よりも大きいので、新規ファイル動作400では、ステップS41において、第3のファイルがバッファの残りスペースに収まると判定される。また、ステップS46において、この新規ファイルの範囲はハッシュテーブル内のいずれのファイルにも重なり合わないと判定される。図8Bに、第3のファイルの受信前の図7Aの次の開始位置ポインタの位置であったバイト5,007,000にファイルの最初のバイトが記憶されたことを示す、追加された第3のファイルの新規エントリを示す。
【0070】
図8Aには、(TOI=393によって示す)バッファ内の領域が新規ファイルに割り当てられて、次の開始位置の位置が割り当て領域の最後(すなわち、バイト9,007,000)に移動したバッファの状態を示す。割り当て領域の網掛け部分は、ファイルを搬送するいくつかのパケットが受け取られてバッファに記憶されたが、未だファイルが完全でない状態を示す。
【0071】
従って、図8Bのハッシュテーブルは、この時点でこのファイルの不完全なエントリを含んでいるので、第3のファイルを搬送する全ての後続の(すなわち、最初に受け取られたものではない)パケットの処理では、ステップS34において、一致するTOIを有するハッシュテーブル内の不完全なエントリが見つかる。従って、第3のファイルを搬送する後続の受信パケットは、図8Aに示す割り当て領域にステップS36に従って記憶される。
【0072】
次に、この例示的な実施形態では、本実施形態のバッファ及びハッシュテーブルに対応するLCTチャネル(TSI=443)において、第2のファイル(ch4-2-v-init.mp4)の反復インスタンスを搬送するパケットが発見される。この新規ファイルは、そのファイル名が第2のファイルのものと同じであって、両ファイルのTSI/TOI値も同じであるため、第2のファイルの繰り返しであると識別される。新たに受け取られたファイルが第2のファイルの更新バージョンである場合には、ファイル名は同じであるがファイルのTOI番号が異なる。
【0073】
それにもかかわらず、1つの実施形態では、この新規ファイルの最初の受信パケットについてプロセス300が実行される。第2のファイルの長さは、7,000バイトとして伝えられる。第2のファイルの最初の受信パケットについては、新規ファイルと同じTOI番号(すなわち、2)を有するハッシュテーブルエントリに不完全とのラベルが付けられていないので、ステップS34における回答はNOであり、従って新規ファイル動作400が実行される。
【0074】
上述したように、受信機のいくつかの実施形態は、繰り返される初期化ファイルの利用可能性を常に必要とする。後述するように、このような実施形態では、初期化ファイルの新たな各コピーが受け取られてバッファリングされ、以前にバッファリングされた複製物が削除される。別の実施形態では、ファイルの利用可能性を確実にするために、初期化ファイルをバッファ外の別のメモリ部分に移動させることができる。初期化ファイルの利用可能性を常に必要としない他の実施形態では、重複する受信ファイルが記憶されず、同じTOI番号を有するハッシュテーブルエントリに対応する以前にバッファリングされたファイルが保持される。他の実施形態では、受信ファイルが不要であって受信装置によって読み出されないとの判定に応答して、重複する受信ファイルが記憶されない。
【0075】
ステップS41において、第2のファイルの7,000バイトが、全てバッファの最後を越えることなくバッファ内に収まると判定される。ステップS46において、新規ファイルの範囲が、既にハッシュテーブル内に存在するいずれのファイルにも重なり合わないと判定される。従って、新規ファイルに対応するエントリが、第4のエントリとしてハッシュテーブルに追加される。図9Bには、新規ファイルのいくつかのパケットが受け取られた後のハッシュテーブルの状態を示すが、未だ全てのバイトが受け取られたわけではなく、従って新規ファイルに対応するエントリはファイル名の最後の「.new」で不完全としてラベル付けされていない。図8Aに示すように、新規ファイルの最初のバイトは、第2のファイルを受け取る前の次の開始位置ポインタの位置であったバイト9,007,000に存在する。
【0076】
図9Aに示すように、新規ファイルにバッファスペースを割り当てた後には、次の開始位置ポインタの位置が、割り当てられたバッファスペースの最後であるバイト9,014,000に移動する。繰り返されるch4-2-v-init.mp4ファイルの最後のバイトが受け取られた時点で、上述したようにハッシュテーブル内の各エントリがチェックされて、既にハッシュテーブル内に同じ名前のファイルが存在するかどうかが判定され、ハッシュテーブル内の識別された以前のエントリが削除される。
【0077】
図10Aに、繰り返されるch4-2-v-init.mp4ファイルが完全に受け取られてバッファに記憶される例示的な実施形態を示す。繰り返されるch4-2-v-init.mp4ファイルが完了すると、図9Bのハッシュテーブル内の第2のエントリは、新たに受け取られたファイルの複製物として識別される。従って、図10Bに示すように、このファイルの最初のインスタンスは削除される。この時点で、例示的な実施形態では、受信装置がファイルch4-2-v-init.mp4を参照する必要がある場合、ハッシュテーブルは、このファイルがバッファのバイト9,007,000から開始して記憶されていることを示し、受信装置は、受け取られた最新のファイルのコピーを参照するようになる。
【0078】
図10Aでは、ch4-2-v-init.mp4ファイルの最初のコピーを記憶していたバッファの領域(すなわち、バイト5,000,000とバイト5,007,000との間の領域)を、このファイルのバイトがバッファに残っていることを示すように(前回と同様に)網掛けで示す。バイトは消去されていないが、ハッシュテーブルには単純にこのバッファ領域への参照が存在しない。
【0079】
次に、図11A及び図11Bの例示的な実施形態では、第3のメディアセグメントファイル(ch4-2-v00394.mp4)及び別の初期化セグメント(ch4-2-v-init.mp4)が受け取られてバッファリングされている。上述したように、新規ファイル動作400のステップS41では、新規着信ファイルの最初のパケットに遭遇する度に、次の開始位置から開始するバッファに完全なファイルが収まるかどうかの判定が行われる。図11Aに示すように、これらの2つの新規ファイルはバッファ内の残りスペースに収まり、従って各ファイルについてのステップS41における回答はYESである。また、これらのファイルの範囲は、ハッシュテーブルに記憶された他のいずれのファイルにも重なり合わず、従ってステップS46における回答はNOである。また、上述したように、繰り返される初期化セグメント(又はいずれかの繰り返されるファイル)を受け取ることは、新たな繰り返されるファイルを完全に受け取る際に、以前に受け取られたファイルのエントリをハッシュテーブルから削除することを伴う。この例示的な実施形態では、ハッシュテーブルが順序付けられておらず、従ってハッシュテーブル内のあらゆる位置に対してエントリの追加及び削除を行うことができる。
【0080】
図11Aの例示的な実施形態では、バッファがほぼ満杯である。この例示的な実施形態では、第4のメディアセグメントファイルのパケットが見つかり、EFDTは、このファイルが5,500,000バイトの長さを有することを示す。第4のファイルの最初の受信パケットについては、新規ファイルと同じ名前及び同じTOI番号(すなわち、395)を有する、或いはいくつかの実施形態では同じTOI番号のみを有するエントリがハッシュテーブル内に存在しないので、ステップS34における回答はNOであり、従って新規ファイル動作400が実行される。
【0081】
しかしながら、この例示的な実施形態では、ステップS41において、ファイルがバッファ内の残りスペースに収まらないと判定される。この判定が行われる理由は、本実施形態では15,021,000バイトに存在する次の開始位置ポインタの位置に5,500,000バイトであるファイル長さが追加されると、20,000,000バイトのバッファサイズを超えるからである。従って、ステップS43のスペース作成動作が実行されてスペースが作成される。
【0082】
ステップS42から開始するスペース作成動作は、バッファ内の古いファイルが有用性を失っており、従ってこれらを廃棄できるとの認識に基づく。ステップS43及びS44では、ハッシュテーブル内の各エントリが検査され、着信ファイルが次の開始位置ではなく初期書き込み位置に記憶されると仮定して、対応するファイルのいずれかのバイトが着信ファイルによって占有される予定のスペースに重なり合う場合にエントリが削除される。
【0083】
この例示的な実施形態では、最初の2つのメディアセグメント(TOI=392及び393)が、バッファの最初の5,500,000バイト内に完全に又は部分的に含まれている。従って、ステップS43においてハッシュテーブル内のこれらの両エントリが識別され、ステップS44において削除される。その後、初期書き込み位置から開始するバッファ領域が新規ファイルに割り当てられ、新規ファイルのための新たなハッシュテーブルエントリが作成され、受信装置は、この時点でch4-2-v00395.mp4という新規ファイルのパケットを初期書き込み位置から記憶し始めることができる。
【0084】
図12Aの例示的な実施形態では、新規ファイルが受け取られてバッファリングされている最中である。図12Aには、ハッシュテーブルエントリが削除されたいくつかのファイル又はその一部のバイトが新規ファイルの受信パケットによって上書きされるまでバッファ内に存在することを反映するように、これらのファイルを示す。図12Bには、ステップS43で識別されたメディアセグメントファイルが削除され、2つの以前に追加されたファイルが残っており(TOI=2及び394)、新規ファイルであるch4-2-v00395.mp4が「.new」というファイル名の拡張子で不完全として示されている、対応するハッシュテーブルの図を示す。
【0085】
この例を続けると、図13A及び図13Bの例示的な実施形態には、長さが2,000,000バイトである別のメディアセグメントファイルの到着を示す。この新規ファイルは、バイト5,500,000における次の開始位置ポインタとバッファの最後との間のバッファスペースに収まり、従ってステップS41における回答はYESである。次に、この新規ファイルは、バイト5,500,000における次の開始位置ポインタと、オフセット9,014,000に記憶されたファイルの開始との間のバッファスペースに収まると判定され、従ってステップS46における回答はNOである。図13Aにはバッファを示し、図13には新規ファイルが完全に記憶された後のハッシュテーブルを示す。
【0086】
次に、図14A及び図14Bの例示的な実施形態では、長さが5,000,000バイトであるメディアセグメントファイルに遭遇している。 このファイルは、バッファ内に収まる(例えば、次の開始位置+5,000,000の値が20,000,000を超えない)が、ファイルの範囲(次の開始位置+5,000,000)がファイルch4-2-v00394.mp4に割り当てられたスペースに重なり合うので、ステップS46の判定の回答はNOである。従って、ステップS50において、ファイルch4-2-v00394.mp4がハッシュテーブルから削除される。図14Aには、新規ファイルch4-2-v00397.mp4が部分的に記憶された時のバッファを示す。図14Bには、ファイルch4-2-v00394.mp4が削除され、新規ファイルch4-2-v00397.mp4に不完全とのラベルが付けられた、図14Aに対応するハッシュテーブルの状態を示す。
【0087】
上述した例示的な実施形態を要約すると、ファイルに対応する受信パケットの処理は、最初にファイルのLCTチャネルに対応するハッシュテーブル内のエントリを通じて反復し、TOI/ファイル名の一致を検索することである。一致が見つかってファイル名に不完全とのラベルが付いている場合、受信パケットは、このファイルを記憶する予定であるメモリ領域内の適切な位置に記憶される。パケットの位置は、ファイルの最初に対するパケットの位置を示す、パケットに含まれるオフセットによって決定される。バッファに記憶されたファイルがパケットによって完成する場合、ハッシュテーブル内のファイルのエントリから「不完全」ラベルが削除され、同じファイルに対応するハッシュマップ内のいずれかの以前のエントリが削除される。TOI/ファイル名の一致が見つからない場合には、「新規ファイル開始」動作が実行される。
【0088】
新規ファイル開始動作の例示的な実施形態は、最初にバッファ内の残りスペースにファイルが収まるかどうかを判定することとして要約することができる。次の開始位置+ファイル長であるファイルの範囲がバッファのサイズを超える場合、回答はNOであり、この場合は「スペース作成」動作が実行される。そうでなければ、回答はYESである。新規ファイルがバッファ内の残りスペースに収まると判定された場合には、次の開始位置+ファイル長である新規ファイルの範囲が、ハッシュテーブルにリストされたいずれかのファイルに重なり合うかどうかが判定される。重なり合う場合、このようなファイルは削除される。その後、次の開始位置における新規ファイルの割り当てバッファ領域を示す新規エントリがハッシュテーブル内で作成され、次の開始位置が割り当てバッファ領域の最後に移動され、ファイルの最初のバイト位置に対するバッファ内の対応する位置にパケットが記憶される。新規ファイルがその断片を含むパケットによって完成しない場合には、ハッシュテーブル内に作成された新規エントリに不完全とのラベルが付けられる。新規ファイルがバッファ内の残りスペースに収まらないと判定された場合には、スペース作成動作が実行される。
【0089】
例示的な実施形態では、「スペース作成」動作が、ハッシュテーブル内の各エントリについて、エントリに対応するそれぞれのファイルが、初期書き込み位置から開始して新規ファイルの長さに及ぶ新規ファイルの範囲に重なり合うかどうかを判定する。所与のハッシュテーブルエントリによって占められるバッファ領域は、エントリの最初のバイト位置及びファイル長に基づいて決定することができる。
【0090】
スペース作成動作の例示的な実施形態では、新規ファイルの範囲に重なり合うことが判明したハッシュテーブル内のエントリがいずれもハッシュテーブルから削除され、ハッシュテーブル内に新規ファイルのためのエントリを作成することを含め、初期書き込み位置から開始するバッファ領域が新規ファイルに割り当てられる。未だファイルの全てのバイトが受け取られていない場合、ハッシュテーブル内の新規エントリには不完全とのラベルが付けられる。
【0091】
新規ファイル開始動作の例示的な実施形態におけるバッファスペースの割り当て後、次の開始位置は割り当てバッファスペースの最後に移動し、新規ファイルに属する受信パケットは、上述したようにそのオフセットに従って割り当てバッファスペース内に配置される。
【0092】
上述した着信パケットを処理する例示的な実施形態は、ファイルのパケットが順番に受け取られない場合にも、ファイルを正しく受け取ってバッファリングすることができる。例えば、ファイルによっては、ファイルの内容を配信するパケットが一定期間にわたって連続的に繰り返される「カルーセル」で放送されるものもある。このような実施形態では、1日を通して5分のスパンで大容量ファイルが繰り返されることがある。受信装置が初めてチューニング行う場合、受信装置によって受け取られる最初のパケットがファイルの最初のバイトを含む可能性は低い。しかしながら、上述した実施形態によれば、受信装置は、たとえ受け取った最初のパケットがファイルの最初のパケットでない場合でもファイルをバッファリングすることができる。
【0093】
この機能性が達成される理由は、ATSC A/331標準による各トランスポートパケットが各LCTパケット内にstart_offsetと呼ばれるフィールドを含むからである。例示的な実施形態で上述したように、受信装置は、このオフセットフィールドを使用して、いずれかのパケットのバイトをファイルの最初のバイトのバッファ内位置に対してバッファ内のどこに記憶すべきかを決定する。従って、ファイルのパケットが受け取られると、たとえパケットが順不同で受け取られた場合でも、これらのパケットは、そのファイルに割り当てられたバッファ領域内に正しい順序で配置され、最終的に割り当て領域がパケットで満たされてバッファ内でファイルが再構成されるようになる。
【0094】
図15は、受信装置及びサービス配信システムのいずれか一方又はこれらの組み合わせの機能を実行するように構成できるコンピュータのハードウェア構成の例を示すブロック図である。例えば、1つの実施形態では、コンピュータが、本明細書で受信装置120に関して説明した機能のうちの1つ又はこれらの組み合わせを実行するように構成される。
【0095】
図15に示すように、コンピュータは、1又は2以上のバス1208を介して互いに相互接続されたCPU1202、ROM(リードオンリメモリ)1204及びRAM(ランダムアクセスメモリ)1206を含む。1又は2以上のバス1208は、入力-出力インターフェイス1210にさらに接続される。入力-出力インターフェイス1210は、キーボード、マウス、マイク、リモコン装置などによって形成される入力部1212に接続される。入力-出力インターフェイス1210は、オーディオインターフェイス、ビデオインターフェイス、ディスプレイ及びスピーカなどによって形成される出力部1214、ハードディスクによって形成される記録部1216、不揮発性メモリ又はその他の非一時的コンピュータ可読記憶媒体、ネットワークインターフェイス、モデム、USBインターフェイス、ファイアワイヤインターフェイスなどによって形成される通信部1218、並びに磁気ディスク、光学ディスク、磁気-光学ディスク、半導体メモリなどの取り外し可能媒体1222を駆動するドライブ1220にも接続される。
【0096】
1つの実施形態によれば、CPU1202は、記録部1216に記憶されたプログラムを入力-出力インターフェイス1210及びバス1208経由でRAM1206にロードした後に、本明細書において受信装置120に関して説明した機能のうちの1つ又はこれらの組み合わせの機能を提供するように構成されたプログラムを実行する。
【0097】
図2及び図15に示す構造例のうちのいずれか1つによって例示される上述したハードウェアの説明は、例えば図3及び図4を参照して上述したアルゴリズムを実行するようにプログラム又は構成された専門的な対応する構造を構成し又は含む。例えば、図3及び図4に示すアルゴリズムのうちのいずれか1つ又はこれらの組み合わせは、図2に示す単一の装置に含まれる回路によって完全に実行することができる。
【0098】
上記の教示に照らして、数多くの修正例及び変形例が可能なことが明らかである。従って、添付の特許請求の範囲内では、本明細書において具体的に説明したものとは別様に本開示を実施することができると理解されたい。
【0099】
従って、上記の説明は、本開示の例示的な実施形態を開示して説明したものにすぎない。当業者であれば理解するように、本開示は、本開示の趣旨又は基本的特徴から逸脱することなく他の特定の形態で具体化することもできる。従って、本開示は例示であることを意図するものであり、本開示及び他の請求項の範囲を限定するものではない。本開示は、本明細書における教示のあらゆる容易に識別できる変種を含め、本発明の主題が一般公衆に開放されないように、上述した請求項の用語の範囲を部分的に定義する。
【0100】
本開示の実施形態は、以下のような著しく有利な特徴を含む。
(1)ストリーミングマルチキャスト配信メディアデータの受信のために最適化されたバッファリング法。
(2)処理が、Javaプログラミング言語の利点及び限界を考慮するように、具体的にはメモリリークを招く恐れがあるガベージコレクション動作に関連する非効率性及び不確実性を避けるように設計される。
(3)Javaのバイト配列は断片に分割できないので、いずれか1つのファイルが複数の連続バイト配列を占有しないように処理が最適化される。
(a)処理が、バイト配列のみに作用するSystem.arrayCopyネイティブAndroid機能を採用してメモリのブロックを効率的に移動させるように設計される。
(b)一般に、この処理はAndroid上のJavaのために最適化される。
(4)処理の最適化が以下を含む。
(a)ファイルが連続メモリに記憶されない場合に生じる複雑性及びCPUオーバヘッドを避けるために、ファイルを連続バッファ領域に記憶すること。
(b)不要なファイルのコピーを避けること。
(c)重複ファイルの効率的処理。
(d)新規ファイルの記憶に使用されるメモリの回復の効率的管理。
(5)処理が、順不同パケット配信モード及びカルーセルファイル配信モードをサポートする。
【0101】
上記の開示は、以下に列挙する実施形態も含む。
【0102】
(1)パケットストリームを介して受け取られたファイルを記憶するための、予め設定されたバイトサイズを有するバッファを管理する方法であって、着信ファイルのファイル識別子及び長さを判定するステップと、前記着信ファイルが次の書き込み位置と前記バッファの最後との間のスペースに収まらないと判定するステップと、前記着信ファイルが前記次の書き込み位置と前記バッファの前記最後との間の前記スペースに収まらないとの前記判定に応答して、前記バッファに記憶された1又は2以上のファイルを識別するマップにおいて、前記バッファの初期書き込み位置から開始する領域に少なくとも部分的に記憶されたファイルに対応し、かつ前記着信ファイルの前記長さに等しいサイズを有する各エントリを削除するステップと、前記着信ファイルの前記ファイル識別子及び前記長さを含むエントリを、前記バッファ内の前記初期書き込み位置に関連付けて前記マップ内に追加するステップと、前記バッファ内の前記初期書き込み位置から開始して前記着信ファイルの前記長さに等しい前記サイズを有する前記バッファ内の連続領域を割り当てた後に、前記次の書き込み位置を前記割り当てられた連続領域の前記最後に移動させるステップと、前記着信ファイルのパケットを受け取り、該受け取られたパケットを前記割り当てられた連続領域に記憶するステップとを含む方法。
【0103】
(2)前記パケットストリームは、高度テレビジョンシステムズ委員会(ATSC)3.0デジタルテレビ信号の一部である、特徴(1)に記載の方法。
【0104】
(3)前記着信ファイルは、前記バッファに記憶された他のファイルと共通するトランスポートセッション識別子(TSI)値を有する階層符号化トランスポート(LCT)チャネルで受け取られ、対応する異なるTSI値を有するファイルを記憶するために、新規バッファ及び別のマップが初期化される、特徴(1)又は(2)に記載の方法。
【0105】
(4)前記マップ内の前記追加されたエントリは、前記着信ファイルの前記ファイル識別子及び前記長さを含む、特徴(1)~(3)のいずれかに記載の方法。
【0106】
(5)前記着信ファイルの前記受け取られたパケットが、前記ファイルに割り当てられた前記バッファ内の前記連続領域を満たすまで、前記マップ内の前記追加されたエントリに不完全とのラベルを付けるステップをさらに含む、特徴(1)~(4)のいずれかに記載の方法。
【0107】
(6)前記パケットストリームの各着信パケットについて、対応するファイルのファイル識別子を判定するステップと、前記対応するファイルの前記ファイル識別子を有し、かつ不完全とのラベルが付いた前記マップ内のエントリが存在するかどうかを判定するステップと、前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在するとの判定に応答して、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域に前記着信パケットを記憶するステップと、前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるかどうかを判定するステップと、前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるとの判定に応答して、前記マップ内の前記エントリに関連する前記不完全ラベルを削除するステップと、前記マップ内の前記エントリと同じファイル名を有する前記マップ内の他の全てのエントリを削除するステップと、前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在しないとの判定に応答して、前記着信パケットを新規着信ファイルとして処理するステップとをさらに含む、特徴(1)~(5)のいずれかに記載の方法。
【0108】
(7)前記ファイル識別子は、トランスポートオブジェクト識別子(TOI)及びファイル名を含む、特徴(1)~(6)のいずれかに記載の方法。
【0109】
(8)パケットストリームを介して受け取られたファイルを、予め設定されたバイトサイズを有するバッファに記憶するバッファ管理装置であって、着信ファイルのファイル識別子及び長さを判定し、前記着信ファイルが次の書き込み位置と前記バッファの最後との間のスペースに収まらないと判定し、前記着信ファイルが前記次の書き込み位置と前記バッファの前記最後との間の前記スペースに収まらないとの前記判定に応答して、前記バッファに記憶された1又は2以上のファイルを識別するマップにおいて、前記バッファの初期書き込み位置から開始する領域に少なくとも部分的に記憶されたファイルに対応し、かつ前記着信ファイルの前記長さに等しいサイズを有する各エントリを削除し、前記着信ファイルの前記ファイル識別子及び前記長さを含むエントリを、前記バッファ内の前記初期書き込み位置に関連付けて前記マップ内に追加し、前記バッファ内の前記初期書き込み位置から開始して前記着信ファイルの前記長さに等しい前記サイズを有する前記バッファ内の連続領域を割り当てた後に、前記次の書き込み位置を前記割り当てられた連続領域の前記最後に移動させ、前記着信ファイルのパケットを受け取り、該受け取られたパケットを前記割り当てられた連続領域に記憶するように構成された回路を含む、バッファ管理装置。
【0110】
(9)前記パケットストリームは、高度テレビジョンシステムズ委員会(ATSC)3.0デジタルテレビ信号の一部である、特徴(8)に記載のバッファ管理装置。
【0111】
(10)前記着信ファイルは、前記バッファに記憶された他のファイルと共通するトランスポートセッション識別子(TSI)値を有する階層符号化トランスポート(LCT)チャネルで受け取られ、対応する異なるTSI値を有するファイルを記憶するために、新規バッファ及び別のマップが初期化される、特徴(8)又は(9)に記載のバッファ管理装置。
【0112】
(11)前記マップ内の前記追加されたエントリは、前記着信ファイルの前記ファイル識別子及び前記長さを含む、特徴(8)~(10)のいずれかに記載のバッファ管理装置。
【0113】
(12)前記回路は、前記着信ファイルの前記受け取られたパケットが、前記着信ファイルに割り当てられた前記バッファ内の前記連続領域を満たすまで、前記マップ内の前記追加されたエントリに不完全とのラベルを付けるようにさらに構成される、特徴(8)~(11)のいずれかに記載のバッファ管理装置。
【0114】
(13)前記回路は、前記パケットストリームの各着信パケットについて、対応するファイルのファイル識別子を判定し、前記対応するファイルの前記ファイル識別子を有し、かつ不完全とのラベルが付いた前記マップ内のエントリが存在するかどうかを判定し、前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在するとの判定に応答して、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域に前記着信パケットを記憶し、前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるかどうかを判定し、前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるとの判定に応答して、前記マップ内の前記エントリに関連する前記不完全ラベルを削除し、前記マップ内の前記エントリと同じファイル名を有する前記マップ内の他の全てのエントリを削除し、前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在しないとの判定に応答して、前記着信パケットを新規着信ファイルとして処理するようにさらに構成される、特徴(8)~(12)のいずれかに記載のバッファ管理装置。
【0115】
(14)前記ファイル識別子は、トランスポートオブジェクト識別子(TOI)及びファイル名を含む、特徴(8)~(13)のいずれかに記載のバッファ管理装置。
【0116】
(15)コンピュータ可読命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記コンピュータ可読命令は、プロセッサによって実行された時に、パケットストリームを介して受け取られたファイルを記憶するための、予め設定されたバイトサイズを有するバッファを管理する方法を前記プロセッサに実行させ、前記方法は、着信ファイルのファイル識別子及び長さを判定するステップと、前記着信ファイルが次の書き込み位置と前記バッファの最後との間のスペースに収まらないと判定するステップと、前記着信ファイルが前記次の書き込み位置と前記バッファの前記最後との間の前記スペースに収まらないとの前記判定に応答して、前記バッファに記憶された1又は2以上のファイルを識別するマップにおいて、前記バッファの初期書き込み位置から開始する領域に少なくとも部分的に記憶されたファイルに対応し、かつ前記着信ファイルの前記長さに等しいサイズを有する各エントリを削除するステップと、前記着信ファイルの前記ファイル識別子及び前記長さを含むエントリを、前記バッファ内の前記初期書き込み位置に関連付けて前記マップ内に追加するステップと、前記バッファ内の前記初期書き込み位置から開始して前記着信ファイルの前記長さに等しい前記サイズを有する前記バッファ内の連続領域を割り当てた後に、前記次の書き込み位置を前記割り当てられた連続領域の前記最後に移動させるステップと、前記着信ファイルのパケットを受け取り、該受け取られたパケットを前記割り当てられた連続領域に記憶するステップとを含む、非一時的コンピュータ可読記憶媒体。
【0117】
(16)前記パケットストリームは、高度テレビジョンシステムズ委員会(ATSC)3.0デジタルテレビ信号の一部である、特徴(15)に記載の非一時的コンピュータ可読記憶媒体。
【0118】
(17)前記着信ファイルは、前記バッファに記憶された他のファイルと共通するトランスポートセッション識別子(TSI)値を有する階層符号化トランスポート(LCT)チャネルで受け取られ、対応する異なるTSI値を有するファイルのために、新規バッファ及び別のマップが初期化される、特徴(15)又は(16)に記載の非一時的コンピュータ可読記憶媒体。
【0119】
(18)前記マップ内の前記追加されたエントリは、前記着信ファイルの前記ファイル識別子及び前記長さを含み、前記ファイル識別子は、トランスポートオブジェクト識別子(TOI)及びファイル名を含む、特徴(15)~(17)のいずれかに記載の非一時的コンピュータ可読記憶媒体。
【0120】
(19)前記着信ファイルの前記受け取られたパケットが、前記ファイルに割り当てられた前記バッファ内の前記連続領域を満たすまで、前記マップ内の前記追加されたエントリに不完全とのラベルを付けるステップをさらに含む、特徴(15)~(18)のいずれかに記載の非一時的コンピュータ可読記憶媒体。
【0121】
(20)前記パケットストリームの各着信パケットについて、対応するファイルのファイル識別子を判定するステップと、前記対応するファイルの前記ファイル識別子を有し、かつ不完全とのラベルが付いた前記マップ内のエントリが存在するかどうかを判定するステップと、前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在するとの判定に応答して、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域に前記着信パケットを記憶するステップと、前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるかどうかを判定するステップと、前記着信パケットが、前記マップ内の前記不完全なエントリに関連する前記割り当てられた連続領域において前記ファイルを完成させるとの判定に応答して、前記マップ内の前記エントリに関連する前記不完全ラベルを削除するステップと、前記マップ内の前記エントリと同じファイル名を有する前記マップ内の他の全てのエントリを削除するステップと、前記対応するファイルの前記ファイル識別子を有する前記マップ内の不完全なエントリが存在しないとの判定に応答して、前記着信パケットを新規着信ファイルとして処理するステップとをさらに含む、特徴(19)に記載の非一時的コンピュータ可読記憶媒体。
【符号の説明】
【0122】
400:新規ファイル開始動作
S40:新規ファイル動作を開始
S41:ファイルがバッファ内の残りスペースに収まるか?
S42:スペース作成動作
S43:新規ファイルの範囲に重なり合うハッシュテーブル内の全てのエントリを識別
S44:識別された全てのエントリをハッシュテーブルから削除S45:初期書き込み位置に新規ファイルのためのバッファ内領域を割り当て
S46:新規ファイルの範囲がハッシュテーブル内のファイルに重なり合うか?
S47:現在の次の開始位置に新規ファイルのためのバッファ内領域を割り当て
S48:次の開始位置を割り当て領域の最後に移動
S49:割り当て領域にパケットを記憶
S50:新規ファイルの範囲に重なり合うハッシュテーブル内のエントリを削除
図1
図2
図3
図4
図5A
図5B
図6A
図6B
図7A
図7B
図8A
図8B
図9A
図9B
図10A
図10B
図11A
図11B
図12A
図12B
図13A
図13B
図14A
図14B
図15
【国際調査報告】