You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	libavcodec/libx264: add a flag to output ROI warnings only once.
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
This commit is contained in:
		
				
					committed by
					
						 Mark Thompson
						Mark Thompson
					
				
			
			
				
	
			
			
			
						parent
						
							95e5396919
						
					
				
				
					commit
					104d44138b
				
			| @@ -99,6 +99,12 @@ typedef struct X264Context { | |||||||
|  |  | ||||||
|     int nb_reordered_opaque, next_reordered_opaque; |     int nb_reordered_opaque, next_reordered_opaque; | ||||||
|     int64_t *reordered_opaque; |     int64_t *reordered_opaque; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * If the encoder does not support ROI then warn the first time we | ||||||
|  |      * encounter a frame with ROI side data. | ||||||
|  |      */ | ||||||
|  |     int roi_warned; | ||||||
| } X264Context; | } X264Context; | ||||||
|  |  | ||||||
| static void X264_log(void *p, int level, const char *fmt, va_list args) | static void X264_log(void *p, int level, const char *fmt, va_list args) | ||||||
| @@ -356,7 +362,10 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame, | |||||||
|         sd = av_frame_get_side_data(frame, AV_FRAME_DATA_REGIONS_OF_INTEREST); |         sd = av_frame_get_side_data(frame, AV_FRAME_DATA_REGIONS_OF_INTEREST); | ||||||
|         if (sd) { |         if (sd) { | ||||||
|             if (x4->params.rc.i_aq_mode == X264_AQ_NONE) { |             if (x4->params.rc.i_aq_mode == X264_AQ_NONE) { | ||||||
|  |                 if (!x4->roi_warned) { | ||||||
|  |                     x4->roi_warned = 1; | ||||||
|                     av_log(ctx, AV_LOG_WARNING, "Adaptive quantization must be enabled to use ROI encoding, skipping ROI.\n"); |                     av_log(ctx, AV_LOG_WARNING, "Adaptive quantization must be enabled to use ROI encoding, skipping ROI.\n"); | ||||||
|  |                 } | ||||||
|             } else { |             } else { | ||||||
|                 if (frame->interlaced_frame == 0) { |                 if (frame->interlaced_frame == 0) { | ||||||
|                     int mbx = (frame->width + MB_SIZE - 1) / MB_SIZE; |                     int mbx = (frame->width + MB_SIZE - 1) / MB_SIZE; | ||||||
| @@ -410,11 +419,14 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame, | |||||||
|                     x4->pic.prop.quant_offsets = qoffsets; |                     x4->pic.prop.quant_offsets = qoffsets; | ||||||
|                     x4->pic.prop.quant_offsets_free = av_free; |                     x4->pic.prop.quant_offsets_free = av_free; | ||||||
|                 } else { |                 } else { | ||||||
|  |                     if (!x4->roi_warned) { | ||||||
|  |                         x4->roi_warned = 1; | ||||||
|                         av_log(ctx, AV_LOG_WARNING, "interlaced_frame not supported for ROI encoding yet, skipping ROI.\n"); |                         av_log(ctx, AV_LOG_WARNING, "interlaced_frame not supported for ROI encoding yet, skipping ROI.\n"); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     do { |     do { | ||||||
|         if (x264_encoder_encode(x4->enc, &nal, &nnal, frame? &x4->pic: NULL, &pic_out) < 0) |         if (x264_encoder_encode(x4->enc, &nal, &nnal, frame? &x4->pic: NULL, &pic_out) < 0) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user