1

組み込み Linux/MIPS デバイス用の Qt アプリケーションを開発しています。これまでのところ、デバイスで Qt アプリケーションを実行することができました。次に、ビデオの上にオーバーレイを作成する必要があります。ハードウェアは 4 つのオーバーレイ ウィンドウを提供しますが、OpenGL はサポートしていません。

これまでに試した:

  1. ビデオの上にオーバーレイを作成QStackedLayoutして作成しようとしました。QGraphicsViewただし、オーバーレイのウィジェットはユーザーのクリックに応答しますが、オーバーレイは黒く表示されます。
  2. 複数のフレームバッファに直接アクセスしようとしました。/dev/fb0にはアクセスできますが、/dev/fb123にはアクセスできません。
  3. ダイアログとプッシュボタンを備えた簡単なQtアプリケーションを作成してみました。このコマンドを使用して組み込みデバイスで実行してみました./<appname> -display directfb:/dev/fb1:2。しかし、/dev/fb1を開くことができません。

質問:

  • LCD コントローラが提供するオーバーレイ ウィンドウを使用するにはどうすればよいですか?
  • QT が提供する directfb プラグインを使用して、その OpenGL サポートを利用することは可能ですか?
  • /dev/fb1を使用できるようにするには、ユーザー空間に明示的にマップする必要がありますか?

これに関する緊急の助けが必要です。

4

3 に答える 3

2

最後にこれが機能しました。フレームバッファにアクセスできるインターフェイスを見つけることができました。

  • 次に、-display スイッチを使用して、Qt アプリの出力をオーバーレイ ウィンドウ用のフレームバッファに送りました。使用された正確なコマンドは./app-name -display Linuxfb:/dev/fb2:enable=1でした。
  • フレームバッファ /dev/fb2 のアルファモードも有効にしました。これは、以下のビデオ再生で示されています。
于 2011-12-12T09:55:25.167 に答える
0

Qt を使用する前に、ハードウェア オーバーレイが Linux カーネルでどのようにサポートされているか、およびこれらのオーバーレイを使用するためにカーネルが提供するユーザー空間インターフェイスを理解する必要があります。一般に、フレームバッファとしてアクセスできるのは 1 つのオーバーレイだけであり、ビデオ用の他のオーバーレイは Video4Linux 出力デバイスとしてアクセスできます。しかし、実際には、ハードウェアが何であるか、およびこのハードウェアで Linux サポートがどのように行われているかに依存します。

于 2011-11-15T20:47:21.480 に答える
0

私の答えは、実際にはqtについてではなく、ハードウェアレイヤーについてです。ハードウェアがオーバーレイをサポートしている場合、これは directfb が複数のハードウェア レイヤーをサポートしていることを意味します。fb1,fb2... を使用しようとすると失敗します。これは、fb ドライバーが 1 つしかなく、それが directfb によって使用されており、直接 fb ではなく directfb を使用する必要があるためです。まず最初に、hw がプライマリだけでなく追加の hw レイヤー (サーフェス) を本当にサポートしているかどうかを確認することをお勧めします。たとえば、このコールバックを設定する単純な directfb アプリを作成できます。directfb インターフェイスの初期化後、コアはコールバックを呼び出します。提示されたすべてのハードウェアレイヤー(サーフェス)に対して、その機能を引数として使用します。とにかく覚えていませんが、Qtは常にプライマリサーフェスを使用していると思います。

于 2011-11-16T08:59:32.980 に答える