avformat/utils: Open decoder even if there are no packets if parameters are missing
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
							parent
							
								
									2a70e78a28
								
							
						
					
					
						commit
						218bb8b3f3
					
				| @ -3602,14 +3602,23 @@ FF_ENABLE_DEPRECATION_WARNINGS | ||||
|         count++; | ||||
|     } | ||||
| 
 | ||||
|     if (eof_reached && ic->internal->packet_buffer) { | ||||
|     if (eof_reached) { | ||||
|         int stream_index; | ||||
|         for (stream_index = 0; stream_index < ic->nb_streams; stream_index++) { | ||||
|             st = ic->streams[stream_index]; | ||||
|             avctx = st->internal->avctx; | ||||
|             if (!has_codec_parameters(st, NULL)) { | ||||
|                 AVCodec *codec = find_decoder(ic, st, st->codecpar->codec_id); | ||||
|                 if (codec && !avctx->codec) { | ||||
|                     if (avcodec_open2(avctx, codec, (options && stream_index < orig_nb_streams) ? &options[stream_index] : NULL) < 0) | ||||
|                         av_log(ic, AV_LOG_WARNING, | ||||
|                             "Failed to open codec in av_find_stream_info\n"); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             // EOF already reached while reading the stream above.
 | ||||
|             // So continue with reoordering DTS with whatever delay we have.
 | ||||
|             if (!has_decode_delay_been_guessed(st)) { | ||||
|             if (ic->internal->packet_buffer && !has_decode_delay_been_guessed(st)) { | ||||
|                 update_dts_from_pts(ic, stream_index, ic->internal->packet_buffer); | ||||
|             } | ||||
|         } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user