(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-30
(54)【発明の名称】最適化された時間スケールと正確な提示タイムスタンプを提供するためのシステム及び方法
(51)【国際特許分類】
H04N 21/242 20110101AFI20240723BHJP
H04N 21/2343 20110101ALI20240723BHJP
H04N 19/587 20140101ALI20240723BHJP
H04N 19/115 20140101ALI20240723BHJP
【FI】
H04N21/242
H04N21/2343
H04N19/587
H04N19/115
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023575576
(86)(22)【出願日】2022-06-24
(85)【翻訳文提出日】2024-02-06
(86)【国際出願番号】 US2022035002
(87)【国際公開番号】W WO2022272135
(87)【国際公開日】2022-12-29
(32)【優先日】2021-06-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】506267178
【氏名又は名称】ネットフリックス・インコーポレイテッド
【氏名又は名称原語表記】NETFLIX, INC.
【住所又は居所原語表記】121 Albright Way Los Gatos, California 95032 UNITED STATES OF AMERICA
(74)【代理人】
【識別番号】100073184
【氏名又は名称】柳田 征史
(74)【代理人】
【識別番号】100175042
【氏名又は名称】高橋 秀明
(74)【代理人】
【識別番号】100224775
【氏名又は名称】南 毅
(72)【発明者】
【氏名】ジォン,ウェイグオ
(72)【発明者】
【氏名】チン,レックス イク チュン
(72)【発明者】
【氏名】チョン,ヨンジュン
(72)【発明者】
【氏名】カシ,チャンドリカ
【テーマコード(参考)】
5C159
5C164
【Fターム(参考)】
5C159LB07
5C159LB13
5C159TA60
5C164MC06S
5C164PA31
5C164SB02P
5C164SB10P
(57)【要約】
本開示のコンピュータで実装される方法は、複数の異なるメディアアイテムであって、該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップを含む。そして、本方法は、複数のメディアアイテムについて、該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップも含む。また、本方法は、複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから、同定された一元的時間スケールへと変更し、これにより、変更後のメディアアイテムのフレーム間隔を一定とするステップも含む。本開示では、その他にも、様々な方法、システム、コンピュータ可読媒体が開示される。
【特許請求の範囲】
【請求項1】
複数の異なるメディアアイテムであって、該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、
前記複数のメディアアイテムについて、該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、
前記複数のメディアアイテムのうちの少なくとも1つを、前記現在の時間スケールから、同定された前記一元的時間スケールへと変更し、これにより、変更後の前記少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、
を含むコンピュータで実装される方法。
【請求項2】
前記メディアアイテムが映像メディアアイテムを含む、請求項1に記載のコンピュータで実装される方法。
【請求項3】
前記映像メディアアイテムが、23.97フレーム/秒、24フレーム/秒、25フレーム/秒、29.97フレーム/秒、30フレーム/秒、59.94フレーム/秒、60フレーム/秒、120フレーム/秒、240フレーム/秒、又は300フレーム/秒のフレームレートで符号化される、請求項2に記載のコンピュータで実装される方法。
【請求項4】
前記メディアアイテムが音声メディアアイテムを含む、請求項1に記載のコンピュータで実装される方法。
【請求項5】
前記音声メディアアイテムが、1フレーム当たり1024サンプル、1536サンプル、又は2048サンプルのフレームレートを有している、請求項4に記載のコンピュータで実装される方法。
【請求項6】
前記複数のメディアアイテムのうち、指定されたメディアアイテム群内にある各メディアアイテムが、指定された映像フレームレート及び音声フレームレートを有しており、
前記一元的時間スケールが、前記メディアアイテム群内の前記メディアアイテムの指定された映像フレームレート及び指定された音声フレームレートを最適化するように計算される、請求項1に記載のコンピュータで実装される方法。
【請求項7】
前記一元的時間スケールは、前記複数のメディアアイテムに対して1つ以上の提示タイムスタンプを生成するように実装される、請求項1に記載のコンピュータで実装される方法。
【請求項8】
前記1つ以上の提示タイムスタンプが単調増加し、
前記一元的時間スケールに使用される単位が、前記複数のメディアアイテムのラップアラウンド時間を最大化するように選択される、請求項6に記載のコンピュータで実装される方法。
【請求項9】
前記複数のメディアアイテムのラップアラウンド時間を最大化するように選択される前記単位が、映像フレームレートに基づいて選択される、請求項8に記載のコンピュータで実装される方法。
【請求項10】
同定された前記一元的時間スケールが、提示タイムスタンプ間隔を含んでおり、
該提示タイムスタンプ間隔が、最小フレーム間隔又は最小フレーム間隔の倍数で構成される、請求項1に記載のコンピュータで実装される方法。
【請求項11】
前記提示タイムスタンプ間隔を指定された分解能に復元するステップをさらに含む、請求項10に記載のコンピュータで実装される方法。
【請求項12】
少なくとも1つの物理プロセッサと、
コンピュータ実行可能命令を含む物理メモリと、
を備えるシステムであって、
前記コンピュータ実行可能命令は、前記物理プロセッサによって実行された場合に、
複数の異なるメディアアイテムであって、該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、
前記複数のメディアアイテムについて、該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、
前記複数のメディアアイテムのうちの少なくとも1つを、前記現在の時間スケールから、同定された前記一元的時間スケールへと変更し、これにより、変更後の前記少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、
を前記物理プロセッサに実行させる、システム。
【請求項13】
同定された前記一元的時間スケールが、前記一定のフレーム間隔を維持しながら、前記複数のメディアアイテムを可変フレームレートでストリーミングすることを可能にする、請求項12に記載のシステム。
【請求項14】
フレームレートの異なるメディアアイテムが、前記一元的時間スケールを使用して各フレームレートに対して前記一定のフレーム間隔を維持しながら、可変フレームレートでストリーミングされる、請求項13に記載のシステム。
【請求項15】
可変リフレッシュレートを使用してキャプチャされた映像コンテンツを有するメディアアイテムが、前記一元的時間スケールを使用して前記一定のフレーム間隔を維持しながら、可変フレームレートでストリーミングされる、請求項12に記載のシステム。
【請求項16】
前記一元的時間スケールを同定するステップが、時間スケールの異なる前記複数の異なるメディアアイテムから得られる、1つ以上の入力された提示タイムスタンプを、前記一元的時間スケールに基づいた提示タイムスタンプに変換するステップを含む、請求項12に記載のシステム。
【請求項17】
前記入力された提示タイムスタンプから得られる変換後の前記提示タイムスタンプを実装することにより、提示タイムスタンプカウンタのラップアラウンドが回避される、請求項16に記載のシステム。
【請求項18】
前記複数のメディアアイテムのうちの少なくとも1つを、前記現在の時間スケールから、同定された前記一元的時間スケールへと変更するステップにより、前記複数のメディアアイテムの再生中に単一の固定垂直同期割り込みを実装することが可能となる、請求項12に記載のシステム。
【請求項19】
スケーリング後の提示タイムスタンプが、丸め誤差を含まないネイティブ提示タイムスタンプと一致するように、前記複数のメディアアイテムの提示タイムスタンプを最適化するステップをさらに含む、請求項12に記載のシステム。
【請求項20】
1つ以上のコンピュータ実行可能命令を含む非一時的なコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行された場合に、
複数の異なるメディアアイテムであって、該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、
前記複数のメディアアイテムについて、該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、
前記複数のメディアアイテムのうちの少なくとも1つを、前記現在の時間スケールから、同定された前記一元的時間スケールへと変更し、これにより、変更後の前記少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、
を前記コンピューティングデバイスに実行させる、非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【相互参照】
【0001】
本出願は、2021年6月25日を出願日とする米国仮特許出願第17/359468号(発明の名称「SYSTEMS AND METHODS FOR PROVIDING OPTIMIZED TIME SCALES AND ACCURATE PRESENTATION TIME STAMPS」)の優先権の利益を主張するものであり、この仮出願のすべての開示内容は、参照により本明細書に援用するものとする。
【背景技術】
【0002】
音声及び映像メディアアイテムを含むメディアアイテムは、通常、提示タイムスタンプ(presentation time stamp:PTS)を付けて生成される。提示タイムスタンプ(PTS)は、メディアアイテムの様々なエレメンタリストリーム(例えば、音声、映像、字幕など)の同期を保つためにメディアアイテムに適用されるメタデータフィールドである。このメタデータは、同様にメディアアイテムの一部として伝送される基準クロックにより定義される特定の時点を示している。これらの時点が、基本となるエレメンタリストリームを同期させる位置を定義する基準となる。提示タイムスタンプそのものは、Xヘルツ(Hz)の時間スケールを持つクロックで駆動されるカウンタの値を表すNビットの数値である。例えば、MPEG(Moving Pictures Expert Group)1形式又はMPEG2形式で符号化を行う場合、提示タイムスタンプのN値は33ビット、時間スケールのX値は90000Hzである。
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかし、提示タイムスタンプが付与されていても、再生時に様々な音声フレームや映像フレームを提示する時間長が近似的に求められることやかかる時間長の変動が原因で、シームレスな同期が妨げられる場合があった。
【課題を解決するための手段】
【0004】
以下に、より詳細に説明するように、本開示では、最適化された時間スケールと正確な提示タイムスタンプとをメディアアイテムに対して提供するための方法及びシステムについて記載する。
【0005】
一例では、最適化された時間スケールと正確な提示タイムスタンプを提供するための、コンピュータで実装される方法は、複数の異なるメディアアイテムであって、当該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に当該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップを含む。また、本方法は、複数のメディアアイテムについて、当該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップをさらに含む。さらに、本方法は、複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから、同定された一元的時間スケールへと変更し、これにより、変更後のメディアアイテムのフレーム間隔を一定とするステップも含む。
【0006】
いくつかの実施形態では、メディアアイテムは映像メディアアイテムである。いくつかの場合において、映像メディアアイテムは、23.97フレーム/秒、24フレーム/秒、25フレーム/秒、29.97フレーム/秒、30フレーム/秒、59.94フレーム/秒、60フレーム/秒、120フレーム/秒、240フレーム/秒、又は300フレーム/秒のフレームレートで符号化される。
【0007】
他の実施形態では、メディアアイテムは音声メディアアイテムである。いくつかの例では、音声メディアアイテムが、1フレーム当たり1024サンプル、1536サンプル、又は2048サンプルのフレームサイズを有している。
【0008】
いくつかの場合において、複数のメディアアイテムのうち、指定されたメディアアイテム群内にある各メディアアイテムは、指定された映像フレームレート及び音声フレームレートを有している。かかる場合、一元的時間スケールは、メディアアイテム群内のメディアアイテムの指定された映像フレームレート及び指定された音声フレームレートを最適化するように計算される。
【0009】
いくつかの実施形態では、一元的時間スケールは、複数のメディアアイテムに対して1つ以上の提示タイムスタンプを生成するように実装される。いくつかの場合において、提示タイムスタンプは単調増加し、一元的時間スケールに使用される単位は、複数のメディアアイテムのラップアラウンド時間を最大化するように選択される。
【0010】
いくつかの場合において、複数のメディアアイテムのラップアラウンド時間を最大化するように選択される単位は、映像フレームレートに基づいて選択される。いくつかの例では、同定された一元的時間スケールは、提示タイムスタンプ間隔を含んでいる。かかる場合、提示タイムスタンプ間隔は、最小フレーム間隔又は最小フレーム間隔の倍数で構成することができる。いくつかの実施形態では、本方法は、提示タイムスタンプ間隔を指定された分解能に復元するステップをさらに含む。いくつかの場合において、同定された一元的時間スケールは、各フレームレートに対して一定のフレーム間隔を維持しながら、複数のメディアアイテムを可変フレームレートでストリーミングすることを可能にする。いくつかの実施形態では、フレームレートの異なるメディアアイテムが、一元的時間スケールを使用して各フレームレートに対して一定のフレーム間隔を維持しながら、可変フレームレートでストリーミングされる。いくつかの例では、可変リフレッシュレートを使用してキャプチャされた映像コンテンツを有するメディアアイテムが、一元的時間スケールを使用して一定のフレーム間隔を維持しながら、可変フレームレートでストリーミングされる。
【0011】
いくつかの実施形態では、一元的時間スケールを同定するステップが、時間スケールの異なる複数の異なるメディアアイテムから得られる、1つ以上の入力された提示タイムスタンプを、一元的時間スケールに基づいた提示タイムスタンプに変換するステップを含む。いくつかの場合において、入力された提示タイムスタンプから得られる変換後の提示タイムスタンプを実装することにより、提示タイムスタンプカウンタのラップアラウンドが回避される。いくつかの例では、複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから、同定された一元的時間スケールへと変更するステップにより、複数のメディアアイテムの再生中に単一の固定垂直同期割り込みを実装することが可能となる。いくつかの場合において、本方法は、スケーリング後の提示タイムスタンプが、丸め誤差を含まないネイティブ提示タイムスタンプと一致するように、複数のメディアアイテムの提示タイムスタンプを最適化するステップをさらに含む。
【0012】
これに加えて、これに対応するシステムは、少なくとも1つの物理プロセッサと、コンピュータ実行可能命令を含む物理メモリと、を備え、コンピュータ実行可能命令は、物理プロセッサによって実行された場合に、以下のステップ:複数の異なるメディアアイテムであって、当該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に当該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、複数のメディアアイテムについて、当該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから同定された一元的時間スケールへと変更し、これにより、変更後の少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、を物理プロセッサに実行させる。
【0013】
いくつかの例では、上述の方法を、コンピュータ可読媒体上のコンピュータ可読命令として符号化することもできる。例えば、コンピュータ可読媒体は、1つ以上のコンピュータ実行可能命令を含むことができ、コンピュータ実行可能命令は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行された場合に、コンピューティングデバイスに、以下のステップ:複数の異なるメディアアイテムであって、当該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に当該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、複数のメディアアイテムについて、当該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから同定された一元的時間スケールへと変更し、これにより、変更後の少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、を実行させることができる。
【0014】
本明細書に記載の複数の実施形態の特徴は、そのいずれの実施形態の特徴であっても、本明細書に記載の一般原則に従って、互いに組み合わせて使用することができる。上記及び上記以外の実施形態、特徴、及び利点については、添付の図面及び特許請求の範囲と併せて、以下の詳細な説明を読むことにより、さらに深く理解されるであろう。
【0015】
添付の図面は、数多くの例示的な実施形態を例示的に示すものであり、本明細書の一部をなす。これらの図面は、以下の説明と合わせることにより、本開示の種々の原理を明示、説明するものである。
【図面の簡単な説明】
【0016】
【
図1】最適化された時間スケールと正確な提示タイムスタンプが提供されるコンピューティング環境を示す図
【
図2】最適化された時間スケールと正確な提示タイムスタンプをメディアアイテムに対して提供するための例示的な方法を示すフロー図
【
図3】様々な層におけるメディアアイテムの時間スケール情報を示すフロー図
【
図4】様々なフレームレートで符号化されたメディアアイテムに対する、複数の異なるフレーム間隔を示すテーブル
【
図5】提示タイムスタンプに丸め誤差が生じることによりフレーム間隔の長さが変化してしまうことをわかりやすく示すテーブル
【
図6】丸めありの提示タイムスタンプや丸めなしの提示タイムスタンプが垂直同期にどのように関係するかを示すテーブル
【
図7】異なるフレームレートで符号化されたメディアアイテムの映像フレーム間隔を示すテーブル
【
図8】異なるフレームレートで符号化されたメディアアイテムの音声フレーム間隔を示すテーブル
【
図9】異なるフレームレートで符号化されたメディアアイテムの音声フレーム間隔を示す他のテーブル
【
図10】96kHzまでのサンプリングレートにおける音声/映像のフレーム間隔を示すテーブル
【
図11】23.976fpsで符号化された映像についてのスケーリング後のフレームレートを示すテーブル
【
図12】48kHzの音声での時間スケール例を示すテーブル
【
図13】44.1kHzの音声に対する時間スケール例を示すテーブル
【
図14】48kHzの音声での時間スケール例とラップアラウンド時間を示すテーブル
【
図15】提示タイムスタンプのスケーリング例を示すテーブル
【
図16】最小の間隔の計算と実装が行われる実施形態を示す図
【
図17】初期値をゼロとする最適化された提示タイムスタンプを示すテーブル
【
図18】フレームレートが、異なる映像セグメント間で変化する実施形態を示す図
【
図19】例示的なコンテンツ配信エコシステムを示すブロック図
【
図20】
図19に示すコンテンツ配信エコシステム内の例示的な配信インフラを示すブロック図
【
図21】
図19に示すコンテンツ配信エコシステム内の例示的なコンテンツプレーヤを示すブロック図
【発明を実施するための形態】
【0017】
図面全体を通して、同一の参照記号及び説明は、類似の要素を示すものであり、必ずしも同一の要素を示しているわけではない。本明細書に記載の例示的な実施形態には様々な変形や形態変更が可能であるが、一例として、そのうちの特定的な実施形態を図面に示し、本明細書において詳細に説明している。しかしながら、本明細書に記載の例示的な実施形態は、開示された特定の形態に限定されることを意図するものではない。むしろ、本開示は、添付の特許請求の範囲の範囲に含まれるすべての変形物、等価物、変更物も対象に含むものである。
【0018】
本開示は、概して、最適化された時間スケールと正確な提示タイムスタンプをメディアアイテムに対して提供することに向けられている。以下により詳細に説明するように、本開示の実施形態は、メディアアイテムが異なるフレームレートで符号化されている場合であっても、メディアアイテムの再生中のフレーム間隔を一定とする一元的時間スケールを生成するものである。
【0019】
上述したように、メディアアイテムは、通常、提示タイムスタンプ(PTS)を用いて符号化されている。提示タイムスタンプは、異なるエレメンタリストリームをどの位置に同期させることができるかを示すものである。かかるエレメンタリストリームには、音声ストリーム、映像ストリーム、字幕が含まれる。メディアアイテムの再生中に、これらのエレメンタリストリームが互いに対して先行したり遅れたりすると、同期がずれていることにユーザが気づく場合が多く、質の低い再生体験にユーザが悩まされてしまう可能性がある。
【0020】
提示タイムスタンプ自体は、ヘルツ(Hz)単位で計測される特定の(Xヘルツの)時間スケールを持つクロックで駆動されるカウンタの値を表すNビットの数値である。MPEG1形式及びMPEG2形式の場合、N=33ビット、X=90000ヘルツである。異なるフレームレートで符号化されたメディアアイテムには、異なる時間スケールが使用される。例えば、映像は、24フレーム/秒(fps)、29.97fps、30fps、50fps、59.94fps、60fpsなどのフレームレートで符号化することができる。各フレームの表示時間を示す目盛り量は、時間スケールによって異なる。例えば、フレームレートが24fps、時間スケールが1000目盛り/秒の場合、各フレームの表示時間(すなわち「フレーム間隔(frame interval)」)は1000/24=41.66667ミリ秒となる。したがって、この例では、24fpsで符号化された映像のフレーム間隔は、41ミリ秒又は42ミリ秒となる。時間スケールを、例えば90000Hzに変更すると、フレーム間隔は、(90000/24)目盛り、つまり3750目盛りとなり、より正確になる。また、例えば、時間スケールを1000000目盛り/秒まで上げた場合のフレーム間隔は、41666マイクロ秒又は41667マイクロ秒(1000000/24)となる。
【0021】
提示タイムスタンプの値は整数で提示されるため、このような小数の値(例えば、41.66667ミリ秒、41666.6667マイクロ秒など)は、切り上げ又は切り捨てにより、最も近い整数に丸める必要がある。この最も近い整数に丸める処理の結果、提示タイムスタンプに丸め誤差が含まれることになる。そして、この丸め誤差により、フレーム間隔(各フレームの表示時間)が上下に変動する。例えば、24fpsで符号化された、1000単位の時間スケールを持つ映像の場合、フレーム間隔は41.66667ミリ秒となるが、同期を維持するため41.66667を切り上げたり切り下げたりすることが行われるため、実際のフレーム間隔は41ミリ秒と42ミリ秒の間で度々切り替わることになる。しかし、異なるフレーム間隔間での切り替えが度々行われると、メディアアイテムの再生に悪影響が生じる恐れがある。例えば、フレーム間隔の切り替えは、ユーザの目の疲れの原因となる可能性がある。さらに、少なくともいくつかの場合において、このように異なるフレーム間隔の間を切り替えることにより、フレーム落ち、フレームのフリーズ、フレームの重複、空白フレームなどの他の問題も生じるほか、この他にも、ユーザの目につきやすく、ユーザの視聴体験を損なうような他の再生問題又は同期問題の原因となる恐れがあった。
【0022】
一方、本明細書に記載の実施形態は、様々な異なるフレームレートに適用される普遍的な時間スケールを提供するように設計されている。普遍的な時間スケールにより、メディアアイテムの各フレームを確実に一定のフレーム間隔で再生することができる。本明細書に記載のシステムは、メディアアイテムセット(例えば、音声又は映像メディアアイテム)を符号化する際に用いた現在の時間スケールを同定する。また、本システムは、これらのメディアアイテムを符号化する際に用いたフレームレートも特定する。そして、本システムは、これらのメディアアイテムで使用されている種々のフレームレートの最小公倍数を求める。例えば、或るメディアアイテム群のスケーリング後のフレームレートの最小公倍数を同定することにより特定した一元的時間スケールを用いれば、各メディアアイテムを、等しい目盛り数に分割することができる。このように目盛り数を一元化することにより、メディアアイテムを符号化する際に用いたフレームレートに関係なく、メディアアイテムのフレーム間隔を一定化することができる。メディアアイテム群で使用されるスケーリング後のフレームレートの最小公倍数を同定することにより、各フレーム間隔を整数値で表すことができる。各メディアアイテムのフレーム間隔を整数値とすることで、フレーム間隔に生じていた異なる値の間の変動(例えば、上記の例における41ミリ秒と42ミリ秒の間の変動)が解消する。また、一元的時間スケールによりフレーム間隔が一定となることから、フレーム間隔の変動に伴う問題も低減又は完全に解消される。
【0023】
いくつかの場合において、本明細書に記載の実施形態は、特定の音声又は映像形式の組み合わせに対して一元的時間スケールを最適化することもできる。例えば、本明細書のシステムは、異なるフレームレートで符号化された、広範囲の異なるメディアアイテムに対して最小公倍数を見つけるのではなく、選択された音声/映像形式の組み合わせに対して最小公倍数を見つけ、その組み合わせに対して特異的に時間スケールの変更を行う。これにより、提示タイムスタンプ値を格納するように構成されたメモリバッファのオーバフローが生じる可能性が低減される。実際、上述したように、提示タイムスタンプは単調増加する整数値であり、したがって、いずれかの時点で非常に大きな数値に達することになる。提示タイムスタンプを格納するためのビットフィールドが小さすぎると、提示タイムスタンプの単調増加の結果、メディアアイテム再生の非常に早い段階で、提示タイムスタンプがバッファから溢れる可能性もある。そこで、特定の音声/映像形式の組み合わせに対して時間スケールを最適化することにより、より小さな時間スケールを使用することが可能となり、これにより、フレーム間隔を長くして、その分、提示タイムスタンプカウンタの増分数も抑えることができる。本明細書の実施形態は、各メディアアイテム又は特定のメディアアイテム群ごとに時間スケールを最適化することにより、メモリオーバーランエラーが発生しにくい、よりスムーズで信頼性の高い再生体験を視聴ユーザに提供することができる。
【0024】
以下、
図1~
図21を参照しながら、種々のテーブル、図、フロー図に関する詳細な説明を行う。
図1は、例として、一元的時間スケールが同定され、これがメディアアイテムに適用されるコンピューティング環境100を示している。
図1には、コンピュータシステム101を含む、各種電子コンポーネント及び要素が含まれている。コンピュータシステム101は、デジタルコンテンツの格納に関連付けられたタスクを実行するために、単独又は他のコンピュータシステムと組み合わせて使用される。コンピュータシステム101は、ローカルコンピュータシステム又は分散型(例えば、クラウド)コンピュータシステムを含む、実質的に任意の種類のコンピュータシステムとすることができる。コンピュータシステム101は、少なくとも1つのプロセッサ102と、少なくともいくつかのシステムメモリ103とを備えている。コンピュータシステム101は、様々な異なる機能を実行するためのプログラムモジュールを備えている。プログラムモジュールは、ハードウェアベース又はソフトウェアベースとすることができるほか、ハードウェアとソフトウェアの組み合わせを備えることもできる。各プログラムモジュールは、コンピューティングハードウェア、コンピューティングソフトウェア、又はその両方を利用することにより、以下に説明する機能を含む特定の機能を実行する。
【0025】
いくつかの場合において、通信モジュール104は、他のコンピュータシステムと通信するように構成される。通信モジュール104は、他のコンピュータシステムとの間でデータを受信、送信、又は送受信することが可能な、実質的に任意の有線通信手段又は無線通信手段を備えている。これらの通信手段には、例えば、ハードウェアベースの受信器105、ハードウェアベースの送信器106、又はデータの受信と送信の両方が可能なハードウェアベースの複合送受信器などのハードウェア無線器が含まれる。無線器は、Wi-Fi無線器、セルラー無線器、Bluetooth(登録商標)無線器、又は全地球測位システム(GPS)無線器などの種類の無線器とすることができる。通信モジュール104は、データベース、モバイルコンピューティングデバイス(携帯電話やタブレット端末など)、又は組み込みコンピューティングシステムなどの種類のコンピューティングシステムと相互作用するように構成されている。
【0026】
また、コンピュータシステム101は、確認モジュール107をさらに備えている。確認モジュール107は、種々のメディアアイテム122の現在のフレームレート123を特定するように構成される。いくつかの場合において、これらのメディアアイテム122は、データストア120に保持されている種々の格納済みメディアアイテム121から選択される。データストア120は、ローカルのデータストアであってもリモートのデータストアであってもよく、分散型(例えばクラウドベース)のデータストアとすることもできる。メディアアイテム122は、音声アイテム又は映像アイテムなどの、ユーザデバイス(例えば、ユーザ115のデバイス116)上で再生を行うための、符号化された任意の種類のメディアアイテムを含むものである。確認モジュール107は、これらのメディアアイテム122にアクセスして、メディアアイテム122の符号化に用いたフレームレート123を特定するように構成される。フレームレートは、再生デバイス上に提示するように設計されている1秒当たりのフレーム数を定義するものである。いくつかの場合において、例えば、映像メディアアイテムは、23.97フレーム/秒(fps)、24fps、25fps、29.97fps、30fps、59.94fps、60fps、120fps、240fps、又は300fpsのフレームレートで符号化される。音声フレームレートとしては、23.4375fps、31.25fpsなどの符号化フレームレートを挙げることができる。
【0027】
また、確認モジュール107は、メディアアイテム122と組み合わせて使用する現在の時間スケール108も特定する。時間スケールは、1秒当たりの目盛り数(1秒当たりの単位数)で計測される。例えば、時間スケールが1000の場合、この時間スケールをフレームレート(例えば24fps)で割った値(1000/24=41.6667ミリ秒)が、フレーム間隔、つまり各フレームが再生デバイス上に表示される時間の長さとなる。多くの異なる時間スケールが、異なる種類のメディアアイテムと組み合わせて使用されることが考えられる。したがって、確認モジュール107は、メディアアイテムの符号化フレームレート123と、当該メディアアイテムで使用される現在の時間スケール108の両方を特定して、各メディアアイテムのフレーム間隔([時間スケール]/[フレームレート])を求める。
【0028】
次に、コンピュータシステム101の同定モジュール109が、メディアアイテム122の一元的時間スケール110を同定又は計算する。一元的時間スケール110は、符号化フレームレート123が異なるメディアアイテムにこれを適用することにより、フレーム間隔を一定にするものである。上述したように、非整数値(例えば、41.6667ミリ秒)を整数に丸め続けると、いずれ、フレーム余り、フレーム落ち、空白フレームなどの再生エラーが発生する。このようなエラーは、ユーザの目につきやすく、目の疲れや緊張の原因となるとともに、スムーズでシームレスな再生体験を損なうものである。時間スケール変更モジュール111は、識別された一元的時間スケール110を受け取って、メディアアイテム122うちの1つ以上を変更する。これにより、一元的時間スケール110を用いて再生できる状態とされた変更後のメディアアイテム112が得られる。よって、ユーザ(例えば、ユーザ115)が入力117により、ストリーミング又はダウンロードを行うメディアアイテムを(例えば、データストア120から)選択すると、選択されたメディアアイテムは、フレーム間隔を一定にする一元的時間スケールに合わせて変更されることになる。フレーム間隔を一定とすることにより、スムーズで信頼性の高い再生が可能となり、空白フレーム、フレーム落ち、フレーム余りなどの目立つ欠陥が解消される。これらの実施形態については、以下の
図2の方法200に関する説明、及び
図3~
図21に示す実施形態に関する説明において詳述する。
【0029】
図2は、最適化された時間スケールと正確な提示タイムスタンプをメディアアイテムに対して提供するための、コンピュータで実装される例示的な方法200を示すフロー図である。
図2に示す各ステップは、任意の適切なコンピュータ実行可能コード、
図1に示すシステムを含むコンピューティングシステム、又はその両方により実行することができる。一例では、
図2に示すステップのそれぞれがアルゴリズムを表しており、このアルゴリズムが、複数のサブステップを含む、及び/又は複数のサブステップによって表される構造を有している。なお、かかるサブステップの例については、下記にて詳述する。
【0030】
図2に示すように、ステップ210で、本明細書に記載のシステムのうちの1つ以上が、複数の異なるメディアアイテム(例えば、
図1のメディアアイテム122)のそれぞれについて、配信用にメディアアイテムを符号化する際に用いた現在の時間スケール108を特定することができる。これらのメディアアイテム122のうち少なくとも2つは、異なるフレームレートで符号化されている。次に、ステップ220で、本明細書に記載のシステムは、これらのメディアアイテム122について、メディアアイテム122のそれぞれのフレーム間隔を一定にする一元的時間スケール110を同定する。次に、ステップ230で、システムは、これらのメディアアイテムのうちの少なくとも1つを、現在の時間スケール108から同定された一元的時間スケール110へと変更し、これにより、変更後のメディアアイテムのフレーム間隔を一定とする。
【0031】
図3及び上述の説明に示すように、音声と映像の再生を同期(例えば、音声と口の動きを同期)するために、映像フレーム及び音声フレームのそれぞれに対して一定の時間間隔でタイムスタンプが付与される。上述したように、タイムスタンプは、Xヘルツ(Hz)の時間スケールを持つクロックで駆動されるカウンタの値を表すNビットの数値である。なお、復号器(例えば、復号器303)は、時間スケール情報や提示タイムスタンプを必ずしも符号化/ストリーミングコンテナ301から直接取得する必要があるわけではない。これに代えて、少なくともいくつかの場合において、かかるタイミング情報は、メディア再生/多重分離デバイスにより提供されるか、又はメディア再生/多重分離デバイスにおいて特定される。再生/多重分離器302は、実装や制御を容易に行えるようにする一元的時間スケールを求めるためのスケーリング処理を実行することができる。映像復号器303、音声復号器304、又はその両方は、再生/多重分離器302からの時間情報が利用できる場合には、この時間情報を利用する。この時間情報が利用できない場合、音声復号器又は映像復号器は、エレメンタリストリームの時間情報を利用する。そして、いずれの時間情報も利用できない場合に、ハードウェアベースの復号器が、時間情報なしでメディアアイテムの再生を試みる。このように、少なくともいくつかの場合において、再生/多重分離器302の時間情報が最優先され、エレメンタリストリームの時間情報は、比較的低い優先順位とされる。
【0032】
提示タイムスタンプは、特定のアクセスユニット(access unit:AU)が時間的にどこに含まれるかを示すものである。復号器(例えば、復号器303又は304)は、映像アクセスユニット及び音声アクセスユニットを受信すると、これをそれぞれ復号して、メモリバッファに格納する。そして、基準クロックがタイムスタンプの値に達すると、復号されたアクセスユニットが再生デバイス(例えば、
図1の再生デバイス116)上にレンダリングされる。アクセスユニットのレンダリングをどのように行うかは、提示タイムスタンプにより制御される。映像のフレームレートは、23.976fps、24fps、29.97fps、30fps、50fps、59.94fps、60fpsなど様々に異なる。垂直同期割り込みハンドラ(V-Sync interrupt handler)は、提示タイムスタンプを利用して、対応する音声/映像フレームをレンダリングすべきかどうかを判断する。ここで、アクセスユニットをレンダリングするためのルールとして、Tiを提示デバイスの垂直同期割り込み又は音声シリアル出力割り込みのシステム時間、PTS’=PTS+Δ、Δを許容誤差(Δ≧0)とすると、Tiを下回る提示タイムスタンプ(PTS)値を持つ最も近いアクセスユニットを選択することが挙げられる(PTS’<Ti)。PTS’>Tiの場合には、現在レンダリング中のアクセスユニットが繰り返される。なお、説明を簡略化するため、本明細書における少なくともいくつかの実施形態では、Δ=0と仮定している。
【0033】
提示タイムスタンプは、シリアル出力割り込みハンドラを使用する音声信号でも同様の役割を果たす。音声周波数は、少なくともいくつかの例では、32000Hz、48000Hz、又は96000Hzである。主に高音質の音楽配信の用途では、44.1kHzの領域が使用される。しかし、少なくともいくつかの場合において、レンダリング時に映像の垂直同期割り込みと音声のシリアル出力割り込みの位置が揃わない場合がある。したがって、音声と映像を適切に同期させるために、映像の提示タイムスタンプと音声の提示タイムスタンプが共に、同一の時間スケールを持つ共通のクロック(例えば、システム時間)を参照する。一部の実施態様では、音声クロックをシステム時間として利用する場合もある。この方式は、音声マスタA/V同期(audio master A/V sync)方式と呼ばれる場合もある。
【0034】
提示タイムスタンプの精度は、時間スケール(例えば、現在の時間スケール108)により規定される。提示タイムスタンプの精度は、(number_of_ticks,time_scale)([目盛り数],[時間スケール])の形式で表示することができる。時間スケールは、1秒当たりの合計目盛り数である。フレーム間隔(すなわち、各フレームが再生デバイス上に提示される持続時間(時間長))は、time_scale/frame_rate([時間スケール]/[フレームレート])を計算することにより求められる。
図4のテーブル400は、様々なフレームレート(402)で符号化されたメディアアイテムを様々な時間スケール(401)で提示した場合の、複数の異なるフレーム間隔を示している。図からわかるように、1000、90000、1000000の時間スケールでは、特にフレームレートが23.97fpsや59.94fpsなどの場合に、フレーム間隔は小数値となる。一方、提示タイムスタンプは整数で示されるため、実際の提示タイムスタンプには、少数部分による丸め誤差が含まれることになる。
図5のテーブル500は、時間スケール値を1000(1000ミリ秒に相当)とした場合の、23.97fpsの映像の最初の10フレームの提示タイムスタンプ値を示している。各フレーム番号0~9(列501)には、0から始まるソースタイムスタンプ(列502)が対応している。ソースタイムスタンプは、(列503に示すように)41ミリ秒又は42ミリ秒ごとに進むため、42~41ミリ秒の間で変化し続ける不均一なフレーム間隔(列504)が得られる。
【0035】
テーブル500からわかる問題は、最大0.5ミリ秒の丸め誤差の存在がフレームレート変換の正確さ(例えば、フレームレンダリング条件:Ti>PTS)に影響するという点である。
図6のテーブル600は、レンダリング条件(Ti>PTS)に従えば、フレーム#35(列602)を、1460ミリ秒から1500ミリ秒までの3つの垂直同期(V-Sync)スロット(列601)に表示する必要があることを示している。しかし、丸め誤差のため、実際には、フレーム#34が、1420ミリ秒から1460ミリ秒までの間に3回表示される(列605)。提示タイムスタンプ値を最も近い整数に丸める際には、これと同様の不規則性が生じることから、かかる不規則性は、メディアアイテム全体を再生している間を通じて発生することになる(丸めなしの提示タイムスタンプ値(列603)と丸めありの提示タイムスタンプ値(列604)との差を確認されたい)。
【0036】
テーブル500は、フレーム間隔が41ミリ秒から42ミリ秒の間でどのように変化するかを示している。この不規則なフレーム間隔により、メディアアイテムのフレームレートに示されている規則性が損なわれてしまう。また、連続タイマーを利用してウェイクアップを行うハードウェア又はソフトウェアを実装することにより、十分な正確さでメディアアイテムのフレームレートでレンダリングを行って、スムーズで信頼性の高い再生を提供することも、この不規則なフレーム間隔のために難しくなる。このように提示タイムスタンプの時間スケールが不正確な場合、フレーム間隔が小数の値となり、(上述のような)多くの問題が生じてしまうが、一元的時間スケールを用いることにより、かかる問題の少なくともいくつかを克服することができる。
【0037】
本明細書に記載の実施形態は、異なる映像フレームレート(例えば、23.97fps、24fps、25fps、29.97fps、30fps、50fps、59.94fps、60fps、120fps、240fps、又は300fps)に対して一定のフレーム間隔が得られるソリューションを提供するものである(なお、[フレーム間隔]=[時間スケール]/[フレームレート]である)。少なくともいくつかの実施形態では、これは、メディアアイテムセット内のすべてのフレームレートの最小公倍数(least common multiplier:LCM)(例えば、LCM(24,25,30,60,120,240,24000,30000,60000))を計算することに相当し得る。この例を計算すると、LCM(24000,60000)=120000となる。いくつかの場合において、様々なフレームレートの組み合わせに対するLCM値を事前に計算しておいた参照テーブル(lookup table)を用意し、この参照テーブルからLCMを取得することもできる。したがって、
図7のテーブル700に示すように、時間スケールを、1000目盛り/秒、90000目盛り/秒、又は1000000目盛り/秒から、120000目盛り/秒へと変更する(「時間スケール」行701に示す)と、各フレームレートのフレーム間隔(「フレームレート」列に示す)がいずれも整数となる。例えば、24fpsで符号化された映像のフレーム間隔は5000ミリ秒となり、59.94fpsで符号化された映像のフレーム間隔は2002ミリ秒となり、120fpsで符号化された映像のフレーム間隔は1000ミリ秒となる。これらのフレーム間隔はいずれも整数値であり、よってフレーム持続時間は一定となる。このようにフレーム継続時間を一定とすることにより、空白フレーム、フレーム落ち、フレームダブり、再生エラーや再生異常などの、再生中にフレーム継続時間が変化する場合に生じる異常が回避される。
【0038】
音声メディアアイテムの場合、HE-AAC符号化方式(HEAAC)のフレームレートは、1フレーム当たり2048サンプル又は1024サンプルであり、音声サンプリングレートが48kHzの場合のフレームレートは、それぞれ23.4375fps、46.875fpsのとなる。また、ドルビーデジタルアトモス(Dolby Digital Atmos:DDP/Atomos)の場合、1フレーム当たり1536サンプルで符号化されるため、31.25fpsで符号化が行われる。
図8のテーブル800は、音声アイテムである点を除けば、
図7と同様のテーブルを示している。テーブル800では、フレームレート(列802)が23.4273の場合に、1000及び1000000の時間スケール(行801)においてフレーム間隔が小数値となっている。しかし、120000目盛り/秒の一元的時間スケールを使用すると、フレームレート23.4273fpsに対するフレーム間隔は5120目盛りとなり、フレームレート31.25fpsに対するフレーム間隔は3840目盛りとなる。
図9のテーブル900に示すように、32kHzの音声サンプリングレートでは、図示のフレームレート(列902)及び時間スケール(列901)の場合、1000、90000、120000の時間スケールで、フレーム間隔が一定となる。
【0039】
いくつかの実施形態では、映像アクセスユニットに合わせて44100Hzの音声が使用される。この場合、考えられるすべての状況に対応できる時間スケールは、非常に大きな値(17640000)となる。
図10のテーブル1000には、様々なサンプリングレート(列1001)を、フレームのサイズ(列1002)、フレーム間隔(列1003)、及び様々な時間スケール(列1004~1008)とともに示している。テーブル1000からわかるように、図示の映像/音声形式のうち44100Hzの音声を除く形式では、時間スケールを120000とするとフレーム間隔が一定となる。一方、音声が44100Hzで提供される場合には、テーブル1000に示すアクセスユニット形式のいずれに対しても一定のフレーム間隔を生成する万能な時間スケールの値は、17640000となる。
【0040】
いくつかの実施形態では、本明細書のシステムは、1組の映像周波数と音声サンプリングレートに重点的に対処する。かかる場合には、以下(1)~(4)を含むアルゴリズムを実装することにより、音声及び映像用に一定のフレーム間隔を生成することができる最小時間スケールを決定することができる。(1)([音声サンプリングレート],[フレームのサイズ])の最大公約数(greatest common divisor:GCD)(D)を求める。例えば、サンプリングレートが48000Hzの場合、フレームのサイズは1536(DDP)及び2048(HE-AAC)となるため、D=GCD(48000,1536,2048)=128となる。(2)A=[音声サンプリングレート]/Dを求める。上記の例ではサンプリングレートが48000Hzであるため、A=48000/128=375となる。(3)
図11のテーブル1100から、スケーリング後の映像フレームレートVを取得する。テーブル1100には、列1101にメディアアイテムの様々なフレームレートを、列1102にスケーリング後のフレームレートを示している。(4)[時間スケール]=LCM(V,A)を求める。例えば、音声周波数を48000Hzとすると、
図12のテーブル1200に示すように、フレームレート(列1201)とスケーリング後のフレームレート(列1202)を用いて時間スケールを計算することができる。この実施形態では、利用可能なメディアアイテム形式のそれぞれに対して1つの一元的時間スケールを使用している。
【0041】
33ビットの提示タイムスタンプ(例えば、MPEG1形式又はMPEG2形式の場合)には33ビットが割り当てられているため、少なくともいくつかの実施形態では、時間スケール値が大きくなるほど、33ビットの符号なし整数にラップアラウンド(桁溢れ)が発生しやすくなると考えらえる。例えば、時間スケールが90000目盛り/秒の場合、提示タイムスタンプのラップアラウンドが発生する(つまり、メモリバッファをオーバフローする)までに約26時間かかることになる。また、120000目盛り/秒の時間スケールを用いた場合には、提示タイムスタンプのラップアラウンドが発生するまでに約19時間かかることになる。しかし、時間スケールが17640000目盛り/秒の場合には、約8分しかかからない。よって、少なくともいくつかの実施形態では、44.1kHzの音声と組み合わせる特定の映像フレームレートごとに、時間スケールを計算することが好ましい場合がある。44.1kHzの音声の場合、
図13のテーブル1300の列1303に示されているように、A=11025となる。テーブル1300には、他のフレームレート(列1301)、スケーリング後のフレームレート(列1302)、時間スケール値(列1303)も示している。
【0042】
提示タイムスタンプは、整数値の固定ビット数で示される。そのため、上述したように、提示タイムスタンプが単調増加すると、いずれ、提示タイムスタンプの(例えば、33ビットの)メモリバッファから提示タイムスタンプの値が溢れるラップアラウンドが発生する。一実施形態では、32ビットのフィールドで定義されるAV1により、オプションのタイミング情報コンテナを提供する。48kHzの音声では、上述のアルゴリズムを実装することにより、テーブル1200に示す時間スケール値(列1203)と、これに対応する32ビットの符号なし値に対するラップアラウンド発生までの時間(以下、ラップアラウンド時間)とが求められる。因みに、時間スケールが90000目盛り/秒で32ビットを使用する場合のラップアラウンド時間は約13時間となる。ラップアラウンド時間の最適化を目的とする実施形態では、映像フレームレートに基づいて最適化された時間スケールが選択される。よって、
図14のテーブル1400に示す時間スケール(列1403)を使用することにより、選択した各フレームレート1401とそのスケーリング後のフレームレート1402に対するラップアラウンド時間1404が示される。
【0043】
いくつかの実施形態では、フレーム落ちや再生中のフリーズを避けるために、より分解能の高い提示タイムスタンプを用いることもできる。復号器又はシステムに入力される提示タイムスタンプの分解能が低い場合には、式PTS’=PTS*TS’/TSを用いたスケーリング手法により、提示タイムスタンプを或る時間スケール(TS)から別の時間スケール(TS’)に変換することができる。しかし、少なくともいくつかの場合において、提示タイムスタンプの精度を回復するのが難しい場合もある。例えば、
図15のテーブル1500に示すように、TS=1000とし、TS’=1000000とする。
図15から分かるように、各フレーム#(列1501)に対して、PTS(列1502)が、スケーリング後の提示タイムスタンプ(列1503)、ネイティブ提示タイムスタンプ(列1504)と併せて示されている。これらの各フレームには、結果として丸め誤差(列1505)が生じている。フレームレートに基づいた最小フレーム間隔が一定となることをシステムは知っているため、提示タイムスタンプのフレーム間隔は、最小フレーム間隔(D)又は最小フレーム間隔の倍数(N×D)となる。例えば、時間スケールが120000の場合、23.97fpsのフレームレートに対する最小フレーム間隔Dは、目盛り5005個分となる。そして、
図16の実施形態1600に示すように、実際のフレーム間隔は目盛り5005個分又は目盛り(5005の倍数)個分となるはずである。
図16には、最小の間隔(D)をフレーム1601とフレーム1602の間隔として示すとともに、DのN倍の間隔(フレーム1602とフレーム1603の間に示す「10010」の間隔)も示している。
【0044】
いくつかの実施形態では、提示タイムスタンプを最適化(リマスタリング)するアルゴリズムを実装することもできる。この例では、1フレーム目の提示タイムスタンプをPTSin0とし、第1のPTSout0に対してスケーリングを行う。なお、PTSout0=PTSin0*TSout/TSinである。
【0045】
このアルゴリズムは、以下の(1)~(3)のステップを含むことができる。(1)フレームレート(F)と入力時間スケール(TSin)及び出力時間スケール(TSout)とに基づいてフレーム間隔(Din/Dout)を求める。なお、Din=TSin/F、Dout=TSout/Fである。(2)現在のPTSinに基づき、丸め関数I=round((PTSin-PTSin0)/Din)を用いてフレームインデックス(I)を取得する。(3)最適化(リマスタリング)後の提示タイムスタンプを、PTSout=I*Dout+PTSout0とする。
【0046】
PTS
inが0から始まる場合には、上記のアルゴリズムにより(少なくともいくつかの場合において完璧に)実質的にどのような分解能の提示タイムスタンプも復元することができる。一方、PTS
inが0から始まらない場合には、定数の初期オフセット値が存在し、これがPTS
out0からすべてのPTS
outに伝播している可能性がある。
図17のテーブル1700には、各フレーム#(列1701)と、提示タイムスタンプ値(列1702)と、リマスタリング後の提示タイムスタンプ値(列1703)と、ネイティブ提示タイムスタンプ値(列1704)とが示されており、図示のとおり、各フレーム#のリマスタリング後の提示タイムスタンプの丸め誤差(列1705)はゼロである。リマスタリング後の提示タイムスタンプ値の丸め誤差がゼロであるということは、各リマスタリング後の提示タイムスタンプ値により得られるフレーム間隔が、与えられた適切な出力時間スケールで一定となることを示しているため、フレーム間隔が変動してしまうという問題が確認されているメディアアイテムの問題を軽減することができる。
【0047】
他の実施形態では、一元的時間スケールを基礎にして可変フレームレートストリーミングを行う。可変フレームレートストリーミングの使用が考えられる状況は複数ある。例えば、映像セグメント間でフレームレートが異なっているケースが考えられる。この場合、一元的時間スケールを用いることにより、シームレスにフレームレートを切り替えて、黒い画面などの空白画面が表示されるのを回避することができる。このケースでは、ラップアラウンド時間を最適化するなどのために、映像セグメント間で時間スケールが異なっている。他の実施形態は、可変リフレッシュレート(variable refresh rate:VRR)コンテンツのキャプチャ及びストリーミングを行う場合である。このケースは、符号化を行うソース側の利用事例であり、様々なフレームレート間で時間スケールを統一させる必要がある。このケースでは、VRRコンテンツのキャプチャ及びストリーミングの時間スケールとしてテーブル700の120000目盛り/秒の時間スケールを実装する。これは、時間スケールを120000目盛り/秒とすることにより、テーブル700に示す各フレームレートに対するフレーム間隔が整数値となるためである。
【0048】
1つ目のケースでは、提示タイムスタンプは、([目盛り値],[時間スケール])の組で与えられる。したがって、フレームレートがF0からF1に変化する状況下でクライアント再生デバイス上でのレンダリングを行うために、一元的時間スケール(TSout)に基づいた提示タイムスタンプ情報を提供するアルゴリズムとして、本明細書の実施形態では、以下のアルゴリズムを規定する。この例では、まず、1フレーム目の提示タイムスタンプをtickin0、TSin=TSin0、F=F0とし、第1のtickout0に対してスケーリングを行う。なお、tickout0=tickin0*TSout/TSinである。次に、システムは以下の(1)~(4)のルーチンを利用して、([目盛り値],[時間スケール])を一元的時間スケールの新たな目盛り値へと変換する。(1)フレームレート(F)と入力時間スケール(TSin)及び出力時間スケール(TSout)とに基づいてフレーム間隔(Din/Dout)を求める。なお、Din=TSin/F、Dout=TSout/Fである。(2)現在のtickinに基づき、丸め関数I=round((tickin-tickin0)/Din)を用いてフレームインデックス(I)を取得する。(3)リマスタリング後の目盛り値を、tickout=I*Dout+tickout0とする。(4)フレームレートが変化して(F≠F1)、新たな時間スケール(TSin1)に更新(TSin≠TSin)されると、TSin=TSin1、tickin0=tickout*TSin/TSout、tickout0=tickout、F=F1と設定する。
【0049】
このように、上述のアルゴリズムによれば、映像セグメント間で時間スケールが異なっている場合でも、入力された提示タイムスタンプが、より正確な一元的時間スケールの提示タイムスタンプへと変換される。上記のプロセスは、少なくともいくつかの実施形態では、クライアント再生デバイス上で符号化を行った後に実行されるため、当該プロセスでは、ラップアラウンドを監視する必要なしに、より精度の高い(例えば、64ビットの精度の)時間スケールを一元的時間スケールに使用することができる。このため、少なくともいくつかの実施形態では、120000目盛り/秒の時間スケールが最適な選択となる。
【0050】
上述の
図1及び
図2を参照した説明で述べたように、様々な異なるメディアアイテム(例えば、メディアアイテム122)のそれぞれについて、配信用にメディアアイテムを符号化する際に用いた現在の時間スケール108を特定するように構成された方法及びシステムを提供することができる。また、これらの方法及びシステムは、当該異なるメディアアイテムについて、メディアアイテムのそれぞれのフレーム間隔を一定とする一元的時間スケール110を同定又は計算し、当該異なるメディアアイテムのうちの少なくとも1つを、現在の時間スケール108から同定された一元的時間スケール110へと変更し、これにより、変更後のメディアアイテム112のフレーム間隔を一定とするようにも構成される。いくつかの場合では、当該異なるメディアアイテムは、異なるフレームレート(例えば、23.97フレーム/秒、24フレーム/秒、25フレーム/秒、29.97フレーム/秒、30フレーム/秒、59.94フレーム/秒、60フレーム/秒、120フレーム/秒、240フレーム/秒、又は300フレーム/秒)で符号化された映像メディアアイテムであり、他の場合には、当該異なるメディアアイテムは、異なるフレームレート(例えば、1フレーム当たり1024サンプル、1536サンプル、又は2048サンプルのフレームレート)を有する音声メディアアイテムである。いくつかの例では、当該異なるメディアアイテムは、再生中にシーンの順序に影響を与えるような決定をユーザ側で行うことが可能なインタラクティブなメディアアイテムである。
【0051】
いくつかの実施形態では、特定のメディアアイテム群が選択される。このメディアアイテム群には、映像アイテム、音声アイテム、又はそれらの組み合わせを含めることができる。メディアアイテム群内の少なくともいくつかのメディアアイテムは、少なくとも本例では、指定された様々な映像フレームレート及び/又は音声フレームレートを有している。かかる場合には、当該メディアアイテム群のフレームレートの最大範囲が既知(例えば、24fps~60fpsの範囲)とされる。よって、
図1に示す同定モジュール109が、計算などによって一元的時間スケール110を同定する場合に、多くのフレームレート候補(この場合、60fpsを上回るフレームレートや24fpsを下回るフレームレート)を検討する必要がなくなり、24~60fpsのフレームレートだけに集中することができる。したがって、同定モジュール109は、音声アイテム及び/又は映像アイテムからなる当該メディアアイテム群専用に最適化された一元的時間スケール110を、計算などにより同定することができる。かかる場合、音声アイテム及び/又は映像アイテムからなる他のメディアアイテム群に比べて最小公倍数を格段に小さくすることができるため、1秒当たりの目盛り数の少ない一元的時間スケール110でも、様々なフレームレート(本例では24~60fpsのフレームレート)に対するフレーム間隔を一定にすることができる。1秒あたりの目盛り数を減らすことで、単調増加する提示タイムスタンプ値のラップアラウンド時間が短くなり、提示タイムスタンプがメモリバッファから溢れてしまう可能性を低減することができる。そして、選択されたメディアアイテム群の一元的時間スケール110が特定されると、時間スケール変更モジュール111が、メディアアイテム群内のメディアアイテムに対して新たな提示タイムスタンプを生成することにより、これらのメディアアイテムを一元的時間スケール110に合わせて変更する。
【0052】
いくつかの実施形態では、提示タイムスタンプが単調増加する場合、一元的時間スケールで使用する単位数(すなわち、1秒当たりの目盛りの数)は、メディアアイテムのラップアラウンド時間を最大化するように選択される。少なくともいくつかの場合において、ラップアラウンド時間を最大化するには、一元的時間スケール110の単位数として、各メディアアイテムのフレーム間隔を一定にすることが可能な最小の単位数を選択する必要がある。単位数が小さくなるほど、単調増加する提示タイムスタンプ値の増加速度を下げることができる。このように単調増加の速度を下げることにより、ラップアラウンド時間に到達するまでに要する時間を最大化することができる。いくつかの場合では、メディアアイテム群内のメディアアイテムのラップアラウンド時間を最大化するために選択される単位数は、群内の映像アイテムの映像フレームレートに基づいて選択され、他の場合には、メディアアイテム群内のメディアアイテムのラップアラウンド時間を最大化するために選択される単位数は、群内の音声アイテムの音声フレームレートに基づいて選択される。
【0053】
いくつかの場合において、同定された一元的時間スケール110は、提示タイムスタンプ間隔を含んでいる。提示タイムスタンプ間隔は、一定である最小フレーム間隔とは異なる場合がある。提示タイムスタンプ間隔は、最小フレーム間隔又は最小フレーム間隔の倍数で構成される。
図16に示すように、例えば、フレーム1601とフレーム1602の間隔は5005ミリ秒であり、これはフレーム1601とフレーム1602の間の最小フレーム間隔を表している。一方、フレーム1602と1603の間のフレーム間隔は5005の倍数(この場合、5005×2ミリ秒、つまり10010ミリ秒)である。いくつかの場合において、提示タイムスタンプ間隔を、指定された分解能に復元(リマスタリング)することもできる。かかる場合には、一定である最小フレーム間隔又は最小フレーム間隔の倍数を提示タイムスタンプ間隔として求め、これをメディアアイテムに適用する。したがって、リマスタリング処理は、一定のフレーム間隔を特定するステップと、特定した一定のフレーム間隔を利用して、入力された時間分解能(例えば、ミリ秒、マイクロ秒、ナノ秒など)を、スケーリング後の提示タイムスタンプ間隔と丸め誤差のないネイティブ提示タイムスタンプ間隔とが一致するように変更することにより、他の時間分解能を出力するステップとを含む。そして、リマスタリング後の提示タイムスタンプ間隔が、メディアアイテムの各フレームに適用される。したがって、
図17に示すように、リマスタリング後の提示タイムスタンプ(列1703)は、ネイティブ提示タイムスタンプ(列1704)と等しい提示タイムスタンプ間隔を有しており、したがって、フレーム飛び、フレーム余り、空白フレームなどの再生エラーにつながる恐れのある丸め誤差(列1705)が解消されている。
【0054】
いくつかの実施形態では、一定のフレーム間隔を維持しながら、複数のメディアアイテムを可変フレームレートでストリーミングすることを可能にする一元的時間スケール110を同定することもできる。いくつかの場合において、同一メディアアイテム内でフレームレートが切り替えられる場合がある。例えば、メディアアイテムがインタラクティブな映像である場合、サーバ(配信)側で、映像の一部に対して異なるフレームレートで符号化を施している可能性がある。かかる場合には、サーバが、ユーザの再生デバイス(例えば、再生デバイス116)上で再生を行うためにインタラクティブメディアアイテムを提供する際には、これらの異なるフレームレートで提供が行なわれることになる。この場合、再生デバイス116は、可変フレームレートでメディアアイテムをストリーミングすることができる一元的時間スケール110の計算、適用、又はその両方を行う。この一元的時間スケールにより、インタラクティブメディアアイテムなどの異なるフレームレートで符号化されたメディアアイテムのフレーム間隔も含めて、提供されたメディアアイテムのフレーム間隔が一定となる。したがって、かかる実施形態では、一元的時間スケールを使用して一定のフレーム間隔を維持しながら、フレームレートの異なるメディアアイテムを可変フレームレートでストリーミングすることができる。また同様に、少なくともいくつかの実施形態では、可変リフレッシュレートを使用してキャプチャされた映像コンテンツを有するメディアアイテムについても、(サーバからの)ストリーミングを可変フレームレートで行いながら、再生は一元的時間スケール110を使用して一定のフレーム間隔で行うことができる。
【0055】
いくつかの場合において、一元的時間スケール110を同定又は計算するステップは、時間スケールの異なる様々なメディアアイテムから得られる、入力された提示タイムスタンプを、一元的時間スケールに基づいた提示タイムスタンプに変換するステップを含んでいる。この点については、上述の
図17において、リマスタリング後の提示タイムスタンプ値が、元々はあった丸め誤差が解消されるように工夫されているため、ネイティブ提示タイムスタンプ値と等しくなることが示されているが、この
図17に概ね示されている。いくつかの例では、入力された提示タイムスタンプから得られる、これら変換後の提示タイムスタンプを使用することにより、提示タイムスタンプカウンタのラップアラウンドの回避、又は少なくともラップアラウンドが発生するまでの時間の延長を行うことができる。ラップアラウンドの発生を抑えることは、ひいては、再生エラーの追加発生を起こさずにラップアラウンドをスムーズに処理するために講じる必要のある様々な措置を削減することにもつながる。したがって、このようにして、一元的時間スケールを提供することにより、メディアアイテムの再生時に各フレームのフレーム間隔が同一となるようにすることができる。しかも、ソース側の符号化がメディアアイテム内において同一のフレームレートで行われる場合、ソース側の符号化フレームレートがメディアアイテム内において変化している場合のいずれの場合にも行うことができる。時間間隔を一定とすることにより、再生に伴う一般的な問題の多くを避けることができるため、よりスムーズで信頼性の高い(つまり、より楽しい)メディア再生体験をユーザに提供することができる。
【0056】
いくつかの実施形態では、これに対応するシステムが提供される。当該システムは、少なくとも1つの物理プロセッサと、コンピュータ実行可能命令を含む物理メモリと、を備える。コンピュータ実行可能命令は、物理プロセッサによって実行された場合に、以下のステップ:複数の異なるメディアアイテムであって、該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、複数のメディアアイテムについて、該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから、同定された一元的時間スケールへと変更し、これにより、変更後の少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、を物理プロセッサに実行させる。
【0057】
他の実施形態では、非一時的なコンピュータ可読媒体が提供される。当該コンピュータ可読媒体は、1つ以上のコンピュータ実行可能命令を含み、コンピュータ実行可能命令は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行された場合に、以下のステップ:複数の異なるメディアアイテムであって、該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、複数のメディアアイテムについて、該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから、同定された一元的時間スケールへと変更し、これにより、変更後の少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、をコンピューティングデバイスに実行させる。
【0058】
以下では、
図19を参照して、エンドノードにコンテンツの提供が行われ、コンテンツ要求リクエストが特定のエンドノードに案内される例示的なエコシステムについて、詳細に説明する。
図20及び
図21に関する説明は、再生セッション中に使用される例示的な配信インフラと例示的なコンテンツプレーヤの概要をそれぞれ示している。これらの例示的なエコシステム及び配信インフラは、上述の
図1~
図18を参照した説明で述べた実施形態のうちのいずれかで実装される。
【0059】
図19は、コンテンツプレーヤ1920と通信を行う配信インフラ1910を備えるコンテンツ配信エコシステム1900のブロック図である。いくつかの実施形態では、配信インフラ1910は、特定のデータレートでデータを符号化して、符号化を施したデータをコンテンツプレーヤ1920に伝送するように構成されている。コンテンツプレーヤ1920は、符号化を施したデータを、配信インフラ1910を介して受信し、このデータを復号してユーザに向けて再生するように構成されている。配信インフラ1910が提供するデータには、例えば、音声、映像、テキスト、画像、アニメーション、インタラクティブコンテンツ、触覚データ、仮想(拡張)現実データ、位置データ、ゲームデータなどの、ストリーミングにより提供が行われるような種類のデータが含まれる。
【0060】
配信インフラ1910は、コンテンツをエンドユーザに配信するように構成された、任意のサービス、ハードウェア、ソフトウェアなどの、インフラコンポーネントを広く表している。例えば、配信インフラ1910は、コンテンツ集約(content aggregation)システム、メディアの符号化変換・パッケージ化(media transcoding and packaging)サービス、ネットワークコンポーネントなどの様々な種類のハードウェア及びソフトウェアのうちの少なくとも1つ以上を備えている。いくつかの場合において、配信インフラ1910は、非常に複雑な配信システム、又はメディアサーバ若しくはメディアデバイス単体、又はその中間の態様で実装される。いくつかの例では、サイズや複雑さに関係なく、配信インフラ1910は、少なくとも1つの物理プロセッサ1912と、少なくとも1つのメモリデバイス1914とを備えている。メモリ1914には、1つ以上のモジュール1916の格納又はロードが行われ、これにより、本明細書において説明するような適応ストリーミングが可能となる。
【0061】
コンテンツプレーヤ1920は、配信インフラ1910を介して提供された音声及び/又は映像コンテンツを再生する機能を有する任意の種類又は形態のデバイス又はシステムを広く表している。コンテンツプレーヤ1920の例としては、携帯電話、タブレット端末、ノート型コンピュータ、デスクトップ型コンピュータ、テレビ、セットトップボックス、デジタルメディアプレーヤ、仮想現実ヘッドセット、拡張現実メガネなどの、デジタルコンテンツのレンダリング機能を有する任意の種類又は形態のデバイスが挙げられるが、これらに限定されるものではない。配信インフラ1910と同様に、コンテンツプレーヤ1920も、物理プロセッサ1922と、メモリ1924と、1つ以上のモジュール1926とを備えている。本明細書に記載の適応ストリーミング処理の一部又はすべての実行又は有効化は、モジュール1926が行うとともに、いくつかの例では、配信インフラ1910のモジュール1916がコンテンツプレーヤ1920のモジュール1926と連携して、デジタルコンテンツの適応ストリーミングを行う。
【0062】
特定の実施形態では、
図19に示すモジュール1916、1926のうちの1つ以上が、1つ以上のソフトウェアアプリケーション又はプログラムを表している。かかるソフトウェアアプリケーション又はプログラムは、コンピューティングデバイスによって実行された場合に、コンピューティングデバイスに1つ以上のタスクを実行させるものである。例えば、以下でさらに詳述するように、モジュール1916、1926のうちの1つ以上が、1つ以上の汎用コンピューティングデバイス上で実行されるように格納及び構成されたモジュールを表している。また、
図19に示すモジュール1916、1926のうちの1つ以上は、1つ以上のタスクを実行するように構成された1つ以上の専用コンピュータ全体又はその一部も表している。
【0063】
さらに、本明細書に記載のモジュール、プロセス、アルゴリズム、又はステップのうちの1つ以上が、データ、物理デバイス、物理デバイスの表現、又はそのいずれかの組み合わせについて、その形態を変換するものである。例えば、本明細書に記載のモジュールのうちの1つ以上は、符号化すべき音声データを受信し、音声データを符号化することにより変換し、符号化結果を適応音声ビットレートシステム用に出力し、コンテンツプレーヤに変換結果を送信し、変換されたデータをレンダリングしてエンドユーザの視聴に供する。これに加えて又は代えて、本明細書に記載のモジュールのうちの1つ以上は、物理コンピューティングデバイス上で実行される、物理コンピューティングデバイス上にデータを格納するなどの方法により、物理コンピューティングデバイスと相互作用することによって、当該物理コンピューティングデバイスの、プロセッサ、揮発性メモリ、不揮発性メモリなどの任意の部分の形態を変換する。
【0064】
物理プロセッサ1912、1922は、コンピュータ可読命令の解釈、実行、又はその両方を行う機能を有する任意の種類又は形態のハードウェア実装処理ユニットを広く表している。一例では、物理プロセッサ1912が、モジュール1916のうちの1つ以上に対するアクセス、変更、又はその両方を行い、物理プロセッサ1922が、モジュール1926のうちの1つ以上に対するアクセス、変更、又はその両方を行う。これに加えて又は代えて、物理プロセッサ1912、1922は、モジュール1916、1926のうちの1つ以上を実行して、デジタルコンテンツの適応ストリーミングの支援を行う。物理プロセッサ1912、1922の例としては、マイクロプロセッサ、マイクロコントローラ、中央処理装置(CPU)、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、これらのうちの1つ以上の一部、これらのうちの1つ以上の変化形又は組み合わせなどの任意の適切な物理プロセッサが挙げられるが、これらに限定されるものではない。
【0065】
メモリ1914、1924は、データ、コンピュータ可読命令、又はその両方を記憶する機能を有する、任意の種類又は形態の揮発性又は不揮発性の記憶デバイス又は記憶媒体を広く表している。一例では、メモリ1914、1924は、モジュール1916、1926のうちの1つ以上の格納、ロード、保持、又はそのいずれかの組み合わせを行う。メモリ1914、1924の例としては、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、光ディスクドライブ、キャッシュ、これらのうちの1つ以上の変化形又は組み合わせなどの任意の適切なメモリデバイス又はメモリシステムが挙げられるが、これらに限定されるものではない。
【0066】
図20は、特定の実施形態に係るコンテンツ配信インフラ1910の例示的なコンポーネントを示すブロック図である。配信インフラ1910は、記憶装置2010と、サービス2020と、ネットワーク2030とを含む。記憶装置2010は、エンドユーザに配信するためのコンテンツを格納する機能を有する任意のデバイス、デバイスセット、システム、又はそのいずれかの組み合わせを広く表している。記憶装置2010は、テラバイト又はペタバイトのデータを格納する機能を有するデバイスを備えた中央リポジトリを備える。また、これに代えて又は加えて、記憶装置2010は、分散記憶システム(例えば、インターネットで相互接続された場所においてコンテンツのミラーリング(キャッシュ格納)を行うことにより、特定の地域内においてミラーリングにより複製されたコンテンツに対する高速アクセスを提供する機器)を備える。また、記憶装置2010を、任意の他の適切な方法で構成することもできる。
【0067】
図示しているように、記憶装置2010は、コンテンツ2012、ユーザデータ2014、ログデータ2016、又はそのいずれかの組み合わせを含む、様々な互いに異なるアイテムを格納することができる。コンテンツ2012は、テレビ番組、映画、ビデオゲーム、ユーザが作成したコンテンツなどの任意の適切な種類又は形態のコンテンツ、又はそのいずれかの組み合わせを含む。ユーザデータ2014は、個人情報(personally identifiable information:PII)、支払い情報、お気に入り設定(preference settings)、言語及びアクセシビリティの設定などの、特定のユーザ又はコンテンツプレーヤに関連付けられた情報、又はそのいずれかの組み合わせを含む。ログデータ2016は、閲覧履歴情報、ネットワークスループット情報などの、ユーザによる配信インフラ1910への接続又は相互作用に関連付けられた指標、又はそのいずれかの組み合わせを含む。
【0068】
サービス2020は、個人向けカスタマイズ(personalization)サービス2022、符号化変換サービス2024、パッケージ化サービス2026、又はそのいずれかの組み合わせを含む。個人向けカスタマイズサービス2022は、お勧め情報(recommendation)、コンテンツストリームなどの、配信インフラ1910を利用するユーザのユーザ体験要素の個人向けカスタマイズを行う。符号化変換サービス2024は、複数の異なるビットレートでメディアの圧縮を行う。以下でより詳細に説明するように、これにより、異なる符号化方式の間をリアルタイムに切り替えることが可能となる。パッケージ化サービス2026は、符号化を施した映像のパッケージ化を行う。パッケージ化を終えると、ネットワーク2030などの配信ネットワーク上にストリーミング用の映像が展開される。
【0069】
ネットワーク2030は、通信又はデータ転送を支援する機能を有する任意の媒体やアーキテクチャを広く表している。ネットワーク2030は、無線接続、有線接続、又はその両方を利用して通信又はデータ転送の支援を行う。ネットワーク2030の例としては、イントラネット、広域ネットワーク(wide area network:WAN)、ローカルエリアネットワーク(local area network:LAN)、パーソナルエリアネットワーク(personal area network:PAN)、インターネット、電力線通信(power line communications:PLC)、セルラーネットワーク(例えば、GSM(Global System for Mobile Communications)規格のネットワーク)、これらのうちの1つ以上の一部、これらのうちの1つ以上の変化形又は組み合わせなどの任意の適切なネットワークが挙げられるが、これらに限定されるものではない。例えば、
図20に示すように、ネットワーク2030は、インターネット基幹回線網(Internet backbone)2032、インターネットサービスプロバイダ網2034、ローカルネットワーク網2036、又はそのいずれかの組み合わせを含む。詳細は後述するが、これらのネットワークセグメントのうちの1つ以上に、帯域幅の制限やボトルネックが発生すると、これが引き金となり、映像及び/又は音声のビットレート調整が行われる。
【0070】
図21は、
図19に示すコンテンツプレーヤ1920の例示的な実装態様のブロック図である。コンテンツプレーヤ1920は、コンピュータ実行可能命令の読み取り機能を有する任意の種類又は形態のコンピューティングデバイスを広く表している。コンテンツプレーヤ1920としては、ノート型コンピュータ、タブレット端末、デスクトップ型コンピュータ、サーバ、携帯電話、マルチメディアプレーヤ、組み込みシステム、ウェアラブルデバイス(例えば、スマートウォッチ、スマートグラスなど)、スマートビークル、ゲーム機、スマート家電などのIoT(Internet of Things)デバイス、これらのうちの1つ以上の変化形又は組み合わせなどの任意の適切なコンピューティングデバイスが挙げられるが、これらに限定されるものではない。
【0071】
図21に示すように、コンテンツプレーヤ1920は、プロセッサ1922とメモリ1924に加え、通信インフラ2102とネットワーク接続2124に結合された通信インタフェース2122とをさらに備えている。また、コンテンツプレーヤ1920は、グラフィックスデバイス2128に結合されたグラフィックスインタフェース2126と、入力デバイス2136に結合された入力インタフェース2134と、記憶デバイス2140に結合された記憶装置インタフェース2138とをさらに備えている。
【0072】
通信インフラ2102は、コンピューティングデバイスの1つ以上のコンポーネント間における通信を支援する機能を有する任意の種類又は形態のインフラを広く表している。通信インフラ2102の例としては、任意の種類又は形態の通信バス(例えば、周辺機器相互接続(peripheral component interconnect:PCI)バス、PCIエクスプレス(PCI Express:PCIe)バス、メモリバス、フロントサイドバス、IDE(Integrated Drive Electronics)バス、制御バス又はレジスタバス、ホストバスなど)が挙げられるが、これらに限定されるものではない。
【0073】
上述したように、メモリ1924は、データ、他のコンピュータ可読命令、又はその両方を記憶する機能を有する、任意の種類又は形態の揮発性又は不揮発性の記憶デバイス又は記憶媒体を広く表している。いくつかの例では、メモリ1924は、プロセッサ1922により実行されるオペレーティングシステム2108の格納、ロード、又はその両方を行う。一例では、オペレーティングシステム2108は、コンピュータのハードウェア及びソフトウェアリソースの管理、コンテンツプレーヤ1920上のコンピュータプログラム及び/若しくはアプリケーションへの共通サービスの提供、又はその両方を行うソフトウェアを含み、並びに/又は表すものである。
【0074】
オペレーティングシステム2108は、ハードウェアコンポーネント(例えば、グラフィックスインタフェース2126、音声インタフェース2130、入力インタフェース2134、及び/又は記憶装置インタフェース2138)の管理などの様々なシステム管理機能を実行する。また、オペレーティングシステム2108は、再生アプリケーション2110のプロセス及びメモリの管理モデルの提供も行う。再生アプリケーション2110のモジュールには、例えば、コンテンツバッファ2112と、音声復号器2118と、映像復号器2120とが含まれる。
【0075】
再生アプリケーション2110は、通信インタフェース2122を介してデジタルコンテンツを取得し、グラフィックスインタフェース2126を介してデジタルコンテンツを再生するように構成されている。グラフィックスインタフェース2126は、レンダリングされた映像信号をグラフィックスデバイス2128に送信するように構成されている。通常動作では、まず、特定のタイトル又は特定のコンテンツの再生を要求するユーザからのリクエストを、再生アプリケーション2110が受信する。すると、再生アプリケーション2110は、リクエストで要求されたタイトル(以下、リクエストタイトル)に関連付けられた1つ以上の符号化された映像ストリーム及び音声ストリームを同定する。再生アプリケーション2110が、リクエストタイトルに関連付けられた符号化ストリームの場所を特定すると、次に、再生アプリケーション2110は、リクエストタイトルに関連付けられた符号化ストリームのそれぞれに関連付けられたシーケンスヘッダインデックスを、配信インフラ1910からダウンロードする。符号化コンテンツに関連付けられたシーケンスヘッダインデックスには、当該符号化コンテンツに含まれるデータの符号化シーケンスに関連する情報が含まれている。
【0076】
一実施形態では、再生アプリケーション2110は、リクエストタイトルに関連付けられたコンテンツのシーケンスデータをダウンロードすることから当該コンテンツのダウンロードを開始する。なお、再生の立ち上がり時間を最小限に抑えるため、シーケンスデータは、最低の音声及び/又は映像再生ビットレートで符号化されている。そして、リクエストで要求されたデジタルコンテンツファイルを、コンテンツバッファ2112にダウンロードする。コンテンツバッファ2112は、先入れ先出しキューとして機能するように構成される。一実施形態では、データは、映像データの1単位又は音声データの1単位を含むデータ単位ごとにダウンロードされる。リクエストで要求されたデジタルコンテンツファイルに関連付けられた映像データについて、数単位の映像データ単位がコンテンツプレーヤ1920にダウンロードされると、これらの映像データ単位がコンテンツバッファ2112にプッシュされる。同様に、リクエストで要求されたデジタルコンテンツファイルに関連付けられた音声データについて、数単位の音声データ単位がコンテンツプレーヤ1920にダウンロードされると、これらの音声データ単位がコンテンツバッファ2112にプッシュされる。一実施形態では、映像データ単位はコンテンツバッファ2112内の映像バッファ2116に格納され、音声データ単位はコンテンツバッファ2112の音声バッファ2114に格納される。
【0077】
映像復号器2120は、映像バッファ2116から映像データ単位を読み出し、読み出した映像データ単位を、一定の再生時間長に対応する持続時間を有する映像フレームのシーケンスとして出力する。映像バッファ2116から1つの映像データ単位を読み出すと、当該映像データ単位が、映像バッファ2116から有効にデキューされる。そして、映像フレームのシーケンスが、グラフィックスインタフェース2126によりレンダリングを施されて、グラフィックスデバイス2128に送信されることにより、ユーザに対して表示される。
【0078】
音声復号器2118は、音声バッファ2114から音声データ単位を読み出し、読み出した音声データ単位を、復号された映像フレームのシーケンスと時間的に概ね同期がとれた音声サンプルのシーケンスとして出力する。一実施形態では、音声サンプルのシーケンスは音声インタフェース2130に送信され、音声インタフェース2130により音声サンプルのシーケンスが電気音声信号に変換される。そして、この電気音声信号が音声デバイス2132のスピーカに送信され、音声デバイス2132は、電気音声信号に応答した音響出力を生成する。
【0079】
配信インフラ1910の帯域幅の制限や変化が生じている状況では、再生アプリケーション2110は、様々な要因(例えば、シーンの複雑さ、音声の複雑さ、ネットワークの帯域幅、デバイスの性能など)に基づいて、ビットレートの異なる映像符号化方式の間を切り替えながら、映像データや音声データの連続部分のダウンロードとバッファリングを行う。いくつかの実施形態では、音声再生品質よりも映像再生品質が優先される。また、音声再生品質と映像再生品質のバランスとることもできるほか、いくつかの実施形態では、映像再生品質よりも音声再生品質を優先することもできる。
【0080】
グラフィックスインタフェース2126は、映像データのフレームの生成と、映像データのフレームのグラフィックスデバイス2128への送信とを行うように構成されている。一実施形態では、グラフィックスインタフェース2126は、プロセッサ1922と一緒に集積回路の一部として含まれる。また、これに代えて、グラフィックスインタフェース2126を、プロセッサ1922を含むチップセットとは別体の(すなわち、これに一体化されない)ハードウェアアクセラレータとして構成することもできる。
【0081】
グラフィックスインタフェース2126は、グラフィックスデバイス2128に表示するために画像の転送を行うように構成された、任意の種類又は形態のデバイスを広く表している。例えば、グラフィックスデバイス2128は、液晶ディスプレイ(liquid crystal display:LCD)技術、ブラウン管(cathode-ray)技術、発光ダイオード(light-emitting diode:LED)ディスプレイ技術(有機でも無機でもよい)を利用して作製される。いくつかの実施形態では、グラフィックスデバイス2128は、仮想現実ディスプレイ、拡張現実ディスプレイ、又はその両方をさらに備えることもできる。グラフィックスデバイス2128は、技術的に可能な任意の表示用画像生成手段を備える。換言すれば、グラフィックスデバイス2128は、グラフィックスインタフェース2126により転送された情報を視覚的に表示する機能を有する任意の種類又は形態のデバイスを広く表している。
【0082】
図21に示すように、コンテンツプレーヤ1920は、入力インタフェース2134を介して通信インフラ2102に結合された少なくとも1つの入力デバイス2136をさらに備えている。入力デバイス2136は、コンピュータ又は人間が生成した入力をコンテンツプレーヤ1920に提供する機能を有する任意の種類又は形態のコンピューティングデバイスを広く表している。入力デバイス2136の例としては、キーボード、ポインティングデバイス、音声認識デバイス、タッチパネル、ウェアラブルデバイス(例えば、グローブ型、ウォッチ型など)、コントローラ、これらのうちの1つ以上の変化形又は組み合わせなどの、任意の種類又は形態の電子入力機構が挙げられるが、これらに限定されるものではない。
【0083】
コンテンツプレーヤ1920は、記憶装置インタフェース2138を介して通信インフラ2102に結合された記憶デバイス2140をさらに備えている。記憶デバイス2140は、データ、他のコンピュータ可読命令、又はその両方を記憶する機能を有する、任意の種類又は形態の記憶デバイス又は記憶媒体を広く表している。例えば、記憶デバイス2140は、磁気ディスクドライブ、ソリッドステートドライブ、光ディスクドライブ、フラッシュドライブなどとされる。記憶装置インタフェース2138は、記憶デバイス2140とコンテンツプレーヤ1920の他のコンポーネントとの間でデータ伝送を行うための任意の種類又は形態のインタフェース又はデバイスを広く表している。
【0084】
例示的な実施形態
1.以下のステップ:複数の異なるメディアアイテムであって、当該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に当該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、複数のメディアアイテムについて、当該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから、同定された一元的時間スケールへと変更し、これにより、変更後の少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、を含むコンピュータで実装される方法。
【0085】
2.メディアアイテムが映像メディアアイテムを含む、実施形態1に記載のコンピュータで実装される方法。
【0086】
3.映像メディアアイテムが、23.97フレーム/秒、24フレーム/秒、25フレーム/秒、29.97フレーム/秒、30フレーム/秒、59.94フレーム/秒、60フレーム/秒、120フレーム/秒、240フレーム/秒、又は300フレーム/秒のフレームレートで符号化される、実施形態2に記載のコンピュータで実装される方法。
【0087】
4.メディアアイテムが音声メディアアイテムを含む、実施形態1に記載のコンピュータで実装される方法。
【0088】
5.音声メディアアイテムが、1フレーム当たり1024サンプル、1536サンプル、又は2048サンプルのフレームレートを有している、実施形態4に記載のコンピュータで実装される方法。
【0089】
6.複数のメディアアイテムのうち、指定されたメディアアイテム群内にある各メディアアイテムが、指定された映像フレームレート及び音声フレームレートを有しており、一元的時間スケールが、メディアアイテム群内のメディアアイテムの指定された映像フレームレート及び指定された音声フレームレートを最適化するように計算される、実施形態1に記載のコンピュータで実装される方法。
【0090】
7.一元的時間スケールは、複数のメディアアイテムに対して1つ以上の提示タイムスタンプを生成するように実装される、実施形態1に記載のコンピュータで実装される方法。
【0091】
8.1つ以上の提示タイムスタンプが単調増加し、一元的時間スケールに使用される単位が、複数のメディアアイテムのラップアラウンド時間を最大化するように選択される、実施形態6に記載のコンピュータで実装される方法。
【0092】
9.複数のメディアアイテムのラップアラウンド時間を最大化するように選択される単位が、映像フレームレートに基づいて選択される、実施形態8に記載のコンピュータで実装される方法。
【0093】
10.同定された一元的時間スケールが、提示タイムスタンプ(PTS)間隔を有しており、提示タイムスタンプ間隔が、最小フレーム間隔又は最小フレーム間隔の倍数で構成される、実施形態1に記載のコンピュータで実装される方法。
【0094】
11.提示タイムスタンプ間隔を指定された分解能に復元するステップをさらに含む、実施形態10に記載のコンピュータで実装される方法。
【0095】
12.少なくとも1つの物理プロセッサと、コンピュータ実行可能命令を含む物理メモリと、を備えるシステムであって、コンピュータ実行可能命令は、物理プロセッサによって実行された場合に、以下のステップ:複数の異なるメディアアイテムであって、当該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に当該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、複数のメディアアイテムについて、当該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから、同定された一元的時間スケールへと変更し、これにより、変更後の少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、を物理プロセッサに実行させる、システム。
【0096】
13.同定された一元的時間スケールが、一定のフレーム間隔を維持しながら、複数のメディアアイテムを可変フレームレートでストリーミングすることを可能にする、実施形態12に記載のシステム。
【0097】
14.フレームレートの異なるメディアアイテムが、一元的時間スケールを使用して各フレームレートに対して一定のフレーム間隔を維持しながら、可変フレームレートでストリーミングされる、実施形態13に記載のシステム。
【0098】
15.可変リフレッシュレートを使用してキャプチャされた映像コンテンツを有するメディアアイテムが、一元的時間スケールを使用して各フレームレートに対する一定のフレーム間隔を維持しながら、可変フレームレートでストリーミングされる、実施形態12に記載のシステム。
【0099】
16.一元的時間スケールを同定するステップが、時間スケールの異なる複数の異なるメディアアイテムから得られる、1つ以上の入力された提示タイムスタンプ(PTS)を、一元的時間スケールに基づいた提示タイムスタンプに変換するステップを含む、実施形態12に記載のシステム。
【0100】
17.入力された提示タイムスタンプから得られる変換後の提示タイムスタンプを実装することにより、提示タイムスタンプカウンタのラップアラウンドが回避される、実施形態16に記載のシステム。
【0101】
18.複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから、同定された一元的時間スケールへと変更するステップにより、複数のメディアアイテムの再生中に単一の固定垂直同期割り込みを実装することが可能となる、実施形態12に記載のシステム。
【0102】
19.スケーリング後の提示タイムスタンプが、丸め誤差を含まないネイティブ提示タイムスタンプと一致するように、複数のメディアアイテムの提示タイムスタンプを適切な時間スケールで最適化するステップをさらに含む、実施形態12に記載のシステム。
【0103】
20.1つ以上のコンピュータ実行可能命令を含む非一時的なコンピュータ可読媒体であって、コンピュータ実行可能命令は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行された場合に、以下のステップ:複数の異なるメディアアイテムであって、当該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に当該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、複数のメディアアイテムについて、当該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、複数のメディアアイテムのうちの少なくとも1つを、現在の時間スケールから、同定された一元的時間スケールへと変更し、これにより、変更後の少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、をコンピューティングデバイスに実行させる、非一時的なコンピュータ可読媒体。
【0104】
以上、詳しく説明したように、本明細書において図示、説明するコンピューティングデバイス及びシステムは、本明細書に記載のモジュール内に含まれるコンピュータ可読命令などのコンピュータ可読命令を実行する機能を有する、任意の種類又は形態のコンピューティングデバイス又はシステムを広く表している。最も基本的な構成では、これらのコンピューティングデバイスのそれぞれが、少なくとも1つのメモリデバイスと少なくとも1つの物理プロセッサとを備えることができる。
【0105】
いくつかの例では、「メモリデバイス(memory device)」という用語は、データ、コンピュータ可読命令、又はその両方を記憶する機能を有する、任意の種類又は形態の揮発性又は不揮発性の記憶デバイス又は記憶媒体一般を指している。一例では、メモリデバイスは、本明細書に記載のモジュールのうちの1つ以上の格納、ロード、保持、又はそのいずれかの組み合わせを行うことができる。メモリデバイスの例としては、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、光ディスクドライブ、キャッシュ、これらのうちの1つ以上の変化形又は組み合わせなどの任意の適切な記憶メモリが挙げられるが、これらに限定されるものではない。
【0106】
いくつかの例では、「物理プロセッサ(physical processor)いう用語は、コンピュータ可読命令の解釈、実行、又はその両方を行う機能を有する任意の種類又は形態のハードウェア実装処理ユニット一般を指している。一例では、物理プロセッサは、上述のメモリデバイスに格納された1つ以上のモジュールに対するアクセス、変更、又はその両方を行うことができる。物理プロセッサの例としては、マイクロプロセッサ、マイクロコントローラ、中央処理装置(CPU)、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、これらのうちの1つ以上の一部、これらのうちの1つ以上の変化形又は組み合わせなどの任意の適切な物理プロセッサが挙げられるが、これらに限定されるものではない。
【0107】
本明細書において図示、説明するモジュールは、別体の要素として図示されているが、1つモジュール又はアプリケーションの一部を表すこともできる。さらに、特定の実施形態では、これらのモジュールのうちの1つ以上が、1つ以上のソフトウェアアプリケーション又はプログラムを表すこともできる。かかるソフトウェアアプリケーション又はプログラムは、コンピューティングデバイスによって実行された場合に、コンピューティングデバイスに1つ以上のタスクを実行させることができる。例えば、本明細書において図示、説明するモジュールのうちの1つ以上が、本明細書において図示、説明するコンピューティングデバイス又はシステムのうちの1つ以上で実行されるように格納及び構成されたモジュールを表すこともできる。これらのモジュールのうちの1つ以上は、1つ以上のタスクを実行するように構成された1つ以上の専用コンピュータ全体又はその一部を表すこともできる。
【0108】
さらに、本明細書に記載のモジュールのうちの1つ以上が、データ、物理デバイス、物理デバイスの表現、又はそのいずれかの組み合わせについて、その形態を変換することができる。例えば、本明細書に記載のモジュールのうちの1つ以上は、変換すべきデータを受信し、データを変換し、変換結果を出力することにより最適化された時間スケールを特定し、変換結果を使用して正確な提示タイムスタンプを生成し、変換結果を格納することができる。これに加えて又は代えて、本明細書に記載のモジュールのうちの1つ以上は、物理コンピューティングデバイス上で実行される、物理コンピューティングデバイス上にデータを格納するなどの方法により、物理コンピューティングデバイスと相互作用することによって、当該物理コンピューティングデバイスの、プロセッサ、揮発性メモリ、不揮発性メモリなどの任意の部分の形態を変換することもできる。
【0109】
いくつかの実施形態では、「コンピュータ可読媒体(computer-readable medium)」という用語は、コンピュータ可読命令を格納又は担持する機能を有する任意の形態のデバイス、キャリア、又は媒体一般を指している。コンピュータ可読媒体の例としては、搬送波などの伝送型の媒体、磁気記憶媒体(例えば、ハードディスクドライブ、テープドライブ、フロッピーディスク)、光学記憶媒体(例えば、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、BLU-RAYディスク)、電子記憶媒体(例えば、ソリッドステートドライブ、フラッシュメディア)などの非一時型の媒体、及びその他の配信システムが挙げられるが、これらに限定されるものではない。
【0110】
本明細書において図示、説明するステップのプロセスパラメータ及び順序は、単に例示として示したものに過ぎず、必要に応じて変更することができる。例えば、本明細書において図示、説明するステップを、特定の順序で図示、説明している場合があるが、図示、説明している順序でこれらのステップを実行する必要は必ずしもない。また、本明細書において様々な例示的な方法を図示、説明しているが、かかる方法においても、本明細書において説明、図示するステップのうちの1つ以上のステップを省略することや、開示しているステップに加えて追加のステップを含めることもできる。
【0111】
以上の説明は、本明細書に開示している例示的な実施形態の様々な態様を当業者が最適に利用できるよう行ったものである。この例示的な説明は、網羅的であることを意図したものでも、開示している形態に厳密に限定されることを意図したものでもない。本開示の趣旨及び範囲から逸脱しない範囲で、多くの修正や変形が可能である。したがって、本明細書に開示の実施形態は、あらゆる点で例示的なものであり、限定を意図したものではないと考えるべきである。本開示の範囲を特定する際には、添付の特許請求の範囲及びその均等物を参照する必要がある。
【0112】
特に断りのない限り、本明細書及び特許請求の範囲で使用する「~に接続される(connected to)」及び「~に結合される(coupled to)」という用語(及びそれらの派生語)は、直接接続と間接的(すなわち、他の要素又は構成要素を介した)接続の両方を許容するものと解釈されるべきものである。さらに、本明細書及び特許請求の範囲で使用する「a」又は「an」という用語は、「少なくとも1つ(at least one of)」を意味するものと解釈されるべきものである。最後に、本明細書及び特許請求の範囲において、便宜上「含む(including)」、「有する(having)」という用語(及びそれらの派生語)が使用されているが、これらは、「備える(comprising)」と言い換えることができ、同じ意味を有するものである。
【符号の説明】
【0113】
100 コンピューティング環境
101 コンピュータシステム
102 プロセッサ
103 システムメモリ
104 通信モジュール
105 受信器
106 送信器
107 確認モジュール
108 現在の時間スケール
109 同定モジュール
110 一元的時間スケール
111 時間スケール変更モジュール
112 変更後のメディアアイテム
115 ユーザ
116 再生デバイス
117 入力
120 データストア
121 格納済みメディアアイテム
122 メディアアイテム
123 符号化フレームレート
301 符号化/ストリーミングコンテナ
302 再生/多重分離器
303、2120 映像復号器
304、2118 音声復号器
1900 コンテンツ配信エコシステム
1910 コンテンツ配信インフラ
1912、1922 物理プロセッサ
1914、1924 メモリ
1916、1926 モジュール
1920 コンテンツプレーヤ
2010 記憶装置
2012 コンテンツ
2014 ユーザデータ
2016 ログデータ
2020 サービス
2022 個人向けカスタマイズサービス
2024 符号化変換サービス
2026 パッケージ化サービス
2030 ネットワーク
2032 インターネット基幹回線網
2034 インターネットサービスプロバイダ網
2036 ローカルネットワーク網
2102 通信インフラ
2108 オペレーティングシステム
2110 再生アプリケーション
2112 コンテンツバッファ
2114 音声バッファ
2116 映像バッファ
2122 通信インタフェース
2124 ネットワーク接続
2126 グラフィックスインタフェース
2128 グラフィックスデバイス
2130 音声インタフェース
2132 音声デバイス
2134 入力インタフェース
2136 入力デバイス
2138 記憶装置インタフェース
2140 記憶デバイス
【手続補正書】
【提出日】2024-02-09
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0112
【補正方法】変更
【補正の内容】
【0112】
特に断りのない限り、本明細書及び特許請求の範囲で使用する「~に接続される(connected to)」及び「~に結合される(coupled to)」という用語(及びそれらの派生語)は、直接接続と間接的(すなわち、他の要素又は構成要素を介した)接続の両方を許容するものと解釈されるべきものである。さらに、本明細書及び特許請求の範囲で使用する「a」又は「an」という用語は、「少なくとも1つ(at least one of)」を意味するものと解釈されるべきものである。最後に、本明細書及び特許請求の範囲において、便宜上「含む(including)」、「有する(having)」という用語(及びそれらの派生語)が使用されているが、これらは、「備える(comprising)」と言い換えることができ、同じ意味を有するものである。
以下、本発明の好ましい実施形態を項分け記載する。
実施形態1
複数の異なるメディアアイテムであって、該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、
前記複数のメディアアイテムについて、該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、
前記複数のメディアアイテムのうちの少なくとも1つを、前記現在の時間スケールから、同定された前記一元的時間スケールへと変更し、これにより、変更後の前記少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、
を含むコンピュータで実装される方法。
実施形態2
前記メディアアイテムが映像メディアアイテムを含む、実施形態1に記載のコンピュータで実装される方法。
実施形態3
前記映像メディアアイテムが、23.97フレーム/秒、24フレーム/秒、25フレーム/秒、29.97フレーム/秒、30フレーム/秒、59.94フレーム/秒、60フレーム/秒、120フレーム/秒、240フレーム/秒、又は300フレーム/秒のフレームレートで符号化される、実施形態2に記載のコンピュータで実装される方法。
実施形態4
前記メディアアイテムが音声メディアアイテムを含む、実施形態1に記載のコンピュータで実装される方法。
実施形態5
前記音声メディアアイテムが、1フレーム当たり1024サンプル、1536サンプル、又は2048サンプルのフレームレートを有している、実施形態4に記載のコンピュータで実装される方法。
実施形態6
前記複数のメディアアイテムのうち、指定されたメディアアイテム群内にある各メディアアイテムが、指定された映像フレームレート及び音声フレームレートを有しており、
前記一元的時間スケールが、前記メディアアイテム群内の前記メディアアイテムの指定された映像フレームレート及び指定された音声フレームレートを最適化するように計算される、実施形態1に記載のコンピュータで実装される方法。
実施形態7
前記一元的時間スケールは、前記複数のメディアアイテムに対して1つ以上の提示タイムスタンプを生成するように実装される、実施形態1に記載のコンピュータで実装される方法。
実施形態8
前記1つ以上の提示タイムスタンプが単調増加し、
前記一元的時間スケールに使用される単位が、前記複数のメディアアイテムのラップアラウンド時間を最大化するように選択される、実施形態6に記載のコンピュータで実装される方法。
実施形態9
前記複数のメディアアイテムのラップアラウンド時間を最大化するように選択される前記単位が、映像フレームレートに基づいて選択される、実施形態8に記載のコンピュータで実装される方法。
実施形態10
同定された前記一元的時間スケールが、提示タイムスタンプ間隔を含んでおり、
該提示タイムスタンプ間隔が、最小フレーム間隔又は最小フレーム間隔の倍数で構成される、実施形態1に記載のコンピュータで実装される方法。
実施形態11
前記提示タイムスタンプ間隔を指定された分解能に復元するステップをさらに含む、実施形態10に記載のコンピュータで実装される方法。
実施形態12
少なくとも1つの物理プロセッサと、
コンピュータ実行可能命令を含む物理メモリと、
を備えるシステムであって、
前記コンピュータ実行可能命令は、前記物理プロセッサによって実行された場合に、
複数の異なるメディアアイテムであって、該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、
前記複数のメディアアイテムについて、該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、
前記複数のメディアアイテムのうちの少なくとも1つを、前記現在の時間スケールから、同定された前記一元的時間スケールへと変更し、これにより、変更後の前記少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、
を前記物理プロセッサに実行させる、システム。
実施形態13
同定された前記一元的時間スケールが、前記一定のフレーム間隔を維持しながら、前記複数のメディアアイテムを可変フレームレートでストリーミングすることを可能にする、実施形態12に記載のシステム。
実施形態14
フレームレートの異なるメディアアイテムが、前記一元的時間スケールを使用して各フレームレートに対して前記一定のフレーム間隔を維持しながら、可変フレームレートでストリーミングされる、実施形態13に記載のシステム。
実施形態15
可変リフレッシュレートを使用してキャプチャされた映像コンテンツを有するメディアアイテムが、前記一元的時間スケールを使用して前記一定のフレーム間隔を維持しながら、可変フレームレートでストリーミングされる、実施形態12に記載のシステム。
実施形態16
前記一元的時間スケールを同定するステップが、時間スケールの異なる前記複数の異なるメディアアイテムから得られる、1つ以上の入力された提示タイムスタンプを、前記一元的時間スケールに基づいた提示タイムスタンプに変換するステップを含む、実施形態12に記載のシステム。
実施形態17
前記入力された提示タイムスタンプから得られる変換後の前記提示タイムスタンプを実装することにより、提示タイムスタンプカウンタのラップアラウンドが回避される、実施形態16に記載のシステム。
実施形態18
前記複数のメディアアイテムのうちの少なくとも1つを、前記現在の時間スケールから、同定された前記一元的時間スケールへと変更するステップにより、前記複数のメディアアイテムの再生中に単一の固定垂直同期割り込みを実装することが可能となる、実施形態12に記載のシステム。
実施形態19
スケーリング後の提示タイムスタンプが、丸め誤差を含まないネイティブ提示タイムスタンプと一致するように、前記複数のメディアアイテムの提示タイムスタンプを最適化するステップをさらに含む、実施形態12に記載のシステム。
実施形態20
1つ以上のコンピュータ実行可能命令を含む非一時的なコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行された場合に、
複数の異なるメディアアイテムであって、該複数のメディアアイテムのうちの少なくとも2つは、異なるフレームレートで符号化されているメディアアイテムのそれぞれについて、配信用に該メディアアイテムを符号化する際に用いた現在の時間スケールを特定するステップと、
前記複数のメディアアイテムについて、該複数のメディアアイテムのそれぞれのフレーム間隔を一定にする一元的時間スケールを同定するステップと、
前記複数のメディアアイテムのうちの少なくとも1つを、前記現在の時間スケールから、同定された前記一元的時間スケールへと変更し、これにより、変更後の前記少なくとも1つのメディアアイテムのフレーム間隔を一定とするステップと、
を前記コンピューティングデバイスに実行させる、非一時的なコンピュータ可読媒体。
【国際調査報告】