1: int32_t AG903_PgpMgrGetPipelineHandle(int32_t num,
AG903_PgpMgrPipelineHandle **handles)
2: {
3:
int i, j;
4:
5:
6:
if (PgpContext.pipeline_time_sharing_enable ==
true) {
7:
if ((num + PgpContext.num_pipeline_handles) >
AG903_PGP_MGR_MAX_PIPELINE_HANDLE) {
8:
return -
AG903_EINVAL;
9: }
10: }
else {
11:
if ((num + PgpContext.num_pipeline_handles) >
AG903_PGP_MGR_PIPELINE_NUM) {
12:
return -
AG903_EINVAL;
13: }
14: }
15:
16:
if (handles == NULL) {
17:
return -
AG903_EINVAL;
18: }
19:
20:
21:
for (i = 0; i < num; i++) {
22:
for (j = 0; j <
AG903_PGP_MGR_MAX_PIPELINE_HANDLE; j++) {
23:
if (PgpContext.pipeline_handles[j].is_used ==
false) {
24:
25: PgpMgrInitPipelineHandle(&PgpContext.pipeline_handles[j]);
26:
27: PgpContext.pipeline_handles[j].is_used =
true;
28: PgpContext.pipeline_handles[j].id =
AG903_PGP_MGR_PIPELINE_HANDLE_ID;
29: handles[i] = &PgpContext.pipeline_handles[j];
30:
break;
31: }
32: }
33: }
34:
35:
36:
if (PgpContext.num_pipeline_handles == 0) {
37: PgpMgrSetIntr();
38: }
39: PgpContext.num_pipeline_handles += num;
40:
return AG903_ENONE;
41: }