JP5404038B2 - マルチメディア信号エンコーディングに使用される方法、装置およびシステム - Google Patents

マルチメディア信号エンコーディングに使用される方法、装置およびシステム Download PDF

Info

Publication number
JP5404038B2
JP5404038B2 JP2008520319A JP2008520319A JP5404038B2 JP 5404038 B2 JP5404038 B2 JP 5404038B2 JP 2008520319 A JP2008520319 A JP 2008520319A JP 2008520319 A JP2008520319 A JP 2008520319A JP 5404038 B2 JP5404038 B2 JP 5404038B2
Authority
JP
Japan
Prior art keywords
encoding
encoded
content
segment
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008520319A
Other languages
English (en)
Other versions
JP2009500951A (ja
Inventor
エム.ブートン ピーター
ダブリュ.ランドール ブルース
パルマー マシュー
Original Assignee
ソニック ソリューションズ リミテッド ライアビリティー カンパニー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ソニック ソリューションズ リミテッド ライアビリティー カンパニー filed Critical ソニック ソリューションズ リミテッド ライアビリティー カンパニー
Publication of JP2009500951A publication Critical patent/JP2009500951A/ja
Application granted granted Critical
Publication of JP5404038B2 publication Critical patent/JP5404038B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/114Adapting the group of pictures [GOP] structure, e.g. number of B-frames between two anchor frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/162User input
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/179Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scene or a shot
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Description

本実施形態は、全般的にはデジタル・データのフォーマッティングに関し、詳細には、デジタル・データのエンコーディングに関する。
生成され、記録され、かつ/または伝送されるデジタル・コンテンツの量の増加に伴って、コンテンツの圧縮および伝送を改善する必要も高まってきた。多くの圧縮、エンコーディング、および/または標準規格が、コンテンツの圧縮および伝送を提供するために開発され、定義されてきた。
これらの技法および/または標準規格の多くは、格納されまたは伝送されなければならないデータの量を減らす。さらに、これらの技法の多くは、コンテンツの品質の低下を最小限にした状態でデータの削減を可能にする。
本実施形態は、マルチメディア・コンテンツなどのコンテンツのエンコーディングおよび/またはフォーマッティングに使用される方法、装置、システムを提供する。幾つかの実施形態は、コンテンツのエンコーディングに使用される方法を提供する。これらの方法は、ソース・コンテンツを受け取り、ソース・コンテンツをエンコードし、エンコードされたコンテンツを作り、エンコードされたコンテンツの第1のエンコードされたセグメントを、複数のバッファ・モデルと較べて評価し、評価に基づいて、エンコードされたコンテンツの第1のセグメントが再エンコードされるべきかどうかを、複数のバッファ・モデルのうちの1つまたは複数と較べて決定し、第1のセグメントは再エンコードされるべきであると決定される、第1のセグメントを再エンコードする。
いくつかの実施形態は、エンコーディングに使用される方法を提供する。これらの方法は、ソース・コンテンツのエンコーディングを開始し、エンコードされたコンテンツを作り、再エンコードされるべきエンコードされたコンテンツのセグメントを識別し、セグメントの再エンコーディングの第1の候補スタート・ポイントを識別し、エンコードされたコンテンツの第1の部分を、第1の候補スタート・ポイントと較べて評価することによって、第1の候補スタート・ポイントが有効なスタート・ポイントであるかどうかを決定し、第1の候補スタート・ポイントが有効にされる、有効な再エンコード・スタート・ポイントとして第1の候補スタート・ポイントをセットする。
いくつかの実施形態は、さらに、ソース・コンテンツのエンコーディングを開始し、エンコードされたコンテンツを作ること、再エンコードされるべきエンコードされたコンテンツのセグメントを識別すること、セグメントの再エンコーディングの第の1候補エンド・ポイントを識別すること、エンコードされたコンテンツの第4の部分を、第1の候補エンド・ポイントと較べて評価することによって、第1の候補エンド・ポイントが有効なエンド・ポイントであるかどうかを決定すること、および第1の候補エンド・ポイントが有効にされるときに、有効な再エンコード・エンド・ポイントとして第1の候補エンド・ポイントをセットすることによる、エンコーディングに使用される方法を提供する。
いくつかの実施形態で、コンテンツのエンコーディングに使用される方法が提供され、そこでは、ソース・コンテンツを受け取り、ソース・コンテンツをエンコードし、エンコードされたコンテンツを作り、エンコードされたコンテンツのトータル・ビット・カウントを識別し、トータル・ビット・カウントが閾値ビット・カウントとの事前定義の関係を有するかどうかを決定し、トータル・ビット・カウントが閾値ビット・カウントとの事前定義の関係を有しないときに、再エンコードされたセグメントに関する調整されたトータル・ビット・カウントが閾値ビット・カウントとの事前定義の関係を有するように、エンコードされたコンテンツの1つまたは複数のセグメントを再エンコードし、1つまたは複数の再エンコードされたセグメントを作る。
さらに、いくつかの実施形態は、第1の閾値限度との事前定義の関係を有する品質レベルを有するエンコードされたコンテンツの1つまたは複数の第1のセグメントを識別し、第2の閾値レベルとの事前定義の関係を有する品質レベルを有し、第1のセグメントのうちの1つまたは複数から事前定義の範囲内にある1つまたは複数の追加セグメントがあるかどうかを決定し、追加セグメントのうちの1つまたは複数を再エンコードし、再エンコードされた追加セグメントが1つまたは複数の追加セグメントより少数のビットを利用するようになる品質レベルを有する1つまたは複数の再エンコードされた追加セグメントを作り、第1のセグメントのうちの1つまたは複数を再エンコードし、1つまたは複数の再エンコードされた第1のセグメントが対応する第1のセグメントの品質レベルより高い品質レベルを有するように1つまたは複数の再エンコードされた第1のセグメントを作る、マルチメディア・コンテンツのエンコーディングに使用される方法を提供する。
いくつかの実施形態は、エンコードされたマルチメディア・コンテンツ・ストリームを解析し、コンテンツ・ストリームのパラメータを識別すること、識別されたパラメータのうちの1つを変更すること、変更されたパラメータに基づいてエンコードされたコンテンツ・ストリームの少なくとも部分的なデコーディングをシミュレートすること、バッファ閾値が超えられているかどうかを識別すること、およびバッファ閾値が超えられていないときに、変更されたパラメータに従ってエンコードされたコンテンツ・ストリームを変更することによる、コンテンツのフォーマッティングに使用される方法を提供する。
さらに、いくつかの実施形態は、デジタル・コンテンツのエンコーディングを容易にするのに使用される方法を提供する。これらの実施形態は、エンコードされたコンテンツの諸部分のビットレートをグラフィカルに表すビットレート・トラックを生成し、ビットレート・トラックに対応するエンコードされたコンテンツの諸部分のエンコーディングの品質をグラフィカルに表す品質トラックを生成し、再エンコードされるべきエンコードされたコンテンツの部分の選択をビットレート・トラック内で識別する。
上述したニーズは、特に図面と共に熟読されるときに、次の詳細な説明に記載のデジタル・コンテンツのエンコーディングに使用される方法、装置、および/またはシステムの提供を介して、少なくとも部分的に、満足される。
対応する符号は、図面の複数のビューを通じて対応するコンポーネントを示す。当業者は、図面の要素が、単純さおよび明瞭さのために図示され、必ずしも原寸通りに描かれてはいないことを了解するであろう。例えば、図面の要素のいくつかの寸法は、本発明の様々な実施形態の理解を改善するのを助けるために、他の要素と較べて強調されている場合がある。また、商業的に実現可能な実施形態に有用であるか必要である、一般的であるがよく理解されている要素は、しばしば、本発明のこれらの様々な実施形態のより遮られないビューを容易にするために、図示されていない。
本実施形態は、1つまたは複数のデコーダ・バッファ・モデルおよび/またはエンコーディング方式を達成するために、コンテンツのエンコーディングに使用される方法およびシステムを提供する。さらに、いくつかの実施形態は、コンテンツの正確なエンコーディングを可能にするので、エンコードされたコンテンツが、要求されるエンコーディング方式別に複数のデコーダ・モデル(multiple decoder models)に従うようになる、る。いくつかの実施形態は、エンコーディングを加速し、いくつかの実装では、さらに、エンコードされたコンテンツ126の品質を維持しながら加速された速度でのコンテンツのエンコーディングを可能にするために、コンテンツ・ストリームの時間的分割を提供する。さらに、いくつかの実施形態は、改訂されかつ/または再エンコードされるべき、例えばコンテンツ・ストリーム全体のフル再エンコードを必要とせずに1つまたは複数の満足されていないデコーダ・モデルに適合する、エンコードされたコンテンツのうちの部分またはセグメント、を識別する。
図1に、いくつかの実施形態によるエンコーディング・システム120の単純化されたブロック図を示す。このシステムは、ソース・コンテンツ122、エンコーダ124、エンコーダ出力126、コンテンツ書き込みシステム130、およびストレージ媒体132を含む。ビデオ、オーディオ、および/または他のコンテンツなどのソース・コンテンツ122は、エンコーダ124に供給される。エンコーダは、ソース・コンテンツをエンコードし、部分的にコンテンツを圧縮して、例えば、書き込みシステム130が、コンテンツを格納するのに必要なストレージ媒体132のメモリ・スペースの量を減らすことを可能にする。エンコーディング・システムは、ハードウェア、ソフトウェア、ファームウェア、および/またはこれらの組合せを介して実装することができ、いくつかの例で、単一プロセッサもしくはマルチ・プロセッサのコンピュータ・システム、ミニコンピュータ、メインフレーム・コンピュータ、プロセッサ、マイクロ・プロセッサ、ならびにパーソナル・コンピュータ、ハンドヘルド・コンピューティング・デバイス、マイクロ・プロセッサ・ベースのまたはプログラマブルな消費者エレクトロニクスから操作することができる。さらに、いくつかの実施形態で、エンコーディング・システム120を、分散ネットワークを介して、所望されるエンコードされた出力を達成するために協力する、異なる物理的位置にある、システムのコンポーネントに分散させることができる。
上で紹介したように、システム120を、ハードウェア、ソフトウェア、コンピュータ実行可能命令、ファームウェア、および/またはその組合せを介して実装することができ、これらは、他の、プログラムならびに/あるいはハードウェア、ソフトウェアおよび/または組合せ、と組み合わせて実装することができる。エンコーディングおよび/または再エンコーディングは、通信ネットワークを介してリンクされたリモート処理デバイスによってある種のタスクが実行される分散コンピューティング環境で実行することもできる。分散コンピューティング環境では、ソフトウェア、実行可能ファイル、スクリプト、および類似物を、ローカルとリモートとの両方のメモリ・ストレージ・デバイスに配置することができる。コンピュータおよび/またはコンピュータ・ネットワークは、通常、揮発性および不揮発性の媒体、リムーバブルおよびノンリムーバブルの媒体などのコンピュータ読取り可能な媒体を含み、これらの媒体は、RAM、ROM、EEPROM、フラッシュ・メモリ、または他のメモリ・テクノロジ、CD−ROM、DVD、HD−DVD、BD、または他の光学ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、または他の磁気ストレージデバイス、ならびに/あるいは所望する情報を格納するのに使用でき、情報をそこから取り出すことができる実質的にすべての他の媒体を含むことができる。コンピュータおよび/またはネットワークを介する通信は、有線ネットワークもしくは直接配線ネットワーク、音響、RF、赤外線、および他の無線通信接続などの無線媒体、ならびに/あるいは他の関連する通信または通信リンクおよび/またはプロトコルの組合せを介するものとすることができる。
図2に、図1のエンコーディング・システム120の一部またはすべてを実装し、かつ/あるいは上で説明したおよび/または下でさらに説明するエンコーディングおよび再エンコーディングの一部またはすべてを実行するためにいくつかの実施形態で利用することができるコンピュータ・システム220の単純化されたブロック図を示す。コンピュータ220は、処理ユニット222、メモリ224、および通信リンクまたはネットワーク226を含むことができる。処理ユニット222は、実質的にすべてのプロセッサ、マイクロ・プロセッサ、および/または複数のプロセッサとすることができる。通信ネットワーク226は、システム・コンポーネントを一緒に直接におよび/または間接に結合する。メモリ224は、上で説明したメモリなど、実質的にすべての関連するメモリを含むことができ、データ、プログラム、ルーチン、実行可能ファイル、スクリプト、オーディオ・コンテンツ、ビデオ・コンテンツ、および類似物を格納することができる。
コンピュータ220は、さらに、このコンピュータにキーボード、ポインティング・デバイス、光学および/またはオーディオ検出器、タッチ・スクリーン、スタイラス、ディスプレイ、ならびに/あるいは他のそのようなデバイスをインターフェースし、かつ/または接続する1つまたは複数の有線または無線のユーザ・インターフェース230を含むことができる。このコンピュータは、さらに、外部デバイス240(例えば、外部ハードドライブ、プリンタ、ディスプレイ、および他のそのような外部デバイス)ならびに/あるいは1つもしくは複数のリモート・サーバ246、コンピュータ248、データベース250、および/または他のそのようなデバイスと通信する外部の有線および/または無線のネットワーク242、244と結合するポートおよび/またはソケット232を含むことができる。
戻って図1を参照すると、エンコーダ124は、通常、MPEG2(Moving Picture Experts Group)など、よく認識されている所与の標準規格または方式に従ってコンテンツ126をエンコードするように構成される。他のエンコーディング方式が、その代わりにおよび/またはそれに加えて利用され、これらのうちのいくつかは、通常、高品位ビデオ・コンテンツ、高分解度コンテンツなど、相対的により高いビットレートのコンテンツに使用され、MPEG4 part 10 AVC、VC−1(WMV9)、および他のそのようなエンコーディング方式を含む。これらの標準規格のうちの少なくともいくつかによるエンコーディングは、部分的に、AVCおよびVC1など、これらの標準規格のうちのいくつかは、エンコードされるコンテンツ126ごとに満足されなければならない複数のデコーダ・バッファ・モデルなどの、複数のデコーダ要件を提供するので、MPEGより複雑である。
本実施形態は、コンテンツの正確なエンコーディングを可能にし、要求されるエンコーディング方式による複数のデコーダ・モデルを満足する。さらに、いくつかの実施形態は、いくつかの実装で、エンコードされるコンテンツ126の品質を維持しながら複数のエンコーダ(multiple encoders)および/またはプロセッサ(processors)にまたがってコンテンツ・ストリームを分割することによって、加速されたエンコーディングをもたらす。さらに、本実施形態は、例えば1つまたは複数の満足されていないデコーダ・モデルに適合する、エンコードされたコンテンツのうちで改訂されかつ/または再エンコードされるべき部分またはセグメントのユーザ選択されかつ/または自動化された選択、を可能にする。
図3に、1つまたは複数の所望されるデコーダ・バッファ・モデルに従うエンコードされたコンテンツを作るためにエンコーディングを実装する、いくつかの実施形態によるプロセス320の単純化された流れ図を示す。ステップ322で、ソース・コンテンツを受け取る。このコンテンツは、記録された媒体(例えば、テープ、ディスク、または他のそのような媒体)から受け取ることができ、このコンテンツを、記録デバイスから受け取られる初期コンテンツとすることができ、このコンテンツは、ローカル・データ・ストレージからまたはリモート・データ・ストレージ(例えば、インターネットなどの分散ネットワークを介してアクセスされる)および他のそのようなソースまたはソースの組合せから獲得することができる。ステップ324で、1つまたは複数のデコーダ・バッファ・モデルに従ってコンテンツをエンコードする。ステップ326で、エンコードされたコンテンツが評価される。この評価は、コンテンツのエンコード中に、またはコンテンツの完全なエンコードの後に、実行することができる。ステップ330で、このプロセスは、エンコードされたコンテンツの1つまたは複数のセグメントが1つまたは複数の所望のデコーダ・バッファ・モデルを満足するのに失敗するかどうかを決定する。いくつかの実装において、以下で説明するpeak signal−to−reconstructed image比較など、1つまたは複数の品質閾値レベルが、オリジナル・コンテンツに対して評価される。
1つまたは複数のセグメントが、ステップ330で1つまたは複数のモデルを満足するのに失敗し、かつ/または品質限度を満足するのに失敗するものとして識別されると、このプロセスは、ステップ332に入り、ここで、識別されたセグメントのうちの1つまたは複数が再エンコードされるべきかどうかを決定する。セグメントが再エンコードされるべきであると、ステップ334に入り、1つまたは複数の識別されたセグメントを再エンコードする。ステップ336では、再エンコードされたセグメントを評価して、再エンコードされたセグメントが、前には満足されなかったデコーダ・バッファ・モデルのうちの1つまたは複数を満足するかどうかを決定する。再エンコードされたセグメントがモデルを満足するのに失敗すると、このプロセスは、ステップ332に戻って、セグメントはもう一度再エンコードされるべきかどうかを決定する。エンコードされたセグメントがモデルを満足すると、このプロセスはステップ340に入って、さらなるセグメントが評価されかつ/または再エンコードされるべきかどうかを決定する。追加のセグメントを再エンコードされるべきであるときには、このプロセスはステップ332に戻って、1つまたは複数のセグメントが再エンコードされるべきかどうかを決定し、あるいは、評価されるべきさらなるセグメントがないときには、このプロセスはステップ344に継続する。
ステップ344では、このプロセスは、1つまたは複数のチャプタ・ポイントを含めること(例えば、エントリ・ポイントを含めることを伴うセグメント再エンコードを介して)または下で説明する他の処理など、エンコードされたコンテンツの追加の処理が実行されるべきかどうかを決定する。さらなる処理が実行されるべきであるときには、ステップ346に入り、ここで、さらなる処理を実行する。あるいは、ステップ350に入り、ここで、エンコードされたコンテンツをファイナライズし、かつ/または格納する。コンテンツをファイナライズし、書き込む際に、コンテンツのうちで再エンコードされた部分が、バッファ・モデル・パラメータおよび/または品質限度を満足するのに失敗した、最初にエンコードされたコンテンツの代わりに、書き込まれる。
ストリーム全体を再エンコードすることを余儀なくさせる代わりに、コンテンツの再エンコーディングをコンテンツのセグメントに制限することは、少なくとも、エンコーディング時間を減らし、処理速度を高め、処理オーバーヘッドを減らし、全体的なエンコーディング性能を改善し、エンコードされたコンテンツが所望のデコーダ・バッファ・モデルを満足することを確認し、効果的にAVC、VC1、および/または他のエンコーディング方式などの1つまたは複数のエンコーディング標準規格を満足させ、上で説明したものおよび下でさらに説明する他の利益を提供する。
いくつかの実施形態によって提供されるセグメント・ベースの再エンコーディングは、先在するエンコードされたコンテンツ・ストリーム内のビデオ・データなどのエンコードされた(例えば、圧縮された)コンテンツの諸部分または諸領域の、1つまたは複数の変更されたエンコーディング・パラメータに従って再エンコードされたセグメント(例えば、高められたビットレート、トランスレーティング(translating)、および他のエンコーディング・パラメータまたはエンコーディング技法に従ってエンコードされた)との効率的な置換を可能にし、結果の共同のエンコードされたコンテンツが、1つまたは複数の標準規格および/またはデコーダ・モデルを満足するようになる。多数の以前のシステムは、通常、1つまたは複数のセクションがエラーを有し、かつ/またはデコーダ・モデルを満足するのに失敗したときに、ビデオ・ストリーム全体の再エンコードを必要とした。ストリーム全体の再エンコーディングは、エンコーディング・プロセスにかなりの長さの処理時間を追加し、生産性を劇的に低下させる可能性がある。いくつかの既存のシステムは、MPEG2の単一の明確に定義され確立された標準規格に従う、あるタイプの再エンコーディングを可能にする。しかし、MPEG2を満足するための再エンコーディングを、AVC、VC1、および多数の他のエンコーディング標準規格などの多数の他のエンコーディング標準規格に適用することはできない。これは、部分的には、MPEG2が単一バッファ・モデルを満足することだけを提供するが、AVCおよびVC1などの他のエンコーディング方式が、エンコードされたコンテンツが多くの場合に複数バッファ・モデル(multiple buffer models)を満足するように定義されているという事実に起因する。
いくつかの実施形態は、エンコードされたコンテンツの1つまたは複数の個々のセグメントを変更し、再エンコードすることを可能にし、その後、再エンコードされたセグメントが、メインのエンコードされたストリームに戻して組み込まれる。したがって、いくつかの実施形態は、後戻りしてコンテンツ・ストリーム全体(例えば、2時間のムービー)の完全な再エンコードを行う必要を回避する。その代わりに、本実施形態は、1分のセグメント、30秒のセグメント、10秒のセグメント、1秒のセグメント、1秒未満および/または実質的に任意の長さのセグメントなどの、セグメントを、再エンコードし、エンコードされたストリームに戻して組み込むことを可能にし、所望のパラメータを満足するコンテンツ・ストリームのエンコーディングを達成するのに必要な時間を劇的に減らす。
上で紹介したように、いくつかの実施形態は、コンテンツが一つ以上のデコーダ・バッファ・モデルを満足するようにエンコードされることを可能にする。これらのバッファ・モデルは、データが、デコーダにどのように取り込まれ、デコーダからどのように解放されるかを定義する。本実施形態は、これらの全般的に厳密な標準規格(通常はAVCまたはVC1の仕様などのエンコーディング仕様に詳細に記載されている)に従いながらのセグメント再エンコーディングを可能にし、ここで、結果のエンコードされたストリームは、複数のデコーダ・バッファ・モデルを満足する。これらのデコーダ・バッファ・モデルは、通常、MPEG2に対するよりもAVCおよびVC1と同じではなく、その理由は、MPEG2エンコーディングが、部分的に、通常は単一バッファ・モデルを満足するだけでよいが、AVC標準規格および/またはVC1標準規格を満足するエンコードされたストリームが複数のモデルを満足することができるからである。
複数のモデルを満足することは、デコーダが、単純に、そのデコーダがストリームをデコードすることを可能にする複数のモデル(リーキー・バケット・モデル;leaky bucket models)のうちのいずれか1つを満足しなければならないので、デコーダ側においてより高い柔軟性を条件とする。その代わりに、MPEG2では、満足されるべき単一のモデルがある。さらに、複数のモデルを満足することの利点は、異なるデコーダがストリームをデコードすることを可能にし、例えば、いくつかのデコーダが、相対的に高いフィル・レート(fill rate)を有するが相対的に小さいバッファを有することができ、他のデコーダが、相対的に大きいバッファを有するが相対的に低いフィル・レートを有することができる。通常、デコーダは、エンコードされたストリームにアクセスし、そのデコーダがそのストリームをデコードでき、再生できるかどうかを前もって識別することができる。
このシステムは、さらに、エンコードされたコンテンツを分析して、1つまたは複数のデコーダ・バッファ・モデルおよび/またはパラメータが満足されるかどうかを決定し、かつ/または検証することができる。モデルを満足することについての検証は、いくつかの実装で、デコーダの挙動(behavior)と、これらのデコーダが関連するバッファからのデータの消費に関してストリームをデコードする方法とをシミュレートすることによって実行される。いくつかの実装で、このシステムは、一時に1つのモデルをシーケンシャルにシミュレートする。いくつかの実装は、モデルを並列にシミュレートすることによって、潜在的なモデルのうちの複数またはすべてを実質的に同時に評価する。このシステムは、シーケンシャルにまたは並列に実行されたものであれ、シミュレーションからデータを抽出し、次に、1つまたは複数のデコーダ・モデルが失敗するかどうかを決定する。
1つまたは複数のデコーダのシミュレーションを実行するために、いくつかの本実施形態は、いくつかの実装で1つまたは複数のデコーダおよびその入力バッファの数学的モデルである、1つまたは複数の仮想参照デコーダ(hypothetical reference decoder、HRD)を使用する。このHRDは、AVC標準規格およびVC1標準規格の一方または両方によるなど、エンコードされたストリームによって満足されるべき、要求される標準規格に従って定義される。通常、要求される標準規格に準拠すべき所与のエンコードされたストリームについて、そのストリームは、ストリーム内で指定されるモデルのパラメータを与えられた複数のリファレンス・モデルに準拠する。HRDでのデコーダとその入力バッファとの間の関係は、「リーキー・バケット」バッファ・モデルに関して定義される。このバッファ・モデルは、ビットレート(ビット毎秒)およびバッファ充満度に関してバッファがどのように充填され、空にされるかのパラメータを指定する。ストリームが例えばAVCおよびVC1に準拠するためには、そのストリームは、HRDがバッファ充満度範囲を超えずに動作する、デコーダ・モデル・パラメータの1つまたは複数のセットを指定しなければならない。
いくつかの好ましい実装のHRDは、エンコードされたストリームが従わなければならない複数のモデルを一度に定義することができる。例えば、HRDは、異なるフィル・レートおよび異なるサイズを有する5個、10個、20個、100個、またはそれより多数のバッファ・モデルを定義することができ、エンコードされた信号は、これらの異なるバッファのうちの複数に従い、いくつかの例では異なるモデルのすべてに従う。
HRDは、1つまたは複数のモデルが失敗するかどうかを調べるために、一度に複数の、好ましくはすべての指定された可能なバッファ・モデルの同時検証を実行する。1つまたは複数のモデルが失敗したとして識別されると、このシステムおよび/またはユーザは、エンコードされたストリームの1つまたは複数のセグメントの、その後の再エンコードを実行することによって、後戻りして、ストリームを修正することができる。代替案では、このシステムおよび/またはユーザは、その特定のポイントでの(任意の1つまたは複数の部分/セクションでの)コンテンツの性質(nature)に起因して、1つまたは複数のモデルを満足しないおよび/または満足できない、と決定しまたは判断することができ、次に、このシステムは、ストリーム内のパラメータ指定を変更することができ、エンコードされたストリームが実際に標準規格(例えば、AVCおよび/またはVC1)に従う全てのバッファ・モデルより少ないバッファ・モデルをサポートしていることを識別する。例えば、いくつかの実施形態は、エンコードされたストリームによって満足されないデコーダ・バッファ・モデルを、メタデータとして、維持する。エンコードされたコンテンツを格納する際に、最終的なエンコードされたコンテンツによって満足されないモデルは、ヘッダまたはパラメータ・データ内で識別されず、あるいは、ストレージ媒体(例えば、ディスク、コンパクト・ディスク(CD)、デジタル多用途ディスク(DVD)、他の光学的に読み取り可能な媒体、および/または他の媒体)の指定、ヘッダ、および/またはパラメータ・データ内で、満足されないものとして識別することができる。
通常、エンコード中のMPEG2システムは、エンコーダが試み、達成するように指示される「イン」バッファ・レベルおよび「アウト」バッファ・レベルを指定する。しばしば、バッファは、アウト・ポイントを正しく達成せず、したがって、下流で、バッファ・モデルが失敗する。一部のMPEG2システムは、モデルに失敗した1つまたは複数の領域を修正するために、コンテンツ・ストリーム全体を、変更されたビットレートでのもう1つのエンコードを自動的に実装することを試み、その結果、最終的にストリーム全体が準拠する。これは、ストリーム全体の総合的なエンコーディング品質を下げるという効果を有する。
代替案では、上で紹介したように、複数のモデルに従うことを試みるいくつかの実施形態は、コンテンツの1つまたは複数のセグメントが複数のモデルのうちの1つまたは複数に失敗する場合を識別することができ、その後に再エンコードを開始するのではなく、単に失敗したバッファ・モデルを無効化する。したがって、いくつかの実施形態は、再エンコードを試みることを避けることができ、その結果、エンコードされたストリームは、ストリーム内で指定されるすべてのモデルより少ないモデルを満足するようになる。
図4に、いくつかの実施形態によるHRDモデル420の単純化されたブロック図を示す。HRD420は、デコーダ・モデル424〜426のうちの1つまたは複数を有するプロセッサ422を含む。いくつかの実施形態で、プロセッサ422は、少なくとも部分的にエンコーダ124などのエンコーダのプロセスを介して実装される。プロセッサ422は、標準規格(例えば、AVC、VC1、および類似物)に従って評価されるべきモデルごとに1つのデコーダ・モデルを含み、かつ/またはこれにアクセスする。プロセッサ422は、所望のデコーダ評価を実装できることが当技術分野で知られている、コンピュータまたはコンピュータ・システム(例えば、コンピュータ・システム220)、マイクロ・プロセッサ、ロジック、および他の処理回路網を介して実装することができる。いくつかの実施形態で、デコーダ・モデル424〜426は、ソフトウェアを介して、例えば、定義されたバッファ・モデルに従うデコーダの処理要件(例えば、フィル・レート、バッファ・サイズ、および他のパラメータ)を模倣するように構成されたオブジェクト指向プログラムおよび/またはクラスのベクトルとして実装される。いくつかの実施形態で、HRDは、オプションとして、HRD用処理能力がプロセッサ422、440、442にまたがって分散されるように、それぞれが1つまたは複数のデコーダ・モデル424〜426、450、および452を有する、複数のプロセッサまたはコンピュータ422、440、442を組み込む。プロセッサを、同一位置に配置したり、かつ/またはイントラネット、インターネット、もしくは他のそのようなネットワークなどのネットワーク上で分散させたりすることができる。
エンコードされたコンテンツ430が、HRD420に供給される。データ・セットの各要素は、各デコーダ・モデル424〜426(およびオプションで450、452)に供給される。モデルは、それぞれ、その特定のデータを直列にまたは並列に処理し、デコードされたストリーム内で発生するエラーを探す。要素の評価に基づいて、後続要素が、モデルに供給され、評価される。このシステムは、ストリームの各要素が評価のために各デコーダ・モデル424〜426に向けられ、ストリームが完全に評価されるように、ループバックし続ける。いくつかの実施形態で、HRD420は、コンテンツ・ストリーム122がエンコードされているときに、エンコードされたストリームを評価するのに使用される。HRDは、いくつかの実装で、さらに、エンコーディングおよびエンコードされたコンテンツの構成における使用のためにコンテンツ・ストリームの予測機能を提供することができる。例えば、HRDには、MPEG2エンコーダなど、ビデオ・コンテンツを処理する単純化されたエンコーダを含めることができる。HRD MPEG2エンコーダを介して達成されたエンコーディングに基づいて、HRDは、推定されるバッファ・レベル、AVCエンコーダ、VC1エンコーダ、MPEG4エンコーダ、および/または他のエンコーダのエンコーディング・レート、ならびに他のエンコーディング・パラメータを識別したり、予測したりすることができる。
図5に、セグメントの再エンコードを実装するプロセス520の単純化された流れ図を示す。ステップ522で、HRDを介するなど、エンコードされたコンテンツの処理を介して識別されたエラーを取り出す。ステップ524で、エラーを評価し、このプロセスは、1つまたは複数のセグメントの再エンコードを実行しなければならないかどうかを決定する。再エンコードが開始されるべきかどうかの決定は、1つまたは複数の要因に基づくものとすることができる。いくつかの実装で、再エンコードの決定は、ユーザによって指定される。このシステムは、バッファ・モデルが失敗する区域を識別して再エンコードを実装することができ、かつ/または再エンコードされるべき区域をユーザが指定することを可能にする。いくつかの実施形態で、再エンコードは、バッファ・モデルを満足するのに失敗する事実上すべてのセグメントについて開始することができる。さらに、いくつかの実施形態は、バッファ・モデルが満足されず、その後の再エンコードがセグメントの品質を閾値未満に劣化させない区域に、セグメントの再エンコードを制限する。それに加えておよび/またはその代わりに、セグメントの再エンコードを、品質が閾値未満に下がり、十分なビットリソースがより高いビットレートでの再エンコードに使用可能であるときに実装することができる。下で説明するように、他の要因および/または条件を利用して、再エンコードが開始されるべきときを決定することができる。
再エンコードが実行されるべきときには、ステップ526に入り、ここで、再エンコードを、識別されたセグメントについて開始する。ステップ530で、このプロセスは、1つまたは複数のデコーダ・モデルについて、再エンコードされたセグメントに関して1つまたは複数のエラーが検出されるかどうかを決定する。さらなるエラーが、再エンコードされたセグメントに関して検出される場合には、このプロセスは、ステップ532で、そのセグメントの、その後の再エンコードを実装しなければならないかどうかをもう一度決定する。再び、再エンコードがコンテンツの品質を大きく劣化させる(例えば、閾値を超えて)かどうか、使用可能なビット、閾値レベル、および/または他の要因を決定するなど、これらに限定されないが、多数の要因が、再エンコードを開始しなければならないかどうかを決定するために、再検討することができ、かつ/または再検討される。再エンコードされたセグメントの、その後の再エンコードが実行されるべきである場合には、このプロセスは526に戻る。その代わりに、その後の再エンコードを実行しないときには、このプロセスは、ステップ536にスキップする。
ステップ530での決定で、再エンコードされたセグメントが、要求されるバッファ・モデルを満足するときに、この処理は、ステップ534に入り、ここで、再エンコードされたセグメントを格納し、いくつかの実施形態では、再エンコードされたセグメントが、別々のファイルまたはストレージ位置に格納される。次に、このプロセスはステップ540に継続する。ステップ524および532で、再エンコーディングを、エラーが検出されるセグメントについて実行しないと決定される場合には、識別された1つまたは複数のセグメントについて失敗するバッファ・モデルが、ステップ536で失敗として記録される。いくつかの例で、失敗したバッファ・モデルは、別々のファイルに格納される。ステップ540で、このプロセスは、さらなるエラーを、再エンコードについて評価しなければならないかどうかを決定する。追加のエラーを評価しなければならないときには、このプロセスは、ステップ522に戻り、そうでない場合には、このプロセスは、ステップ542に継続する。
ステップ542で、エンコードされたストリームの記録を開始するが、ここでは、ステップ536で1つまたは複数のデコーダ・モデルに関して失敗として識別されたデコーダ・バッファ・モデルが、ストリームのヘッダから除去され、エンコードされたストリームが満足するバッファ・モデルが、記録される。ステップ546で、エンコードされたコンテンツの記録を開始する。ステップ550で、再エンコードされたセグメントを、コンテンツの記録中に識別する。ステップ552で、このプロセスは、最初に失敗してエンコードされたセグメント、または一緒に再エンコードされた他のセグメントを、再エンコードされたセグメントに置換し、かつ/または、再エンコードされたセグメントの形縫い合わせし(例えば、再エンコードされたコンテンツを別々のファイルから取り出し、失敗したセグメントを、取り出された再エンコードされたセグメントで置換し)、再エンコードされたセグメントを書き込む。ステップ554で、このプロセスは、書き込まれるべきさらなるエンコードされたコンテンツがあり、ステップ546に戻って、エンコードされたコンテンツおよび再エンコードされたコンテンツの書き込みを継続しなければならないかどうか、を決定する。そうでない場合には、このプロセスは終了する。
いくつかの実装で、デコーダ・バッファ・モデルを満足するのに失敗し、そのセグメントの再エンコードが所望の品質を達成せず、かつ/または、さらに要求されるデコーダ・バッファ・モデルを満足するのに失敗するセグメントについて、その失敗するセグメントに近接するコンテンツ・ストリームが、さらに評価され、かつ/または隣接するセグメントの再エンコードが、さらに実装される。対象とするセグメントの周囲のセグメントを再エンコードすることによって、再エンコードされたセグメントが、バッファ・モデルのイン・レート(in rates)および/またはアウト・レート(out rates)を満足するように、対象とするセグメントのバッファ・モデル要件を減らすことができる。さらに、隣接セグメントの再エンコーディングを利用して、再エンコードに続くエンコードされたストリームに戻す再エンコードされたセグメントの組み込みを単純にするか、よりたやすく可能にすることができる。
いくつかの実施形態は、ストリーム全体の完全な再エンコーディングを必要とする代わりに、コンテンツのセグメントだけの再エンコーディングを可能にすること、およびストリームが要求されるエンコーディング標準規格および/または要求されるデコーダ・モデルを満足するようにするために、再エンコードされたセグメントを最終的なエンコードされたコンテンツに組み込むこと、によって、エンコーディング・プロセスおよび処理時間を改善する。さらに、いくつかの実施形態は、要求されない、および/またはコンテンツの全体的な品質を大きく劣化させなければ満足することのできない、モデルの1つまたは複数の無効化されたバッファ・モデルを満足するために必要になるはずの、不必要な再エンコード、を防ぐことができる。要求されないモデルおよび/または閾値(ユーザ定義、システム定義、バッファ・モデル定義とすることができる)を超えて品質を劣化させなければ満足できないモデルについて、いくつかの実施形態は、要求されないバッファ・モデルの識別を提供し、コンテンツ・ストリームについてこれらのモデルを無効化する。例えば所与の再エンコードに関するターゲットのセグメントのアウト・ポイント・バッファ・レベルを達成しないことに起因する再エンコードの後に、満足されないデコーダ・モデル・パラメータ・セットを単純に識別し、かつ/または無効化することによって、このシステムは、全体的なコンテンツ品質を改善し、処理オーバーヘッドを減らし、処理時間を減らす。
図5に関して上で紹介したように、いくつかの実施形態は、エンコードされたストリームの処理が完了し、エンコードされたコンテンツが最終的な形で書き込まれなければならない(例えば、DVDまたは他の媒体に書き込む)ときに、再エンコードされたセグメントをコンテンツのエンコードされたストリームに戻して、一緒にしたり縫い合わせしたりすることによって、処理時間を改善し、処理オーバーヘッドを減らす。これらの実施形態では、最初のベース・エンコードが実行され、これに、エンコードされるべきセグメントの識別、再エンコードの実行、および1つまたは複数の別々のファイル内での再エンコードされたセグメントの維持、ならびに再エンコードされたセグメントは組み込まれるべきエンコードされたストリーム内の位置を識別するためのリンクの生成、が続く。再エンコードおよび他の処理が完了するとき、および/またはユーザがエンコードされた最終結果に満足するときに、エンコーディング処理がファイナライズされ、ここで、無効化されるモデルが識別され、1つまたは複数の再エンコードされたセグメントが、再エンコードされるべきと識別されたセグメントを置換して、エンコードされたストリームに戻して縫い合わされ、無効化されたモデルおよび改訂されたエンコードされたセグメント全体が格納される。1つまたは複数のモデルの無効化は、コーディング方式によって変化する場合がある。例えば、AVCに関して、モデルの無効化は、いくつかの実装で、無効化されたモデル・パラメータを含まない新しいデータを用いてストリーム内のhrd_parameterデータ構造体を再構成することによって達成することができる。いくつかの実施形態は、さらに、ユーザおよび/またはシステムが、エンコードされたコンテンツをファイナライズした後の追加のセグメント再エンコード、フル再エンコード、および/または他の処理と、その後の、変更されたエンコードされたストリームの格納のためにもう一度再ファイナライズすること、を実装することを可能にする。
エンコードされたコンテンツのストリームを評価する際に、いくつかの実施形態は、エンコードされたストリームが要求されるデコーダ・モデルを満足するかどうかを決定し、かつ/またはエンコーディングに起因する信号の品質もしくは劣化を決定することができる。いくつかの実施形態は、オリジナルのコンテンツ・ストリームとのデコードされたストリーム(例えば、HRDを介してデコードされた)の比較、ピクチャ品質の評価、ピクチャ・パラメータの品質の評価、および/または他の評価もしくは評価の組合せを実装する。例えば、いくつかの実装で、エンコーディングに続くピクチャ品質の評価は、圧縮されたビデオ・アプリケーションに関連するピクチャ品質減損を定量化する、最小可知差異(JND)の方法論またはアルゴリズムを使用することによって達成される。JNDは、いろいろなピクチャ欠陥に敏感であり、ある範囲のピクチャ品質にまたがって働き、人間の視覚的評価によく一致することを試みる予測をもたらす。それに加えておよび/またはその代わりに、JND方法論の結果を近似するアルゴリズム(例えば、サーノフ)を使用することができる。
信号対雑音比(SNR)比較および/またはpeak signal−to−reconstructed image(PSNR)比較を、それに加えておよび/またはその代わりに使用して、エンコードされた品質を決定することができる。PSNRは、本質的に、品質、歪み、および/またはデコードされた後のエンコードされたコンテンツがオリジナル・コンテンツにどれほどよく一致するかの決定の尺度である。他のエンコーディング評価および/またはイメージ評価を、当技術分野で既知のように利用して、エンコードされたコンテンツの品質を決定することができ、動きベクトルが多様であるか変化しているフレームの領域の識別、圧縮方式形成ベクトル(compression scheme formation vectors)の評価、量子化の値、マクロブロックの影響、冗長性を有する区域、およびエンコーディングの品質を測定するために、潜在的にエラーを示す可能性がより高いブロックを識別する他の要因の評価、ならびに品質を査定する他の方法または、複数の方法の組合せなどを利用することができる。
コンテンツの品質を決定する際に、いくつかの実装のシステムは、エンコーディング中にコンテンツの部分的デコードを実行することによって、エンコード・プロセスの一部として品質データ(例えば、JNDおよび/またはPSNRデータ)を入手する。通常、部分的デコードは、コンテンツの完全なエンコーディングの前であるが、コンテンツをエンコードすることの悪影響の少なくとも一部を評価できる段階で、開始することができる。部分的デコードは、評価できるコンテンツを作り、かつ/または後に評価される(例えば、PSNR値、JND値、および/またはある他の歪みの尺度)実質的に完全にデコードされたフレームを作る。通常、エンコーディングは、例えば、離散コサイン変換(DCT)、あるフレームから別のフレームに進むインター・フレーム圧縮、エントロピ・エンコーディング、量子化、および/または他のエンコーディング・レイヤを利用する、エンコーディング・プロセスのレイヤ化されたセットである。部分的デコードを、例えばHRD420を介して開始して、エンコーディングの1つまたは複数のレイヤの間のある時のストリームを評価して、所望のPSNR、JND、または他の評価結果を生成することができる。その後、評価結果を閾値レベルと比較して、エンコードするプロセッサに返すことができるエンコーディング品質の尺度を入手する。
エンコードされた信号の品質の評価に関するPSNR、JND、および/または他のパラメータの選択および使用は、処理能力および/または処理オーバーヘッド、期待される実行時間、結果が必要な速度、ならびに他の要因を含む、多数の要因に依存する可能性がある。例えば、エンコードされたコンテンツをリアルタイム・レートで評価するときには、このシステムは、PSNRの決定が、通常は相対的にすばやいアルゴリズムを使用するので、評価をPSNRに制限することができる。評価の速度がそれほどクリティカルでない、および/または信号処理能力が十分である情況では、JND評価を使用することができる。
いくつかの実装は、PSNRとJNDとの両方を使用するなど、複数の比較および/または品質評価を利用する。このシステムは、いくつかの実装で、さらに、エンコーディングを評価し、品質を決定するのに1つまたは複数の比較のうちのどれを使用するかをユーザが選択することを可能にすることができる。同様に、ユーザは、複数のアルゴリズムおよび/または比較の間の重み付け(ユーザの進歩したレベルに依存して)を指定することができ、さらに、利用される処理能力の量を指定することができる。
評価を、フレーム全体に対して実行することができ、評価は、フレームごとに、サブフレームごとに、またはフレームのグループ化に対して実装される。処理速度および/または処理オーバーヘッドについて補償するために、いくつかの実装で、このシステムは、統計的サンプリング機構を使用して、特定のイメージ内のコンテンツの1つまたは複数のブロックをランダムに、任意に、および/または選択的に取得し、その1つまたは複数のブロックについて、現在のPSNR値、JND値、および/または他の評価技法をサンプリングする。このサンプリングは、サンプリングされるイメージの全体的な歪み(distortion)の統計的マッピングを生成することを可能にする。いくつかの実装で、このサンプリングは、エンコードされた信号を正確に評価し、エンコーディング・レベルに対する調整をもたらすのに十分な情報を提供する。サンプリングし、かつ/または評価を案内するためにブロックを選択する際に、いくつかの実施形態は、動きベクトルが相対的に大きく変化するか移動しつつある領域について、圧縮方式形成ベクトル、量子化の値(量子化の粗い値は、相対的に大きい量の圧縮を示す可能性がある)、および他の要因をチェックして、エンコーディング品質の相対的に正確な表現を提供し、かつ/またはエンコーディングの品質の測定に関する1つまたは複数の誤差を示す可能性が潜在的により高いブロックを識別する。
図6に、エンコードされたコンテンツを評価するプロセス620の単純化された流れ図を示す。ステップ622で、コンテンツ・ストリームの少なくとも一部を、そのストリームがエンコードされているときにデコードする。ステップ624で、相対的に高い圧縮の区域など、フレームまたはピクチャ内の1つまたは複数の区域を識別する。ステップ626で、少なくともこれらの識別された区域を評価し、評価の結果を1つまたは複数の閾値レベルと比較する。ステップ632で、このプロセスは、結果がその1つまたは複数の閾値レベルを満足するか、または超える(あるいは、評価されるパラメータおよび/または閾値限度に依存して、それ未満になる)かどうかを決定する。評価の結果が閾値を満足し、したがって品質レベルが満足なものであるときには、このプロセスはステップ642にスキップする。
その代わりに、品質が閾値限度未満になるときには、このプロセスはステップ634に入り、ここで、再エンコードが実行されるべきかどうかを決定する。やはり、この決定は、閾値レベルに基づいて、このプロセスおよび/またはシステムによって行うことができる。その代わりに、このシステムは、エンコードされたストリームのうちで潜在的品質問題を有する区域を識別し、再エンコードされるべきセグメントをユーザが選択することを可能にすることができる。例えば、潜在的品質問題を有する区域、相対的に高い圧縮を有する区域、デコーダが失敗する区域および/または潜在的エラーが発生する区域、ならびに/あるいは他の関連する情報を識別するレポートおよび/またはタイムライン、を生成することができる。再エンコードが開始されるべきときには、このプロセスはステップ636に入り、ここで、セグメント再エンコードを開始する。再エンコードの後に、このプロセスはステップ624に戻る。
再エンコードが実行されないときには、ステップ640に入り、ここで、識別されたセグメントについて失敗した1つまたは複数のデコーダ・モデルを記録する。ステップ642では、プロセス620は、エンコードされたコンテンツ・ストリームの終りに達したかどうかを決定する。そうでない場合には、このプロセスはステップ622に戻る。そうである場合には、このプロセスは終了する。
当技術分野で既知の通り、AVC、VC1、MPEG2、および他のエンコーディング方式など、いくつかのエンコーディング方式および/またはエンコーディング標準規格は、1つまたは複数の異なるフレームを参照して1つのピクチャまたはフレームを定義することによって、維持されなければならないデータの量を減らす。例えば、第1のフレームが、第2のフレームを参照し、第2のフレームに対して行われる変更を定義して、第1のフレームを得ることができる。さらなる例として、AVC圧縮方式は、通常、大きいコーディング効率ゲインのために、フレームのインター・フレーム予測に頼る。インター予測のタイプは、フレーム・タイプすなわち、Pフレーム(予測フレーム)、Bフレーム(両方向予測フレーム)、Iフレーム(イントラ・フレーム)、または他の定義されたフレーム・タイプのいずれであるかに依存する。Pフレームは、通常は1つの他の基準フレームから予測することができ、Bフレームは、通常は2つの他の基準フレームの組合せから予測することができる。いくつかの実施形態は、セグメント再エンコードを実装する際に、複数のフレームの間のインター予測方式を妨害するのを避けることを試み、かつ/または正確なデコーディングを提供するために参照を再指定する。
例えば、AVCなどのいくつかのエンコーディング仕様は、基準フレームのインデックスを格納するのに使用される基準フレーム・リスト(AVCの場合には、時々L0およびL1と呼ばれる2つの基準フレーム・リストが通常は維持される)を定義することによって、参照されるフレームの管理をどのように維持し、実装しなければならないかを指定する。デコーダは、デコーディング中に、L0またはL1のいずれかによってインデクシングされる基準フレームのストレージを維持する。フレームをデコードするときに、リストL0および/またはL1が、対象とするフレームを再構成する際に使用される適当な基準フレームを突き止めるために、対象とするフレームのデコーディングのために参照される他のフレームを識別するためにアクセスされる。
さらに、MPEG2などのいくつかのエンコーディング方式では、コンテンツがビジュアル・コンテンツであるときなどに、ピクチャのフレームが一緒にグループ化される(グループ・オブ・ピクチャすなわちGOPと呼ばれる)。通常はIフレームから始まり、GOPを通って規則的なインターバルのPフレームおよびI/Pフレームの各対の間の1つまたは複数のBフレームを含み、閉じた複数のGOPの間のインター予測を許容しない、GOPの編成および/または構造のゆえに、このエンコーディング方式は、セグメント再エンコードを使用するための便利なインターバルを提供する。MPEG2について、相対的に短いか相対的に少数のフレームを収容するGOPを有することが通常である。例えば、MPEG2について、GOPは、通常、おおむね再生中の約1/2秒の時間のインターバルと等しい、約13〜15個のピクチャまたはフレームを含む(30フレーム毎秒で再生するときすなわち、15/30毎秒または約1/2秒)。相対的に短いGOPは、MPEG2に関する再エンコーディングのスタート・ポイントおよびエンド・ポイントの識別を単純にする。
しかし、AVC、VC1、および他の関連するエンコーディング方式など、他のエンコーディング方式は、しばしば、GOP構造を定義しないか、通常はMPEG2 GOP構造に対してはるかにより大きいおよび/またはより長いGOP構造を有する。例えば、AVCのGOP構造は、いくつかの場合に、150個以上のフレームまたはピクチャ(通常、複数のIフレーム、Bフレーム、Pフレーム、および/またはIDRフレームを含む)を含むことができる。その結果、AVCまたはVC1などの方式を用いてエンコードされたGOPに従って再エンコーディングするときに、その再エンコーディングは、多数のピクチャが再エンコードされることをもたらす可能性があり、これは、計算処理上負荷が重く、時間がかかる可能性がある。さらに、長いGOPは、しばしば、再エンコーディングに関して、不便であるか、難しいレベルの粒度(granularity)である。
いくつかの実施形態は、再エンコードされるべきセグメントの長さを減らし、処理オーバーヘッドを減らすと同時に処理時間を減らすために、GOP内および/またはサブGOPレベルでセグメントの再エンコードを開始する能力を提供する。GOP内またはサブGOPレベルの粒度(granularity)での再エンコードの開始は、スタート・ピクチャ境界およびエンド・ピクチャ境界の外側のフレームがこれらの境界内のフレームを参照しない、再エンコードされる一連のフレームの境界を定めるストリーム内の、スタート・フレームまたはスタート・ピクチャとエンド・フレームまたはエンド・ピクチャと、を識別することによって、および/またはアップグレードされたPフレームまたはBフレームでの再エンコードの開始に対してPフレームまたはBフレームをIフレームにアップグレードすることによって、達成される。
図7に、複数のピクチャまたはフレーム722を含むコンテンツのストリーム720の一部の単純化されたタイムライン表現を示す。このタイムラインは、コーディングされたピクチャのインデックス表現である。アクセスおよびユーザ理解を容易にするために、いくつかの実装では、タイムラインを、エンコード順序に併置された時刻表示順序726に対して相対的に生成することができる。上で示したように、フレームは、通常、フレーム・タイプに従って定義され、図7の例では、Iフレーム、Bフレーム、Pフレーム、およびIDRフレームとして指定される。セグメント再エンコードを開始する前に、いくつかの実施形態は、ストリーム720のセグメントを、再エンコードされる部分に対して評価して、ピクチャ参照および/または依存性の妨害を避けることを試みて再エンコーディングを実装できるかどうか、およびどこで実装できるか、を決定する。
いくつかの実施形態は、ストリーム720のフレーム722を評価して、1つまたは複数のセグメント再エンコード・スタート・ポイントまたはイン・ポイントと、1つまたは複数のエンド・ポイントまたはアウト・ポイントとを識別する。いくつかの例で、例えばAVCを満足するときに、参照リストL0およびL1が、対象とするフレームが参照する他のフレームを決定するのに利用される(例えば、対象とするフレームBピクチャ730は、将来に4フレーム離れたIフレーム732および過去に5フレーム離れたBピクチャ734を参照する)。参照リストL0および/またはL1は、将来への1つまたは複数の基準ピクチャおよび/または過去への1つまたは複数の基準ピクチャを決定するためにアクセスされる。
上で説明したように、いくつかのエンコーディング標準規格は、複数のフレームの参照を提供し、参照リストが、基準ピクチャのインデックスを格納するのに使用される。デコーダは、基準ピクチャのストレージを維持し、予測を実装するために基準フレームをルックアップするのに、このリストを使用する。セグメント再エンコード中に、いくつかのシステムは、他のフレームまたはピクチャへの参照を妨害することを避けることを試みる。ストリーム720を評価する際に、いくつかの実施形態は、提案されたセグメントの外側のピクチャが、再エンコードされる提案されたセグメント内のピクチャを参照してるかどうかを決定することによって、適当な再エンコード・スタート・ポイントおよび/またはエンド・ポイントを識別することを試みる。いくつかの実装で、ピクチャ・タイプ(例えば、I、B、P、IDR)、持続時間、ビット単位のサイズ、いくつかの例でバッファ状態(例えば、HRDバッファ状態など)、および/または他の関連情報など、ストリームのピクチャに関連する情報を含む、データ構造体などの情報を含むインデックスが生成される。ピクチャのインデックスには、そのピクチャを参照するエンコードされたストリーム内の他のピクチャ754〜758の、タイムライン・インデックスなどのインデックスまたはリスティング752をも含めることができる。
この、他のピクチャのリスト752は、多数の異なるフォーマットおよび/または構成で格納することができ、いくつかの実装では、メタデータおよび/またはタイムライン・ピクチャ・データ構造体を付加されたリストして格納される。例えば、図7に、Iピクチャ750を参照している各ピクチャ754〜758を識別する参照リスト752と共にIピクチャ750を示す。このインデックスは、システムおよび/またはユーザが、検討されているピクチャを参照する他のピクチャをすばやく簡単に識別することを可能にする。
ピクチャを参照するピクチャのインデックス752は、実質的に任意の個数のピクチャを含むことができる。例えば、ストリームまたはGOPの先頭に位置する完全に黒のディスプレイ・スクリーンを生成するコンテンツの1フレームを、そのストリームまたはGOP内のすべての他の黒いフレームによって参照することができる。しかし、いくつかの実装で、エンコードされたストリームの特定のプロファイルおよびレベルが、あるピクチャを参照できるピクチャの個数に対する限界をセットアップすることができる。
リスト752は、再エンコードされるべきセグメントまたはサブGOPの潜在的なスタート・ポイントおよびエンド・ポイントを識別するためのストリーム720の評価を単純にする。参照リスト752にアクセスすることによって、対象とするピクチャを参照するピクチャを識別する検索アルゴリズムを使用することができる。それに加えておよび/またはその代わりに、このシステムは、対象とするピクチャが参照するピクチャを決定するのに使用されるアルゴリズムを使用することができる。
再エンコード・セグメント識別アルゴリズムは、コンテンツのストリーム720に沿ったセグメント・スタート・ポイントおよびセグメント・エンド・ポイントを識別する。いくつかの実施形態は、ストリームのうちで再エンコードすべきものとして識別される部分またはその付近でスタート・ポイントおよびエンド・ポイントを識別することを試みる。さらに、いくつかの実施形態は、再エンコードすべきものとして識別されるセグメントから離れた穏当な位置または穏当な個数のピクチャを定義する限度をセットする。例えば、ユーザが、ほぼ時刻「T」(例えば、ストリームに約50秒入ったところ)で再エンコードを開始することを選択するときに、そのユーザは、再エンコードされるセグメントのスタート・ポイントがその「T」ポイント付近になることを期待するであろう。したがって、この限度は、決定されたスタート・ポイントが、要求されたスタート・ポイントを近似することを保証することを試みる。いくつかの実施形態は、複数の潜在的なスタート・ポイントおよびエンド・ポイントを識別する。この複数の潜在的なスタート・ポイントおよびエンド・ポイントに基づいて、ユーザは、使用すべきポイントを選択することができる。
図8に、いくつかの実施形態によるセグメント再エンコード・スタート・ポイントおよびセグメント再エンコード・エンド・ポイントを識別するのに使用されるプロセス820の単純化された流れ図を示す。図7および8を参照すると、ステップ822で、候補スタート・ポイント・ピクチャが、コンテンツのストリーム720の評価中に識別されるセグメントに対して相対的に識別される。例えば、ステップ822には、再エンコードすべきものとして識別されたセグメント(ステップ534で識別されたセグメントなど)の事前定義の限度内にIピクチャまたはIDRピクチャがあるかどうかの決定、ユーザによる選択、オリジナル・コンテンツとの比較を介する識別、および/または候補ピクチャを識別する他の方法、を含めることができる。ステップ824で、プロセス820は、選択された候補スタート・ピクチャに対して相対的に後続のピクチャへ、例えばタイムライン720上で1ピクチャ前方(forward)へ、スキャンする。
ステップ826で、評価されているピクチャの参照リスト752が使用可能であるときにはこれにアクセスして、識別された候補スタート・ポイント・ピクチャの以前(previous)のピクチャが、評価されているピクチャを参照し、したがって潜在的なセグメント(potential segment)の外側にあるかどうかを決定し、あるいは、他の評価を実行して基準ピクチャを決定する。スキャンされたピクチャの1つが、候補スタート・ポイントの以前(previous)(例えば、図7では左)のピクチャによって参照されると決定される場合には、このプロセスは、ステップ832に入り、ここで、候補スタート・ポイントを無効なスタート・ポイントとして定義する。ステップ834で、新しい候補スタート・ポイントを選択し(例えば、以前の候補の以前(図7では左)のピクチャ)、評価する。通常、その後の候補スタート・ポイント・ピクチャは、少なくとも、ステップ826で識別されたピクチャまたはそのピクチャの以前のピクチャである。この評価は、セグメントが自己完結的であり、このセグメントの外側のピクチャが、このセグメント内のピクチャを参照していないことを、保証することを試みる。この理由は、再エンコード後のこのセグメント内のピクチャに変化を生じさせる可能性が高いからである。その後、このプロセスは、ステップ826に戻って、後で選択された候補スタート・ポイントを評価する。
ステップ826で、評価されているピクチャが、候補スタート・ポイントの向こうのピクチャによって参照されないと決定されるときには、ステップ830に入り、ここで、評価された順方向ピクチャの個数を、デコード・ピクチャ・バッファのサイズなど、所定の閾値と比較する。通常、順方向の評価は、デコード・ピクチャ・バッファのサイズを超えて進む必要がない。というのは、参照されるピクチャが、現在のピクチャがデコードされる前にデコードされなければならないので、デコーディング・システムが、通常はこのポイントの向こうのピクチャを参照しないからである。
ステップ830で、候補スタート・ポイントから評価されたピクチャの個数が閾値(例えば、バッファ・サイズ)以上ではないと決定されるときには、このプロセスは、ステップ824に戻って、再エンコードすべきセグメント内の別のピクチャを評価する。その代わりに、評価されたピクチャの個数が限度以上であり、ピクチャが候補スタート・ポイントの前のピクチャによって参照されないときには、ステップ836に入り、ここで、候補スタート・ポイントを有効なスタート・ポイントとして定義する。
候補スタート・ポイントが、ステップ836で有効として識別されたならば、再エンコードされるセグメントのエンド・ポイント・ピクチャを識別する。ステップ840で、最初のエンド・ポイント候補を選択し、このシステムは、識別されたスタート・ポイント・ピクチャ、IDRピクチャ(例えば、AVCに関して)、または他のインジケータに達するまで、候補エンド・ポイントから候補セグメントのピクチャを通って逆方向にスキャンして、提案された再エンコード・セグメントの外側のピクチャがセグメント内のピクチャを参照するかどうかをさらに決定する。上で示したように、スタート・ポイントを評価するときに、スタート・ポイントから順方向に評価されるピクチャは、通常、デコード・ピクチャ・バッファのサイズに制限される。候補エンド・ポイントから後ろにピクチャを評価するときには、通常、評価されるピクチャの個数に限度はなく、いくつかの場合に、スタート・ポイント・ピクチャまでのすべてのピクチャが評価される。しかし、基準ピクチャは、VC1およびAVCなどの多数のエンコーディング方式について、逆方向でIDRピクチャの向こうのピクチャを参照しない。IDRピクチャは、イントラ予測され、したがって他のピクチャを参照しない。さらに、IDRピクチャの出現は、通常、デコーダに現在格納されている基準ピクチャをフラッシュさせ、したがって、デコード順で後続のデコードされるピクチャは、通常、IDRピクチャの前のピクチャを参照しない。
ステップ840で、候補セグメントの再エンコード・エンド・ポイントを選択する。やはり、エンド・ポイントは、再エンコーディングになるべきものとして識別されたセグメントの近くで選択され、ユーザによって選択することができ、再エンコードされるセグメントに近接するIピクチャまたはIDRピクチャおよび他の選択方法とすることができる。ステップ842で、プロセス820は、評価されているピクチャが、識別された候補エンド・ポイント・ピクチャの向こう(例えば、図7では候補の右)のピクチャによって参照されるかどうかを決定する。いくつかの実施形態で、ステップ842での評価は、参照リスト752を使用することによって単純にされる。評価されているピクチャが、候補エンド・ポイントの向こうのピクチャによって参照される場合には、ステップ850で新しい候補エンド・ポイントを選択し、このプロセスは、ステップ842に戻って、その新しい候補エンド・ポイントに対して相対的にピクチャを評価する。
ステップ842で、評価されているピクチャが、候補エンド・ポイントの向こうのピクチャによって参照されないと決定されるときには、ステップ844に入り、ここで、評価されているピクチャが、ステップ836で識別されたセグメントの再エンコード・スタート・ポイントピクチャであるかどうかを決定する。評価されているピクチャがスタート・ポイント・ピクチャである場合には、このプロセスはステップ854に継続し、そうでない場合には、このプロセスはステップ846に移動する。ステップ846では、このプロセスは、評価されているピクチャがIDRピクチャであるかどうかを決定する。ピクチャがIDRピクチャではない場合には、このプロセスは、ステップ852に継続して、前のピクチャを選択し、その後、ステップ842に戻って、選択された前のピクチャを再評価する。
ステップ844および846で、評価されているピクチャが、スタート・ピクチャまたはIDRピクチャであると決定されるときに、このプロセスは、ステップ854で、候補エンド・ピクチャを、再エンコードされるセグメントの境界を定義する有効なセグメント再エンコードエンドピクチャとして識別する。通常、ピクチャは、キャッシュのフラッシュおよび類似物に起因して、逆方向でIDRピクチャの向こうのピクチャを参照せず、したがって、評価を、IDRピクチャで停止させることができ、この候補エンド・ポイント・ピクチャは、有効として識別され、したがって、再エンコードされるセグメントの境界が確立される。
いくつかの実装で、ステップ822での候補スタート・ポイント・ピクチャの選択は、少なくとも部分的に、候補スタート・ポイント・ピクチャが満たさなければならない参照を制限するために、Iフレームに制限され、ここでは、そのIフレームの前のピクチャは、そのIフレームまたはそのIフレームの向こうのピクチャを参照しない。代替案では、いくつかの実施形態は、候補スタート・ポイント・ピクチャをBピクチャおよび/またはPピクチャにすることを許容する。例えば、Bピクチャは、通常、そのBピクチャを実際にデコードできるようになる前に既にデコードされている1つまたは複数のフレームを参照する。したがって、いくつかの実施形態は、再エンコードを実装する際に、再エンコードを開始し、そのBピクチャの参照をリセットするか再定義し、その結果、そのBピクチャが、前のフレームを参照しないIピクチャに置換されるようにする。したがって、いくつかの実施形態は、サブGOPを定義し、そのサブGOPを再エンコードすることによって、長いGOP(例えば、AVCエンコーディング方式およびVC1エンコーディング方式のGOP)について補償する。
Iピクチャの生成および/またはBピクチャもしくはPピクチャのIピクチャへの変換の前に、いくつかの実施形態は、Iフレームへのアップグレードに関連するバッファおよび/または処理オーバーヘッドが使用可能であることを検証する。例えば、アップグレードすべきPフレームの選択は、選択され、Iフレームへの変換を可能にするのに十分な処理バッファ・オーバーヘッドがあることが検証される。変換に必要なオーバーヘッドの評価は、少なくとも部分的に、変換されるピクチャに対する相対的な使用可能バッファ・レベルが、十分なデータを後のデコード中に抽出することを可能にするのに十分に高いことの検証を含む。
このシステムは、様々なバッファ・モデルを検証する(例えば、図5のプロセス520を介する検証)際に生成されるデータを利用することができる。検証データは、さらに、PフレームまたはBフレームをIフレームに変換するのに使用可能なヘッドルームおよび/またはオーバーヘッドの量を決定するのに使用することができる。1つまたは複数のオーバーヘッド閾値を使用して、エンコーダがバッファのオーバーフローを予測するのに1つまたは複数の制御アルゴリズムを組み込むように、潜在的な候補スタート・ポイントを評価することができ、処理レベルおよび/またはバッファ・レベルが最大バッファ・レベルに近いか最大バッファ・レベルからの閾値限度以内にある場合には、このシステムは、BフレームまたはPフレームのIフレームへの変換を避ける。したがって、これらの実施形態は、再エンコードが低い品質をもたらす可能性がある、相対的に低いレベルまたはビットレートである場合に、その要求を制限し、かつ/または避ける。いくつかの実施形態は、現在のBフレームをIフレームに変換するときに、ピクチャ・サイズ(ビット数)の変化の予測を得るために、1つまたは複数の、以前のBフレーム対Iフレームサイズ比を調査する。ピクチャ・サイズの予測された変化が、バッファ内の使用可能スペースと比較される。十分なスペースがあり、通常は誤差のマージンをもたらす過剰なスペースがあるときに、このシステムは、BフレームまたはPフレームからIフレームへの変更を実装し、バッファ・レベルを評価して、レベルを超えたかどうかを決定する。レベルを超えるときには、セグメント再エンコードを実行してサイズを調整することができ、あるいは、その変換を利用しない。代替案では、変化がピクチャ・サイズであることを予測する代わりに、いくつかの実施形態は、BフレームまたはPフレームからIフレームへの変換を実装し、その後、バッファ・サイズを評価して、失敗が発生し、かつ/または再エンコードが実行されるべきかどうかを決定する。
再エンコードを実装し、再エンコードされたセグメント(1つまたは複数)をメイン・コンテンツに組み込む際に、いくつかの実施形態は、バッファ・モデルを評価して、有効な再エンコードが所望のセグメントで実装されたかどうか、ならびに/あるいはモデル標準規格および/またはモデル仕様を満足しながら所望のエンコーディングを可能にするようにバッファ・モデルを調整することができるかどうかを決定する。
図9に、再エンコードに関連してバッファ・モデルの評価を決定し、実装するのに使用されるプロセス920の単純化された流れ図を示す。ステップ922で、このプロセスは、コンテンツ・ストリームを解析し(例えば、ベース・エンコーディング中または初期エンコーディング中に)、バッファ・モデルの分析およびシミュレーションで使用されるパラメータおよび/またはメタデータを識別する。ステップ924で、バッファ・モデル動作(例えば、部分的にビットレートまたはバッファ・サイズの変化に起因するバッファに対する影響)のシミュレーションを含み、ならびに/あるいは再エンコードされるセグメントおよびコンテンツ・ストリームのパラメータおよび/またはメタデータのマージング(merging)におけるバッファ・モデル処理を実装する。ステップ926で、1つまたは複数のバッファ・モデル・フィールドを、ストリーム内で訂正する。
バッファは、「リーキー」バケット・モデルに従ってモデル化することができる。リーキー・バケット・モデルは、いくつかの例で、3つのパラメータすなわち、伝送ビットレート(R)、バケット・サイズまたはデコーダ・バッファ・サイズ(B)、およびバッファ充満度(F)によって特徴を表すことができる。いくつかの実装で、伝送ビットレートRは、ビットがデコーダ・バッファに入るときのピーク伝送ビットレート(ビット毎秒単位)に基づくものとすることができる。固定ビットレート(CBR)シナリオでは、ビットレートRは、しばしば、チャネル・ビット・レートおよび/またはビデオ、ビデオ・セグメント、もしくはビデオ・チップの平均ビットレートである。バケットまたはデコーダ・バッファのサイズB(ビット単位)は、ビットレート変動を平滑化することができるが、通常、期待されるデコーディング・デバイスの物理バッファ未満のレベルで維持される。バッファ充満度Fは、デコーダがバッファからのビットの取り出しを開始する前の初期デコーダ・バッファ充満度(ビット単位)によって定義することができる。いくつかの例で、初期スタートアップ遅延(D)を、充満度FおよびビットレートRによって定義することができ、ここで、遅延D=F/R秒である。
図10に、リーキー・バケット・モデル1020の単純化されたグラフィカル表現を示す。通常、リーキー・バケット・モデルでは、ビットは、充満度Fのレベル1024までは傾き1022によって表されるレートRでバッファに入り、その後、第1のフレームの初期個数のビットb(0)1026が、時刻t1に取り出される。ビットは、ビットレートRでバッファに入り続ける。デコーダは、所与の瞬間(例えば、それぞれt2、t3、...、tn)に、後続フレームのビットb(1)1030、b(2)1032、...、b(n−1)、b(n)1034を取り出し続ける。通常、固定ビットレート(CBR)を提供するシステムでは、傾き1022は、データ転送中に固定された所定のレートを有する固定ビットレートの代表値に実質的に等しい。可変ビットレート(VBR)を用いると、多くのシステムは、バッファが充填されるまでは実質的に最大のレートでコンテンツを供給することによって動作し、その後、いくつかの例ではバッファからのビットの取り出し後に、待機し、充填を再開する。
図11に、可変ビットレートによるリーキー・バケット・モデル1120の単純化されたグラフィカル表現を示す。ビットは、傾き1122によって表される最大フィル・レート付近で供給される。ビットは、バッファが満杯1124になるまで、そのレートで供給される。期間1126中には、ビットは、バッファに供給されない。1130でのビットの取り出しの後に、ビットは、もう一度実質的に最大レートでバッファに供給される。
プロセス920の解析フェーズ922を実装する際に、いくつかの実施形態は、コンテンツ・ストリームに関するパラメータまたはデータを識別し、収集し、かつ/または抽出する。少なくとも部分的にこれらのパラメータに基づいて、リーキー・バッファ・モデルを、例えば、以下で「bufferModel」と称する次の構造体によって表すことができる。
・ autc:アクセス・ユニット時間増分(逆フレームレート)、
・ bitrate:コーディングされたデータがHRDの入力に供給されるビットストリームレート指定
・ vbvsize:HRDバッファのサイズ、
・ iscbr:CBRストリームを示すフラグ、および/または
・ lowdelay:低遅延モードを示すフラグ。
lowdelayフラグは、(例えば、「1」をセットされたときに)シーケンスがBピクチャを含まないこと、フレーム再順序付け遅延がビデオ・バッファリング・ベリファイヤ(VBV)記述に存在しないこと、および/またはビット・ストリームが「ビッグ・ピクチャ」を含む場合があり、通常期待される時間でのピクチャのデコーディングが、VBVバッファをアンダーフローさせる可能性があることを示す。
いくつかの実装で、例えばAVCおよび/またはVC1と共に適用されるときに、1つのストリームが複数のリーキー・バッファ・モデルを有することができる。エンコーダは、いくつかの要求されるリーキー・バケットに含まれるビデオ・ビット・ストリームを作成することができ、あるいは、ビット・ストリームが生成された後にパラメータのセットを単純に計算することができる。解析プロセス中に、アクセス・ユニットごとに、ピクチャ・サイズ、ピクチャ・タイプ、ピクチャ位置、タイミング情報、および/または各コーデックに固有のある情報を収集することができる。解析を介して識別された情報およびリーキー・バッファ・モデルに基づいて、各アクセス・ユニットのバッファ・レベルの値を決定するか計算することができる。いくつかの実施形態で、取り出された解析された情報および/またはバッファリング・レベルを、次の構造のうちの1つまたは複数(これらに限定はされない)によって定義することができる。
・ tai:アクセス・ユニットからの最初のビットの到着時刻、
・ taf:アクセス・ユニットからの最後のビットの到着時刻、
・ trn:バッファからのアクセス・ユニットの取り出し時刻、
・ ton:アクセス・ユニットの表示時刻、
・ preBufferLevel:取り出しの前の取り出し時刻でのバッファ・レベル、
・ ausize:アクセス・ユニットのサイズ、
・ maxBufferLevel:この取り出し時刻で見られる最大バッファ・レベル、
・ minBufferLevel:この取り出す時刻で見られる最小バッファ・レベル、
・ unboundBufferLevel:バッファ・サイズに制限されないバッファ・レベル(無限バッファ・サイズを有するバッファ・レベル)、および/または
・ 他の関連情報。
例えばAVCに固有とすることができる、追加のまたは代替の情報を定義することができる。そのような追加情報は、次を含むことができるが、これらに限定はされない。
・ isbperiod:これがバッファリング期間(GOVUスタート)であるかどうかを示すフラグ、
・ initial_cpb_removal_delay:特定の取り出し時刻のデコード前遅延、
・ initial_cpb_removal_delay_offset:特定の取り出し時刻のデコード前遅延オフセット、および/または
・ calc_initial_cpb_removal_delay:特定の取り出し時刻の理想的なデコード前遅延の計算された値。
例えばMPEGに固有とすることができる、追加のまたは代替の情報を定義することができる。そのような追加情報は、次を含むことができるが、これらに限定はされない。
・ isgovu:新しいGOPを示すフラグ、
・ vbv_delay:CBRの場合に各ピクチャのバッファ充満度を示す、および/または
・ calc_vbv_delay:各ピクチャのバッファ充満度の理想的な値。
例えばVC1に固有とすることができる、追加のまたは代替の情報を定義することができる。そのような追加情報は、次を含むことができるが、これらに限定はされない。
・ isgovu:新しいエントリ・ポイントを示すフラグ、
・ hrd_full:各ピクチャのバッファ充満度を示す、および/または
・ calc_hdr_full:各ピクチャのバッファ充満度の理想的な値。
アクセス・ユニットについて、いくつかの実施形態は、例えばMPEGの場合にvbv_delay、VC1の場合にhdr_full、AVCの場合にinitial_cpb_removal_delayなど、ストリームが示さなければならないバッファ充満度の値を計算することができる。
解析プロセス922を介して、アクセス・ユニットに関する情報のベクトル(例えば、AVCの場合にAVCAUInfoのベクトル)、N個のリーキー・バッファリング・モデル(Nは、解析されたストリーム内で指定されるリーキー・バッファリング・モデルの個数である)、およびこれらのモデルごとに、バッファリング・レベルの対応するベクトル(例えば、AVCの場合にAVCAUbufferLevelのベクトル)が生成される。解析を介して識別される情報、パラメータ、および/またはメタデータは、それに加えておよび/またはその代わりに、所与のビット・ストリームの伝送レート・パラメータおよび/またはバッファ・サイズ・パラメータを変更することによって1つまたは複数の新しいバッファリング・モデルをシミュレートするのに、あるいは有効なバッファ・モデルを維持するためにセグメント再エンコードを実行するときに、使用することができる。
解析を介して識別されるパラメータ、情報、および/またはメタデータを利用して、1つまたは複数のリーキー・バッファ・モデルをシミュレートすることができ、特定のストリームに適用できる1つまたは複数の新しい有効なバッファ・モデルの作成が可能になる。シミュレーション924は、いくつかの実施形態で、ビットレート、バッファ・サイズ、および/またはビットレート・モード(例えば、VBR/CBR)を変更するのに部分的に使用される。例えば、AVCの場合のシミュレーションを、次のように記述することができる。
Figure 0005404038
各シミュレーションは、オーバーフロー閾値および/またはアンダーフロー閾値など、1つまたは複数のバッファ閾値を超えるときを識別し、検出されたオーバーフローおよびアンダーフローの回数の結果をbufferModel構造体で返すことならびに/あるいはストリームおよび/またはセグメントにまたがるバッファ・レベルのベクトルを返すことなど、の結果を返す。シミュレーションが、オーバーフローまたはアンダーフローなしで成功するときには、ストリームを、下でさらに説明するストリーム訂正フェーズ中に、上で渡される新しいbufferModelに基づいて変更することができる。いくつかの実装は、さらに、例えばVC1およびMPEG2について、新たに決定された値がベース・エンコードからの値と一致するときに再分析を停止することを可能にする、バッファ再分析の改善を試みる。さらに、いくつかの実施形態で、バッファ分析は、これらの情報、パラメータ、および/またはメタデータを分析することによって単純にされ、通常は、ストリーム全体をディスクから読み取り、データを解析する必要がない。
訂正フェーズ926は、部分的に、いくつかの実施形態で、もはや有効ではないものとして識別されたベース・エンコード内で指定されるリーキー・バッファ・モデルを訂正し、または置換するための、フィールドの書き直しからなる。ストリームは、上で説明し下でさらに説明するセグメントの再エンコードの場合に、シミュレーションおよび/またはマージング処理(merging processing)924に由来する新しいモデルに従うように変更される。訂正フェーズは、部分的に、1つまたは複数のフィールドの書き直しを実行する。例えば、MPEG2の場合に、訂正フェーズは、次のフィールドのうちの1つまたは複数の書き直しを引き起こすことができる。
・ bit_rate_valueおよびbit_rate_extension:ビットレートの新しい値、
・ vbv_buffer_size_valueおよびvbv_buffer_size_extension:バッファ・サイズの新しい値、および/または
・ vbv_delay:各ピクチャのバッファ充満度の新しい値。
同様に、VC1について、訂正フェーズは、次のフィールドのうちの1つまたは複数の追加のまたは代替の書き直しを引き起こすことができる。
・ hrd_rate[n]:この特定のリーキー・バッファ・モデルのビットレートの新しい値、
・ hrd_buffer[n]:この特定のリーキー・バッファ・モデルのバッファ・サイズの新しい値、および/または
・ hrd_full[n]:この特定のリーキー・バッファ・・モデルの各ピクチャのバッファ充満度の新しい値。
さらに、AVCに関して、訂正フェーズは、次のフィールドのうちの1つまたは複数の追加のまたは代替の書き直しを引き起こすことができる。
・ bit_rate_value_minus1[n]:この特定のリーキー・バッファ・モデルのビットレートの新しい値、
・ cpb_size_value_minus1[n]:この特定のリーキー・バッファ・モデルのバッファ・サイズの新しい値、
・ cbr_flag[n]:この特定のリーキー・バッファ・モデルのCBR/VBRフラグの新しい値、
・ initial_cpb_removal_delay[n]:この特定のリーキー・バッファ・モデルのデコーディング遅延の新しい値、および/または
・ initial_cpb_removal_delay_offset[n]:この特定のリーキー・バッファ・モデルのデコーディング遅延オフセットの新しい値。
initial_cpb_removal_delayの新しい値は、バッファリングレベルベクトルに格納された好ましい値または理想的な値calc_initial_cpb_removal_delayに対応するものとすることができる。calc_initial_cpb_removal_delayの値は、いくつかの実装によれば、次のように計算することができる。
calc_initial_cpb_removal_delay=tg,90(n)=90000*(tr,n(n)−taf(n−1)
ここで、initial_cpb_removal_delay<=Ceil(Δtg,90(n))というVBRの制約に従い、かつ/またはFloor(Δtg,90(n))<=initial_cpb_removal_delay<=Ceil(Δtg,90(n))というCBRの制約に従う。
セグメント・ベースの再エンコーディングは、少なくとも部分的に、ビデオのセクションの再エンコーディングを可能にして、例えば、ビジュアル品質標準規格を満足しないセグメントの品質を高める。高められた品質は、例えば、セグメントのビットレートを高めることによって達成することができる。セグメント・ベースの再エンコーディングは、それに加えておよび/またはその代わりに、例えば、ストリームの他のセグメントまたはセクションに余分なビットを供給するために、あるセグメント内で利用されるビット数を減らすのに使用することができる。いくつかの実施形態で、変更に起因する下流のアンダーフローおよび/またはオーバーフローを実質的に回避できる、所与のセグメントについて利用できかつ/またはユーザによって指定できる最大ビットレートを決定することが有益である。セグメント再エンコードの前に、ルールに従ったストリームをもたらすビットレート境界およびバッファ充満度境界を決定することができる。例えば、境界を、次のように決定することができる。
Figure 0005404038
minimumBitrateは、オーバーフローなしのCBRでのレートに対応し、maximumBitrateは、アンダーフローなしのレートに対応し、minimumBufferFullnessは、アンダーフローなしのビット単位のターゲット最小バッファ充満度に対応し、maximumBufferFullnessは、オーバーフローなしのビット単位のターゲット最大バッファ充満度に対応する。
いくつかの実施形態で、セグメントの再エンコードのために許容できる最大ビットレートを計算するときに、バッファ・モデル・シミュレーションが、例えば、MPEG−2および/またはVC1の場合に無限大のサイズのバッファを用い、AVCで非制約到着時刻(no constraint arrival time)リーキー・バケット・モデル(CAT−LB)制約で、実行される。これらの制約を適用することによって、バッファ・レベル・グラフのビットレートを0にされたフラット・セクションが実質的に除去され、バッファ・レベルは、バッファ・サイズまたはCAT−LB制約によって制限されない。バッファ・レベル構造体内のunboundedBufferLevelの値は、この無制限のバッファ・レベルに対応する。次に、セグメント再エンコードの終りの後の最初のピクチャから始まり、ストリームの終りまたは他の終わるポイント(例えば、いくつかの例で、このエンド・ポイントをフラット・セクション1126とすることができる)で終わる、このバッファ・モデル・シミュレーションから生じる最小「無制限」バッファ・レベルの検索を実行することができる。この無制限レベルを、下ではunboundedBufferLevelb(Min)と称する。さらに、unboundBufferLevelの最大値を、再エンコード・セグメントの後の最初のピクチャから始まり、ストリームの終りまたは他のエンド・ポイントで終わる値を考慮することによって決定することができ、この値を、下ではunboundBufferLevelb(Max)と称する。少なくとも部分的にunboundedBufferLevelb(Min)およびunboundBufferLevelb(Max)に基づいて、最小レベルおよび最大レベルの変更を、次のように決定することができる。
Figure 0005404038
ここで、unboundBufferLevel(n)は、再エンコードされる最初のピクチャのunboundBufferLevelの値であり、preBufferLevel(n)は、再エンコードされる最初のピクチャのpreBufferLevelの値である。Rが、ストリームの実際のレートを表し、Bが、バッファのサイズを表し、segLenが、再エンコードされるセグメントの秒単位の長さを表すものとすると、最大ビットレートを、いくつかの実装で次のように計算することができる。
maxBitrate=R+DeltaLevelMin/segLen
最小バッファ・レベルは、ベース・エンコードの最後のピクチャの取り出しの後のバッファ充満度(この値は>=0にクリッピングされる)からDeltaLevelMin値を引くことによって決定することができる。これは、効果的に、バッファ可用性の量のシフトをもたらし、効果的に、グラフ(例えば、グラフ1020)を、バッファのアンダーフローを回避することを試みて、ほぼ最小バッファ・レベル分だけ下にシフトする。同様に、CBRでの最小ビットレートは、minBitrate=R−DeltaLevelMax/segLenに対応するものとすることができ、いくつかの例で、VBRについて0である。CBRでの最小バッファ・レベルは、ベース・エンコードの最後のピクチャの取り出しの後のバッファ充満度(この値は>=0にクリッピングされる)への(B−unboundBufferLevelb(Max))の加算として定義することができる。これは、効果的に、バッファのオーバーフローを回避することを試みて、ある量だけグラフを上にシフトする。
いくつかの実装で、セグメントの再エンコードの後に、ベース・エンコードからのバッファ・レベルおよびアクセス・ユニット情報を再エンコードされたセグメントエンコードデータにマージするマージング924が実行される。このマージングは、少なくとも部分的に、バッファ・モデルを再エンコードされたセグメント中および/または再エンコードされたセグメント後に有効に保つことを試みる。少なくともAVCに関するマージング・プロセスの例を、次のように記述することができる。
Figure 0005404038
ここで、引数は、次のように定義することができる。
・ mergeIndex:マージング・インデックス、
・ auBaseList:アクセス・ユニット情報のベース・リスト、
・ auBaseBuffer:バッファ・レベルのベース・リスト、
・ auSegList:アクセス・ユニット情報のセグメント・リスト、
・ auSegBuffer:バッファ・レベルのセグメント・リスト、
・ model:使用中のバッファ・モデル、
・ auOutList:アクセス・ユニット情報の出力リスト、および
・ auOutBuffer:バッファ・レベルの出力リスト。
このマージング・プロセスは、オーバーフローおよび/またはアンダーフローの結果の回数を返す。このマージング・プロセスによって生成される出力値は、その後、後続のセグメント再エンコードの新しいベース・エンコードとして使用することができる。マージが、オーバーフローもアンダーフローもなしに成功する場合に、ストリーム・バッファ充満度情報を、訂正フェーズ926中にストリームを訂正するのに使用することができる。
このマージング・プロセスは、いくつかの実装で、ストリーム内に存在するリーキー・バッファ・モデルごとのセグメント再エンコードごとに実行され、AVCおよびVC1の場合に必ずしも一意ではない。ストリーム内に複数のリーキー・バッファ・モデルがある場合には、1つまたは複数のモデルを、例えばアンダーフローまたはオーバーフローの存在に起因して無効化できることが可能である。いくつかの実施形態で、無効なモデルは、無効として指定され、かつ/またはそのストリームについて有効であることがわかっているバッファ・モデルによって置換される。例えば、失敗したモデルのバッファ・ベクトルおよび/または他のパラメータもしくはメタデータ(例えば、バッファ・サイズ、バッファ・レート、バッファ充満度、および/または他のデータ)を、有効なモデルのパラメータおよび/またはメタデータによって置換することができる。それに加えておよび/またはその代わりに、上で説明したように、1つまたは複数の無効なバッファ・モデルを変更することができ、その結果、モデルを有効にすることができるようになる。モデルの変更は、モデルを所与の仕様(例えば、high definition DVD(HD−DVD)、Blu−ray disc(BD)および/または他の仕様)内で維持するが、モデルを、当初に定義されたパラメータ(例えば、ストリームの多重化を考慮に入れるためのパラメータなど、ユーザ指定パラメータ)から変更する。モデルの変更は、いくつかの例で、変更されたバッファ・モデルを満足しながら、実行される再エンコードの個数を減らすことができる。
いくつかの実施形態は、さらに、事後分析の実行およびより有効なモデルの提供を可能にするダミー・バッファ・モデルまたはプレース・ホルダ・バッファ・モデルを可能にする。モデルは、ベース・エンコードおよび/またはセグメント再エンコード中に実行された解析に基づいて、後で構築するか指定することができる。これは、プレース・ホルダ・モデルを置換できる、実質的に任意の個数のモデルを定義することを可能にする。
さらに、いくつかの実施形態は、セグメント再エンコードの前に、アンダーフローを超えるマージンおよび/またはオーバーフローを下回るマージンを効果的に利用することによって利用できる追加のバッファ可用性の量を識別する前処理を実行する。図10をもう一度参照すると、バッファが、ビットの充填および解放を通ってサイクルするときに、フィル・レベル(fill level)は、下側レベルまたは0レベル1040に接近する。フィル・レベルと最小バッファ・レベルとの間の最小距離1042を、いくつかの実装で、バッファ可用性のマージンとして識別することができる。上で紹介したように、いくつかの実施形態は、バッファ可用性の量のシフトを提供し、バッファのアンダーフローおよび/またはオーバーフローを回避しながら高められたバッファ利用度を提供することを試みて、おおむね可用性のマージンだけグラフを下に効果的にシフトする。最小マージンを利用する際に、アンダーフローが、通常は回避される。いくつかの実施形態は、さらなるシミュレーションまたはその後のシミュレーションを実行して、シフトがアンダーフローまたはオーバーフローを引き起こすかどうかを決定する。
使用可能バッファ・マージンの類似する使用を、可変ビットレート(VBR)エンコーディングと共に使用することができる。図11を参照すると、やはり、フィル・レベルと下側レベルまたは0レベルとの間の最小マージンを識別することができる。しかし、VBRの場合に、シフトの後に、フィル・レベルが最大フィル1126に達し、ビットの受け入れを停止すると、このシフトは、効果的に除去され、バッファ・モデルは、シフトがないかのように継続する。したがって、いくつかの実施形態は、ストリームに沿った複数のシフトを可能にし、最小マージンが、最大フィルレベル(例えば、フラット領域1126)の間で決定される。使用可能バッファ・シフトの量は、いくつかの実施形態で、シミュレーションプロセス924を介して決定される。いくつかの実装で、使用可能シフトについての決定は、バッファをより十分に利用するために、セグメント再エンコードを実行する前に実装される。シミュレーションは、複数のモデルが識別されるときに、バッファ・モデルのそれぞれについて実行することができる。
上で紹介したように、いくつかの実施形態は、ユーザがエンコーディングおよび/または再エンコードを制御することを可能にし、エンコーディング・プロセスに対するより高い制御およびエンコードされた最終製品のより高い満足度をユーザに与える。例えば、このシステムは、モデルに失敗する1つまたは複数のセグメントを識別し、新しいIフレームを生成すべき場所をそれらからユーザに選択するために複数の可能なPピクチャおよび/またはBピクチャを識別し、かつ/または他のそのようなフィードバックおよび情報を識別することができる。次に、ユーザは、どのフレームを変換しなければならないか、どのセグメントを再エンコードしなければならないかを選択し、あるいは他の機能を実行することができる。
図12に、ユーザがコンテンツをエンコードし、エンコードされたコンテンツを再検討し、かつ/または1つもしくは複数のセグメントの再エンコーディングを実装し、制御することを容易にし、かつ/または可能にする、いくつかの実施形態によるグラフィカル・ユーザ・インターフェース1220を示す。このユーザ・インターフェースは、コンピュータまたは他の関連するデバイスを介して生成することができ、いくつかの実施形態では、エンコーディング・システム124は、ユーザ・インターフェース1220をも生成し、表示するコンピュータを介して実装される。ユーザ・インターフェース1220は、セッティング・ウィンドウ1222、ソース・コード・コントロール・ウィンドウ1224、再生またはムービー・コントロール・ウィンドウ1226、プレビュー・ウィンドウ1230、タイムライン・ウィンドウ1232、およびユーザ・インターフェース・ツールバー1234を含む。いくつかの実装で、タイムライン・ウィンドウ1232は、評価されるコンテンツがベース・エンコーディングまたは初期エンコーディングを介してエンコードされ終わるまで、ユーザ・インターフェース1220内に示されない。タイムライン・ウィンドウは、さらに、下でさらに説明するように、強調表示され、選択され、再エンコードすべきものとして識別され、かつ/または再エンコードされた1つまたは複数のセグメント1250、1252、1254、1254を識別することができる。
図13に、ソース・コード・コントロール・ウィンドウ1224の単純化されたグラフィカル表現を示す。ソース・コード・コントロール・ウィンドウは、ユーザが、エンコードすべきコンテンツのソースを定義し、アクセスすることを可能にし、キーボード、マウス、スタイラス、リモート・コントロールもしくは他のポインティング・デバイス、および/または他のそのような方法を使用してアクセスでき、選択を行うことができる。さらに、ソース・コントロール・ウィンドウは、再生1322、停止1324、巻き戻し1326、早送り1328、ループ再生1330、可変速再生1332、前および/または後のエントリ・ポイント呼び戻し1334、および/または他のそのようなボタンなどの複数のオプション、キーおよび/またはボタン;シャトル・コントロール・バー1336;可変速コントロール・ドラッグ・バー1340;モニタ・コントロール1342;ロケーションAインジケータ1344;ロケーションBインジケータ1346;タイム・コード・ディスプレイ1350;フレーム・ドロップ1352、シンク・モード1354、および他のそのようなインジケータなどのインジケータ;および/または他のオプション、機能(features)、および/またはボタンを含む。ソース・コントロール・ウィンドウを使用することによって、ユーザは、部分的に、エンコードすべき素材(material )のスタート・ポイントおよびエンド・ポイントを見つけることができる。
シャトル・コントロール1336は、近くの位置に前後に往復する。左(例えば、後方を表す)または右(例えば、前方を表す)にシャトル・コントロールが大きくドラッグされるほど、位置がより速く変化し、したがって、解放されたときに中央などの、事前定義の位置に戻るように効果的にバイアスを与えることができる。ナッジボタン(nudge buttons:微調整ボタン)1334は、1回にコンテンツの1エントリ・ポイント毎のナビゲーションを可能にする。「ロケートA」1344は、ソース素材(source material)の1つのタイムコード位置を格納し、リコールし、「ロケートB」1348は、ソース素材の1つのタイムコード位置を格納し、リコールする。タイム・コード・ディスプレイ1348は、ソース素材の現在のタイムコード位置を示す。シンク・ステータス1354は、シンク・モードがイネーブルされ、ムービー・コントロール・ウィンドウ1226がソース・コントロール・ウィンドウ1224からの再生と同期したままになることが可能にされているかどうかを示す。フレーム・ドロップ1352は、ソース再生中にコマ落ちが発生するときを示す。モニタ・コントロール1342は、どのトランスポートがアクティブ・トランスポートであるか(ソース・コントロール・ウィンドウ1224またはムービー・コントロール・ウィンドウ1226)をトグルする。
図14に、ムービー・コントロール・ウィンドウ1226の単純化されたグラフィカル表現を示す。ムービー・コントロール・ウィンドウは、ユーザがエンコードされたコンテンツをプレビューすることを可能にし、キーボード、マウス、スタイラス、リモート・コントロールもしくは他のポインティング・デバイス、および/または他のそのような方法を使用してアクセスでき、選択を行うことができる。さらに、ムービー・コントロール・ウィンドウは、複数のボタン、インジケータ、コントロール・バー、タイム・ディスプレイ、および類似物を含み、いくつかの実装で、これらのボタン、インジケータ、および類似物は、ソース・コントロール・ウィンドウ1224のボタン、インジケータ、および類似物に類似する。
図15に、いくつかの実施形態によるタイムライン・ウィンドウ1232の単純化されたグラフィカル表現を示す。タイムライン・ウィンドウは、ツール・バー1522、ビットレート・トラック1524、エントリ・ポイント・トラック1526、ピクチャ構造トラック1530、信号対雑音比(PSNR)トラックなどの品質トラック1532、ステータス・バー1534、タイム・マーカー1536、1つまたは複数のスクロール・バー1540、および他の関連するフィールドまたは領域を含む。タイム・ライン・ツール・バー1522は、少なくとも部分的に、ユーザがコンテンツをナビゲートし、セグメントをマークすることを可能にし、ステータス・バー1534は、セッションに関する情報を表示する。通常、ビットレート・トラック1524、エントリ・ポイント・トラック1526、ピクチャ構造トラック1530、および品質トラック1532は、各トラック内のエントリが、他のトラックのうちの1つまたは複数内のエントリに対応するように、協力し、かつ/または調整される。例えば、いくつかの実施形態は、エントリ・ポイント・トラック1526、ピクチャ構造トラック1530、および品質トラック1532がビットレート・トラック1524と対応するように、トラックを構成する。
タイムライン・ウィンドウ1232は、コンテンツ・ビットレート1524、エントリ・ポイント1526、ピクチャ構造1530、および品質の尺度1532を表示するトラックを含む。個々のトラックは、それ自体の高さにセットすることができ、隠すことができる。いくつかの実施形態で、タイムラインおよび/またはトラック・データをズームして、より高い分解度を提供することができる。ビットレート・トラック1524は、ビデオ・エンコードされたコンテンツのビットレートのプロットを表示する。いくつかの例で、コンテンツがCBRを用いてエンコードされているときには、このグラフは、一般に、水平線または直線であるが、VBRを用いてエンコードされているときには、このグラフは、ビットレートが例えば各GOPと共に変化するときに、経時的に変化する。プロットの最小値および最大値は、エンコーダ、ターゲット・アプリケーション(例えば、HD−DVD、Blu−ray、または類似物)、および/または他のそのような要因に依存して異なる。
エントリ・ポイント・トラック1526は、コンテンツ内のエントリ・ポイントを垂直線として表示する。複数のタイプのエントリ・ポイントを定義することができ、いくつかの実施形態で、少なくとも2タイプのエントリ・ポイントすなわち、「ノーマル」(N)1550および「カスタム」(C)1552を表示することができ、ここで、カスタム・ポイントは、チャプタ・ポイントおよび/または再エンコードを開始するか終了しなければならない他のポイントなど、ユーザ定義のポイントとすることができる。多くの例で、カスタム・エントリ・ポイント1552は、エンコードの前にリスト内で指定される。いくつかの実施形態で、タイムライン1232がズーム・インされるときに、カスタム・エントリ・ポイント1552の数も表示される。エントリ・ポイントは、再生ヘッドを洗浄するとき、セグメント再エンコードのイン・ポイントおよびアウト・ポイント、チャプタ・ポイントの位置をセットするとき(例えば、HD−DVDコンテンツ、Blu−rayコンテンツ、および/または他の関連するコンテンツをオーサリングするとき)に有効な位置を定義する。さらに、エントリ・ポイントは、いくつかの例で、例えばMPEGについてIフレームがある場所をコンテンツ・ストリームに沿って示す、GOPヘッダポイント、チャプタ・ポイントを定義できるポイント、および/または例えば再エンコードのスタート・ポイントを定義できるものなどの他のポイントを示す。ノーマル識別子1550は、いくつかの例で、シーン変化が発生する場所を識別することができる。いくつかの実施形態で、再エンコーディングは、フレーム構造を再構成し、新しいIフレームの生成および/またはBフレームもしくはPフレームのIフレームへの変換を可能にする。エントリ・ポイント・トラック1526は、いくつかの実装で、さらに、これらの新しいおよび/または変換されたIフレームを識別することができる。
ピクチャ構造トラック1530は、いくつかの実装で、例えば変化する線高さによって区別される垂直線を用いて、各GOP内の個々のピクチャ・タイプを表示することができる(例えば、Iフレームは高い線、Pフレームは中間の線、Bフレームは短い線)。
タイムライン1232は、さらに、いくつかの実装でピーク信号対雑音比データを示すPSNRトラックである、品質測定値トラック1532を示すことができる。いくつかの実施形態で、PSNRトラックは、輝度(Y)に基づくPSNR−Yトラックである。PSNRは、エンコードの品質を決定するのに使用することができ、いくつかの実施形態で、エンコードされたイメージにまたがる輝度強度をソース・コンテンツ内の輝度強度と比較することによって、または他の信号対雑音比計算によって決定することができる。通常、PSNRトラック1532は、エンコードされたコンテンツの各GOPおよび/またはフレームのPSNRを示す。PSNR値は、要求されるエンコーディング結果および/またはピクチャ品質を満足できない1つまたは複数のGOPおよび/またはフレームならびに再エンコードすべきセグメントを識別する際にユーザを助けることができる。
図16に、タイム・ライン・ツール・バー1522の拡大されたビューの単純化されたグラフィカル表現を示す。このツール・バーは、複数の異なるツールまたは特徴を含み、このツールまたは特徴には、複数のオプション、ボタン、トグル・スイッチ、テキスト・フィールドおよび/または数値フィールド、インジケータ、パラメータ情報、ならびに/あるいは実質的にすべての他の関連するツールを含めることができる。いくつかの実施形態で、タイム・ライン・ツール・バー1522は、ズーム・イン・ツール1622およびズーム・アウト・ツール1624、「イン・ポイント」セッティング・ツール1626および「アウト・ポイント」セッティング・ツール1628、セグメント・マーキング・オプション1630、セグメント・クリア・オプション1632、前セグメント・オプション1634、次セグメント・オプション1636、バッチ・エンコードにセッションを追加オプション1638、タイム・ライン・ディスプレイ・オプション・ダイアログボックスを開くツール1640、ならびに/あるいは他の関連するオプションおよびツールを含む。タイム・ライン・ツールバー1522は、再生ヘッド位置フィールド1644、再生ヘッド・ビットレート・フィールド1646、再生ヘッドPSNRフィールド1648、イン・ポイント位置フィールド1650、アウト・ポイント位置フィールド1652、セグメント持続時間フィールド1654、セグメント・ビットレート・フィールド1656、セグメントPSNRフィールド1660、および/または他の関連するフィールドをも含む。
図17に、ステータス・バー1534の拡大されたビューの単純化されたグラフィカル表現を示す。ステータス・バーは、追加情報および統計をユーザに与える複数のフィールドを含む。いくつかの実施形態で、ステータス・バー1534は、ビット・バジェット・フィールド1722、ビット・バジェット・メータおよびフィールド1724、総持続時間フィールド1726、平均ビットレート・フィールド1730、平均PSNRフィールド1732、ビデオ標準規格フィールド1734、最終保存フィールド1736、および/または他のそのようなフィールドを含む。
ビット・バジェット・フィールド1722は、例えばコンテンツ内のビデオ素材の、ターゲット容量を提供し、エンコードされたコンテンツおよび再エンコードすべき他のコンテンツまたは素材を含むことができる。ユーザは、値をフィールド1722に直接に入力することができる。それに加えてまたはその代わりに、このフィールドに、いくつかの実施形態でユーザ・インターフェース・ツール・バー1234を介してアクセスできるデフォルト・ヘッドルーム・オプションで指定された定義されたヘッドルームとエンコードされたコンテンツのサイズとの合計と等しいデフォルト値に基づいて自動的に書き込むことができる。例えば、エンコードされたコンテンツが130MBであり、デフォルト・ヘッドルーム・オプションに20%がセットされているときに、デフォルト・ビット・バジェットは、近似的に157MB(すなわち、130*1.2)にセットされる。いくつかの実施形態で、ビット・バジェット・フィールド1722に直接に入力できる最大値は、ターゲット・アプリケーションによって決定される(例えば、HD DVD−Videoの30000MB、Blue−rayの50000MB、およびターゲット・アプリケーションに基づく他のそのような最大値)。
ビット・バジェット・メータ・フィールド1724は、セッションのまたはプロジェクトの残りスペースおよび使用済みスペースを表示する。いくつかの実装は、上で説明したものまたは他のそのような選択デバイスなどの選択デバイスを用いて選択しまたはクリックして、残りスペースと使用済みスペースとの間でトグルすることができるプルダウンまたはトグル・スイッチ1744を含む。セッションの容量は、ビット・バジェット・フィールド1722に表示される。使用済みスペースは、いくつかの実施形態で、エンコードされた素材のサイズに保留中のセグメント再エンコードを加算することによって計算される。いくつかの実施形態で、選択されたセグメントのビットレートが変更されるときに、ビット・バジェット・フィールド1722を調整して、再エンコードが実行された場合にどれほどの余分のデータが使用されかつ/または必要になるかをユーザに示すことができる。さらに、いくつかの実施形態は、再エンコードのビット・バジェットについて維持されなければならないヘッドルームの量をユーザが指定することを可能にするためにアクティブ化することのできるオプションメニューを提供する。いくつかの実施形態で、ビット・バジェットは、ベース・バジェットを超過するパーセンテージと定義される。
総持続時間フィールド1726は、時間単位、分単位、秒単位、およびフレーム単位のコンテンツの全持続時間を表示する。平均ビットレート・フィールド1730は、コンテンツ・ストリームの平均ビットレートを表示し、いくつかの実施形態で、1つまたは複数のセグメントが再エンコードを保留されている(例えば、再エンコーディングについて選択されているが、まだ再エンコードされていない)ときに、平均ビットレートの決定は、保留されているセグメントの初期エンコードからのビットレート値に基づく(例えば、選択された保留中の再エンコードされるビットレートではなく)。
平均PSNRフィールド1732は、コンテンツ全体の平均PSNR値を表示する。いくつかの実施形態で、PSNRは、輝度PSNRであり、平均PSNRは、コンテンツ・ストリーム全体の平均輝度PSNR値を表示するが、他の信号対雑音比値を使用し、かつ/またはコンテンツの諸部分を定義することができる(例えば、1セグメントまたは他のそのような部分の平均PSNR)。平均ビットレート・フィールド1730および平均PSNRフィールド1732で識別される値は、選択されたまたは強調表示されたセグメントの現在の平均値に基づくものとすることができ、これは、通常、選択されたセグメントのビットレートが変更された時をリストするセグメント・タブ・ウィンドウ内で指定される値とは異なる。ビデオ標準規格フィールド1734は、コンテンツ・ストリームの垂直分解度、スキャン・モード、およびフレームレートを表示し、最終保存フィールド1736は、セッションが最後に保存されたときの日時を表示する。
図12のユーザ・インターフェース1220のプレビュー・ウィンドウ1230は、コンテンツ・イメージを表示し、ソース・コンテンツまたはエンコードされたコンテンツとすることができる。再エンコードが実行されたならば、ユーザは、再エンコードされたセグメントの前のヘッド・エンド・ポイントを選択し(例えば、1つのポイントまたは類似物を使用して)、再生をアクティブ化することができ、その結果、再エンコードされたセグメントが、プレビュー・ウィンドウ1230内で再生されるようになる。いくつかの実施形態で、上で説明し、下でさらに説明するように、再エンコードされたセグメントのデータは、ベース・エンコードされたファイルとは別々のファイルに格納され、再エンコードされたセグメントの再生の際には、その別々のファイルが、再生のためにアクセスされる。さらに、ユーザは、フル・スクリーンまたは実質的に任意の所望のサイズになるようにプレビュー・ウィンドウをアクティブ化することができる。いくつかの実装で、プレビュー・ウィンドウを別々のディスプレイまたはモニタに表示することができ、ユーザがユーザ・インターフェース1220の他のウィンドウを利用することを可能にしながら、より大きいまたはフル・スクリーンのビューが可能になる。
図18〜21に、セッティング・ウィンドウ1222内の様々なオプションを示す。より具体的には、セッティング・ウィンドウは、セッティング・ウィンドウを介して使用可能な様々なオプションにユーザがアクセスすることを可能にする1つまたは複数のタブあるいは他の選択ボタン1822を含む。いくつかの実施形態で、タブ1822は、入力タブ1824、ビデオ・タブ1826、セグメント・タブ1828、expressまたはexpressQCタブ1830、および/または他のそのようなタブを含むことができる。
入力タブは、エンコーディングの前に選択されると、ユーザがセッティングおよびパラメータにアクセスし、調整し、コンテンツのベース・エンコードの後のパラメータセッティングの一部を定義する統計を見ることを可能にする入力セッティング・ウィンドウにアクセスする。ビデオ・ソースは、単一のビデオ・ファイル、イメージ・シーケンス・フォルダ、および/または他の関連するソースからなるものとすることができる。ソース素材に関する情報は、セッティング要約タブに表示される。エンコードの前に、入力タブ・セッティング・ウィンドウは、入力ファイル・セッティング・ダイアログ・ボックスを開くセッティング編集ボタンを有し、このダイアログ・ボックスで、ユーザは、ビデオ・ソース素材のセッティングを構成することができる。いくつかの実施形態で、入力セッティング・ウィンドウは、ビデオ・ソース・タイプのセッティング(例えば、ファイルのうちの1つ、複数のビデオ・フレーム・ファイル(イメージ・シーケンス)、および・/または他のソース・タイプをソース・タイプにセットすること)、媒体の追加(パラメータ・フィールドは、媒体ファイルから読み取られた値を用いて更新でき、媒体から決定されない任意のパラメータの値を指定することができ、ピクセル・フォーマットは、RGBまたはYUVビデオサンプルのデータ構造を指定する)、ソース・スタート・タイム・コードの指定、追加の媒体ファイルを追加するための前のステップの繰り返し、1つまたは複数の媒体ファイルの取り出し、異なるソースのブラウズ、および/または他のセッティングまたはパラメータを可能にする。
図18に、ベース・エンコードの後の、入力タブ・セッティング・ウィンドウ1820が表示された、セッティング・ウィンドウ1222を示す。入力タブ・ウィンドウは、ベース・エンコード中に実際に使用されたパラメータの要約を表示する。例えば、入力タブ・ウィンドウは、ソース・ファイル1840、ソース・ファイルのパラメータ、および/または分解度、スキャン・モード、タイム・コーダ、ピクセル・フォーマット、および実質的にすべての他の関連するパラメータなど、エンコーディング中に使用されたパラメータを示すことができる。
ビデオ・タブ1826は、ユーザがビデオ・エンコーディング・パラメータのセッティングにアクセスすることを可能にするビデオ・タブ・セッティング・ウィンドウ1920をアクティブ化する。エンコーディングの前に、ビデオ・タブ・セッティング・ウィンドウは、ビデオ・プリセットおよびデフォルト・セッティングをリコールするセッティング・ポップアップ・メニューを含むことができる。セッティング・ポップアップ・メニューは、ビデオ・エンコーディング・パラメータを構成し、保存することができるビデオ・セッティング・ダイアログ・ボックスを開く編集コマンドをも含むことができる。
図19に、ベース・エンコードの後の、ビデオ・タブ・セッティング・ウィンドウ1920が表示された、セッティング・ウィンドウ1222を示す。エンコードの後に、ビデオ・タブ・ウィンドウは、コーデック、エンコーダ、プロファイル、レベル、分解度、ピクチャ構造、フレームレート、ディスプレイ・アスペクト比、ターゲット・アプリケーション、ビットレート・パラメータ、制御モード、パスカウント、ターゲット・ビットレート、最大ビットレート、ピクチャ構造、シーン検出、IDRインターバル、最小IDRインターバル、Bフレーム、ダイナミックBフレーム配置、ピラミッドBフレーム構造使用、動き検索、基準フレーム数、サブピクセル精度、イントラ検索形状、インター検索形状、レート歪み最適化、アダマール変換、複数基準フレーム、サブ・ブロック、イントラ・フレーム、エントロップ・エンコーディング・モード、イン・ループ・デブロッキング・フィルタ・フラグ、Cb量子化オフセット、Cr量子化オフセット、アルファ・フィルタ・オフセット、ベータ・フィルタ・オフセット、他のエンコーディング方式(例えば、MPEG2、AVC、VC1、および/または他のそのような方式)に関する他のパラメータ、および実質的にすべての他の関連するパラメータなど、エンコーディング中に利用されたパラメータを示す。
図20に、セグメント・タブ・セッティング・ウィンドウ2020が表示された、セッティング・ウィンドウ1222を示す。セグメント・タブ・セッティング・ウィンドウは、セッションを選択され、強調表示され、および/または再エンコードされたセグメントに関する情報を表示し、選択されたセグメントに関する1つまたは複数の再エンコードのビットレートをセッティングするコントロールを含むことができる。いくつかの実施形態で、選択されたセグメントは、スタート・ポイント2022およびエンド・ポイント2024(通常は、コンテンツのタイムラインに対する相対的な時刻としてリストされる)によって識別される。さらに、セグメント・タブ・セッティング・ウィンドウは、各セグメントの新しい再エンコードビットレート2026およびセグメントのステータス2030を指定することができる(例えば、「marked(マーク済み)」は、強調表示されているが、ビットレートがまだセットされていないか変更されていないセグメントを識別し、「pending(保留中)」は、ビットレートを変更されたがまだ再エンコードされていない選択されたセグメントであり、「done(終了)」は、変更されたビットレートに従って再エンコードされたセグメントおよび/または他のそのような識別子である)。セグメントは、列(column)ヘッド2032をクリックすることによってソートすることができ、列は、列区切り(column dividers)をドラッグすることによってサイズを変更することができる。
いくつかの実施形態で、セグメント・タブ・セッティング・ウィンドウ2020は、ユーザがビットレート値フィールド2042にビットレート値を入力することを可能にするセグメント・ビットレート領域2040を含む。ビットレート値は、さらに、「絶対」セグメント、相対セグメント、および/または他のそのような定義として定義されたモード編集2044によって修飾することができる。いくつかの実装で、絶対セグメントを、ビットレート値フィールド2042で指定された絶対ビットレートで再エンコードすることができる。複数のセグメントを絶対ビットレートで編集するときに、新しいビットレートは、通常、セグメントのそれぞれについて実質的に同一である。相対セグメントは、相対ビットレートで再エンコードすることができ、ここで、既存のビットレートは、ビットレート値フィールド2042内で指定された値だけ増やされる。例えば、4.0Mbps、4.5Mbps、および5.1Mbpsのビットレートを有する3つのセグメントが、+1.5Mbpsの相対ビットレートを用いて再エンコードされる場合に、新しいビットレートは、それぞれ5.5Mbps、6.0Mbps、および6.6Mbpsになる。それに加えてまたはその代わりに、ユーザは、ビットレート・ドラッグ・バー2046を使用することができ、このバーがドラッグされると、ビットレート値フィールド2042内のビットレート値が変化する。いくつかの実装で、デコーダ・モデルに従って使用可能な最大値および最小値(通常は以前にセットされた)、ベース・エンコードの最大値および最小値、または他の関連する最大値および最小値を表す、最大ビットレート値および最小ビットレート値を表示することができる。再エンコードに関する調整されたビットレートが選択された(例えば、ビットレート・フィールド2042に直接に入力することによって、ビットレート・ドラッグ・バー2046を調整することによって、タイムライン1232上の平均ビットレート・インジケータを移動することによって、および/または他のそのような入力によって)ならば、再エンコードのビットレートは、ビットレート列2026に反映され、選択されたセグメントのステータスが、例えば保留中に変化する。いくつかの実施形態で、保留中のセグメントは、強調表示、異なる色、または類似物によってタイムライン・ウィンドウ1232内で識別されまたは区別され、いくつかの例で、タイムライン・ウィンドウに保留中ビットレートを示す。
図21に、expressQCタブ・セッティング・ウィンドウ2120が表示された、セッティング・ウィンドウ1222を示す。expressQCタブセッティングウ・ィンドウは、少なくともエンコードの後に使用可能であり、例えばPSNR統計などの品質測定値に基づいて、再エンコードについてセグメントを選択するのに使用できるコントロールを提供する。いくつかの実施形態で、expressQCタブ・セッティング・ウィンドウ2120は、検出モード・パラメータ2122およびセグメント長パラメータ2124を含む。検出モード・パラメータは、PSNR閾値オプション2128、閾値レベル・フィールド2130、および/または閾値レベル・ドラッグ・バー2132、ならびに/あるいはセグメント数オプション2134、セグメント数閾値フィールド2136、および/またはセグメント数ドラッグ・バー2138を含むことができる。
セグメント長パラメータは、最小GOP長フィールド2140およびGOP長ドラッグバー2142を含むことができる。セグメント・マーク・オプションまたはボタン2144が、さらに、コンテンツの検索または評価を開始し、コンテンツ全体あるいは検出モード・パラメータ2122および/またはセグメント長パラメータ2124によって指定される閾値および/またはレベルに関して定義された関係を有するコンテンツの選択された部分を通じて1つまたは複数のセグメントをマークするために含まれる。例えば、ある閾値未満のPSNRレベルを有するセグメントを識別するときに、これらのセグメントは、タイムライン・ウィンドウ1232上ですばやく突き止められ、強調表示される(例えば、選択された3つのセグメント1250、1252、および1254を示す図12を参照されたい)。ユーザ・インターフェース1220は、さらに、ユーザが、expressQCパラメータおよび/または閾値を使用して自動化されたプロセスを介してマークされた1つまたは複数のセグメントを選択解除することを可能にする。
それに加えてまたはその代わりに、タイムライン1232を使用して、セグメントを選択し、かつ/または選択されたセグメントを定義することができる。いくつかの実施形態で、ユーザは、インジケータを位置決めするかドラッグして、エンコードされたコンテンツの1つまたは複数の区域を識別する。図12、15〜16、および20〜21を参照すると、ユーザは、イン・ポイント・ツール1626およびアウト・ポイント・ツール1628を使用して、対象とするセグメント1254の境界を定めるイン・マーカーまたはイン識別子1260およびアウト識別子1262を位置決めすることによって、不満足な部分を含む1つまたは複数のセグメントを選択することができる。ユーザは、所望の位置に識別子をドラッグすることによって、識別子を配置することができる。いくつかの実施形態で、識別子の正確な配置は、ユーザによって選択された位置決めに対して相対的に、システムによって調整することができる。この調整は、イン識別子とアウト識別子との間で境界を示された選択された領域内のセグメントおよび/または下流のコンテンツの評価に基づくものとすることができる。再エンコードのスタート・ポイントおよびエンド・ポイントを定義するイン・ポイントおよびアウト・ポイントに対する調整を、下でさらに説明するが、この調整は、適当な再エンコードのスタート・ポイントおよびエンド・ポイントの決定、フレームの間の依存性、および他のそのような要因を含む多数の要因に基づいて調整することができる。
いくつかの実装で、イン識別子1260およびアウト識別子1262によって境界を定められた現在選択されているセグメント(1つまたは複数)は、第1の強調表示(例えば、異なる色、クロスハッチ、点線、明るさ、および/または他のそのような区別する特性)を用いて強調表示される。他のセグメントは、代替強調表示を用いて識別することができ、例えば、既に再エンコードされたセグメント、例えば第4のセグメント1256を、第2の強調表示(例えば、第2の色)を用いて識別することができ、マークされたセグメントは、第3の強調表示(例えば、第3の色)を有することができ、かつ/または、保留中のセグメントは、第4の強調表示(例えば、第4の色)を有することができる。
上で説明したように、GOP1560毎の平均ビットレート値を示すビットレート・グラフ1524。タイム・ライン・ツール・バー1522は、再生ヘッドの位置(例えば、識別され、強調表示され、および/または選択されたGOPに関する)での再生位置平均ビットレート1646の値をも示す。再生ヘッドが、例えばマウスなどのポインタ・デバイスを使用して再生ヘッドインジケータをドラッグすることによって、移動されるときに、再生位置平均ビットレート・フィールド1646内のビットレートの値が、変化する。
いくつかの実施形態で、タイムラインは、さらに、選択されおよび/または強調表示されたセグメントに関するセグメント・ビットレート・バー1570を含む。セグメント・ビットレート・バーまたはインジケーション(表示;indication)は、当初に、選択されたセグメントの平均ビットレートを識別する。ユーザは、セグメント・ビットレート・バー1570を利用して、このバーを(例えばポインタ・デバイスを使用して)所望のビットレートにドラッグすることによって、選択されたセグメントについて所望の平均ビットレートを変更することができる。いくつかの実施形態は、さらに、セグメント・ビットレート・バー1570の位置に関連し、このバーが移動されるときに変化する選択されたセグメント・ビットレート1572を表示する。それに加えてまたはその代わりに、上で説明したように、ユーザは、セグメント・タブ・セッティング・ウィンドウ2020のセグメント・ビットレート領域2040を利用して、ビットレート・フィールド2042またはビットレート・ドラッグ・バー2046にビットレート値を入力することができる。
ユーザ・インターフェース1232は、さらに、ユーザが1つまたは複数の保留中のおよび/またはマークされたセグメントの再エンコードをアクティブ化することを可能にする。いくつかの実施形態で、複数のセグメントを一時に選択することができる。セグメント再エンコードのアクティブ化の際に、進行状況ウィンドウを表示し、再エンコードの進行状況についてユーザに通知することができる。ユーザが、バッファのアンダーフローまたはオーバーフローを引き起こす限度を超えてビットレートを変更することを試みる場合には、エラーまたは警告インジケータを表示することができる。いくつかの場合に、この警告インジケータは、セグメント、変更されたビットレート、下流コンテンツ、および/またはバッファ・モデルの事前分析に基づいて、再エンコードが試みられる前に生成される。エラー・メッセージは、いくつかの場合に、再エンコードが試みられる際に生成し、その再エンコードがオーバーフローまたはアンダーフローをもたらし得ることを示すことができる。しかし、上で紹介したように、いくつかの実施形態は、さらに、選択されたセグメントから下流のおよび/または選択されたセグメントに隣接するセグメント内のビットレートおよび/またはバッファ・レベルを調整することによって潜在的なエラーを減らすためのビットレート変更に関する調整および/または補償を可能にする。
いくつかの実装で、ユーザ・インターフェース1220は、ユーザが、選択されたセグメントのビットレートをモデルについてセットされた最大ビットレートと最小ビットレートとの間で調整することを可能にする。しかし、いくつかの実施形態は、選択されたセグメントの再エンコードに使用可能とすることができる選択されたセグメントから下流のコンテンツおよび/またはメタデータを分析することによって、最大および/または最小の使用可能なビットレートを計算する。これは、ユーザが実際に達成できるものと、隣接するおよび/または他のセグメントのさらなる再エンコードが追加ビットを解放するために必要であるかどうか、とに関するさらなるフィードバックをユーザに提供する。
所定の時刻にマークできる、かつ/または選択できる、セグメントの個数に関して、事実上制限はない。したがって、ユーザは、複数のセグメントをマークし、その複数のセグメントに対して反復調整を行って、より高い優先順位を有するセグメントに対して要求されるビットレートを達成することができる。例えば、ユーザは、第1のセグメント1250ならびに第1のセグメントの下流の第2のセグメント1252および第3のセグメント1254を選択し、第2および第3のセグメントに対して調整を行って、第1のセグメントのためにビットを解放することができ、この解放は、第2および/または第3のセグメントのビットレートが調整されるときに第1セグメントの最大使用可能ビットレートの変化の表示によって反映することができる。
ユーザが、所望する再エンコーディングを完了したならば、ユーザは、ユーザ・インターフェース1220を介してファイナライゼーションをアクティブ化することができる。ファイナライゼーションは、セグメント再エンコードをベース・エンコードとマージし、上で十分に説明し、下でさらに説明するように、バッファ・レベルについてストリームのデータを更新する。いくつかの実施形態で、ユーザ・インターフェース1220には、セッティング・ウィンドウ1222内に追加の編集済みセグメント・タブを含めることができ、このタブは、ターゲット・ビットレート、最小ビットレートもしくはフロア・ビットレート、クロミナンスの量子化オフセット、イン・ループ・デブロッキング・フィルタもしくは他のフィルタリング、バッファ・サイズ、バッファ充満度レベル、および/または他のそのような関連パラメータなどのパラメータをユーザが定義し、かつ/または変更することを可能にする。これらのパラメータは、適用される指定されたコーデックに依存して変更することができる。それに加えておよび/またはその代わりに、いくつかの実施形態は、ユーザが、例えばタイムライン1232を介して、特定のフレームを選択し、BフレームまたはPフレームをIフレームに昇格させるなど、ピクチャ・タイプにおける変更を定義する(例えば、ドロップ・ダウン・ウィンドウを使用すること、ピクチャ・フレーム・タイプ・インジケータにドラッグすること、および/または他のそのようなアクティブ化によって)を可能にする。フレーム・タイプのこの昇格は、例えば、シーン変化をマークする(例えば、シーン検出システムがシーン変化を正確に検出するのに失敗するとき)のに使用することができる。
ズーム・イン・オプション1622およびズーム・アウト・オプション1624は、タイムライントラック上でのズーミング機能を提供する。図15に示されたタイムライン1232は、符号1240によってラベルを付けられたタイムライン1232の部分に沿ってより高い精度を示す、タイムラインの部分1240のズーム・インされたビューである。このズーミングは、より正確なデータへのよりよいアクセスをさらに提供しながら、ユーザがコンテンツのより大きい部分またはすべてに対して相対的にタイムラインを見ることを可能にし、さらに、フレームおよび/またはセグメントの識別および/または選択に対するより正確な制御ならびにエンコードされたストリームおよびPSNRトラック1532のPSNRデータのより正確な評価をユーザに与える。
図12および15を参照すると、部分1240のGOPが、図15でズーム・インされ、展開されている(例えば、このビューでは約11個のGOP全体が示されている)。ビットレート・トラック1524は、各GOPにまたがる近似平均ビットレート1562をグラフィカルに示す。さらに、ユーザは、エントリ・ポイント・トラック1526に沿って示されたノーマル・エントリ・ポイント1550およびカスタム・エントリ・ポイント1552ならびにピクチャ構造トラック1530に沿って示されたピクチャ・タイプをより正確に識別することができる。上で説明したように、ユーザは、セグメントを選択し、セグメント・ビットレート・バー1570を使用して、再エンコードに所望されるビットレートをセットすることができる。
エンコーディングおよび/またはセグメント再エンコーディングを実装する際に、いくつかの実施形態は、減らされた処理時間をもたらす加速されたエンコーディング・レートを可能にするエンコーディング・プロセスおよび/またはエンコーディング・システムを使用する。高品位コンテンツおよび/または大量のデータを含む他のコンテンツなど、一部のコンテンツに関して供給されるデータの量に関して、データレートは、極端になる可能性があり、通常は、結果の出力品質ニーズが、非常に高くなる可能性がある。したがって、一部のコンテンツのエンコーディングに関する処理要件が、非常に高くなる可能性がある。いくつかの本実施形態は、部分的にはエンコードされていないコンテンツを時間的に分解しまたはスライスし、並列エンコーディングをもたらし、効果的に処理をスケールアップして所望するエンコーディング・レートを達成することによって、ほぼリアルタイム・レートでのエンコーディングなど、相対的に高いデータレートで高品質エンコードされたコンテンツを提供する。並列エンコーディングは、不当な追加の処理時間なしで、コンテンツがエンコードされる速度を高め、かつ/または高められたもしくはより正確なエンコーディングを可能にする。
図22に、いくつかの実施形態によるエンコーディング・システム2220の単純化されたブロック図を示す。このエンコーディング・システムは、ダイサ(dicer)またはディバイダ2222、複数のダイサ・バッファ2224〜2226、複数のエンコーディング・プロセッサ・ユニット2230〜2232、スプライサまたはコンカテネータ(concatenator)2236、およびホスト・コントローラ2238を含む。動作中に、エンコードされていないコンテンツ2240、例えば高品位デジタル・コンテンツが、ダイサ2222に供給される。ダイサは、コンテンツをどのように分割するかを決定し、コンテンツを分割し、分割されたセグメント2242をダイサ・バッファ2224〜2226のうちの1つに転送する。ダイサは、ハードウェア、ソフトウェア、ファームウェア、および/または組合せとして実装することができ、いくつかの例で、ホスト・コンピュータなどのコンピュータから操作することができる。
分割されたセグメントは、バッファを介してエンコーディング・プロセッサ・ユニット2230〜2232に配送されるフレームのシーケンスからなり、エンコーディング・プロセッサ・ユニットは、コンテンツをエンコードする。セグメントの分割されたグループを、firewire接続、ハードウェア固有接続、イーサネット(登録商標)、1つまたは複数のバス(例えば、peripheral component interconnectすなわちPCI)、および/または他の接続を介してバッファおよび/またはエンコーディング・プロセッサ・ユニットに転送することができる。エンコーディング処理ユニット2230〜2232は、ハードウェア、ソフトウェア、ファームウェア、および/またはその組合せを介して実装することができ、単一のプロセッサ、単一のコンピュータ、複数のプロセッサおよび/またはコンピュータ、個々のデジタル信号プロセッサ(DSP)、DSPのアレイ、ならびに/あるいは他のデバイスまたはデバイスの組合せで実装することができる。いくつかの実施形態で、エンコーディング・プロセッサ・ユニットは、処理オーバーヘッドを減らし、処理速度を改善し、複雑度を減らす、ストリップ・ダウンされかつ/または単純化されたオペレーティング・システムを有する1つまたは複数のプロセッサおよび/またはコンピュータから操作される。
その後、エンコードされた分割されたセグメント2244は、例えばイーサネット(登録商標)、PCIバス、または他の関連する通信リンク(1つまたは複数)を介して、スプライサ2236に供給される。スプライサは、コンテンツのエンコードされた分割されたセグメントを、一緒に、エンコードされたコンテンツ・ストリーム2246に戻して組み合わせる。コンテンツ2240が分割されるので、各エンコーダは、エンコードされていないコンテンツ2240が受け取られているレートより低いレートで動作することができる。その結果、エンコーダ2230〜2232は、エンコーディング・レートを加速しながら下げられたレートおよび/または質を高められたエンコーディングで正確なエンコーディングを提供することができ、いくつかの実装で、リアルタイム・レートに接近し、かつ/または達成する。いくつかの実施形態で、スプライサ2236は、ホスト・コンピュータ内で実装されるが、代替実施形態では、スプライサを、独立のハードウェア、1つまたは複数の別々のコンピュータ、プロセッサ、および/またはその組合せを介して実装することができる。エンコードされたセグメントは、例えば圧縮ストリーム連結技法を使用して、一緒に戻して縫い合わされ、連結されエンコードされたストリーム2246が、相対的に最小限の、好ましくは0の品質ロスを伴って、要求されるバッファ・モデルおよび/またはエンコーディング標準規格(例えば、AVC、VC1、および他のそのような標準規格)に準拠するようになっている。
ストリームを分割しまたは時間的に分離する際に、ダイサは、各セグメントがそのセグメントの外部の他のピクチャを参照せず、それらのピクチャによって参照されない、完全すなわち閉じている、エンコードされるべきセグメントを生成する。上で示したように、ダイサ分割ポイントまたはダイサ分離ポイントは、使用可能なバッファ・レベル、完全なピクチャ境界(例えば、フィルム・フレームからビデオ・フレームへの変換を考慮に入れる)、エントリ・ポイント・アラインメント、および/または他の関連する要因によって決定することができる。「イン」バッファ・レベルおよび「アウト」バッファ・レベルの予測アルゴリズムをさらに利用して、バッファ・モデルを満足することを試みて、セグメントの潜在的なターゲット・スライシング・ポイントを識別することができる。スプライスされたエンコードされたストリームは、通常、バッファ・モデルが達成されるかどうかを決定するためにさらに評価され、所望のモデルを満足するために、上で説明したように再エンコーディングが利用される。
いくつかの実装で、ベースのまたは初期のエンコードされたデータ2246は、第1のファイルに格納される。1つまたは複数の追加ファイルを、再エンコードされたセグメントを格納するために維持することができる。この1つまたは複数のファイルあるいは追加ファイルを利用して、ビット・カウント調整、セグメント品質スムージング、チャプタ・ポイント挿入、および/または他のエンコーディング調整を記録することができる。初期のエンコードされたデータのうちで、再エンコードされ、チャプ・タポイントが挿入され、他の操作が生成された部分を識別するマッピングまたはリンクが、記録され、維持される。さらに、エンコードされたコンテンツが従わないおよび/または満足できないバッファ・モデルを、追加して記録することができる。セグメント・ベースの再エンコードおよび他の調整の完了の際に、最終的なエンコードされたコンテンツが、例えば上で図5のプロセス520を参照して説明したように書き込まれ、ここで、満足されないモデルが指定され(例えば、ヘッダ内で指定され)、再エンコードされたセグメントが、1つまたは複数の追加ファイルから取り出されて、再エンコードされるべきものとして識別された初期エンコードされたセグメントを置換する。
エンコーダ・システム2220は、事前定義のレートで、例えばリアルタイムでのエンコードを試みる。というのは、圧縮されていないコンテンツ・データ(例えば、高品位ビデオ)のプロダクション・ワークフローが、テープ・マシンなどのソースから受け取られる可能性があり、リアルタイムで全体としてデータ・リンクを介してエンコーダ・システムに転送されつつあり、ここで、このシステムが、データフローを停止することができず、したがってコンテンツをそのフィード・レートで受け入れる場合があるからである。いくつかの代替実施形態は、追加バッファを介するなど、データをステージングし、より低いレートで動作する。しかし、このステージングは、通常のデータのサイズを与えられて、一部のコンテンツについて非実用的である可能性がある。他の実施形態は、リアルタイム・レートでのエンコードを試みる。システム2220は、いくつかの実施形態で、標準的なネットワークおよび/またはバスを使用して標準在庫コンポーネントを介して組み立てることができ、したがって、老朽化を回避し、かつ/またはより高速のプロセッサおよびコンポーネントが入手可能になるときにこれらを活用することを試みる。
図23に、ダイサ2222によって分割されたセグメント2242に分割されたコンテンツのストリーム2240の単純化されたブロック図表現を示す。コンテンツ2240は、ビデオ・コンテンツを含むときに、通常、ピクチャまたはフレーム2320のストリングとして受け取られ、ここで、各フレームは、通常、複数のピクセルを定義するデータを含む。エンコードされていないコンテンツが、ダイサ2222に供給される。
図24に、いくつかの実施形態によるダイサ2222の例の実装の単純化されたブロック図を示すが、ここで、ダイサ2222は、少なくとも部分的にハードウェア・アーキテクチャを介して実装される。ダイサは、コンテンツ・ストリーム・レシーバ2422、ダイシング・プロセッサ・ユニット2424、メモリ2426、オーディオ・エクストラクタ(audio extractor)2430、出力ポート2432、およびコントローラ2434を含む。コンテンツ・ストリーム・レシーバ2422は、いくつかの実施形態で、少なくとも部分的に、ストリーミングのエンコードされていないコンテンツ2240を受け取るシリアル・デジタル・インターフェース(SDI)レシーバ(例えば、SMPTE292M)を介して実装することができる。ダイシング・プロセッサ・ユニット2424は、コンテンツ(例えば、ビデオ)をダイシングし、ホスト(例えば、PCIバスを介して)、マイクロ・プロセッサ、および/または他のプロセッサもしくはプロセッサの組合せと通信するフィールド・プログラマブル・ゲート・アレイを含むことができる。メモリは、通常、1つまたは複数のバッファ・メモリ、好ましくは、セグメントを吸収する深いまたは相対的に大きいコモディティ・メモリ(commodity memory)(1つまたは複数)を含み、約50フレーム以上のサイズ(例えば、エンコーディング・プロセッサ・ユニットごとに約250MB以上)など、期待されるエンコーディング方式による実用的なセグメントサイズを処理するのに十分に大きいが、受け取られると期待されるデータおよび/または使用されるエンコーディング方式に依存して、他のサイズを使用することができる。
ポート2432は、実質的に任意のポートとすることができ、いくつかの実装では、分割されたセグメントをエンコーダ・プロセッサ・ユニット2230〜2232(図22を参照されたい)に配送する複数のfirewireポート(例えば、1394b−800Mbps firewireポート)を含む。いくつかの実施形態で、コンテンツ・ストリームは、ビジュアルおよびオーディオ・コンテンツを含む。したがって、オーディオ・エクストラクタ2430は、レシーバからオーディオを抽出し、これを処理のためにホストおよび/または代替プロセッサに配送する。コントローラ2434は、マシン・コントロール・サービスを含む、ダイサ2222の全体的な制御をもたらす。
図25に、図22のエンコーディング・システム2220の例のホスト・システム2238の単純化されたブロック図を示す。ホスト・システム2238は、中央コントローラ2522、トランスコーダ2524、コンテン・ツルータ2526、およびグラフィカル・ユーザ・インターフェース(GUI)コントローラ2530を含むことができる。いくつかの実施形態で、ダイサ2222および/またはスプライサ2236が、ホスト2238の一部である。中央コントローラ2522は、エンコーディング・システム2220を管理し、少なくともダイシングおよびスプライシングを調整する。いくつかの実施形態で、中央コントローラ2522は、オペレーティング・システム2532を使用し、カメラ、ビデオ・テープ・レコーダ(VTR)デッキ、および他のソースなどのソースからのコンテンツの獲得を制御するソフトウェアのライブラリなどのソフトウェアにアクセスし、実行する、1つまたは複数のマイクロ・プロセッサおよび/またはコンピュータを介して実装される。オペレーティング・システムは、例えば、Microsoft Windows(登録商標)XP、Linux、あるいは、制御の全体的なレイヤを提供し、他のコンテンツ・ソースおよび/または編集システム(例えば、Microsoft社のDirectShow(商標)、QuickTime(商標)、および他のそのようなシステム)などの他のシステムおよび/またはプログラムを有するホストと協力する他のオペレーティング・システムとすることができる。コントローラ2522は、さらに、エンコーディングを監視し、かつ/またはエンコーダ・プロセッサ・ユニット2230のバッファ・レベルのコンプライアンスを監視する追加モニタを含むことができる。ルータ2526は、ダイサ2222へのコンテンツ・ストリーム2240の配送を部分的に制御する。いくつかの実装で、ルータは、ファイル・ベースのコンテンツとしてコンテンツを配送する。GUI 2530は、それを介してユーザがシステム動作を操作し、制御し、変更し、パラメータ、閾値、および/または他の情報を供給し、かつ/あるいはレポート、統計、結果を入手し、かつ/あるいはエンコードされたコンテンツ(ストリーム全体および/または再エンコードされたコンテンツを含む)を見ることができるインターフェースを提供する。
戻って図22および23を参照すると、動作中に、エンコーディング・システム2220は、コンテンツを受け取り、ダイサ2222を介してそのコンテンツを分割されたセグメントに分割し、分割されたセグメントをエンコードし、エンコードされた分割されたセグメントを、一緒に、エンコードされた出力ストリーム2246として戻してスプライスする。ダイサ2222は、各セグメントが複数のフレーム2320を含む、一連の分割されたセグメント2331〜2336に分割すべき圧縮されていない入力2240を受け取る。分割されたセグメントは、通常、連続するフレームのセットをグループ化することによって定義される。ダイサは、分割されたセグメントを分離し、これらのセグメントを異なるバッファ2224〜2226に配送する。例えば、第1の分割されたセグメント2331は、第1のエンコーダ・バッファ2224に配送され、このセグメントは、複数のフレームS1+0からS1+nまでを含む。第2の分割されたセグメント2332は、第2のバッファ2225に配送され、第3の分割されたセグメント2333は、第3のバッファ2226に配送される。このシステムが、3つのエンコーダだけを含む場合に、第4のセグメント2334は、通常、第1のバッファ2224に配送され、第5のセグメント2335は、第2のバッファ2225に配送され、以下同様である。しかし、いくつかの実装で、セグメントが、長さおよび/または内容において等しくなく、したがって、第1のバッファ2224にリサイクルする際に、第1のバッファが、それでも、1つまたは複数の前のセグメントが十分に大きいことに起因して、閾値を超えるコンテンツを含む場合があり、ダイサは、第1のバッファをスキップし、分割されたセグメントの配送について後続バッファを評価することに留意されたい。さらに、このシステムは、実質的に任意の個数のエンコーディング処理ユニットを含むことができる。
分割されたセグメント2331〜2336は、実質的に任意の個数のピクチャまたはフレームを含むことができ、各分割されたセグメントは、必ずしも同一個数のフレームを含む必要はない。いくつかの実施形態は、分割されたセグメントの境界としてIフレームを利用し、したがって、これらの分割されたセグメントは、Iフレームから始まる。
エンコーディング・システム2220によってもたらされる利益の1つは、エンコーディング・プロセッサ・ユニット2230〜2232が、バッファ2224〜2226に接続され、データ2240が受け取られているレート(例えば、リアルタイム・レート)より低いレートでバッファからコンテンツ・データを引き出すことである。したがって、エンコーディング・プロセッサ・ユニット2230〜2232は、受け取られるデータレートより低いレートで動作することができる。例えば、データが、リアル・タイム・フルレートで入ってきつつあり、3つのエンコーダ・プロセッサ・ユニット2230〜2232がある場合に、各エンコーディング・プロセッサ・ユニットは、効果的に、受け取られるコンテンツのレートの約1/3で動作することができ、3つのエンコーディング・プロセッサ・ユニットの合計が、効果的に、受け取られるレートとほぼ等しいエンコーディング・レートを提供する。エンコーディング処理を並列化することによって、エンコーディング・システム2220は、動作帯域幅を増やす。いくつかの実施形態で、エンコーディング・プロセッサ・ユニット2230〜2232は、並列エンコーディングの合計が、受け取られる入力信号2240のレートを超えて、処理によって導入される遅延について部分的に補償するようにするためのレートで動作させられる。例えば、3つのエンコーディング・プロセッサ・ユニットを用いると、各エンコーディング・プロセッサ・ユニットを、入力コンテンツ2240のデータレートの約35〜40%で動作し、効果的に105〜120%エンコーディング・レートをもたらすように実装することができ、ここで、+5〜20%の追加は、ダイシング、バッファリング、スプライシング、および/または他の潜在的な処理オーバーヘッドに関連するオーバーヘッド処理時間について補償する。
図26に、いくつかの実施形態による、少なくともダイサ2222、エンコーディング制御、およびフィードバックの詳細をさらに示す、エンコーディング・システム2220の部分のブロック図を示す。このシステムは、イメージ複雑度アナライザ2622、制御ループ2624、オプションのエラー・フィードバック・プロセッサ2626、制御ループ・コンペンセータ2630、マッピング関数2632、ターゲット・バッファ・レベル・ディストリビュータ2634、遅延バッファ2640、ダイサ・ディストリビュータ2642、およびオプションの時間相関アナライザ2644を含む。
イメージ複雑度アナライザ2622は、ビデオ・データなどのコンテンツ・ストリーム2240の複雑度の分析を実行する。複雑度決定に基づいて、複雑度アナライザは、コンテンツ・ストリームに対して相対的な所与のポイントで使用できるバッファ・レベルに関連する複雑度パラメータおよび/または複雑度ガイドを生成する。一般に、データが複雑であればあるほど、システムはより多くのバッファ・レベルを使用している傾向があり、通常、コンテンツ・ストリームが複雑であればあるほど、より多くのバッファス・ペースが必要になるようになっている。バッファ・レベル・ニーズに対する複雑度の間のこの関係は、通常は、線形の関係ではない。
図27に、複雑度アナライザ2622を介して生成できる、1にスケーリングされたコンテンツ・ストリームの複雑度プロファイルまたは複雑度マッピング2720の単純化されたグラフィカル表現を示す。図26および27を参照すると、複雑度アナライザ2622は、要求されるデコーダ・バッファ・レベル・モデルを満足することを試みてエンコーディング・プロセッサ・ユニット2230〜2232のエンコーディング・レベルを調整するのに利用される複雑度パラメータまたは複雑度スケールを生成する。一般に、複雑度が高まるにつれて、エンコーディング・レートが高まる。
いくつかの実施形態で、複雑度アナライザ2622は、複雑度を予測するために、少なくとも部分的にMPEG2エンコーダおよび/または他の単純化されたエンコーダを介して実装される。例えば、複雑度アナライザは、少なくとも部分的に、固定クワント・モード(fixed quant mode)または固定品質モードで動作するようにセットされたオフザセルフMPEG2エンコーダを介して実装することができる。固定品質モードは、一般に、バッファ・レベルおよびデータ・ビットレートを顧慮せずに動作し、エンコードする。そうではなく、このエンコーダは、自由形式エンコーディングを実行する。固定クワント・エンコーダを介して処理されたピクチャまたはフレームのエンコードされたコンテンツは、任意のデータ・サイズを有するエンコードされたピクチャをもたらす。データ・サイズは、いくつかの実施形態で、そのフレームのエンコーディングの複雑度の反映として使用することができる。それでも、他の実施形態は、処理能力が使用可能であるときに、複雑度アナライザの一部としてAVCエンコーダ、VC1エンコーダ、または他のエンコーダを使用することができる。平均ピクセル値からの標準偏差を使用されるダイナミック・レンジと比較するイントラ・フレーム分析、ピクチャからピクチャへのイントラ測定値を比較するインターフレーム分析、ピクチャからピクチャへのヒストグラムの比較、動きベクトルの相関を測定する動き分析、および/または他の分析など、他の複雑度分析も使用することができる。
次に、このシステムは、複雑度パラメータ(いくつかの実施形態で、エンコードされたフレームのデータ・サイズである)を定義し、その複雑度パラメータを格納する。コンテンツ・ストリーム2224の一連の複雑度パラメータに基づいて、データ・セット(例えば、コンテンツ・ストリーム)の複雑度マッピング2720が、定義され、いくつかの実装では、ピクチャの粒度(granularity)またはGOPの粒度(granularity)を有する。いくつかの例では、複雑度マッピングを合計して、このシステムを介して処理されつつある分割されたセグメントのマッピング全体を得る。
エンコーディング・システムのいくつかの実装は、結果のエンコードされたコンテンツに基づくエラー・フィードバック2660を受け取るオプションのエラー・フィードバック・プロセッサ2626を含む。エラー・フィードバック・プロセッサは、エラーパラメータ2662内のエラーを処理する。いくつかの例で、複雑度アナライザおよび/またはマッピング関数の精度を示す定義されたエンコーディング・ターゲット・レベルを満足する際にエン・コーディング・プロセッサ・ユニットが有した困難に対する相対的な情報を返すフィードバックが、エンコーディング・プロセッサ・ユニットから受け取られる。
次に、下で十分に説明するように、これらの困難パラメータを制御ループ2630によって利用して、マッピング関数を調整することができる。制御ループは、エンコーディング・プロセッサ・ユニットからのエラー応答に基づくフィードバックを介して適合されるバッファ・レベル予測をエンコーディング・プロセッサ・ユニットに供給する。それに加えておよび/またはその代わりに、制御ループ2630は、現在のフレームまたは分割されたセグメントの決定された複雑度と、その複雑度データが前のフレームまたは分割されたセグメントの前の複雑度データにどのように関係付けられるか(例えば、量子化レベルを評価することによって)とに基づいて、マッピング関数を調整することができる。
制御ループ2630は、エンコーダ・プロセッサ・ユニットが要求されるレートでエンコーディングしているかどうかを決定することを試みて、複雑度プロファイルおよび/またはフィードバック・パラメータを比較する。システムがエンコーディング・レートとして指定するものとエンコーダ・プロセッサ・ユニットが実行しつつあるレートとの間の差すなわちデルタは、システム動作に影響する可能性があり、少なくともバッファ・レベルまで永続される。例えば、エンコーダ・プロセッサ・ユニットが、指定されたレート未満のレートで実行するときに、データは、データが供給するレートと等しいレートではバッファからプルされず、バッファ・レベルは、期待されるレベルより高まり、これが、後続フレームのエンコーディングのレベルに影響する可能性がある。同様に、エンコーダ・プロセッサ・ユニットが、期待値を越えるレートで動作する場合に、バッファ・レベルは、より低くなる。
制御ループ比較に基づいて、制御ループ・コンペンセータ2630は、補償パラメータを定義する。この補償パラメータは、マッピング関数2632内で、データが処理される際の複雑度予測を改善するためにマッピングを変更するのに使用される。これは、処理中および/またはリアルタイムでのマッピング関数の調整を可能にする。というのは、マッピング関数が、効果的に、コンテンツ依存である近似であるからである。代替実施形態は、ストリーム全体の複雑度分析を開始することによって2パス・プロセスを使用する。分析の後に、複雑度が、エンコーディング・プロセッサ・ユニットを制御するのに利用される。2パス・プロセスを使用するこれらのシステムは、通常はルックアヘッド・バッファ2640を含まない。というのは、複雑度パラメータが、エンコーディング・プロセッサ・ユニットを調整するためのパスに基づいて既に既知であるからである。
マッピング関数2632は、いくつかの実施形態で、マッピング関数として二次または三次の多項式を使用する。マッピングは、ターゲット・バッファ・レベル・ディストリビュータ2634に供給され、ターゲット・バッファ・レベル・ディストリビュータ2634は、バッファ・レベル・ターゲット・レート2670を生成し、バッファ・レベル・ターゲット・レート2670は、要求されるまたは期待されるバッファ・レベルを満足することを試みてエンコーディング・レートを調整し、かつ/または維持するためにエンコーディング・プロセッサ・ユニット2230〜2232に供給される。いくつかの実施形態で、テーブルまたはスプレッドシートを、マッピング機能の調整を実装するのに利用することができる。例えば、異なるレベルのデータレートに関する要求されるエンコーディング・バッファ・レベルを含む1つまたは複数のルックアップ・テーブルを利用することができる。それに加えておよび/またはその代わりに、これらのテーブルが、制御ループ・コンペンセータ2630によって分析された識別された複雑度、データレート、および/またはエラー・フィードバックに依存して使用できる多項式のセットを定義することができる。
マッピング機能に対する調整は、エンコーディング・レートに対する連続的調整を可能にするために連続的に実装することができる。他の実装では、エンコーディング・レートおよび/または要求されるバッファ・レベルに対する調整が、分割されたセグメントの境界で実装される(境界は、通常、1つの分割されたセグメントの最後のフレームおよび/または後続の分割されたセグメントの先頭である)。エンコーディング・レートのこの調整は、続く分割されたセグメントのスタート・ポイントをカバーする特定のセグメントの追加ポイントについて要求されるターゲット・バッファ・レベルを達成することを試みる。エンコーディング・プロセッサ・ユニットは、その目標を満足することを試みてバッファ・レベル・ターゲット・レート2670を利用し、このシステムは、その目標を満足することの困難に関するフィードバック2660を受け取り続ける。
上で説明したように、ダイサ2222は、コンテンツ・ストリーム2240を複数の分割されたセグメント2331〜2336に分割する。分割されたセグメントの間の境界の決定は、事前定義の周期的な個数のフレーム、事前定義の時間の長さ、コンテンツ2240の複雑度、および他のパラメータまたはパラメータの組合せに基づくものとすることができる。例えば、本発明のいくつかの単純化された実装では、分割されたセグメントの境界を、コンテンツを顧慮せずに時間の期間に盲目的に基づいて(例えば、1秒おきに)セットすることができる。次に、エンコーディング・プロセッサ・ユニットは、その1秒の時間境界と位置合せするために、分割されたセグメントをエンコードし、結果のエンコードされた分割されたセグメントを最後に一緒に継ぎ合わせることを可能にする。コンテンツを顧慮しない分割されたセグメントの境界の選択(例えば、時間またはフレーム数に周期的に基づく)は、しばしば、最適未満のコーディング品質をもたらす可能性がある。
いくつかの実施形態は、その代わりに、複雑度マッピング2720を利用して、より正確なエンコーディングを提供し、かつ/またはエンコーディング処理を複数のエンコーディング・プロセッサ・ユニットにまたがってより均等に分散させる境界を分割されたセグメント2331〜2336の間で実装できるコンテンツ2240内の位置を識別する。複雑度分析を利用する際に、このシステムは、分割するセグメントの境界をコンテンツ内の適当なポイントに位置合せすることを試みる。例えば、ビデオ・コンテンツに関して、境界ポイントを、大きいアクションおよび/または経時的により少ない相関(フレーム間のより少ない参照)(例えば、シーン変化または高速ショット)を含むコンテンツ内のポイントで選択することができる。多くの例で、大きいアクションを有するかより少ない相関を有するコンテンツの部分にIフレームを位置決めすることが望ましく、したがって、これは、分割されたセグメント2331〜2336の多くが各グループ化されたセグメントの先頭にIフレームを有することを可能にする。
さらに図26および27を参照すると、このシステムは、遅延バッファまたはルックアヘッド・バッファ2640を使用して、少なくとも部分的に、潜在的な分割されたセグメントの境界を識別する時間を与える。この遅延バッファは、例えば1秒の遅延を与えることができるが、実質的に任意の遅延を、システムおよび使用可能なシステム・リソースに依存して利用することができる。これは、ダイサ・ディストリビュータ2642によって、ダイシングされエンコードされるコンテンツ・ストリームを受け取る前に複雑度データ2720を受け取ることを可能にする。複雑度データをルックアヘッドすることによって、ダイサ・ディストリビュータ2642は、複雑度を評価し、大きいアクション、より少ない相関、および/または境界を選択できるストリームに沿った他の位置に相関する分割されたセグメントの境界を定義できる位置を識別する時間を有する。
いくつかの実施形態は、さらに、分割されたセグメントの境界を識別するのを助ける時間相関アナライザ2644を含む。時間相関アナライザ2644は、シーン変化および/または大きいアクションを示す可能性があり、したがって複雑性が通常は高まる、あるピクチャから次のピクチャへのデータレートの大きいスパイクを検出することができる。それに加えておよび/またはその代わりに、いくつかの実施形態は、複雑度アナライザ2622のMPEG2エンコーダを利用して、MPEG2エンコーダがシーン変化を検出したコンテンツ・ストリームに沿った位置を示す、MPEG2エンコーダから出力されたGOP構造の遷移を識別する。通常、MPEG2エンコーダは、相対的によいシーン検出を含み、そのようなシーン検出は、分割されたセグメントの境界を識別するのに使用することができる。
さらに、時間相関アナライザ2644は、いくつかの実装で、さらに、テレシネ境界をも維持するフレーム境界を識別する。時間相関アナライザは、フレームレートの変化、例えば、元々はビデオ用に記録されたコンテンツ(例えば、米国テレビジョン用の約30フレーム毎秒を含むテレビジョン・コンテンツ)対元々は映画フィルム用に記録されたコンテンツ(例えば、24フレーム毎秒を含むコンテンツ)からの変化を識別するテレシネ検出アルゴリズムを含むことができる。当技術分野で既知の通り、テレビジョン・コンテンツへの映画フィルム・コンテンツの変換は、フィールドの繰り返しを使用する。したがって、時間相関アナライザのいくつかの実装は、テレシネ境界(telecine boundaries)を維持しながら(例えば、フィールドの分割を避けながら)分割されたセグメントの境界を定義することを試みる。いくつかの例で、時間相関アナライザは、別々のMPEGエンコーダを利用したり、あるいは一部のMPEGエンコーダがテレシネ境界を検出する際に、イメージ複雑度アナライザからなるMPEGエンコーダを利用したりする。
図22、23、および26を参照すると、決定された分割セグメントの境界に基づいて、ダイサ2642は、コンテンツを分割されたセグメント2331〜2336に分割する。次に、これらの分割されたセグメントは、エンコーディングのためにエンコーダ処理ユニット2230〜2232に転送される。グループ化されたセグメントがエンコードされたならば、エンコードされたコンテンツは、スプライサ2236に転送され、スプライサ2236は、エンコードされた分割されたセグメントを単一のストリーム2246に組み合わせる。
エンコーディング・プロセッサ・ユニット2230〜2232は、いくつかの実施形態で、複数の異なる動作モードのうちの1つで動作させることができる。例えば、動作の1つのモードは、結果の品質にかかわりなく、定義されたエンコーディング方式を満足するようにエンコーディング・プロセッサ・ユニットをセットする。動作の代替のモードは、それ未満ではエンコーディング・プロセッサ・ユニットがエンコーディング方式パラメータを無視し、信号品質レベルを維持し、したがって1つまたは複数のデコーダ・バッファ・モデルを満足することに失敗する可能性がある限度または閾値品質レベルを定義する。次に、このシステムは、引き返し、エンコードされたコンテンツのうちで信号品質レベルを満足できないおよび/またはデコーダ・モデルを満足できない区域に対処するために、セグメント・ベースの再エンコードを使用し、ここで、この再エンコーディングは、品質を改善するためのエンコーディング・レートの調整、バッファ・レベル・パラメータを満足することを試みるトランスレーティング、および/または他のエンコーディング技法もしくは技法の組合せ、を含むことができる。
いくつかの実施形態は、部分的に、セグメント・ベースの再エンコーディングを提供し、この再エンコーディングは、結果のエンコードされたコンテンツを改善し、エンコードされたコンテンツがコンテンツ全体の完全な再エンコードを実行することを必要とせずに、1つまたは複数の要求されるエンコーディング標準規格を満足することを可能にし、エンコーディング・レートをコンテンツ・ストリームの全体を通して変更できるので全体的により良い品質をもたらす。さらに、いくつかの実施形態は、ストリーム全体を完全に再エンコードすることに頼ることを必要とせずに、ベース・エンコードが既に完了した後にコンテンツ内にカスタムGOP配置を組み込む能力を提供する。さらに、このカスタムGOP配置は、エンコードされたコンテンツの小さい部分を再エンコードすることによって実施することができる。
カスタムGOP配置を可能にすることは、ユーザに、より高い柔軟性および結果のエンコードされた製品に対するより多くの制御を与え、処理時間およびオーバーヘッドを大幅に削減することができる。例えば、ユーザは、ベース・エンコードを開始し、そのエンコードの後に、追加のチャプタ・ポイントを含めることが有益であることを悟る場合があり、あるいは、ユーザが、チャプタ・ポイントを含めるのを忘れた場合がある。いくつかの本実施形態は、コンテンツ・ストリーム全体の再エンコーディングの苦労および時間の出費なしで、ベース・エンコードの後のチャプタ・ポイントの挿入および他のコンテンツ編成を可能にする。さらに、本実施形態は、チャプタ・ポイントの挿入または他のコンテンツ編成を可能にし、かつ/またはセグメント・ベースの再エンコードを介するカスタムGOP配置を提供すると同時に、それでも、エンコードされたコンテンツが、要求されるデコーダ・バッファ・モデルを満足するように、エンコードされたコンテンツのレベルを維持する。
デジタル・ビデオ・ディスク(DVD)作成など、コンテンツをエンコードする際に、ユーザは、しばしば、例えばチャプタ・ポイントをそのポイントまたは位置に挿入できるように、特定の場所にGOPを定義し、かつ/または位置決めすることを望む。いくつかの従来のシステムでは、ユーザは、エンコーダが指定された位置にGOPを組み込めるようにするために、ベース・エンコードの前にチャプタ・ポイントの位置を指定しなければならなかった。従来のシステムでベース・エンコードの前に要求されるGOP構造および/またはチャプタ・ポイントを定義できないと、通常、ユーザが、引き返し、GOPおよび/またはチャプタ・ポイントを定義し、コンテンツ・スティーム全体の完全に新しいフル・エンコードを実装することが必要になる。
しかし、いくつかの本実施形態は、ユーザが、セグメント・ベースの再エンコードを使用して、GOP構造、チャプタ・ポイント、他の編成入力を使用し、かつ/または他の形でエンコードされたコンテンツを変更すると同時に、それでも、初期ベース・エンコードおよび/または後続エンコードの後にデコーダ標準規格を満足することを可能にする。したがって、いくつかの実施形態は、データ・セット全体を再エンコードする必要なしに、ベース・エンコードおよび/または後続エンコードの後に引き返して、新しいGOPを組み込む機構を提供する。エンコードの後に、またはコンテンツが以前にエンコードされた状態で、ユーザは、チャプタ・ポイント、GOP構造、および/または他のコンテンツ編成を位置決めすべき、エンコードされたストリームに沿った位置を識別することができ、このシステムは、要求されたGOP、チャプタ・ポイント、および/または他の編成を挿入するためにセグメント・ベースの再エンコードを実装することができる。したがって、いくつかの実施形態は、エンコーディングが行われた後の、GOPの作成、チャプタ・ポイントの挿入、および/または他の編成を可能にする。いくつかの例で、GOP構造の変更および/またはチャプタ・ポイントの挿入は、BフレームまたはPフレームのIフレームへの変換または昇格を含み、効果的に、GOP構造を切り詰めるか延長し、所望する位置の付近から始まる新しいGOPを作成する。
図28に、チャプタ・ポイントの挿入および/またはGOP構造の変更のいくつかの実施形態によるプロセス2820の単純化された流れ図を示す。ステップ2822で、チャプタ挿入の位置またはGOP構造が改められなければならないポイントを識別する。いくつかの例で、チャプタ挿入ポイントは、ユーザによって定義される。ステップ2824で、このプロセスは、定義された挿入ポイントから離れた候補再エンコード・スタート・ポイントのピクチャまたはフレームを識別する。通常、所望するチャプタ・ポイントを組み込み、GOP構造を再定義するために、再エンコード・スタート・ポイント・ピクチャは、チャプタ挿入ポイントがピクチャ参照によって妨げられなくなるように、セグメント再エンコードがピクチャの間の参照を調整できるようにするために、所望する位置からある距離で選択される。しばしば、このシステムは、挿入ポイントで新しいGOP構造を定義し、したがって、Iピクチャが所望する挿入ポイントに存在するようにピクチャ・タイプを再定義する。
ステップ2826で、候補スタート・ポイント・ピクチャを評価する。通常、この評価は、図8のプロセス820で実行される評価に類似する。ステップ2830で、候補スタート・ポイント・ピクチャが有効なスタート・ポイント・ピクチャであるかどうかを決定する。候補スタート・ポイントが有効であるときには、このプロセスはステップ2836に継続する。その代わりに、候補スタート・ポイントが有効ではないときには、ステップ2832に入り、ここで、代替の候補スタート・ポイントを識別し、このプロセスは、評価のためにステップ2826に戻る。
有効なスタート・ポイント・ピクチャが識別されるときに、このプロセスは、ステップ2836に進み、ここで、候補エンド・ポイント・ピクチャを識別する。やはり、通常、候補エンド・ポイントは、識別されたスタート・ポイント・ピクチャおよび候補エンド・ポイント・ピクチャが定義された挿入ポイントにまたがるように、定義された挿入ポイントからある距離で選択される。ステップ2840で、候補エンド・ポイント・ピクチャを評価する。この評価は、いくつかの実施形態で、図8のプロセス820で実行される評価に類似する。ステップ2842で、候補エンド・ポイント・ピクチャが有効なエンド・ポイント・ピクチャであるかどうかを決定する。候補エンド・ポイントが有効ではないときには、ステップ2844に入り、ここで、代替の候補エンド・ポイントを識別し、このプロセスは、ステップ2840に戻る。その代わりに、候補エンド・ポイントが有効であるときには、ステップ2850に入り、ここで、セグメント再エンコードを開始して、識別されたスタート・ポイントとエンド・ポイントとの間で定義されるセグメントを再エンコードする。ステップ2852で、所望するGOP再構成および/またはチャプタ・ポイントを、例えば、定義された挿入ポイント付近でピクチャ・タイプを変更することによって、セグメント再エンコード中に所望する位置の付近に挿入する。いくつかの実施形態で、プロセス2820は、複数の潜在的なスタート・ポイントおよびエンド・ポイントを識別することができ、ユーザが、その複数のスタート・ポイントおよびエンド・ポイントのうちのどれを使用しなければならないかを選択することを可能にすることができる。このプロセスは、チャプタ・ポイント挿入および/またはGOP調整のそれぞれについて繰り返される。
さらに、いくつかの実施形態は、それでも要求されるデコーダ・バッファ・モデルを満足しながら、ポータブル・ストレージ媒体に格納されるコンテンツを制限するなど、定義されたビット・バジェット・パラメータを満足するためにコンテンツをエンコードすることを可能にする。ビット・バジェットを満足する際に、いくつかの実施形態は、初期エンコードまたはベース・エンコードを開始することができ、ここで、このエンコーディングは、実質的に任意の関連するエンコーディング方式に基づくものとすることができ、1つまたは複数のデコーダ・バッファ・モデルを満足することを試みて、固定ビットレート・エンコーディングまたは可変ビットレート・エンコーディングを含むことができる。初期エンコードの後に、後続のセグメント再エンコードを上で説明したように開始して、エラーおよび/または1つまたは複数の要求されるデコーダ・モデルを満足することの失敗に対処することができる。それに加えておよび/またはその代わりに、トータル・ビット・カウントを、エンコードされたコンテンツについて決定することができる。このトータル・ビット・カウントを、所望するまたは最大のビット・カウントまたはビット・バジェットと比較することができる。トータル・ビット・カウントが、ビット・バジェットを超える場合には、トータル・ビット・カウントが所望するビット・バジェットを満足すると同時に要求されるデコーダ・バッファ・モデルを満足するためのエンコードされたコンテンツの品質を維持するように、1つまたは複数のセグメントに利用されるビットを減らすためにコンテンツをより低いレベルで再エンコードできる1つまたは複数の区域またはセグメントを識別するために、エンコードされたコンテンツを評価することができる。
いくつかの実施形態で、初期エンコードされたコンテンツのビット・カウントがおおむね第1の固定された量までに制限されるように、初期エンコーディングを実装することができる。例えば、エンコードされ、5Gバイトなどの制限された記憶容量を有するポータブル光学ストレージ媒体に格納されるビデオ・ストリームを、エンコードされたコンテンツが、エラーのマージンおよびヘッドルームを提供するための事前定義の量(例えば、10から20%)だけ最大値(例えば、5Gバイト)より少ないトータル・ビット・カウントを有するように、初期エンコーディングを介してエンコードすることができる。
初期エンコーディングの後に、セグメント再エンコーディングの使用を介して、いくつかの実施形態は、次に、1つまたは複数の特定のセグメントのビットレートを高めることができ、したがって、品質を改善し、使用可能なオーバーヘッドの一部またはすべて(例えば、追加の1Gバイト)を使用する。さらに、いくつかの実施形態は、さらに、他のセグメントのレートを高めることを可能にするためにいくつかのセグメントのビットレートを減らすために、いくつかのセグメントのセグメント・ベースの再エンコーディングを可能にする。さらに、要求されるデコーダ・バッファ・モデルおよび/または標準規格を満足するエンコードされたコンテンツを達成するために、オーバーヘッド記憶領域を超えるものが必要となる場合に、本実施形態は、バッファ・モデルまたは標準規格に関していくらかのヘッドルームを有する区域を識別するためにコンテンツを評価し、トータル・ビット・カウントを減らすためおよび/または許容できるビットレートを超える区域からビットを解放するためにこれらの区域の再エンコードを実装し、1つまたは複数のバッファ・モデルを満足することに失敗するセクションを再エンコードするためにこの解放された容量を使用することができる。したがって、このシステムは、以前の方法と比較して、ビデオの総合品質を改善する。
いくつかの実施形態は、さらに、コンテンツ・ストリームの長さにまたがる可変ビットレートを可能にする。多数の従来のエンコーディング・システムは、固定ビットレートを使用する。これらの固定ビットレート・エンコーダが、定義されたビット・カウント限度を超えなかったコンテンツをエンコードするためには、これらのシステムは、使用可能な時間またはメモリ・スペースの量を計算し、ビット・カウント限度内になるはずのビットレートを計算し、その固定ビットレートを用いてコンテンツ・ストリーム全体をエンコードした。固定ビットレートエンコーディングは、しばしば、コンテンツのいくつかの部分が他の部分と大きく異なる品質を有することをもたらす。
さらに、いくつかの実施形態は、デコードから生じる信号品質がより小さい変動を有するように、エンコードされたコンテンツを適切な範囲に収める(moderate)試みにおいて、セグメント・ベースの再エンコーディングを利用することができる。多くの例で、ビデオ・コンテンツを見る人は、わずかに低い全体的品質を有するがより小さいまたはより少ない品質変動を有するコンテンツよりも、コンテンツが、品質において、相対的に重大なまたは大きい変化を有するときに、より低い品質の区域に、より容易に気付く。いくつかの実施形態は、品質の全体的な向上を達成しながら、可変ビットレートを適用し、努力する試みにおいて、エンコードされたコンテンツのうちで相対的に品質が高い区域(例えば、PSNR値を比較することによって)の品質を下げ、品質のより低いエンコードされたコンテンツのセクションに解放された容量を生かし、コンテンツ・ストリームに沿って品質レベルを平らにしし、かつ/またはコンテンツのあらかじめ定められた量内での信号品質の大きい変化を制限することができる。
いくつかの実施形態は、トランスコーディングを通してコンテンツのストリーム全体のビットの再割振りをも提供する。エンコードされたコンテンツを、例えば信号品質(例えば、PSNR)に基づいて評価して、ストリームのうちで、トランスコーディングが品質に悪影響を及ぼさずにまたは最小限の影響でビットの解放を提供する部分を識別することができる。ストリームのうちでトランスコーディングされる部分は、動きベクトルが多様である部分、粗い量子化を有する区域、マクロブロック効果、および冗長性を有する区域の識別、ならびに他の類似する方法など、他の方法を介して識別することもできる。
それに加えておよび/またはその代わりに、いくつかの実施形態は、いくつかの実装で、IフレームをPフレームまたはBフレームに変換することによってビットを解放する。この変換は、例えば定義されたBフレームおよび/またはPフレームに対するIフレームの比率のゆえに、ある種の応用例、プロトコル、および/または標準規格に対して制限される可能性がある。ビット・カウントのさらなる削減を、いくつかの実施形態で、コンテンツの事前フィルタリングを介して達成することができる。いくつかの実装では、コンテンツが、中央値フィルタリング、空間フィルタリング、時間フィルタリング、ノイズ・フィルタリング、および/または他の関連するフィルタリングもしくは複数のフィルタリングの組合せなどであるがこれらに限定されない1つまたは複数のフィルタリング技法を使用してフィルタリングされる。フィルタリングは、それに加えておよび/またはその代わりに、セグメント・ベースの再エンコーディング中に適用することができ、これは、ユーザが、ストリーム全体にフィルタを適用することを回避し、その代わりに選択された1つまたは複数のセグメント(例えば、コンテンツのうちですばやいアクションまたはすばやいシーン変化を有する部分)にフィルタリングを適用することを可能にする。さらに、フィルタリングを、ビット・カウントを減らすために少なくともいくつかのセグメントの追加フィルタリングを誘導するために、より高いレベルまたはより困難なレベルでの再エンコード中に実装することができる。いくつかの例で、フィルタリングおよび/または適用されるフィルタリングのレベルは、所望される結果を達成するために、ユーザによって調整可能および/または選択可能である。
フィルタリングおよび/または再エンコーディングを適用すべきセグメントを識別する際に、コンテンツの品質を、例えば動きベクトル(1つまたは複数)、限定作用素(quantifiers)、および/またはその組合せに基づいて評価することができる。明確に編成されたまたは順序付けられたベクトルは、よいエンコーディングを示す傾向があり、ランダムなおよび/または悪く順序付けられたベクトルは、不正確なエンコーディングを示す傾向がある。しかし、通常、いくつかの実施形態は、雨、風雨(weather)、雲、ズームイン、および類似物を含むビデオ・コンテンツなど、の一部のコンテンツは、エンコードするのが難しい可能性があり、動きベクトルおよび/または限定作用数値を使用してそれほど効果的には検出できないので、動きベクトルに排他的に頼ることはしない。
図29に、要求されるビット・バジェットを満足するかそれ未満になるようにトータル・ビット・カウントを調整するのに使用されるプロセス2920の単純化された流れ図を示す。ステップ2922で、結果のエンコードされたストリームが事前定義のビット・バジェット(例えば、4Gビット)を満足するように、コンテンツ・ストリームをエンコードして、初期エンコードまたはベース・エンコード完了する。ステップ2924で、エンコードされたストリームを評価して、エンコードされたストリームのセグメントが1つまたは複数のデコーダ・モデルに失敗するかどうかを決定する。上で示したように、エンコードされたストリームの評価は、ストリームがエンコードされている間におよびフル・エンコードの前に開始することができる。
ステップ2926で、1つまたは複数のバッファ・モデルの違反として識別されたセグメントのビットレートを減らし、それらが要求されるバッファ・モデル(1つまたは複数)を満足するように再エンコードする。ステップ2930で、トータル・ビット・カウントを識別し、プロセス2920は、トータル・カウントが定義された最大ビット・カウントを超えるかどうかを決定する。トータル・ビット・カウントが最大ビット・カウントを超えない場合には、プロセス2920は終了する。
ステップ2930で、トータル・ビットが最大値を超えると決定されるときには、このプロセスはステップ2934にスキップし、ここで、最大のマージンだけバッファ・モデル閾値を超える品質を有するセグメントを識別する。いくつかの例で、事前定義の時間長(distance)またはフレーム数以内のセグメントが、再調査され、その時間長またはフレーム数以内で最大のマージンを有するセグメントが、選択される。ステップ2936で、最大の品質マージンを有する識別されたセグメントを、追加ビットを解放するためにより低いビットレートで再エンコードする。その後、プロセス2920は、ステップ2930に戻って、トータル・ビット・カウントが要求される最大カウント未満であるかどうかを決定する。プロセス2920のいくつかの代替構成では、失敗したセグメントの再エンコードは、失敗したセグメントを再エンコードするのに十分な量の容量が解放されるまで、実行されない。
図30に、コンテンツ・ストリーム上の品質変化を平滑化しまたは制限するのに使用されるプロセス3020の単純化された流れ図を示す。ステップ3022で、最低の品質レベルまたは第1の閾値限度未満の品質レベルを有する1つまたは複数のセグメントを識別する。ステップ3024で、このプロセスは、高い品質レベルを有し、かつ/または最低の品質を有する1つまたは複数のセグメントの品質レベルを第2の閾値だけ超える品質レベルを有し、ステップ3022で識別された1つまたは複数のセグメントから事前定義の範囲内またはフレーム数以内にある1つまたは複数のセグメントが識別されるかどうかを決定する。事前定義の範囲は、バッファ・フィル・レベル、バッファ・レベル・シフティング、事前定義の個数のGOP、データ転送のレート、および/または他のそのような要因など、多数の要因に依存するものとすることができる。ステップ3026で、高い品質レベルを有する識別されたセグメントのうちの1つまたは複数を、より低いビットレートで再エンコードする。ステップ3030で、低い品質を有する識別された1つまたは複数のセグメントを、高められたビットレートで再エンコードする。
ステップ3032で、このプロセスは、トータル・ビット・カウントが最大トータル・ビット・カウントを超えるかどうかを決定する。トータル・ビット・カウントが最大値を超える場合には、ステップ3034に入り、ここで、より低い品質のセグメントの事前定義の範囲内またはフレーム数以内の、高い品質または別のセグメントの品質を超える品質を有する追加のセグメントがあるかどうかを決定する。高い品質レベルを有するセグメントがあるときには、ステップ3036でそのセグメントをより低いビットレートで再エンコードし、このプロセスは、ステップ3032に戻る。相対的に高い品質レベルを有するセグメントがない場合には、ステップ3040に入り、ここで、第1の閾値未満の品質を有する再エンコードされたコンテンツは、削除され、利用されず、このプロセスは終了する。
ステップ3032で、トータル・ビット・カウントが最大値を超えないと決定されるときには、このプロセスは、ステップ3042に入り、ここで、トータル・ビット・カウントが最大ビット・カウントから限度以内であるかどうかを決定する。トータル・カウントが限度以内ではない場合には、このプロセスは、ステップ3022に戻って、エンコードされた品質を一様にし、かつ/または改善するために再エンコードすべき追加のセグメントをさらに識別し、そうでない場合には、このプロセスは終了する。
ビット・バジェットを再分配するためのコンテンツの再エンコーディングおよび/またはコンテンツの品質の調整は、いくつかの実施形態を介してユーザ対話なしで実装することができる。しかし、いくつかの実施形態で、低品質セグメントの品質を高めることを可能にするために高品質セグメントの品質を下げるためのビットのシフトを開始する前に、いくつかの実施形態は、品質を調整するのに有益である可能性がある区域を識別し、またはマークするタイムラインをユーザのために生成する。次に、このシステムは、ユーザが、複数の調整がある場合に調整を選択し、所望されるときに調整を実装することを可能にする。それに加えておよび/またはその代わりに、このシステムを、事前定義の品質測定値またはスケール(いくつかの例でユーザによって選択することができる)に基づいてセグメントおよび/またはフレームの品質を識別し、ラベルを付けるタイムラインを生成するように構成することができる。ラベルを付けられた品質に基づいて、このシステムを、手動操作を可能にするように構成することができ、この手動操作では、ユーザが、コンテンツのストリームを評価し、再エンコードおよび/または品質調整の区域を定義することができる。
上で紹介したように、いくつかの実施形態は、ハードウェア、ソフトウェア、ファームウェア、および/またはその組合せを介して実装することができる。さらに、いくつかの実施形態は、シリアル・デジタル・ケーブルを介するソース(例えば、SMPTE292M)などのソースから、加速されたレート(例えば、コンテンツが受け取られるレート付近)のビジュアル・ビデオ・コンテンツなど、圧縮されていない高品位コンテンツをエンコードすることができる。エンコーディングは、いくつかの実装で、リアルタイム・レートで実行することができ、ファイル形式(例えば、AVI、Quicktime、生フレーム、および類似物)の高品位コンテンツのトランスコーディングを提供することができる。いくつかのシステムは、標準規格の変化および新しいエンコーディング・フォーマットに適合可能になるように構成され、品質の調整および/または修正と特徴(feature)の品質向上とを可能にする。いくつかの実施形態は、コモディティ・コンポーネントを利用して実装され、プロセッサの速度向上および機能を活用するために簡単に適合可能である。
本発明を、本明細書でその特定の実施形態および応用例によって説明してきたが、特許請求の範囲に記載の本発明の範囲から逸脱せずに、当業者は、多数の修正形態および変形形態を作ることができるであろう。
いくつかの実施形態によるエンコーディング・システムを示す単純化されたブロック図である。 図1のエンコーディング・システムを実装し、かつ/あるいはエンコーディングおよび/または再エンコーディングの一部またはすべてを実行するためにいくつかの実施形態で利用することができるコンピュータ・システムを示す単純化されたブロック図である。 1つまたは複数の、所望されるデコーダ・モデルを満足するエンコードされたコンテンツを達成するためにエンコーディングを実装する、いくつかの実施形態によるプロセスを示す単純化された流れ図である。 いくつかの実施形態によるハイポセティカル・リファレンス・デコーダ(HRD)を示す単純化されたブロック図である。 セグメント再エンコードを実行しなければならないかどうかを決定するプロセスを示す単純化された流れ図である。 エンコードされたコンテンツを評価するプロセスを示す単純化された流れ図である。 複数のピクチャまたはフレームを含むコンテンツのストリームの一部の単純化されたタイムライン表現を示す図である。 本実施形態のいくつかの実装によるセグメント再エンコード・スタート・ポイントおよびセグメント再エンコード・エンド・ポイントを識別するのに使用されるプロセスを示す単純化された流れ図である。 再エンコードに対してバッファ・モデル評価を決定し、実装するのに使用されるプロセスを示す単純化された流れ図である。 リーキー・バケット・モデルの単純化されたグラフィカル表現を示す図である。 可変ビットレートによるリーキー・バケット・モデルの単純化されたグラフィカル表現を示す図である。 ユーザがコンテンツをエンコードし、エンコードされたコンテンツを再検討し、かつ/または1つもしくは複数のセグメントの再エンコーディングを実装し、制御することを可能にする、いくつかの実施形態によるグラフィカル・ユーザ・インターフェースを示す図である。 ソース・コード・コントロール・ウィンドウの単純化されたグラフィカル表現を示す図である。 ムービー・コントロール・ウィンドウの単純化されたグラフィカル表現を示す図である。 いくつかの実施形態によるタイムライン・ウィンドウの単純化されたグラフィカル表現を示す図である。 タイム・ライン・ツールバーの拡大されたビューの単純化されたグラフィカル表現を示す図である。 ステータス・バーの拡大されたビューの単純化されたグラフィカル表現を示す図である。 ベース・エンコードの後の、入力タブ・セッティング・ウィンドウが表示された、セッティング・ウィンドウを示す図である。 ベース・エンコードの後の、ビデオ・タブ・セッティング・ウィンドウが表示された、セッティング・ウィンドウを示す図である。 セグメント・タブ・セッティング・ウィンドウが表示された、セッティング・ウィンドウを示す図である。 expressQCタブ・セッティング・ウィンドウが表示された、セッティング・ウィンドウを示す図である。 いくつかの実施形態によるエンコーディング・システムを示す単純化されたブロック図である。 分割されたセグメントに分割されたコンテンツのストリームを示す単純化されたブロック図表現である。 いくつかの実施形態によるダイサの例の実装を示す単純化されたブロック図である。 図22のエンコーディング・システムで実装できる例のホスト・システムを示す単純化されたブロック図である。 いくつかの実施形態による図22のエンコーディング・システムの一部を示すブロック図である。 図26の複雑度アナライザを介して生成できる、1にスケーリングされたコンテンツ・ストリームの複雑度プロファイルまたはマッピングを示す単純化されたグラフィカル表現である。 チャプタ・ポイントの挿入および/またはグループ・オブ・ピクチャ(GOP)構造の変更のいくつかの実施形態によるプロセスを示す単純化された流れ図である。 所望されるビット・バジェットを満足するかそれ未満になるようにトータル・ビット・カウントを調整するのに使用されるプロセスを示す単純化された流れ図である。 コンテンツ・ストリーム上の品質変化を平滑化しまたは制限するのに使用されるプロセスを示す単純化された流れ図である。

Claims (10)

  1. コンテンツのエンコーディングに使用する方法であって、
    ソース・コンテンツを受け取ること、
    前記ソース・コンテンツをエンコードし、エンコードされたコンテンツを作ること、
    前記エンコードされたコンテンツの第1のエンコードされたセグメントを、複数のバッファ・モデルと較べて評価すること、
    前記評価することに基づいて、前記エンコードされたコンテンツの前記第1のエンコードされたセグメントが再エンコードされるべきかどうかを前記複数のバッファ・モデルのうちの1つまたは複数と較べて決定すること、および
    前記第1のエンコードされたセグメントが再エンコードされるべきであると決定されると、前記第1のエンコードされたセグメントを再エンコードすることであって、前記第1のエンコードされたセグメントを再エンコードすることは、
    前記第1のエンコードされたセグメントを再エンコードし、第1の再エンコードされたセグメントを作成すること、
    前記第1のエンコードされたセグメントとは別に前記第1の再エンコードされたセグメントを格納すること、および
    前記第1の再エンコードされたセグメントを前記エンコードされたコンテンツとマージし、前記第1の再エンコードされたセグメントのバッファ・レベルおよびアクセス・ユニット情報を用いて前記エンコードされたコンテンツのバッファ・レベルおよびアクセス・ユニット情報を調整することを含む、前記ソース・コンテンツのエンコーディングをファイナライズすること
    を含む、再エンコードすること
    を備えることを特徴とする方法。
  2. 前記エンコードされたコンテンツの前記第1のエンコードされたセグメントが再エンコードされるべきかどうかを決定することは、前記エンコードされたコンテンツが前記複数のバッファ・モデルのうちの第1のバッファ・モデルに失敗するかどうかを決定することを備え、
    前記再エンコードすることは、前記エンコードされたコンテンツが第1のバッファ・モデルに失敗すると決定されると、前記第1のエンコードされたセグメントを再エンコードすることを備える
    ことを特徴とする請求項1に記載の方法。
  3. 前記エンコードされたコンテンツが、前記複数のバッファ・モデルの第2のバッファ・モデルに失敗することを識別すること、および
    前記第2のバッファ・モデルを、前記エンコードされたコンテンツに関連して無効化することをさらに備え、
    前記無効化は、前記第2のバッファ・モデルを、前記エンコードされたコンテンツに関連して無効として指定し、かつ/またはそのストリームについて有効であることが分かっているバッファ・モデルによって置換することを含むことを特徴とする請求項2に記載の方法。
  4. 前記第2のバッファ・モデルを無効化することは、前記第2のバッファ・モデルのパラメータを、前記エンコードされたコンテンツに関して有効であることが分かっているバッファ・モデルである第4のバッファ・モデルからのパラメータで置換することを備えることを特徴とする請求項3に記載の方法。
  5. 前記エンコードされたコンテンツの第2のセグメントを識別すること、および
    前記第2のセグメントを再エンコードし、ビットを解放すること
    をさらに備え、前記第1のエンコードされたセグメントを再エンコードすることは、前記第1のエンコードされたセグメントを再エンコードして、前記解放されたビットを利用することを備える
    ことを特徴とする請求項1に記載の方法。
  6. 第3のセグメントを識別すること、
    チャプタ・ポイントが前記エンコードされたコンテンツに挿入されるべきであると、前記第3のセグメントに関連して識別すること、および
    前記第3のセグメントを再エンコードし、チャプタ・ポイントを組み込むこと
    をさらに備えることを特徴とする請求項1に記載の方法。
  7. 前記第1のエンコードされたセグメントを評価することは、複数の別個のバッファ・モデルに従って前記第1のエンコードされたセグメントの部分を同時にデコードすることを備えることを特徴とする請求項1に記載の方法。
  8. 前記コンテンツをエンコードすることは、
    前記ソース・コンテンツの複数のセグメントを識別すること、
    前記ソース・コンテンツの前記複数のセグメントを分離すること、
    前記ソース・コンテンツの前記複数のセグメントを別々にエンコードし、エンコードされた分割されたセグメントを作ること、および
    前記エンコードされた分割された複数のセグメントをスプライスし、エンコードされたコンテンツ・ストリームを作ること
    を備えることを特徴とする請求項1に記載の方法。
  9. 前記ソース・コンテンツの複雑度を識別すること、および
    前記ソース・コンテンツの前記複数のセグメントの前記識別された複雑度に従ってバッファ・レベルを調整すること
    をさらに備えることを特徴とする請求項8に記載の方法。
  10. 前記ソース・コンテンツの時間相関を評価すること、および
    前記ソース・コンテンツの前記複数のセグメントを識別することが、識別された境界に従って前記セグメントを定義することを備えるように、前記ソース・コンテンツ内の前記境界を識別すること
    をさらに備えることを特徴とする請求項8に記載の方法。
JP2008520319A 2005-07-01 2006-06-30 マルチメディア信号エンコーディングに使用される方法、装置およびシステム Active JP5404038B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US69634905P 2005-07-01 2005-07-01
US60/696,349 2005-07-01
PCT/US2006/025844 WO2007005750A2 (en) 2005-07-01 2006-06-30 Method, apparatus and system for use in multimedia signal encoding

Publications (2)

Publication Number Publication Date
JP2009500951A JP2009500951A (ja) 2009-01-08
JP5404038B2 true JP5404038B2 (ja) 2014-01-29

Family

ID=37605103

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008520319A Active JP5404038B2 (ja) 2005-07-01 2006-06-30 マルチメディア信号エンコーディングに使用される方法、装置およびシステム

Country Status (5)

Country Link
US (2) US8175167B2 (ja)
EP (1) EP1908303A4 (ja)
JP (1) JP5404038B2 (ja)
CN (1) CN101253777A (ja)
WO (1) WO2007005750A2 (ja)

Families Citing this family (160)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8869061B1 (en) * 2003-08-29 2014-10-21 Microsoft Corporation User interface for searching an electronic document
US8170096B1 (en) * 2003-11-18 2012-05-01 Visible World, Inc. System and method for optimized encoding and transmission of a plurality of substantially similar video fragments
JP4210939B2 (ja) * 2004-12-10 2009-01-21 ソニー株式会社 画像記録装置および方法、並びにプログラム
US11843649B2 (en) * 2005-04-28 2023-12-12 DISH Technologies L.L.C. System and method of minimizing network bandwidth retrieved from an external network
US8422546B2 (en) * 2005-05-25 2013-04-16 Microsoft Corporation Adaptive video encoding using a perceptual model
AU2005334066A1 (en) * 2005-06-30 2007-01-11 Promim Pty Ltd A system and method for controlling transmission and display of video
WO2007005750A2 (en) * 2005-07-01 2007-01-11 Sonic Solutions Method, apparatus and system for use in multimedia signal encoding
US7612792B1 (en) * 2005-09-07 2009-11-03 Avaya Inc Method and apparatus for adaptive video encoding based on user perception and use
US8160160B2 (en) * 2005-09-09 2012-04-17 Broadcast International, Inc. Bit-rate reduction for multimedia data streams
US8218655B2 (en) 2005-09-19 2012-07-10 Maxim Integrated Products, Inc. Method, system and device for improving video quality through in-loop temporal pre-filtering
US8392151B1 (en) * 2005-09-28 2013-03-05 The Mathworks, Inc. Preview of an object in graphical modeling environments
US8630306B2 (en) * 2006-01-09 2014-01-14 At&T Intellectual Property I, L.P. Fast channel change apparatus and method for IPTV
US8503536B2 (en) * 2006-04-07 2013-08-06 Microsoft Corporation Quantization adjustments for DC shift artifacts
US8059721B2 (en) * 2006-04-07 2011-11-15 Microsoft Corporation Estimating sample-domain distortion in the transform domain with rounding compensation
US7995649B2 (en) 2006-04-07 2011-08-09 Microsoft Corporation Quantization adjustment based on texture level
US8130828B2 (en) * 2006-04-07 2012-03-06 Microsoft Corporation Adjusting quantization to preserve non-zero AC coefficients
US20070237237A1 (en) * 2006-04-07 2007-10-11 Microsoft Corporation Gradient slope detection for video compression
US8711925B2 (en) 2006-05-05 2014-04-29 Microsoft Corporation Flexible quantization
JP2008109637A (ja) * 2006-09-25 2008-05-08 Toshiba Corp 動画像符号化装置及びその方法
JP4325657B2 (ja) * 2006-10-02 2009-09-02 ソニー株式会社 光ディスク再生装置、信号処理方法、およびプログラム
US7559017B2 (en) * 2006-12-22 2009-07-07 Google Inc. Annotation framework for video
US8238424B2 (en) * 2007-02-09 2012-08-07 Microsoft Corporation Complexity-based adaptive preprocessing for multiple-pass video compression
US20080240257A1 (en) * 2007-03-26 2008-10-02 Microsoft Corporation Using quantization bias that accounts for relations between transform bins and quantization bins
US8498335B2 (en) 2007-03-26 2013-07-30 Microsoft Corporation Adaptive deadzone size adjustment in quantization
US8243797B2 (en) 2007-03-30 2012-08-14 Microsoft Corporation Regions of interest for quality adjustments
US8442337B2 (en) * 2007-04-18 2013-05-14 Microsoft Corporation Encoding adjustments for animation content
GB0708440D0 (en) * 2007-05-02 2007-06-06 Film Night Ltd Data transmission
WO2008142948A1 (ja) * 2007-05-23 2008-11-27 Nec Corporation 動画像配信システム、変換装置および動画像配信方法
US8331438B2 (en) * 2007-06-05 2012-12-11 Microsoft Corporation Adaptive selection of picture-level quantization parameters for predicted video pictures
CN102833620B (zh) * 2007-06-14 2015-06-03 汤姆森许可贸易公司 进行时间最优化编码的系统和方法
JP5095819B2 (ja) * 2007-06-14 2012-12-12 トムソン ライセンシング 時間最適化されたエンコードのためのシステムおよび方法
US8438301B2 (en) * 2007-09-24 2013-05-07 Microsoft Corporation Automatic bit rate detection and throttling
EP2208349A4 (en) * 2007-11-15 2011-05-11 Thomson Licensing SYSTEM AND METHOD FOR VIDEO CODING
WO2009067155A2 (en) * 2007-11-16 2009-05-28 Thomson Licensing System and method for encoding video
US20090161766A1 (en) * 2007-12-21 2009-06-25 Novafora, Inc. System and Method for Processing Video Content Having Redundant Pixel Values
US8750390B2 (en) * 2008-01-10 2014-06-10 Microsoft Corporation Filtering and dithering as pre-processing before encoding
US8345774B2 (en) * 2008-01-11 2013-01-01 Apple Inc. Hypothetical reference decoder
US8181197B2 (en) * 2008-02-06 2012-05-15 Google Inc. System and method for voting on popular video intervals
US8160132B2 (en) 2008-02-15 2012-04-17 Microsoft Corporation Reducing key picture popping effects in video
US8112702B2 (en) * 2008-02-19 2012-02-07 Google Inc. Annotating video intervals
JP5098043B2 (ja) * 2008-02-26 2012-12-12 株式会社メガチップス トランスコーダ
EP2101497A1 (en) * 2008-03-12 2009-09-16 Thomson Licensing Method and apparatus for transmitting an image in a wireless network
US8189933B2 (en) * 2008-03-31 2012-05-29 Microsoft Corporation Classifying and controlling encoding quality for textured, dark smooth and smooth video content
JP4539754B2 (ja) * 2008-04-11 2010-09-08 ソニー株式会社 情報処理装置及び情報処理方法
JP4582185B2 (ja) * 2008-04-22 2010-11-17 ソニー株式会社 情報処理装置及び情報処理方法
US8923385B2 (en) * 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8897359B2 (en) 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
US8566353B2 (en) * 2008-06-03 2013-10-22 Google Inc. Web-based system for collaborative generation of interactive videos
US9047236B2 (en) * 2008-06-06 2015-06-02 Amazon Technologies, Inc. Client side stream switching
ES2624910T3 (es) * 2008-06-06 2017-07-18 Amazon Technologies, Inc. Conmutación de secuencia de lado de cliente
US9167007B2 (en) * 2008-06-06 2015-10-20 Amazon Technologies, Inc. Stream complexity mapping
US9571856B2 (en) 2008-08-25 2017-02-14 Microsoft Technology Licensing, Llc Conversion operations in scalable video encoding and decoding
KR101559772B1 (ko) * 2008-10-16 2015-10-13 엘지전자 주식회사 단말기 및 그 제어 방법
JP5579731B2 (ja) * 2008-11-12 2014-08-27 トムソン ライセンシング 映像符号化方法、映像符号化装置及びコンピュータプログラム
US9143788B2 (en) * 2008-11-13 2015-09-22 Thomson Licensing Multiple thread video encoding using HRD information sharing and bit allocation waiting
US8676822B2 (en) * 2009-02-06 2014-03-18 Disney Enterprises, Inc. System and method for quality assured media file storage
US8826117B1 (en) 2009-03-25 2014-09-02 Google Inc. Web-based system for video editing
US8132200B1 (en) 2009-03-30 2012-03-06 Google Inc. Intra-video ratings
US9774818B2 (en) * 2009-04-24 2017-09-26 Level 3 Communications, Llc Media resource storage and management
TWI443535B (zh) * 2010-12-01 2014-07-01 Ind Tech Res Inst 視訊搜尋方法、系統及建立視訊資料庫的方法
US8805862B2 (en) * 2009-08-18 2014-08-12 Industrial Technology Research Institute Video search method using motion vectors and apparatus thereof
US8515933B2 (en) * 2009-08-18 2013-08-20 Industrial Technology Research Institute Video search method, video search system, and method thereof for establishing video database
US8635357B2 (en) * 2009-09-08 2014-01-21 Google Inc. Dynamic selection of parameter sets for transcoding media data
US8300703B2 (en) * 2009-09-22 2012-10-30 Texas Instruments Incorporated System and method for adaptively allocating resources in a transcoder
US8340191B2 (en) * 2009-09-25 2012-12-25 General Instrument Corporation Transcoder from first MPEG stream to second MPEG stream
US20110080944A1 (en) * 2009-10-07 2011-04-07 Vixs Systems, Inc. Real-time video transcoder and methods for use therewith
US9521178B1 (en) 2009-12-21 2016-12-13 Amazon Technologies, Inc. Dynamic bandwidth thresholds
US9992456B2 (en) * 2010-02-24 2018-06-05 Thomson Licensing Dtv Method and apparatus for hypothetical reference decoder conformance error detection
JP5295429B2 (ja) 2010-05-07 2013-09-18 日本電信電話株式会社 動画像符号化制御方法,動画像符号化装置および動画像符号化プログラム
BR112012028576A2 (pt) * 2010-05-12 2016-08-02 Nippon Telegraph & Telephone método de controle de codificação de vídeo, aparelho de codificação de vídeo, e programa de codificação de vídeo
US20130091301A1 (en) * 2010-06-08 2013-04-11 Gibby Media Group Inc. Systems and methods for real-time and on-demand multimedia streaming
EP2437458A1 (en) * 2010-09-30 2012-04-04 British Telecommunications Public Limited Company Content delivery
US8837601B2 (en) * 2010-12-10 2014-09-16 Netflix, Inc. Parallel video encoding based on complexity analysis
US9832540B2 (en) 2010-12-15 2017-11-28 Hulu, LLC Method and apparatus for hybrid transcoding of a media program
US8262001B2 (en) * 2010-12-30 2012-09-11 Mitsubishi Electric Research Laboratories, Inc. Method for physically marking objects using continuous functions
US9271005B2 (en) * 2011-02-24 2016-02-23 Vixs Systems, Inc. Multi-pass video encoder and methods for use therewith
MX2014000159A (es) 2011-07-02 2014-02-19 Samsung Electronics Co Ltd Metodo y aparato para la codificacion de video, y metodo y aparato para la decodificacion de video acompañada por inter prediccion utilizando imagen co-localizada.
US8924580B2 (en) * 2011-08-12 2014-12-30 Cisco Technology, Inc. Constant-quality rate-adaptive streaming
JP2014527778A (ja) 2011-08-29 2014-10-16 アイ.シー.ブイ.ティー リミテッド ビデオコンテンツシステムの制御
EP3179723B1 (en) 2011-09-09 2023-01-25 KT Corporation Method for deriving a temporal predictive motion vector, and apparatus using the method
US9277230B2 (en) * 2011-11-23 2016-03-01 Qualcomm Incorporated Display mode-based video encoding in wireless display devices
US9008177B2 (en) 2011-12-12 2015-04-14 Qualcomm Incorporated Selective mirroring of media output
WO2013111126A2 (en) * 2012-01-23 2013-08-01 I.C.V.T Ltd. Method and system for controlling video frame encoding
US9491475B2 (en) 2012-03-29 2016-11-08 Magnum Semiconductor, Inc. Apparatuses and methods for providing quantized coefficients for video encoding
US9538208B2 (en) * 2012-04-03 2017-01-03 Intel Corporation Hardware accelerated distributed transcoding of video clips
US10085024B2 (en) 2012-04-13 2018-09-25 Qualcomm Incorporated Lookup table for rate distortion optimized quantization
US9710307B1 (en) 2012-05-07 2017-07-18 Amazon Technologies, Inc. Extensible workflows for processing content
US9058645B1 (en) 2012-05-07 2015-06-16 Amazon Technologies, Inc. Watermarking media assets at the network edge
US9380326B1 (en) 2012-05-07 2016-06-28 Amazon Technologies, Inc. Systems and methods for media processing
US9497496B1 (en) 2012-05-07 2016-11-15 Amazon Technologies, Inc. Personalized content insertion into media assets at the network edge
US9483785B1 (en) 2012-05-07 2016-11-01 Amazon Technologies, Inc. Utilizing excess resource capacity for transcoding media
CN103428523B (zh) * 2012-05-22 2015-07-08 华为技术有限公司 评估视频质量的方法和装置
US9532080B2 (en) 2012-05-31 2016-12-27 Sonic Ip, Inc. Systems and methods for the reuse of encoding information in encoding alternative streams of video data
US9281011B2 (en) * 2012-06-13 2016-03-08 Sonic Ip, Inc. System and methods for encoding live multimedia content with synchronized audio data
US8756208B2 (en) * 2012-07-10 2014-06-17 International Business Machines Corporation Encoded data processing
US9282348B2 (en) * 2012-08-13 2016-03-08 Disney Enterprises, Inc. Content based partitioning of digital media content
US10051519B2 (en) 2012-08-27 2018-08-14 Qualcomm Incorporated Device and method for adaptive rate multimedia communications on a wireless network
US9247448B2 (en) 2012-08-27 2016-01-26 Qualcomm Incorporated Device and method for adaptive rate multimedia communications on a wireless network
JP2014068273A (ja) * 2012-09-26 2014-04-17 Olympus Imaging Corp 画像編集装置、画像編集方法、およびプログラム
KR101328199B1 (ko) * 2012-11-05 2013-11-13 넥스트리밍(주) 동영상 편집 방법 및 그 단말기 그리고 기록매체
US8928804B2 (en) * 2012-11-19 2015-01-06 Broadcom Corporation Managing encoder parameters for parallel transcoding
DE102013223304B4 (de) * 2012-11-19 2019-03-07 Avago Technologies International Sales Pte. Ltd. Verwalten von Kodiererparametern für ein paralleles Umkodieren
US9350990B2 (en) 2013-02-28 2016-05-24 Sonic Ip, Inc. Systems and methods of encoding multiple video streams with adaptive quantization for adaptive bitrate streaming
US9357210B2 (en) * 2013-02-28 2016-05-31 Sonic Ip, Inc. Systems and methods of encoding multiple video streams for adaptive bitrate streaming
US8970662B2 (en) * 2013-03-12 2015-03-03 Qualcomm Incorporated Output management for electronic communications
US9277373B2 (en) 2013-03-12 2016-03-01 Qualcomm Incorporated Output management for press-to-transmit communications
US9578333B2 (en) * 2013-03-15 2017-02-21 Qualcomm Incorporated Method for decreasing the bit rate needed to transmit videos over a network by dropping video frames
US9392286B2 (en) 2013-03-15 2016-07-12 Magnum Semiconductor, Inc. Apparatuses and methods for providing quantized coefficients for video encoding
US9661331B2 (en) 2013-03-18 2017-05-23 Vantrix Corporation Method and apparatus for signal encoding realizing optimal fidelity
US10609405B2 (en) 2013-03-18 2020-03-31 Ecole De Technologie Superieure Optimal signal encoding based on experimental data
US9338450B2 (en) 2013-03-18 2016-05-10 Ecole De Technologie Superieure Method and apparatus for signal encoding producing encoded signals of high fidelity at minimal sizes
CA2809731A1 (fr) * 2013-03-18 2014-09-18 Ecole De Technologie Superieure Adaptation de fichiers video sous contraintes de taille et de resolution
US20140321532A1 (en) * 2013-04-26 2014-10-30 Devadutta Ghat Techniques for coordinating parallel video transcoding
US10133635B2 (en) 2013-07-01 2018-11-20 International Business Machines Corporation Low-width vault in distributed storage system
US9501360B2 (en) * 2013-07-01 2016-11-22 International Business Machines Corporation Rebuilding data while reading data in a dispersed storage network
EP3033872B1 (en) 2013-08-13 2019-02-20 Beamr Imaging Ltd. Quality driven video re-encoding
JP5906227B2 (ja) * 2013-10-21 2016-04-20 キヤノン株式会社 画像形成装置、及びその制御方法並びにコンピュータプログラム
US20150172660A1 (en) * 2013-12-17 2015-06-18 Magnum Semiconductor, Inc. Apparatuses and methods for providing optimized quantization weight matrices
US9794575B2 (en) 2013-12-18 2017-10-17 Magnum Semiconductor, Inc. Apparatuses and methods for optimizing rate-distortion costs in video encoding
KR20150098435A (ko) * 2014-02-20 2015-08-28 삼성전자주식회사 멀티미디어 콘텐츠 처리 방법 및 장치
US20150281710A1 (en) * 2014-03-31 2015-10-01 Gopro, Inc. Distributed video processing in a cloud environment
US9888047B2 (en) * 2014-04-03 2018-02-06 Cisco Technology, Inc. Efficient on-demand generation of ABR manifests
US9685194B2 (en) 2014-07-23 2017-06-20 Gopro, Inc. Voice-based video tagging
US20160026874A1 (en) 2014-07-23 2016-01-28 Gopro, Inc. Activity identification in video
US9894130B2 (en) * 2014-09-23 2018-02-13 Intel Corporation Video quality enhancement
US10140379B2 (en) 2014-10-27 2018-11-27 Chegg, Inc. Automated lecture deconstruction
US10180861B2 (en) 2014-11-11 2019-01-15 Fair Isaac Corporation Stream schema resolution and stream tuple processing in a distributed stream-processing system
US9632847B2 (en) 2014-11-11 2017-04-25 Fair Isaac Corporation System and method for linearizing messages from data sources for optimized high-performance processing in a stream processing system
US9734870B2 (en) 2015-01-05 2017-08-15 Gopro, Inc. Media identifier generation for camera-captured media
CN105847722B (zh) * 2015-01-16 2019-04-12 杭州海康威视数字技术股份有限公司 一种视频存储方法和装置、读取方法和装置以及存取系统
US10051294B2 (en) * 2015-03-31 2018-08-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Compressed video buffering
CN104780367B (zh) * 2015-04-13 2018-05-01 浙江宇视科技有限公司 一种动态调整gop长度的方法和装置
US9894393B2 (en) 2015-08-31 2018-02-13 Gopro, Inc. Video encoding for reduced streaming latency
US10506235B2 (en) 2015-09-11 2019-12-10 Facebook, Inc. Distributed control of video encoding speeds
US10341561B2 (en) 2015-09-11 2019-07-02 Facebook, Inc. Distributed image stabilization
US10602153B2 (en) * 2015-09-11 2020-03-24 Facebook, Inc. Ultra-high video compression
US10375156B2 (en) 2015-09-11 2019-08-06 Facebook, Inc. Using worker nodes in a distributed video encoding system
US10602157B2 (en) * 2015-09-11 2020-03-24 Facebook, Inc. Variable bitrate control for distributed video encoding
US10499070B2 (en) 2015-09-11 2019-12-03 Facebook, Inc. Key frame placement for distributed video encoding
US10063872B2 (en) 2015-09-11 2018-08-28 Facebook, Inc. Segment based encoding of video
US10095696B1 (en) 2016-01-04 2018-10-09 Gopro, Inc. Systems and methods for generating recommendations of post-capture users to edit digital media content field
WO2017130183A1 (en) 2016-01-26 2017-08-03 Beamr Imaging Ltd. Method and system of video encoding optimization
EP3439232B1 (en) * 2016-03-31 2023-12-06 bitFlyer Blockchain, Inc. Transaction processing device, transaction processing method, and program for same
US10231001B2 (en) 2016-05-24 2019-03-12 Divx, Llc Systems and methods for providing audio content during trick-play playback
US9998769B1 (en) 2016-06-15 2018-06-12 Gopro, Inc. Systems and methods for transcoding media files
US10250894B1 (en) 2016-06-15 2019-04-02 Gopro, Inc. Systems and methods for providing transcoded portions of a video
US11157521B2 (en) * 2016-06-29 2021-10-26 Getac Technology Corporation Correlating multiple sources
US10469909B1 (en) 2016-07-14 2019-11-05 Gopro, Inc. Systems and methods for providing access to still images derived from a video
CN110115042B (zh) * 2016-12-29 2023-02-21 英国电讯有限公司 在网络中输送视频序列的方法、数据发送器
US10771789B2 (en) * 2017-05-19 2020-09-08 Google Llc Complexity adaptive rate control
US10674158B2 (en) * 2017-06-15 2020-06-02 Beamr Imaging Ltd Method and system of video coding optimization
US10402656B1 (en) 2017-07-13 2019-09-03 Gopro, Inc. Systems and methods for accelerating video analysis
US10979747B2 (en) * 2017-12-21 2021-04-13 Arris Enterprises Llc Statistical multiplexing system for variable bit rate encoding with constant bit rate encoder
US20200137134A1 (en) * 2018-10-31 2020-04-30 Ati Technologies Ulc Multi-session low latency encoding
US10972744B2 (en) * 2018-11-12 2021-04-06 Analog Devices International Unlimited Company Image scaling
US10911791B2 (en) * 2019-01-09 2021-02-02 Netflix, Inc. Optimizing encoding operations when generating a buffer-constrained version of a media title
US11277620B1 (en) * 2020-10-30 2022-03-15 Hulu, LLC Adaptive transcoding of profile ladder for videos
CN112738515B (zh) * 2020-12-28 2023-03-24 北京百度网讯科技有限公司 用于自适应量化的量化参数调整方法和装置
US11783866B2 (en) 2021-06-02 2023-10-10 Western Digital Technologies, Inc. Data storage device and method for legitimized data transfer
US11606553B1 (en) * 2022-07-15 2023-03-14 RiversideFM, Inc. Hybrid media recording

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2744095A (en) * 1994-06-17 1996-01-15 British Broadcasting Corporation, The Video compression
JP3019912B2 (ja) * 1994-07-22 2000-03-15 日本ビクター株式会社 画像データ編集装置
US5872598A (en) 1995-12-26 1999-02-16 C-Cube Microsystems Scene change detection using quantization scale factor rate control
JPH1098713A (ja) * 1996-09-20 1998-04-14 Sony Corp 映像信号切換装置
US5875304A (en) 1996-10-31 1999-02-23 Sensormatic Electronics Corporation User-settable features of an intelligent video information management system
US6192154B1 (en) * 1998-01-26 2001-02-20 International Business Machines Corporation Two-pass encoding method of digital motion video sequences for constant-or variable bit rate
US6522693B1 (en) * 2000-02-23 2003-02-18 International Business Machines Corporation System and method for reencoding segments of buffer constrained video streams
JP3840895B2 (ja) * 2000-11-22 2006-11-01 日本電気株式会社 動画像符号化データ変換装置及びその方法
MY134659A (en) * 2002-11-06 2007-12-31 Nokia Corp Picture buffering for prediction references and display
JP4003128B2 (ja) * 2002-12-24 2007-11-07 ソニー株式会社 画像データ処理装置および方法、記録媒体、並びにプログラム
US8406293B2 (en) * 2004-06-27 2013-03-26 Apple Inc. Multi-pass video encoding based on different quantization parameters
US20060233237A1 (en) * 2005-04-15 2006-10-19 Apple Computer, Inc. Single pass constrained constant bit-rate encoding
WO2007005750A2 (en) * 2005-07-01 2007-01-11 Sonic Solutions Method, apparatus and system for use in multimedia signal encoding

Also Published As

Publication number Publication date
CN101253777A (zh) 2008-08-27
EP1908303A4 (en) 2011-04-06
US20070002946A1 (en) 2007-01-04
US20120275512A1 (en) 2012-11-01
JP2009500951A (ja) 2009-01-08
US8175167B2 (en) 2012-05-08
WO2007005750A2 (en) 2007-01-11
WO2007005750A3 (en) 2007-08-30
EP1908303A2 (en) 2008-04-09
US8817889B2 (en) 2014-08-26

Similar Documents

Publication Publication Date Title
JP5404038B2 (ja) マルチメディア信号エンコーディングに使用される方法、装置およびシステム
US6724977B1 (en) Compressed video editor with transition buffer matcher
JP3361009B2 (ja) ビデオ符号化方法および速度量子化モデルを利用して符号化を行うシステム
JP3719933B2 (ja) 階層的ディジタル動画要約及び閲覧方法、並びにその装置
JP5332773B2 (ja) 画像処理装置および方法
JP3544852B2 (ja) 映像符号化装置
US20020024999A1 (en) Video encoding apparatus and method and recording medium storing programs for executing the method
US6642967B1 (en) Video data formatting and storage employing data allocation to control transcoding to intermediate video signal
KR100834322B1 (ko) 이미지 인코딩 장치, 화상 인코딩 방법 및 이미지 편집장치
JP3710820B2 (ja) オーディオエンコーダの数が低減されるオーディオ映像エンコードシステム
US20060233236A1 (en) Scene-by-scene digital video processing
US20060233245A1 (en) Selective reencoding for GOP conformity
JP4539754B2 (ja) 情報処理装置及び情報処理方法
US8311104B2 (en) Information processing apparatus and method, recording medium, and program
US7869688B2 (en) Recording apparatus
US20070263731A1 (en) Moving Picture Re-Encoding Apparatus, Moving Picture Editing Apparatus, Program, and Recording Medium
US8300701B2 (en) Offspeed playback in a video editing system of video data compressed using long groups of pictures
EP2112663A2 (en) Information processing apparatus and information processing method
EP2056299A2 (en) Moving picture encoding device, moving picture recording device, and moving picture reproducing device
JP5088215B2 (ja) 情報処理システム及び情報処理方法、並びにプログラム
JP2008072591A (ja) エンコード装置、エンコード方法、プログラム、記録媒体、および記録媒体製造方法
US20040042550A1 (en) Encoding system conversion apparatus and method for same
JP2008283663A (ja) 情報処理装置および情報処理方法、記録媒体、並びにプログラム
US8358702B2 (en) Information processing system and information processing method, and program
Overmeire et al. Constant quality video coding using video content analysis

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090616

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110816

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110819

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20111115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120828

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130507

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130807

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130909

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131001

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131029

R150 Certificate of patent or registration of utility model

Ref document number: 5404038

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250