aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter/vf_psnr.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2013-07-08 20:13:14 +0000
committerPaul B Mahol <onemda@gmail.com>2013-07-08 20:13:56 +0000
commita03e79ed5a71f77819e5242f69c16d43429fab09 (patch)
treeb722ab7e8ebb65df609a4d7f4f0332e416b6430d /libavfilter/vf_psnr.c
parent970c8df73528659925819dec31c4c8c0887f0321 (diff)
downloadffmpeg-a03e79ed5a71f77819e5242f69c16d43429fab09.tar.gz
lavfi: fix broken logic in metadata handling
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavfilter/vf_psnr.c')
-rw-r--r--libavfilter/vf_psnr.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/libavfilter/vf_psnr.c b/libavfilter/vf_psnr.c
index 6b4fecb3cf..37bfde4c46 100644
--- a/libavfilter/vf_psnr.c
+++ b/libavfilter/vf_psnr.c
@@ -98,16 +98,24 @@ void compute_images_mse(const uint8_t *main_data[4], const int main_linesizes[4]
}
}
-#define SET_META(key, comp, value) \
- snprintf(buf, sizeof(buf), "%0.2f", value); \
- av_dict_set(metadata, #key #comp, buf, 0); \
+static void set_meta(AVDictionary **metadata, const char *key, char comp, float d)
+{
+ char value[128];
+ snprintf(value, sizeof(value), "%0.2f", d);
+ if (comp) {
+ char key2[128];
+ snprintf(key2, sizeof(key2), "%s%c", key, comp);
+ av_dict_set(metadata, key2, value, 0);
+ } else {
+ av_dict_set(metadata, key, value, 0);
+ }
+}
static AVFrame *do_psnr(AVFilterContext *ctx, AVFrame *main,
const AVFrame *ref)
{
PSNRContext *s = ctx->priv;
double comp_mse[4], mse = 0;
- char buf[32];
int j, c;
AVDictionary **metadata = avpriv_frame_get_metadatap(main);
@@ -127,10 +135,10 @@ static AVFrame *do_psnr(AVFilterContext *ctx, AVFrame *main,
for (j = 0; j < s->desc->nb_components; j++) {
c = s->is_rgb ? s->rgba_map[j] : j;
- SET_META("lavfi.psnr.mse.", s->comps[j], comp_mse[c]);
- SET_META("lavfi.psnr.mse_avg", "", mse);
- SET_META("lavfi.psnr.s.", s->comps[j], get_psnr(comp_mse[c], 1, s->max[c]));
- SET_META("lavfi.psnr.s_avg", "", get_psnr(mse, 1, s->average_max));
+ set_meta(metadata, "lavfi.psnr.mse.", s->comps[j], comp_mse[c]);
+ set_meta(metadata, "lavfi.psnr.mse_avg", 0, mse);
+ set_meta(metadata, "lavfi.psnr.s.", s->comps[j], get_psnr(comp_mse[c], 1, s->max[c]));
+ set_meta(metadata, "lavfi.psnr.s_avg", 0, get_psnr(mse, 1, s->average_max));
}
if (s->stats_file) {