decoder/ffmpeg: detect and fix negative time stamps
Works around assertion failure due to something that appears to be a (minor) FFmpeg bug.
This commit is contained in:
		
							
								
								
									
										2
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,4 +1,6 @@ | ||||
| ver 0.18.21 (not yet released) | ||||
| * decoder | ||||
|   - ffmpeg: fix time stamp underflow | ||||
|  | ||||
| ver 0.18.20 (2014/12/08) | ||||
| * decoder | ||||
|   | ||||
| @@ -284,10 +284,13 @@ ffmpeg_send_packet(Decoder &decoder, InputStream &is, | ||||
| 		   AVFrame *frame, | ||||
| 		   uint8_t **buffer, int *buffer_size) | ||||
| { | ||||
| 	if (packet->pts >= 0 && packet->pts != (int64_t)AV_NOPTS_VALUE) | ||||
| 		decoder_timestamp(decoder, | ||||
| 				  time_from_ffmpeg(packet->pts - start_time_fallback(*stream), | ||||
| 				  stream->time_base)); | ||||
| 	if (packet->pts >= 0 && packet->pts != (int64_t)AV_NOPTS_VALUE) { | ||||
| 		auto start = start_time_fallback(*stream); | ||||
| 		if (packet->pts >= start) | ||||
| 			decoder_timestamp(decoder, | ||||
| 					  time_from_ffmpeg(packet->pts - start, | ||||
| 							   stream->time_base)); | ||||
| 	} | ||||
|  | ||||
| 	AVPacket packet2 = *packet; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann