AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
GVD

H.264 動画デコーダ(GVD)制御用ライブラリ

  • GVDはH.264ストリームのデコード機能を提供します。
    • 最大16コンテンツ同時再生します。
    • 最小64x32[px]の解像度に対応します。
    • 解像度720pの動画を同時に2ストリーム再生可能です。
  • 動画再生の他に、以下の機能を持ちます。
    • 一時停止、再開
    • 早送り
    • 早戻し
    • 頭出し(シーク)

 

  • 位置情報バッファについて
    • シーク(GVD_Seek) や早戻し(GVD_Rewind) を行う場合、位置情報バッファからシーク位置を取得します。
    • 位置情報バッファの内容は gvdPositionBuffer 型(IDRフレーム番号とストリームのオフセット位置)の羅列です。
      • 位置情報バッファはアプリケーション側で生成してください。
      • シーク先のフレームはIDRフレームである必要があります。
      • その他デコードに関する仕様は、H.264に準じます。
    • コンテキスト生成後、コンテキストがCLOSEの状態で GVD_SetPositionBuffer により登録を行ってください。
    • 位置情報バッファが未登録の状態で以下の動作は行えません。

 

  • 致命的エラー(FatalError)について
    • 非同期処理中にいずれかのコンテキストで復帰不可能なエラーが起きた場合、致命的エラー状態となります。
    • 致命的エラーが発生した場合、全てのコンテキストが処理を停止します。
    • 致命的エラーの発生は、 gvdInitializeParam の func_notify_fatalerror に登録したコールバックで通知されます。
    • 致命的エラーからの復帰手順は以下の通りです。
      1. 致命的エラーが通知される もしくは 強制停止の完了が致命的エラーで通知される。
      2. 全てのコンテキストで GVD_Close, GVD_DestroyContext でストリームを閉じ、コンテキストを破棄する。
      3. GVD_Finalize を呼び出し、GVDライブラリの終了処理を行う。
      4. GVDライブラリに渡した各種リソースを停止、開放する。
      5. GVDに対してソフトウェアリセットをかける。
      6. GVDの初期化手順をやり直す。

 

  • ユーザによる強制停止
    • ユーザアプリケーションの異常系処理の実装として、GVDを強制停止させることができます。
    • 強制停止の完了は、致命的エラーのコールバックとして通知されます。
      • コールバック内容については gvdFatalErrorInfo を参照してください
    • ユーザによる強制停止後は、致命的エラーと同様の復帰手順で復帰させることができます。
    • 強制停止に関しては次のAPIを参照してください: GVD_ForcedShutdown

 

  • 入力するストリームについて
    • 入力できるストリーム形式は「Byte stream format」です。
    • ストリーム終端には、必ず「5 Byte以上の"00h"」を入力してください。
    • コンテンツの解像度は水平64px、垂直32pxの倍数である必要があります。
    • 検証済みの規格解像度は次の通りです:SQCIF, QCIF, QVGA, 525 SIF, CIF, 525 HHR, 625 HHR, VGA, 525 4SIF, 525 SD, 4CIF, 625 SD, SVGA, XGA, 720p HD
    • 同時再生数は最大16コンテンツです。ただし、コンテキストの生成は最大32コンテキストまで可能です。

