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

パイプラインの実行制御

Syntax
C++
int32_t AG903_PgpMgrExecPipeline(void * handle, uint32_t cmd);
引数 
説明 
void * handle 
[in] 実行するパイプラインハンドルまたはフレーム間演算ハンドルを指定します。 
uint32_t cmd 
[in] PGPパイプラインコマンド を指定します。 

実行結果

返値の詳細 
説明 
正常終了 
-AG903_EINVAL 
handleに不正な値が指定された場合
cmdに不正な値が指定された場合
パイプラインが物理的なパイプラインに割り当てられていない場合 
-AG903_EBUSY 
他のパイプラインハンドルが実行するパイプラインで現在処理中の場合
パイプラインのコマンドキューに空きが無い場合、コマンドを受けつける状態では無い場合 

パイプラインの実行制御を行います。  

以下のエラーチェックが問題無い場合、実行します。 

・割り当てが行われていないパイプラインハンドルが指定されているかどうか 

・フレーム間演算ハンドルの場合は、マスタ側のパイプラインハンドルとスレーブ側パイプラインハンドルが共に割り当てられているか 

・実行するパイプラインが現在処理中かどうか 

・1ショットコマンドの場合、パイプラインのコマンドキューに空きがあるかどうか

入力ソースがVRAM入力の場合、本関数実行後に AG903_PgpMgrExecVRAMInput 関数を実行してください。 

ヒストグラムを使用する場合、本関数実行前に AG903_PgpMgrExecHistogram 関数を実行してください。 

ラベリングを使用する場合、本関数実行前に AG903_PgpMgrExecLabeling 関数を実行してください。

1: int32_t AG903_PgpMgrExecPipeline(void *handle, uint32_t cmd) 2: { 3: uint32_t id; 4: 5: if (handle == NULL) { 6: return -AG903_EINVAL; 7: } 8: 9: 10: id = ((AG903_PgpMgrPipelineHandle *)handle)->id; 11: if ((id != AG903_PGP_MGR_PIPELINE_HANDLE_ID) && (id != AG903_PGP_MGR_FRAME_CALC_HANDLE_ID)) { 12: return -AG903_EINVAL; 13: } 14: 15: switch (cmd) { 16: case AG903_PGP_MGR_CMD_NONE: 17: case AG903_PGP_MGR_CMD_EXEC: 18: case AG903_PGP_MGR_CMD_EXEC_CONTINUE: 19: case AG903_PGP_MGR_CMD_TRIG: 20: case AG903_PGP_MGR_CMD_TRIG_CONTINUE: 21: case AG903_PGP_MGR_CMD_IDLE: 22: case AG903_PGP_MGR_CMD_RESET_TIMESTAMP_CNT: 23: case AG903_PGP_MGR_CMD_RESET_FRAME_CNT: 24: case AG903_PGP_MGR_CMD_RESET_INTR_CNT: 25: case AG903_PGP_MGR_CMD_FORCE_QUIT: 26: break; 27: default: 28: return -AG903_EINVAL; 29: } 30: 31: if (id == AG903_PGP_MGR_PIPELINE_HANDLE_ID) { 32: AG903_PgpMgrPipelineHandle *p = (AG903_PgpMgrPipelineHandle *)handle; 33: 34: if (p->is_assign == false) { 35: return -AG903_EINVAL; 36: } 37: 38: return PgpMgrExecPipelineHandle(p, cmd); 39: } else { 40: AG903_PgpMgrFrameCalcHandle *f = (AG903_PgpMgrFrameCalcHandle *)handle; 41: AG903_PgpMgrPipelineHandle *master = (AG903_PgpMgrPipelineHandle *)f->master_handle; 42: 43: if (master->is_assign == false) { 44: return -AG903_EINVAL; 45: } 46: 47: return PgpMgrExecFrameCalcHandle(f, cmd); 48: } 49: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.