> -----Original Message----- > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf > Of Jun Zhao > Sent: Sunday, March 10, 2019 9:17 PM > To: ffmpeg-devel@ffmpeg.org > Cc: Jun Zhao <barryjz...@tencent.com> > Subject: [FFmpeg-devel] [PATCH V2] lavfi/showinfo: support regions of > interest sidedata > > From: Jun Zhao <barryjz...@tencent.com> > > support regions of interest sidedata > > Signed-off-by: Jun Zhao <barryjz...@tencent.com> > --- > libavfilter/vf_showinfo.c | 33 +++++++++++++++++++++++++++++++++ > 1 files changed, 33 insertions(+), 0 deletions(-) > > diff --git a/libavfilter/vf_showinfo.c b/libavfilter/vf_showinfo.c > index e41c330..d0e140f 100644 > --- a/libavfilter/vf_showinfo.c > +++ b/libavfilter/vf_showinfo.c > @@ -111,6 +111,36 @@ static void dump_stereo3d(AVFilterContext *ctx, > AVFrameSideData *sd) > av_log(ctx, AV_LOG_INFO, " (inverted)"); > } > > +static void dump_roi(AVFilterContext *ctx, AVFrameSideData *sd) > +{ > + AVRegionOfInterest *roi; > + int nb_rois; > + > + if (sd->size < sizeof(*roi)) { > + av_log(ctx, AV_LOG_INFO, "invalid data"); > + return; > + }
it is possible. > + > + roi = (AVRegionOfInterest *)sd->data; > + if (roi->self_size == 0 || sd->size % roi->self_size != 0) { > + av_log(ctx, AV_LOG_INFO, "invalid ROI side data"); > + return; > + } > + nb_rois = sd->size / roi->self_size; > + > + av_log(ctx, AV_LOG_INFO, "Regions Of Interest(RoI) information: "); > + for (int index = 0; index < nb_rois; index++) { > + av_log(ctx, AV_LOG_INFO, "index: %d, region: (%d %d)/(%d %d), qp > offset: %d/%d", > + index, roi->left, roi->top, roi->right, roi->bottom, > roi->qoffset.num, > roi->qoffset.den); > + > + if (roi->self_size == 0) > + av_log(ctx, AV_LOG_INFO, > + "AVRegionOfInterest.self_size must be set to > sizeof(AVRegionOfInterest).\n"); we can skip this since the first roi->self_size is tested. > + > + roi = (AVRegionOfInterest *)((char *)roi + roi->self_size); > + } > +} > + > static void dump_color_property(AVFilterContext *ctx, AVFrame *frame) > { > const char *color_range_str = av_color_range_name(frame- > >color_range); > @@ -246,6 +276,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame > *frame) > case AV_FRAME_DATA_AFD: > av_log(ctx, AV_LOG_INFO, "afd: value of %"PRIu8, sd->data[0]); > break; > + case AV_FRAME_DATA_REGIONS_OF_INTEREST: > + dump_roi(ctx, sd); > + break; > default: > av_log(ctx, AV_LOG_WARNING, "unknown side data type %d (%d > bytes)", > sd->type, sd->size); > -- > 1.7.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel