RK3588 MPP、RGA、DRM、QT の RGA

        前の MPP デコードで述べたように、デコードされたフレームを取得するときに、同時に表示する必要があるビデオのチャネルが複数ある場合、チャネルの数がそれほど多くない場合は、それらを異なるレイヤーに表示できますが、動画 レイヤーには制限がありますので、この際、これらの動画を 1 つの動画に結合してレイヤー上に表示する必要がありますが、この章では主に RGA を使って複数の動画を 1 つのフレームに結合してレイヤー上に表示する方法について説明します。

        RK の RGA は、ハードウェア アクセラレーションを使用してグラフィックス処理を実装するため、非常に高速です。具体的な RGA 情報については、RK が提供する RGA に関する関連ドキュメントを参照してください。この記事では、複数のビデオ フレームを 1 つのフレームに結合して出力する方法を示すコード例のみを提供します。

        まず、表示したい画面サイズの MppFrame*dstFrm を申請し、この dstFrm 上に画面上の異なる位置に表示する必要がある複数のフレームを混合し、最後に混合したフレームを DRM に出力します。

1. デコーダからフレーム情報、hor_stride、ver_stride、width、height を取得します。srcFrm はデコーダから取得したフレームです。

RK_U32 hor_stride = mpp_frame_get_hor_stride(*srcFrm);

RK_U32 ver_stride = mpp_frame_get_ver_stride(*srcFrm);
width = mpp_frame_get_width(*srcFrm);
高さ = mpp_frame_get_height(*srcFrm);

2. srcFrm と dstFrm を rga 構造体に関連付けます

rga_info_t dst_info;
memset(&dst_info,0,sizeof(rga_info_t));
dst_info.fd = mpp_buffer_get_fd(mpp_frame_get_buffer(*dstFrm));
                    

おすすめ

転載: blog.csdn.net/dreamliweiming/article/details/131000009