制限事項

  1. GVDライブラリは、以下のメモリ領域を占有します。
    • 各先頭アドレスの設定が必要になります。
      • GVD占有致命的エラー管理メモリ領域
        • GVD_SetFatalErrorAddress にて設定
        • サイズ:4Byte キャッシュ:非キャッシュ
      • GVD占有メモリ領域
        • GVD_SetOccupyMemoryAddress にて設定
        • サイズ:16KByte キャッシュ:非キャッシュ
        • 設定するアドレスは 4[KB] 境界である必要があります。
  2. GVDライブラリはタイマのCH7を占有します。
  3. GVDライブラリはシステムレジスタ割り込みを2本(INT[2], INT[3])占有します。
  4. 本ライブラリは単純なH.264ストリームデコード機能を提供します。コンテナ形式のファイルを直接再生することはできません。
  5. コンテンツの最小解像度は水平64px、垂直32pxです。
  6. 同時再生数は最大16コンテンツです。ただし、コンテキストの生成は最大32コンテキストまで可能です。
  7. GVDが使用する各メモリには境界条件があります。各メモリの仕様に従って実装してください(GVD使用メモリ一覧)。
  8. GVDが使用する各メモリ領域は、全てキャッシュ無効である必要があります。
  9. YCbCr 4:0:0フォーマット(グレイスケール)は非対応です。
  10. ハードウェア仕様でタイムコードを含むストリームの入力に対応していますが、本ライブラリでは当該機能は非対応となります。

 

対応解像度 

 動作検証済みの規格解像度は以下の通りです。 

 SQCIF, QCIF, QVGA, 525 SIF, CIF, 525 HHR, 625 HHR, VGA, 525 4SIF, 525 SD, 4CIF, 625 SD, SVGA, XGA, 720p HD

初期化シーケンス(図をクリックして拡大) 

 

<シーケンス説明> 

1. GVDライブラリに与えるパラメータを設定。「GVD_InitInitializeParam」 

2. ワークメモリサイズを算出。「GVD_GetRequiredMemorySize」 

3. ワークメモリを設定。「GVD_SetWorkMemory」 

4. GVDライブラリの初期化。「GVD_Initialize」 

 

コンテキスト生成シーケンス(図をクリックして拡大) 

 

<シーケンス説明> 

1. コンテキストを生成。「GVD_CreateContext」 

2. デコード用ヒープ領域を設定。「GVD_SetOutputHeap」 

3. 位置情報バッファを設定。「GVD_SetPositionBuffer」 ※シークや早戻し動作を行わない場合は省略可能。 

4. コールバック設定パラメータを初期化。「GVD_InitCallbackInfo」 

5. コールバック関数を設定。「GVD_SetCallbackFunctions」 

6. コールバック関数の引数を設定。「GVD_SetCallbackParams」 

※複数コンテンツを再生する場合は、各コンテンツに対して上記処理を行ってください。 

 

内蔵ストリーマを使用した再生シーケンス(図をクリックして拡大) 

 

<シーケンス説明> 

1. 専用スレッドで GVD_Execute を定期的に呼び出します。 

2. 動画ファイルオープン&ドライバ接続を行います。「GVD_OpenFile」 

3. 接続完了でコールバック(connect_done)が呼ばれます。 

4. 予め出力バッファを供給しておきます。「GVD_PutOutputBuffer」 

5. 出力バッファの供給が受け付けられるとコールバック(put_output_buffer_done)が呼ばれます。 

6. 動画再生を開始します。「GVD_Play」 

7. 再生開始が受け付けられるとコールバック(play_accepted)が呼ばれます。 

8. 出力バッファにフレームデータが格納されるとコールバック(commit_output_buffer)が呼ばれます。 

9. 出力バッファを供給します。「GVD_PutOutputBuffer」 

10. 出力バッファの供給が受け付けられるとコールバック(put_output_buffer_done)が呼ばれます。 

11. 出力バッファにフレームデータが格納されるとコールバック(commit_output_buffer)が呼ばれます。 

12. ストリームの終端まで出力するとコールバック(decode_stream_end)が呼ばれます。 

※GVDライブラリ内蔵ストリーマを使用せず、 GVD_PutInputBuffer による入力バッファ供給を行う場合は GVD_OpenFile の代わりに GVD_Connect を使用してください。 

 

GVDを使用した動画再生の一例(図をクリックして拡大) 

動画再生を行うアプリケーションの全体的なシーケンス例です。 

 

名前 
説明 
H.264ストリームのデコード機能を提供します。 
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.