Adding sse_to_psnr function to tools_common.{h, c}.
Change-Id: Id5f974172416499ff55b0929e315b12d16ff1b1b
This commit is contained in:
Родитель
c57fc4f38c
Коммит
2dad0e1238
|
@ -18,11 +18,12 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include "math.h"
|
||||
#include <math.h>
|
||||
#define VPX_CODEC_DISABLE_COMPAT 1
|
||||
#include "vpx/vpx_encoder.h"
|
||||
#include "vpx/vp8cx.h"
|
||||
#include "vpx_ports/mem_ops.h"
|
||||
#include "./tools_common.h"
|
||||
#define interface (vpx_codec_vp8_cx())
|
||||
#define fourcc 0x30385056
|
||||
|
||||
|
@ -44,21 +45,6 @@
|
|||
#include "third_party/libyuv/include/libyuv/scale.h"
|
||||
#include "third_party/libyuv/include/libyuv/cpu_id.h"
|
||||
|
||||
static double vp8_mse2psnr(double Samples, double Peak, double Mse)
|
||||
{
|
||||
double psnr;
|
||||
|
||||
if ((double)Mse > 0.0)
|
||||
psnr = 10.0 * log10(Peak * Peak * Samples / Mse);
|
||||
else
|
||||
psnr = 60; // Limit to prevent / 0
|
||||
|
||||
if (psnr > 60)
|
||||
psnr = 60;
|
||||
|
||||
return psnr;
|
||||
}
|
||||
|
||||
static void die(const char *fmt, ...) {
|
||||
va_list ap;
|
||||
|
||||
|
@ -454,8 +440,8 @@ int main(int argc, char **argv)
|
|||
if ( (show_psnr) && (psnr_count[i]>0) )
|
||||
{
|
||||
int j;
|
||||
double ovpsnr = vp8_mse2psnr(psnr_samples_total[i], 255.0,
|
||||
psnr_sse_total[i]);
|
||||
double ovpsnr = sse_to_psnr(psnr_samples_total[i], 255.0,
|
||||
psnr_sse_total[i]);
|
||||
|
||||
fprintf(stderr, "\n ENC%d PSNR (Overall/Avg/Y/U/V)", i);
|
||||
|
||||
|
|
|
@ -8,13 +8,14 @@
|
|||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "tools_common.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "./tools_common.h"
|
||||
|
||||
#if CONFIG_VP8_ENCODER || CONFIG_VP9_ENCODER
|
||||
#include "vpx/vp8cx.h"
|
||||
#endif
|
||||
|
@ -273,3 +274,14 @@ int vpx_img_read(vpx_image_t *img, FILE *file) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
// TODO(dkovalev) change sse_to_psnr signature: double -> int64_t
|
||||
double sse_to_psnr(double samples, double peak, double sse) {
|
||||
static const double kMaxPSNR = 100.0;
|
||||
|
||||
if (sse > 0.0) {
|
||||
const double psnr = 10.0 * log10(samples * peak * peak / sse);
|
||||
return psnr > kMaxPSNR ? kMaxPSNR : psnr;
|
||||
} else {
|
||||
return kMaxPSNR;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -145,6 +145,8 @@ int vpx_img_plane_height(const vpx_image_t *img, int plane);
|
|||
void vpx_img_write(const vpx_image_t *img, FILE *file);
|
||||
int vpx_img_read(vpx_image_t *img, FILE *file);
|
||||
|
||||
double sse_to_psnr(double samples, double peak, double mse);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
|
4
vpxenc.c
4
vpxenc.c
|
@ -1399,8 +1399,8 @@ static void show_psnr(struct stream_state *stream) {
|
|||
return;
|
||||
|
||||
fprintf(stderr, "Stream %d PSNR (Overall/Avg/Y/U/V)", stream->index);
|
||||
ovpsnr = vp8_mse2psnr((double)stream->psnr_samples_total, 255.0,
|
||||
(double)stream->psnr_sse_total);
|
||||
ovpsnr = sse_to_psnr((double)stream->psnr_samples_total, 255.0,
|
||||
(double)stream->psnr_sse_total);
|
||||
fprintf(stderr, " %.3f", ovpsnr);
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
|
13
vpxstats.c
13
vpxstats.c
|
@ -120,16 +120,3 @@ void stats_write(stats_io_t *stats, const void *pkt, size_t len) {
|
|||
vpx_fixed_buf_t stats_get(stats_io_t *stats) {
|
||||
return stats->buf;
|
||||
}
|
||||
|
||||
double vp8_mse2psnr(double samples, double peak, double mse) {
|
||||
const int kMaxPSNR = 100;
|
||||
double psnr = kMaxPSNR;
|
||||
|
||||
if (mse > 0.0)
|
||||
psnr = 10.0 * log10(peak * peak * samples / mse);
|
||||
|
||||
if (psnr > kMaxPSNR)
|
||||
psnr = kMaxPSNR;
|
||||
|
||||
return psnr;
|
||||
}
|
||||
|
|
|
@ -36,8 +36,6 @@ void stats_close(stats_io_t *stats, int last_pass);
|
|||
void stats_write(stats_io_t *stats, const void *pkt, size_t len);
|
||||
vpx_fixed_buf_t stats_get(stats_io_t *stats);
|
||||
|
||||
double vp8_mse2psnr(double samples, double peak, double mse);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче