Xビデオ動き補償


X-Video_Motion_Compensation
X-Video Motion Compensation(XvMC)は、X Window SystemのXビデオ拡張(Xv)の拡張です。XvMC APIを使用すると、ビデオプログラムはビデオデコードプロセスの一部をGPUビデオハードウェアにオフロードできます。理論的には、このプロセスはバス帯域幅の要件も削減するはずです。現在、XvMCによってGPUにオフロードされるサポートされている部分は、MPEG-2ビデオの動き補償(mo comp)と逆離散コサイン変換(iDCT)です。XvMCは、mo comp、iDCT、およびVLDのオフロードデコードもサポートします(より一般的に「スライスレベル加速度」として知られている「可変長復号」)だけでなく用MPEG-2だけでなく、MPEG-4 ASPの上のビデオVIAユニクロ(S3グラフィッククロムシリーズ)ハードウェア。
XvMCは、Microsoft Windows DirectX Video Acceleration(DxVA)APIに相当する最初のUNIXでした。XvMCを利用することが知られている人気のあるソフトウェアアプリケーションには、MPlayer、MythTV、xineなどが

コンテンツ
1 デバイスドライバ
1.1 ハードウェアメーカー
1.1.1 Nvidia
1.1.2 経由
1.1.3 インテル
1.1.4 ATI / AMD
1.1.5 Matrox
1.1.6 S3
2 XvMCAPIの技術概要
2.1 XvPort 2.2 XvMCContext 2.3 XvMCSurfaces 2.4 ビデオパイプライン 2.5 レンダリング 2.62.6 XvMCSubpictures
3 ソフトウェアサポート
4 加速する可能性のあるプロセス
5 現在の制限
6 も参照してください
7 参考文献
8 外部リンク

デバイスドライバ
XvMCビデオアクセラレーションが可能な各ハードウェアビデオGPUには、これらの機能を有効にするためのX11ソフトウェアデバイスドライバーが必要です。
ハードウェアメーカー編集

Nvidia
現在、3つのX11 Nvidiaドライバーが利用可能です:nvと呼ばれるNvidiaによって維持されている2Dのみのオープンソースで難読化されたドライバー、Nvidiaによる独自のバイナリドライバー、およびLinuxコミュニティによって開発されたバイナリドライバーのリバースエンジニアリングに基づくオープンソースドライバーヌーボー。NouveauはXvMCのサポートを追求しておらず、 2D nvドライバーはXvMCをサポートしておらず、Nvidiaによる公式のプロプライエタリバイナリドライバーは、GeForce 7000シリーズまでのハードウェアでのMPEG-2オフロード(mo compおよびiDCT)のみをサポートしています。

経由
VIAは、一部のVIA Unichrome(S3 Graphics Chromeシリーズ)ハードウェア用のオープンソースデバイスドライバーを提供し、MPEG-2およびMPEG- 4ASPビデオのオフロードをサポートします。VLDレベルのデコードのおかげで、VIAは、iDCTまたはmocompレベルのみをサポートするGPUよりもはるかに多くのデコードタスクをCPUからオフロードします。すべてのデバイスがサポートされているわけではなく、他にもいくつかの注意点があることに注意して t

インテル
Intelは、Intelの8xx / 9xxシリーズの統合グラフィックスチップでMPEG-2オフロード(mo compおよびiDCT)をサポートする公式のオープンソースデバイスドライバーを提供しています。

ATI / AMD
ATIは、Rage 128 GPUを搭載したグラフィックボードでMPEG2アクセラレーションを提供した最初のメーカーですが、その使用方法に関するドキュメントを提供したことはありません。したがって、XvMCは利用できず、おそらく利用できないでしょう。XvMCは、実験レベルで8.10以降のCatalystドライバーによってRadeon -4000カード(UVDを搭載)でサポートされています(つまり、「箱から出して」動作しません。)(X-Videoビットストリームも参照)加速)。他のATI / AMDハードウェアでの動き補償のサポートは、将来的に計画されています。(現在、すべてのハードウェアがiDCTおよびmo compレベルでMPEG-2アクセラレーションをサポートしています)。

