flvdec: Ignore the index if it's from a creator known to be different
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
		
							parent
							
								
									e1b1015581
								
							
						
					
					
						commit
						bafff1668c
					
				@ -140,6 +140,18 @@ static int parse_keyframes_index(AVFormatContext *s, AVIOContext *ioc, AVStream
 | 
				
			|||||||
    int64_t *filepositions = NULL;
 | 
					    int64_t *filepositions = NULL;
 | 
				
			||||||
    int ret = AVERROR(ENOSYS);
 | 
					    int ret = AVERROR(ENOSYS);
 | 
				
			||||||
    int64_t initial_pos = avio_tell(ioc);
 | 
					    int64_t initial_pos = avio_tell(ioc);
 | 
				
			||||||
 | 
					    AVDictionaryEntry *creator = av_dict_get(s->metadata, "metadatacreator",
 | 
				
			||||||
 | 
					                                             NULL, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (creator && !strcmp(creator->value, "MEGA")) {
 | 
				
			||||||
 | 
					        /* Files with this metadatacreator tag seem to have filepositions
 | 
				
			||||||
 | 
					         * pointing at the 4 trailer bytes of the previous packet,
 | 
				
			||||||
 | 
					         * which isn't the norm (nor what we expect here, nor what
 | 
				
			||||||
 | 
					         * jwplayer + lighttpd expect, nor what flvtool2 produces).
 | 
				
			||||||
 | 
					         * Just ignore the index in this case, instead of risking trying
 | 
				
			||||||
 | 
					         * to adjust it to something that might or might not work. */
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (avio_tell(ioc) < max_pos - 2 && amf_get_string(ioc, str_val, sizeof(str_val)) > 0) {
 | 
					    while (avio_tell(ioc) < max_pos - 2 && amf_get_string(ioc, str_val, sizeof(str_val)) > 0) {
 | 
				
			||||||
        int64_t* current_array;
 | 
					        int64_t* current_array;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user