You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avformat/mlpdec: consider all valid mlp access units when probing
Fixes probing of truehd/mlp files with a lot of frames in between the major sync frames. The spec allows a distance of up to 128 frames in between major sync frames, which leads to the probing code not reaching the desired score.
This commit is contained in:
		| @@ -29,16 +29,19 @@ static int av_always_inline mlp_thd_probe(AVProbeData *p, uint32_t sync) | ||||
| { | ||||
|     const uint8_t *buf, *last_buf = p->buf, *end = p->buf + p->buf_size; | ||||
|     int frames = 0, valid = 0, size = 0; | ||||
|     int nsubframes = 0; | ||||
|  | ||||
|     for (buf = p->buf; buf + 8 <= end; buf++) { | ||||
|         if (AV_RB32(buf + 4) == sync) { | ||||
|             frames++; | ||||
|             if (last_buf + size == buf) { | ||||
|                 valid++; | ||||
|                 valid += 1 + nsubframes / 8; | ||||
|             } | ||||
|             nsubframes = 0; | ||||
|             last_buf = buf; | ||||
|             size = (AV_RB16(buf) & 0xfff) * 2; | ||||
|         } else if (buf - last_buf == size) { | ||||
|             nsubframes++; | ||||
|             size += (AV_RB16(buf) & 0xfff) * 2; | ||||
|         } | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user