|  |  | @@ -496,6 +496,8 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom) | 
		
	
		
			
			|  |  |  | AVStream *st; | 
		
	
		
			
			|  |  |  | uint32_t type; | 
		
	
		
			
			|  |  |  | uint32_t av_unused ctype; | 
		
	
		
			
			|  |  |  | int title_size; | 
		
	
		
			
			|  |  |  | char *title_str; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (c->fc->nb_streams < 1) // meta before first trak | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
	
		
			
				|  |  | @@ -525,6 +527,17 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom) | 
		
	
		
			
			|  |  |  | avio_rb32(pb); /* component flags */ | 
		
	
		
			
			|  |  |  | avio_rb32(pb); /* component flags mask */ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | title_size = atom.size - 24; | 
		
	
		
			
			|  |  |  | if (title_size > 0) { | 
		
	
		
			
			|  |  |  | title_str = av_malloc(title_size + 1); /* Add null terminator */ | 
		
	
		
			
			|  |  |  | if (!title_str) | 
		
	
		
			
			|  |  |  | return AVERROR(ENOMEM); | 
		
	
		
			
			|  |  |  | avio_read(pb, title_str, title_size); | 
		
	
		
			
			|  |  |  | title_str[title_size] = 0; | 
		
	
		
			
			|  |  |  | av_dict_set(&st->metadata, "handler_name", title_str, 0); | 
		
	
		
			
			|  |  |  | av_freep(&title_str); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | 
 |