mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-04-19 09:02:26 +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:
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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user