You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avformat/dtsdec: Improve probe, reject things looking like analoge signals
Fixes Ticket2810 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		| @@ -34,6 +34,7 @@ static int dts_probe(AVProbeData *p) | ||||
|     uint32_t state = -1; | ||||
|     int markers[3] = {0}; | ||||
|     int sum, max; | ||||
|     int64_t diff = 0; | ||||
|  | ||||
|     buf = p->buf; | ||||
|  | ||||
| @@ -54,12 +55,16 @@ static int dts_probe(AVProbeData *p) | ||||
|         if (state == DCA_MARKER_14B_LE) | ||||
|             if ((bytestream_get_be16(&bufp) & 0xF0FF) == 0xF007) | ||||
|                 markers[2]++; | ||||
|  | ||||
|         if (buf - p->buf >= 4) | ||||
|             diff += FFABS(AV_RL16(buf) - AV_RL16(buf-4)); | ||||
|     } | ||||
|     sum = markers[0] + markers[1] + markers[2]; | ||||
|     max = markers[1] > markers[0]; | ||||
|     max = markers[2] > markers[max] ? 2 : max; | ||||
|     if (markers[max] > 3 && p->buf_size / markers[max] < 32*1024 && | ||||
|         markers[max] * 4 > sum * 3) | ||||
|         markers[max] * 4 > sum * 3 && | ||||
|         diff / p->buf_size > 200) | ||||
|         return AVPROBE_SCORE_EXTENSION + 1; | ||||
|  | ||||
|     return 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user