(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-03-25
(54)【発明の名称】ビデオストリーム復号方法、装置、端末機器およびプログラム
(51)【国際特許分類】
G06F 9/50 20060101AFI20220317BHJP
【FI】
G06F9/50 150Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021545768
(86)(22)【出願日】2020-06-17
(85)【翻訳文提出日】2021-08-04
(86)【国際出願番号】 CN2020096511
(87)【国際公開番号】W WO2021008290
(87)【国際公開日】2021-01-21
(31)【優先権主張番号】201910636848.6
(32)【優先日】2019-07-15
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】517392436
【氏名又は名称】▲騰▼▲訊▼科技(深▲セン▼)有限公司
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】毛 江云
(72)【発明者】
【氏名】▲楊▼ 涛
(72)【発明者】
【氏名】▲陳▼ 志博
(72)【発明者】
【氏名】▲趙▼ 娟
(57)【要約】
ビデオストリーム復号方法であって、該ビデオストリーム復号方法は、監視機器から入力されたマルチチャンネルのビデオストリームを取得するステップと、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成するステップと、該複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得るステップと、を含む。
【特許請求の範囲】
【請求項1】
端末機器が実行するビデオストリーム復号方法であって、
監視機器から入力されたマルチチャンネルのビデオストリームを取得するステップと、
前記グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成するステップと、
前記複数のスレッドに基づいて、前記マルチチャンネルのビデオストリームを前記グラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得るステップと、
を含むことを特徴とするビデオストリーム復号方法。
【請求項2】
前記グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する前記ステップは、
入力されたスレッド数を取得するステップと、
前記スレッド数に基づいて、前記グラフィック処理装置に対応するスレッドプールにおいて前記複数のスレッドを作成するステップであって、前記複数のスレッドの数は、前記スレッド数と等しいステップと、を含むことを特徴とする請求項1に記載のビデオストリーム復号方法。
【請求項3】
前記グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する前記ステップは、
前記マルチチャンネルのビデオストリームのビデオチャンネル数を取得するステップと、
前記グラフィック処理装置に対応するスレッドプールにおいて、前記ビデオチャンネル数と同じ数のスレッドを作成するステップと、を含むことを特徴とする請求項1に記載のビデオストリーム復号方法。
【請求項4】
前記複数のスレッドに基づいて、前記マルチチャンネルのビデオストリームを前記グラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る前記ステップは、
前記マルチチャンネルのビデオストリームの各チャンネルのビデオストリームに対して、前記複数のスレッドのうち1つのスレッドを1対1で割り当てるステップと、
前記複数のスレッドのうちのスレッドをそれぞれターゲットスレッドとし、前記ターゲットスレッドを使用してターゲットビデオストリームを前記グラフィック処理装置に入力するステップであって、前記ターゲットチャンネルのビデオストリームは、前記マルチチャンネルのビデオストリームのうち前記ターゲットスレッドに対応する1チャンネルのビデオストリームであるステップと、
前記グラフィック処理装置によりターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得るステップと、を含むことを特徴とする請求項3に記載のビデオストリーム復号方法。
【請求項5】
前記グラフィック処理装置によりターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得る前記ステップは、
前記ターゲットチャンネルのビデオストリームにおける各フレームの画像を順次、ターゲット画像とし、前記グラフィック処理装置により前記ターゲット画像を復号処理するステップと、
前記ターゲット画像に所定の種類のオブジェクトが含まれていない場合、前記ターゲット画像をフレームスキップする必要があると決定するステップと、を含むことを特徴とする請求項4に記載のビデオストリーム復号方法。
【請求項6】
前記ターゲットチャンネルのビデオストリームの復号が終了しており、かつ前記ターゲットチャンネルのビデオストリームを再生する必要がある場合、前記ターゲットスレッドを再起動し、再び前記ターゲットスレッドを使用して前記ターゲットビデオストリームを前記グラフィック処理装置に入力し、前記グラフィック処理装置により前記ターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得るステップ、をさらに含むことを特徴とする請求項4に記載のビデオストリーム復号方法。
【請求項7】
前記ターゲットチャンネルのビデオストリームの復号が終了しており、かつ前記ターゲットチャンネルのビデオストリームを再生する必要がない場合、前記ターゲットスレッドを回収するステップ、をさらに含むことを特徴とする請求項4に記載のビデオストリーム復号方法。
【請求項8】
前記端末機器は、メモリをさらに備え、
前記方法は、
前記マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得するステップと、
前記グラフィック処理装置を介して、前記マルチチャンネルの復号ビデオデータを前記メモリに出力するステップと、をさらに含むことを特徴とする請求項1に記載のビデオストリーム復号方法。
【請求項9】
前記マルチチャンネルの復号ビデオデータには、第1の復号ビデオデータおよび第2の復号ビデオデータが含まれており、
前記マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得する前記ステップは、
前記第1の復号ビデオデータに対応する第1のメモリを取得するステップと、
前記第2の復号ビデオデータに対応する第2のメモリを取得するステップと、を含み、
前記グラフィック処理装置を介して、前記マルチチャンネルの復号ビデオデータを前記メモリに出力する前記ステップは、
前記グラフィック処理装置を介して、前記第1の復号ビデオデータを前記第1のメモリに出力し、前記第2の復号ビデオデータを前記第2のメモリに出力するステップを含むことを特徴とする請求項8に記載のビデオストリーム復号方法。
【請求項10】
前記マルチチャンネルの復号ビデオデータには、前記第1の復号ビデオデータおよび前記第2の復号ビデオデータが含まれていることを特徴とする請求項9に記載のビデオストリーム復号方法。
【請求項11】
前記マルチチャンネルの復号ビデオデータには、第3の復号ビデオデータがさらに含まれており、
前記マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得する前記ステップは、
前記第3の復号ビデオデータに対応する第3のメモリを取得するステップをさらに含み、
前記グラフィック処理装置を介して、前記マルチチャンネルの復号ビデオデータを前記メモリに出力する前記ステップは、
前記グラフィック処理装置を介して、前記第3の復号ビデオデータを前記第3のメモリに出力するステップをさらに含むことを特徴とする請求項9に記載のビデオストリーム復号方法。
【請求項12】
前記メモリは、システムメモリ、共有メモリ、およびディスクのうちの少なくとも1つを含むことを特徴とする請求項8に記載のビデオストリーム復号方法。
【請求項13】
前記グラフィック処理装置を介して、前記マルチチャンネルの復号ビデオデータを前記メモリに出力する前記ステップは、
前記グラフィック処理装置により、マルチチャンネルの復号ビデオデータに対応するメモリのアドレスコードを取得するステップと、
前記グラフィック処理装置により、前記アドレスコードに基づいてメモリマッピングを行うことで、前記マルチチャンネルの復号ビデオデータに対応するターゲットメモリを決定するステップと、
前記グラフィック処理装置を介して、マルチチャンネルの復号ビデオデータを前記ターゲットメモリに出力するステップと、を含むことを特徴とする請求項8に記載のビデオストリーム復号方法。
【請求項14】
監視機器から入力されたマルチチャンネルのビデオストリームを取得する取得ユニットと、
前記グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する作成ユニットと、
前記複数のスレッドに基づいて、前記マルチチャンネルのビデオストリームを前記グラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る復号ユニットと、
を備えることを特徴とするビデオストリーム復号装置。
【請求項15】
前記作成ユニットは、さらに、
入力されたスレッド数を取得し、
前記スレッド数に基づいて、前記グラフィック処理装置に対応するスレッドプールにおいて、前記スレッド数と等しい数の前記複数のスレッドを作成することを特徴とする請求項14に記載のビデオストリーム復号装置。
【請求項16】
前記作成ユニットは、さらに、
前記マルチチャンネルのビデオストリームのビデオチャンネル数を取得し、
前記グラフィック処理装置に対応するスレッドプールにおいて、前記ビデオチャンネル数と同じ数のスレッドを作成することを特徴とする請求項14に記載のビデオストリーム復号装置。
【請求項17】
前記復号ユニットは、さらに、
前記マルチチャンネルのビデオストリームの各チャンネルのビデオストリームに対して、前記複数のスレッドのうち1つのスレッドを1対1で割り当て、
前記複数のスレッドのうちのスレッドをそれぞれターゲットスレッドとし、前記ターゲットスレッドを使用して、前記マルチチャンネルのビデオストリームのうち前記ターゲットスレッドに対応する1チャンネルのビデオストリームであるターゲットビデオストリームを前記グラフィック処理装置に入力し、
前記グラフィック処理装置によりターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得ることを特徴とする請求項16に記載のビデオストリーム復号装置。
【請求項18】
前記復号ユニットは、さらに、
前記ターゲットチャンネルのビデオストリームにおける各フレームの画像を順次、ターゲット画像とし、前記グラフィック処理装置により前記ターゲット画像を復号処理し、
前記ターゲット画像に所定の種類のオブジェクトが含まれていない場合、前記ターゲット画像をフレームスキップする必要があると決定することを特徴とする請求項17に記載のビデオストリーム復号装置。
【請求項19】
前記復号ユニットは、さらに、
前記ターゲットチャンネルのビデオストリームの復号が終了しており、かつ前記ターゲットチャンネルのビデオストリームを再生する必要がある場合、前記ターゲットスレッドを再起動し、再び前記ターゲットスレッドを使用して前記ターゲットビデオストリームを前記グラフィック処理装置に入力し、前記グラフィック処理装置により前記ターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得ることを特徴とする請求項17に記載のビデオストリーム復号装置。
【請求項20】
前記復号ユニットは、さらに、
前記ターゲットチャンネルのビデオストリームの復号が終了しており、かつ前記ターゲットチャンネルのビデオストリームを再生する必要がない場合、前記ターゲットスレッドを回収することを特徴とする請求項17に記載のビデオストリーム復号装置。
【請求項21】
前記端末機器は、メモリをさらに備え、
前記装置は、
前記マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得する出力ユニットであって、前記グラフィック処理装置を介して、前記マルチチャンネルの復号ビデオデータを前記メモリに出力する出力ユニットをさらに備えることを特徴とする請求項14に記載のビデオストリーム復号装置。
【請求項22】
前記マルチチャンネルの復号ビデオデータには、第1の復号ビデオデータおよび第2の復号ビデオデータが含まれており、
前記出力ユニットは、さらに、
前記第1の復号ビデオデータに対応する第1のメモリを取得し、
前記第2の復号ビデオデータに対応する第2のメモリを取得し、
前記グラフィック処理装置を介して、前記第1の復号ビデオデータを前記第1のメモリに出力し、前記第2の復号ビデオデータを前記第2のメモリに出力することを特徴とする請求項21に記載のビデオストリーム復号装置。
【請求項23】
前記マルチチャンネルの復号ビデオデータには、前記第1の復号ビデオデータおよび前記第2の復号ビデオデータが含まれていることを特徴とする請求項22に記載のビデオストリーム復号装置。
【請求項24】
前記マルチチャンネルの復号ビデオデータには、第3の復号ビデオデータがさらに含まれており、
前記マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得し、前記出力ユニットは、さらに、
前記第3の復号ビデオデータに対応する第3のメモリを取得し、
前記グラフィック処理装置を介して、前記第3の復号ビデオデータを前記第3のメモリに出力することを特徴とする請求項22に記載のビデオストリーム復号装置。
【請求項25】
前記メモリは、システムメモリ、共有メモリ、およびディスクのうちの少なくとも1つを含むことを特徴とする請求項21に記載のビデオストリーム復号装置。
【請求項26】
前記出力ユニットは、さらに、
前記グラフィック処理装置により、マルチチャンネルの復号ビデオデータに対応するメモリのアドレスコードを取得し、
前記グラフィック処理装置により、前記アドレスコードに基づいてメモリマッピングを行うことで、前記マルチチャンネルの復号ビデオデータに対応するターゲットメモリを決定し、
前記グラフィック処理装置を介して、マルチチャンネルの復号ビデオデータを前記ターゲットメモリに出力することを特徴とする請求項21に記載のビデオストリーム復号装置。
【請求項27】
コンピュータ読み取り可能な命令が記憶されているメモリと、
プロセッサと、を備え、
前記コンピュータ読み取り可能な命令は、前記プロセッサによって実行されると、前記プロセッサに、請求項1から13のうちのいずれか1項に記載の方法のステップを実行させる、端末機器。
【請求項28】
1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、請求項1から13のうちのいずれか1項に記載の方法のステップを実行させるコンピュータ読み取り可能な命令が記憶されている不揮発性記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2019年7月15日にて中国特許庁に出願された、出願番号が201910636848.6で、出願の名称が「ビデオストリーム復号方法、装置、端末機器および記憶媒体」である中国特許出願に基づく優先権を主張し、その内容を全て参照により本願に組み込むものとする。
【0002】
本願は、コンピュータ技術の分野に関し、具体的には、ビデオストリーム復号方法、装置、端末機器および記憶媒体に関する。
【背景技術】
【0003】
インターネットおよびモバイルインターネットの急速な発展に伴い、人々が生成するデータの総量は劇的な増加傾向を示している。情報データの増加に伴い、情報データ処理能力への要求も高まってきている。特にビデオの分野では、インターネット、スマートシティの急速な発展に伴い、記憶・伝送・処理すべきビデオデータがますます増えていき、ビデオコーデックと呼ばれるビデオの符号化および復号が多く行われるようになる。
【0004】
セキュリティ管理の強化に伴い、現在、多くのシーンで高密度のHDカメラ監視ネットワークが配置されている。しかしながら、関連技術では、これら大量のビデオデータを効率的に処理することは難しく、2Uのサーバ1台では4~8チャンネルのビデオストリームしか処理できず、一方、マルチチャンネルのビデオストリームは1000Mbpsにも達し、中央処理装置(Central Processing Unit、CPU)のリソースをたくさん占有してしまうため、高密度のHDカメラで取得されたマルチチャンネルのビデオストリームを処理するには、多数のサーバが必要となる。
【0005】
従来のビデオストリーム復号の実際の展開方式では、例えば高性能なCPUなどのハードウェア性能に優れた端末機器を使用する必要があり、この方式では、ハードウェアコストが高くなり、エネルギー消費量が高くなる傾向がある。現在、ビデオストリームを復号するための効率的な解決策はまだない。
【発明の概要】
【課題を解決するための手段】
【0006】
本願に係る様々な実施形態によれば、ビデオストリーム復号方法、装置、端末機器、および記憶媒体が提供される。
【0007】
端末機器が実行するビデオストリーム復号方法であって、
監視機器から入力されたマルチチャンネルのビデオストリームを取得するステップと、
前記グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成するステップと、
前記複数のスレッドに基づいて、前記マルチチャンネルのビデオストリームを前記グラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得るステップと、を含む。
【0008】
ビデオストリーム復号装置であって、
監視機器から入力されたマルチチャンネルのビデオストリームを取得する取得ユニットと、
前記グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する作成ユニットと、
前記複数のスレッドに基づいて、前記マルチチャンネルのビデオストリームを前記グラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る復号ユニットと、を備える。
【0009】
コンピュータ読み取り可能な命令が記憶されている不揮発性記憶媒体であって、前記コンピュータ読み取り可能な命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサにビデオストリーム復号方法のステップを実行させる。
【0010】
端末機器であって、メモリとプロセッサとを備え、前記メモリには、前記プロセッサによって実行されると、前記プロセッサにビデオストリーム復号方法のステップを実行させるコンピュータ読み取り可能な命令が記憶されている。
【0011】
本願の1つまたは複数の実施形態の詳細は、以下の図面および説明に示されている。本願の他の特徴、目的、および利点は、明細書、図面、および特許請求の範囲から明らかになるであろう。
【0012】
本願の実施形態中の技術案をより明確に説明するために、以下、実施形態の説明に使用される必要のある図面を簡単に紹介するが、明らかなように、以下の図面は、あくまでも本願のいくつかの実施形態に過ぎず、当業者であれば、創造的な労働無しには、これらの図面に基づいてさらに他の図面を取得することができる。
【図面の簡単な説明】
【0013】
【
図1】本願の実施形態に係るビデオストリーム復号システムの一実施態様のシーンを示す模式図である。
【
図2】本願の実施形態に係るビデオストリーム復号方法の一実施態様のフローを示す模式図である。
【
図3】本願の実施形態に係るビデオストリーム復号方法の別の実施態様のフローを示す模式図である。
【
図4】本願の実施形態に係るビデオストリーム復号装置の一実施態様の構造を示す模式図である。
【
図5】本願の実施形態に係るビデオストリーム復号装置の別の実施態様の構造を示す模式図である。
【
図6】本願の実施形態に係る端末機器の構造を示す模式図である。
【発明を実施するための形態】
【0014】
本願の目的、技術案、および利点をより明確に理解してもらうために、以下、図面および実施形態と併せて、本願をさらに詳細に説明する。本明細書に説明されている具体的な実施形態は、本願を解釈するものに過ぎず、本願を限定することを意図していないことは、理解されるであろう。本願は、本願の実施形態に基づくものであり、当業者が創造的労働を伴わずに得た他のすべての実施形態は、本願の保護範囲内に含まれる。
【0015】
以下の説明では、本願の具体的な実施形態について、特別な説明がない限り、1つまたは複数のコンピュータで実行されるステップおよび操作を参照して説明する。したがって、これらのステップおよび操作は、コンピュータによって実行されるものとして何度か言及され、本明細書で言及されるコンピュータによる実行は、構造化された形でのデータの電子信号を表すコンピュータ処理ユニットによる操作を含む。この操作により、該データが変換されたり、このコンピュータのメモリシステム内の場所に保持され、このコンピュータの作動は、再構成されるか、当業者に知られている他の方法で変更されるようになる。該データが保持されているデータ構造は、そのメモリ内の物理的な位置であり、そのデータフォーマットで定義された特定の特性を持っている。しかし、本願の原理を上記文字記載の通り説明しているが、これは制限を表すものではなく、以下で説明されるステップおよび操作の多くがハードウェアでも実施可能であることは、当業者が理解するであろう。
【0016】
本明細書で使用される「モジュール」または「ユニット」は、このコンピューティングシステム上で実行されるソフトウェアオブジェクトと見なすことができる。本明細書で説明される異なるコンポーネント、モジュール、エンジンおよびサービスは、このコンピューティングシステム上で実施されるオブジェクトと見なすことができる。また、本明細書に説明される装置および方法は、好ましくはソフトウェアで実施されるが、もちろんハードウェアでも実施可能であり、これらはすべて本願の保護範囲内に含まれる。
【0017】
図1を参照すると、
図1は、本願の実施形態に係るビデオストリーム復号システムのシーンを示す模式図であり、このビデオストリーム復号システムは、端末機器102と少なくとも1つの監視機器101とを備えてもよく、監視機器は、ビデオストリームを撮影、監視して符号化し、そして、復号のために端末機器102に伝送する。各監視機器は、それぞれ1チャンネルのビデオストリームに対応してもよく、この監視機器101は監視カメラであってもよい。この端末機器102にはビデオストリーム復号装置を一体に備えており、この端末機器は、中央処理装置1021、グラフィック処理装置1022、およびメモリ1023を備え得る。本願の実施形態では、端末機器102は、主に、中央処理装置1021により、監視機器から入力されたマルチチャンネルのビデオストリームを取得し、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成し、複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る。
【0018】
本願の実施形態では、この端末機器102はサーバであってもよく、このサーバは、独立したサーバであってもよいし、サーバからなるサーバネットワークまたはサーバクラスタであってもよく、例えば、本願の実施形態で説明されるサーバは、コンピュータ、ネットワークホスト、単一のネットワークサーバ、複数のネットワークサーバ群、または複数のサーバからなるクラウドサーバを含むが、これらに限定されない。クラウドサーバは、クラウドコンピューティング(Cloud Computing)に基づく多数のコンピュータまたはネットワークサーバから構成される。本願の実施形態では、サーバと監視機器間の通信は、任意の通信手段によって達成されてもよく、これには、第3世代パートナーシッププロジェクト(3rd Generation Partnership Project、3GPP)、ロングタームエボリューション(Long Term Evolution、LTE)、世界規模相互運用マイクロ波アクセス(Worldwide Interoperability for Microwave Access、WiMAX)に基づく移動通信、またはTCP/IPプロトコルスイート(TCP/IP Protocol Suite、TCP/IP)、ユーザデータグラムプロトコル(User Datagram Protocol、UDP)に基づくコンピュータネットワーク通信などが含まれるが、これらに限定されない。
【0019】
図1に示された適用環境は、本願発明の1つの適用シーンに過ぎず、本願発明の適用シーンを限定するものではなく、他の適用環境は
図1に示されたものよりも多くの端末機器または監視機器も含み得ることは、当業者が理解するであろう。例えば、
図1には、1つのサーバおよび2つの監視機器のみが示されているが、このビデオストリーム復号システムは、1つまたは複数の他のサーバ、または/およびサーバネットワークに接続された1つまたは複数の監視機器も含み得ることは理解でき、ここでは特に限定されるものではない。
【0020】
また、
図1に示すように、このビデオストリーム復号システムにおける端末機器102内のメモリは、後で必要なときに調べるために、例えば復号ビデオデータまたは監視ビデオデータなどのデータを記憶するためのものであり、メモリは、システムメモリ、共有メモリ、およびディスクのうちの少なくとも1つを含み得る。
【0021】
システムメモリは、システムがプログラム命令およびデータを一時的に記憶する主な領域であるランダムアクセスメモリ(random-access memory)の略称であるramと同義であり、ramにおける各位置はそれぞれメモリアドレスと呼ばれる番号によって識別され、端末機器システムを終了すると、ramに保存されたデータはすべて失われる。システムメモリは、物理メモリと仮想メモリから構成され、実行時に物理メモリが不足すると、システムは、通常、物理メモリの1.5~3倍である仮想メモリを作成する。
【0022】
ディスク(disk)とは、磁気記録技術を用いてデータを記憶するメモリのことである。ディスクはコンピュータの主な記憶媒体で、大量のバイナリデータを記憶でき、停電してもデータを失わずに保存できる。初期のコンピュータで使用されたディスクはソフトディスク(soft disk)であり、現在、一般的に使用されているディスクはハードディスク(hard disk)であり、本願の実施形態で言及されるディスクはソフトディスクまたは/およびハードディスクであり得る。
【0023】
共有メモリ(shared memory)とは、端末機器内の異なる中央処理装置(CPU)からアクセス可能な大容量のメモリのことである。CPUはディスクにすばやくアクセスする必要があるため、ディスクをキャッシュ(Cache)する必要があり、キャッシュされたいずれかのデータが更新された後、他のプロセッサもアクセスする必要があるため、共有メモリをすぐに更新する必要があり、そうでないと、異なるプロセッサは異なるデータを使用する可能性がある。
【0024】
なお、
図1に示されたビデオストリーム復号システムのシーンの模式図は一例に過ぎず、本願の実施形態で説明されるビデオストリーム復号システムおよびシーンは、本願の実施形態の技術案をより明確に説明するためのものであり、本願の実施形態に係る技術案を限定するものではなく、当業者であれば知っているように、ビデオストリーム復号システムの進化および新たな業務シーンの誕生に伴って、本願の実施形態に係る技術案は類似した技術的課題にも同様に適用可能である。
【0025】
以下、具体的な実施形態と併せて詳細に説明する。
【0026】
本実施形態では、ビデオストリーム復号装置の観点から説明するが、このビデオストリーム復号装置は、具体的には、中央処理装置とグラフィック処理装置とを備える端末機器に一体化されてもよく、本願の実施形態におけるビデオストリーム復号方法は、中央処理装置によって実行される。
【0027】
本願は、ビデオストリーム復号方法を提供し、この方法は、監視機器から入力されたマルチチャンネルのビデオストリームを取得するステップと、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成するステップと、複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得るステップと、を含む。
【0028】
図2を参照すると、
図2は、本願の実施形態に係るビデオストリーム復号方法の一実施態様のフローを示す模式図であり、このビデオストリーム復号方法は以下のステップ201~203を含む。
【0029】
201では、監視機器から入力されたマルチチャンネルのビデオストリームを取得する。
【0030】
本願の実施形態では、監視機器は、
図1に示すような監視機器101を指してもよく、監視機器は、ビデオ画像を監視し撮影することができ、具体的には、監視機器は、監視カメラであってもよく。監視機器は、1つの監視機器であってもよいし、複数の監視機器であってもよく、各監視機器は、それぞれ1チャンネルのビデオストリームを伝送し、監視機器は、撮影されたビデオをビデオファイルの形でビデオストリームとして端末機器に直接伝送することができる。一例では、端末機器は、有線または無線などを介して監視機器との接続を確立して、監視機器によって撮影されたビデオストリームを受信してもよい。端末機器は、Rtspプロトコル、GB/T28181プロトコル、またはサードパーティ製ソフトウェア開発キット(Software Development Kit、SDK)などを介して、監視機器からのビデオストリームを取得してもよい。
【0031】
また、監視機器によって撮影されたビデオ画像は、端末機器へ伝送するためのビデオストリームを形成するために、例えばマルチメディアコンテナ(Multimedia Container、MKV)フォーマットまたはストリームビデオフォーマット(Flash Video、FLV)のような異なるフォーマットにパッケージ化されることができ、また、mp4フォーマット、rmvbフォーマットなどの他のビデオフォーマットであってもよいことは理解でき、ここでは特に限定されるものではない。
【0032】
なお、監視機器から入力されたビデオストリームデータを取得するステップは、監視機器から入力された元のビデオストリームを取得し、元のビデオストリームを解析処理した後、監視機器から入力されたビデオストリームデータを取得するステップを含んでもよい。この場合、監視機器から入力されたビデオストリームデータはパケットの形で記憶され、同様に、後述するように、復号されたビデオストリームデータは復号されたデータの形で記憶されてもよく、一般的に、復号処理後のビデオストリームは、画像フレームの形で記憶される。
【0033】
202では、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する。
【0034】
グラフィックスコアとも呼ばれるグラフィック処理装置(Graphics Processing Unit、GPU)は、パーソナルコンピュータ、ワークステーション、ゲーム機および一部のモバイル機器などでの画像演算作業に特化したマイクロプロセッサである。コンピュータシステムが必要とする表示情報を変換して駆動し、ディスプレイに走査信号を提供して、ディスプレイが正しく表示するように制御することができる。本願の実施形態では、端末機器にGPUが備えられており、GPUの浮動小数点演算能力はCPUよりもはるかに強力であり、一方、現在の監視機器は一般的にローエンドで、CPUの処理能力が低いため、本願の実施形態では、ビデオストリームをGPUに伝送し、ビデオストリームの復号作業をGPUに担当させることで、CPUの負担を大幅に軽減し、ビデオコーデックの作業効率を向上させることができる。
【0035】
本願の実施形態では、端末機器に複数のGPUが備えられてもよく、ここではGPUの数には特に限定されない。このとき、グラフィック処理装置に伝送されるビデオストリームを、これら複数のGPUにランダムに割り当てることができる。例えば、監視機器から入力されたビデオストリームが10チャンネルであり、端末機器に2つのGPUがある場合、10チャンネルのうち3チャンネルを一方のGPUに、残りの7チャンネルを他方のGPUにランダムに割り当てることができる。もちろん、グラフィック処理装置に伝送されるビデオストリームを、これら複数のGPUに均等に割り当てることもでき、例えば、監視機器から入力されたビデオストリームが10チャンネルであり、端末機器に2つのGPUがある場合、それぞれ5チャンネルのビデオストリームを該2つのGPUに割り当てることができる。
【0036】
本願の他のいくつかの実施形態では、端末機器に複数のGPUが含まれている場合、さらに、対応する動的負荷分散規則を事前に設定してもよく、この場合、ビデオストリームをグラフィック処理装置に伝送することは、さらに、端末機器がマルチチャンネルのビデオストリームを受信すると、事前に設定された動的負荷分散規則に従って、監視機器から入力されたビデオストリームを複数のGPUに割り当てるように行われてもよい。動的負荷分散規則は、これら複数のGPUのそれぞれがバランスよく使用されることを保証できる。
【0037】
この動的負荷分散規則では、最初の割り当てで各GPUに割り当てるビデオストリームのチャンネル数を設定してもよく、例えば、最初の割り当てで各GPUに20チャンネルのビデオストリームを割り当ててもよい。異なるビデオストリームについて、GPUがコーデックを終えるまでの時間が異なり、その後のビデオストリームの割り当てでは、動的負荷分散規則によれば、各GPUの処理状況に基づいて、動的に割り当てることができる。例えば、端末機器にGPU1、GPU2、およびGPU3の3つのGPUが搭載されており、最初の割り当てで各GPUに20チャンネルのビデオストリームが割り当てられた場合、GPU1は、割り当てられた20チャンネルのビデオストリームの処理を最初に終了した可能性があり、このとき、この動的負荷分散規則に従って、GPU1に20チャンネルのビデオストリームを再割り当てることができる。
【0038】
ハードウェアリソースの呼び出しでは、共有データ操作の整合性を確保するために、相互排他ロックの概念が導入されている。各ハードウェアオブジェクトは「相互排他ロック」と呼ばれるマークに対応しており、このマークは、いずれの時刻においても1つのスレッドのみがこのハードウェアオブジェクトにアクセスできることを確保する。したがって、上記のように端末機器に複数のGPUが備えられる場合、GPUにビデオストリームを割り当てる際に、GPU間の相互作用を避けるために、各GPUに対応する相互排他ロックを設定することができ、この相互排他ロックは、同一の時刻においてマルチチャンネルのビデオストリームが1つのGPUのみに割り当てられることを確保する。1つのGPUに対応するスレッドプールにおいて複数のスレッドが含まれている可能性があることを考慮すると、スレッド間の相互作用を避けるために、各スレッドに対して、対応する相互排除ロックを設定することができ、この相互排他ロックは、同一の時刻において1つのスレッドだけがGPUを呼び出すことを確保する。
【0039】
端末機器に複数のGPUが備えられる場合、GPUごとに、ユーザが入力したスレッド数の情報に基づいて、そのGPUに対応するスレッドプールにおいて複数のスレッドを設定し、そして、受信されたマルチチャンネルのビデオストリームを解析処理し、複数のスレッドを使用してGPUを呼び出し、解析処理後のマルチチャンネルのビデオストリームに対してコーデック処理を行うことができる。このように、1つのスレッドがGPUを呼び出すことで、解析された1チャンネルのビデオストリームのコーデック処理を実現することができ、1つのGPUに対して複数のスレッドを設定することができ、即ち、複数のスレッドは、同時にGPUを呼び出して、解析されたビデオストリームを処理することができ、これにより、1つのGPUによるマルチチャンネルのビデオストリームの並列処理を実現し、ビデオコーデックの作業効率を効果的に向上させる。
【0040】
本願の実施形態では、端末機器は、少なくとも1つのGPUを含み、各GPUに1つのスレッドプールが対応しており、各スレッドプールに少なくとも1つのスレッドが設けられることができ、各チャンネルのビデオストリームを1つのスレッドプールに設けられたスレッドの数の分だけ、同時に処理することができる。
【0041】
スレッドは、GPUを呼び出してコーデックを実現するためのインターフェース情報と理解することができ、このスレッドプールを使用すると、GPUを呼び出してビデオストリームのコーデックを実現することができる。スレッドプールはスレッドを記憶することができ、1つのスレッドプールに記憶されるスレッドの数は、ユーザの要求に応じて設定されることができる。スレッドプールに含まれるスレッドの数は、ユーザが関連するインターフェースを介して端末機器に入力することができ、このとき、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成するステップは、具体的には、ユーザが入力したスレッド数の情報を取得するステップと、スレッド数の情報に従って、グラフィック処理装置に対応するスレッドプールにおいて複数のスレッドを作成するステップとを含むことができる。このスレッド数の具体的な値は、GPUの処理能力に応じて決定されてもよく、例えば、1つのGPUが、10チャンネルのビデオストリームを同時に処理できる演算能力を持っている場合、ユーザはスレッドプールにおけるスレッド数を10に設定し、ユーザが設定したスレッド数が10を超えた場合、例えば20である場合、これを無効にしてもよい。なお、各GPUに対応するスレッドプールに含まれるスレッドの数は、同じでも異なっていてもよく、ここでは限定されない。
【0042】
また、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する場合、該複数のスレッドは、端末機器におけるすべてのGPUに対応するスレッドプールで作成されたスレッドを含む。例えば、端末機器に第1のグラフィック処理装置および第2のグラフィック処理装置が含まれている場合、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成するステップは、第1のグラフィック処理装置に対応するスレッドプールにおいて、第1のスレッドを作成するステップと、第2のグラフィック処理装置に対応するスレッドプールにおいて、第2のスレッドを作成するステップとを含んでもよく、該複数のスレッドは第1のスレッドおよび第2のスレッドを含み、この第1のスレッドは少なくとも1つのスレッドを含んでもよく、および/または、この第2のスレッドは少なくとも1つのスレッドを含む。
【0043】
例えば、端末機器にGPU1とGPU2の2つのGPUが含まれており、GPU1に対応するスレッドプールにおいて5つのスレッドを作成し、GPU2に対応するスレッドプールにおいて10個のスレッドを作成した場合、端末機器のグラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成し、すなわち、15個のスレッドを含むことができる。
【0044】
なお、端末機器に複数のGPUが含まれている場合、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する際に、どのGPUに該複数のスレッドを作成するかは、実際の状況に応じて設定されることができ、例えば、監視機器から入力されたビデオストリームの復号を1つまたは複数のGPUに専門に扱わせ、他の画像の処理を他の1つまたは複数のGPUに担当させることができる。
【0045】
本願の他の可能な実施態様において、作成するスレッドの数は、監視機器から入力されたビデオストリームのビデオチャンネル数に基づいて決定されてもよく、具体的には、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成するステップは、監視機器から入力されたビデオストリームのビデオチャンネル数を取得するステップと、グラフィック処理装置に対応するスレッドプールにおいて、ビデオチャンネル数と同じ数のスレッドを作成して、複数のスレッドを得るステップとを含んでもよい。端末機器におけるGPUの処理能力は常に制限されており、監視機器から入力されたビデオストリームのチャンネル数が、端末機器におけるGPUに対応するスレッドプールで作成可能なスレッドの最大数(端末機器が複数のGPUを含む場合、この最大数は複数のGPUが作成可能なスレッドの最大数の合計)を超えた場合、該複数のスレッドは、この端末機器におけるGPUに対応するスレッドプールで作成可能なスレッドの最大数であってもよく、つまり、端末機器は該最大数のチャンネル数のビデオストリームのみを受信してもよい。
【0046】
203では、該複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る。
【0047】
本願のいくつかの実施形態では、複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得るステップは、具体的には、マルチチャンネルのビデオストリームの各チャンネルのビデオストリームに対して、複数のスレッドのうち1つのスレッドを1対1で割り当てるステップと、複数のスレッドのうちのスレッドをそれぞれターゲットスレッドとし、ターゲットスレッドを使用してターゲットビデオストリームをグラフィック処理装置に入力するステップであって、ターゲットチャンネルのビデオストリームは、マルチチャンネルのビデオストリームのうちターゲットスレッドに対応する1チャンネルのビデオストリームであるステップと、を含んでもよい。この場合、グラフィック処理装置を介してマルチチャンネルの復号ビデオデータをメモリに出力するステップは、グラフィック処理装置によりターゲットビデオストリームを復号処理することで、ターゲット復号ビデオデータを得るステップを含む。
【0048】
端末機器に複数のGPUがある場合、ターゲットスレッドを使用してグラフィック処理装置を呼び出し、ここでいうグラフィック処理装置は、ターゲットスレッドに対応するグラフィック処理装置あり、すなわち、ターゲットスレッドは、グラフィック処理装置に対応するスレッドプールにおけるスレッドである。
【0049】
スレッドによりGPUを呼び出してビデオストリームのコーデック処理を行う際に、マルチスレッドを例にとると、各スレッドは監視機器から入力された1チャンネルのビデオストリームに対応しており、具体的な実現では、スレッドは、GPUを呼び出してビデオストリームを復号処理する際に、復号の作業効率を高めるために、ビデオストリームを解析処理し、処理されたビデオストリームは、より小さな構成要素に分割されたものになり、例えば、パケットの形で存在し、つまり、1チャンネルのビデオストリームに少なくとも1つのパケットが含まれていてもよい。GPUがマルチチャンネルのビデオストリームを復号処理する際に、各チャンネルのビデオストリームは少なくとも1つのパケットに分割され、各チャンネルのビデオストリームに対応するパケットを管理しやすくするために、各スレッドごとにバッファを設定することができる。具体的には、GPU上で各スレッドに対応する第1のバッファと第2のバッファを設定することができる。第1のバッファは、復号されるべきビデオストリームデータを記憶するために使用されてもよく、第2のバッファは、復号されたビデオストリームデータを記憶するために使用されてもよい。
【0050】
監視機器で撮影されたビデオストリームは、通常、夜間の無人シーンのように、対象物のない画像フレームが長時間続くシーンもあるため、そのようなシーンのビデオ画像はあまり意味のない画像であり、大量の復号は端末機器に大きな負荷をかける一方で、復号後のストレージが大きなメモリ空間を占めることになる。そのため、本願の実施形態では、ビデオストリームにおける各フレームの画像に対してフレームスキップ判定を行い、復号効率を向上させることができる。
【0051】
具体的には、以上説明した、ターゲットスレッドを使用してグラフィック処理装置ユニットを呼び出し、ターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得るステップは、ターゲットチャンネルのビデオストリームにおける各フレームの画像を順次、ターゲット画像とし、ターゲット画像を復号した後、ターゲット画像をフレームスキップする必要があるか否かを判定するステップと、必要がある場合、このターゲット画像を棄却するステップと、を含んでもよい。
【0052】
ターゲット画像をフレームスキップする必要があるか否かを判定するステップは、ターゲット画像に所定の種類のオブジェクトが含まれているか否かを検出するステップと、ターゲット画像に所定の種類のオブジェクトが含まれていない場合、ターゲット画像をフレームスキップする必要があると決定するステップと、を含んでもよい。所定の種類のオブジェクトは、具体的なシーンのニーズに応じて設定されてもよく、例えば、監視機器の場合、その撮影したビデオにおける画像は、監視機器が監視する必要のあるオブジェクト、例えば人または車両に応じて決定されてもよい。例えば、監視機器が人の往来を監視するためのものであれば、該所定の種類のオブジェクトは人であってもよく、この監視機器が車両を監視するためのものであれば、所定の種類のオブジェクトは車両であってもよいが、もちろん、上記は一例に過ぎず、実際の適用において、所定の種類のオブジェクトは、1つまたは複数のオブジェクトを含んでもよく、上述した人、車両などのオブジェクトに加えて、動物、航空機などの様々な移動体をさらに含んでもよい。また、ターゲット画像内のオブジェクト(例えば車両、人など)の検出は、本分野では一般的な技術的手段であり、具体的には従来技術を参照することができ、ここでは説明が省略される。
【0053】
本願の実施形態では、監視機器から入力された各チャンネルのビデオストリームに対して、ポーリングチェックを行うことができ、あるチャンネルのビデオストリームの復号が終了したことが判明したとき、そのチャンネルのビデオストリームを再生する必要があるか否かを検出して、ビデオストリームの復号が異常であるか否かを決定するようにしてもよい。ビデオストリームの復号が異常である場合、これを再生して再復号することができる。具体的には、本願の実施形態におけるビデオストリーム復号方法は、ターゲットチャンネルのビデオストリームの復号が終了すると、ターゲットチャンネルのビデオストリームを再生する必要があるか否かを判断するステップと、必要がある場合、ターゲットスレッドを再起動し、再びターゲットスレッドを使用してグラフィック処理装置を呼び出し、ターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得るステップと、必要がない場合、ターゲットスレッドを回収するステップと、をさらに含む。端末機器システム内のGPUに対応するスレッドプールにおけるスレッドリソースは限られているため、同時に実行できるスレッド数は限られている。また、デフォルトの条件下では、あるスレッドが終了した後、その対応するGPUリソースは解放されないため、プログラムにおいてスレッドが繰り返し作成されながら、デフォルトでスレッドが終了していれば、最終的にスレッドリソースが枯渇し、GPUに対応するスレッドプールでは新しいスレッドを作成できなくなるため、スレッドを適度に回収することで、端末機器によるビデオストリームの復号能力をタイムリーに復元させることができ、これにより復号の効率化を図ることができる。
【0054】
現在、ビデオストリームの符号化には様々な方法があり、それぞれの符号化方法には対応する復号方法がある。ビデオストリームを復号する際に、このビデオストリームをどのような方法で符号化したか、また、ビデオストリームの解像度、色、およびサイズなどの要素を知る必要があり、GPUはこれらのパラメータ情報を自動的に認識することができないため、本願の実施形態では、スレッドがGPUを呼び出して復号処理を行う前に、これらのパラメータ情報(符号化パラメータ情報に対応する復号パラメータ情報)、すなわち、復号規則を取得する必要がある。パラメータ情報は、復号フォーマット、解像度、色、およびサイズなどを含み得る。コーデックの主な機能は、ビデオストリームを圧縮・解凍することであり、復号フォーマットは、ビデオストリームがどのような方法で解凍されるかを示すために使用できる。これらのパラメータ情報を特定のフォーマット要件に従って整理して、復号規則を得る。復号規則は、ビデオストリームを復号するための要件を示すために使用できる。
【0055】
本願の実施形態では、この事前に取得した復号規則に従っていれば、ビデオ復号ライブラリの関連アーキテクチャ、例えば並列コンピューティングデバイスアーキテクチャ(Compute Unified Device Architecture、CUDA)またはCUVIDアーキテクチャなどを設定することができ、そのうえ、GPUは、監視機器から入力されたビデオストリームパケットの復号処理を実現することができる。具体的な実現では、監視機器から入力されたビデオストリームパケットを復号処理する際に、フォーマット変更コールバック関数(format change callback)、復号コールバック関数(decode callback)、および表示コールバック関数(display callback)の3つのコールバック関数が使用される。フォーマット変更コールバック関数は、主にビデオストリームのフォーマットが変更されたときに呼び出される。ネットワークの異常によって、ビデオストリームのフォーマットが変更されることがあり、この場合、フォーマット変更コールバック関数を呼び出して、変更されたビデオストリームのフォーマットを元のフォーマットに変更することができる。復号コールバック関数は、パケットの復号に使用されることができ、復号されたパケットは、フレームの形態で存在してもよく、表示コールバック関数は、フレームの表示または記憶に使用されることができる。
【0056】
なお、本願の実施形態では、GPUが、監視機器から入力されたビデオストリームの復号に対応している場合、GPUは、CUDAアーキテクチャに基づくCUVIDビデオ復号ライブラリを使用して、監視機器から入力されたビデオストリームを復号してもよく、本願の実施形態ではGPUが使用する復号アーキテクチャに限定されるものではない。
【0057】
可能な一実現態様において、監視機器から入力されたビデオストリームのフォーマットはH.264フォーマットであってもよく、GPUにより、監視機器から入力されたビデオストリームを復号した後、得られた復号ビデオデータのフォーマットはNV12フォーマットであってもよい。本願の実施形態では、GPUにより、監視機器から入力されたビデオストリームを復号して、復号ビデオデータを得る工程において、フォーマット変換工程をさらに含んでもよい。例えば、GPUにより、監視機器から入力されたビデオストリームを復号して、復号ビデオデータを得るステップは、GPUにより、監視機器から入力されたビデオストリームを復号して、第1の復号ビデオデータを得て、第1の復号ビデオデータに対してフォーマット変換処理を行い、第2の復号ビデオデータを得るステップを含んでもよい。例えば、監視機器から入力されたビデオストリームのフォーマットがH.264フォーマットで、第1の復号ビデオデータがNV12フォーマットであるとすると、第1の復号ビデオデータのフォーマットに対してフォーマット変換処理を行い、すなわち、NV12フォーマットの第1の復号ビデオデータのフォーマット変換を行って、RGB24フォーマットの第2復号ビデオデータを得る。一例では、GPUは、CUDAアーキテクチャを用いて第1の復号ビデオデータのフォーマット変換を行ってもよく、本願の実施形態ではGPUが用いるフォーマット変換方法に限定されるものではない。監視機器から入力されたビデオストリームが複数チャンネルを含む場合、GPUが異なるマルチチャンネルのビデオストリームを復号する際に、このフォーマット変換工程は異なる場合があり、例えば、それぞれ異なるフォーマットに変換する。このようにして、ビデオ画像フレームをマルチフォーマット、異なる色空間でシステムメモリ、共有メモリ、およびディスクファイルなどのメモリへ出力することが実現できるようになる。
【0058】
可能な一実現態様では、GPUは、第2の復号ビデオデータに対してフォーマット変換処理を行った後、さらに、第2の復号ビデオデータのスケーリング処理を行うことで、適切なサイズの復号データを得るようにしてもよい。このとき、GPUにより、監視機器から入力されたビデオストリームを復号処理することで、復号ビデオデータを得るステップは、第2の復号ビデオデータのスケーリング処理を行って、第3の復号ビデオデータを得るステップをさらに含んでもよい。なお、監視機器から入力されたビデオストリームが複数チャンネルを含む場合、GPUが異なるマルチチャンネルのビデオストリームを復号する際のスケーリング処理に対応するパラメータは同じでなくてもよい。このようにして、ビデオ画像フレームをマルチサイズでシステムメモリ、共有メモリ、およびディスクファイルなどのメモリへ出力することが実現できるようになる。
【0059】
可能な一実現態様では、本願の実施形態のビデオストリーム復号装置にフレームレートコントローラがさらに備えられており、ユーザによって設定された復号フレームレート情報を受信し、この復号フレームレート情報に従って、グラフィック処理装置によるビデオストリームの復号処理の速度を、例えば20フレーム/秒などのように制御することができる。監視機器から入力されたビデオストリームがマルチチャンネルのビデオストリームを含む場合、各チャンネルのビデオストリームに対応する復号フレームレート情報を個別に設定することができ、例えば、第1のチャンネルのビデオストリームの復号フレームレートを20フレーム/秒、第2のチャンネルのビデオストリームの復号フレームレートを30フレーム/秒などとすることができ、ここでは限定されるものではないことは、理解されるであろう。
【0060】
具体的には、グラフィック処理装置は、監視機器から入力されたマルチチャンネルのビデオストリームを受信した後、マルチチャンネルのビデオストリームに対して並列復号処理を行うことで、復号ビデオデータを得ることができる。GPUは通常、すべてのフォーマットのビデオストリームの復号に対応しているわけではないため、本願の実施形態では、GPUが現在のビデオストリームの復号に対応しているか否かを判断することができる。
【0061】
具体的には、可能な一実現態様では、中央処理装置は、GPUの性能パラメータを取得し、GPUの性能パラメータおよび現在受信しているビデオストリーム(すなわち、監視機器から入力されたビデオストリーム)のフォーマットに基づいて、GPUが現在受信しているビデオストリームのハードウェアデコーディングに対応しているか否かを判断してもよい。例えば、監視機器から入力されたビデオストリームのフォーマットがH.264フォーマットである場合、ビデオストリーム復号装置は、GPUの性能パラメータを取得し、GPUの性能パラメータに基づいて、GPUが当該フォーマットのビデオストリームのハードウェアデコーディングに対応していると決定していれば、GPUが当該フォーマットのハードウェアデコーディングに対応していると決定し、その後で、監視機器から入力されたビデオストリームを復号処理することで、復号ビデオデータを得ることができる。
【0062】
本願の実施形態では、端末機器における中央処理装置(Central Processing Unit、CPU)は、コンピュータの演算コア(Core)と制御コア(Control Unit)を担う超大規模集積回路である。その機能は、主にコンピュータの命令を解釈し、コンピュータソフトウェアにおけるデータを処理することである。中央処理装置は、主に演算器(算術論理演算装置、ALU、Arithmetic Logic Unit)、キャッシュメモリ(Cache)、およびそれらの間でデータ(Data)、制御およびステータスの送受信を実現するバス(Bus)を含み、内部メモリ(Memory)および入出力(I/O)デバイスとまとめて電子計算機の3つのコアコンポーネントと呼ばれる。
【0063】
現在、1つの実現可能な方法として、ビデオの復号は中央処理装置(CPU、Central Processing Unit)が単独で行うことができるが、しかし、CPUのコーデック能力には限界があるため、ビデオストリームを復号することは非常に困難である。したがって、本願の実施形態では、グラフィック処理装置により、監視機器から入力されたビデオストリームをグラフィック処理装置復号処理することで、復号ビデオデータを得ることが好ましい。
【0064】
可能な一実現態様では、監視機器から入力されたビデオストリームのハードウェアデコーディング処理にGPUが対応していないとビデオストリーム復号装置が判断した場合、端末機器のCPUは、監視機器から入力されたビデオストリームを復号し、復号処理後の復号ビデオデータをGPUに送信してもよい。一例では、CPUは、FFMPGE(Fast Forward Mpeg)を使用して、監視機器から入力されたビデオストリームを復号処理することができ、FFMPGEは、デジタルオーディオおよびビデオの記録、変換に使用でき、それらをストリームに変換できるオープンソースのコンピュータプログラムのセットである。このようにして、GPUが復号に対応しているビデオフォーマットについては、GPUによる復号を優先して行い、GPUが復号に対応していないビデオフォーマットについては、CPUを使って復号を行うことで、GPUの利用率を大幅に向上させ、復号効率を向上させることができる一方で、CPUのリソースを節約し、CPUによる他の業務の処理効率を向上させることができる。
【0065】
本願の実施形態では、端末機器のメモリは、異なる種類の1つまたは複数のメモリを含んでもよく、具体的には、端末機器のメモリは、例えば、端末機器内のシステムメモリ、共有メモリ、およびディスクファイルなどの複数のメモリを含んでもよい。このとき、ビデオストリーム復号方法は、マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得するステップと、グラフィック処理装置を介して、マルチチャンネルの復号ビデオデータをメモリに出力するステップとをさらに含む。
【0066】
本願の実施形態におけるマルチチャンネルの復号ビデオデータには、第1の復号ビデオデータおよび第2の復号ビデオデータが含まれてもよく、このとき、マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得するステップは、第1の復号ビデオデータに対応する第1のメモリを取得するステップと、第2の復号ビデオデータに対応する第2のメモリを取得するステップと、を含み、また、グラフィック処理装置を介して、マルチチャンネルの復号ビデオデータをメモリに出力するステップは、グラフィック処理装置を介して、第1の復号ビデオデータを第1のメモリに出力し、第2の復号ビデオデータを第2のメモリに出力するステップを含んでもよく、第1のメモリと第2のメモリは、端末機器内の異なるメモリである。このようにして、GPUによるマルチチャンネルのビデオストリームの復号と、異なるメモリへの分割出力が可能となり、そのうえ、ビデオストリームに対応する画像フレームデータをGPU以外の記憶媒体、例えばシステムメモリ、共有メモリ、およびディスクなどに出力する必要があるような実際の適用シーンによりよく対応できるようになる。
【0067】
第1の復号ビデオデータは、少なくとも1チャンネルのビデオストリームに対応する復号ビデオデータを含んでもよく、第2の復号ビデオデータも、少なくとも1チャンネルのビデオストリームに対応する復号ビデオデータを含んでもよく、本願のいくつかの実施形態では、マルチチャンネルの復号ビデオデータは、第1の復号ビデオデータおよび第2の復号ビデオデータを含み、すなわち、該マルチチャンネルのビデオストリームは、第1のビデオストリームと第2のビデオストリームに分けられ、該マルチチャンネルの復号ビデオデータは、第1の復号ビデオデータと第2の復号ビデオデータに分けられ、例えば、マルチチャンネルのビデオストリームに10チャンネルのビデオストリームがあり、第1のビデオストリームは5チャンネルのビデオストリームを含み、第2のビデオストリームは5チャンネルのビデオストリームを含み、第1のビデオストリーム内の5チャンネルのビデオストリームに対する第1の復号ビデオデータを第1のメモリに出力し、第2のビデオストリーム内の5チャンネルのビデオストリームに対する第2の復号ビデオデータを第2のメモリに出力してもよい。
【0068】
本願の他のいくつかの実施形態では、第1の復号ビデオデータおよび第2の復号ビデオデータは、該マルチチャンネルの復号ビデオデータの一部であってもよく、例えば、マルチチャンネルのビデオストリームに10チャンネルのビデオストリームがあり、第1のビデオストリームは5チャンネルのビデオストリームを含み、第2のビデオストリームは2チャンネルのビデオストリームを含み、該マルチチャンネルのビデオストリームには、第1のビデオストリームおよび第2のビデオストリームに加えて別のビデオストリームがある。1つの具体的な実施形態では、該マルチチャンネルのビデオストリームは、第3のビデオストリームをさらに含み、すなわち、該マルチチャンネルの復号ビデオデータは、第3の復号ビデオデータをさらに含み、このとき、マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得するステップは、第3の復号ビデオデータに対応する第3のメモリを取得するステップをさらに含み、この場合、グラフィック処理装置を介して、復号ビデオデータをメモリに出力するステップは、グラフィック処理装置を介して、第3の復号ビデオデータを第3のメモリに出力するステップを含む。
【0069】
コンピュータの最も重要な機能ユニットの一つである「Memory」は、多数のメモリの集合である。CPUが、ある情報を記憶したメモリを正確に見つけるには、これらのユニットに相互に識別可能な「ID番号」を割り当てる必要があり、この「ID番号」がアドレスコードである。組込みプロセッサでは、複数種のMemoryが統合されており、通常、同じ種類のMemoryをMemory Blockと呼ぶ。一般的に、プロセッサの設計者は、それぞれのMemory Blockに対して、そのメモリ数と同じ数の、16進数で表す連続した自然数の集合を割り当て、当該Memory Blockのアドレスコードとする。このような自然数の集合とMemory Blockとの対応関係がMemory Map(メモリマップ)であり、Address Map(アドレスマッピング)と呼ばれることもある。実際には、文字通りの意味ではAddress Mapの方が関連性がより高い。Memory Mapは、コンピュータシステムのリセット(電源投入)時の準備動作であり、プロセッサが所有しているアドレスコードリソースをシステム内のそれぞれの物理メモリブロックに割り当てる自動プロセスである。
【0070】
本願の実施形態では、グラフィック処理装置を利用して、GPU COPY技術およびメモリマッピング(Memory Map)により、復号ビデオデータをメモリに出力することができる。具体的には、従来技術におけるメモリマッピング作業は、GPUの実行ユニット(Execution Unit、EU)に任されている。EUとは、GPUプロセッサ内の実行ユニットであり、命令の実行を担当し、実際には、制御器の機能と演算器の機能の両方を兼ね備える。
【0071】
1つの具体的な実施形態では、グラフィック処理装置を介して、マルチチャンネルの復号ビデオデータをメモリに出力するステップは、グラフィック処理装置により、マルチチャンネルの復号ビデオデータに対応するメモリのアドレスコードを取得するステップと、グラフィック処理装置により、このメモリのアドレスコードに基づいてメモリマッピングを行うことで、マルチチャンネルの復号ビデオデータに対応するターゲットメモリを決定するステップと、グラフィック処理装置を介して、マルチチャンネルの復号ビデオデータをターゲットメモリに出力するステップと、を含む。
【0072】
本願の実施形態では、監視機器から入力されたマルチチャンネルのビデオストリームを取得し、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成し、該複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る。本願の実施形態では、GPUに対応するスレッドプールにおいて複数のスレッドを作成することにより、CPUの代わりにGPUを使用して、マルチチャンネルのビデオストリームデータを並列復号する作業を完了することで、デバイス全体のエネルギー消費を大幅に削減し、ビデオ復号効率およびGPUデバイスの利用率を向上させ、CPUへの依存度を低減し、端末機器のCPU処理能力が強くないようなビデオストリーム復号シーンに広く利用されることができる。
【0073】
図3に示すように、以下、本願の実施形態におけるビデオストリーム復号方法を、具体的な適用シーンと併せて説明する。
【0074】
301では、監視機器から入力された10チャンネルのビデオストリームを取得する。
【0075】
本実施形態では、端末機器は、CPU、GPU、およびメモリを含み、メモリは、共有メモリおよびシステムメモリを含み、端末機器に接続される監視機器は、10台であってもよく、各監視機器は、1チャンネルの監視ビデオに対応するビデオストリームを送信する。
【0076】
302では、10チャンネルのビデオストリームを端末機器のGPUに伝送する。
【0077】
本実施形態では、端末機器に1つのGPUのみが含まれている場合を例にとると、そのGPUに対応するスレッドプールにおいて20個のスレッドを設定することができ、これは、GPUが最大で20チャンネルのビデオストリームの処理に対応でき、GPUの処理能力がビデオストリームのチャンネル数よりも大きいことを示している。この場合、10チャンネルのビデオストリームを直接この端末機器のGPUに伝送することができる。
【0078】
303では、GPUに対応するスレッドプールにおいて、10個のスレッドを作成する。
【0079】
本実施形態では、GPUに対応するスレッドプールにおいて、10個のスレッドを作成するステップは、ユーザが入力したスレッド数(10個)の情報を取得し、スレッド数(10個)の情報に基づいて、GPUに対応するスレッドプールにおいて10個のスレッドを作成するように行われてもよい。また、GPUに対応するスレッドプールにおいて、10個のスレッドを作成するステップは、10個の監視ビデオから入力されたビデオストリームのビデオチャンネル数(10チャンネル)を取得し、GPUに対応するスレッドプールにおいて、ビデオチャンネル数と同じ数のスレッドを作成して10個のスレッドを得るように行われてもよい。
【0080】
304では、10チャンネルのビデオストリームの各チャンネルのビデオストリームに対して、10個のスレッドのうち1つのスレッドを1対1で割り当てる。
【0081】
305では、10個のスレッドを使用してGPUを呼び出し、10チャンネルのビデオストリームをそれぞれ並列復号処理することで、10チャンネルの復号ビデオデータを得る。
【0082】
端末機器にフレームレートコントローラが備えられており、ユーザが設定した復号フレームレート情報を受信し、この復号フレームレート情報に従って、GPUによる各チャンネルのビデオストリームの復号処理の速度を、例えば20フレーム/秒などのように制御することができる。もちろん、これら10チャンネルのビデオストリームの復号フレームレートは個別に設定されてもよく、例えば、第1のチャンネルのビデオストリームの復号フレームレートを20フレーム/秒、第2のチャンネルのビデオストリームの復号フレームレートを30フレーム/秒などとすることができる。
【0083】
306では、GPUを介して、5チャンネルの復号ビデオデータを端末機器のシステムメモリに出力し、5チャンネルの復号ビデオデータを端末機器の共有メモリに出力する。
【0084】
本実施形態では、端末機器のメモリにシステムメモリおよび共有メモリが含まれていると仮定し、これら10チャンネルのビデオストリームはシステムメモリおよび共有メモリにそれぞれ出力されるものであり、そのうち、5チャンネルの復号ビデオデータはシステムメモリに出力され、5チャンネルの復号ビデオデータは共有メモリに出力される。このため、GPUを介して5チャンネルの復号ビデオデータを端末機器のシステムメモリに直接出力し、5チャンネルの復号ビデオデータを端末機器の共有メモリに出力することが可能となる。
【0085】
本実施形態では、監視機器から入力された10チャンネルのビデオストリームを取得し、10チャンネルのビデオストリームを端末機器のGPUに伝送し、端末機器のGPUにより10チャンネルのビデオストリームを復号処理することで、10チャンネルの復号ビデオデータを得て、GPUを介して復号ビデオデータを端末機器のシステムメモリおよび共有メモリにそれぞれ出力する。本願の実施形態では、CPUの代わりにGPUを使用して、ビデオストリームデータの復号作業を完了することで、デバイス全体のエネルギー消費を大幅に削減し、ビデオ復号効率およびGPUデバイスの利用率を向上させると同時に、復号データをGPUからシステムメモリに直接出力し、CPUへの依存度をさらに低減し、フレームデータをGPU以外の記憶媒体に出力する必要があるような実際の適用シーンによりよく対応でき、より多くの適用シーンに応えられるようになる。
【0086】
前述の実施形態における各フローチャートの個々のステップは、矢印で示すように順番に示されているが、これらのステップは必ずしも矢印で示すように順番に実行されるわけではないことは、理解されるであろう。本明細書では明確な指示がない限り、これらのステップの実行は、厳密な順序の制限はなく、これらのステップは他の順序で実行されてもよい。また、各フローチャートのステップの少なくとも一部は、複数のステップまたは複数のステージを含むことができ、これらのステップまたはステージの実行順序は、必ずしも同一の時刻で実行されるとは限らず、異なる時刻で実行されてもよく、また、これらのステップまたはステージの実行順序は必ずしも順次実行されるとは限らず、他のステップまたは他のステップにおけるステップまたはステージの少なくとも一部と交替してまたは交互に実行されてもよい。
【0087】
本願の実施形態に係るビデオストリーム復号方法をよりよく実施するために、本願の実施形態は、上述したビデオストリーム復号方法に基づく装置をさらに提供する。名詞の意味は、上述したビデオストリーム復号方法と同じであり、具体的な実現の詳細については、方法の実施形態での説明を参照することができる。
【0088】
図4を参照すると、
図4は、本願の実施形態に係るビデオストリーム復号装置の構造を示す模式図であり、ビデオストリーム復号装置が端末機器に適用され、この端末機器は、グラフィック処理装置とメモリとを備え、このビデオストリーム復号装置400は、取得ユニット401と、作成ユニット402と、復号ユニット403とを備える。ビデオストリーム復号装置に含まれる個々のユニットは、その全部または一部がソフトウェア、ハードウェア、またはそれらの組み合わせによって実現されてもよい。
【0089】
取得ユニット401は、監視機器から入力されたマルチチャンネルのビデオストリームを取得する。
【0090】
作成ユニット402は、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する。
【0091】
復号ユニット403は、複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る。
【0092】
本願のいくつかの実施形態では、作成ユニット402は、具体的には、入力されたスレッド数を取得し、スレッド数に基づいて、グラフィック処理装置に対応するスレッドプールにおいて複数のスレッドを作成し、複数のスレッドの数はスレッド数と等しい。
【0093】
本願のいくつかの実施形態では、作成ユニット402は、具体的には、中央処理装置を介してマルチチャンネルのビデオストリームのビデオチャンネル数を取得し、グラフィック処理装置に対応するスレッドプールにおいて、ビデオチャンネル数と同じ数のスレッドを作成する。
【0094】
本願のいくつかの実施形態では、復号ユニット403は、具体的には、マルチチャンネルのビデオストリームの各チャンネルのビデオストリームに対して、複数のスレッドのうち1つのスレッドを1対1で割り当て、複数のスレッドのうちのスレッドをそれぞれターゲットスレッドとし、ターゲットスレッドを使用してターゲットビデオストリームをグラフィック処理装置に入力し、ターゲットチャンネルのビデオストリームは、マルチチャンネルのビデオストリームのうちターゲットスレッドに対応する1チャンネルのビデオストリームであり、さらに、グラフィック処理装置によりターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得る。
【0095】
本願のいくつかの実施形態では、復号ユニット403は、具体的には、ターゲットチャンネルのビデオストリームにおける各フレームの画像を順次、ターゲット画像とし、グラフィック処理装置によりターゲット画像を復号処理し、ターゲット画像に所定の種類のオブジェクトが含まれていない場合、ターゲット画像をフレームスキップする必要があると決定する。
【0096】
本願のいくつかの実施形態では、復号ユニット403は、具体的には、ターゲットチャンネルのビデオストリームの復号が終了しており、かつターゲットチャンネルのビデオストリームを再生する必要がある場合、ターゲットスレッドを再起動し、再びターゲットスレッドを使用してターゲットビデオストリームをグラフィック処理装置に入力し、グラフィック処理装置によりターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得る。
【0097】
本願のいくつかの実施形態では、復号ユニット403は、具体的には、さらに、ターゲットビデオストリームの復号が終了しており、かつターゲットチャンネルのビデオストリームを再生する必要がない場合、ターゲットスレッドを回収する。
【0098】
本願のいくつかの実施形態では、端末機器がメモリをさらに備え、装置は、出力ユニットをさらに備え、出力ユニットは、マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得し、グラフィック処理装置を介して、マルチチャンネルの復号ビデオデータをメモリに出力する。
【0099】
本願のいくつかの実施形態では、マルチチャンネルの復号ビデオデータには、第1の復号ビデオデータおよび第2の復号ビデオデータが含まれており、出力ユニットは、具体的には、第1の復号ビデオデータに対応する第1のメモリを取得し、第2の復号ビデオデータに対応する第2のメモリを取得し、グラフィック処理装置を介して、第1の復号ビデオデータを第1のメモリに出力し、第2の復号ビデオデータを第2のメモリに出力する。
【0100】
本願のいくつかの実施形態では、マルチチャンネルの復号ビデオデータには、第1の復号ビデオデータおよび第2の復号ビデオデータが含まれている。
【0101】
本願のいくつかの実施形態では、マルチチャンネルの復号ビデオデータには、第3の復号ビデオデータがさらに含まれており、出力ユニットは、具体的には、第3の復号ビデオデータに対応する第3のメモリを取得し、グラフィック処理装置を介して、第3の復号ビデオデータを第3のメモリに出力する。
【0102】
本願のいくつかの実施形態では、メモリは、システムメモリ、共有メモリ、およびディスクのうちの少なくとも1つを含む。
【0103】
本願のいくつかの実施形態では、出力ユニットは、具体的には、グラフィック処理装置により、マルチチャンネルの復号ビデオデータに対応するメモリのアドレスコードを取得し、グラフィック処理装置により、アドレスコードに基づいてメモリマッピングを行うことで、マルチチャンネルの復号ビデオデータに対応するターゲットメモリを決定し、グラフィック処理装置を介して、マルチチャンネルの復号ビデオデータをターゲットメモリに出力する。
【0104】
本願の実施形態では、取得ユニット401が、監視機器から入力されたマルチチャンネルのビデオストリームを取得し、作成ユニット402が、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成し、復号ユニット403が、該複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る。本願の実施形態では、GPUに対応するスレッドプールにおいて複数のスレッドを作成することにより、CPUの代わりにGPUを使用して、マルチチャンネルのビデオストリームデータを並列復号する作業を完了することで、デバイス全体のエネルギー消費を大幅に削減し、ビデオ復号効率およびGPUデバイスの利用率を向上させ、CPUへの依存度を低減し、端末機器のCPU処理能力が強くないようなビデオストリーム復号シーンに広く利用されることができる。
【0105】
具体的な実施では、上記の各ユニットを独立したエンティティとして実現してもよいし、任意に組み合わせて同一または若干のエンティティとして実現してもよく、上記の各ユニットの具体的な実施については、前述の方法の実施形態を参照することができる。
【0106】
図5は、本願の実施形態におけるビデオストリーム復号装置の別の実施態様の構造を示す模式図であり、このビデオストリーム復号装置500は、管理制御モジュール501と復号モジュール502とを備える。ビデオストリーム復号装置に含まれる各モジュールは、その全部または一部がソフトウェア、ハードウェア、またはそれらの組み合わせによって実現されてもよい。
【0107】
管理制御モジュール501は、監視機器から入力されたビデオストリームを取得し、ビデオストリームをグラフィック処理装置に伝送する。
【0108】
復号モジュール502は、グラフィック処理装置によりビデオストリームを復号処理することで、復号ビデオデータを得て、グラフィック処理装置を介して復号ビデオデータをメモリに出力する。
【0109】
管理制御モジュール501および復号モジュール502には、さらなるモジュールが含まれていてもよく、例えば、
図5において、管理制御モジュール501は、パラメータ管理モジュール、スレッド管理モジュール、状態検出モジュール、および再接続制御モジュールを含んでもよい。パラメータ管理モジュールは、復号規則および復号に関連するパラメータ(例えば色空間、出力フレームサイズなど)を管理し、スレッド管理モジュールは、GPUに対応するスレッドプールにおけるスレッドを管理し、状態検出モジュールは、現在の復号状態などを検出し、再接続制御モジュールは、復号異常を回避するために、ターゲットビデオストリームを再復号して再生する必要があるか否かを検出する。同様に、復号モジュール502は、パラメータ管理部、ビデオ接続部、復号フレームスキップ制御部、復号フレームレート制御部、出力フレーム選択部などのモジュールを含んでもよい。パラメータ管理部は、管理制御モジュール501内のパラメータ管理モジュールにおける復号規則および復号に関連するパラメータを取得し、ビデオ接続部は、監視機器に接続されて、監視機器から入力されたマルチチャンネルのビデオストリームを取得し、復号フレームスキップ制御部は、ビデオストリームの復号中に、現在の画像フレームをフレームスキップする必要があるか否かを判断し、例えば、上述の実施形態で説明されたように、画像に所定の種類のオブジェクトが含まれているか否かを検出することで、画像をフレームスキップする必要があるか否かを判断する。復号フレームレート制御部は、復号フレームレートを設定し、復号フレームレートを制御することでビデオストリームの復号レートを制御する。出力フレーム選択部は、出力された復号データの画像フレームを選別し、例えば、出力フレーム選択部において選別オブジェクトが「車」であると設定された場合、復号データに「車」が含まれている画像フレームを選別して出力する。
【0110】
なお、本実施形態では、管理制御モジュール501は1つだけ備えられてもよく、復号モジュール502は複数備えられてもよい。復号モジュール502の数は、入力されたビデオストリームのビデオチャンネル数に対応することができ、例えば、10チャンネルのビデオストリームが入力された場合、復号モジュール502を10個設定することができる。
【0111】
本願の実施形態は端末機器をさらに提供し、プロセッサとメモリとを備え、メモリには、コンピュータ読み取り可能な命令が記憶されており、このコンピュータ読み取り可能な命令は、プロセッサによって実行されると、プロセッサに、本願で提供されるビデオストリーム復号方法のステップを実行させる。
【0112】
具体的には、一実施態様では、プロセッサは、中央処理装置とグラフィック処理装置とを含み、コンピュータ読み取り可能な命令は、第1のコンピュータ読み取り可能な命令および第2のコンピュータ読み取り可能な命令を含み、第1のコンピュータ読み取り可能な命令は、中央処理装置によって実行されると、中央処理装置に、監視機器から入力されたマルチチャンネルのビデオストリームを取得するステップと、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成するステップと、複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送するステップと、を実行させる。また、第2のコンピュータ読み取り可能な命令は、グラフィック処理装置によって実行されると、グラフィック処理装置に、マルチチャンネルのビデオストリームに対して並列復号処理を行うことで、マルチチャンネルの復号ビデオデータを得るステップを実行させる。
【0113】
図6に本願の実施形態に係わる端末機器の構造を示す模式図を示している。具体的には、この端末機器は、1つ以上の処理コアのプロセッサ601、1つ以上のコンピュータ読み取り可能な記憶媒体のメモリ602、電源603、および入力ユニット604などの構成要素を含み得る。
図6に示される端末機器の構造は、端末機器を限定するものではなく、図示されたものよりも多いかまたは少ない構成要素、あるいは特定の構成要素の組み合わせ、あるいは構成要素の異なる配置を含んでもよいことは、当業者が理解するであろう。
【0114】
プロセッサ601は、この端末機器の制御センターであり、端末機器全体の各部分を様々なインターフェースおよび回線を用いて接続し、メモリ602に記憶されたソフトウェアプログラムおよび/またはモジュールを実行し、メモリ602に記憶されたデータを呼び出すことにより、端末機器の様々な機能およびデータ処理を実行し、端末機器の全体的な監視を行う。あるいはまた、プロセッサ601は、1つまたは複数の処理コアを含んでもよい。好ましくは、プロセッサ601にはアプリケーションプロセッサおよびモデムプロセッサを一体に備えてもよく、アプリケーションプロセッサは、主に、オペレーティングシステム、ユーザインタフェース、およびアプリケーションプログラムなどを扱い、モデムプロセッサは、主に、無線通信を扱う。上記モデムプロセッサがプロセッサ601に一体に備えられていなくてもよいことは、理解されるであろう。
【0115】
メモリ602は、ソフトウェアプログラムおよびモジュールを記憶するために使用されてもよく、プロセッサ601は、メモリ602に記憶されたソフトウェアプログラムおよびモジュールを実行することによって、様々な機能適用およびデータ処理を実行する。メモリ602は、主にプログラム記憶領域とデータ記憶領域とを含んでもよく、プログラム記憶領域には、オペレーティングシステム、少なくとも1つの機能(例えば、音声再生機能、画像再生機能など)に必要とされるアプリケーションプログラムが記憶されていてもよく、データ記憶領域には、端末機器の使用状況に応じて作成されたデータなどが記憶されていてもよい。また、メモリ602は、高速ランダムアクセスメモリを含んでもよく、さらに、例えば少なくとも1つのディスクメモリデバイス、フラッシュメモリデバイスなどの不揮発性メモリ、または他の揮発性ソリッドステートメモリデバイスを含んでもよい。これに応じて、メモリ602は、プロセッサ601によるメモリ602へのアクセスを提供するメモリコントローラをさらに含んでもよい。
【0116】
端末機器は、各コンポーネントに電力を供給するための電源603をさらに含んでおり、好ましくは、電源603は、電源管理システムを介してプロセッサ601に論理的に接続されていてもよく、これにより、電源管理システムを介して、充電、放電、および消費電力の管理などの機能を実現する。また、電源603は、1つ以上のDCまたはAC電源、再充電システム、電源障害検出回路、電力変換器またはインバータ、電源状態インジケータなどの任意の構成要素をさらに含んでもよい。
【0117】
この端末機器は、入力されたデジタルまたは文字情報を受信し、ユーザの設定および機能の制御に関連するキーボード、マウス、ジョイスティック、光学式またはトラックボール信号入力を生成する入力ユニット604をさらに含んでもよい。
【0118】
また、図示されていないが、端末機器は、表示ユニットなどをさらに含んでもよい。具体的には、本実施形態では、端末機器におけるプロセッサ601は、以下のような命令に従って、1つ以上のアプリケーションプログラムのプロセスに対応する実行可能なファイルをメモリ602にロードし、プロセッサ601がメモリ602に記憶されたアプリケーションプログラムを実行することで、各種機能を実現する。その命令は、
【0119】
監視機器から入力されたマルチチャンネルのビデオストリームを取得する命令と、グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する命令と、該複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る命令と、を含む。
【0120】
一実施態様では、コンピュータ読み取り可能な命令が記憶されているコンピュータ読み取り可能な記憶媒体を提供し、コンピュータ読み取り可能な命令は、プロセッサによって実行されると、プロセッサに上述したビデオストリーム復号方法のステップを実行させる。ここでいうビデオストリーム復号方法のステップは、上述した各実施形態におけるビデオストリーム復号方法のステップであってもよい。
【0121】
上述した実施形態の方法におけるフローの全部または一部を実現することは、コンピュータ読み取り可能な命令によって関連するハードウェアを命令して完成させることができ、このプログラムは、不揮発性のコンピュータ読み取り可能な記憶媒体に記憶されてもよく、このプログラムは、実行されると上述した各方法の実施形態のフローを含み得ることは、当業者が理解するであろう。本願で提供される各実施形態で使用されるメモリ、ストレージ、データベース、または他の媒体への任意の参照は、不揮発性および/または揮発性メモリを含み得る。不揮発性メモリは、リードオンリーメモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、またはフラッシュメモリを含み得る。揮発性メモリは、ランダムアクセスメモリ(RAM)または外部キャッシュメモリを含み得る。限定ではないが、一例として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDRSDRAM)、拡張型SDRAM(ESDRAM)、同期リンク(Synchlink) DRAM(SLDRAM)、メモリバス(Rambus)ダイレクトRAM(RDRAM)、ダイレクトメモリバスダイナミックRAM(DRDRAM)、およびメモリバスダイナミックRAM(RDRAM)など、様々の形で使用可能である。
【0122】
上記実施形態の各技術的特徴は、任意の組み合わせが可能であり、説明を簡潔にするために、上記実施形態の各技術的特徴のすべての可能な組み合わせを説明していないが、これらの技術的特徴の組み合わせが矛盾しない限り、本明細書に記載の範囲内であると考えられるべきである。
【0123】
上記実施形態は、本願のいくつかの実施形態を示したに過ぎず、その説明は比較的具体的かつ詳細であるが、本発明特許の範囲を限定するものと理解してはならない。また、当業者であれば、本願の思想から逸脱しない限り、いくつかの変形や改良が可能であり、これらはすべて本願の保護範囲に含まれることに留意すべきである。したがって、添付の請求項に基づいて本出願特許の保護範囲が定められるべきである。
【符号の説明】
【0124】
101 監視機器
102 端末機器
1021 中央処理装置
1022 グラフィック処理装置
1023 メモリ
400 ビデオストリーム復号装置
401 取得ユニット
402 作成ユニット
403 復号ユニット
500 ビデオストリーム復号装置
501 管理制御モジュール
502 復号モジュール
601 プロセッサ
602 メモリ
603 電源
604 入力ユニット
【手続補正書】
【提出日】2021-08-04
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0042
【補正方法】変更
【補正の内容】
【0042】
本願のいくつかの実施形態では、複数のスレッドに基づいて、マルチチャンネルのビデオストリームをグラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得るステップは、具体的には、マルチチャンネルのビデオストリームの各チャンネルのビデオストリームに対して、複数のスレッドのうち1つのスレッドを1対1で割り当てるステップと、複数のスレッドのうちのスレッドをそれぞれターゲットスレッドとし、ターゲットスレッドを使用してターゲットチャンネルのビデオストリームをグラフィック処理装置に入力するステップであって、ターゲットチャンネルのビデオストリームは、マルチチャンネルのビデオストリームのうちターゲットスレッドに対応する1チャンネルのビデオストリームであるステップと、を含んでもよい。この場合、グラフィック処理装置を介してマルチチャンネルの復号ビデオデータをメモリに出力するステップは、グラフィック処理装置によりターゲットビデオストリームを復号処理することで、ターゲット復号ビデオデータを得るステップを含む。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0088
【補正方法】変更
【補正の内容】
【0088】
本願のいくつかの実施形態では、復号ユニット403は、具体的には、マルチチャンネルのビデオストリームの各チャンネルのビデオストリームに対して、複数のスレッドのうち1つのスレッドを1対1で割り当て、複数のスレッドのうちのスレッドをそれぞれターゲットスレッドとし、ターゲットスレッドを使用してターゲットチャンネルのビデオストリームをグラフィック処理装置に入力し、ターゲットチャンネルのビデオストリームは、マルチチャンネルのビデオストリームのうちターゲットスレッドに対応する1チャンネルのビデオストリームであり、さらに、グラフィック処理装置によりターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得る。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0090
【補正方法】変更
【補正の内容】
【0090】
本願のいくつかの実施形態では、復号ユニット403は、具体的には、ターゲットチャンネルのビデオストリームの復号が終了しており、かつターゲットチャンネルのビデオストリームを再生する必要がある場合、ターゲットスレッドを再起動し、再びターゲットスレッドを使用してターゲットチャンネルのビデオストリームをグラフィック処理装置に入力し、グラフィック処理装置によりターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得る。
【手続補正5】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
端末機器が実行するビデオストリーム復号方法であって、
監視機器から入力されたマルチチャンネルのビデオストリームを取得するステップと、
グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成するステップと、
前記複数のスレッドに基づいて、前記マルチチャンネルのビデオストリームを前記グラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得るステップと、
を含むことを特徴とするビデオストリーム復号方法。
【請求項2】
前記グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する前記ステップは、
入力されたスレッド数を取得するステップと、
前記スレッド数に基づいて、前記グラフィック処理装置に対応するスレッドプールにおいて前記複数のスレッドを作成するステップであって、前記複数のスレッドの数は、前記スレッド数と等しいステップと、を含むことを特徴とする請求項1に記載のビデオストリーム復号方法。
【請求項3】
前記グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する前記ステップは、
前記マルチチャンネルのビデオストリームのビデオチャンネル数を取得するステップと、
前記グラフィック処理装置に対応するスレッドプールにおいて、前記ビデオチャンネル数と同じ数のスレッドを作成するステップと、を含むことを特徴とする請求項1に記載のビデオストリーム復号方法。
【請求項4】
前記複数のスレッドに基づいて、前記マルチチャンネルのビデオストリームを前記グラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る前記ステップは、
前記マルチチャンネルのビデオストリームの各チャンネルのビデオストリームに対して、前記複数のスレッドのうち1つのスレッドを1対1で割り当てるステップと、
前記複数のスレッドのうちのスレッドをそれぞれターゲットスレッドとし、前記ターゲットスレッドを使用してターゲット
チャンネルのビデオストリームを前記グラフィック処理装置に入力するステップであって、前記ターゲットチャンネルのビデオストリームは、前記マルチチャンネルのビデオストリームのうち前記ターゲットスレッドに対応する1チャンネルのビデオストリームであるステップと、
前記グラフィック処理装置によりターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得るステップと、を含むことを特徴とする請求項3に記載のビデオストリーム復号方法。
【請求項5】
前記グラフィック処理装置によりターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得る前記ステップは、
前記ターゲットチャンネルのビデオストリームにおける各フレームの画像を順次、ターゲット画像とし、前記グラフィック処理装置により前記ターゲット画像を復号処理するステップと、
前記ターゲット画像に所定の種類のオブジェクトが含まれていない場合、前記ターゲット画像をフレームスキップする必要があると決定するステップと、を含むことを特徴とする請求項4に記載のビデオストリーム復号方法。
【請求項6】
前記ターゲットチャンネルのビデオストリームの復号が終了しており、かつ前記ターゲットチャンネルのビデオストリームを再生する必要がある場合、前記ターゲットスレッドを再起動し、再び前記ターゲットスレッドを使用して前記ターゲット
チャンネルのビデオストリームを前記グラフィック処理装置に入力し、前記グラフィック処理装置により前記ターゲットチャンネルのビデオストリームを復号処理することで、ターゲット復号ビデオデータを得るステップ、をさらに含むことを特徴とする請求項4に記載のビデオストリーム復号方法。
【請求項7】
前記ターゲットチャンネルのビデオストリームの復号が終了しており、かつ前記ターゲットチャンネルのビデオストリームを再生する必要がない場合、前記ターゲットスレッドを回収するステップ、をさらに含むことを特徴とする請求項4に記載のビデオストリーム復号方法。
【請求項8】
前記端末機器は、メモリをさらに備え、
前記
ビデオストリーム復号方法は、
前記マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得するステップと、
前記グラフィック処理装置を介して、前記マルチチャンネルの復号ビデオデータを前記メモリに出力するステップと、をさらに含むことを特徴とする請求項1に記載のビデオストリーム復号方法。
【請求項9】
前記マルチチャンネルの復号ビデオデータには、第1の復号ビデオデータおよび第2の復号ビデオデータが含まれており、
前記マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得する前記ステップは、
前記第1の復号ビデオデータに対応する第1のメモリを取得するステップと、
前記第2の復号ビデオデータに対応する第2のメモリを取得するステップと、を含み、
前記グラフィック処理装置を介して、前記マルチチャンネルの復号ビデオデータを前記メモリに出力する前記ステップは、
前記グラフィック処理装置を介して、前記第1の復号ビデオデータを前記第1のメモリに出力し、前記第2の復号ビデオデータを前記第2のメモリに出力するステップを含むことを特徴とする請求項8に記載のビデオストリーム復号方法。
【請求項10】
前記マルチチャンネルの復号ビデオデータには、第3の復号ビデオデータがさらに含まれており、
前記マルチチャンネルの復号ビデオデータのそれぞれに対応するメモリを取得する前記ステップは、
前記第3の復号ビデオデータに対応する第3のメモリを取得するステップをさらに含み、
前記グラフィック処理装置を介して、前記マルチチャンネルの復号ビデオデータを前記メモリに出力する前記ステップは、
前記グラフィック処理装置を介して、前記第3の復号ビデオデータを前記第3のメモリに出力するステップをさらに含むことを特徴とする請求項9に記載のビデオストリーム復号方法。
【請求項11】
前記メモリは、システムメモリ、共有メモリ、およびディスクのうちの少なくとも1つを含むことを特徴とする請求項8に記載のビデオストリーム復号方法。
【請求項12】
前記グラフィック処理装置を介して、前記マルチチャンネルの復号ビデオデータを前記メモリに出力する前記ステップは、
前記グラフィック処理装置により、マルチチャンネルの復号ビデオデータに対応するメモリのアドレスコードを取得するステップと、
前記グラフィック処理装置により、前記アドレスコードに基づいてメモリマッピングを行うことで、前記マルチチャンネルの復号ビデオデータに対応するターゲットメモリを決定するステップと、
前記グラフィック処理装置を介して、マルチチャンネルの復号ビデオデータを前記ターゲットメモリに出力するステップと、を含むことを特徴とする請求項8に記載のビデオストリーム復号方法。
【請求項13】
監視機器から入力されたマルチチャンネルのビデオストリームを取得する取得ユニットと、
グラフィック処理装置に対応するスレッドプールにおいて、複数のスレッドを作成する作成ユニットと、
前記複数のスレッドに基づいて、前記マルチチャンネルのビデオストリームを前記グラフィック処理装置に伝送してビデオ復号処理を行わせることで、マルチチャンネルの復号ビデオデータを得る復号ユニットと、
を備えることを特徴とするビデオストリーム復号装置。
【請求項14】
コンピュータ読み取り可能な命令が記憶されているメモリと、
プロセッサと、を備え、
前記コンピュータ読み取り可能な命令は、前記プロセッサによって実行されると、前記プロセッサに、請求項1から1
2のうちのいずれか1項に記載の方法のステップを実行させる、端末機器。
【請求項15】
コンピュータに、請求項1~12のいずれか一項に記載の方法のステップを実行させるためのプログラム。
【国際調査報告】