(57)【特許請求の範囲】
【請求項１】
データ送信側が、送信対象のデータにおける、一つのピクチャの集合ＧＯＰデータフレームの長さ以下である現在の第１のビットレート制御ユニットのデータフレームの長さを特定することと、
前記データ送信側が、前記第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート、及び前記送信対象のデータのフレームレートに基づいて、前記第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定することと、
前記送信対象のデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロより大きい場合、前記データ送信側が前記第１の差分値に基づいて前記第１の目標ビットレートを調整することと、
前記データ送信側が、前記調整後の第１の目標ビットレートに基づいて前記第１のビットレート制御ユニットのデータフレームを符号化することと、
を含み、前記データ送信側が送信対象のデータにおける現在の第１のビットレート制御ユニットのデータフレームの長さを特定することは、
前記データ送信側が、前記送信対象のデータのビットレートの安定性要求時間長を設定し、前記ビットレートの安定性要求時間長に含まれるデータフレームの個数が前記一つのピクチャの集合ＧＯＰデータフレームの長さ以上である場合に、前記第１のビットレート制御ユニットのデータフレームの長さを一つのピクチャの集合ＧＯＰデータフレームの長さとして特定することと、
前記ビットレートの安定性要求時間長に含まれるデータフレームの個数が前記一つのピクチャの集合ＧＯＰデータフレームの長さより小さい場合、前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍であれば、或いは、前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ前記第１のビットレート制御ユニットのデータフレームが前記一つのピクチャの集合ＧＯＰデータフレームに含まれる最後の１つのビットレート制御ユニットのデータフレームでなければ、前記データ送信側が前記ビットレートの安定性要求時間長に含まれるデータフレームの個数を前記第１のビットレート制御ユニットのデータフレームの長さとして特定することと、そうではなく、
前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ前記第１のビットレート制御ユニットのデータフレームが前記一つのピクチャの集合ＧＯＰデータフレームに含まれる最後の１つのビットレート制御ユニットのデータフレームであれば、前記データ送信側が、前記第１のビットレート制御ユニットのデータフレームの長さを、一つのピクチャの集合ＧＯＰデータフレームの長さと前記一つのピクチャの集合ＧＯＰデータフレームにおける前記第１のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームの長さとの差分値として特定することと、を含むことを特徴とする、データ符号化方法。
【請求項２】
前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ前記一つのピクチャの集合ＧＯＰデータフレームにおける最後の２つのビットレート制御ユニットのデータフレームが順に前記第１のビットレート制御ユニットのデータフレームと第３のビットレート制御ユニットのデータフレームである場合、前記方法は、
前記一つのピクチャの集合ＧＯＰデータフレームの長さと、前記一つのピクチャの集合ＧＯＰデータフレームにおける前記第１のビットレート制御ユニットのデータフレーム及び第３のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームである第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍であれば、前記データ送信側が、前記第１のビットレート制御ユニットのデータフレームの長さと第３のビットレート制御ユニットのデータフレームの長さが同じであり、いずれも前記第３の差分値の半分であると特定することと、
前記一つのピクチャの集合ＧＯＰデータフレームの長さと第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍でなければ、前記データ送信側が、前記第１のビットレート制御ユニットのデータフレームの長さが前記第３の差分値に１を加えて２で割って得た商であり、かつ前記第３のビットレート制御ユニットのデータフレームの長さが前記第３の差分値から１を引いて２で割って得た商であると特定することと、をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記データ送信側が前記第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート及び前記送信対象のデータのフレームレートに基づいて、前記第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定することは、
前記データ送信側が、前記第１の目標ビットレートが前記送信対象のデータの目標ビットレートと前記第１のビットレート制御ユニットのデータフレームの長さとの積を前記送信対象のデータのフレームレートで割って得た商であると特定することを含むことを特徴とする、請求項１又は２に記載の方法。
【請求項４】
データ送信側が、送信対象のデータにおける、一つのピクチャの集合ＧＯＰデータフレームの長さ以下である現在の第１のビットレート制御ユニットのデータフレームの長さを特定することと、
前記データ送信側が、前記第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート、及び前記送信対象のデータのフレームレートに基づいて、前記第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定することと、
前記送信対象のデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロより大きい場合、前記データ送信側が前記第１の差分値に基づいて前記第１の目標ビットレートを調整することと、
前記データ送信側が、前記調整後の第１の目標ビットレートに基づいて前記第１のビットレート制御ユニットのデータフレームを符号化することと、
を含み、前記データ送信側が前記第１の差分値に基づいて前記第１の目標ビットレートを調整することは、
前記第１の差分値がゼロより大きく、かつ予め設定された差分値以下であれば、前記データ送信側が第１の目標ビットレートから前記第１の差分値を引いて調整後の第１の目標ビットレートを得ることと、
前記第１の差分値が前記予め設定された差分値より大きければ、前記データ送信側が、前記第１の差分値と前記予め設定された差分値との第２の差分値の重み付け値を算出し、前記第１の目標ビットレートから前記予め設定された差分値を引き、前記重み付け値を引くことにより調整後の第１の目標ビットレートを得ることと、を含むことを特徴とするデータ符号化方法。
【請求項５】
前記データ送信側が前記第１の差分値に基づいて前記第１の目標ビットレートを調整する前に、前記方法は、前記データ送信側が、前記予め設定された差分値を、前記第１のビットレート制御ユニットのデータフレームの長さとフレーム毎の平均最小ビットレートとの積として特定することをさらに含むことを特徴とする、請求項４に記載の方法。
【請求項６】
前記方法は、
第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロ以下である場合、前記データ送信側が、特定された第１の目標ビットレートを、前記第１のビットレート制御ユニットのデータフレームを符号化するビットレートとして、前記第１のビットレート制御ユニットのデータフレームを符号化することをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項７】
送信対象のデータにおける、一つのピクチャの集合ＧＯＰデータフレームの長さ以下である現在の第１のビットレート制御ユニットのデータフレームの長さを特定するための長さ特定ユニットと、
前記第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート、及び前記送信対象のデータのフレームレートに基づいて、前記第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定するためのビットレート特定ユニットと、
前記送信対象のデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロより大きい場合、前記第１の差分値に基づいて前記第１の目標ビットレートを調整するための調整ユニットと、
前記調整後の第１の目標ビットレートに基づいて、前記第１のビットレート制御ユニットのデータフレームを符号化するための符号化ユニットと、
を含み、前記長さ特定ユニットは、前記送信対象のデータのビットレートの安定性要求時間長を設定し、前記ビットレートの安定性要求時間長に含まれるデータフレームの個数が前記一つのピクチャの集合ＧＯＰデータフレームの長さ以上である場合に、前記第１のビットレート制御ユニットのデータフレームの長さを一つのピクチャの集合ＧＯＰデータフレームの長さとして特定し、
前記長さ特定ユニットは、さらに、前記ビットレートの安定性要求時間長に含まれるデータフレームの個数が前記一つのピクチャの集合ＧＯＰデータフレームの長さより小さい場合、前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍であれば、或いは、前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ前記第１のビットレート制御ユニットのデータフレームが前記一つのピクチャの集合ＧＯＰデータフレームに含まれる最後の１つのビットレート制御ユニットのデータフレームでなければ、前記ビットレートの安定性要求時間長に含まれるデータフレームの個数を前記第１のビットレート制御ユニットのデータフレームの長さとして特定し、そうではなく、
前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ前記第１のビットレート制御ユニットのデータフレームが前記一つのピクチャの集合ＧＯＰデータフレームに含まれる最後の１つのビットレート制御ユニットのデータフレームであれば、前記第１のビットレート制御ユニットのデータフレームの長さを、一つのピクチャの集合ＧＯＰデータフレームの長さと前記一つのピクチャの集合ＧＯＰデータフレームにおける前記第１のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームの長さとの差分値として特定するために用いられることを特徴とする、データ符号化装置。
【請求項８】
前記長さ特定ユニットは、さらに、前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ前記一つのピクチャの集合ＧＯＰデータフレームにおける最後の２つのビットレート制御ユニットのデータフレームが順に前記第１のビットレート制御ユニットのデータフレームと第３のビットレート制御ユニットのデータフレームである場合、
前記一つのピクチャの集合ＧＯＰデータフレームの長さと、前記一つのピクチャの集合ＧＯＰデータフレームにおける前記第１のビットレート制御ユニットのデータフレーム及び第３のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームである第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍であれば、前記第１のビットレート制御ユニットのデータフレームの長さと第３のビットレート制御ユニットのデータフレームの長さが同じであり、いずれも前記第３の差分値の半分であると特定し、
前記一つのピクチャの集合ＧＯＰデータフレームの長さと第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍でなければ、前記第１のビットレート制御ユニットのデータフレームの長さが前記第３の差分値に１を加えて２で割って得た商であり、かつ前記第３のビットレート制御ユニットのデータフレームの長さが前記第３の差分値から１を引いて２で割って得た商であると特定するために用いられることを特徴とする、請求項７に記載の装置。
【請求項９】
前記ビットレート特定ユニットは、前記第１の目標ビットレートが前記送信対象のデータの目標ビットレートと前記第１のビットレート制御ユニットのデータフレームの長さとの積を前記送信対象のデータのフレームレートで割って得た商であると特定するために用いられることを特徴とする、請求項７又は８に記載の装置。
【請求項１０】
送信対象のデータにおける、一つのピクチャの集合ＧＯＰデータフレームの長さ以下である現在の第１のビットレート制御ユニットのデータフレームの長さを特定するための長さ特定ユニットと、
前記第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート、及び前記送信対象のデータのフレームレートに基づいて、前記第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定するためのビットレート特定ユニットと、
前記送信対象のデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロより大きい場合、前記第１の差分値に基づいて前記第１の目標ビットレートを調整するための調整ユニットと、
前記調整後の第１の目標ビットレートに基づいて、前記第１のビットレート制御ユニットのデータフレームを符号化するための符号化ユニットと、
を含み、前記調整ユニットは、前記第１の差分値がゼロより大きく、かつ予め設定された差分値以下であれば、第１の目標ビットレートから前記第１の差分値を引いて調整後の第１の目標ビットレートを得て、前記第１の差分値が前記予め設定された差分値より大きければ、前記第１の差分値と前記予め設定された差分値との第２の差分値の重み付け値を算出し、前記第１の目標ビットレートから前記予め設定された差分値を引き、前記重み付け値を引くことにより調整後の第１の目標ビットレートを得るために用いられることを特徴とする、データ符号化装置。
【請求項１１】
前記調整ユニットは、さらに、前記第１の差分値に基づいて前記第１の目標ビットレートを調整する前に、前記予め設定された差分値を、前記第１のビットレート制御ユニットのデータフレームの長さとフレーム毎の平均最小ビットレートとの積として調整するために用いられることを特徴とする、請求項１０に記載の装置。
【請求項１２】
プロセッサに、請求項１〜６のいずれか１項に記載のデータ符号化方法を実行させることに適する複数の命令を記憶することを特徴とする、不揮発性コンピュータ可読記憶媒体。
【請求項１３】
各命令を実現するプロセッサと、
前記プロセッサに、請求項１〜６のいずれか１項に記載のデータ符号化方法を実行させる複数の命令を記憶する記憶機器と、を含むことを特徴とする、端末機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１７年７月６日に中国国家知識産権局に提出された出願番号が２０１７１０５４４９６２．７であり、発明の名称が「データ符号化方法、装置、記憶機器及び端末機器」である中国特許出願に基づく優先権を主張し、その全ての内容が参照によって本願に組み込まれるものとする。
【０００２】
本願は、情報処理技術の分野に関し、特に、データ符号化方法、装置、端末機器及びコンピュータ可読記憶媒体に関する。
【背景技術】
【０００３】
ビデオ送信過程において、ビデオ送信側はまず、ビデオデータを符号化し、符号化されたビデオデータを送信する必要がある。ここで、ビデオデータを符号化する際、ビデオ送信側はまず、符号レートを割り当てて、符号レートに基づいてビデオデータを符号化する必要がある。
【０００４】
従来技術において、ビデオ送信側は、ピクチャの集合（Ｇｒｏｕｐ  ｏｆ  Ｐｉｃｔｕｒｅ、ＧＯＰ）のビデオフレームをビットレート制御ユニットとし、まず、各ＧＯＰビデオフレームにビットレートを割り当て、それから、各フレームのビデオデータを符号化する前に現在のフレームのビデオデータにビットレートを割り当てることにより、最終的に１つのＧＯＰビデオフレームの実際のビットレートが当該ＧＯＰビデオフレームに割り当てられたビットレートに近づけるようにする。しかし、１つのＧＯＰビデオフレームが比較的に大きい場合、当該ＧＯＰビデオフレームの全体ビットレートは目標ビットレートに達することができるが、短時間ビットレートの安定性が考慮されていない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本願の実施例は、データ符号化方法、装置、記憶機器及び端末機器を提供し、第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値に基づいて、第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを調整することを実現する。
【課題を解決するための手段】
【０００６】
本願の実施例は、
データ送信側が、送信対象のデータにおける、一つのピクチャの集合ＧＯＰデータフレームの長さ以下である現在の第１のビットレート制御ユニットのデータフレームの長さを特定することと、
前記データ送信側が、前記第１のビットレート制御ユニットのデータフレームの長さ、前記送信対象のデータの目標ビットレート及び前記送信対象のデータのフレームレートに基づいて、前記第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定することと、
前記送信対象のデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロより大きい場合、前記データ送信側が前記第１の差分値に基づいて前記第１の目標ビットレートを調整することと、
前記データ送信側が、前記調整後の第１の目標ビットレートに基づいて前記第１のビットレート制御ユニットのデータフレームを符号化することと、を含む、データ符号化方法を提供する。
【０００７】
本願の実施例は、
送信対象のデータにおける、一つのピクチャの集合ＧＯＰデータフレームの長さ以下である現在の第１のビットレート制御ユニットのデータフレームの長さを特定するための長さ特定ユニットと、
前記第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート及び前記送信対象のデータのフレームレートに基づいて、前記第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定するためのビットレート特定ユニットと、
前記送信対象のデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロより大きい場合、前記第１の差分値に基づいて前記第１の目標ビットレートを調整するための調整ユニットと、
前記調整後の第１の目標ビットレートに基づいて、前記第１のビットレート制御ユニットのデータフレームを符号化するための符号化ユニットと、を含む、データ符号化装置を提供する。
【０００８】
本願の実施例は、プロセッサによってロードされ、本願の実施例の第１の態様に記載のデータ符号化方法を実行することに適する複数の命令を記憶する、不揮発性コンピュータ可読記憶媒体を提供する。
【０００９】
本願の実施例は、
各命令を実現するプロセッサと、
プロセッサによってロードされ、本願の実施例の第１の態様に記載のデータ符号化方法を実行する複数の命令を記憶する記憶機器と、を含む、端末機器を提供する。
【発明の効果】
【００１０】
以上より、本実施例の方法において、データ送信側は、１つのビットレート制御ユニット（例えば、第１のビットレート制御ユニット）のデータフレームを符号化するたびに、実際の需要に応じて現在の第１のビットレート制御ユニットのデータフレームの長さを特定し、第１のビットレート制御ユニットの第１の目標ビットレートを特定し、１つ前のビットレート制御ユニット（即ち、第２のビットレート制御ユニット）のデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値に基づいて第１の目標ビットレートを調整した後、調整後の第１の目標ビットレートに基づいて第１のビットレート制御ユニットのデータフレームを符号化する。このように、第１のビットレート制御ユニットのデータフレームの長さを、例えば一つのピクチャの集合ＧＯＰデータフレームの長さ以下に柔軟に設定し、１つ前のビットレート制御ユニットのデータフレームに対する実際の符号化状況によって第１の目標ビットレートを調整することにより、最終的に、調整後の第１の目標ビットレートに基づいて第１のビットレート制御ユニットを符号化した後は、任意の時間長のビットレート、特に短時間のビットレートの安定性に対する要求を満たすことができる。
【図面の簡単な説明】
【００１１】
本願の実施例又は従来技術における技術態様をより明確に説明するために、以下、実施例又は従来技術の説明に必要な図面を簡単に説明するが、以下の記載における図面は本願のいくつかの実施例に過ぎず、当業者にとって、創造的な労働を必要とせずにこれらの図面に基づいて他の図面を得られることは自明である。
【図１】本願の実施例に係るデータ符号化方法のフローチャートである。
【図２】本願の実施例に係る、データ送信側が第１のビットレート制御ユニットのデータフレームの長さを特定する方法のフローチャートである。
【図３】本願の実施例に係るデータ符号化方法の適用場面の概略図である。
【図４】本願の実施例に係るデータ符号化方法のフローチャートである。
【図５】本願の実施例に係るデータ符号化装置の構造概略図である。
【図６】本願の実施例に係る端末機器の構造概略図である。
【発明を実施するための形態】
【００１２】
以下、本願の実施例における図面を参照しながら、本願の実施例の技術態様を明確かつ完全に説明するが、説明される実施例は、本願の一部の実施例に過ぎず、全ての実施例ではないことは言うまでもない。本願の実施例に基づいて、当業者が創造的な労働を必要とせずに得られる他の全ての実施例は、いずれも本願の保護範囲に属する。
【００１３】
本願の明細書、特許請求の範囲及び上記図面における「第１」、「第２」、「第３」、「第４」等（存在すれば）の用語は、類似する対象を区別するためのものであって、特定の順番又は前後順を限定するものではない。なお、このように使用されるデータは、ここで説明する本願の実施例を図面に示すか又は説明する順とは異なる順でも実現できるように、適切な状況で交換可能である。なお、「含む」や「有する」の用語及びそれらのいかなる変形は、非排他的に含むことをカバーするものであり、例えば、一連のステップ又はユニットを含むプロセス、方法、システム、製品又は機器は、明確に例示されるステップ又はユニットに限定されることはなく、明確に例示していない又はこれらのプロセス、方法、製品又は機器の固有の他のステップ又はユニットを含んでもよいことを表す。
【００１４】
本願の実施例に係るデータ符号化方法は、主にデータ送信側が送信対象のデータをデータ送信側に送信する過程に適用され、この過程において、データ送信側がまず、送信対象のデータの各ＧＯＰデータフレームを符号化し、符号化されたデータをデータ受信側に送信する必要がある。
【００１５】
本実施例において、データ送信側は、送信対象のデータにおけるあるビットレート制御ユニットのデータフレームを符号化する際、
まず、送信対象のデータにおける、一つのピクチャの集合ＧＯＰデータフレームの長さ以下である現在の第１のビットレート制御ユニットのデータフレームの長さを特定して、第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート及び送信対象のデータのフレームレートに基づいて、第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定し、送信対象のデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロより大きい場合、第１の差分値に基づいて第１の目標ビットレートを調整し、調整後の第１の目標ビットレートに基づいて、第１のビットレート制御ユニットのデータフレームを符号化する。
【００１６】
このように、データ送信側は、第１のビットレート制御ユニットのデータフレームの長さを、例えば一つのピクチャの集合ＧＯＰデータフレームの長さ以下に柔軟に設定し、１つ前のビットレート制御ユニットのデータフレームに対する実際の符号化状況に基づいて第１の目標ビットレートを調整することにより、最終的に、調整後の第１の目標ビットレートに基づいて第１のビットレート制御ユニットを符号化した後は、任意の時間長のビットレート、特に短時間のビットレートの安定性に対する要求を満たすことができる。
【００１７】
本願の実施例は、データ符号化方法、主に上記データ送信側によって実行される方法を提供し、データ送信側は、ビデオデータ送信側、例えばＷｅＣｈａｔクライアントなどであってもよく、フローチャートは、図１に示すように、ステップ１０１〜１０４を含む。
【００１８】
ステップ１０１において、送信対象のデータにおける、１つのＧＯＰデータフレームの長さ以下である現在の第１のビットレート制御ユニットのデータフレームの長さを特定する。
【００１９】
なお、データ送信側は、送信対象のデータをデータ受信側に送信する前に、まず、送信対象のデータを符号化する必要があり、一般的に、１つのビットレート制御ユニットのデータフレームを基本単位として、送信対象のデータに含まれる複数のビットレート制御ユニットを１つずつ符号化し、具体的には、まず、１つのビットレート制御ユニットに１つの目標ビットレートを特定することにより、当該ビットレート制御ユニットのデータフレームの実際のビットレートが当該ビットレート制御ユニットのデータフレームの目標ビットレートに近づけるようにする。ここで、１つのビットレート制御ユニットのデータフレームのビットレートは、当該ビットレート制御ユニットのデータフレームに含まれるデータの総量（例えば、１秒当たりの情報量）を意味する。
【００２０】
本実施例のステップ１０１〜１０４は、１つのビットレート制御ユニット（即ち、現在の第１のビットレート制御ユニット）のデータフレームに対して実行される符号化方法である。
【００２１】
一般的には、送信対象のデータは複数のＧＯＰデータフレームで構成され、各ＧＯＰデータフレームがいずれもＩフレーム、Ｐフレーム、及びＢフレームを含む。第１のデータフレームはキーフレームのＩフレームであり、当該ＧＯＰデータフレームの主要な情報が全てＩフレームに集中し、Ｐフレームは、差分フレームとして、当該フレームと１つ前のキーフレームとの差分を示し、Ｂフレームは、双方向差分フレームとしてり、当該フレームと前後フレームとの差分を示す。１つのＧＯＰデータフレームの長さは、Ｉフレームの間隔で表すことができ、具体的にｎ個のデータフレームであってもよい。
【００２２】
本実施例において、データ送信側によって特定される第１のビットレート制御ユニットのデータフレームの長さは、１つのＧＯＰデータフレームの長さより小さい可能性があり、具体的に、ビットレートの安定性要求を有する短時間（例えば、１秒又は２秒）に含まれるデータフレームの個数であってもよく、このように、１つのＧＯＰデータフレームを複数のビットレート制御ユニットのデータフレームに分割することができる。
【００２３】
例えば、リアルタイムビデオ通話について、短時間のビットレートの安定性要求が高く、送信対象のデータがリアルタイム通話のビデオデータである場合、第１のビットレート制御ユニットのデータフレームの長さをビットレートの安定性要求時間長に含まれるデータフレームの個数として特定することができる。
【００２４】
ステップ１０２において、第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート、及び送信対象のデータのフレームレート（即ち、秒当たりに含まれるデータフレームの個数）に基づいて、第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定する。
【００２５】
具体的には、第１の目標ビットレートが送信対象のデータの目標ビットレートと第１のビットレート制御ユニットのデータフレームの長さとの積を送信対象のデータのフレームレートで割って得た商であると特定することができる。
【００２６】
ステップ１０３において、送信対象のデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロより大きい場合、第１の差分値に基づいて第１の目標ビットレートを調整する。
【００２７】
なお、第２のビットレート制御ユニットのデータフレームの実際のビットレートが第２の目標ビットレートを超えると、データ送信側は、当該第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを適切に低減することができ、具体的な低減量は、第２のビットレート制御ユニットの実際のビットレートとその第２の目標ビットレートとの第１の差分値によって特定することができる。ここで、第２のビットレート制御ユニットのデータフレームの実際のビットレートは、データ送信側が第２の目標ビットレートに応じて符号化した第２のビットレート制御ユニットのデータフレームに含まれる実際のデータ総量（例えば、１秒当たりの情報量）を意味する。
【００２８】
具体的には、当該第１の差分値がゼロより大きく、かつ予め設定された差分値以下であれば、上記ステップ１０２で得られた第１の目標ビットレートから第１の差分値を引いて調整後の第１の目標ビットレートを得る。当該第１の差分値が予め設定された差分値より大きければ、第１の差分値と予め設定された差分値との第２の差分値の重み付け値を算出して、第１の目標ビットレートから予め設定された差分値を引き、重み付け値を引くことにより調整後の第１の目標ビットレートを得る。
【００２９】
ここで、予め設定された差分値は、データ送信側に設定される固定値であってもよく、第１のビットレート制御ユニットのデータフレームの長さの変化に従って変化する値であってもよい。具体的には、本ステップ１０３を実行する前に、データ送信側は、まず、予め設定された差分値を、フレーム毎の平均最小ビットレートと第１のビットレート制御ユニットのデータフレームの長さとの積として特定することができる。
【００３０】
ステップ１０４において、上記ステップ１０３による調整後の第１の目標ビットレートに基づいて、第１のビットレート制御ユニットのデータフレームを符号化することにより、第１のビットレート制御ユニットのデータフレームの実際のビットレートが当該第１の目標ビットレートに近づけるようにする。
【００３１】
さらに、上記第１の差分値がゼロ以下であれば、即ち、第２のビットレート制御ユニットのデータフレームの実際のビットレートがその第２の目標ビットレート以下であれば、データ送信側は、上記ステップ１０２で特定された第１の目標ビットレートを調整せず、直接当該第１の目標ビットレートに基づいて第１のビットレート制御ユニットのデータフレームを符号化する。
【００３２】
このように、上記ステップ１０１〜１０４により、実際の状況に応じて、１つのビットレート制御ユニット（例えば、第１のビットレート制御ユニット）のデータフレームの長さを随時変更し、かつ調整後の第１の目標ビットレートに基づいて当該第１のビットレート制御ユニットのデータフレームを符号化することができる。
【００３３】
以上より、本実施例の方法において、データ送信側は、１つのビットレート制御ユニット（例えば、第１のビットレート制御ユニット）のデータフレームを符号化するたびに、実際の需要に応じて現在の第１のビットレート制御ユニットのデータフレームの長さを特定し、第１のビットレート制御ユニットの第１の目標ビットレートを特定し、１つ前のビットレート制御ユニット（即ち、第２のビットレート制御ユニット）のデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値に基づいて第１の目標ビットレートを調整した後、調整後の第１の目標ビットレートに基づいて第１のビットレート制御ユニットのデータフレームを符号化する。このように、第１のビットレート制御ユニットのデータフレームの長さを、例えば１つのピクチャの集合ＧＯＰデータフレームの長さ以下に柔軟に設定し、かつ１つ前のビットレート制御ユニットのデータフレームに対する実際の符号化状況によって第１の目標ビットレートを調整することにより、最終的に、調整後の第１の目標ビットレートに基づいて第１のビットレート制御ユニットを符号化した後は、任意の時間長のビットレート、特に短時間のビットレートの安定性に対する要求を満たすことができる。
【００３４】
図２に示すように、１つの具体的な実施例において、データ送信側が上記ステップ１０１を実行することは、ステップ２０１〜２０６により実現することができる。
【００３５】
ステップ２０１において、送信対象のデータのビットレートの安定性要求時間長を設定し、ビットレートの安定性要求時間長に含まれるデータフレームの個数ｍが１つのＧＯＰデータフレームの長さｒ以上であれば、ステップ２０２を実行する。
【００３６】
ビットレートの安定性要求時間長に含まれるデータフレームの個数ｍが１つのピクチャの集合ＧＯＰデータフレームの長さｒより小さければ、いくつかの場合に、データ送信側がステップ２０３を実行し、別の場合に、データ送信側がステップ２０４を実行し、さらに別の場合には、データ送信側がステップ２０５又は２０６を実行する。
【００３７】
ここでのビットレートの安定性要求時間長とは、ビットレートの安定性に対する要求が高い期間を意味し、送信対象のデータの具体的な応用に応じて設定することができ、例えば、一部のリアルタイムビデオデータの場合、ビットレートの安定性要求時間長が１秒又は２秒であってもよく、一部の非リアルタイムビデオデータの場合、短時間のビットレートの安定性に対する要求が高くなく、ビットレートの安定性要求時間長を設定する必要がなく、第１のビットレート制御ユニットのデータフレームの長さをそのままＧＯＰデータフレームの長さｒとして特定することができる。
【００３８】
ここで、ビットレートの安定性要求時間長に含まれるデータフレームの個数ｍは、ビットレートの安定性要求時間長と送信対象のデータのフレームレートに基づいて得られることができ、具体的に、ビットレートの安定性要求時間長と送信対象のデータのフレームレートとの積である。
【００３９】
ステップ２０２において、第１のビットレート制御ユニットのデータフレームの長さを１つのＧＯＰデータフレームの長さｒとして特定する。
【００４０】
ステップ２０３において、１つのＧＯＰデータフレームの長さｒが上記特定されたデータフレームの個数ｍの整数倍であれば、或いは、１つのＧＯＰデータフレームの長さｒが上記データフレームの個数ｍの整数倍ではなく、かつ第１のビットレート制御ユニットのデータフレームが１つのＧＯＰデータフレームに含まれる最後の１つのビットレート制御ユニットのデータフレームでなければ、ビットレートの安定性要求時間長に含まれるデータフレームの個数ｍを第１のビットレート制御ユニットのデータフレームの長さとして特定する。
【００４１】
なお、送信対象のデータが複数のＧＯＰデータフレームで構成されるため、ビットレート制御ユニットのデータフレームの長さが上記特定されたデータフレームの個数ｍであり、かつ当該ｍが１つのＧＯＰデータフレームの長さｒより小さければ、各ＧＯＰデータフレームはいずれも複数のビットレート制御ユニットのデータフレームに分割することができ、このようにすれば、１つのＧＯＰデータフレームに含まれる最後の１つのビットレート制御ユニットのデータフレームの長さが上記ビットレートの安定性要求時間長に含まれるデータフレームの個数ｍより小さいことが生じる可能性がある。
【００４２】
具体的には、１つのＧＯＰデータフレームの長さｒが上記ビットレートの安定性要求時間長に含まれるデータフレームの個数ｍの整数倍ではなく、かつ第１のビットレート制御ユニットのデータフレームが１つのＧＯＰデータフレームに含まれる最後の１つのビットレート制御ユニットのデータフレームであれば、データ送信側はステップ２０４を実行する。
【００４３】
ステップ２０４において、第１のビットレート制御ユニットのデータフレームの長さを、１つのＧＯＰデータフレームの長さｒと当該ＧＯＰデータフレームにおける第１のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームの長さとの差分値として特定する。ここで、当該ＧＯＰデータフレームにおける第１のビットレート制御ユニットのデータフレーム以外の他の各ビットレート制御ユニットのデータフレームの長さは、いずれも上記特定されたデータフレームの個数ｍであってもよい。
【００４４】
他の具体的な実施例において、１つのＧＯＰデータフレームの長さｒが上記特定されたデータフレームの個数ｍの整数倍ではなく、かつＧＯＰデータフレームにおける最後の２つのビットレート制御ユニットのデータフレームが順に第１のビットレート制御ユニットのデータフレーム、第３のビットレート制御ユニットのデータフレームであれば、即ち、第１のビットレート制御ユニットのデータフレームが第３のビットレート制御ユニットのデータフレームの１つ前のビットレート制御ユニットのデータフレームであれば、データ送信側は、以下のステップ２０５又は２０６により第１のビットレート制御ユニットのデータフレームの長さを特定することができる（図２中の破線矢印で示す部分）。
【００４５】
ステップ２０５において、１つのＧＯＰデータフレームの長さｒと第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍であれば、第１のビットレート制御ユニットのデータフレームの長さと第３のビットレート制御ユニットのデータフレームの長さが同じであり、いずれも当該第３の差分値の半分であると特定する。
【００４６】
ここで、第４のビットレート制御ユニットのデータフレームは、１つのＧＯＰデータフレームにおける第１のビットレート制御ユニットのデータフレーム及び第３のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームである。
【００４７】
ステップ２０６において、１つのＧＯＰデータフレームの長さｒと第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍でなければ、第１のビットレート制御ユニットのデータフレームの長さが第３の差分値に１を加えて２で割って得た商であり、かつ第３のビットレート制御ユニットのデータフレームの長さが第３の差分値から１を引いて２で割って得た商であると特定する。
【００４８】
以下、１つの具体的な実施例で本願のデータ符号化方法を説明し、本実施例の方法は、主にＷｅＣｈａｔクライアントのビデオ通話場面に適用される場合、データ送信側がＷｅＣｈａｔクライアントで、送信対象のデータが送信対象のビデオデータである。本実施例において、
図３に示すように、具体的な応用において、ユーザが自分側のＷｅＣｈａｔクライアントにより相手側のＷｅＣｈａｔクライアントとのビデオ通話を開始した後、自分側のＷｅＣｈａｔクライアントが、複数のＧＯＰデータフレームを含む自分側のビデオデータを収集する。自分側のＷｅＣｈａｔクライアントは、まず、収集されたビデオデータを符号化し、それから、符号化されたビデオデータを相手側のＷｅＣｈａｔクライアントに送信する。自分側のＷｅＣｈａｔクライアントがビデオデータを符号化する過程において、以下のステップにより実現することができ、フローチャートは図４に示すように、ステップ３０１〜３０６を含む。
【００４９】
ステップ３０１において、ＷｅＣｈａｔクライアントは、送信対象のビデオデータにおける現在の第１のビットレート制御ユニットのデータフレームの長さを特定し、かつＦｒａｍｅ＿Ｕｎｉｔと記す。
【００５０】
具体的には、ＷｅＣｈａｔクライアントは、まず、送信対象のビデオデータに基づいて１つのビットレートの安定性要求時間長を設定し、送信対象のビデオデータがリアルタイムビデオデータであるため、対応するビットレートの安定性要求時間長を１秒又は２秒に設定し、それから、ビデオデータのフレームレートに基づいて当該ビットレートの安定性要求時間長に含まれるデータフレームの個数ｍを特定することができる。
【００５１】
（１）特定されたデータフレームの個数ｍが送信対象のビデオデータにおける１つのＧＯＰデータフレームの長さ（ＧＯＰ＿ｓｉｚｅと記す）以上であれば、第１のビットレート制御ユニットのデータフレームの長さを１つのＧＯＰデータフレームの長さとして特定し、即ち、Ｆｒａｍｅ＿Ｕｎｉｔ＝ＧＯＰ＿ｓｉｚｅと特定する。
【００５２】
（２）特定されたデータフレームの個数ｍが送信対象のビデオデータにおける１つのＧＯＰデータフレームの長さより小さければ、いくつかの場合に、１つのＧＯＰデータフレームの長さがデータフレームの個数ｍの整数倍であれば、或いは１つのＧＯＰデータフレームの長さがデータフレームの個数ｍの整数倍ではなく、かつ第１のビットレート制御ユニットのデータフレームがＧＯＰデータフレームに含まれる最後の１つのビットレート制御ユニットのデータフレームでなければ、第１のビットレート制御ユニットのデータフレームの長さを特定されたデータフレームの個数ｍとして特定し、この時、Ｆｒａｍｅ＿Ｕｎｉｔ＝ｍ＜ＧＯＰ＿ｓｉｚｅとなる。
【００５３】
（３）特定されたデータフレームの個数ｍが送信対象のビデオデータにおける１つのＧＯＰデータフレームの長さより小さければ、または別の場合に、１つのＧＯＰデータフレームの長さが上記特定されたデータフレームの個数ｍの整数倍ではなく、かつ第１のビットレート制御ユニットのデータフレームが１つのＧＯＰデータフレームに含まれる最後の１つのビットレート制御ユニットのデータフレームであれば、ＷｅＣｈａｔクライアントは、第１のビットレート制御ユニットのデータフレームの長さを、１つのＧＯＰデータフレームの長さと１つのＧＯＰデータフレームにおける第１のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームの長さとの差分値として特定する。即ち、Ｆｒａｍｅ＿Ｕｎｉｔ＝ＧＯＰ＿ｓｉｚｅ−ｔｍと特定し、ｔは１つのＧＯＰデータフレームに含まれる他のビットレート制御ユニットのデータフレームの個数であり、他のビットレート制御ユニットのデータフレームの長さがいずれもｍである。
【００５４】
（４）特定されたデータフレームの個数ｍが送信対象のビデオデータにおける１つのＧＯＰデータフレームの長さより小さければ、さらに別の場合に、１つのＧＯＰデータフレームの長さが上記特定されたデータフレームの個数ｍの整数倍ではなく、かつ１つのＧＯＰデータフレームにおける最後の２つのビットレート制御ユニットのデータフレームが順に第１のビットレート制御ユニットのデータフレームと第３のビットレート制御ユニットのデータフレームであれば、ＷｅＣｈａｔクライアントは、第１のビットレート制御ユニットのデータフレームの長さを特定する際、以下のいくつかの場合があり得る。
【００５５】
具体的には、１つのＧＯＰデータフレームを分割して得られた複数のビットレート制御ユニットのデータフレームをそれぞれＦＵ１、ＦＵ２、…、ＦＵｎ−１、ＦＵｎと記し、第１のビットレート制御ユニットのデータフレーム及び第３のビットレート制御ユニットのデータフレームをそれぞれＦＵｎ−１、ＦＵｎと記すれば、
（４１）ＧＯＰデータフレームの長さと、ＧＯＰデータフレームにおける第１のビットレート制御ユニットのデータフレーム及び第３のビットレート制御ユニットのデータフレーム以外のビットレート制御ユニットのデータフレームであり、即ち、ＦＵ１、ＦＵ２、…ＦＵｎ−２である第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍であれば、ＷｅＣｈａｔクライアントは、第１のビットレート制御ユニットのデータフレームＦＵｎ−１の長さと第３のビットレート制御ユニットのデータフレームＦＵｎの長さが同じであり、いずれも第３の差分値の半分であると特定し、即ち、以下の通りである。
【００５６】
【数１】
0006909308.tif 000002
（４２）１つのＧＯＰデータフレームの長さと第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍でなければ、第１のビットレート制御ユニットのデータフレームの長さが第３の差分値に１を加えて２で割って得た商であり、かつ第３のビットレート制御ユニットのデータフレームの長さが第３の差分値から１を引いて２で割って得た商であると特定し、即ち、以下の通りである。
【００５７】
【数２】
0006909308.tif 000003
（４３）１つのＧＯＰデータフレームの長さと第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値からさらに上記特定されたデータフレームの個数ｍを引いても、上記特定されたデータフレームの個数ｍの半分より大きく、即ちＧＯＰ＿ｓｉｚｅ−（ｌＦＵ１＋ｌＦＵ２＋…＋ｌＦＵｎ−２）−ｍ＞ｍ／２となるが、上記特定されたデータフレームの個数ｍより小さければ、ＷｅＣｈａｔクライアントは、上記（４１）又は（４２）の方式に従って第１のビットレート制御ユニットのデータフレームの長さを特定しなくてもよく、第１のビットレート制御ユニットのデータフレームの長さをｍ、第３のビットレート制御ユニットのデータフレームの長さをＧＯＰ＿ｓｉｚｅ−ｔｍとして特定すればよい。
【００５８】
なお、上記式において、ｌＦＵｉは１つのビットレート制御ユニットのデータフレームＦＵｉの長さを示し、ここで、ｉは１〜ｎの間のいずれかの自然数である。
【００５９】
（５）さらに他の場合に、実際の応用に応じて、例えば、非リアルタイムビデオデータのように、短時間のビットレートの安定性に対する要求が高くない場合であれば、ビットレートの安定性要求時間長を設定する必要がない。このような場合に、第１のビットレート制御ユニットのデータフレームの長さをそのまま１つのＧＯＰデータフレームの長さとして特定し、即ち、Ｆｒａｍｅ＿Ｕｎｉｔ＝ＧＯＰ＿ｓｉｚｅと特定することができる。
【００６０】
ステップ３０２において、ＷｅＣｈａｔクライアントは、第１のビットレート制御ユニットのデータフレームの第１の目標ビットレート（ＢｉｔＴａｒｇｅｔ＿ｉ’と記す）が、具体的に送信対象のビデオデータの目標ビットレート（ＢｉｔＲａｔｅＴａｒｇｅｔと記す）と上記ステップ３０１で特定された第１のビットレート制御ユニットのデータフレームの長さとの積をビデオデータのフレームレート（ｆｐｓと記す）で割って得た商であると特定する。即ち、以下の通りである。
【００６１】
【数３】
0006909308.tif 000004
ステップ３０３において、第２のビットレート制御ユニットのデータフレームの実際のビットレートが第２の目標ビットレートより大きいか否かを判断し、大きい場合には、ステップ３０５〜３０６を実行し、第２の目標ビットレート以下であれば、直接ステップ３０４を実行する。ここで、第２のビットレート制御ユニットのデータフレームは、送信対象のビデオデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである。
【００６２】
ステップ３０４において、上記ステップ３０２で特定された第１の目標ビットレートを、第１のビットレート制御ユニットのデータフレームを符号化するビットレートとする。
【００６３】
ステップ３０５において、ＷｅＣｈａｔクライアントは、第１のビットレート制御ユニットの１つ前のビットレート制御ユニット（即ち、第２のビットレート制御ユニット）のデータフレームの実際のビットレート（ＢｉｔＲｅａｌ＿ｉ−１と記す）とその第２の目標ビットレート（ＢｉｔＴａｒｇｅｔ＿ｉ−１と記す）との第１の差分値に基づいて、第１の目標ビットレートを調整する。
【００６４】
（１）第２のビットレート制御ユニットのデータフレームの実際のビットレートが第２のの目標ビットレートより大きく、かつ第１の差分値が予め設定された差分値（ＴＨＢｉｔと記す）を超えていなければ、第１の目標ビットレートから当該第１の差分値を引いて得られた調整後の第１の目標ビットレートをＢｉｔＴａｒｇｅｔ＿ｉと記す。
【００６５】
（２）第１の差分値が予め設定された差分値を超えていれば、第１の目標ビットレートから予め設定された差分値を引きら、さらに重み付け値を引くことにより調整後の第１の目標ビットレートを得る。ここで、重み付け値は第１の差分値と予め設定された差分値との第２の差分値の重み付け値である。即ち、以下の通りである。
【００６６】
【数４】
0006909308.tif 000005
ここで、γは上記第２の差分値の重み付け係数であり、ゼロ以上かつ１未満であってもよく、予め設定された差分値ＴＨＢｉｔは第１のビットレート制御ユニットのデータフレームの長さの変化に応じて変化することができ、具体的には、以下の通りである。
ＴＨＢｉｔ＝ＴＨＢｉｔ＿ｆｒａｍｅ＊Ｆｒａｍｅ＿Ｕｎｉｔ
ここで、ＴＨＢｉｔ＿ｆｒａｍｅはフレーム毎の平均最小ビットレートである。
【００６７】
ステップ３０６において、ＷｅＣｈａｔクライアントは、調整後の第１の目標ビットレートに基づいて、第１のビットレート制御ユニットのデータフレームを符号化する。
【００６８】
このように、ＷｅＣｈａｔクライアントは、送信対象のビデオデータに含まれる全てのビットレート制御ユニットのデータフレームを符号化するまで、上記ステップ３０１〜３０６を繰り返して実行する。
【００６９】
本願の実施例は、データ符号化装置、例えば上記データ送信側をさらに提供し、その構造概略図は図５に示すように、具体的に、
送信対象のデータにおける、１つのピクチャの集合ＧＯＰデータフレームの長さ以下である現在の第１のビットレート制御ユニットのデータフレームの長さを特定するための長さ特定ユニット１０と、
前記長さ特定ユニット１０によって特定された第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート、及び前記送信対象のデータのフレームレートに基づいて、前記第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定するためのビットレート特定ユニット１１と、
前記送信対象のデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロより大きい場合、前記第１の差分値に基づいて、前記ビットレート特定ユニット１１によって特定された第１の目標ビットレートを調整するための調整ユニット１２と、
前記調整ユニット１２によって調整された第１の目標ビットレートに基づいて、前記第１のビットレート制御ユニットのデータフレームを符号化するための符号化ユニット１３と、を含む。
【００７０】
さらに、符号化ユニット１３は、さらに、第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロ以下であれば、前記ビットレート特定ユニット１１によって特定された第１の目標ビットレートに基づいて前記第１のビットレート制御ユニットのデータフレームを符号化するために用いられる。
【００７１】
以上より、本実施例の装置において、符号化ユニット１３が１つのビットレート制御ユニット（例えば、第１のビットレート制御ユニット）のデータフレームを符号化するたびに、長さ特定ユニット１０が実際の需要に応じて現在の第１のビットレート制御ユニットのデータフレームの長さを特定し、かつビットレート特定ユニット１１が第１のビットレート制御ユニットの第１の目標ビットレートを特定し、調整ユニット１２が１つ前のビットレート制御ユニット（即ち、第２のビットレート制御ユニット）のデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値に基づいて第１の目標ビットレートを調整した後、符号化ユニット１３が調整後の第１の目標ビットレートに基づいて第１のビットレート制御ユニットのデータフレームを符号化する。このようにすれば、第１のビットレート制御ユニットのデータフレームの長さを、例えば１つのピクチャの集合ＧＯＰデータフレームの長さ以下に柔軟に設定することができ、かつ１つ前のビットレート制御ユニットのデータフレームに対する実際の符号化状況によって第１の目標ビットレートを調整することにより、最終的に、調整後の第１の目標ビットレートに基づいて第１のビットレート制御ユニットを符号化した後は、任意の時間長のビットレート、特に短時間のビットレートの安定性に対する要求を満たすことができる。
【００７２】
具体的な実施例において、上記長さ特定ユニット１０は、具体的に、前記送信対象のデータのビットレートの安定性要求時間長を設定し、前記ビットレートの安定性要求時間長に含まれるデータフレームの個数が前記１つのピクチャの集合ＧＯＰデータフレームの長さ以上である場合、前記第１のビットレート制御ユニットのデータフレームの長さを１つのピクチャの集合ＧＯＰデータフレームの長さとして特定するために用いられる。
【００７３】
また、長さ特定ユニット１０は、さらに、前記ビットレートの安定性要求時間長に含まれるデータフレームの個数が前記一つのピクチャの集合ＧＯＰデータフレームの長さより小さい場合、前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍であれば、或いは、前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ前記第１のビットレート制御ユニットのデータフレームが前記一つのピクチャの集合ＧＯＰデータフレームに含まれる最後の１つののビットレート制御ユニットのデータフレームでなければ、前記ビットレートの安定性要求時間長に含まれるデータフレームの個数を前記第１のビットレート制御ユニットのデータフレームの長さとして特定し、そうではなく、
前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ前記第１のビットレート制御ユニットのデータフレームが前記一つのピクチャの集合ＧＯＰデータフレームに含まれる最後の１つののビットレート制御ユニットのデータフレームであれば、前記第１のビットレート制御ユニットのデータフレームの長さを、一つのピクチャの集合ＧＯＰデータフレームの長さと前記一つのピクチャの集合ＧＯＰデータフレームにおける第１のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームの長さとの差分値として特定するために用いられる。
【００７４】
他の場合に、前記長さ特定ユニット１０は、さらに、前記一つのピクチャの集合ＧＯＰデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ前記一つのピクチャの集合ＧＯＰデータフレームにおける最後の２つのビットレート制御ユニットのデータフレームが順に前記第１のビットレート制御ユニットのデータフレームと第３のビットレート制御ユニットのデータフレームである場合、
前記一つのピクチャの集合ＧＯＰデータフレームの長さと、前記一つのピクチャの集合ＧＯＰデータフレームにおける前記第１のビットレート制御ユニットのデータフレーム及び第３のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームである第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍であれば、前記第１のビットレート制御ユニットのデータフレームの長さと第３のビットレート制御ユニットのデータフレームの長さが同じであり、いずれも前記第３の差分値の半分であると特定し、前記一つのピクチャの集合ＧＯＰデータフレームの長さと第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍でなければ、前記第１のビットレート制御ユニットのデータフレームの長さが前記第３の差分値に１を加えて２で割って得た商であり、かつ前記第３のビットレート制御ユニットのデータフレームの長さが前記第３の差分値から１を引いて２で割って得た商であると特定するために用いられる。
【００７５】
さらに別の具体的な実施例において、前記ビットレート特定ユニット１１は、具体的に、前記第１の目標ビットレートが前記送信対象のデータの目標ビットレートと前記第１のビットレート制御ユニットのデータフレームの長さとの積を前記送信対象のデータのフレームレートで割って得た商であると特定する。
【００７６】
他の具体的な実施例において、前記調整ユニット１２は、具体的に、前記第１の差分値がゼロより大きく、かつ予め設定された差分値以下であれば、第１の目標ビットレートから前記第１の差分値を引いて調整後の第１の目標ビットレートを得て、前記第１の差分値が前記予め設定された差分値より大きければ、前記第１の差分値と前記予め設定された差分値との第２の差分値の重み付け値を算出し、前記第１の目標ビットレートから前記予め設定された差分値を引き、前記重み付け値を引くことにより調整後の第１の目標ビットレートを得るために用いられる。
【００７７】
当該調整ユニット１２は、さらに、前記第１の差分値に基づいて前記第１の目標ビットレートを調整する前に、前記予め設定された差分値を、前記第１のビットレート制御ユニットのデータフレームの長さとフレーム毎の平均最小ビットレートとの積として調整するために用いられる。
【００７８】
本願の実施例は、データ符号化装置、例えば上記データ送信側をさらに提供し、当該データ符号化装置は、少なくとも１つのメモリ及び少なくとも１つのプロセッサを含み、前記少なくとも１つのメモリは、コンピュータ命令を記憶するために用いられ、
前記少なくとも１つのプロセッサは、前記少なくとも１つのメモリに記憶されたコンピュータ命令を呼び出すために用いられ、前記コンピュータ命令は、
送信対象のデータにおける、一つのピクチャの集合のデータフレームの長さ以下である現在の第１のビットレート制御ユニットのデータフレームの長さを特定することと、
第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート及び送信対象のデータのフレームレートに基づいて、第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定することと、
送信対象のデータにおける第１のビットレート制御ユニットの１つ前のビットレート制御ユニットのデータフレームである第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロより大きい場合、第１の差分値に基づいて第１の目標ビットレートを調整することと、
前記調整後の第１の目標ビットレートに基づいて、第１のビットレート制御ユニットのデータフレームを符号化することと、を含む。
【００７９】
ここで、本願の実施例において、送信対象のデータにおける現在の第１のビットレート制御ユニットのデータフレームの長さを特定するというコンピュータ命令は、具体的に、
送信対象のデータのビットレートの安定性要求時間長を設定し、ビットレートの安定性要求時間長に含まれるデータフレームの個数が前記一つのピクチャの集合のデータフレームの長さ以上である場合、第１のビットレート制御ユニットのデータフレームの長さを一つのピクチャの集合のデータフレームの長さとして特定し、
ビットレートの安定性要求時間長に含まれるデータフレームの個数が前記一つのピクチャの集合のデータフレームの長さより小さい場合、一つのピクチャの集合のデータフレームの長さが前記データフレームの個数の整数倍であれば、或いは、一つのピクチャの集合のデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ第１のビットレート制御ユニットのデータフレームが一つのピクチャの集合のデータフレームに含まれる最後の１つののビットレート制御ユニットのデータフレームでなければ、データ送信側が前記ビットレートの安定性要求時間長に含まれるデータフレームの個数を第１のビットレート制御ユニットのデータフレームの長さとして特定し、そうではなく、
一つのピクチャの集合のデータフレームの長さが前記データフレームの個数の整数倍ではなく、かつ第１のビットレート制御ユニットのデータフレームが一つのピクチャの集合のデータフレームに含まれる最後の１つののビットレート制御ユニットのデータフレームであれば、前記第１のビットレート制御ユニットのデータフレームの長さを、一つのピクチャの集合のデータフレームの長さと前記一つのピクチャの集合のデータフレームにおける前記第１のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームの長さとの差分値として特定するというコンピュータ命令を含むことができる。
【００８０】
さらに、一つのピクチャの集合のデータフレームの長さがデータフレームの個数の整数倍ではなく、かつ一つのピクチャの集合のデータフレームにおける最後の２つのビットレート制御ユニットのデータフレームが順に第１のビットレート制御ユニットのデータフレームと第３のビットレート制御ユニットのデータフレームである場合、上記コンピュータ命令は、一つのピクチャの集合のデータフレームの長さと、一つのピクチャの集合のデータフレームにおける第１のビットレート制御ユニットのデータフレーム及び第３のビットレート制御ユニットのデータフレーム以外の他のビットレート制御ユニットのデータフレームである第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍であれば、第１のビットレート制御ユニットのデータフレームの長さと第３のビットレート制御ユニットのデータフレームの長さが同じであり、いずれも第３の差分値の半分であると特定することと、一つのピクチャの集合のデータフレームの長さと第４のビットレート制御ユニットのデータフレームの長さとの第３の差分値が２の整数倍でなければ、第１のビットレート制御ユニットのデータフレームの長さが第３の差分値に１を加えて２で割って得た商であり、かつ第３のビットレート制御ユニットのデータフレームの長さが第３の差分値から１を引いて２で割って得た商であると特定することと、をさらに含む。
【００８１】
本願の実施例において、前記第１のビットレート制御ユニットのデータフレームの長さ、送信対象のデータの目標ビットレート、及び前記送信対象のデータのフレームレートに基づいて、第１のビットレート制御ユニットのデータフレームの第１の目標ビットレートを特定するという上記コンピュータ命令は、具体的に、第１の目標ビットレートが送信対象のデータの目標ビットレートと第１のビットレート制御ユニットのデータフレームの長さとの積を送信対象のデータのフレームレートで割って得た商であると特定することを含むことができる。
【００８２】
本願の実施例において、第１の差分値に基づいて第１の目標ビットレートを調整するという上記コンピュータ命令は、具体的に、第１の差分値がゼロより大きく、かつ予め設定された差分値以下であれば、データ送信側が第１の目標ビットレートから前記第１の差分値を引いて調整後の第１の目標ビットレートを得ることと、第１の差分値が前記予め設定された差分値より大きければ、データ送信側が第１の差分値と予め設定された差分値との第２の差分値の重み付け値を算出し、第１の目標ビットレートから予め設定された差分値を引き、重み付け値を引くことにより調整後の第１の目標ビットレートを得ることと、を含むことができる。
【００８３】
上記コンピュータ命令は、第１の差分値に基づいて第１の目標ビットレートを調整する前に、予め設定された差分値を、第１のビットレート制御ユニットのデータフレームの長さとフレーム毎の平均最小ビットレートとの積として特定することをさらに含む。
【００８４】
本願の実施例において、上記コンピュータ命令は、第２のビットレート制御ユニットのデータフレームの実際のビットレートとその第２の目標ビットレートとの第１の差分値がゼロ以下である場合、特定された第１の目標ビットレートを、第１のビットレート制御ユニットのデータフレームを符号化するビットレートとして、第１のビットレート制御ユニットのデータフレームを符号化することをさらに含むことができる。
【００８５】
本願の実施例は、端末機器をさらに提供し、その構造概略図は図６に示すとおりであり、当該端末機器は、構成又は性能によって大きく異る可能性があり、１つ以上の中央処理機器（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔｓ、ＣＰＵ）２０（例えば、１つ以上のプロセッサ）と、メモリ２１と、アプリケーション２２１又はデータ２２２を記憶する１つ以上の記憶媒体２２（例えば、１つ以上の大容量記憶機器）とを含むことができる。メモリ２１及び記憶媒体２２は、一時的記憶機器であっても永続的記憶機器であってもよい。記憶媒体２２に記憶されたプログラムは、それぞれ端末機器に対する一連の命令操作を含む１つ以上のモジュール（図示せず）を含むことができる。さらに、中央処理機器２０は、記憶媒体２２と通信して、記憶媒体２２における一連の命令操作を端末機器で実行するように構成されてもよい。
【００８６】
具体的には、記憶媒体２２に記憶されたアプリケーション２２１は、上記データ符号化装置における長さ特定ユニット１０、ビットレート特定ユニット１１、調整ユニット１２、及び符号化ユニット１３を含むデータ符号化アプリケーションを含み、ここでその詳細は省略する。さらに、中央処理機器２０は、記憶媒体２２と通信して、記憶媒体２２に記憶されたデータ符号化アプリケーションに対応する一連の操作を端末機器で実行するように構成されてもよい。
【００８７】
端末機器は、１つ以上の電源２３、１つ以上の有線/無線ネットワークインタフェース２４、１つ以上の入出力インタフェース２５、及び／又は、１つ以上の操作システム２２３、例えばＷｉｎｄｏｗｓ  ＳｅｒｖｅｒＴＭ、Ｍａｃ  ＯＳ  ＸＴＭ、ＵｎｉｑｕｅＴＭ、ＬｉｎｕｘＴＭ、ＦｒｅｅＢＳＤＴＭなどをさらに含むことができる。
【００８８】
上記方法の実施例に記載のデータ送信側によって実行されるステップは、当該図６に示される端末機器の構造に基づくことができる。
【００８９】
本願の実施例は、プロセッサによってロードされ、上記実施例におけるデータ送信側によって実行されるデータ符号化方法を実行することに適する複数の命令を記憶する、不揮発性コンピュータ可読記憶媒体をさらに提供する。
【００９０】
本願の実施例は、
各命令を実現するプロセッサと、
プロセッサによってロードされ、例えば、上記実施例におけるデータ送信側によって実行されるデータ符号化方法を実行する複数の命令を記憶する記憶機器と、を含む、端末機器をさらに提供する。
【００９１】
当業者であれば理解できるように、上記実施例の様々な方法の全部又は一部のステップは、プログラムにより関連ハードウェアを指示して実現することができ、当該プログラムはコンピュータ可読記憶媒体に記憶でき、記憶媒体は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク又は光ディスクなどを含むことができる。
【００９２】
以上は本願の実施例に係るデータ符号化方法、装置、記憶機器及び端末機器を詳細に説明し、本明細書では個別の具体例を応用して本願の原理及び実施形態を説明し、以上の実施例の説明は、本願の方法及びその思想の理解を容易にするためのものに過ぎず、また、当業者にとって、本願の思想に基づいて具体的な実施形態と応用範囲を変更する場合があり、以上より、本明細書の内容は、本願を限定するものと解釈すべきではない。
【図１】
0006909308.tif 000006
【図２】
0006909308.tif 000007
【図３】
0006909308.tif 000008
【図４】
0006909308.tif 000009
【図５】
0006909308.tif 000010
【図６】
0006909308.tif 000011