You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	format/imfdec: improve error handling when selecting tracks for playback
Reviewed-by: Zane van Iperen <zane@zanevaniperen.com>
This commit is contained in:
		
				
					committed by
					
						 Zane van Iperen
						Zane van Iperen
					
				
			
			
				
	
			
			
			
						parent
						
							0bc7ba4488
						
					
				
				
					commit
					0e402ebf48
				
			| @@ -686,8 +686,11 @@ static IMFVirtualTrackPlaybackCtx *get_next_track_with_minimum_timestamp(AVForma | ||||
| { | ||||
|     IMFContext *c = s->priv_data; | ||||
|     IMFVirtualTrackPlaybackCtx *track; | ||||
|  | ||||
|     AVRational minimum_timestamp = av_make_q(INT32_MAX, 1); | ||||
|  | ||||
|     if (!c->track_count) | ||||
|         return NULL; | ||||
|  | ||||
|     for (uint32_t i = c->track_count; i > 0; i--) { | ||||
|         av_log(s, AV_LOG_TRACE, "Compare track %d timestamp " AVRATIONAL_FORMAT | ||||
|                " to minimum " AVRATIONAL_FORMAT | ||||
| @@ -702,8 +705,6 @@ static IMFVirtualTrackPlaybackCtx *get_next_track_with_minimum_timestamp(AVForma | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     av_log(s, AV_LOG_DEBUG, "Found next track to read: %d (timestamp: %lf / %lf)\n", | ||||
|            track->index, av_q2d(track->current_timestamp), av_q2d(minimum_timestamp)); | ||||
|     return track; | ||||
| } | ||||
|  | ||||
| @@ -766,6 +767,14 @@ static int imf_read_packet(AVFormatContext *s, AVPacket *pkt) | ||||
|  | ||||
|     track = get_next_track_with_minimum_timestamp(s); | ||||
|  | ||||
|     if (!track) { | ||||
|         av_log(s, AV_LOG_ERROR, "No track found for playback\n"); | ||||
|         return AVERROR_INVALIDDATA; | ||||
|     } | ||||
|  | ||||
|     av_log(s, AV_LOG_DEBUG, "Found track %d to read at timestamp %lf\n", | ||||
|            track->index, av_q2d(track->current_timestamp)); | ||||
|  | ||||
|     ret = get_resource_context_for_timestamp(s, track, &resource); | ||||
|     if (ret) | ||||
|         return ret; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user