AnyType is needed, descriptor_ref can reference Descriptor or MultipleDescriptor
Originally committed as revision 7451 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
							parent
							
								
									416519ddfa
								
							
						
					
					
						commit
						6ac558eefc
					
				| @ -50,6 +50,7 @@ | |||||||
| typedef uint8_t UID[16]; | typedef uint8_t UID[16]; | ||||||
| 
 | 
 | ||||||
| enum MXFMetadataSetType { | enum MXFMetadataSetType { | ||||||
|  |     AnyType, | ||||||
|     MaterialPackage, |     MaterialPackage, | ||||||
|     SourcePackage, |     SourcePackage, | ||||||
|     SourceClip, |     SourceClip, | ||||||
| @ -648,7 +649,7 @@ static void *mxf_resolve_strong_ref(MXFContext *mxf, UID *strong_ref, enum MXFMe | |||||||
|         return NULL; |         return NULL; | ||||||
|     for (i = 0; i < mxf->metadata_sets_count; i++) { |     for (i = 0; i < mxf->metadata_sets_count; i++) { | ||||||
|         if (!memcmp(*strong_ref, mxf->metadata_sets[i]->uid, 16) && |         if (!memcmp(*strong_ref, mxf->metadata_sets[i]->uid, 16) && | ||||||
|             mxf->metadata_sets[i]->type == type) { |             (type == AnyType || mxf->metadata_sets[i]->type == type)) { | ||||||
|             return mxf->metadata_sets[i]; |             return mxf->metadata_sets[i]; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @ -749,7 +750,7 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) | |||||||
| #endif | #endif | ||||||
|         st->codec->codec_type = mxf_get_codec_type(mxf_data_definition_uls, &source_track->sequence->data_definition_ul); |         st->codec->codec_type = mxf_get_codec_type(mxf_data_definition_uls, &source_track->sequence->data_definition_ul); | ||||||
| 
 | 
 | ||||||
|         source_package->descriptor = mxf_resolve_strong_ref(mxf, &source_package->descriptor_ref, Descriptor); |         source_package->descriptor = mxf_resolve_strong_ref(mxf, &source_package->descriptor_ref, AnyType); | ||||||
|         if (source_package->descriptor) { |         if (source_package->descriptor) { | ||||||
|             if (source_package->descriptor->type == MultipleDescriptor) { |             if (source_package->descriptor->type == MultipleDescriptor) { | ||||||
|                 for (j = 0; j < source_package->descriptor->sub_descriptors_count; j++) { |                 for (j = 0; j < source_package->descriptor->sub_descriptors_count; j++) { | ||||||
| @ -764,7 +765,7 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) | |||||||
|                         break; |                         break; | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|             } else |             } else if (source_package->descriptor->type == Descriptor) | ||||||
|                 descriptor = source_package->descriptor; |                 descriptor = source_package->descriptor; | ||||||
|         } |         } | ||||||
|         if (!descriptor) { |         if (!descriptor) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user