diff options
author | Paul B Mahol <onemda@gmail.com> | 2013-07-08 20:13:14 +0000 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2013-07-08 20:13:56 +0000 |
commit | a03e79ed5a71f77819e5242f69c16d43429fab09 (patch) | |
tree | b722ab7e8ebb65df609a4d7f4f0332e416b6430d /libavfilter/vf_psnr.c | |
parent | 970c8df73528659925819dec31c4c8c0887f0321 (diff) | |
download | ffmpeg-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.c | 24 |
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) { |