You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	examples/demuxing_decoding: use properties from frame instead of video_dec_ctx
This is more robust. And only check if there is actually a frame returned. Reviewed-by: Michael Niedermayer <michaelni@gmx.at> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
This commit is contained in:
		| @@ -81,22 +81,24 @@ static int decode_packet(int *got_frame, int cached) | ||||
|             fprintf(stderr, "Error decoding video frame (%s)\n", av_err2str(ret)); | ||||
|             return ret; | ||||
|         } | ||||
|         if (video_dec_ctx->width != width || video_dec_ctx->height != height || | ||||
|             video_dec_ctx->pix_fmt != pix_fmt) { | ||||
|             /* To handle this change, one could call av_image_alloc again and | ||||
|              * decode the following frames into another rawvideo file. */ | ||||
|             fprintf(stderr, "Error: Width, height and pixel format have to be " | ||||
|                     "constant in a rawvideo file, but the width, height or " | ||||
|                     "pixel format of the input video changed:\n" | ||||
|                     "old: width = %d, height = %d, format = %s\n" | ||||
|                     "new: width = %d, height = %d, format = %s\n", | ||||
|                     width, height, av_get_pix_fmt_name(pix_fmt), | ||||
|                     video_dec_ctx->width, video_dec_ctx->height, | ||||
|                     av_get_pix_fmt_name(video_dec_ctx->pix_fmt)); | ||||
|             return -1; | ||||
|         } | ||||
|  | ||||
|         if (*got_frame) { | ||||
|  | ||||
|             if (frame->width != width || frame->height != height || | ||||
|                 frame->format != pix_fmt) { | ||||
|                 /* To handle this change, one could call av_image_alloc again and | ||||
|                  * decode the following frames into another rawvideo file. */ | ||||
|                 fprintf(stderr, "Error: Width, height and pixel format have to be " | ||||
|                         "constant in a rawvideo file, but the width, height or " | ||||
|                         "pixel format of the input video changed:\n" | ||||
|                         "old: width = %d, height = %d, format = %s\n" | ||||
|                         "new: width = %d, height = %d, format = %s\n", | ||||
|                         width, height, av_get_pix_fmt_name(pix_fmt), | ||||
|                         frame->width, frame->height, | ||||
|                         av_get_pix_fmt_name(frame->format)); | ||||
|                 return -1; | ||||
|             } | ||||
|  | ||||
|             printf("video_frame%s n:%d coded_n:%d pts:%s\n", | ||||
|                    cached ? "(cached)" : "", | ||||
|                    video_frame_count++, frame->coded_picture_number, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user