Merge "Adding sse_to_psnr function to tools_common.{h, c}."
This commit is contained in:
		@@ -18,11 +18,12 @@
 | 
				
			|||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <stdarg.h>
 | 
					#include <stdarg.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
#include "math.h"
 | 
					#include <math.h>
 | 
				
			||||||
#define VPX_CODEC_DISABLE_COMPAT 1
 | 
					#define VPX_CODEC_DISABLE_COMPAT 1
 | 
				
			||||||
#include "vpx/vpx_encoder.h"
 | 
					#include "vpx/vpx_encoder.h"
 | 
				
			||||||
#include "vpx/vp8cx.h"
 | 
					#include "vpx/vp8cx.h"
 | 
				
			||||||
#include "vpx_ports/mem_ops.h"
 | 
					#include "vpx_ports/mem_ops.h"
 | 
				
			||||||
 | 
					#include "./tools_common.h"
 | 
				
			||||||
#define interface (vpx_codec_vp8_cx())
 | 
					#define interface (vpx_codec_vp8_cx())
 | 
				
			||||||
#define fourcc    0x30385056
 | 
					#define fourcc    0x30385056
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -44,21 +45,6 @@
 | 
				
			|||||||
#include "third_party/libyuv/include/libyuv/scale.h"
 | 
					#include "third_party/libyuv/include/libyuv/scale.h"
 | 
				
			||||||
#include "third_party/libyuv/include/libyuv/cpu_id.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, ...) {
 | 
					static void die(const char *fmt, ...) {
 | 
				
			||||||
    va_list ap;
 | 
					    va_list ap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -454,7 +440,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
        if ( (show_psnr) && (psnr_count[i]>0) )
 | 
					        if ( (show_psnr) && (psnr_count[i]>0) )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int j;
 | 
					            int j;
 | 
				
			||||||
            double ovpsnr = vp8_mse2psnr(psnr_samples_total[i], 255.0,
 | 
					            double ovpsnr = sse_to_psnr(psnr_samples_total[i], 255.0,
 | 
				
			||||||
                                        psnr_sse_total[i]);
 | 
					                                        psnr_sse_total[i]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            fprintf(stderr, "\n ENC%d PSNR (Overall/Avg/Y/U/V)", 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.
 | 
					 *  be found in the AUTHORS file in the root of the source tree.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "tools_common.h"
 | 
					#include <math.h>
 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <stdarg.h>
 | 
					#include <stdarg.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "./tools_common.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if CONFIG_VP8_ENCODER || CONFIG_VP9_ENCODER
 | 
					#if CONFIG_VP8_ENCODER || CONFIG_VP9_ENCODER
 | 
				
			||||||
#include "vpx/vp8cx.h"
 | 
					#include "vpx/vp8cx.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -253,3 +254,14 @@ int vpx_img_read(vpx_image_t *img, FILE *file) {
 | 
				
			|||||||
  return 1;
 | 
					  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;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -142,6 +142,8 @@ int vpx_img_plane_height(const vpx_image_t *img, int plane);
 | 
				
			|||||||
void vpx_img_write(const vpx_image_t *img, FILE *file);
 | 
					void vpx_img_write(const vpx_image_t *img, FILE *file);
 | 
				
			||||||
int vpx_img_read(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
 | 
					#ifdef __cplusplus
 | 
				
			||||||
}  /* extern "C" */
 | 
					}  /* extern "C" */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								vpxenc.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								vpxenc.c
									
									
									
									
									
								
							@@ -1399,7 +1399,7 @@ static void show_psnr(struct stream_state  *stream) {
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  fprintf(stderr, "Stream %d PSNR (Overall/Avg/Y/U/V)", stream->index);
 | 
					  fprintf(stderr, "Stream %d PSNR (Overall/Avg/Y/U/V)", stream->index);
 | 
				
			||||||
  ovpsnr = vp8_mse2psnr((double)stream->psnr_samples_total, 255.0,
 | 
					  ovpsnr = sse_to_psnr((double)stream->psnr_samples_total, 255.0,
 | 
				
			||||||
                       (double)stream->psnr_sse_total);
 | 
					                       (double)stream->psnr_sse_total);
 | 
				
			||||||
  fprintf(stderr, " %.3f", ovpsnr);
 | 
					  fprintf(stderr, " %.3f", ovpsnr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										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) {
 | 
					vpx_fixed_buf_t stats_get(stats_io_t *stats) {
 | 
				
			||||||
  return stats->buf;
 | 
					  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);
 | 
					void stats_write(stats_io_t *stats, const void *pkt, size_t len);
 | 
				
			||||||
vpx_fixed_buf_t stats_get(stats_io_t *stats);
 | 
					vpx_fixed_buf_t stats_get(stats_io_t *stats);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
double vp8_mse2psnr(double samples, double peak, double mse);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
}  // extern "C"
 | 
					}  // extern "C"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user