Merge CV, ver=5.1; ops/methods from HV, and interface from CV where possible
[goodguy/history.git] / cinelerra-5.1 / mpeg2enc / stats.c
diff --git a/cinelerra-5.1/mpeg2enc/stats.c b/cinelerra-5.1/mpeg2enc/stats.c
new file mode 100644 (file)
index 0000000..0d0331f
--- /dev/null
@@ -0,0 +1,85 @@
+/* stats.c, coding statistics                                               */
+
+/* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */
+
+/*
+ * Disclaimer of Warranty
+ *
+ * These software programs are available to the user without any license fee or
+ * royalty on an "as is" basis.  The MPEG Software Simulation Group disclaims
+ * any and all warranties, whether express, implied, or statuary, including any
+ * implied warranties or merchantability or of fitness for a particular
+ * purpose.  In no event shall the copyright-holder be liable for any
+ * incidental, punitive, or consequential damages of any kind whatsoever
+ * arising from the use of these programs.
+ *
+ * This disclaimer of warranty extends to the user of these programs and user's
+ * customers, employees, agents, transferees, successors, and assigns.
+ *
+ * The MPEG Software Simulation Group does not represent or warrant that the
+ * programs furnished hereunder are free of infringement of any third-party
+ * patents.
+ *
+ * Commercial implementations of MPEG-1 and MPEG-2 video, including shareware,
+ * are subject to royalty fees to patent holders.  Many of these patents are
+ * general enough such that they are unavoidable regardless of implementation
+ * design.
+ *
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include "config.h"
+#include "global.h"
+
+/* private prototypes */
+static void calcSNR1 _ANSI_ARGS_((unsigned char *org, unsigned char *rec,
+  int lx, int w, int h, double *pv, double *pe));
+
+
+void calcSNR(org,rec)
+unsigned char *org[3];
+unsigned char *rec[3];
+{
+}
+
+static void calcSNR1(org,rec,lx,w,h,pv,pe)
+unsigned char *org;
+unsigned char *rec;
+int lx,w,h;
+double *pv,*pe;
+{
+  int i, j;
+  double v1, s1, s2, e2;
+
+  s1 = s2 = e2 = 0.0;
+
+  for (j=0; j<h; j++)
+  {
+    for (i=0; i<w; i++)
+    {
+      v1 = org[i];
+      s1+= v1;
+      s2+= v1*v1;
+      v1-= rec[i];
+      e2+= v1*v1;
+    }
+    org += lx;
+    rec += lx;
+  }
+
+  s1 /= w*h;
+  s2 /= w*h;
+  e2 /= w*h;
+
+  /* prevent division by zero in calcSNR() */
+  if(e2==0.0)
+    e2 = 0.00001;
+
+  *pv = s2 - s1*s1; /* variance */
+  *pe = e2;         /* MSE */
+}
+
+void stats()
+{
+}