Matrox
MatroxハードウェアでXvMCをサポートするデバイスドライバーはありません(ただし、Matrox ParheliaハードウェアはmocompレベルでMPEG-2アクセラレーションをサポートしています)。

S3
S3によるバイナリデバイスドライバーは、Chrome 20GPUの最初の2.0.16ドライバーでのMPEG-2オフロードのみをサポートします。

XvMCAPIの技術概要
これは、X-Vxvideoideoモーション補正-API仕様v。1.0 からのものです。

XvPort
XvMCは、Xビデオ拡張機能(Xv)を拡張し、XvPortの使い慣れた概念を利用します。ポートには、Xvを介して設定および照会できる属性がXvMCでは、ポートで使用するためにハードウェア動き補償コンテキストを作成することもできます。XvImagesをサポートするポート(つまり、Xvバージョン2.2 API補遺で説明されている「XV_IMAGE」ポートエンコーディングを使用するポート)は、サポートするXvMCSurfaceタイプのリストを照会できます。XvMCSurfaceタイプをサポートしている場合は、そのポート用にXvMCContextを作成できます。

XvMCContext
XvMCContextは、動き補償パイプラインの状態を記述します。個々のXvMCContextは、単一のポート、サーフェスタイプ、動き補償タイプ、幅と高さの組み合わせで使用するために作成できます。たとえば、720 x 480 4:2:0サーフェスでMPEG-2動き補償を行う特定のポートのコンテキストが作成される場合がコンテキストが作成されると、それを参照すると、ポート、サーフェスタイプ、サイズ、および動き補償タイプが示されます。コンテキストは「直接」または「間接」の場合が間接的なコンテキストの場合、Xディスプレイサーバーは、クライアントから渡されたデータを使用してすべてのビデオをレンダリングします。直接コンテキストの場合、クライアントライブラリは、Xディスプレイサーバーとの対話をほとんどまたはまったく行わずにビデオをレンダリングします。

XvMCSurfaces
XvMCSurfacesは、動き補償ハードウェアがレンダリングできるバッファーです。バッファ自体のデータはクライアントからアクセスできず、ハードウェア固有の形式で保存される場合が特定のコンテキストで使用するために、任意の数のバッファーを作成できます(リソースが許す限り)。

ビデオパイプライン
XvMCは、ビデオパイプラインの2つの場所のいずれかから開始するビデオアクセラレーションを提供します。「動き補償」レベルと呼ばれる最初のポイントから始まる加速は、動き補償が適用される場所での逆量子化とIDCTの後に始まります。「IDCT」レベルと呼ぶ2番目のポイントは、逆量子化の直後のIDCTの前から始まります。

レンダリング
レンダリングは、動き補償用のターゲットXvMCSurfaceと最大2つの参照XvMCSurface、8×8ブロックのバッファー、および動き補償ベクトルとともに8×8ブロックを使用してデータを構築する方法を説明するコマンドバッファーをライブラリに提示することによって行われます。 XvMCSurfaceをターゲットにします。パイプラインがiDCTレベルで開始すると、Xvは動き補償を実行する前にブロックに対してIDCTを実行します。XvMCSurfaceの一部を任意のスケーリングでドローアブルにコピー/オーバーレイする機能が提供されています。

XvMCSubpictures
XvMCSubpicturesは、ターゲットサーフェスとブレンドできる個別のサーフェスです。コンテキストで使用するために、任意の数のXvMCSubpictureを作成できます(リソースが許す限り)。「バックエンド」と「フロントエンド」の両方のサブピクチャの動作がサポートされています。

ソフトウェアサポート
XvMCアクセラレーションは次の場所でサポートされています。 MPlayer MythTV(XvMCのサポートは0.25で削除されました)
Xine

加速する可能性のあるプロセス
XvMCは現在、動き補償(mo comp)と逆離散コサイン変換(iDCT)(およびVIA Unichrome GPUの可変長デコード)のハードウェアアクセラレーションのみをサポートしていますが、追加のビデオデコードプロセスを最新のGPUに渡すことができます。 GPUフラグメントプログラムを介して加速されます。XvMCは将来拡張され、VDPAU、XvBA、VAAPIなどの新しい競合するハードウェアビデオアクセラレーションAPIと同じプロセスをサポートする可能性が
動き補償(mo comp)
逆離散コサイン変換(iDCT)
逆テレシネ3:2および2:2プルダウン補正
逆修正離散コサイン変換(iMDCT)
インループ非ブロックフィルター
フレーム内予測
逆量子化(IQ)
可変長デコード(VLD)、より一般的にはスライスレベルアクセラレーションとして知られています
時空間インターレース解除および自動インターレース/プログレッシブソース検出
ビットストリーム処理(CAVLC / CABAC)

