[FFmpeg-devel] [PATCH] Add max value output option to psnr stats log.
Lucas Cooper
bobobo at google.com
Mon Aug 29 23:12:10 EEST 2016
> if the user sets output_max without stats_version 2 this would just
silently ignore the option
Do you think this warrants a fatal error? A warning seems insufficient as
the output_max option is explicitly requested by the user.
> also missing doc/*.texi update
Should I send that in a followup patch once this one is finalized or would
you prefer them both in the same patch?
On 27 August 2016 at 03:13, Michael Niedermayer <michael at niedermayer.cc>
wrote:
> On Fri, Aug 26, 2016 at 12:10:17PM -0700, Lucas Cooper wrote:
> > This allows retroactive calculation/aggregation of PSNR from the stats
> > log.
> > ---
> > libavfilter/vf_psnr.c | 15 +++++++++++++++
> > 1 file changed, 15 insertions(+)
> >
> > diff --git a/libavfilter/vf_psnr.c b/libavfilter/vf_psnr.c
> > index 3bec747..9ad1423 100644
> > --- a/libavfilter/vf_psnr.c
> > +++ b/libavfilter/vf_psnr.c
> > @@ -45,6 +45,7 @@ typedef struct PSNRContext {
> > char *stats_file_str;
> > int stats_version;
> > int stats_header_written;
> > + int stats_add_max;
> > int max[4], average_max;
> > int is_rgb;
> > uint8_t rgba_map[4];
> > @@ -63,6 +64,7 @@ static const AVOption psnr_options[] = {
> > {"stats_file", "Set file where to store per-frame difference
> information", OFFSET(stats_file_str), AV_OPT_TYPE_STRING, {.str=NULL}, 0,
> 0, FLAGS },
> > {"f", "Set file where to store per-frame difference
> information", OFFSET(stats_file_str), AV_OPT_TYPE_STRING, {.str=NULL}, 0,
> 0, FLAGS },
> > {"stats_version", "Set the format version for the stats file.",
> OFFSET(stats_version), AV_OPT_TYPE_INT, {.i64=1}, 1, 2,
> FLAGS },
> > + {"output_max", "Add raw stats (max values) to the output log.",
> OFFSET(stats_add_max), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
> > { NULL }
> > };
> >
> > @@ -182,6 +184,12 @@ static AVFrame *do_psnr(AVFilterContext *ctx,
> AVFrame *main,
> > for (j = 0; j < s->nb_components; j++) {
> > fprintf(s->stats_file, ",psnr_%c", s->comps[j]);
> > }
> > + if (s->stats_add_max) {
> > + fprintf(s->stats_file, ",max_avg");
> > + for (j = 0; j < s->nb_components; j++) {
> > + fprintf(s->stats_file, ",max_%c", s->comps[j]);
> > + }
> > + }
> > fprintf(s->stats_file, "\n");
> > s->stats_header_written = 1;
> > }
> > @@ -196,6 +204,13 @@ static AVFrame *do_psnr(AVFilterContext *ctx,
> AVFrame *main,
> > fprintf(s->stats_file, "psnr_%c:%0.2f ", s->comps[j],
> > get_psnr(comp_mse[c], 1, s->max[c]));
> > }
> > + if (s->stats_version == 2 && s->stats_add_max) {
> > + fprintf(s->stats_file, "max_avg:%d ", s->average_max);
> > + for (j = 0; j < s->nb_components; j++) {
> > + c = s->is_rgb ? s->rgba_map[j] : j;
> > + fprintf(s->stats_file, "max_%c:%d ", s->comps[j],
> s->max[c]);
> > + }
> > + }
> > fprintf(s->stats_file, "\n");
>
> if the user sets output_max without stats_version 2 this would just
> silently ignore the option
> also missing doc/*.texi update
>
>
> [...]
>
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Awnsering whenever a program halts or runs forever is
> On a turing machine, in general impossible (turings halting problem).
> On any real computer, always possible as a real computer has a finite
> number
> of states N, and will either halt in less than N cycles or never halt.
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>
More information about the ffmpeg-devel
mailing list