Initial import

Change-Id: Ia93d7b7027e123187c0f7fb1d78b2f33cf175bcc
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c201423
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,30 @@
+# Numerous always-ignore extensions
+*.diff
+*.err
+*.orig
+*.log
+*.rej
+*.swo
+*.swp
+*.vi
+*~
+
+# OS or Editor cruft
+.DS_Store
+.cache
+.project
+.settings
+nbproject
+thumbs.db
+
+# Directories to ignore
+.hg
+.svn
+publish
+.idea
+
+# files
+build/buildinfo.properties
+
+# Exclude
+doc
diff --git a/scripts/be b/scripts/be
new file mode 100755
index 0000000..cb1e193
--- /dev/null
+++ b/scripts/be
@@ -0,0 +1,27 @@
+#!/bin/bash
+#
+# Copyright 2010 Google Inc.
+# All Rights Reserved.
+# Author: jimbankoski@google.com (Jim Bankoski)
+
+if [ $# -ne 2 ]
+then
+  echo "Encodes a file using best known settings (slow!)"
+  echo "  Usage:    be [FILE] [BITRATE]"
+  echo "  Example:  be akiyo_cif.y4m 200"
+  exit
+fi
+f=$1  # file is first parm
+b=$2  # bitrate is second parm
+
+if [ -e $f.fpf ]; then   # First-pass file found, do second pass only
+
+ vpxenc $f -o $f-$b.vp8.webm -p 2 --pass=2 --fpf=$f.fpf --best --cpu-used=0 --target-bitrate=$b  --auto-alt-ref=1 -v --minsection-pct=0 --maxsection-pct=800 --lag-in-frames=25 --kf-min-dist=0 --kf-max-dist=99999 --static-thresh=0 --min-q=0 --max-q=63 --drop-frame=0 --bias-pct=50 --minsection-pct=0 --maxsection-pct=800 --psnr --arnr-maxframes=7 --arnr-strength=3 --arnr-type=3
+
+else   # No first-pass file found, do 2-pass encode
+
+  vpxenc $f -o $f-$b.vp8.webm -p 2 --pass=1 --fpf=$f.fpf --best --cpu-used=0 --target-bitrate=$b  --auto-alt-ref=1 -v --minsection-pct=0 --maxsection-pct=800 --lag-in-frames=25 --kf-min-dist=0 --kf-max-dist=99999 --static-thresh=0 --min-q=0 --max-q=63 --drop-frame=0
+
+  vpxenc $f -o $f-$b.vp8.webm -p 2 --pass=2 --fpf=$f.fpf --best --cpu-used=0 --target-bitrate=$b  --auto-alt-ref=1 -v --minsection-pct=0 --maxsection-pct=800 --lag-in-frames=25 --kf-min-dist=0 --kf-max-dist=99999 --static-thresh=0 --min-q=0 --max-q=63 --drop-frame=0 --bias-pct=50 --minsection-pct=0 --maxsection-pct=800 --psnr --arnr-maxframes=7 --arnr-strength=3 --arnr-type=3
+
+fi
diff --git a/scripts/run_tests b/scripts/run_tests
new file mode 100755
index 0000000..770c0d8
--- /dev/null
+++ b/scripts/run_tests
@@ -0,0 +1,33 @@
+#!/bin/bash
+#
+# Copyright 2010 Google Inc.
+# All Rights Reserved.
+# Author: jimbankoski@google.com (Jim Bankoski)
+
+if [ $# -ne 4 ]
+then
+  echo Encodes all the y4m files in the directory at the bitrates specified by
+  echo the first 3 parms and stores the results in a subdirectory named by the
+  echo 4th parameter:
+  echo
+  echo Usage:    run_tests start-kbps end-kbps step-kbps directory-to-store-results
+  echo Example:  run_tests 200 500 50 baseline
+  exit
+fi
+s=$1
+e=$2
+step=$3
+newdir=$4
+
+for i in ./*y4m
+do
+  for (( b=$s; b<= $e; b+= $step ))
+  do
+    be $i $b
+  done
+  mv opsnr.stt $i.stt
+done
+
+mkdir $newdir
+mv *.stt $newdir
+mv *.webm $newdir
diff --git a/scripts/visual_metrics.py b/scripts/visual_metrics.py
new file mode 100755
index 0000000..0d6e1b8
--- /dev/null
+++ b/scripts/visual_metrics.py
@@ -0,0 +1,360 @@
+#!/usr/bin/python2.4
+#
+# Copyright 2010 Google Inc.
+# All Rights Reserved.
+
+"""Converts video encoding result data from text files to visualization
+data source."""
+
+__author__ = "jzern@google.com (James Zern),"
+__author__ += "jimbankoski@google.com (Jim Bankoski)"
+
+import fnmatch
+import os
+import string
+import sys
+
+
+def FileBetter(fn1, fn2, p):
+  """
+  Compares two data files and determines which is better and by how
+  much. Also produces a histogram of how much better, by PSNR.
+  p is the metric.
+  """
+  # Store and parse our two files into lists of unique tuples
+  up = set([])
+
+  # Read the two files, parsing out lines starting with bitrate
+  f = open(fn1, "r")
+  for line in f:
+    f = string.split(line)
+    if line[0:1] != "B":
+      x = float(f[0]), float(f[p])
+      up.add(x)
+  u = sorted(up)
+  vp = set([])
+
+  f = open(fn2, "r")
+  for line in f:
+    f = string.split(line)
+    if line[0:1] != "B":
+      x = float(f[0]), float(f[p])
+      vp.add(x)
+  v = sorted(vp)
+
+  def GraphBetter(u, v, t):
+    """
+    Search through the sorted PSNR file for PSNRs on either side of
+    the PSNR from file 1.  Since both lists are sorted we really
+    should not have to search through the entire range, but these
+    are small files.."""
+    total = 0.0
+    c = 0
+    for br, psnr in u:
+      for i in range(len(v) - 1):
+        b0, p0 = v[i]
+        b1, p1 = v[i+1]
+        # We have a point on either side of our PSNR range
+        if psnr > p0 and psnr <= p1:
+
+          # Calculate a slope
+          if p1-p0 != 0:
+            s = (b1-b0)/(p1-p0)
+          else:
+            s = 0
+
+          ebr = b0 + (psnr-p0) * s
+          # Calculate percentage difference in which direction?
+          if t == 0:
+            d = (br - ebr) / br
+          else:
+            d = (br - ebr) / ebr
+
+          total += d
+          c += 1
+          break
+
+    # Calculate the average improvement between graphs
+    if c != 0:
+      avg = total/c
+    else:
+      avg = 0.0
+    return avg
+
+  # Be fair to both graphs
+  a = GraphBetter(u, v, 1)
+  b = GraphBetter(v, u, 0)
+  c = (a-b)/2
+
+  return c
+
+
+def HandleFiles(variables):
+  """FIXME!
+  """
+  base = variables[1]
+  old = variables[2]
+  print """
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+   "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>VP8 Results</title>
+<style type="text/css">
+.bold-font { font-weight: bold; font-size: 14px;}
+.small-font { font-size: 14px;}
+.gold-border { border: 2px solid white;  background-color: #eeeeff;}
+.orange-background {  background-color: orange; }
+.small-margin { margin: 0; padding: 0;}
+.beige-background { background-color: beige; }
+.invisible { font-size: 1px; background-color:white;color:white; height: 0px;}
+#indented{position:absolute;left :150px;}
+#midcol{margin:0 0px;}
+</style>
+<script type="text/javascript" src="http://www.google.com/jsapi"></script>
+<script type="text/javascript" src="http://danvk.org/dygraphs/dygraph-combined.js"></script>
+<script type="text/javascript">
+"""
+
+  print "var filestable =[];"
+  print "var snrs =[];"
+
+  for column in range(1, 6):
+    dirs = variables[3:len(variables)]
+
+    dir_list = sorted(fnmatch.filter(os.listdir(base+"/"+old), "*.stt"))
+
+    print "filestable[" + str(column) + "] =  { cols : [{id:'file',label:'File',type:'string'},"
+
+    for d in dirs:
+      print "{id:'" +d+"', label:'"+d+"',type:'number'}",
+      if d == dirs[len(dirs)-1]:
+        print "],"
+      else:
+        print ","
+
+    print "rows : ["
+
+    sumoverall = {}
+    for d in dirs:
+      sumoverall[d] = 0
+
+    countoverall = 0
+    for f in dir_list:
+      print "{c:[",
+      print "{f:'"+f+"'},",
+      o = base +"/" + old + "/" + f
+
+      for d in dirs:
+        n = base +"/" + d + "/" + f
+        if os.path.isfile(n):
+          overall = FileBetter(o, n, column)
+          print "{v:" +str(100*overall) +"}",
+          if d == dirs[len(dirs)-1]:
+            print "]",
+          else:
+            print ",",
+
+          sumoverall[d] += overall
+      countoverall+=1
+      print "}, "
+
+    print "{c:[",
+    print "{f:'OVERALL'},",
+    for d in dirs:
+      print "{v:" +str(100*sumoverall[d]/countoverall) +"}",
+      if d == dirs[len(dirs)-1]:
+        print "]",
+      else:
+        print ",",
+    print "}"
+    print "]"
+    print "}"
+
+    print "snrs[" + str(column) + "] =  ["
+    j = 0
+    for f in dir_list:
+      print '"' +"{ cols : [{id:'datarate',label:'Datarate',type:'number'},",
+      print "{ id : '" + f +":" + old + "', label:'" + old + "', type:'number' },",
+      for d in dirs:
+        print "{id:'" +d+"', label:'"+d+"',type:'number'}",
+        if d == dirs[len(dirs)-1]:
+          print "],",
+        else:
+          print ",",
+
+      print "rows : [ ",
+
+      prec = ","
+      if len(dirs) > 1:
+        postc = ",,,,,,,,,,,,,,,,,,,"[:len(dirs)-1]
+      else:
+        postc = ""
+      for d in dirs:
+        n = base +"/" + d + "/" + f
+        a = open(n, "r")
+        for line in a:
+          g = string.split(line)
+          if g[0] != "Bitrate":
+            print "{c:[{v:"+g[0] +"},",
+            print prec,
+            print "{v:"+g[column]+"}",
+            print postc + "]},",
+        prec += ","
+        postc = postc[1:]
+
+      o = base +"/" + old + "/" + f
+      postc = ",,,,,,,,,,,,,,,,,,,,"[:len(dirs)]
+      f = open(o, "r")
+      l = f.readlines()
+      for i in range(len(l)):
+        line = l[i]
+        f = string.split(line)
+        if f[0] != "Bitrate":
+          print "{c:[{v:"+f[0] +"},{v:"+f[column]+"}"+postc+"]}",
+          if i < len(l)-1:
+            print ",",
+
+      print "]"+'}"',
+      j += 1
+      if j < len(dir_list):
+        print ","
+
+    print "]"
+
+  print """
+var selected = 0
+var imagestr = '';
+var bettertable=0;
+var chart=0;
+var better=0;
+var psnrdata=0;
+var psnrview=0;
+var column=1;
+var formatter=0;
+function changeColumn(col){
+  column = col;
+  draw_files();
+}
+function setup_vis(){
+  chart = new google.visualization.ScatterChart(document.getElementById("psnrgraph"));
+  bettertable = new google.visualization.Table(document.getElementById("bettertable"));
+  formatter = new google.visualization.NumberFormat({fractionDigits: 2});
+  draw_files();
+}
+function draw_files(){
+  var cssClassNames = {
+      'headerRow': 'blue-font small-font bold-font small-margin',
+      'tableRow': 'small-font small-margin',
+      'oddTableRow': 'beige-background small-font small-margin',
+      'selectedTableRow': 'orange-background small-font',
+      'hoverTableRow': 'small-font gold-border',
+      'headerCell': 'gold-border small-margin',
+      'tableCell': 'small-margin'};
+
+  var options = {height:640, 'allowHtml': true,'cssClassNames': cssClassNames};
+  if (better !=0) delete better;
+  better = new google.visualization.DataTable(filestable[column])
+"""
+  for i in range(len(dirs)):
+    print "  formatter.format(better," + str(1+i) +");"
+
+  print """
+  bettertable.draw(better,options);
+  google.visualization.events.addListener(bettertable, 'select', selectBetterHandler);
+  query_file()
+
+}
+function query_file() {
+  imagestr = better.getFormattedValue(selected,0)
+  var psnrjson = eval('(' + snrs[column][selected] + ')');
+  psnrdata = new google.visualization.DataTable(psnrjson, 0.6);//new google.visualization.DataTable((psnr)s, 0.6);
+  if( psnrview != 0 ) delete psnrview;
+  psnrview = new google.visualization.DataView(psnrdata);
+  chart.draw(psnrview, {curveType:'function',title:imagestr,pointSize:2,lineWidth:1,width:840,height:640  });
+  google.visualization.events.addListener(chart, 'select', chartSelect);
+}
+function chartSelect(){
+  var selection = chart.getSelection();
+  var message = '';
+  var min = psnrview.getFormattedValue(selection[0].row,0);
+  var max = psnrview.getFormattedValue(selection[selection.length-1].row,0);
+  min = min / 3
+  max = max * 3
+  psnrview.setRows(psnrdata.getFilteredRows([{column: 0,minValue: min, maxValue:max}]));
+  chart.draw(psnrview, {curveType:'function',title:imagestr,pointSize:2,lineWidth:1,width:840,height:640  });
+}
+function selectBetterHandler() {
+  var selection = bettertable.getSelection();
+  for (var i = 0; i < selection.length; i++) {
+    item = selection[i];
+  }
+  selected = item.row
+  query_file()
+}
+google.load('visualization', '1', {'packages' : ['corechart','table']});
+google.setOnLoadCallback(setup_vis);
+</script>
+</head>
+
+<body >
+  <form name="myform">
+    <input type="radio" checked name="column" value="1" onClick="changeColumn('1')" />Avg PSNR
+    <input type="radio" name="column" value="2" onClick="changeColumn('2')" />Glb PSNR
+    <input type="radio" name="column" value="1" onClick="changeColumn('3')" />PP Avg PSNR
+    <input type="radio" name="column" value="2" onClick="changeColumn('4')" />PP Glb PSNR
+    <input type="radio" name="column" value="5" onClick="changeColumn('5')" />SSIM
+  </form>
+  <div id="bettertable" style="float:left"></div>
+  <div id="psnrgraph" style="float:left"></div>
+</body>
+</html>
+"""
+  return
+
+if len(sys.argv) < 3:
+  print """
+This script creates html for displaying visually metric data produced
+in a video stats file,  as created by the WEBM project when enable_psnr
+is turned on:
+
+Usage: visual_metrics.py base_directory baseline_dir sub_dir [ sub_dir2 ...]
+
+the script parses each metrics file [see below] in the baseline directory =>
+base_directory/baseline_dir and looks for that same file in each of the
+sub_dirs, and compares the resultant metrics bitrate, avg psnr, glb psnr,
+pp avg psnr, pp glb psnr, and ssim. "
+It provides a table in which each row is a file in the baseline directory,
+and a column for each subdir, with the cells representing how that clip compares
+to baseline for that subdir.   A graph is given for each which compares filesize
+to that metric.  If you click on a point in the graph it zooms in on that point.
+
+a SAMPLE metrics file:
+
+Bitrate  AVGPsnr  GLBPsnr  AVPsnrP  GLPsnrP  VPXSSIM    Time(us)
+ 25.911   38.242   38.104   38.258   38.121   75.790    14103
+Bitrate  AVGPsnr  GLBPsnr  AVPsnrP  GLPsnrP  VPXSSIM    Time(us)
+ 49.982   41.264   41.129   41.255   41.122   83.993    19817
+Bitrate  AVGPsnr  GLBPsnr  AVPsnrP  GLPsnrP  VPXSSIM    Time(us)
+ 74.967   42.911   42.767   42.899   42.756   87.928    17332
+Bitrate  AVGPsnr  GLBPsnr  AVPsnrP  GLPsnrP  VPXSSIM    Time(us)
+100.012   43.983   43.838   43.881   43.738   89.695    25389
+Bitrate  AVGPsnr  GLBPsnr  AVPsnrP  GLPsnrP  VPXSSIM    Time(us)
+149.980   45.338   45.203   45.184   45.043   91.591    25438
+Bitrate  AVGPsnr  GLBPsnr  AVPsnrP  GLPsnrP  VPXSSIM    Time(us)
+199.852   46.225   46.123   46.113   45.999   92.679    28302
+Bitrate  AVGPsnr  GLBPsnr  AVPsnrP  GLPsnrP  VPXSSIM    Time(us)
+249.922   46.864   46.773   46.777   46.673   93.334    27244
+Bitrate  AVGPsnr  GLBPsnr  AVPsnrP  GLPsnrP  VPXSSIM    Time(us)
+299.998   47.366   47.281   47.317   47.220   93.844    27137
+Bitrate  AVGPsnr  GLBPsnr  AVPsnrP  GLPsnrP  VPXSSIM    Time(us)
+349.769   47.746   47.677   47.722   47.648   94.178    32226
+Bitrate  AVGPsnr  GLBPsnr  AVPsnrP  GLPsnrP  VPXSSIM    Time(us)
+399.773   48.032   47.971   48.013   47.946   94.362    36203
+
+sample use:
+visual_metrics.py . vp8_20101201 vp8_teststatic vp8_teststatic2 > metrics.html
+  """
+else:
+  HandleFiles(sys.argv)
diff --git a/webm-contributor-guide.html b/webm-contributor-guide.html
new file mode 100644
index 0000000..4a5f038
--- /dev/null
+++ b/webm-contributor-guide.html
@@ -0,0 +1,326 @@
+<html>
+<head>
+  <title>contributor-guide: VP8 Contributors Guide | Webm Project</title>
+  <meta name="generator" content="kramdown 0.11.0" />
+  <style type="text/css">
+  body {
+    color: #000;
+    background-color: #fff;
+    margin: 10% 30% 10% 10%;
+    font-family: "Liberation Sans", "DejaVu Sans", "Bitstream Vera Sans", Arial, sans-serif;
+    line-height: 1.4;
+  }
+  h2 {
+    border-bottom: 1px solid #ccc;
+    padding-bottom: 0;
+  }
+  table {
+    border-collapse: collapse;
+  }
+  th, td {
+    border: 1px solid #999;
+    padding: .5em .7em;;
+  }
+  th {
+    color: #fff;
+    background-color: #000;
+  }
+  td {
+  }
+  hr {
+  }
+  pre {
+    background-color: #eee;
+    padding: 1em;
+    border: 1px solid #ccc;
+    /*width: 42em;*/
+    overflow: auto;
+    font-family: "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Consolata, monospace;
+  }
+  pre.terminal {
+    color: #fff;
+    background-color: #000;
+    border: 1px solid #ccc;
+    max-height: 30em;
+  }
+  code {
+    color: #060;
+    background-color: #eee;
+    padding: 0 3px;
+    font-family: "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Consolata, monospace;
+  }
+  pre code {
+    padding: 0;
+  }
+  pre.terminal code {
+    color: #fff;
+    background-color: #000;
+    font-size: smaller;
+  }
+  #markdown-toc ul {
+    list-style-type: disc;
+  }
+  ul#markdown-toc {
+    margin-top: -1em;
+    visibility: hidden;
+    -webkit-padding-start: 0;
+  }
+  ul#markdown-toc ul {
+    visibility: visible;
+  }
+  ul#markdown-toc ul ul{
+    visibility: visible;
+  }
+  ul#markdown-toc + hr {
+    margin-bottom: 3em;
+  }
+  .caption {
+  }
+  /* Admonitions, DocBook style
+  * Icons provided by the Tango Desktop Project, http://tango.freedesktop.org/
+  */
+  div.admon {
+    background-position: 10px 14px;
+    background-repeat: no-repeat;
+    padding: 1em;
+    margin-top: 1.5em;
+    margin-bottom: 1.5em;
+    border: 1px solid #ccc;
+    -moz-border-radius: 10px;
+    -webkit-border-radius: 10px;
+    /*width: 42em;*/
+  }
+  div.admon p:first-child {
+    font-weight: bold;
+    margin-bottom: .5em;
+  } 
+  div.admon a, div.admon a:visited { }
+  div.admon a:hover, div.admon a:active { }
+  div.admon p {
+    padding: 0;
+    margin: 0;
+    padding-left: 48px;
+  }
+  div.note {
+    background-color: #ffc;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAjCAYAAAD48HgdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAKtwAACrcB78nXjgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAg/SURBVFiFvZh7bBTHHce/szu7O3sPPw7bOIcxuA7YvOyAwYE0JIdLXk1Dq7QJEaQiilClVKFRhdQ/qlT8Qdp/ivoIaavSPxKVSlHkqgqlTVCamKdM0whBDMbGDx4+P7DP9p3vtbd7uzP9w76rz/bZuGn6k0Yj/ebx+8x3ZvY3WiKEQD5763X9T0KIymTC3OnxsDcchz9lGNY2t1vbbzv8NTOVbtSY8qgQ4k3LtB+iVKqUJKnZsuydAKCq9GPO+XO2zftUjbYSQn5gptJnNab8S5bIrw78zPx1vthkLrCjR4/WKxj9Nkv+7mBRsYsMRJveIdE/v7RmvZ9e66l9T0qd/lbj1hXui5eKT0pW2/ZAU3Xx2QvmP2GHKpu+Vuk/fWa0EwB2BEpqWz7pGwQt7Xv0YW3rmZbeMFfrzm9rCD/z6cU7cXX5z39smub7Bw4c6J/JIM10HDt2rKS0tLRlbV3jT5judWnMrd9fu/UVTffqjDFlxaoHX9RYgUfXVbJsxaZdKissdnsYfGU1W3V3id/jZfAUVtR6CitqPV4G5irxF5Ws2ur2MKhaQXFZRd0uXVeJxgq8VdUr33S73efmUmwWmGVZNX5/uWdsLIJwOIq7Q2EMDY/BSKZw+9YYRkJhmKaDrhujCI3HkLYltLcNIhy1kLJkXP28H/GkQCwp0HalH4YlYTxi4VrbAMw0wd2RMLo6QzBSaYyOhojb4/YdOXLEPZODznQIIXyKosg2l0F9L8Cyx6DSUijl+xFOdkD1VkMq24/BcCvoko0gykrcHPoI8pImCN1AV9/fIBU/AyEEuvpOAAVPQRAV3cFxcE8AQirAreE7sF0NMFMpFBYWE5fL5QOQmBcMwBJN06X16+vA16zD5AkUEKIxAz61gmezbZx/fVrb44AQU21NyHYXOyZrziEQACCgaRpGhkPEcRwfgOC8YG632790aRkpL79vFnG+GzyX/159jn1NENJdPNM/C0yWZb+iqBBCIJ1OI5H4j8JfBGCmv6CgAJIkQdd1VQjhWxCMELJUURQIIWAYBoaGhuYNthBAPp/L5YKiKFBVVQOwZEEwznlpBszj8aCmpuYLb2E+P+ccqqoSxtisczPX4S+mlEIIgXA4jK6urkUB3CtUfX09VFWFqqoghCwMRgjxSpIEzjmKioqwZcuWew62WGWFEBDcRvDaB9u+//TBv3KBZCLFXzveEhueBUYpVTKDYrEYBgYGFgzkcrmwfPnyRcGaqSQufPg2rpxrxjc3B+o2rHmj3rjVgcNtzY3fbfKunQuMZsBUVUVZWdmCwSil4JzPCTCzb8pI4OzJ36O37RwCgb14/huvY/W584TeOAWltxebKuD7AKjKAWtubpZVVc2CUUpRWFi4oAKZ/vNBGckYzpz4LdounsCDD1Th2cfqYDsKBtweWF4vSi5dQr9lobvUARSIHLCRkZGi6upqIYSYU4H/5nYmYmG0vP8Wblz+CNseqMLLux+DRIBU5BaM0CcwVv4UQUnCdTWBzq8geddNfnH8VKwzB8xxHB9jTOacQwiBiYkJ3L59e0GwuSwZj+DahXcRHmjD9i3346HndgLCQSrcg1S4F8KxMB5zkOhqx53rH4o768hncVMcPH4qegGYcStlWfbpup7dysx3bDFqRcMjaPnLLzF85woe3lSNqkeegOAWjLFOmOGbENzGSMRGRzCFvrCKiurzKN3x/IQ5HPvqoUOH7Mw8dEYQn6ZpSkYxy7IQjUbzgk33TYzfRevff4PYaC+2N1Tj8c1N4LaB5MhVpCK3IbiDgfE0OvosDEZVrN6wA6/88EdY6q9Ca2urnUzfLAYQmg9Myyhm2zYSicSCavX1XMLlfxzFzm1rsWx7ANxKIDF0GeZEHxzO0RdKoyNoYTimYFXdTnxnxz6srt0AWZbBOQdjTOKc+/KCEULuUxRFyhx8XddRWVk5r1o97RfRef4PePnVV2FHBxHvOQ0r2g/bEbh510TnIEckpaExsA/7nv4edHdBdnymMMYopTQnkeeAcc79mXQEAJFIBN3d3XnVCvV34OZn72DvSy9Aoiq0shoMX3oPPcEUrvdzxCwFqzbtwua6J0AVFe0dXdnx69atg6Zp4JxDURTFMIz8YLZtl2cSODD5NGloaJgFlUql0HP9U4z2tuDzWyZ2x0MYHR1CPB7Hx5ctTBgM9Y+8iDUNT0KZyoeZomkaCCE5qlFKNcuyct5kOWCWZZVOVywajSIYzHlYwjAMjA524UzzYRhpijKvjj++exbMUwrFsxTFa3ejZvl6MMYwNj4OTdPAGIOmadB1HY7jQNf1LNzUC0MCkJPIc8BM0/RRSuE4DoQQ2TM23Tjn8OoEaw+fhKzoME0TpmnCtm3Ytp1dlCzLoJRCURQwxsAYg67rUFU1q1amnorpnw/MK8tyNoAkSXC5XNn2zGTVNfU5Ps55tmTGEUKy9XSbK30pigLHccrzggFQ8qWj6WAzfYQQyLIMWZZn9Z0+Jt9nh1IK0zRL8oIRQtTMqu8Faj7YxfSdAst/KyVJkjMruBf7olAZk2UZhmEUEUKImOqYJairqyvbs2cPtSwLhmHcE9hiAfKZ2+2G4zg6gDJCSEwIkaQAQAhhfr+/yHEc9erVqwiFQgtM9b+1iooKcM4pgKJJHGJnFFPi8Tjv7u7mgUAAXq/3/wpm2zYikUgMgAZABaCQqVulAyjauHHjk8uWLdsLgGESffH7skjjnFPHcSba29vfDgaDbQAiAEay/8cIIR4ABQBcAHQAzlT5Mk3CpAg2AANAHMCoEMLO+XFHCJEwKacGgEwN+DKNTsGlARhCiHSm4d9pb5IOkgAFYAAAAABJRU5ErkJggg==)
+  }
+  div.note code {
+    background-color: #eeb;
+  }
+  div.tip {
+    background-color: #eee;
+    background-image: url(data:image/png;base64,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)
+  }
+  div.tip code {
+    background-color: #ddd;
+  }
+  div.caution { /* Shares "warning" icon */
+    background-color: #ffc;
+    background-image: url(images/tango-icons/warning.png)
+  }
+  div.warning {
+    background-color: #ffc;
+    background-image: url(images/tango-icons/warning.png)
+  }
+  div.important {
+    background-color: #ffc;
+    background-image: url(images/tango-icons/important.png)
+  }
+  </style>
+</head>
+<body>
+
+<h1 id="contributing-source-code-to-libvpx">Contributing Source Code to libvpx</h1>
+
+<p><em>Revised 2010-12-22</em></p>
+
+<p>This document will help guide you through contributing code to the WebM 
+Project and libvpx.</p>
+
+<hr />
+
+<p><strong>Contents</strong></p>
+
+<ul id="markdown-toc">
+  <li><a href="#contributing-source-code-to-libvpx">Contributing Source Code to libvpx</a>    <ul>
+      <li><a href="#required-packages">Required Packages</a></li>
+      <li><a href="#become-a-contributor">Become a Contributor</a></li>
+      <li><a href="#subscribe-to-codec-devel">Subscribe to codec-devel</a></li>
+      <li><a href="#download-test-clips">Download Test Clips</a></li>
+      <li><a href="#download-test-scripts">Download Test Scripts</a></li>
+      <li><a href="#download-build-and-test-libvpx">Download, Build and Test libvpx</a></li>
+      <li><a href="#submit-your-patches">Submit Your Patches</a></li>
+    </ul>
+  </li>
+</ul>
+
+<hr />
+
+<p>In general, most of the on-going work on libvpx concerns speed and 
+quality improvement. A developer typically follows this workflow:</p>
+
+<ol>
+  <li>Work on the source code.</li>
+  <li>Recompile the <code>vpxenc</code> encoder binary.</li>
+  <li>Perform a video encode job with the new binary.</li>
+  <li>Evaluate the results, comparing to an identical encode done with a 
+prior version of <code>vpxenc</code>.</li>
+</ol>
+
+<p>Once meaningful improvement is achieved, the developer submits his code 
+revisions to <code>libvpx</code>.</p>
+
+<p>Below we describe in more detail how the core libvpx developers 
+evaluate their own work, so that new contributors can replicate the 
+process and have their code contributions approved and merged more 
+easily.</p>
+
+<h2 id="required-packages">Required Packages</h2>
+
+<ul>
+  <li>A Bash shell</li>
+  <li>Python 2.4</li>
+  <li>A modern web browser (like Google Chrome)</li>
+</ul>
+
+<h2 id="become-a-contributor">Become a Contributor</h2>
+
+<p>All contributors are welcome. The WebM Project website has details on 
+configuring your machine and creating an account in our code review 
+system, so review the information at 
+<strong><a href="http://www.webmproject.org/code/">http://www.webmproject.org/code/</a></strong> to get started.</p>
+
+<h2 id="subscribe-to-codec-devel">Subscribe to codec-devel</h2>
+
+<p><strong><em>codec-devel</em></strong> is the mailing list (and Google Group) for developers 
+working on the libvpx library or researching next generation codecs. 
+While anyone may post to codec-devel, subscribing gives you unmoderated 
+access.</p>
+
+<ul>
+  <li>Archive: <a href="https://groups.google.com/a/webmproject.org/group/codec-devel">https://groups.google.com/a/webmproject.org/group/codec-devel</a></li>
+  <li>Subscribe: &lt;codec-devel+subscribe@webmproject.org&gt;</li>
+  <li>Post: <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#099;&#111;&#100;&#101;&#099;&#045;&#100;&#101;&#118;&#101;&#108;&#064;&#119;&#101;&#098;&#109;&#112;&#114;&#111;&#106;&#101;&#099;&#116;&#046;&#111;&#114;&#103;">&#099;&#111;&#100;&#101;&#099;&#045;&#100;&#101;&#118;&#101;&#108;&#064;&#119;&#101;&#098;&#109;&#112;&#114;&#111;&#106;&#101;&#099;&#116;&#046;&#111;&#114;&#103;</a></li>
+</ul>
+
+<p>Though <em>codec-devel</em> offers a web interface, many subscribers treat it 
+as a simple mailing list and interact solely through their mail clients.</p>
+
+<h2 id="download-test-clips">Download Test Clips</h2>
+
+<ol>
+  <li>Create a directory to hold the clips (e.g., <code>~/derf_cif</code> on Linux
+or <code>c:/derf_cif</code> on Windows).</li>
+  <li>Visit <a href="http://media.xiph.org/video/derf/">http://media.xiph.org/video/derf/</a> with your web browser.</li>
+  <li>Download each of the the CIF clips found there, in YUV4MPEG (y4m) 
+format, to the directory you created.</li>
+</ol>
+
+<div class="admon tip">
+  <p>Encoding Only a Few Test Clips</p>
+
+  <p>Normally, you won&rsquo;t want to encode the entire set of test clips, which 
+can be very time-consuming. Instead, consider symlinking only the clips 
+you want to use from their storage directory (e.g. <code>~/derf_cif</code>) to a 
+working directory (e.g. <code>~/derf_working</code>), and running your tests there.</p>
+</div>
+
+<h2 id="download-test-scripts">Download Test Scripts</h2>
+
+<p>Test scripts (and this document) are available in the 
+<code>contributor-guide</code> Git project:</p>
+
+<pre><code>$ git clone git://review.webmproject.org/contributor-guide.git
+$ cd contributor-guide
+</code></pre>
+
+<p>Symlink or physically copy the following scripts to somewhere in your 
+$PATH:</p>
+
+<ul>
+  <li><code>be</code></li>
+  <li><code>run_tests</code></li>
+  <li><code>visual_metrics.py</code></li>
+</ul>
+
+<h2 id="download-build-and-test-libvpx">Download, Build and Test libvpx</h2>
+
+<ol>
+  <li>
+    <p>To get started, <strong>clone the libvpx repository</strong>. After cloning, 
+you&rsquo;ll be working in the master branch by default.</p>
+
+    <pre><code>$ git clone git://review.webmproject.org/libvpx.git
+$ cd libvpx
+</code></pre>
+
+    <p><strong>Important:</strong>  If your idea necessitates a change to the VP8 
+format itself, you&rsquo;ll want to work in the libvpx experimental 
+branch instead:</p>
+
+    <pre><code>$ git clone git://review.webmproject.org/libvpx.git
+$ cd libvpx
+$ git checkout experimental
+</code></pre>
+  </li>
+  <li>
+    <p><strong>Configure and build libvpx.</strong> Be sure to run the configure 
+script with <code>--enable-psnr</code>, which causes the encoder (<code>vpxenc</code>) 
+to output statistical data as well as a video file. For example:</p>
+
+    <pre><code>$ ./configure --disable-codecs --enable-vp8 --enable-psnr --enable-debug --disable-install-docs --log=yes
+$ make
+</code></pre>
+
+    <p>To learn more about configuration options, do:</p>
+
+    <pre><code>$ ./configure --help
+</code></pre>
+  </li>
+  <li>
+    <p><strong>Run some encodes</strong> using the provided scripts.  Example:</p>
+
+    <pre><code>$ cd &lt;test clip directory&gt;
+$ ./run_tests 200 500 50 baseline
+</code></pre>
+
+    <p>In this example, <code>run_tests</code> will encode each <code>y4m</code> file in the 
+current directory at bitrates of 200, 250, 300, 350, 400, 450 and 
+500 kbps (start at 200, end at 500, 50 kbps increments). It will 
+create a directory <code>baseline</code> and write its output there.</p>
+
+    <p>Output consists of <code>webm</code> video files and <code>stt</code> files containing 
+statistics for each encode. If the test encodes are 2-pass 
+(default), an <code>fpf</code> file (first-pass data file) is also written 
+for each input file, and will be reused on subsequent 2-pass 
+encodes if not deleted.</p>
+  </li>
+  <li>
+    <p><strong>Make your changes to libvpx</strong>, rebuild, and re-run the tests 
+using a different output directory name. Example:</p>
+
+    <pre><code>$ ./run_tests 200 500 50 mytweak
+</code></pre>
+
+    <p>Alternatively, change the parameters in the batch encoder script 
+(<code>be</code>) that&rsquo;s called by <code>run_tests</code>. <code>be</code> in turn calls <code>vpxenc</code>. </p>
+  </li>
+  <li>
+    <p>When the tests are finished, run <code>visual_metrics.py</code> to generate 
+an <strong>HTML-format report</strong> that compares <code>mytweak</code> with <code>baseline</code>.</p>
+
+    <pre><code>$ ./visual_metrics.py . baseline mytweak &gt; mytweak.html
+</code></pre>
+  </li>
+  <li>
+    <p><strong>View the report</strong> by opening <code>mytweak.html</code> in a web browser.</p>
+  </li>
+</ol>
+
+<h2 id="submit-your-patches">Submit Your Patches</h2>
+
+<p>See the detailed information at <strong><a href="http://www.webmproject.org/code/contribute/submitting-patches/">http://www.webmproject.org/code/contribute/submitting-patches/</a></strong>.</p>
+
+</body>
+</html>
diff --git a/webm-contributor-guide.txt b/webm-contributor-guide.txt
new file mode 100644
index 0000000..73bce43
--- /dev/null
+++ b/webm-contributor-guide.txt
@@ -0,0 +1,185 @@
+
+Contributing Source Code to libvpx
+==================================
+
+_Revised 2010-12-22_
+
+This document will help guide you through contributing code to the WebM 
+Project and libvpx.
+
+* * *
+
+**Contents**
+
+* TOC placeholder
+{:toc}
+
+* * *
+
+In general, most of the on-going work on libvpx concerns speed and 
+quality improvement. A developer typically follows this workflow:
+
+  1. Work on the source code.
+  2. Recompile the `vpxenc` encoder binary.
+  3. Perform a video encode job with the new binary.
+  4. Evaluate the results, comparing to an identical encode done with a 
+     prior version of `vpxenc`.
+
+Once meaningful improvement is achieved, the developer submits his code 
+revisions to `libvpx`.
+
+Below we describe in more detail how the core libvpx developers 
+evaluate their own work, so that new contributors can replicate the 
+process and have their code contributions approved and merged more 
+easily.
+
+
+Required Packages
+-----------------
+
+  * A Bash shell
+  * Python 2.4
+  * A modern web browser (like Google Chrome)
+
+
+Become a Contributor
+--------------------
+
+All contributors are welcome. The WebM Project website has details on 
+configuring your machine and creating an account in our code review 
+system, so review the information at 
+**<http://www.webmproject.org/code/>** to get started.
+
+
+Subscribe to codec-devel
+------------------------
+
+**_codec-devel_** is the mailing list (and Google Group) for developers 
+working on the libvpx library or researching next generation codecs. 
+While anyone may post to codec-devel, subscribing gives you unmoderated 
+access.
+
+  * Archive: <https://groups.google.com/a/webmproject.org/group/codec-devel>
+  * Subscribe: <codec-devel+subscribe@webmproject.org>
+  * Post: <codec-devel@webmproject.org>
+
+Though _codec-devel_ offers a web interface, many subscribers treat it 
+as a simple mailing list and interact solely through their mail clients.
+
+
+Download Test Clips
+-------------------
+
+  1. Create a directory to hold the clips (e.g., `~/derf_cif` on Linux
+     or `c:/derf_cif` on Windows).
+  2. Visit <http://media.xiph.org/video/derf/> with your web browser.
+  3. Download each of the the CIF clips found there, in YUV4MPEG (y4m) 
+     format, to the directory you created.
+
+<div class="admon tip" markdown="1">
+Encoding Only a Few Test Clips
+
+Normally, you won't want to encode the entire set of test clips, which 
+can be very time-consuming. Instead, consider symlinking only the clips 
+you want to use from their storage directory (e.g. `~/derf_cif`) to a 
+working directory (e.g. `~/derf_working`), and running your tests there.
+</div>
+
+
+Download Test Scripts
+---------------------
+
+Test scripts (and this document) are available in the 
+`contributor-guide` Git project:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+$ git clone git://review.webmproject.org/contributor-guide.git
+$ cd contributor-guide
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Symlink or physically copy the following scripts to somewhere in your 
+$PATH:
+
+  * `be`
+  * `run_tests`
+  * `visual_metrics.py`
+
+
+Download, Build and Test libvpx
+-------------------------------
+
+  1. To get started, **clone the libvpx repository**. After cloning, 
+     you'll be working in the master branch by default.
+
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     $ git clone git://review.webmproject.org/libvpx.git
+     $ cd libvpx
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+     **Important:**  If your idea necessitates a change to the VP8 
+     format itself, you'll want to work in the libvpx experimental 
+     branch instead:
+
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     $ git clone git://review.webmproject.org/libvpx.git
+     $ cd libvpx
+     $ git checkout experimental
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  2. **Configure and build libvpx.** Be sure to run the configure 
+     script with `--enable-psnr`, which causes the encoder (`vpxenc`) 
+     to output statistical data as well as a video file. For example:
+
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     $ ./configure --disable-codecs --enable-vp8 --enable-psnr --enable-debug --disable-install-docs --log=yes
+     $ make
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+     To learn more about configuration options, do:
+     
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     $ ./configure --help
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     
+  3. **Run some encodes** using the provided scripts.  Example:
+
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     $ cd <test clip directory>
+     $ ./run_tests 200 500 50 baseline
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     
+     In this example, `run_tests` will encode each `y4m` file in the 
+     current directory at bitrates of 200, 250, 300, 350, 400, 450 and 
+     500 kbps (start at 200, end at 500, 50 kbps increments). It will 
+     create a directory `baseline` and write its output there.
+     
+     Output consists of `webm` video files and `stt` files containing 
+     statistics for each encode. If the test encodes are 2-pass 
+     (default), an `fpf` file (first-pass data file) is also written 
+     for each input file, and will be reused on subsequent 2-pass 
+     encodes if not deleted.
+
+  4. **Make your changes to libvpx**, rebuild, and re-run the tests 
+     using a different output directory name. Example:
+
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     $ ./run_tests 200 500 50 mytweak
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+     Alternatively, change the parameters in the batch encoder script 
+     (`be`) that's called by `run_tests`. `be` in turn calls `vpxenc`. 
+     
+  5. When the tests are finished, run `visual_metrics.py` to generate 
+     an **HTML-format report** that compares `mytweak` with `baseline`.
+
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     $ ./visual_metrics.py . baseline mytweak > mytweak.html
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  6. **View the report** by opening `mytweak.html` in a web browser.
+
+
+Submit Your Patches
+-------------------
+
+See the detailed information at **<http://www.webmproject.org/code/contribute/submitting-patches/>**.
\ No newline at end of file