Handle av_read_frame() EAGAIN return.
Originally committed as revision 16718 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
							parent
							
								
									ad51c68c01
								
							
						
					
					
						commit
						cda6902d36
					
				| @ -1493,7 +1493,10 @@ static int av_seek_frame_generic(AVFormatContext *s, | |||||||
|                 return ret; |                 return ret; | ||||||
|         } |         } | ||||||
|         for(i=0;; i++) { |         for(i=0;; i++) { | ||||||
|             int ret = av_read_frame(s, &pkt); |             int ret; | ||||||
|  |             do{ | ||||||
|  |                 ret = av_read_frame(s, &pkt); | ||||||
|  |             }while(ret == AVERROR(EAGAIN)); | ||||||
|             if(ret<0) |             if(ret<0) | ||||||
|                 break; |                 break; | ||||||
|             av_free_packet(&pkt); |             av_free_packet(&pkt); | ||||||
| @ -1718,7 +1721,9 @@ static void av_estimate_timings_from_pts(AVFormatContext *ic, int64_t old_offset | |||||||
|         if (i == ic->nb_streams) |         if (i == ic->nb_streams) | ||||||
|             break; |             break; | ||||||
| 
 | 
 | ||||||
|         ret = av_read_packet(ic, pkt); |         do{ | ||||||
|  |             ret = av_read_packet(ic, pkt); | ||||||
|  |         }while(ret == AVERROR(EAGAIN)); | ||||||
|         if (ret != 0) |         if (ret != 0) | ||||||
|             break; |             break; | ||||||
|         read_size += pkt->size; |         read_size += pkt->size; | ||||||
| @ -1743,7 +1748,9 @@ static void av_estimate_timings_from_pts(AVFormatContext *ic, int64_t old_offset | |||||||
|         if (read_size >= DURATION_MAX_READ_SIZE) |         if (read_size >= DURATION_MAX_READ_SIZE) | ||||||
|             break; |             break; | ||||||
| 
 | 
 | ||||||
|         ret = av_read_packet(ic, pkt); |         do{ | ||||||
|  |             ret = av_read_packet(ic, pkt); | ||||||
|  |         }while(ret == AVERROR(EAGAIN)); | ||||||
|         if (ret != 0) |         if (ret != 0) | ||||||
|             break; |             break; | ||||||
|         read_size += pkt->size; |         read_size += pkt->size; | ||||||
| @ -2044,6 +2051,8 @@ int av_find_stream_info(AVFormatContext *ic) | |||||||
|         /* NOTE: a new stream can be added there if no header in file
 |         /* NOTE: a new stream can be added there if no header in file
 | ||||||
|            (AVFMTCTX_NOHEADER) */ |            (AVFMTCTX_NOHEADER) */ | ||||||
|         ret = av_read_frame_internal(ic, &pkt1); |         ret = av_read_frame_internal(ic, &pkt1); | ||||||
|  |         if(ret == AVERROR(EAGAIN)) | ||||||
|  |             continue; | ||||||
|         if (ret < 0) { |         if (ret < 0) { | ||||||
|             /* EOF or error */ |             /* EOF or error */ | ||||||
|             ret = -1; /* we could not have all the codec parameters before EOF */ |             ret = -1; /* we could not have all the codec parameters before EOF */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user