現在の制限
機能との機能の全て一致していない他にDXVA(あるマイクロソフト同等のAPI用のWindowsを)、および以外のビデオフォーマットのサポート不足MPEG-2からLinuxデバイスドライバでのIntelとNVIDIA、XvMC API仕様バージョン1.0 現在、これらの他の制限も
XvMCで機能するインターレース解除方法はBOBとonefieldだけです。
ピクチャーインピクチャー(PiP)はXvMCでは機能しません。
ビデオをフレームごとにステップスルーすると、XvMCでアーティファクトが発生する可能性が
XvMCをアクティブにすると、ビデオの編集は困難または不可能になります。
XvMCAPIのネットワーク透過性の欠如
クライアントアプリケーションが、使用する必要のあるクライアント側ライブラリ(つまり、統合ラッパーライブラリ)から完全に独立している機能が不足しています。
プロジェクトVA APIは、現代のGPUのビデオアクセラレーション機能をサポートする、より近代的なビデオアクセラレーションAPIを開発する進行中です。

も参照してください
Xビデオ拡張機能(一般に単に「XVideo」または「Xv」と呼ばれます)
Xウィンドウシステム(一般に単に「X11」または「X」と呼ばれます)
MIT-SHM -X11用のMIT共有メモリ拡張
DirectX Video Acceleration(DxVA)API – XvMCと同等のMicrosoft Windows
ビデオアクセラレーションAPI(VA API)
OpenMAX IL(オープンメディアアクセラレーションの統合レイヤー) -からロイヤリティフリーのクロスプラットフォームメディア抽象化APIクロノスグループ
Xビデオビットストリームアクセラレーション(XvBA)
VDPAU(Unix用のビデオデコードおよびプレゼンテーションAPI)
分散コーデックエンジン(libcde)は、OMAPベースの組み込みシステムのビデオコーデックエンジン用のTexas InstrumentsAPIです。
ビデオデコードアクセラレーションFrameworkがあるアップルInc.sのハードウェアアクセラレーションにH.264のデコードするためのAPIのMac OS X
VideoToolboxはからのAPIであるアップル社のハードウェアアクセラレーションにデコードするためのApple TVとのMac OS X 10.05以降。当初は文書化されていませんでしたが、Appleはその後文書化をリリースしました。
OpenVideo Decode(OVD)–AMDの新しいオープンクロスプラットフォームビデオアクセラレーションAPI 。

参考文献
^ nouveauWiki-機能マトリックス
^ 「アーカイブされたコピー」。2015年9月26日にオリジナルからアーカイブされました。
^ IntelのLinuxグラフィックスドライバー-i810-Intel8xx統合グラフィックスチップセット
^ AMDのXビデオビットストリームアクセラレーション// phoronix、2008年10月28日
^ X-Videoの動き補償- 。API仕様V 1.0 アーカイブで2007年5月15日、ウェイバックマシン
^ MythTV0.25リリースノート
^ XvMC API仕様バージョン1.0 アーカイブで2007年5月15日、ウェイバックマシン
^ freedesktop.org-ソフトウェア/ vaapi
^ https://web.archive.org/web/20150305200949/http://www.tuaw.com/2011/01/20/xbmc-for-ios-and-atv2-now-available/ XBMC for iOS and Appleテレビが利用可能になりました
^ 「VideoToolbox-AppleDeveloperDocumentation」。development.apple.com 。
^ 「アーカイブされたコピー」(PDF)。2011年4月9日にオリジナル(PDF)からアーカイブされました。
OpenVideo Decode(OVD)API

外部リンク
X.Org Foundation
XFree86 Project、Inc。 freedesktop.org ユニクロームプロジェクト
MythTVのwikiのXvMC