int mxf_find_set_by_key(MXFHeaderMetadata* headerMetadata, const mxfKey* key, MXFList** setList) { MXFListIterator iter; MXFList* newList = NULL; CHK_ORET(mxf_create_list(&newList, NULL)); /* free func == NULL because newList doesn't own the data */ mxf_initialise_list_iter(&iter, &headerMetadata->sets); while (mxf_next_list_iter_element(&iter)) { MXFMetadataSet* set = (MXFMetadataSet*)mxf_get_iter_element(&iter); if (mxf_equals_key(key, &set->key)) { CHK_OFAIL(mxf_append_list_element(newList, (void*)set)); } } *setList = newList; return 1; fail: mxf_free_list(&newList); return 0; }
int mxf_create_file_partitions(MXFFilePartitions **partitions) { return mxf_create_list(partitions, free_partition_in_list); }