[FFmpeg-devel] [PATCH V2] lavfi/showinfo: support regions of interest sidedata
Guo, Yejun
yejun.guo at intel.com
Mon Mar 11 04:48:40 EET 2019
> -----Original Message-----
> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On Behalf
> Of Jun Zhao
> Sent: Sunday, March 10, 2019 9:17 PM
> To: ffmpeg-devel at ffmpeg.org
> Cc: Jun Zhao <barryjzhao at tencent.com>
> Subject: [FFmpeg-devel] [PATCH V2] lavfi/showinfo: support regions of
> interest sidedata
>
> From: Jun Zhao <barryjzhao at tencent.com>
>
> support regions of interest sidedata
>
> Signed-off-by: Jun Zhao <barryjzhao at 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 at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
More information about the ffmpeg-devel
mailing list