| 774 | } |
| 775 | |
| 776 | void daliGetExecutorMetadata(daliPipelineHandle_t pipe_handle, daliExecutorMetadata **operator_meta, |
| 777 | size_t *operator_meta_num) { |
| 778 | dali::Pipeline* pipeline = (*pipe_handle)->pipeline.get(); |
| 779 | auto returned_meta = pipeline->GetExecutorMeta(); |
| 780 | *operator_meta_num = returned_meta.size(); |
| 781 | *operator_meta = static_cast<daliExecutorMetadata*>(malloc(sizeof(daliExecutorMetadata) * |
| 782 | returned_meta.size())); |
| 783 | |
| 784 | int i = 0; |
| 785 | for (const auto &stat : returned_meta) { |
| 786 | auto op_name_size = stat.first.size(); |
| 787 | auto &op_meta = (*operator_meta)[i]; |
| 788 | op_meta.operator_name = static_cast<char*>(malloc(sizeof(char) * (op_name_size + 1))); |
| 789 | stat.first.copy(op_meta.operator_name, op_name_size); |
| 790 | op_meta.operator_name[op_name_size] = '\0'; |
| 791 | |
| 792 | auto num_outputs = stat.second.size(); |
| 793 | op_meta.out_num = num_outputs; |
| 794 | op_meta.real_size = static_cast<size_t*>(malloc(sizeof(size_t) * num_outputs)); |
| 795 | op_meta.max_real_size = static_cast<size_t*>(malloc(sizeof(size_t) * num_outputs)); |
| 796 | op_meta.reserved = static_cast<size_t*>(malloc(sizeof(size_t) * num_outputs)); |
| 797 | op_meta.max_reserved = static_cast<size_t*>(malloc(sizeof(size_t) * num_outputs)); |
| 798 | |
| 799 | for (size_t j = 0; j < num_outputs; ++j) { |
| 800 | const auto &entry = stat.second[j]; |
| 801 | op_meta.real_size[j] = entry.real_size; |
| 802 | op_meta.max_real_size[j] = entry.max_real_size; |
| 803 | op_meta.reserved[j] = entry.reserved; |
| 804 | op_meta.max_reserved[j] = entry.max_reserved; |
| 805 | } |
| 806 | ++i; |
| 807 | } |
| 808 | } |
| 809 | |
| 810 | void daliFreeExecutorMetadata(daliExecutorMetadata *operator_meta, size_t operator_meta_num) { |
| 811 | for (size_t i = 0; i < operator_meta_num; ++i) { |