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

パイプラインハンドルまたはフレーム間演算ハンドルを物理的なパイプラインに割り当て

Syntax
C++
int32_t AG903_PgpMgrAssignPipeline(void * handle);
引数 
説明 
void * handle 
[in] 割り当てを行なうパイプラインハンドルまたはフレーム間演算ハンドルを指定します。 

パイプライン番号、もしくはエラー

返値の詳細 
説明 
パイプライン番号 
割り当て成功時 
-AG903_EINVAL 
handleに不正な値が指定された場合
割り当てに失敗した場合
入力ソースが未設定のハンドルが指定された場合 

指定されたパイプラインハンドル、またはフレーム間演算ハンドルの設定値を確認して実行可能なパイプラインを割り当てます。  

パイプラインの割り当ては、「レーム保存パイプライン」 > 「入力画像処理パイプライン」 > 「演算処理パイプライン」の順に行われます。 

詳しくは「PGPパイプライン番号」を参照してください。 

入力ソースがVRAMの場合は、VRAM入力の割り当ても行います。 

VRAMのポートは2本ありますので、空いているポートをアサインします。 

指定されたハンドルがフレーム間演算ハンドルの場合、マスタ/スレーブで処理が異なります。 

マスタ : 通常のパイプライン割り当てを行います。 

スレーブ : 必ず演算処理パイプラインを割り当てます。 

また、スレーブがVRAM入力の場合は、マスタ側のパイプラインハンドルの割り当てにより決定されます。

時分割動作無効時は同じ物理パイプラインに対して複数のハンドルを割り当てることは出来ません。

1: int32_t AG903_PgpMgrAssignPipeline(void *handle) 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: if (id == AG903_PGP_MGR_PIPELINE_HANDLE_ID) { 16: AG903_PgpMgrPipelineHandle *p = (AG903_PgpMgrPipelineHandle *)handle; 17: 18: if (p->is_assign == true) { 19: return -AG903_EINVAL; 20: } 21: 22: if (p->input_handle == NULL) { 23: return -AG903_EINVAL; 24: } 25: 26: return PgpMgrAssignPipelineHandle(p); 27: } else { 28: AG903_PgpMgrFrameCalcHandle *f = (AG903_PgpMgrFrameCalcHandle *)handle; 29: 30: if (f->master_handle->is_assign == true) { 31: return -AG903_EINVAL; 32: } 33: 34: if (f->master_handle->input_handle == NULL) { 35: return -AG903_EINVAL; 36: } 37: 38: if (f->slave_pipeline == true) { 39: AG903_PgpMgrPipelineHandle *slave = (AG903_PgpMgrPipelineHandle *)f->slave_handle; 40: if (slave->input_handle == NULL) { 41: return -AG903_EINVAL; 42: } 43: } 44: 45: return PgpMgrAssignFrameCalcHandle(f); 46: } 47: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.