diff --git a/api/current.xml b/api/current.xml
index d8afcef..9801036 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -34055,6 +34055,8 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<implements name="java.lang.Cloneable">
+</implements>
 <implements name="android.os.Parcelable">
 </implements>
 <constructor name="Intent"
@@ -93936,7 +93938,7 @@
 <method name="glPointSizePointerOES"
  return="void"
  abstract="false"
- native="true"
+ native="false"
  synchronized="false"
  static="true"
  final="false"
@@ -96959,7 +96961,7 @@
 <method name="glMatrixIndexPointerOES"
  return="void"
  abstract="false"
- native="true"
+ native="false"
  synchronized="false"
  static="true"
  final="false"
@@ -97517,7 +97519,7 @@
 <method name="glWeightPointerOES"
  return="void"
  abstract="false"
- native="true"
+ native="false"
  synchronized="false"
  static="true"
  final="false"
@@ -105206,6545 +105208,6 @@
 >
 </field>
 </class>
-<class name="GLES20"
- extends="java.lang.Object"
- abstract="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<constructor name="GLES20"
- type="android.opengl.GLES20"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</constructor>
-<method name="glActiveTexture"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="texture" type="int">
-</parameter>
-</method>
-<method name="glAttachShader"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="shader" type="int">
-</parameter>
-</method>
-<method name="glBindAttribLocation"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="index" type="int">
-</parameter>
-<parameter name="name" type="java.lang.String">
-</parameter>
-</method>
-<method name="glBindBuffer"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="buffer" type="int">
-</parameter>
-</method>
-<method name="glBindFramebuffer"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="framebuffer" type="int">
-</parameter>
-</method>
-<method name="glBindRenderbuffer"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="renderbuffer" type="int">
-</parameter>
-</method>
-<method name="glBindTexture"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="texture" type="int">
-</parameter>
-</method>
-<method name="glBlendColor"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="red" type="float">
-</parameter>
-<parameter name="green" type="float">
-</parameter>
-<parameter name="blue" type="float">
-</parameter>
-<parameter name="alpha" type="float">
-</parameter>
-</method>
-<method name="glBlendEquation"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="mode" type="int">
-</parameter>
-</method>
-<method name="glBlendEquationSeparate"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="modeRGB" type="int">
-</parameter>
-<parameter name="modeAlpha" type="int">
-</parameter>
-</method>
-<method name="glBlendFunc"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="sfactor" type="int">
-</parameter>
-<parameter name="dfactor" type="int">
-</parameter>
-</method>
-<method name="glBlendFuncSeparate"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="srcRGB" type="int">
-</parameter>
-<parameter name="dstRGB" type="int">
-</parameter>
-<parameter name="srcAlpha" type="int">
-</parameter>
-<parameter name="dstAlpha" type="int">
-</parameter>
-</method>
-<method name="glBufferData"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="size" type="int">
-</parameter>
-<parameter name="data" type="java.nio.Buffer">
-</parameter>
-<parameter name="usage" type="int">
-</parameter>
-</method>
-<method name="glBufferSubData"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-<parameter name="size" type="int">
-</parameter>
-<parameter name="data" type="java.nio.Buffer">
-</parameter>
-</method>
-<method name="glCheckFramebufferStatus"
- return="int"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-</method>
-<method name="glClear"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="mask" type="int">
-</parameter>
-</method>
-<method name="glClearColor"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="red" type="float">
-</parameter>
-<parameter name="green" type="float">
-</parameter>
-<parameter name="blue" type="float">
-</parameter>
-<parameter name="alpha" type="float">
-</parameter>
-</method>
-<method name="glClearDepthf"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="depth" type="float">
-</parameter>
-</method>
-<method name="glClearStencil"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="s" type="int">
-</parameter>
-</method>
-<method name="glColorMask"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="red" type="boolean">
-</parameter>
-<parameter name="green" type="boolean">
-</parameter>
-<parameter name="blue" type="boolean">
-</parameter>
-<parameter name="alpha" type="boolean">
-</parameter>
-</method>
-<method name="glCompileShader"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shader" type="int">
-</parameter>
-</method>
-<method name="glCompressedTexImage2D"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="level" type="int">
-</parameter>
-<parameter name="internalformat" type="int">
-</parameter>
-<parameter name="width" type="int">
-</parameter>
-<parameter name="height" type="int">
-</parameter>
-<parameter name="border" type="int">
-</parameter>
-<parameter name="imageSize" type="int">
-</parameter>
-<parameter name="data" type="java.nio.Buffer">
-</parameter>
-</method>
-<method name="glCompressedTexSubImage2D"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="level" type="int">
-</parameter>
-<parameter name="xoffset" type="int">
-</parameter>
-<parameter name="yoffset" type="int">
-</parameter>
-<parameter name="width" type="int">
-</parameter>
-<parameter name="height" type="int">
-</parameter>
-<parameter name="format" type="int">
-</parameter>
-<parameter name="imageSize" type="int">
-</parameter>
-<parameter name="data" type="java.nio.Buffer">
-</parameter>
-</method>
-<method name="glCopyTexImage2D"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="level" type="int">
-</parameter>
-<parameter name="internalformat" type="int">
-</parameter>
-<parameter name="x" type="int">
-</parameter>
-<parameter name="y" type="int">
-</parameter>
-<parameter name="width" type="int">
-</parameter>
-<parameter name="height" type="int">
-</parameter>
-<parameter name="border" type="int">
-</parameter>
-</method>
-<method name="glCopyTexSubImage2D"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="level" type="int">
-</parameter>
-<parameter name="xoffset" type="int">
-</parameter>
-<parameter name="yoffset" type="int">
-</parameter>
-<parameter name="x" type="int">
-</parameter>
-<parameter name="y" type="int">
-</parameter>
-<parameter name="width" type="int">
-</parameter>
-<parameter name="height" type="int">
-</parameter>
-</method>
-<method name="glCreateProgram"
- return="int"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="glCreateShader"
- return="int"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="type" type="int">
-</parameter>
-</method>
-<method name="glCullFace"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="mode" type="int">
-</parameter>
-</method>
-<method name="glDeleteBuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="buffers" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glDeleteBuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="buffers" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glDeleteFramebuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="framebuffers" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glDeleteFramebuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="framebuffers" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glDeleteProgram"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-</method>
-<method name="glDeleteRenderbuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="renderbuffers" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glDeleteRenderbuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="renderbuffers" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glDeleteShader"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shader" type="int">
-</parameter>
-</method>
-<method name="glDeleteTextures"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="textures" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glDeleteTextures"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="textures" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glDepthFunc"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="func" type="int">
-</parameter>
-</method>
-<method name="glDepthMask"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="flag" type="boolean">
-</parameter>
-</method>
-<method name="glDepthRangef"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="zNear" type="float">
-</parameter>
-<parameter name="zFar" type="float">
-</parameter>
-</method>
-<method name="glDetachShader"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="shader" type="int">
-</parameter>
-</method>
-<method name="glDisable"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="cap" type="int">
-</parameter>
-</method>
-<method name="glDisableVertexAttribArray"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="index" type="int">
-</parameter>
-</method>
-<method name="glDrawArrays"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="mode" type="int">
-</parameter>
-<parameter name="first" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-</method>
-<method name="glDrawElements"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="mode" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="type" type="int">
-</parameter>
-<parameter name="indices" type="java.nio.Buffer">
-</parameter>
-</method>
-<method name="glEnable"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="cap" type="int">
-</parameter>
-</method>
-<method name="glEnableVertexAttribArray"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="index" type="int">
-</parameter>
-</method>
-<method name="glFinish"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="glFlush"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="glFramebufferRenderbuffer"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="attachment" type="int">
-</parameter>
-<parameter name="renderbuffertarget" type="int">
-</parameter>
-<parameter name="renderbuffer" type="int">
-</parameter>
-</method>
-<method name="glFramebufferTexture2D"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="attachment" type="int">
-</parameter>
-<parameter name="textarget" type="int">
-</parameter>
-<parameter name="texture" type="int">
-</parameter>
-<parameter name="level" type="int">
-</parameter>
-</method>
-<method name="glFrontFace"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="mode" type="int">
-</parameter>
-</method>
-<method name="glGenBuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="buffers" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGenBuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="buffers" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGenFramebuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="framebuffers" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGenFramebuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="framebuffers" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGenRenderbuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="renderbuffers" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGenRenderbuffers"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="renderbuffers" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGenTextures"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="textures" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGenTextures"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="textures" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGenerateMipmap"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-</method>
-<method name="glGetActiveAttrib"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="index" type="int">
-</parameter>
-<parameter name="bufsize" type="int">
-</parameter>
-<parameter name="length" type="int[]">
-</parameter>
-<parameter name="lengthOffset" type="int">
-</parameter>
-<parameter name="size" type="int[]">
-</parameter>
-<parameter name="sizeOffset" type="int">
-</parameter>
-<parameter name="type" type="int[]">
-</parameter>
-<parameter name="typeOffset" type="int">
-</parameter>
-<parameter name="name" type="byte[]">
-</parameter>
-<parameter name="nameOffset" type="int">
-</parameter>
-</method>
-<method name="glGetActiveAttrib"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="index" type="int">
-</parameter>
-<parameter name="bufsize" type="int">
-</parameter>
-<parameter name="length" type="java.nio.IntBuffer">
-</parameter>
-<parameter name="size" type="java.nio.IntBuffer">
-</parameter>
-<parameter name="type" type="java.nio.IntBuffer">
-</parameter>
-<parameter name="name" type="byte">
-</parameter>
-</method>
-<method name="glGetActiveUniform"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="index" type="int">
-</parameter>
-<parameter name="bufsize" type="int">
-</parameter>
-<parameter name="length" type="int[]">
-</parameter>
-<parameter name="lengthOffset" type="int">
-</parameter>
-<parameter name="size" type="int[]">
-</parameter>
-<parameter name="sizeOffset" type="int">
-</parameter>
-<parameter name="type" type="int[]">
-</parameter>
-<parameter name="typeOffset" type="int">
-</parameter>
-<parameter name="name" type="byte[]">
-</parameter>
-<parameter name="nameOffset" type="int">
-</parameter>
-</method>
-<method name="glGetActiveUniform"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="index" type="int">
-</parameter>
-<parameter name="bufsize" type="int">
-</parameter>
-<parameter name="length" type="java.nio.IntBuffer">
-</parameter>
-<parameter name="size" type="java.nio.IntBuffer">
-</parameter>
-<parameter name="type" type="java.nio.IntBuffer">
-</parameter>
-<parameter name="name" type="byte">
-</parameter>
-</method>
-<method name="glGetAttachedShaders"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="maxcount" type="int">
-</parameter>
-<parameter name="count" type="int[]">
-</parameter>
-<parameter name="countOffset" type="int">
-</parameter>
-<parameter name="shaders" type="int[]">
-</parameter>
-<parameter name="shadersOffset" type="int">
-</parameter>
-</method>
-<method name="glGetAttachedShaders"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="maxcount" type="int">
-</parameter>
-<parameter name="count" type="java.nio.IntBuffer">
-</parameter>
-<parameter name="shaders" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetAttribLocation"
- return="int"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="name" type="java.lang.String">
-</parameter>
-</method>
-<method name="glGetBooleanv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="boolean[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetBooleanv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetBufferParameteriv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetBufferParameteriv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetError"
- return="int"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="glGetFloatv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetFloatv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glGetFramebufferAttachmentParameteriv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="attachment" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetFramebufferAttachmentParameteriv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="attachment" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetIntegerv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetIntegerv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetProgramInfoLog"
- return="java.lang.String"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-</method>
-<method name="glGetProgramiv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetProgramiv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetRenderbufferParameteriv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetRenderbufferParameteriv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetShaderInfoLog"
- return="java.lang.String"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shader" type="int">
-</parameter>
-</method>
-<method name="glGetShaderPrecisionFormat"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shadertype" type="int">
-</parameter>
-<parameter name="precisiontype" type="int">
-</parameter>
-<parameter name="range" type="int[]">
-</parameter>
-<parameter name="rangeOffset" type="int">
-</parameter>
-<parameter name="precision" type="int[]">
-</parameter>
-<parameter name="precisionOffset" type="int">
-</parameter>
-</method>
-<method name="glGetShaderPrecisionFormat"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shadertype" type="int">
-</parameter>
-<parameter name="precisiontype" type="int">
-</parameter>
-<parameter name="range" type="java.nio.IntBuffer">
-</parameter>
-<parameter name="precision" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetShaderSource"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shader" type="int">
-</parameter>
-<parameter name="bufsize" type="int">
-</parameter>
-<parameter name="length" type="int[]">
-</parameter>
-<parameter name="lengthOffset" type="int">
-</parameter>
-<parameter name="source" type="byte[]">
-</parameter>
-<parameter name="sourceOffset" type="int">
-</parameter>
-</method>
-<method name="glGetShaderSource"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shader" type="int">
-</parameter>
-<parameter name="bufsize" type="int">
-</parameter>
-<parameter name="length" type="java.nio.IntBuffer">
-</parameter>
-<parameter name="source" type="byte">
-</parameter>
-</method>
-<method name="glGetShaderiv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shader" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetShaderiv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shader" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetString"
- return="java.lang.String"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="name" type="int">
-</parameter>
-</method>
-<method name="glGetTexParameterfv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetTexParameterfv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glGetTexParameteriv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetTexParameteriv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetUniformLocation"
- return="int"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="name" type="java.lang.String">
-</parameter>
-</method>
-<method name="glGetUniformfv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="location" type="int">
-</parameter>
-<parameter name="params" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetUniformfv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="location" type="int">
-</parameter>
-<parameter name="params" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glGetUniformiv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="location" type="int">
-</parameter>
-<parameter name="params" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetUniformiv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-<parameter name="location" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glGetVertexAttribfv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="index" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetVertexAttribfv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="index" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glGetVertexAttribiv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="index" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glGetVertexAttribiv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="index" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glHint"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="mode" type="int">
-</parameter>
-</method>
-<method name="glIsBuffer"
- return="boolean"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="buffer" type="int">
-</parameter>
-</method>
-<method name="glIsEnabled"
- return="boolean"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="cap" type="int">
-</parameter>
-</method>
-<method name="glIsFramebuffer"
- return="boolean"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="framebuffer" type="int">
-</parameter>
-</method>
-<method name="glIsProgram"
- return="boolean"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-</method>
-<method name="glIsRenderbuffer"
- return="boolean"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="renderbuffer" type="int">
-</parameter>
-</method>
-<method name="glIsShader"
- return="boolean"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shader" type="int">
-</parameter>
-</method>
-<method name="glIsTexture"
- return="boolean"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="texture" type="int">
-</parameter>
-</method>
-<method name="glLineWidth"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="width" type="float">
-</parameter>
-</method>
-<method name="glLinkProgram"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-</method>
-<method name="glPixelStorei"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="param" type="int">
-</parameter>
-</method>
-<method name="glPolygonOffset"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="factor" type="float">
-</parameter>
-<parameter name="units" type="float">
-</parameter>
-</method>
-<method name="glReadPixels"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="x" type="int">
-</parameter>
-<parameter name="y" type="int">
-</parameter>
-<parameter name="width" type="int">
-</parameter>
-<parameter name="height" type="int">
-</parameter>
-<parameter name="format" type="int">
-</parameter>
-<parameter name="type" type="int">
-</parameter>
-<parameter name="pixels" type="java.nio.Buffer">
-</parameter>
-</method>
-<method name="glReleaseShaderCompiler"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
-<method name="glRenderbufferStorage"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="internalformat" type="int">
-</parameter>
-<parameter name="width" type="int">
-</parameter>
-<parameter name="height" type="int">
-</parameter>
-</method>
-<method name="glSampleCoverage"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="value" type="float">
-</parameter>
-<parameter name="invert" type="boolean">
-</parameter>
-</method>
-<method name="glScissor"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="x" type="int">
-</parameter>
-<parameter name="y" type="int">
-</parameter>
-<parameter name="width" type="int">
-</parameter>
-<parameter name="height" type="int">
-</parameter>
-</method>
-<method name="glShaderBinary"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="shaders" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-<parameter name="binaryformat" type="int">
-</parameter>
-<parameter name="binary" type="java.nio.Buffer">
-</parameter>
-<parameter name="length" type="int">
-</parameter>
-</method>
-<method name="glShaderBinary"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="n" type="int">
-</parameter>
-<parameter name="shaders" type="java.nio.IntBuffer">
-</parameter>
-<parameter name="binaryformat" type="int">
-</parameter>
-<parameter name="binary" type="java.nio.Buffer">
-</parameter>
-<parameter name="length" type="int">
-</parameter>
-</method>
-<method name="glShaderSource"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="shader" type="int">
-</parameter>
-<parameter name="string" type="java.lang.String">
-</parameter>
-</method>
-<method name="glStencilFunc"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="func" type="int">
-</parameter>
-<parameter name="ref" type="int">
-</parameter>
-<parameter name="mask" type="int">
-</parameter>
-</method>
-<method name="glStencilFuncSeparate"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="face" type="int">
-</parameter>
-<parameter name="func" type="int">
-</parameter>
-<parameter name="ref" type="int">
-</parameter>
-<parameter name="mask" type="int">
-</parameter>
-</method>
-<method name="glStencilMask"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="mask" type="int">
-</parameter>
-</method>
-<method name="glStencilMaskSeparate"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="face" type="int">
-</parameter>
-<parameter name="mask" type="int">
-</parameter>
-</method>
-<method name="glStencilOp"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="fail" type="int">
-</parameter>
-<parameter name="zfail" type="int">
-</parameter>
-<parameter name="zpass" type="int">
-</parameter>
-</method>
-<method name="glStencilOpSeparate"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="face" type="int">
-</parameter>
-<parameter name="fail" type="int">
-</parameter>
-<parameter name="zfail" type="int">
-</parameter>
-<parameter name="zpass" type="int">
-</parameter>
-</method>
-<method name="glTexImage2D"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="level" type="int">
-</parameter>
-<parameter name="internalformat" type="int">
-</parameter>
-<parameter name="width" type="int">
-</parameter>
-<parameter name="height" type="int">
-</parameter>
-<parameter name="border" type="int">
-</parameter>
-<parameter name="format" type="int">
-</parameter>
-<parameter name="type" type="int">
-</parameter>
-<parameter name="pixels" type="java.nio.Buffer">
-</parameter>
-</method>
-<method name="glTexParameterf"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="param" type="float">
-</parameter>
-</method>
-<method name="glTexParameterfv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glTexParameterfv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glTexParameteri"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="param" type="int">
-</parameter>
-</method>
-<method name="glTexParameteriv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glTexParameteriv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="pname" type="int">
-</parameter>
-<parameter name="params" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glTexSubImage2D"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="target" type="int">
-</parameter>
-<parameter name="level" type="int">
-</parameter>
-<parameter name="xoffset" type="int">
-</parameter>
-<parameter name="yoffset" type="int">
-</parameter>
-<parameter name="width" type="int">
-</parameter>
-<parameter name="height" type="int">
-</parameter>
-<parameter name="format" type="int">
-</parameter>
-<parameter name="type" type="int">
-</parameter>
-<parameter name="pixels" type="java.nio.Buffer">
-</parameter>
-</method>
-<method name="glUniform1f"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="x" type="float">
-</parameter>
-</method>
-<method name="glUniform1fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniform1fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glUniform1i"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="x" type="int">
-</parameter>
-</method>
-<method name="glUniform1iv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniform1iv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glUniform2f"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="x" type="float">
-</parameter>
-<parameter name="y" type="float">
-</parameter>
-</method>
-<method name="glUniform2fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniform2fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glUniform2i"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="x" type="int">
-</parameter>
-<parameter name="y" type="int">
-</parameter>
-</method>
-<method name="glUniform2iv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniform2iv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glUniform3f"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="x" type="float">
-</parameter>
-<parameter name="y" type="float">
-</parameter>
-<parameter name="z" type="float">
-</parameter>
-</method>
-<method name="glUniform3fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniform3fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glUniform3i"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="x" type="int">
-</parameter>
-<parameter name="y" type="int">
-</parameter>
-<parameter name="z" type="int">
-</parameter>
-</method>
-<method name="glUniform3iv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniform3iv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glUniform4f"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="x" type="float">
-</parameter>
-<parameter name="y" type="float">
-</parameter>
-<parameter name="z" type="float">
-</parameter>
-<parameter name="w" type="float">
-</parameter>
-</method>
-<method name="glUniform4fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniform4fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glUniform4i"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="x" type="int">
-</parameter>
-<parameter name="y" type="int">
-</parameter>
-<parameter name="z" type="int">
-</parameter>
-<parameter name="w" type="int">
-</parameter>
-</method>
-<method name="glUniform4iv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="int[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniform4iv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="v" type="java.nio.IntBuffer">
-</parameter>
-</method>
-<method name="glUniformMatrix2fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="transpose" type="boolean">
-</parameter>
-<parameter name="value" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniformMatrix2fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="transpose" type="boolean">
-</parameter>
-<parameter name="value" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glUniformMatrix3fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="transpose" type="boolean">
-</parameter>
-<parameter name="value" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniformMatrix3fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="transpose" type="boolean">
-</parameter>
-<parameter name="value" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glUniformMatrix4fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="transpose" type="boolean">
-</parameter>
-<parameter name="value" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glUniformMatrix4fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="location" type="int">
-</parameter>
-<parameter name="count" type="int">
-</parameter>
-<parameter name="transpose" type="boolean">
-</parameter>
-<parameter name="value" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glUseProgram"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-</method>
-<method name="glValidateProgram"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="program" type="int">
-</parameter>
-</method>
-<method name="glVertexAttrib1f"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="x" type="float">
-</parameter>
-</method>
-<method name="glVertexAttrib1fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="values" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glVertexAttrib1fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="values" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glVertexAttrib2f"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="x" type="float">
-</parameter>
-<parameter name="y" type="float">
-</parameter>
-</method>
-<method name="glVertexAttrib2fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="values" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glVertexAttrib2fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="values" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glVertexAttrib3f"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="x" type="float">
-</parameter>
-<parameter name="y" type="float">
-</parameter>
-<parameter name="z" type="float">
-</parameter>
-</method>
-<method name="glVertexAttrib3fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="values" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glVertexAttrib3fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="values" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glVertexAttrib4f"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="x" type="float">
-</parameter>
-<parameter name="y" type="float">
-</parameter>
-<parameter name="z" type="float">
-</parameter>
-<parameter name="w" type="float">
-</parameter>
-</method>
-<method name="glVertexAttrib4fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="values" type="float[]">
-</parameter>
-<parameter name="offset" type="int">
-</parameter>
-</method>
-<method name="glVertexAttrib4fv"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="values" type="java.nio.FloatBuffer">
-</parameter>
-</method>
-<method name="glVertexAttribPointer"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="indx" type="int">
-</parameter>
-<parameter name="size" type="int">
-</parameter>
-<parameter name="type" type="int">
-</parameter>
-<parameter name="normalized" type="boolean">
-</parameter>
-<parameter name="stride" type="int">
-</parameter>
-<parameter name="ptr" type="java.nio.Buffer">
-</parameter>
-</method>
-<method name="glViewport"
- return="void"
- abstract="false"
- native="true"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="x" type="int">
-</parameter>
-<parameter name="y" type="int">
-</parameter>
-<parameter name="width" type="int">
-</parameter>
-<parameter name="height" type="int">
-</parameter>
-</method>
-<field name="GL_ACTIVE_ATTRIBUTES"
- type="int"
- transient="false"
- volatile="false"
- value="35721"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ACTIVE_ATTRIBUTE_MAX_LENGTH"
- type="int"
- transient="false"
- volatile="false"
- value="35722"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ACTIVE_TEXTURE"
- type="int"
- transient="false"
- volatile="false"
- value="34016"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ACTIVE_UNIFORMS"
- type="int"
- transient="false"
- volatile="false"
- value="35718"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ACTIVE_UNIFORM_MAX_LENGTH"
- type="int"
- transient="false"
- volatile="false"
- value="35719"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ALIASED_LINE_WIDTH_RANGE"
- type="int"
- transient="false"
- volatile="false"
- value="33902"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ALIASED_POINT_SIZE_RANGE"
- type="int"
- transient="false"
- volatile="false"
- value="33901"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="6406"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ALPHA_BITS"
- type="int"
- transient="false"
- volatile="false"
- value="3413"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ALWAYS"
- type="int"
- transient="false"
- volatile="false"
- value="519"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ARRAY_BUFFER"
- type="int"
- transient="false"
- volatile="false"
- value="34962"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ARRAY_BUFFER_BINDING"
- type="int"
- transient="false"
- volatile="false"
- value="34964"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ATTACHED_SHADERS"
- type="int"
- transient="false"
- volatile="false"
- value="35717"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BACK"
- type="int"
- transient="false"
- volatile="false"
- value="1029"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BLEND"
- type="int"
- transient="false"
- volatile="false"
- value="3042"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BLEND_COLOR"
- type="int"
- transient="false"
- volatile="false"
- value="32773"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BLEND_DST_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="32970"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BLEND_DST_RGB"
- type="int"
- transient="false"
- volatile="false"
- value="32968"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BLEND_EQUATION"
- type="int"
- transient="false"
- volatile="false"
- value="32777"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BLEND_EQUATION_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="34877"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BLEND_EQUATION_RGB"
- type="int"
- transient="false"
- volatile="false"
- value="32777"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BLEND_SRC_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="32971"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BLEND_SRC_RGB"
- type="int"
- transient="false"
- volatile="false"
- value="32969"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BLUE_BITS"
- type="int"
- transient="false"
- volatile="false"
- value="3412"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BOOL"
- type="int"
- transient="false"
- volatile="false"
- value="35670"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BOOL_VEC2"
- type="int"
- transient="false"
- volatile="false"
- value="35671"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BOOL_VEC3"
- type="int"
- transient="false"
- volatile="false"
- value="35672"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BOOL_VEC4"
- type="int"
- transient="false"
- volatile="false"
- value="35673"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BUFFER_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="34660"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BUFFER_USAGE"
- type="int"
- transient="false"
- volatile="false"
- value="34661"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_BYTE"
- type="int"
- transient="false"
- volatile="false"
- value="5120"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_CCW"
- type="int"
- transient="false"
- volatile="false"
- value="2305"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_CLAMP_TO_EDGE"
- type="int"
- transient="false"
- volatile="false"
- value="33071"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_COLOR_ATTACHMENT0"
- type="int"
- transient="false"
- volatile="false"
- value="36064"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_COLOR_BUFFER_BIT"
- type="int"
- transient="false"
- volatile="false"
- value="16384"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_COLOR_CLEAR_VALUE"
- type="int"
- transient="false"
- volatile="false"
- value="3106"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_COLOR_WRITEMASK"
- type="int"
- transient="false"
- volatile="false"
- value="3107"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_COMPILE_STATUS"
- type="int"
- transient="false"
- volatile="false"
- value="35713"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_COMPRESSED_TEXTURE_FORMATS"
- type="int"
- transient="false"
- volatile="false"
- value="34467"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_CONSTANT_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="32771"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_CONSTANT_COLOR"
- type="int"
- transient="false"
- volatile="false"
- value="32769"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_CULL_FACE"
- type="int"
- transient="false"
- volatile="false"
- value="2884"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_CULL_FACE_MODE"
- type="int"
- transient="false"
- volatile="false"
- value="2885"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_CURRENT_PROGRAM"
- type="int"
- transient="false"
- volatile="false"
- value="35725"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_CURRENT_VERTEX_ATTRIB"
- type="int"
- transient="false"
- volatile="false"
- value="34342"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_CW"
- type="int"
- transient="false"
- volatile="false"
- value="2304"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DECR"
- type="int"
- transient="false"
- volatile="false"
- value="7683"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DECR_WRAP"
- type="int"
- transient="false"
- volatile="false"
- value="34056"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DELETE_STATUS"
- type="int"
- transient="false"
- volatile="false"
- value="35712"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DEPTH_ATTACHMENT"
- type="int"
- transient="false"
- volatile="false"
- value="36096"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DEPTH_BITS"
- type="int"
- transient="false"
- volatile="false"
- value="3414"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DEPTH_BUFFER_BIT"
- type="int"
- transient="false"
- volatile="false"
- value="256"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DEPTH_CLEAR_VALUE"
- type="int"
- transient="false"
- volatile="false"
- value="2931"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DEPTH_COMPONENT"
- type="int"
- transient="false"
- volatile="false"
- value="6402"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DEPTH_COMPONENT16"
- type="int"
- transient="false"
- volatile="false"
- value="33189"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DEPTH_FUNC"
- type="int"
- transient="false"
- volatile="false"
- value="2932"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DEPTH_RANGE"
- type="int"
- transient="false"
- volatile="false"
- value="2928"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DEPTH_TEST"
- type="int"
- transient="false"
- volatile="false"
- value="2929"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DEPTH_WRITEMASK"
- type="int"
- transient="false"
- volatile="false"
- value="2930"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DITHER"
- type="int"
- transient="false"
- volatile="false"
- value="3024"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DONT_CARE"
- type="int"
- transient="false"
- volatile="false"
- value="4352"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DST_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="772"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DST_COLOR"
- type="int"
- transient="false"
- volatile="false"
- value="774"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_DYNAMIC_DRAW"
- type="int"
- transient="false"
- volatile="false"
- value="35048"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ELEMENT_ARRAY_BUFFER"
- type="int"
- transient="false"
- volatile="false"
- value="34963"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ELEMENT_ARRAY_BUFFER_BINDING"
- type="int"
- transient="false"
- volatile="false"
- value="34965"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_EQUAL"
- type="int"
- transient="false"
- volatile="false"
- value="514"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_EXTENSIONS"
- type="int"
- transient="false"
- volatile="false"
- value="7939"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FALSE"
- type="int"
- transient="false"
- volatile="false"
- value="0"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FASTEST"
- type="int"
- transient="false"
- volatile="false"
- value="4353"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FIXED"
- type="int"
- transient="false"
- volatile="false"
- value="5132"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FLOAT"
- type="int"
- transient="false"
- volatile="false"
- value="5126"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FLOAT_MAT2"
- type="int"
- transient="false"
- volatile="false"
- value="35674"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FLOAT_MAT3"
- type="int"
- transient="false"
- volatile="false"
- value="35675"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FLOAT_MAT4"
- type="int"
- transient="false"
- volatile="false"
- value="35676"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FLOAT_VEC2"
- type="int"
- transient="false"
- volatile="false"
- value="35664"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FLOAT_VEC3"
- type="int"
- transient="false"
- volatile="false"
- value="35665"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FLOAT_VEC4"
- type="int"
- transient="false"
- volatile="false"
- value="35666"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAGMENT_SHADER"
- type="int"
- transient="false"
- volatile="false"
- value="35632"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER"
- type="int"
- transient="false"
- volatile="false"
- value="36160"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"
- type="int"
- transient="false"
- volatile="false"
- value="36049"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"
- type="int"
- transient="false"
- volatile="false"
- value="36048"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"
- type="int"
- transient="false"
- volatile="false"
- value="36051"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"
- type="int"
- transient="false"
- volatile="false"
- value="36050"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER_BINDING"
- type="int"
- transient="false"
- volatile="false"
- value="36006"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER_COMPLETE"
- type="int"
- transient="false"
- volatile="false"
- value="36053"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"
- type="int"
- transient="false"
- volatile="false"
- value="36054"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS"
- type="int"
- transient="false"
- volatile="false"
- value="36057"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"
- type="int"
- transient="false"
- volatile="false"
- value="36055"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRAMEBUFFER_UNSUPPORTED"
- type="int"
- transient="false"
- volatile="false"
- value="36061"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRONT"
- type="int"
- transient="false"
- volatile="false"
- value="1028"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRONT_AND_BACK"
- type="int"
- transient="false"
- volatile="false"
- value="1032"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FRONT_FACE"
- type="int"
- transient="false"
- volatile="false"
- value="2886"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FUNC_ADD"
- type="int"
- transient="false"
- volatile="false"
- value="32774"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FUNC_REVERSE_SUBTRACT"
- type="int"
- transient="false"
- volatile="false"
- value="32779"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_FUNC_SUBTRACT"
- type="int"
- transient="false"
- volatile="false"
- value="32778"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_GENERATE_MIPMAP_HINT"
- type="int"
- transient="false"
- volatile="false"
- value="33170"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_GEQUAL"
- type="int"
- transient="false"
- volatile="false"
- value="518"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_GREATER"
- type="int"
- transient="false"
- volatile="false"
- value="516"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_GREEN_BITS"
- type="int"
- transient="false"
- volatile="false"
- value="3411"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_HIGH_FLOAT"
- type="int"
- transient="false"
- volatile="false"
- value="36338"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_HIGH_INT"
- type="int"
- transient="false"
- volatile="false"
- value="36341"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT"
- type="int"
- transient="false"
- volatile="false"
- value="35739"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_IMPLEMENTATION_COLOR_READ_TYPE"
- type="int"
- transient="false"
- volatile="false"
- value="35738"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INCR"
- type="int"
- transient="false"
- volatile="false"
- value="7682"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INCR_WRAP"
- type="int"
- transient="false"
- volatile="false"
- value="34055"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INFO_LOG_LENGTH"
- type="int"
- transient="false"
- volatile="false"
- value="35716"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INT"
- type="int"
- transient="false"
- volatile="false"
- value="5124"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INT_VEC2"
- type="int"
- transient="false"
- volatile="false"
- value="35667"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INT_VEC3"
- type="int"
- transient="false"
- volatile="false"
- value="35668"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INT_VEC4"
- type="int"
- transient="false"
- volatile="false"
- value="35669"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INVALID_ENUM"
- type="int"
- transient="false"
- volatile="false"
- value="1280"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INVALID_FRAMEBUFFER_OPERATION"
- type="int"
- transient="false"
- volatile="false"
- value="1286"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INVALID_OPERATION"
- type="int"
- transient="false"
- volatile="false"
- value="1282"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INVALID_VALUE"
- type="int"
- transient="false"
- volatile="false"
- value="1281"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_INVERT"
- type="int"
- transient="false"
- volatile="false"
- value="5386"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_KEEP"
- type="int"
- transient="false"
- volatile="false"
- value="7680"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LEQUAL"
- type="int"
- transient="false"
- volatile="false"
- value="515"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LESS"
- type="int"
- transient="false"
- volatile="false"
- value="513"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LINEAR"
- type="int"
- transient="false"
- volatile="false"
- value="9729"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LINEAR_MIPMAP_LINEAR"
- type="int"
- transient="false"
- volatile="false"
- value="9987"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LINEAR_MIPMAP_NEAREST"
- type="int"
- transient="false"
- volatile="false"
- value="9985"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LINES"
- type="int"
- transient="false"
- volatile="false"
- value="1"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LINE_LOOP"
- type="int"
- transient="false"
- volatile="false"
- value="2"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LINE_STRIP"
- type="int"
- transient="false"
- volatile="false"
- value="3"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LINE_WIDTH"
- type="int"
- transient="false"
- volatile="false"
- value="2849"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LINK_STATUS"
- type="int"
- transient="false"
- volatile="false"
- value="35714"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LOW_FLOAT"
- type="int"
- transient="false"
- volatile="false"
- value="36336"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LOW_INT"
- type="int"
- transient="false"
- volatile="false"
- value="36339"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LUMINANCE"
- type="int"
- transient="false"
- volatile="false"
- value="6409"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_LUMINANCE_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="6410"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS"
- type="int"
- transient="false"
- volatile="false"
- value="35661"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="34076"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_FRAGMENT_UNIFORM_VECTORS"
- type="int"
- transient="false"
- volatile="false"
- value="36349"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_RENDERBUFFER_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="34024"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_TEXTURE_IMAGE_UNITS"
- type="int"
- transient="false"
- volatile="false"
- value="34930"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_TEXTURE_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="3379"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_VARYING_VECTORS"
- type="int"
- transient="false"
- volatile="false"
- value="36348"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_VERTEX_ATTRIBS"
- type="int"
- transient="false"
- volatile="false"
- value="34921"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS"
- type="int"
- transient="false"
- volatile="false"
- value="35660"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_VERTEX_UNIFORM_VECTORS"
- type="int"
- transient="false"
- volatile="false"
- value="36347"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MAX_VIEWPORT_DIMS"
- type="int"
- transient="false"
- volatile="false"
- value="3386"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MEDIUM_FLOAT"
- type="int"
- transient="false"
- volatile="false"
- value="36337"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MEDIUM_INT"
- type="int"
- transient="false"
- volatile="false"
- value="36340"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_MIRRORED_REPEAT"
- type="int"
- transient="false"
- volatile="false"
- value="33648"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_NEAREST"
- type="int"
- transient="false"
- volatile="false"
- value="9728"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_NEAREST_MIPMAP_LINEAR"
- type="int"
- transient="false"
- volatile="false"
- value="9986"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_NEAREST_MIPMAP_NEAREST"
- type="int"
- transient="false"
- volatile="false"
- value="9984"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_NEVER"
- type="int"
- transient="false"
- volatile="false"
- value="512"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_NICEST"
- type="int"
- transient="false"
- volatile="false"
- value="4354"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_NONE"
- type="int"
- transient="false"
- volatile="false"
- value="0"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_NOTEQUAL"
- type="int"
- transient="false"
- volatile="false"
- value="517"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_NO_ERROR"
- type="int"
- transient="false"
- volatile="false"
- value="0"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS"
- type="int"
- transient="false"
- volatile="false"
- value="34466"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_NUM_SHADER_BINARY_FORMATS"
- type="int"
- transient="false"
- volatile="false"
- value="36345"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ONE"
- type="int"
- transient="false"
- volatile="false"
- value="1"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ONE_MINUS_CONSTANT_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="32772"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ONE_MINUS_CONSTANT_COLOR"
- type="int"
- transient="false"
- volatile="false"
- value="32770"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ONE_MINUS_DST_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="773"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ONE_MINUS_DST_COLOR"
- type="int"
- transient="false"
- volatile="false"
- value="775"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ONE_MINUS_SRC_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="771"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ONE_MINUS_SRC_COLOR"
- type="int"
- transient="false"
- volatile="false"
- value="769"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_OUT_OF_MEMORY"
- type="int"
- transient="false"
- volatile="false"
- value="1285"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_PACK_ALIGNMENT"
- type="int"
- transient="false"
- volatile="false"
- value="3333"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_POINTS"
- type="int"
- transient="false"
- volatile="false"
- value="0"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_POLYGON_OFFSET_FACTOR"
- type="int"
- transient="false"
- volatile="false"
- value="32824"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_POLYGON_OFFSET_FILL"
- type="int"
- transient="false"
- volatile="false"
- value="32823"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_POLYGON_OFFSET_UNITS"
- type="int"
- transient="false"
- volatile="false"
- value="10752"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RED_BITS"
- type="int"
- transient="false"
- volatile="false"
- value="3410"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER"
- type="int"
- transient="false"
- volatile="false"
- value="36161"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER_ALPHA_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="36179"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER_BINDING"
- type="int"
- transient="false"
- volatile="false"
- value="36007"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER_BLUE_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="36178"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER_DEPTH_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="36180"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER_GREEN_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="36177"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER_HEIGHT"
- type="int"
- transient="false"
- volatile="false"
- value="36163"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER_INTERNAL_FORMAT"
- type="int"
- transient="false"
- volatile="false"
- value="36164"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER_RED_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="36176"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER_STENCIL_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="36181"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERBUFFER_WIDTH"
- type="int"
- transient="false"
- volatile="false"
- value="36162"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RENDERER"
- type="int"
- transient="false"
- volatile="false"
- value="7937"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_REPEAT"
- type="int"
- transient="false"
- volatile="false"
- value="10497"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_REPLACE"
- type="int"
- transient="false"
- volatile="false"
- value="7681"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RGB"
- type="int"
- transient="false"
- volatile="false"
- value="6407"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RGB565"
- type="int"
- transient="false"
- volatile="false"
- value="36194"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RGB5_A1"
- type="int"
- transient="false"
- volatile="false"
- value="32855"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RGBA"
- type="int"
- transient="false"
- volatile="false"
- value="6408"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_RGBA4"
- type="int"
- transient="false"
- volatile="false"
- value="32854"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SAMPLER_2D"
- type="int"
- transient="false"
- volatile="false"
- value="35678"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SAMPLER_CUBE"
- type="int"
- transient="false"
- volatile="false"
- value="35680"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SAMPLES"
- type="int"
- transient="false"
- volatile="false"
- value="32937"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SAMPLE_ALPHA_TO_COVERAGE"
- type="int"
- transient="false"
- volatile="false"
- value="32926"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SAMPLE_BUFFERS"
- type="int"
- transient="false"
- volatile="false"
- value="32936"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SAMPLE_COVERAGE"
- type="int"
- transient="false"
- volatile="false"
- value="32928"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SAMPLE_COVERAGE_INVERT"
- type="int"
- transient="false"
- volatile="false"
- value="32939"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SAMPLE_COVERAGE_VALUE"
- type="int"
- transient="false"
- volatile="false"
- value="32938"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SCISSOR_BOX"
- type="int"
- transient="false"
- volatile="false"
- value="3088"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SCISSOR_TEST"
- type="int"
- transient="false"
- volatile="false"
- value="3089"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SHADER_BINARY_FORMATS"
- type="int"
- transient="false"
- volatile="false"
- value="36344"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SHADER_COMPILER"
- type="int"
- transient="false"
- volatile="false"
- value="36346"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SHADER_SOURCE_LENGTH"
- type="int"
- transient="false"
- volatile="false"
- value="35720"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SHADER_TYPE"
- type="int"
- transient="false"
- volatile="false"
- value="35663"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SHADING_LANGUAGE_VERSION"
- type="int"
- transient="false"
- volatile="false"
- value="35724"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SHORT"
- type="int"
- transient="false"
- volatile="false"
- value="5122"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SRC_ALPHA"
- type="int"
- transient="false"
- volatile="false"
- value="770"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SRC_ALPHA_SATURATE"
- type="int"
- transient="false"
- volatile="false"
- value="776"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SRC_COLOR"
- type="int"
- transient="false"
- volatile="false"
- value="768"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STATIC_DRAW"
- type="int"
- transient="false"
- volatile="false"
- value="35044"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_ATTACHMENT"
- type="int"
- transient="false"
- volatile="false"
- value="36128"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_BACK_FAIL"
- type="int"
- transient="false"
- volatile="false"
- value="34817"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_BACK_FUNC"
- type="int"
- transient="false"
- volatile="false"
- value="34816"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_BACK_PASS_DEPTH_FAIL"
- type="int"
- transient="false"
- volatile="false"
- value="34818"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_BACK_PASS_DEPTH_PASS"
- type="int"
- transient="false"
- volatile="false"
- value="34819"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_BACK_REF"
- type="int"
- transient="false"
- volatile="false"
- value="36003"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_BACK_VALUE_MASK"
- type="int"
- transient="false"
- volatile="false"
- value="36004"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_BACK_WRITEMASK"
- type="int"
- transient="false"
- volatile="false"
- value="36005"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_BITS"
- type="int"
- transient="false"
- volatile="false"
- value="3415"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_BUFFER_BIT"
- type="int"
- transient="false"
- volatile="false"
- value="1024"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_CLEAR_VALUE"
- type="int"
- transient="false"
- volatile="false"
- value="2961"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_FAIL"
- type="int"
- transient="false"
- volatile="false"
- value="2964"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_FUNC"
- type="int"
- transient="false"
- volatile="false"
- value="2962"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_INDEX"
- type="int"
- transient="false"
- volatile="false"
- value="6401"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_INDEX8"
- type="int"
- transient="false"
- volatile="false"
- value="36168"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_PASS_DEPTH_FAIL"
- type="int"
- transient="false"
- volatile="false"
- value="2965"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_PASS_DEPTH_PASS"
- type="int"
- transient="false"
- volatile="false"
- value="2966"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_REF"
- type="int"
- transient="false"
- volatile="false"
- value="2967"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_TEST"
- type="int"
- transient="false"
- volatile="false"
- value="2960"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_VALUE_MASK"
- type="int"
- transient="false"
- volatile="false"
- value="2963"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STENCIL_WRITEMASK"
- type="int"
- transient="false"
- volatile="false"
- value="2968"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_STREAM_DRAW"
- type="int"
- transient="false"
- volatile="false"
- value="35040"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_SUBPIXEL_BITS"
- type="int"
- transient="false"
- volatile="false"
- value="3408"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE"
- type="int"
- transient="false"
- volatile="false"
- value="5890"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE0"
- type="int"
- transient="false"
- volatile="false"
- value="33984"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE1"
- type="int"
- transient="false"
- volatile="false"
- value="33985"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE10"
- type="int"
- transient="false"
- volatile="false"
- value="33994"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE11"
- type="int"
- transient="false"
- volatile="false"
- value="33995"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE12"
- type="int"
- transient="false"
- volatile="false"
- value="33996"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE13"
- type="int"
- transient="false"
- volatile="false"
- value="33997"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE14"
- type="int"
- transient="false"
- volatile="false"
- value="33998"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE15"
- type="int"
- transient="false"
- volatile="false"
- value="33999"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE16"
- type="int"
- transient="false"
- volatile="false"
- value="34000"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE17"
- type="int"
- transient="false"
- volatile="false"
- value="34001"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE18"
- type="int"
- transient="false"
- volatile="false"
- value="34002"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE19"
- type="int"
- transient="false"
- volatile="false"
- value="34003"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE2"
- type="int"
- transient="false"
- volatile="false"
- value="33986"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE20"
- type="int"
- transient="false"
- volatile="false"
- value="34004"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE21"
- type="int"
- transient="false"
- volatile="false"
- value="34005"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE22"
- type="int"
- transient="false"
- volatile="false"
- value="34006"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE23"
- type="int"
- transient="false"
- volatile="false"
- value="34007"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE24"
- type="int"
- transient="false"
- volatile="false"
- value="34008"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE25"
- type="int"
- transient="false"
- volatile="false"
- value="34009"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE26"
- type="int"
- transient="false"
- volatile="false"
- value="34010"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE27"
- type="int"
- transient="false"
- volatile="false"
- value="34011"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE28"
- type="int"
- transient="false"
- volatile="false"
- value="34012"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE29"
- type="int"
- transient="false"
- volatile="false"
- value="34013"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE3"
- type="int"
- transient="false"
- volatile="false"
- value="33987"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE30"
- type="int"
- transient="false"
- volatile="false"
- value="34014"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE31"
- type="int"
- transient="false"
- volatile="false"
- value="34015"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE4"
- type="int"
- transient="false"
- volatile="false"
- value="33988"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE5"
- type="int"
- transient="false"
- volatile="false"
- value="33989"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE6"
- type="int"
- transient="false"
- volatile="false"
- value="33990"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE7"
- type="int"
- transient="false"
- volatile="false"
- value="33991"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE8"
- type="int"
- transient="false"
- volatile="false"
- value="33992"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE9"
- type="int"
- transient="false"
- volatile="false"
- value="33993"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_2D"
- type="int"
- transient="false"
- volatile="false"
- value="3553"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_BINDING_2D"
- type="int"
- transient="false"
- volatile="false"
- value="32873"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_BINDING_CUBE_MAP"
- type="int"
- transient="false"
- volatile="false"
- value="34068"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_CUBE_MAP"
- type="int"
- transient="false"
- volatile="false"
- value="34067"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X"
- type="int"
- transient="false"
- volatile="false"
- value="34070"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"
- type="int"
- transient="false"
- volatile="false"
- value="34072"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"
- type="int"
- transient="false"
- volatile="false"
- value="34074"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X"
- type="int"
- transient="false"
- volatile="false"
- value="34069"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y"
- type="int"
- transient="false"
- volatile="false"
- value="34071"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z"
- type="int"
- transient="false"
- volatile="false"
- value="34073"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_MAG_FILTER"
- type="int"
- transient="false"
- volatile="false"
- value="10240"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_MIN_FILTER"
- type="int"
- transient="false"
- volatile="false"
- value="10241"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_WRAP_S"
- type="int"
- transient="false"
- volatile="false"
- value="10242"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TEXTURE_WRAP_T"
- type="int"
- transient="false"
- volatile="false"
- value="10243"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TRIANGLES"
- type="int"
- transient="false"
- volatile="false"
- value="4"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TRIANGLE_FAN"
- type="int"
- transient="false"
- volatile="false"
- value="6"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TRIANGLE_STRIP"
- type="int"
- transient="false"
- volatile="false"
- value="5"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_TRUE"
- type="int"
- transient="false"
- volatile="false"
- value="1"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_UNPACK_ALIGNMENT"
- type="int"
- transient="false"
- volatile="false"
- value="3317"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_UNSIGNED_BYTE"
- type="int"
- transient="false"
- volatile="false"
- value="5121"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_UNSIGNED_INT"
- type="int"
- transient="false"
- volatile="false"
- value="5125"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_UNSIGNED_SHORT"
- type="int"
- transient="false"
- volatile="false"
- value="5123"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_UNSIGNED_SHORT_4_4_4_4"
- type="int"
- transient="false"
- volatile="false"
- value="32819"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_UNSIGNED_SHORT_5_5_5_1"
- type="int"
- transient="false"
- volatile="false"
- value="32820"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_UNSIGNED_SHORT_5_6_5"
- type="int"
- transient="false"
- volatile="false"
- value="33635"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VALIDATE_STATUS"
- type="int"
- transient="false"
- volatile="false"
- value="35715"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VENDOR"
- type="int"
- transient="false"
- volatile="false"
- value="7936"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VERSION"
- type="int"
- transient="false"
- volatile="false"
- value="7938"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"
- type="int"
- transient="false"
- volatile="false"
- value="34975"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VERTEX_ATTRIB_ARRAY_ENABLED"
- type="int"
- transient="false"
- volatile="false"
- value="34338"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VERTEX_ATTRIB_ARRAY_NORMALIZED"
- type="int"
- transient="false"
- volatile="false"
- value="34922"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VERTEX_ATTRIB_ARRAY_POINTER"
- type="int"
- transient="false"
- volatile="false"
- value="34373"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VERTEX_ATTRIB_ARRAY_SIZE"
- type="int"
- transient="false"
- volatile="false"
- value="34339"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VERTEX_ATTRIB_ARRAY_STRIDE"
- type="int"
- transient="false"
- volatile="false"
- value="34340"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VERTEX_ATTRIB_ARRAY_TYPE"
- type="int"
- transient="false"
- volatile="false"
- value="34341"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VERTEX_SHADER"
- type="int"
- transient="false"
- volatile="false"
- value="35633"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_VIEWPORT"
- type="int"
- transient="false"
- volatile="false"
- value="2978"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="GL_ZERO"
- type="int"
- transient="false"
- volatile="false"
- value="0"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-</class>
 <class name="GLException"
  extends="java.lang.RuntimeException"
  abstract="false"
@@ -234351,7 +227814,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="value" type="int">
+<parameter name="i" type="int">
 </parameter>
 </method>
 <method name="toString"
@@ -234600,7 +228063,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="compareTo"
@@ -234706,7 +228169,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="intValue"
@@ -234741,7 +228204,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="numberOfLeadingZeros"
@@ -234754,7 +228217,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="numberOfTrailingZeros"
@@ -234767,7 +228230,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="parseLong"
@@ -234812,7 +228275,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="reverseBytes"
@@ -234825,7 +228288,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="rotateLeft"
@@ -234838,7 +228301,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 <parameter name="distance" type="int">
 </parameter>
@@ -234853,7 +228316,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 <parameter name="distance" type="int">
 </parameter>
@@ -234868,7 +228331,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="toBinaryString"
@@ -234881,7 +228344,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="l" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="toHexString"
@@ -234894,7 +228357,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="l" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="toOctalString"
@@ -234907,7 +228370,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="l" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <method name="toString"
@@ -234920,7 +228383,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="l" type="long">
+<parameter name="n" type="long">
 </parameter>
 </method>
 <method name="toString"
@@ -234933,7 +228396,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="l" type="long">
+<parameter name="v" type="long">
 </parameter>
 <parameter name="radix" type="int">
 </parameter>
@@ -234980,7 +228443,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="lng" type="long">
+<parameter name="v" type="long">
 </parameter>
 </method>
 <field name="MAX_VALUE"
@@ -252449,7 +245912,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="o" type="java.lang.Object">
+<parameter name="other" type="java.lang.Object">
 </parameter>
 </method>
 <method name="getActions"
@@ -292825,7 +286288,7 @@
 >
 <parameter name="array" type="java.lang.Object[]">
 </parameter>
-<parameter name="object" type="java.lang.Object">
+<parameter name="value" type="java.lang.Object">
 </parameter>
 </method>
 <method name="binarySearch"
@@ -292840,7 +286303,7 @@
 >
 <parameter name="array" type="T[]">
 </parameter>
-<parameter name="object" type="T">
+<parameter name="value" type="T">
 </parameter>
 <parameter name="comparator" type="java.util.Comparator&lt;? super T&gt;">
 </parameter>
diff --git a/cmds/dumpsys/dumpsys.cpp b/cmds/dumpsys/dumpsys.cpp
index 945a690..fdc5d5d 100644
--- a/cmds/dumpsys/dumpsys.cpp
+++ b/cmds/dumpsys/dumpsys.cpp
@@ -51,22 +51,26 @@
 
     const size_t N = services.size();
 
-    // first print a list of the current services
-    aout << "Currently running services:" << endl;
-
-    for (size_t i=0; i<N; i++) {
-        sp<IBinder> service = sm->checkService(services[i]);
-        if (service != NULL) {
-            aout << "  " << services[i] << endl;
+    if (N > 1) {
+        // first print a list of the current services
+        aout << "Currently running services:" << endl;
+    
+        for (size_t i=0; i<N; i++) {
+            sp<IBinder> service = sm->checkService(services[i]);
+            if (service != NULL) {
+                aout << "  " << services[i] << endl;
+            }
         }
     }
 
     for (size_t i=0; i<N; i++) {
         sp<IBinder> service = sm->checkService(services[i]);
         if (service != NULL) {
-            aout << "------------------------------------------------------------"
-                    "-------------------" << endl;
-            aout << "DUMP OF SERVICE " << services[i] << ":" << endl;
+            if (N > 1) {
+                aout << "------------------------------------------------------------"
+                        "-------------------" << endl;
+                aout << "DUMP OF SERVICE " << services[i] << ":" << endl;
+            }
             int err = service->dump(STDOUT_FILENO, args);
             if (err != 0) {
                 aerr << "Error dumping service info: (" << strerror(err)
diff --git a/common/java/com/android/common/ArrayListCursor.java b/common/java/com/android/common/ArrayListCursor.java
new file mode 100644
index 0000000..cc1fe27
--- /dev/null
+++ b/common/java/com/android/common/ArrayListCursor.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.common;
+
+import android.database.AbstractCursor;
+import android.database.CursorWindow;
+
+import java.lang.System;
+import java.util.ArrayList;
+
+/**
+ * A convenience class that presents a two-dimensional ArrayList
+ * as a Cursor.
+ * @deprecated This is has been replaced by MatrixCursor.
+*/
+public class ArrayListCursor extends AbstractCursor {
+    private String[] mColumnNames;
+    private ArrayList<Object>[] mRows;
+
+    @SuppressWarnings({"unchecked"})
+    public ArrayListCursor(String[] columnNames, ArrayList<ArrayList> rows) {
+        int colCount = columnNames.length;
+        boolean foundID = false;
+        // Add an _id column if not in columnNames
+        for (int i = 0; i < colCount; ++i) {
+            if (columnNames[i].compareToIgnoreCase("_id") == 0) {
+                mColumnNames = columnNames;
+                foundID = true;
+                break;
+            }
+        }
+
+        if (!foundID) {
+            mColumnNames = new String[colCount + 1];
+            System.arraycopy(columnNames, 0, mColumnNames, 0, columnNames.length);
+            mColumnNames[colCount] = "_id";
+        }
+
+        int rowCount = rows.size();
+        mRows = new ArrayList[rowCount];
+
+        for (int i = 0; i < rowCount; ++i) {
+            mRows[i] = rows.get(i);
+            if (!foundID) {
+                mRows[i].add(i);
+            }
+        }
+    }
+
+    @Override
+    public void fillWindow(int position, CursorWindow window) {
+        if (position < 0 || position > getCount()) {
+            return;
+        }
+
+        window.acquireReference();
+        try {
+            int oldpos = mPos;
+            mPos = position - 1;
+            window.clear();
+            window.setStartPosition(position);
+            int columnNum = getColumnCount();
+            window.setNumColumns(columnNum);
+            while (moveToNext() && window.allocRow()) {
+                for (int i = 0; i < columnNum; i++) {
+                    final Object data = mRows[mPos].get(i);
+                    if (data != null) {
+                        if (data instanceof byte[]) {
+                            byte[] field = (byte[]) data;
+                            if (!window.putBlob(field, mPos, i)) {
+                                window.freeLastRow();
+                                break;
+                            }
+                        } else {
+                            String field = data.toString();
+                            if (!window.putString(field, mPos, i)) {
+                                window.freeLastRow();
+                                break;
+                            }
+                        }
+                    } else {
+                        if (!window.putNull(mPos, i)) {
+                            window.freeLastRow();
+                            break;
+                        }
+                    }
+                }
+            }
+
+            mPos = oldpos;
+        } catch (IllegalStateException e){
+            // simply ignore it
+        } finally {
+            window.releaseReference();
+        }
+    }
+
+    @Override
+    public int getCount() {
+        return mRows.length;
+    }
+
+    @Override
+    public boolean deleteRow() {
+        return false;
+    }
+
+    @Override
+    public String[] getColumnNames() {
+        return mColumnNames;
+    }
+
+    @Override
+    public byte[] getBlob(int columnIndex) {
+        return (byte[]) mRows[mPos].get(columnIndex);
+    }
+
+    @Override
+    public String getString(int columnIndex) {
+        Object cell = mRows[mPos].get(columnIndex);
+        return (cell == null) ? null : cell.toString();
+    }
+
+    @Override
+    public short getShort(int columnIndex) {
+        Number num = (Number) mRows[mPos].get(columnIndex);
+        return num.shortValue();
+    }
+
+    @Override
+    public int getInt(int columnIndex) {
+        Number num = (Number) mRows[mPos].get(columnIndex);
+        return num.intValue();
+    }
+
+    @Override
+    public long getLong(int columnIndex) {
+        Number num = (Number) mRows[mPos].get(columnIndex);
+        return num.longValue();
+    }
+
+    @Override
+    public float getFloat(int columnIndex) {
+        Number num = (Number) mRows[mPos].get(columnIndex);
+        return num.floatValue();
+    }
+
+    @Override
+    public double getDouble(int columnIndex) {
+        Number num = (Number) mRows[mPos].get(columnIndex);
+        return num.doubleValue();
+    }
+
+    @Override
+    public boolean isNull(int columnIndex) {
+        return mRows[mPos].get(columnIndex) == null;
+    }
+}
diff --git a/common/java/com/android/common/FastXmlSerializer.java b/common/java/com/android/common/FastXmlSerializer.java
new file mode 100644
index 0000000..0d33941
--- /dev/null
+++ b/common/java/com/android/common/FastXmlSerializer.java
@@ -0,0 +1,365 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.common;
+
+import org.xmlpull.v1.XmlSerializer;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+
+/**
+ * This is a quick and dirty implementation of XmlSerializer that isn't horribly
+ * painfully slow like the normal one.  It only does what is needed for the
+ * specific XML files being written with it.
+ */
+public class FastXmlSerializer implements XmlSerializer {
+    private static final String ESCAPE_TABLE[] = new String[] {
+        null,     null,     null,     null,     null,     null,     null,     null,  // 0-7
+        null,     null,     null,     null,     null,     null,     null,     null,  // 8-15
+        null,     null,     null,     null,     null,     null,     null,     null,  // 16-23
+        null,     null,     null,     null,     null,     null,     null,     null,  // 24-31
+        null,     null,     "&quot;", null,     null,     null,     "&amp;",  null,  // 32-39
+        null,     null,     null,     null,     null,     null,     null,     null,  // 40-47
+        null,     null,     null,     null,     null,     null,     null,     null,  // 48-55
+        null,     null,     null,     null,     "&lt;",   null,     "&gt;",   null,  // 56-63
+    };
+
+    private static final int BUFFER_LEN = 8192;
+
+    private final char[] mText = new char[BUFFER_LEN];
+    private int mPos;
+
+    private Writer mWriter;
+
+    private OutputStream mOutputStream;
+    private CharsetEncoder mCharset;
+    private ByteBuffer mBytes = ByteBuffer.allocate(BUFFER_LEN);
+
+    private boolean mInTag;
+
+    private void append(char c) throws IOException {
+        int pos = mPos;
+        if (pos >= (BUFFER_LEN-1)) {
+            flush();
+            pos = mPos;
+        }
+        mText[pos] = c;
+        mPos = pos+1;
+    }
+
+    private void append(String str, int i, final int length) throws IOException {
+        if (length > BUFFER_LEN) {
+            final int end = i + length;
+            while (i < end) {
+                int next = i + BUFFER_LEN;
+                append(str, i, next<end ? BUFFER_LEN : (end-i));
+                i = next;
+            }
+            return;
+        }
+        int pos = mPos;
+        if ((pos+length) > BUFFER_LEN) {
+            flush();
+            pos = mPos;
+        }
+        str.getChars(i, i+length, mText, pos);
+        mPos = pos + length;
+    }
+
+    private void append(char[] buf, int i, final int length) throws IOException {
+        if (length > BUFFER_LEN) {
+            final int end = i + length;
+            while (i < end) {
+                int next = i + BUFFER_LEN;
+                append(buf, i, next<end ? BUFFER_LEN : (end-i));
+                i = next;
+            }
+            return;
+        }
+        int pos = mPos;
+        if ((pos+length) > BUFFER_LEN) {
+            flush();
+            pos = mPos;
+        }
+        System.arraycopy(buf, i, mText, pos, length);
+        mPos = pos + length;
+    }
+
+    private void append(String str) throws IOException {
+        append(str, 0, str.length());
+    }
+
+    private void escapeAndAppendString(final String string) throws IOException {
+        final int N = string.length();
+        final char NE = (char)ESCAPE_TABLE.length;
+        final String[] escapes = ESCAPE_TABLE;
+        int lastPos = 0;
+        int pos;
+        for (pos=0; pos<N; pos++) {
+            char c = string.charAt(pos);
+            if (c >= NE) continue;
+            String escape = escapes[c];
+            if (escape == null) continue;
+            if (lastPos < pos) append(string, lastPos, pos-lastPos);
+            lastPos = pos + 1;
+            append(escape);
+        }
+        if (lastPos < pos) append(string, lastPos, pos-lastPos);
+    }
+
+    private void escapeAndAppendString(char[] buf, int start, int len) throws IOException {
+        final char NE = (char)ESCAPE_TABLE.length;
+        final String[] escapes = ESCAPE_TABLE;
+        int end = start+len;
+        int lastPos = start;
+        int pos;
+        for (pos=start; pos<end; pos++) {
+            char c = buf[pos];
+            if (c >= NE) continue;
+            String escape = escapes[c];
+            if (escape == null) continue;
+            if (lastPos < pos) append(buf, lastPos, pos-lastPos);
+            lastPos = pos + 1;
+            append(escape);
+        }
+        if (lastPos < pos) append(buf, lastPos, pos-lastPos);
+    }
+
+    public XmlSerializer attribute(String namespace, String name, String value) throws IOException,
+            IllegalArgumentException, IllegalStateException {
+        append(' ');
+        if (namespace != null) {
+            append(namespace);
+            append(':');
+        }
+        append(name);
+        append("=\"");
+
+        escapeAndAppendString(value);
+        append('"');
+        return this;
+    }
+
+    public void cdsect(String text) throws IOException, IllegalArgumentException,
+            IllegalStateException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void comment(String text) throws IOException, IllegalArgumentException,
+            IllegalStateException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void docdecl(String text) throws IOException, IllegalArgumentException,
+            IllegalStateException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void endDocument() throws IOException, IllegalArgumentException, IllegalStateException {
+        flush();
+    }
+
+    public XmlSerializer endTag(String namespace, String name) throws IOException,
+            IllegalArgumentException, IllegalStateException {
+        if (mInTag) {
+            append(" />\n");
+        } else {
+            append("</");
+            if (namespace != null) {
+                append(namespace);
+                append(':');
+            }
+            append(name);
+            append(">\n");
+        }
+        mInTag = false;
+        return this;
+    }
+
+    public void entityRef(String text) throws IOException, IllegalArgumentException,
+            IllegalStateException {
+        throw new UnsupportedOperationException();
+    }
+
+    private void flushBytes() throws IOException {
+        int position;
+        if ((position = mBytes.position()) > 0) {
+            mBytes.flip();
+            mOutputStream.write(mBytes.array(), 0, position);
+            mBytes.clear();
+        }
+    }
+
+    public void flush() throws IOException {
+        //Log.i("PackageManager", "flush mPos=" + mPos);
+        if (mPos > 0) {
+            if (mOutputStream != null) {
+                CharBuffer charBuffer = CharBuffer.wrap(mText, 0, mPos);
+                CoderResult result = mCharset.encode(charBuffer, mBytes, true);
+                while (true) {
+                    if (result.isError()) {
+                        throw new IOException(result.toString());
+                    } else if (result.isOverflow()) {
+                        flushBytes();
+                        result = mCharset.encode(charBuffer, mBytes, true);
+                        continue;
+                    }
+                    break;
+                }
+                flushBytes();
+                mOutputStream.flush();
+            } else {
+                mWriter.write(mText, 0, mPos);
+                mWriter.flush();
+            }
+            mPos = 0;
+        }
+    }
+
+    public int getDepth() {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean getFeature(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getName() {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getNamespace() {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getPrefix(String namespace, boolean generatePrefix)
+            throws IllegalArgumentException {
+        throw new UnsupportedOperationException();
+    }
+
+    public Object getProperty(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void ignorableWhitespace(String text) throws IOException, IllegalArgumentException,
+            IllegalStateException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void processingInstruction(String text) throws IOException, IllegalArgumentException,
+            IllegalStateException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void setFeature(String name, boolean state) throws IllegalArgumentException,
+            IllegalStateException {
+        if (name.equals("http://xmlpull.org/v1/doc/features.html#indent-output")) {
+            return;
+        }
+        throw new UnsupportedOperationException();
+    }
+
+    public void setOutput(OutputStream os, String encoding) throws IOException,
+            IllegalArgumentException, IllegalStateException {
+        if (os == null)
+            throw new IllegalArgumentException();
+        if (true) {
+            try {
+                mCharset = Charset.forName(encoding).newEncoder();
+            } catch (IllegalCharsetNameException e) {
+                throw (UnsupportedEncodingException) (new UnsupportedEncodingException(
+                        encoding).initCause(e));
+            } catch (UnsupportedCharsetException e) {
+                throw (UnsupportedEncodingException) (new UnsupportedEncodingException(
+                        encoding).initCause(e));
+            }
+            mOutputStream = os;
+        } else {
+            setOutput(
+                encoding == null
+                    ? new OutputStreamWriter(os)
+                    : new OutputStreamWriter(os, encoding));
+        }
+    }
+
+    public void setOutput(Writer writer) throws IOException, IllegalArgumentException,
+            IllegalStateException {
+        mWriter = writer;
+    }
+
+    public void setPrefix(String prefix, String namespace) throws IOException,
+            IllegalArgumentException, IllegalStateException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void setProperty(String name, Object value) throws IllegalArgumentException,
+            IllegalStateException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void startDocument(String encoding, Boolean standalone) throws IOException,
+            IllegalArgumentException, IllegalStateException {
+        append("<?xml version='1.0' encoding='utf-8' standalone='"
+                + (standalone ? "yes" : "no") + "' ?>\n");
+    }
+
+    public XmlSerializer startTag(String namespace, String name) throws IOException,
+            IllegalArgumentException, IllegalStateException {
+        if (mInTag) {
+            append(">\n");
+        }
+        append('<');
+        if (namespace != null) {
+            append(namespace);
+            append(':');
+        }
+        append(name);
+        mInTag = true;
+        return this;
+    }
+
+    public XmlSerializer text(char[] buf, int start, int len) throws IOException,
+            IllegalArgumentException, IllegalStateException {
+        if (mInTag) {
+            append(">");
+            mInTag = false;
+        }
+        escapeAndAppendString(buf, start, len);
+        return this;
+    }
+
+    public XmlSerializer text(String text) throws IOException, IllegalArgumentException,
+            IllegalStateException {
+        if (mInTag) {
+            append(">");
+            mInTag = false;
+        }
+        escapeAndAppendString(text);
+        return this;
+    }
+
+}
diff --git a/common/java/com/android/common/NetworkConnectivityListener.java b/common/java/com/android/common/NetworkConnectivityListener.java
new file mode 100644
index 0000000..b49b80d
--- /dev/null
+++ b/common/java/com/android/common/NetworkConnectivityListener.java
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.common;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * A wrapper for a broadcast receiver that provides network connectivity
+ * state information, independent of network type (mobile, Wi-Fi, etc.).
+ * @deprecated Code tempted to use this class should simply listen for connectivity intents
+ * (or poll ConnectivityManager) directly.
+ * {@hide}
+ */
+public class NetworkConnectivityListener {
+    private static final String TAG = "NetworkConnectivityListener";
+    private static final boolean DBG = false;
+
+    private Context mContext;
+    private HashMap<Handler, Integer> mHandlers = new HashMap<Handler, Integer>();
+    private State mState;
+    private boolean mListening;
+    private String mReason;
+    private boolean mIsFailover;
+
+    /** Network connectivity information */
+    private NetworkInfo mNetworkInfo;
+
+    /**
+     * In case of a Disconnect, the connectivity manager may have
+     * already established, or may be attempting to establish, connectivity
+     * with another network. If so, {@code mOtherNetworkInfo} will be non-null.
+     */
+    private NetworkInfo mOtherNetworkInfo;
+
+    private ConnectivityBroadcastReceiver mReceiver;
+
+    private class ConnectivityBroadcastReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+
+            if (!action.equals(ConnectivityManager.CONNECTIVITY_ACTION) ||
+                mListening == false) {
+                Log.w(TAG, "onReceived() called with " + mState.toString() + " and " + intent);
+                return;
+            }
+
+            boolean noConnectivity =
+                intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
+
+            if (noConnectivity) {
+                mState = State.NOT_CONNECTED;
+            } else {
+                mState = State.CONNECTED;
+            }
+
+            mNetworkInfo = (NetworkInfo)
+                intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
+            mOtherNetworkInfo = (NetworkInfo)
+                intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
+
+            mReason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
+            mIsFailover =
+                intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);
+
+            if (DBG) {
+                Log.d(TAG, "onReceive(): mNetworkInfo=" + mNetworkInfo +  " mOtherNetworkInfo = "
+                        + (mOtherNetworkInfo == null ? "[none]" : mOtherNetworkInfo +
+                        " noConn=" + noConnectivity) + " mState=" + mState.toString());
+            }
+
+            // Notifiy any handlers.
+            Iterator<Handler> it = mHandlers.keySet().iterator();
+            while (it.hasNext()) {
+                Handler target = it.next();
+                Message message = Message.obtain(target, mHandlers.get(target));
+                target.sendMessage(message);
+            }
+        }
+    };
+
+    public enum State {
+        UNKNOWN,
+
+        /** This state is returned if there is connectivity to any network **/
+        CONNECTED,
+        /**
+         * This state is returned if there is no connectivity to any network. This is set
+         * to true under two circumstances:
+         * <ul>
+         * <li>When connectivity is lost to one network, and there is no other available
+         * network to attempt to switch to.</li>
+         * <li>When connectivity is lost to one network, and the attempt to switch to
+         * another network fails.</li>
+         */
+        NOT_CONNECTED
+    }
+
+    /**
+     * Create a new NetworkConnectivityListener.
+     */
+    public NetworkConnectivityListener() {
+        mState = State.UNKNOWN;
+        mReceiver = new ConnectivityBroadcastReceiver();
+    }
+
+    /**
+     * This method starts listening for network connectivity state changes.
+     * @param context
+     */
+    public synchronized void startListening(Context context) {
+        if (!mListening) {
+            mContext = context;
+
+            IntentFilter filter = new IntentFilter();
+            filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
+            context.registerReceiver(mReceiver, filter);
+            mListening = true;
+        }
+    }
+
+    /**
+     * This method stops this class from listening for network changes.
+     */
+    public synchronized void stopListening() {
+        if (mListening) {
+            mContext.unregisterReceiver(mReceiver);
+            mContext = null;
+            mNetworkInfo = null;
+            mOtherNetworkInfo = null;
+            mIsFailover = false;
+            mReason = null;
+            mListening = false;
+        }
+    }
+
+    /**
+     * This methods registers a Handler to be called back onto with the specified what code when
+     * the network connectivity state changes.
+     *
+     * @param target The target handler.
+     * @param what The what code to be used when posting a message to the handler.
+     */
+    public void registerHandler(Handler target, int what) {
+        mHandlers.put(target, what);
+    }
+
+    /**
+     * This methods unregisters the specified Handler.
+     * @param target
+     */
+    public void unregisterHandler(Handler target) {
+        mHandlers.remove(target);
+    }
+
+    public State getState() {
+        return mState;
+    }
+
+    /**
+     * Return the NetworkInfo associated with the most recent connectivity event.
+     * @return {@code NetworkInfo} for the network that had the most recent connectivity event.
+     */
+    public NetworkInfo getNetworkInfo() {
+        return mNetworkInfo;
+    }
+
+    /**
+     * If the most recent connectivity event was a DISCONNECT, return
+     * any information supplied in the broadcast about an alternate
+     * network that might be available. If this returns a non-null
+     * value, then another broadcast should follow shortly indicating
+     * whether connection to the other network succeeded.
+     *
+     * @return NetworkInfo
+     */
+    public NetworkInfo getOtherNetworkInfo() {
+        return mOtherNetworkInfo;
+    }
+
+    /**
+     * Returns true if the most recent event was for an attempt to switch over to
+     * a new network following loss of connectivity on another network.
+     * @return {@code true} if this was a failover attempt, {@code false} otherwise.
+     */
+    public boolean isFailover() {
+        return mIsFailover;
+    }
+
+    /**
+     * An optional reason for the connectivity state change may have been supplied.
+     * This returns it.
+     * @return the reason for the state change, if available, or {@code null}
+     * otherwise.
+     */
+    public String getReason() {
+        return mReason;
+    }
+}
diff --git a/common/java/com/android/common/XmlUtils.java b/common/java/com/android/common/XmlUtils.java
new file mode 100644
index 0000000..dd57e49
--- /dev/null
+++ b/common/java/com/android/common/XmlUtils.java
@@ -0,0 +1,796 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.common;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlSerializer;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import android.util.Xml;
+
+/** {@hide} */
+public class XmlUtils
+{
+
+    public static void skipCurrentTag(XmlPullParser parser)
+            throws XmlPullParserException, IOException {
+        int outerDepth = parser.getDepth();
+        int type;
+        while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
+               && (type != XmlPullParser.END_TAG
+                       || parser.getDepth() > outerDepth)) {
+        }
+    }
+
+    public static final int
+    convertValueToList(CharSequence value, String[] options, int defaultValue)
+    {
+        if (null != value) {
+            for (int i = 0; i < options.length; i++) {
+                if (value.equals(options[i]))
+                    return i;
+            }
+        }
+
+        return defaultValue;
+    }
+
+    public static final boolean
+    convertValueToBoolean(CharSequence value, boolean defaultValue)
+    {
+        boolean result = false;
+
+        if (null == value)
+            return defaultValue;
+
+        if (value.equals("1")
+        ||  value.equals("true")
+        ||  value.equals("TRUE"))
+            result = true;
+
+        return result;
+    }
+
+    public static final int
+    convertValueToInt(CharSequence charSeq, int defaultValue)
+    {
+        if (null == charSeq)
+            return defaultValue;
+
+        String nm = charSeq.toString();
+
+        // XXX This code is copied from Integer.decode() so we don't
+        // have to instantiate an Integer!
+
+        int value;
+        int sign = 1;
+        int index = 0;
+        int len = nm.length();
+        int base = 10;
+
+        if ('-' == nm.charAt(0)) {
+            sign = -1;
+            index++;
+        }
+
+        if ('0' == nm.charAt(index)) {
+            //  Quick check for a zero by itself
+            if (index == (len - 1))
+                return 0;
+
+            char    c = nm.charAt(index + 1);
+
+            if ('x' == c || 'X' == c) {
+                index += 2;
+                base = 16;
+            } else {
+                index++;
+                base = 8;
+            }
+        }
+        else if ('#' == nm.charAt(index))
+        {
+            index++;
+            base = 16;
+        }
+
+        return Integer.parseInt(nm.substring(index), base) * sign;
+    }
+
+    public static final int
+    convertValueToUnsignedInt(String value, int defaultValue)
+    {
+        if (null == value)
+            return defaultValue;
+
+        return parseUnsignedIntAttribute(value);
+    }
+
+    public static final int
+    parseUnsignedIntAttribute(CharSequence charSeq)
+    {
+        String  value = charSeq.toString();
+
+        long    bits;
+        int     index = 0;
+        int     len = value.length();
+        int     base = 10;
+
+        if ('0' == value.charAt(index)) {
+            //  Quick check for zero by itself
+            if (index == (len - 1))
+                return 0;
+
+            char    c = value.charAt(index + 1);
+
+            if ('x' == c || 'X' == c) {     //  check for hex
+                index += 2;
+                base = 16;
+            } else {                        //  check for octal
+                index++;
+                base = 8;
+            }
+        } else if ('#' == value.charAt(index)) {
+            index++;
+            base = 16;
+        }
+
+        return (int) Long.parseLong(value.substring(index), base);
+    }
+
+    /**
+     * Flatten a Map into an output stream as XML.  The map can later be
+     * read back with readMapXml().
+     *
+     * @param val The map to be flattened.
+     * @param out Where to write the XML data.
+     *
+     * @see #writeMapXml(Map, String, XmlSerializer)
+     * @see #writeListXml
+     * @see #writeValueXml
+     * @see #readMapXml
+     */
+    public static final void writeMapXml(Map val, OutputStream out)
+            throws XmlPullParserException, java.io.IOException {
+        XmlSerializer serializer = new FastXmlSerializer();
+        serializer.setOutput(out, "utf-8");
+        serializer.startDocument(null, true);
+        serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
+        writeMapXml(val, null, serializer);
+        serializer.endDocument();
+    }
+
+    /**
+     * Flatten a List into an output stream as XML.  The list can later be
+     * read back with readListXml().
+     *
+     * @param val The list to be flattened.
+     * @param out Where to write the XML data.
+     *
+     * @see #writeListXml(List, String, XmlSerializer)
+     * @see #writeMapXml
+     * @see #writeValueXml
+     * @see #readListXml
+     */
+    public static final void writeListXml(List val, OutputStream out)
+    throws XmlPullParserException, java.io.IOException
+    {
+        XmlSerializer serializer = Xml.newSerializer();
+        serializer.setOutput(out, "utf-8");
+        serializer.startDocument(null, true);
+        serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
+        writeListXml(val, null, serializer);
+        serializer.endDocument();
+    }
+
+    /**
+     * Flatten a Map into an XmlSerializer.  The map can later be read back
+     * with readThisMapXml().
+     *
+     * @param val The map to be flattened.
+     * @param name Name attribute to include with this list's tag, or null for
+     *             none.
+     * @param out XmlSerializer to write the map into.
+     *
+     * @see #writeMapXml(Map, OutputStream)
+     * @see #writeListXml
+     * @see #writeValueXml
+     * @see #readMapXml
+     */
+    public static final void writeMapXml(Map val, String name, XmlSerializer out)
+    throws XmlPullParserException, java.io.IOException
+    {
+        if (val == null) {
+            out.startTag(null, "null");
+            out.endTag(null, "null");
+            return;
+        }
+
+        Set s = val.entrySet();
+        Iterator i = s.iterator();
+
+        out.startTag(null, "map");
+        if (name != null) {
+            out.attribute(null, "name", name);
+        }
+
+        while (i.hasNext()) {
+            Map.Entry e = (Map.Entry)i.next();
+            writeValueXml(e.getValue(), (String)e.getKey(), out);
+        }
+
+        out.endTag(null, "map");
+    }
+
+    /**
+     * Flatten a List into an XmlSerializer.  The list can later be read back
+     * with readThisListXml().
+     *
+     * @param val The list to be flattened.
+     * @param name Name attribute to include with this list's tag, or null for
+     *             none.
+     * @param out XmlSerializer to write the list into.
+     *
+     * @see #writeListXml(List, OutputStream)
+     * @see #writeMapXml
+     * @see #writeValueXml
+     * @see #readListXml
+     */
+    public static final void writeListXml(List val, String name, XmlSerializer out)
+    throws XmlPullParserException, java.io.IOException
+    {
+        if (val == null) {
+            out.startTag(null, "null");
+            out.endTag(null, "null");
+            return;
+        }
+
+        out.startTag(null, "list");
+        if (name != null) {
+            out.attribute(null, "name", name);
+        }
+
+        int N = val.size();
+        int i=0;
+        while (i < N) {
+            writeValueXml(val.get(i), null, out);
+            i++;
+        }
+
+        out.endTag(null, "list");
+    }
+
+    /**
+     * Flatten a byte[] into an XmlSerializer.  The list can later be read back
+     * with readThisByteArrayXml().
+     *
+     * @param val The byte array to be flattened.
+     * @param name Name attribute to include with this array's tag, or null for
+     *             none.
+     * @param out XmlSerializer to write the array into.
+     *
+     * @see #writeMapXml
+     * @see #writeValueXml
+     */
+    public static final void writeByteArrayXml(byte[] val, String name,
+            XmlSerializer out)
+            throws XmlPullParserException, java.io.IOException {
+
+        if (val == null) {
+            out.startTag(null, "null");
+            out.endTag(null, "null");
+            return;
+        }
+
+        out.startTag(null, "byte-array");
+        if (name != null) {
+            out.attribute(null, "name", name);
+        }
+
+        final int N = val.length;
+        out.attribute(null, "num", Integer.toString(N));
+
+        StringBuilder sb = new StringBuilder(val.length*2);
+        for (int i=0; i<N; i++) {
+            int b = val[i];
+            int h = b>>4;
+            sb.append(h >= 10 ? ('a'+h-10) : ('0'+h));
+            h = b&0xff;
+            sb.append(h >= 10 ? ('a'+h-10) : ('0'+h));
+        }
+
+        out.text(sb.toString());
+
+        out.endTag(null, "byte-array");
+    }
+
+    /**
+     * Flatten an int[] into an XmlSerializer.  The list can later be read back
+     * with readThisIntArrayXml().
+     *
+     * @param val The int array to be flattened.
+     * @param name Name attribute to include with this array's tag, or null for
+     *             none.
+     * @param out XmlSerializer to write the array into.
+     *
+     * @see #writeMapXml
+     * @see #writeValueXml
+     * @see #readThisIntArrayXml
+     */
+    public static final void writeIntArrayXml(int[] val, String name,
+            XmlSerializer out)
+            throws XmlPullParserException, java.io.IOException {
+
+        if (val == null) {
+            out.startTag(null, "null");
+            out.endTag(null, "null");
+            return;
+        }
+
+        out.startTag(null, "int-array");
+        if (name != null) {
+            out.attribute(null, "name", name);
+        }
+
+        final int N = val.length;
+        out.attribute(null, "num", Integer.toString(N));
+
+        for (int i=0; i<N; i++) {
+            out.startTag(null, "item");
+            out.attribute(null, "value", Integer.toString(val[i]));
+            out.endTag(null, "item");
+        }
+
+        out.endTag(null, "int-array");
+    }
+
+    /**
+     * Flatten an object's value into an XmlSerializer.  The value can later
+     * be read back with readThisValueXml().
+     *
+     * Currently supported value types are: null, String, Integer, Long,
+     * Float, Double Boolean, Map, List.
+     *
+     * @param v The object to be flattened.
+     * @param name Name attribute to include with this value's tag, or null
+     *             for none.
+     * @param out XmlSerializer to write the object into.
+     *
+     * @see #writeMapXml
+     * @see #writeListXml
+     * @see #readValueXml
+     */
+    public static final void writeValueXml(Object v, String name, XmlSerializer out)
+    throws XmlPullParserException, java.io.IOException
+    {
+        String typeStr;
+        if (v == null) {
+            out.startTag(null, "null");
+            if (name != null) {
+                out.attribute(null, "name", name);
+            }
+            out.endTag(null, "null");
+            return;
+        } else if (v instanceof String) {
+            out.startTag(null, "string");
+            if (name != null) {
+                out.attribute(null, "name", name);
+            }
+            out.text(v.toString());
+            out.endTag(null, "string");
+            return;
+        } else if (v instanceof Integer) {
+            typeStr = "int";
+        } else if (v instanceof Long) {
+            typeStr = "long";
+        } else if (v instanceof Float) {
+            typeStr = "float";
+        } else if (v instanceof Double) {
+            typeStr = "double";
+        } else if (v instanceof Boolean) {
+            typeStr = "boolean";
+        } else if (v instanceof byte[]) {
+            writeByteArrayXml((byte[])v, name, out);
+            return;
+        } else if (v instanceof int[]) {
+            writeIntArrayXml((int[])v, name, out);
+            return;
+        } else if (v instanceof Map) {
+            writeMapXml((Map)v, name, out);
+            return;
+        } else if (v instanceof List) {
+            writeListXml((List)v, name, out);
+            return;
+        } else if (v instanceof CharSequence) {
+            // XXX This is to allow us to at least write something if
+            // we encounter styled text...  but it means we will drop all
+            // of the styling information. :(
+            out.startTag(null, "string");
+            if (name != null) {
+                out.attribute(null, "name", name);
+            }
+            out.text(v.toString());
+            out.endTag(null, "string");
+            return;
+        } else {
+            throw new RuntimeException("writeValueXml: unable to write value " + v);
+        }
+
+        out.startTag(null, typeStr);
+        if (name != null) {
+            out.attribute(null, "name", name);
+        }
+        out.attribute(null, "value", v.toString());
+        out.endTag(null, typeStr);
+    }
+
+    /**
+     * Read a HashMap from an InputStream containing XML.  The stream can
+     * previously have been written by writeMapXml().
+     *
+     * @param in The InputStream from which to read.
+     *
+     * @return HashMap The resulting map.
+     *
+     * @see #readListXml
+     * @see #readValueXml
+     * @see #readThisMapXml
+     * #see #writeMapXml
+     */
+    public static final HashMap readMapXml(InputStream in)
+    throws XmlPullParserException, java.io.IOException
+    {
+        XmlPullParser   parser = Xml.newPullParser();
+        parser.setInput(in, null);
+        return (HashMap)readValueXml(parser, new String[1]);
+    }
+
+    /**
+     * Read an ArrayList from an InputStream containing XML.  The stream can
+     * previously have been written by writeListXml().
+     *
+     * @param in The InputStream from which to read.
+     *
+     * @return HashMap The resulting list.
+     *
+     * @see #readMapXml
+     * @see #readValueXml
+     * @see #readThisListXml
+     * @see #writeListXml
+     */
+    public static final ArrayList readListXml(InputStream in)
+    throws XmlPullParserException, java.io.IOException
+    {
+        XmlPullParser   parser = Xml.newPullParser();
+        parser.setInput(in, null);
+        return (ArrayList)readValueXml(parser, new String[1]);
+    }
+
+    /**
+     * Read a HashMap object from an XmlPullParser.  The XML data could
+     * previously have been generated by writeMapXml().  The XmlPullParser
+     * must be positioned <em>after</em> the tag that begins the map.
+     *
+     * @param parser The XmlPullParser from which to read the map data.
+     * @param endTag Name of the tag that will end the map, usually "map".
+     * @param name An array of one string, used to return the name attribute
+     *             of the map's tag.
+     *
+     * @return HashMap The newly generated map.
+     *
+     * @see #readMapXml
+     */
+    public static final HashMap readThisMapXml(XmlPullParser parser, String endTag, String[] name)
+    throws XmlPullParserException, java.io.IOException
+    {
+        HashMap map = new HashMap();
+
+        int eventType = parser.getEventType();
+        do {
+            if (eventType == parser.START_TAG) {
+                Object val = readThisValueXml(parser, name);
+                if (name[0] != null) {
+                    //System.out.println("Adding to map: " + name + " -> " + val);
+                    map.put(name[0], val);
+                } else {
+                    throw new XmlPullParserException(
+                        "Map value without name attribute: " + parser.getName());
+                }
+            } else if (eventType == parser.END_TAG) {
+                if (parser.getName().equals(endTag)) {
+                    return map;
+                }
+                throw new XmlPullParserException(
+                    "Expected " + endTag + " end tag at: " + parser.getName());
+            }
+            eventType = parser.next();
+        } while (eventType != parser.END_DOCUMENT);
+
+        throw new XmlPullParserException(
+            "Document ended before " + endTag + " end tag");
+    }
+
+    /**
+     * Read an ArrayList object from an XmlPullParser.  The XML data could
+     * previously have been generated by writeListXml().  The XmlPullParser
+     * must be positioned <em>after</em> the tag that begins the list.
+     *
+     * @param parser The XmlPullParser from which to read the list data.
+     * @param endTag Name of the tag that will end the list, usually "list".
+     * @param name An array of one string, used to return the name attribute
+     *             of the list's tag.
+     *
+     * @return HashMap The newly generated list.
+     *
+     * @see #readListXml
+     */
+    public static final ArrayList readThisListXml(XmlPullParser parser, String endTag, String[] name)
+    throws XmlPullParserException, java.io.IOException
+    {
+        ArrayList list = new ArrayList();
+
+        int eventType = parser.getEventType();
+        do {
+            if (eventType == parser.START_TAG) {
+                Object val = readThisValueXml(parser, name);
+                list.add(val);
+                //System.out.println("Adding to list: " + val);
+            } else if (eventType == parser.END_TAG) {
+                if (parser.getName().equals(endTag)) {
+                    return list;
+                }
+                throw new XmlPullParserException(
+                    "Expected " + endTag + " end tag at: " + parser.getName());
+            }
+            eventType = parser.next();
+        } while (eventType != parser.END_DOCUMENT);
+
+        throw new XmlPullParserException(
+            "Document ended before " + endTag + " end tag");
+    }
+
+    /**
+     * Read an int[] object from an XmlPullParser.  The XML data could
+     * previously have been generated by writeIntArrayXml().  The XmlPullParser
+     * must be positioned <em>after</em> the tag that begins the list.
+     *
+     * @param parser The XmlPullParser from which to read the list data.
+     * @param endTag Name of the tag that will end the list, usually "list".
+     * @param name An array of one string, used to return the name attribute
+     *             of the list's tag.
+     *
+     * @return Returns a newly generated int[].
+     *
+     * @see #readListXml
+     */
+    public static final int[] readThisIntArrayXml(XmlPullParser parser,
+            String endTag, String[] name)
+            throws XmlPullParserException, java.io.IOException {
+
+        int num;
+        try {
+            num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+        } catch (NullPointerException e) {
+            throw new XmlPullParserException(
+                    "Need num attribute in byte-array");
+        } catch (NumberFormatException e) {
+            throw new XmlPullParserException(
+                    "Not a number in num attribute in byte-array");
+        }
+
+        int[] array = new int[num];
+        int i = 0;
+
+        int eventType = parser.getEventType();
+        do {
+            if (eventType == parser.START_TAG) {
+                if (parser.getName().equals("item")) {
+                    try {
+                        array[i] = Integer.parseInt(
+                                parser.getAttributeValue(null, "value"));
+                    } catch (NullPointerException e) {
+                        throw new XmlPullParserException(
+                                "Need value attribute in item");
+                    } catch (NumberFormatException e) {
+                        throw new XmlPullParserException(
+                                "Not a number in value attribute in item");
+                    }
+                } else {
+                    throw new XmlPullParserException(
+                            "Expected item tag at: " + parser.getName());
+                }
+            } else if (eventType == parser.END_TAG) {
+                if (parser.getName().equals(endTag)) {
+                    return array;
+                } else if (parser.getName().equals("item")) {
+                    i++;
+                } else {
+                    throw new XmlPullParserException(
+                        "Expected " + endTag + " end tag at: "
+                        + parser.getName());
+                }
+            }
+            eventType = parser.next();
+        } while (eventType != parser.END_DOCUMENT);
+
+        throw new XmlPullParserException(
+            "Document ended before " + endTag + " end tag");
+    }
+
+    /**
+     * Read a flattened object from an XmlPullParser.  The XML data could
+     * previously have been written with writeMapXml(), writeListXml(), or
+     * writeValueXml().  The XmlPullParser must be positioned <em>at</em> the
+     * tag that defines the value.
+     *
+     * @param parser The XmlPullParser from which to read the object.
+     * @param name An array of one string, used to return the name attribute
+     *             of the value's tag.
+     *
+     * @return Object The newly generated value object.
+     *
+     * @see #readMapXml
+     * @see #readListXml
+     * @see #writeValueXml
+     */
+    public static final Object readValueXml(XmlPullParser parser, String[] name)
+    throws XmlPullParserException, java.io.IOException
+    {
+        int eventType = parser.getEventType();
+        do {
+            if (eventType == parser.START_TAG) {
+                return readThisValueXml(parser, name);
+            } else if (eventType == parser.END_TAG) {
+                throw new XmlPullParserException(
+                    "Unexpected end tag at: " + parser.getName());
+            } else if (eventType == parser.TEXT) {
+                throw new XmlPullParserException(
+                    "Unexpected text: " + parser.getText());
+            }
+            eventType = parser.next();
+        } while (eventType != parser.END_DOCUMENT);
+
+        throw new XmlPullParserException(
+            "Unexpected end of document");
+    }
+
+    private static final Object readThisValueXml(XmlPullParser parser, String[] name)
+    throws XmlPullParserException, java.io.IOException
+    {
+        final String valueName = parser.getAttributeValue(null, "name");
+        final String tagName = parser.getName();
+
+        //System.out.println("Reading this value tag: " + tagName + ", name=" + valueName);
+
+        Object res;
+
+        if (tagName.equals("null")) {
+            res = null;
+        } else if (tagName.equals("string")) {
+            String value = "";
+            int eventType;
+            while ((eventType = parser.next()) != parser.END_DOCUMENT) {
+                if (eventType == parser.END_TAG) {
+                    if (parser.getName().equals("string")) {
+                        name[0] = valueName;
+                        //System.out.println("Returning value for " + valueName + ": " + value);
+                        return value;
+                    }
+                    throw new XmlPullParserException(
+                        "Unexpected end tag in <string>: " + parser.getName());
+                } else if (eventType == parser.TEXT) {
+                    value += parser.getText();
+                } else if (eventType == parser.START_TAG) {
+                    throw new XmlPullParserException(
+                        "Unexpected start tag in <string>: " + parser.getName());
+                }
+            }
+            throw new XmlPullParserException(
+                "Unexpected end of document in <string>");
+        } else if (tagName.equals("int")) {
+            res = Integer.parseInt(parser.getAttributeValue(null, "value"));
+        } else if (tagName.equals("long")) {
+            res = Long.valueOf(parser.getAttributeValue(null, "value"));
+        } else if (tagName.equals("float")) {
+            res = new Float(parser.getAttributeValue(null, "value"));
+        } else if (tagName.equals("double")) {
+            res = new Double(parser.getAttributeValue(null, "value"));
+        } else if (tagName.equals("boolean")) {
+            res = Boolean.valueOf(parser.getAttributeValue(null, "value"));
+        } else if (tagName.equals("int-array")) {
+            parser.next();
+            res = readThisIntArrayXml(parser, "int-array", name);
+            name[0] = valueName;
+            //System.out.println("Returning value for " + valueName + ": " + res);
+            return res;
+        } else if (tagName.equals("map")) {
+            parser.next();
+            res = readThisMapXml(parser, "map", name);
+            name[0] = valueName;
+            //System.out.println("Returning value for " + valueName + ": " + res);
+            return res;
+        } else if (tagName.equals("list")) {
+            parser.next();
+            res = readThisListXml(parser, "list", name);
+            name[0] = valueName;
+            //System.out.println("Returning value for " + valueName + ": " + res);
+            return res;
+        } else {
+            throw new XmlPullParserException(
+                "Unknown tag: " + tagName);
+        }
+
+        // Skip through to end tag.
+        int eventType;
+        while ((eventType = parser.next()) != parser.END_DOCUMENT) {
+            if (eventType == parser.END_TAG) {
+                if (parser.getName().equals(tagName)) {
+                    name[0] = valueName;
+                    //System.out.println("Returning value for " + valueName + ": " + res);
+                    return res;
+                }
+                throw new XmlPullParserException(
+                    "Unexpected end tag in <" + tagName + ">: " + parser.getName());
+            } else if (eventType == parser.TEXT) {
+                throw new XmlPullParserException(
+                "Unexpected text in <" + tagName + ">: " + parser.getName());
+            } else if (eventType == parser.START_TAG) {
+                throw new XmlPullParserException(
+                    "Unexpected start tag in <" + tagName + ">: " + parser.getName());
+            }
+        }
+        throw new XmlPullParserException(
+            "Unexpected end of document in <" + tagName + ">");
+    }
+
+    public static final void beginDocument(XmlPullParser parser, String firstElementName) throws XmlPullParserException, IOException
+    {
+        int type;
+        while ((type=parser.next()) != parser.START_TAG
+                   && type != parser.END_DOCUMENT) {
+            ;
+        }
+
+        if (type != parser.START_TAG) {
+            throw new XmlPullParserException("No start tag found");
+        }
+
+        if (!parser.getName().equals(firstElementName)) {
+            throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
+                    ", expected " + firstElementName);
+        }
+    }
+
+    public static final void nextElement(XmlPullParser parser) throws XmlPullParserException, IOException
+    {
+        int type;
+        while ((type=parser.next()) != parser.START_TAG
+                   && type != parser.END_DOCUMENT) {
+            ;
+        }
+    }
+}
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 676d6d5..7d07604 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -606,7 +606,7 @@
         public int uid;
         
         /**
-         * The tag that was provided when the process crashed.
+         * The activity name associated with the error, if known.  May be null.
          */
         public String tag;
 
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index a0498aa..90f46dd 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -979,13 +979,23 @@
             return true;
         }
 
-        case HANDLE_APPLICATION_ERROR_TRANSACTION: {
+        case HANDLE_APPLICATION_CRASH_TRANSACTION: {
+            data.enforceInterface(IActivityManager.descriptor);
+            IBinder app = data.readStrongBinder();
+            ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
+            handleApplicationCrash(app, ci);
+            reply.writeNoException();
+            return true;
+        }
+
+        case HANDLE_APPLICATION_WTF_TRANSACTION: {
             data.enforceInterface(IActivityManager.descriptor);
             IBinder app = data.readStrongBinder();
             String tag = data.readString();
             ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
-            handleApplicationError(app, tag, ci);
+            boolean res = handleApplicationWtf(app, tag, ci);
             reply.writeNoException();
+            reply.writeInt(res ? 1 : 0);
             return true;
         }
 
@@ -2337,7 +2347,20 @@
         /* this base class version is never called */
         return true;
     }
-    public void handleApplicationError(IBinder app, String tag,
+    public void handleApplicationCrash(IBinder app,
+            ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException
+    {
+        Parcel data = Parcel.obtain();
+        Parcel reply = Parcel.obtain();
+        data.writeInterfaceToken(IActivityManager.descriptor);
+        data.writeStrongBinder(app);
+        crashInfo.writeToParcel(data, 0);
+        mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0);
+        reply.readException();
+        reply.recycle();
+        data.recycle();
+    }
+    public boolean handleApplicationWtf(IBinder app, String tag,
             ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException
     {
         Parcel data = Parcel.obtain();
@@ -2346,10 +2369,12 @@
         data.writeStrongBinder(app);
         data.writeString(tag);
         crashInfo.writeToParcel(data, 0);
-        mRemote.transact(HANDLE_APPLICATION_ERROR_TRANSACTION, data, reply, 0);
+        mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0);
         reply.readException();
+        boolean res = reply.readInt() != 0;
         reply.recycle();
         data.recycle();
+        return res;
     }
 
     public void signalPersistentProcesses(int sig) throws RemoteException {
diff --git a/core/java/android/app/ApplicationErrorReport.java b/core/java/android/app/ApplicationErrorReport.java
index e89b3ad0..a4b692f 100644
--- a/core/java/android/app/ApplicationErrorReport.java
+++ b/core/java/android/app/ApplicationErrorReport.java
@@ -195,6 +195,7 @@
             StringWriter sw = new StringWriter();
             tr.printStackTrace(new PrintWriter(sw));
             stackTrace = sw.toString();
+            exceptionMessage = tr.getMessage();
 
             // Populate fields with the "root cause" exception
             while (tr.getCause() != null) {
diff --git a/core/java/android/app/IActivityController.aidl b/core/java/android/app/IActivityController.aidl
index 804dd61..c76a517 100644
--- a/core/java/android/app/IActivityController.aidl
+++ b/core/java/android/app/IActivityController.aidl
@@ -44,7 +44,7 @@
      * it immediately.
      */
     boolean appCrashed(String processName, int pid,
-            String tag, String shortMsg, String longMsg,
+            String shortMsg, String longMsg,
             long timeMillis, String stackTrace);
     
     /**
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index c890c4c..ca6bfa7 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -242,8 +242,9 @@
     // Special low-level communication with activity manager.
     public void startRunning(String pkg, String cls, String action,
             String data) throws RemoteException;
-
-    public void handleApplicationError(IBinder app, String tag,
+    public void handleApplicationCrash(IBinder app,
+            ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException;
+    public boolean handleApplicationWtf(IBinder app, String tag,
             ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException;
     
     /*
@@ -349,7 +350,7 @@
     // Please keep these transaction codes the same -- they are also
     // sent by C++ code.
     int START_RUNNING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION;
-    int HANDLE_APPLICATION_ERROR_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+1;
+    int HANDLE_APPLICATION_CRASH_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+1;
     int START_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+2;
     int UNHANDLED_BACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+3;
     int OPEN_CONTENT_URI_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+4;
@@ -446,4 +447,5 @@
     int KILL_APPLICATION_PROCESS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+98;
     int START_ACTIVITY_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+99;
     int OVERRIDE_PENDING_TRANSITION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+100;
+    int HANDLE_APPLICATION_WTF_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+101;
 }
diff --git a/core/java/android/bluetooth/BluetoothA2dp.java b/core/java/android/bluetooth/BluetoothA2dp.java
index fda9b81..7e5f858 100644
--- a/core/java/android/bluetooth/BluetoothA2dp.java
+++ b/core/java/android/bluetooth/BluetoothA2dp.java
@@ -83,6 +83,8 @@
     /** Default priority for a2dp devices that should not allow incoming
      * connections */
     public static final int PRIORITY_OFF = 0;
+    /** Default priority when not set or when the device is unpaired */
+    public static final int PRIORITY_UNDEFINED = -1;
 
     private final IBluetoothA2dp mService;
     private final Context mContext;
diff --git a/core/java/android/bluetooth/BluetoothHeadset.java b/core/java/android/bluetooth/BluetoothHeadset.java
index 5eb655a..b792965 100644
--- a/core/java/android/bluetooth/BluetoothHeadset.java
+++ b/core/java/android/bluetooth/BluetoothHeadset.java
@@ -109,6 +109,8 @@
     /** Default priority for headsets that should not be auto-connected
      * and not allow incoming connections. */
     public static final int PRIORITY_OFF = 0;
+    /** Default priority when not set or when the device is unpaired */
+    public static final int PRIORITY_UNDEFINED = -1;
 
     /** The voice dialer 'works' but the user experience is poor. The voice
      *  recognizer has trouble dealing with the 8kHz SCO signal, and it still
diff --git a/core/java/android/bluetooth/package.html b/core/java/android/bluetooth/package.html
index 4f0755e..5ff240c 100644
--- a/core/java/android/bluetooth/package.html
+++ b/core/java/android/bluetooth/package.html
@@ -12,96 +12,16 @@
   <li>Transfer data to and from other devices</li>
 </ul>
 
-<p class="note"><strong>Note:</strong>
+<p>
 To perform Bluetooth communication using these APIs, an application must
 declare the {@link android.Manifest.permission#BLUETOOTH} permission. Some
-additional functionality, such as requesting device discovery and
-pairing also requires the {@link android.Manifest.permission#BLUETOOTH_ADMIN}
+additional functionality, such as requesting device discovery,
+also requires the {@link android.Manifest.permission#BLUETOOTH_ADMIN}
 permission.
 </p>
 
-<h3>Overview</h3>
-
-<p>Here's a basic introduction to the Bluetooth classes:</p>
-<dl>
-  <dt>{@link android.bluetooth.BluetoothAdapter}</dt>
-  <dd>This represents the local Bluetooth adapter, which is essentially the
-  entry-point to performing any interaction with Bluetooth. With it, you can
-  discover other Bluetooth devices, query a list of bonded (paired) devices,
-  initialize a {@link android.bluetooth.BluetoothDevice} using a known MAC
-  address, and create a {@link android.bluetooth.BluetoothServerSocket} to
-  listen for communications from other devices.</dd>
-
-  <dt>{@link android.bluetooth.BluetoothDevice}</dt>
-  <dd>This represents a remote Bluetooth device. Use this to request a
-  connection with a remote device through a
-  {@link android.bluetooth.BluetoothSocket}
-  or query information about the device such as its name, address, class, and
-  bonding state.</dd>
-
-  <dt>{@link android.bluetooth.BluetoothSocket}</dt>
-  <dd>This represents the interface for a Bluetooth socket
-  (similar to a TCP client-side {@link java.net.Socket}). This is the
-  connection point that allows an app to transfer data with another Bluetooth
-  device via {@link java.io.InputStream} and {@link java.io.OutputStream}.</dd>
-  <dt>{@link android.bluetooth.BluetoothServerSocket}</dt>
-
-  <dd>This represents an open server socket that listens for incoming requests
-  (similar to a TCP server-side {@link java.net.ServerSocket}).
-  When attempting to connect two Android devices, one device will need to open
-  a server socket with this class. When a connection is accepted, a new
-  {@link android.bluetooth.BluetoothSocket} will be returned,
-  which can be used to manage the connection and transfer data.</dd>
-
-  <dt>{@link android.bluetooth.BluetoothClass}</dt>
-  <dd>This represents the Bluetooth class for a device which describes general
-  characteristics and capabilities of a device. This class and its subclasses
-  don't provide any actual functionality. The sub-classes are entirely composed
-  of constants for the device and service class definitions.</dd>
-</dl>
-
-
-<h3>Example Procedure</h3>
-
-<p>For example, here's an pseudo-code procedure for discovering and
-connecting a remote device, and transfering data:</p>
-
-<ol>
-  <li>Register a {@link android.content.BroadcastReceiver} that accepts the
-  {@link android.bluetooth.BluetoothDevice#ACTION_FOUND} Intent.</li>
-  <li>Call {@link android.bluetooth.BluetoothAdapter#getDefaultAdapter} to
-  retrieve the Android system's local
-  {@link android.bluetooth.BluetoothAdapter}.</li>
-  <li>Call {@link android.bluetooth.BluetoothAdapter#startDiscovery()
-  BluetoothAdapter.startDiscovery()} to scan for local devices. This is where
-  the BroadcastReceiver comes in; Android now scans for devices and will
-  broadcast the {@link android.bluetooth.BluetoothDevice#ACTION_FOUND} Intent
-  for each remote device discovered. The
-  {@link android.content.BroadcastReceiver}
-  you created will receive each Intent.</li>
-  <li>The {@link android.bluetooth.BluetoothDevice#ACTION_FOUND} Intent
-  includes the {@link android.bluetooth.BluetoothDevice#EXTRA_DEVICE}
-  Parcelable extra, which is a {@link android.bluetooth.BluetoothDevice}
-  object. Extract this from the Intent and call
-  {@link android.bluetooth.BluetoothDevice#createRfcommSocketToServiceRecord(java.util.UUID)
-  BluetoothDevice.createRfcommSocketToServiceRecord()}
-  to open a {@link android.bluetooth.BluetoothSocket} with a chosen
-  remote device.</li>
-  <li>Call {@link android.bluetooth.BluetoothSocket#connect()
-  BluetoothSocket.connect()} to connect with the remote device.</li>
-  <li>When successfully connected, call
-  {@link android.bluetooth.BluetoothSocket#getInputStream()
-  BluetoothSocket.getInputStream()} and/or
-  {@link android.bluetooth.BluetoothSocket#getOutputStream()
-  BluetoothSocket.getOutputStream()} to retreive an
-  {@link java.io.InputStream} and {@link java.io.OutputStream}, respectively,
-  which are hooked into the socket.</li>
-  <li>Use {@link java.io.InputStream#read(byte[]) InputStream.read()} and
-  {@link java.io.OutputStream#write(byte[]) OutputStream.write()} to transfer
-  data.</li>
-</ol>
-
-
+<p>For a detailed guide to using the Bluetooth APIs, see the <a
+href="{@docRoot}guide/topics/wireless/bluetooth.html">Bluetooth Dev Guide topic</a>.</p>
 
 <p class="note"><strong>Note:</strong>
 Not all Android devices are guaranteed to have Bluetooth functionality.</p>
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index d784759..99ec60e 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -575,7 +575,7 @@
  * {@link #setFlags} and {@link #addFlags}.  See {@link #setFlags} for a list
  * of all possible flags.
  */
-public class Intent implements Parcelable {
+public class Intent implements Parcelable, Cloneable {
     // ---------------------------------------------------------------------
     // ---------------------------------------------------------------------
     // Standard intent activity actions (see action variable).
diff --git a/core/java/android/os/FileObserver.java b/core/java/android/os/FileObserver.java
index 38d252e..3457815 100644
--- a/core/java/android/os/FileObserver.java
+++ b/core/java/android/os/FileObserver.java
@@ -103,9 +103,7 @@
             try {
                 observer.onEvent(mask, path);
             } catch (Throwable throwable) {
-                Log.e(LOG_TAG, "Unhandled throwable " + throwable.toString() + 
-                        " (returned by observer " + observer + ")", throwable);
-                RuntimeInit.crash("FileObserver", throwable);
+                Log.wtf(LOG_TAG, "Unhandled exception in FileObserver " + observer, throwable);
             }
         }
     }
diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl
index 0afc537..23762ca 100644
--- a/core/java/android/os/IPowerManager.aidl
+++ b/core/java/android/os/IPowerManager.aidl
@@ -31,6 +31,7 @@
     void preventScreenOn(boolean prevent);
     boolean isScreenOn();
     void reboot(String reason);
+    void crash(String message);
 
     // sets the brightness of the backlights (screen, keyboard, button) 0-255
     void setBacklightBrightness(int brightness);
diff --git a/core/java/android/os/MessageQueue.java b/core/java/android/os/MessageQueue.java
index caf0923..bc653d6 100644
--- a/core/java/android/os/MessageQueue.java
+++ b/core/java/android/os/MessageQueue.java
@@ -115,9 +115,7 @@
                         didIdle = true;
                         keep = ((IdleHandler)idler).queueIdle();
                     } catch (Throwable t) {
-                        Log.e("MessageQueue",
-                              "IdleHandler threw exception", t);
-                        RuntimeInit.crash("MessageQueue", t);
+                        Log.wtf("MessageQueue", "IdleHandler threw exception", t);
                     }
 
                     if (!keep) {
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java
index 293dabc..e4eaf45b 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -326,12 +326,11 @@
         {
             synchronized (mToken) {
                 if (mHeld) {
+                    Log.wtf(TAG, "WakeLock finalized while still held: " + mTag);
                     try {
                         mService.releaseWakeLock(mToken, 0);
                     } catch (RemoteException e) {
                     }
-                    RuntimeInit.crash(TAG, new Exception(
-                                "WakeLock finalized while still held: "+mTag));
                 }
             }
         }
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index ed9198e..ac8bf91 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -35,6 +35,7 @@
 import android.net.Uri;
 import android.os.RemoteException;
 import android.text.TextUtils;
+import android.util.DisplayMetrics;
 import android.util.Pair;
 import android.view.View;
 
@@ -294,7 +295,7 @@
          * The display name for the contact.
          * <P>Type: TEXT</P>
          */
-        public static final String DISPLAY_NAME = "display_name";
+        public static final String DISPLAY_NAME = ContactNameColumns.DISPLAY_NAME_PRIMARY;
 
         /**
          * Reference to the row in the RawContacts table holding the contact name.
@@ -456,13 +457,13 @@
          * The default text shown as the contact's display name.  It is based on
          * available data, see {@link #DISPLAY_NAME_SOURCE}.
          */
-        public static final String DISPLAY_NAME = "display_name";
+        public static final String DISPLAY_NAME_PRIMARY = "display_name";
 
         /**
          * Alternative representation of the display name.  If display name is
          * based on the structured name and the structured name follows
          * the Western full name style, then this field contains the "family name first"
-         * version of the full name.  Otherwise, it is the same as {@link #DISPLAY_NAME}.
+         * version of the full name.  Otherwise, it is the same as DISPLAY_NAME_PRIMARY.
          */
         public static final String DISPLAY_NAME_ALTERNATIVE = "display_name_alt";
 
@@ -483,7 +484,7 @@
          * the sort key is the name's Pinyin spelling; for Japanese names
          * it is the Hiragana version of the phonetic name.
          */
-        public static final String SORT_KEY = "sort_key";
+        public static final String SORT_KEY_PRIMARY = "sort_key";
 
         /**
          * Sort key based on the alternative representation of the full name,
@@ -562,7 +563,7 @@
      * </tr>
      * <tr>
      * <td>String</td>
-     * <td>{@link #DISPLAY_NAME}</td>
+     * <td>DISPLAY_NAME_PRIMARY</td>
      * <td>read-only</td>
      * <td>The display name for the contact. It is the display name
      * contributed by the raw contact referred to by the NAME_RAW_CONTACT_ID
@@ -692,7 +693,7 @@
      * </table>
      */
     public static class Contacts implements BaseColumns, ContactsColumns,
-            ContactOptionsColumns, ContactStatusColumns {
+            ContactOptionsColumns, ContactNameColumns, ContactStatusColumns {
         /**
          * This utility class cannot be instantiated
          */
@@ -1519,6 +1520,7 @@
                 super(cursor);
             }
 
+            @Override
             public android.content.Entity getEntityAndIncrementCursor(Cursor cursor)
                     throws RemoteException {
                 final int columnRawContactId = cursor.getColumnIndexOrThrow(RawContacts._ID);
@@ -1757,8 +1759,8 @@
      * @see ContactsContract.Data
      */
     protected interface DataColumnsWithJoins extends BaseColumns, DataColumns, StatusColumns,
-        RawContactsColumns, ContactsColumns, ContactOptionsColumns, ContactStatusColumns {
-
+            RawContactsColumns, ContactsColumns, ContactNameColumns, ContactOptionsColumns,
+            ContactStatusColumns {
     }
 
     /**
@@ -3039,7 +3041,7 @@
 
             /**
              * The alphabet used for capturing the phonetic name.
-             * See {@link ContactsContract.PhoneticNameStyle}.
+             * See ContactsContract.PhoneticNameStyle.
              * @hide
              */
             public static final String PHONETIC_NAME_STYLE = DATA11;
@@ -3922,6 +3924,12 @@
          * <td>{@link #DATA9}</td>
          * <td></td>
          * </tr>
+         * <tr>
+         * <td>String</td>
+         * <td>PHONETIC_NAME_STYLE</td>
+         * <td>{@link #DATA10}</td>
+         * <td></td>
+         * </tr>
          * </table>
          */
         public static final class Organization implements DataColumnsWithJoins, CommonColumns {
@@ -3979,6 +3987,13 @@
             public static final String OFFICE_LOCATION = DATA9;
 
             /**
+             * The alphabet used for capturing the phonetic name.
+             * See {@link ContactsContract.PhoneticNameStyle}.
+             * @hide
+             */
+            public static final String PHONETIC_NAME_STYLE = DATA10;
+
+            /**
              * Return the string resource that best describes the given
              * {@link #TYPE}. Will always return a valid resource.
              */
@@ -4599,6 +4614,7 @@
                 super(cursor);
             }
 
+            @Override
             public Entity getEntityAndIncrementCursor(Cursor cursor) throws RemoteException {
                 // we expect the cursor is already at the row we need to read from
                 final ContentValues values = new ContentValues();
@@ -4881,8 +4897,10 @@
 
         /**
          * Extra used to specify pivot dialog location in screen coordinates.
+         * @deprecated Use {@link Intent#setSourceBounds(Rect)} instead.
          * @hide
          */
+        @Deprecated
         public static final String EXTRA_TARGET_RECT = "target_rect";
 
         /**
@@ -4942,15 +4960,17 @@
          */
         public static void showQuickContact(Context context, View target, Uri lookupUri, int mode,
                 String[] excludeMimes) {
-            // Find location and bounds of target view
-            final int[] location = new int[2];
-            target.getLocationOnScreen(location);
+            // Find location and bounds of target view, adjusting based on the
+            // assumed local density.
+            final float appScale = context.getResources().getCompatibilityInfo().applicationScale;
+            final int[] pos = new int[2];
+            target.getLocationOnScreen(pos);
 
             final Rect rect = new Rect();
-            rect.left = location[0];
-            rect.top = location[1];
-            rect.right = rect.left + target.getWidth();
-            rect.bottom = rect.top + target.getHeight();
+            rect.left = (int) (pos[0] * appScale + 0.5f);
+            rect.top = (int) (pos[1] * appScale + 0.5f);
+            rect.right = (int) ((pos[0] + target.getWidth()) * appScale + 0.5f);
+            rect.bottom = (int) ((pos[1] + target.getHeight()) * appScale + 0.5f);
 
             // Trigger with obtained rectangle
             showQuickContact(context, rect, lookupUri, mode, excludeMimes);
@@ -4967,8 +4987,11 @@
          * @param target Specific {@link Rect} that this dialog should be
          *            centered around, in screen coordinates. In particular, if
          *            the dialog has a "callout" arrow, it will be pointed and
-         *            centered around this {@link Rect}.
-         * @param lookupUri A {@link ContactsContract.Contacts#CONTENT_LOOKUP_URI} style
+         *            centered around this {@link Rect}. If you are running at a
+         *            non-native density, you need to manually adjust using
+         *            {@link DisplayMetrics#density} before calling.
+         * @param lookupUri A
+         *            {@link ContactsContract.Contacts#CONTENT_LOOKUP_URI} style
          *            {@link Uri} that describes a specific contact to feature
          *            in this dialog.
          * @param mode Any of {@link #MODE_SMALL}, {@link #MODE_MEDIUM}, or
@@ -4987,7 +5010,7 @@
                     | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
 
             intent.setData(lookupUri);
-            intent.putExtra(EXTRA_TARGET_RECT, target);
+            intent.setSourceBounds(target);
             intent.putExtra(EXTRA_MODE, mode);
             intent.putExtra(EXTRA_EXCLUDE_MIMES, excludeMimes);
             context.startActivity(intent);
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 947ab19..09651f1 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -3710,6 +3710,11 @@
                 "dropbox:";
 
         /**
+         * Nonzero causes Log.wtf() to crash.
+         */
+        public static final String WTF_IS_FATAL = "wtf_is_fatal";
+
+        /**
          * The length of time in milli-seconds that automatic small adjustments to
          * SystemClock are ignored if NITZ_UPDATE_DIFF is not exceeded.
          */
diff --git a/core/java/android/server/BluetoothA2dpService.java b/core/java/android/server/BluetoothA2dpService.java
index 03dcf00..816ae14 100644
--- a/core/java/android/server/BluetoothA2dpService.java
+++ b/core/java/android/server/BluetoothA2dpService.java
@@ -96,11 +96,13 @@
                                                    BluetoothDevice.ERROR);
                 switch(bondState) {
                 case BluetoothDevice.BOND_BONDED:
-                    setSinkPriority(device, BluetoothA2dp.PRIORITY_ON);
+                    if (getSinkPriority(device) == BluetoothA2dp.PRIORITY_UNDEFINED) {
+                        setSinkPriority(device, BluetoothA2dp.PRIORITY_ON);
+                    }
                     break;
                 case BluetoothDevice.BOND_BONDING:
                 case BluetoothDevice.BOND_NONE:
-                    setSinkPriority(device, BluetoothA2dp.PRIORITY_OFF);
+                    setSinkPriority(device, BluetoothA2dp.PRIORITY_UNDEFINED);
                     break;
                 }
             } else if (action.equals(BluetoothDevice.ACTION_ACL_CONNECTED)) {
diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java
index 0d0d245..b28cf43 100644
--- a/core/java/android/server/BluetoothEventLoop.java
+++ b/core/java/android/server/BluetoothEventLoop.java
@@ -21,14 +21,15 @@
 import android.bluetooth.BluetoothClass;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothUuid;
-import android.os.ParcelUuid;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Handler;
 import android.os.Message;
+import android.os.ParcelUuid;
 import android.util.Log;
 
 import java.util.HashMap;
+import java.util.Set;
 
 /**
  * TODO: Move this to
@@ -553,7 +554,7 @@
         if (mBluetoothService.isEnabled() &&
                 (BluetoothUuid.isAudioSource(uuid) || BluetoothUuid.isAvrcpTarget(uuid)
                         || BluetoothUuid.isAdvAudioDist(uuid)) &&
-                        (a2dp.getNonDisconnectedSinks().size() == 0)) {
+                        !isOtherSinkInNonDisconnectingState(address)) {
             BluetoothDevice device = mAdapter.getRemoteDevice(address);
             authorized = a2dp.getSinkPriority(device) > BluetoothA2dp.PRIORITY_OFF;
             if (authorized) {
@@ -568,6 +569,16 @@
         return authorized;
     }
 
+    boolean isOtherSinkInNonDisconnectingState(String address) {
+        BluetoothA2dp a2dp = new BluetoothA2dp(mContext);
+        Set<BluetoothDevice> devices = a2dp.getNonDisconnectedSinks();
+        if (devices.size() == 0) return false;
+        for(BluetoothDevice dev: devices) {
+            if (!dev.getAddress().equals(address)) return true;
+        }
+        return false;
+    }
+
     private void onAgentCancel() {
         Intent intent = new Intent(BluetoothDevice.ACTION_PAIRING_CANCEL);
         mContext.sendBroadcast(intent, BLUETOOTH_ADMIN_PERM);
diff --git a/core/java/android/util/Log.java b/core/java/android/util/Log.java
index e95d0be..7a959a6 100644
--- a/core/java/android/util/Log.java
+++ b/core/java/android/util/Log.java
@@ -81,6 +81,13 @@
      */
     public static final int ASSERT = 7;
 
+    /**
+     * Exception class used to capture a stack trace in {@link #wtf()}.
+     */
+    private static class TerribleFailure extends Exception {
+        TerribleFailure(String msg, Throwable cause) { super(msg, cause); }
+    }
+
     private Log() {
     }
 
@@ -170,24 +177,24 @@
 
     /**
      * Checks to see whether or not a log for the specified tag is loggable at the specified level.
-     * 
+     *
      *  The default level of any tag is set to INFO. This means that any level above and including
      *  INFO will be logged. Before you make any calls to a logging method you should check to see
      *  if your tag should be logged. You can change the default level by setting a system property:
      *      'setprop log.tag.&lt;YOUR_LOG_TAG> &lt;LEVEL>'
-     *  Where level is either VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT, or SUPPRESS. SUPRESS will 
+     *  Where level is either VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT, or SUPPRESS. SUPPRESS will
      *  turn off all logging for your tag. You can also create a local.prop file that with the
      *  following in it:
      *      'log.tag.&lt;YOUR_LOG_TAG>=&lt;LEVEL>'
      *  and place that in /data/local.prop.
-     *  
+     *
      * @param tag The tag to check.
      * @param level The level to check.
      * @return Whether or not that this is allowed to be logged.
      * @throws IllegalArgumentException is thrown if the tag.length() > 23.
      */
     public static native boolean isLoggable(String tag, int level);
-        
+
     /*
      * Send a {@link #WARN} log message and log the exception.
      * @param tag Used to identify the source of a log message.  It usually identifies
@@ -220,6 +227,46 @@
     }
 
     /**
+     * What a Terrible Failure: Report a condition that should never happen.
+     * The error will always be logged at level ASSERT with the call stack.
+     * Depending on system configuration, a report may be added to the
+     * {@link android.os.DropBoxManager} and/or the process may be terminated
+     * immediately with an error dialog.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     * @pending
+     */
+    public static int wtf(String tag, String msg) {
+        return wtf(tag, msg, null);
+    }
+
+    /**
+     * What a Terrible Failure: Report an exception that should never happen.
+     * Similar to {@link #wtf(String, String)}, with an exception to log.
+     * @param tag Used to identify the source of a log message.
+     * @param tr An exception to log.
+     * @pending
+     */
+    public static int wtf(String tag, Throwable tr) {
+        return wtf(tag, tr.getMessage(), tr);
+    }
+
+    /**
+     * What a Terrible Failure: Report an exception that should never happen.
+     * Similar to {@link #wtf(String, Throwable)}, with a message as well.
+     * @param tag Used to identify the source of a log message.
+     * @param msg The message you would like logged.
+     * @param tr An exception to log.  May be null.
+     * @pending
+     */
+    public static int wtf(String tag, String msg, Throwable tr) {
+        tr = new TerribleFailure(msg, tr);
+        int bytes = println(ASSERT, tag, getStackTraceString(tr));
+        RuntimeInit.wtf(tag, tr);
+        return bytes;
+    }
+
+    /**
      * Handy function to get a loggable stack trace from a Throwable
      * @param tr An exception to log
      */
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 4176ed1..5bd45a66a 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -1494,6 +1494,16 @@
      * @hide
      */
     static final int OPAQUE_MASK                    = 0x01800000;
+    
+    /**
+     * Indicates a prepressed state;
+     * the short time between ACTION_DOWN and recognizing
+     * a 'real' press. Prepressed is used to recognize quick taps
+     * even when they are shorter than ViewConfiguration.getTapTimeout().
+     * 
+     * @hide
+     */
+    private static final int PREPRESSED             = 0x02000000;
 
     /**
      * The parent this view is attached to.
@@ -1722,6 +1732,8 @@
     private int mNextFocusDownId = View.NO_ID;
 
     private CheckForLongPress mPendingCheckForLongPress;
+    private CheckForTap mPendingCheckForTap = null;
+    
     private UnsetPressedState mUnsetPressedState;
 
     /**
@@ -1762,6 +1774,11 @@
      * Special tree observer used when mAttachInfo is null.
      */
     private ViewTreeObserver mFloatingTreeObserver;
+    
+    /**
+     * Cache the touch slop from the context that created the view.
+     */
+    private int mTouchSlop;
 
     // Used for debug only
     static long sInstanceCount = 0;
@@ -1777,6 +1794,7 @@
         mResources = context != null ? context.getResources() : null;
         mViewFlags = SOUND_EFFECTS_ENABLED | HAPTIC_FEEDBACK_ENABLED;
         ++sInstanceCount;
+        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
     }
 
     /**
@@ -3951,7 +3969,7 @@
                         (event.getRepeatCount() == 0)) {
                     setPressed(true);
                     if ((mViewFlags & LONG_CLICKABLE) == LONG_CLICKABLE) {
-                        postCheckForLongClick();
+                        postCheckForLongClick(0);
                     }
                     return true;
                 }
@@ -4174,7 +4192,8 @@
                 (viewFlags & LONG_CLICKABLE) == LONG_CLICKABLE)) {
             switch (event.getAction()) {
                 case MotionEvent.ACTION_UP:
-                    if ((mPrivateFlags & PRESSED) != 0) {
+                    boolean prepressed = (mPrivateFlags & PREPRESSED) != 0;
+                    if ((mPrivateFlags & PRESSED) != 0 || prepressed) {
                         // take focus if we don't have it already and we should in
                         // touch mode.
                         boolean focusTaken = false;
@@ -4196,24 +4215,31 @@
                             mUnsetPressedState = new UnsetPressedState();
                         }
 
-                        if (!post(mUnsetPressedState)) {
+                        if (prepressed) {
+                            mPrivateFlags |= PRESSED;
+                            refreshDrawableState();
+                            postDelayed(mUnsetPressedState,
+                                    ViewConfiguration.getPressedStateDuration());
+                        } else if (!post(mUnsetPressedState)) {
                             // If the post failed, unpress right now
                             mUnsetPressedState.run();
                         }
+                        removeTapCallback();
                     }
                     break;
 
                 case MotionEvent.ACTION_DOWN:
-                    mPrivateFlags |= PRESSED;
-                    refreshDrawableState();
-                    if ((mViewFlags & LONG_CLICKABLE) == LONG_CLICKABLE) {
-                        postCheckForLongClick();
+                    if (mPendingCheckForTap == null) {
+                        mPendingCheckForTap = new CheckForTap();
                     }
+                    mPrivateFlags |= PREPRESSED;
+                    postDelayed(mPendingCheckForTap, ViewConfiguration.getTapTimeout());
                     break;
 
                 case MotionEvent.ACTION_CANCEL:
                     mPrivateFlags &= ~PRESSED;
                     refreshDrawableState();
+                    removeTapCallback();
                     break;
 
                 case MotionEvent.ACTION_MOVE:
@@ -4221,25 +4247,19 @@
                     final int y = (int) event.getY();
 
                     // Be lenient about moving outside of buttons
-                    int slop = ViewConfiguration.get(mContext).getScaledTouchSlop();
+                    int slop = mTouchSlop;
                     if ((x < 0 - slop) || (x >= getWidth() + slop) ||
                             (y < 0 - slop) || (y >= getHeight() + slop)) {
                         // Outside button
+                        removeTapCallback();
                         if ((mPrivateFlags & PRESSED) != 0) {
-                            // Remove any future long press checks
+                            // Remove any future long press/tap checks
                             removeLongPressCallback();
 
                             // Need to switch from pressed to not pressed
                             mPrivateFlags &= ~PRESSED;
                             refreshDrawableState();
                         }
-                    } else {
-                        // Inside button
-                        if ((mPrivateFlags & PRESSED) == 0) {
-                            // Need to switch from not pressed to pressed
-                            mPrivateFlags |= PRESSED;
-                            refreshDrawableState();
-                        }
                     }
                     break;
             }
@@ -4257,6 +4277,16 @@
           removeCallbacks(mPendingCheckForLongPress);
         }
     }
+    
+    /**
+     * Remove the tap detection timer.
+     */
+    private void removeTapCallback() {
+        if (mPendingCheckForTap != null) {
+            mPrivateFlags &= ~PREPRESSED;
+            removeCallbacks(mPendingCheckForTap);
+        }
+    }
 
     /**
      * Cancels a pending long press.  Your subclass can use this if you
@@ -8427,14 +8457,15 @@
         }
     }
 
-    private void postCheckForLongClick() {
+    private void postCheckForLongClick(int delayOffset) {
         mHasPerformedLongPress = false;
 
         if (mPendingCheckForLongPress == null) {
             mPendingCheckForLongPress = new CheckForLongPress();
         }
         mPendingCheckForLongPress.rememberWindowAttachCount();
-        postDelayed(mPendingCheckForLongPress, ViewConfiguration.getLongPressTimeout());
+        postDelayed(mPendingCheckForLongPress,
+                ViewConfiguration.getLongPressTimeout() - delayOffset);
     }
 
     private static int[] stateSetUnion(final int[] stateSet1,
@@ -8611,6 +8642,17 @@
             mOriginalWindowAttachCount = mWindowAttachCount;
         }
     }
+    
+    private final class CheckForTap implements Runnable {
+        public void run() {
+            mPrivateFlags &= ~PREPRESSED;
+            mPrivateFlags |= PRESSED;
+            refreshDrawableState();
+            if ((mViewFlags & LONG_CLICKABLE) == LONG_CLICKABLE) {
+                postCheckForLongClick(ViewConfiguration.getTapTimeout());
+            }
+        }
+    }
 
     /**
      * Interface definition for a callback to be invoked when a key event is
diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java
index 993048f..2344c42 100644
--- a/core/java/android/view/ViewConfiguration.java
+++ b/core/java/android/view/ViewConfiguration.java
@@ -49,7 +49,7 @@
      * Defines the duration in milliseconds of the pressed state in child
      * components.
      */
-    private static final int PRESSED_STATE_DURATION = 85;
+    private static final int PRESSED_STATE_DURATION = 125;
     
     /**
      * Defines the duration in milliseconds before a press turns into
@@ -69,7 +69,7 @@
      * is a tap or a scroll. If the user does not move within this interval, it is
      * considered to be a tap. 
      */
-    private static final int TAP_TIMEOUT = 100;
+    private static final int TAP_TIMEOUT = 115;
     
     /**
      * Defines the duration in milliseconds we will wait to see if a touch event 
diff --git a/core/java/android/view/ViewStub.java b/core/java/android/view/ViewStub.java
index 703a38f..d5e9af4 100644
--- a/core/java/android/view/ViewStub.java
+++ b/core/java/android/view/ViewStub.java
@@ -207,9 +207,11 @@
             } else {
                 throw new IllegalStateException("setVisibility called on un-referenced view");
             }
-        } else if (visibility == VISIBLE || visibility == INVISIBLE) {
+        } else {
             super.setVisibility(visibility);
-            inflate();
+            if (visibility == VISIBLE || visibility == INVISIBLE) {
+                inflate();
+            }
         }
     }
 
@@ -244,7 +246,7 @@
                     parent.addView(view, index);
                 }
 
-                mInflatedViewRef = new WeakReference(view);
+                mInflatedViewRef = new WeakReference<View>(view);
 
                 if (mInflateListener != null) {
                     mInflateListener.onInflate(this, view);
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index 5d3840a..bbe9c1f 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -662,6 +662,14 @@
     public boolean finishAnimationLw();
 
     /**
+     * Return true if it is okay to perform animations for an app transition
+     * that is about to occur.  You may return false for this if, for example,
+     * the lock screen is currently displayed so the switch should happen
+     * immediately.
+     */
+    public boolean allowAppAnimationsLw();
+    
+    /**
      * Called after the screen turns off.
      *
      * @param why {@link #OFF_BECAUSE_OF_USER} or
@@ -675,6 +683,11 @@
     public void screenTurnedOn();
 
     /**
+     * Return whether the screen is currently on.
+     */
+    public boolean isScreenOn();
+    
+    /**
      * Perform any initial processing of a low-level input event before the
      * window manager handles special keys and generates a high-level event
      * that is dispatched to the application.
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index b36fa8d..1337bed 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -339,6 +339,7 @@
         // loadType is not used yet
         if (isMainFrame) {
             mCommitted = true;
+            mWebViewCore.getWebView().mViewManager.postResetStateAll();
         }
     }
 
diff --git a/core/java/android/webkit/DebugFlags.java b/core/java/android/webkit/DebugFlags.java
index 8e25395..dca52f6 100644
--- a/core/java/android/webkit/DebugFlags.java
+++ b/core/java/android/webkit/DebugFlags.java
@@ -32,6 +32,8 @@
     public static final boolean CALLBACK_PROXY = false;
     public static final boolean COOKIE_MANAGER = false;
     public static final boolean COOKIE_SYNC_MANAGER = false;
+    public static final boolean DRAG_TRACKER = false;
+    public static final String DRAG_TRACKER_LOGTAG = "skia";
     public static final boolean FRAME_LOADER = false;
     public static final boolean J_WEB_CORE_JAVA_BRIDGE = false;// HIGHLY VERBOSE
     public static final boolean LOAD_LISTENER = false;
diff --git a/core/java/android/webkit/ViewManager.java b/core/java/android/webkit/ViewManager.java
index 6a838c3..75db0a0 100644
--- a/core/java/android/webkit/ViewManager.java
+++ b/core/java/android/webkit/ViewManager.java
@@ -16,7 +16,6 @@
 
 package android.webkit;
 
-import android.content.Context;
 import android.view.View;
 import android.widget.AbsoluteLayout;
 
@@ -26,6 +25,7 @@
     private final WebView mWebView;
     private final ArrayList<ChildView> mChildren = new ArrayList<ChildView>();
     private boolean mHidden;
+    private boolean mReadyToDraw;
 
     class ChildView {
         int x;
@@ -70,6 +70,9 @@
         void attachViewOnUIThread(AbsoluteLayout.LayoutParams lp) {
             mWebView.addView(mView, lp);
             mChildren.add(this);
+            if (!mReadyToDraw) {
+                mView.setVisibility(View.GONE);
+            }
         }
 
         void removeView() {
@@ -154,4 +157,23 @@
         }
         mHidden = false;
     }
+
+    void postResetStateAll() {
+        mWebView.mPrivateHandler.post(new Runnable() {
+            public void run() {
+                mReadyToDraw = false;
+            }
+        });
+    }
+
+    void postReadyToDrawAll() {
+        mWebView.mPrivateHandler.post(new Runnable() {
+            public void run() {
+                mReadyToDraw = true;
+                for (ChildView v : mChildren) {
+                    v.mView.setVisibility(View.VISIBLE);
+                }
+            }
+        });
+    }
 }
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index d99f9f2..bfe5b41 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -25,6 +25,7 @@
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Color;
+import android.graphics.Paint;
 import android.graphics.Picture;
 import android.graphics.Point;
 import android.graphics.Rect;
@@ -772,12 +773,11 @@
         init();
 
         mCallbackProxy = new CallbackProxy(context, this);
+        mViewManager = new ViewManager(this);
         mWebViewCore = new WebViewCore(context, this, mCallbackProxy, javascriptInterfaces);
         mDatabase = WebViewDatabase.getInstance(context);
         mScroller = new Scroller(context);
 
-        mViewManager = new ViewManager(this);
-
         mZoomButtonsController = new ZoomButtonsController(this);
         mZoomButtonsController.setOnZoomListener(mZoomListener);
         // ZoomButtonsController positions the buttons at the bottom, but in
@@ -2867,16 +2867,7 @@
         return super.drawChild(canvas, child, drawingTime);
     }
 
-    @Override
-    protected void onDraw(Canvas canvas) {
-        // if mNativeClass is 0, the WebView has been destroyed. Do nothing.
-        if (mNativeClass == 0) {
-            return;
-        }
-        int saveCount = canvas.save();
-        if (mTitleBar != null) {
-            canvas.translate(0, (int) mTitleBar.getHeight());
-        }
+    private void drawContent(Canvas canvas) {
         // Update the buttons in the picture, so when we draw the picture
         // to the screen, they are in the correct state.
         // Tell the native side if user is a) touching the screen,
@@ -2886,9 +2877,25 @@
         // If mNativeClass is 0, we should not reach here, so we do not
         // need to check it again.
         nativeRecordButtons(hasFocus() && hasWindowFocus(),
-                mTouchMode == TOUCH_SHORTPRESS_START_MODE
-                || mTrackballDown || mGotCenterDown, false);
+                            mTouchMode == TOUCH_SHORTPRESS_START_MODE
+                            || mTrackballDown || mGotCenterDown, false);
         drawCoreAndCursorRing(canvas, mBackgroundColor, mDrawCursorRing);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        // if mNativeClass is 0, the WebView has been destroyed. Do nothing.
+        if (mNativeClass == 0) {
+            return;
+        }
+
+        int saveCount = canvas.save();
+        if (mTitleBar != null) {
+            canvas.translate(0, (int) mTitleBar.getHeight());
+        }
+        if (mDragTrackerHandler == null || !mDragTrackerHandler.draw(canvas)) {
+            drawContent(canvas);
+        }
         canvas.restoreToCount(saveCount);
 
         // Now draw the shadow.
@@ -3865,6 +3872,166 @@
     private static final float MAX_SLOPE_FOR_DIAG = 1.5f;
     private static final int MIN_BREAK_SNAP_CROSS_DISTANCE = 80;
 
+    private static int sign(float x) {
+        return x > 0 ? 1 : (x < 0 ? -1 : 0);
+    }
+
+    // if the page can scroll <= this value, we won't allow the drag tracker
+    // to have any effect.
+    private static final int MIN_SCROLL_AMOUNT_TO_DISABLE_DRAG_TRACKER = 4;
+
+    private class DragTrackerHandler {
+        private final DragTracker mProxy;
+        private final float mStartY, mStartX;
+        private final float mMinDY, mMinDX;
+        private final float mMaxDY, mMaxDX;
+        private float mCurrStretchY, mCurrStretchX;
+        private int mSX, mSY;
+
+        public DragTrackerHandler(float x, float y, DragTracker proxy) {
+            mProxy = proxy;
+
+            int docBottom = computeVerticalScrollRange() + getTitleHeight();
+            int viewTop = getScrollY();
+            int viewBottom = viewTop + getHeight();
+
+            mStartY = y;
+            mMinDY = -viewTop;
+            mMaxDY = docBottom - viewBottom;
+
+            if (DebugFlags.DRAG_TRACKER) {
+                Log.d(DebugFlags.DRAG_TRACKER_LOGTAG, " dragtracker y= " + y +
+                      " up/down= " + mMinDY + " " + mMaxDY);
+            }
+
+            int docRight = computeHorizontalScrollRange();
+            int viewLeft = getScrollX();
+            int viewRight = viewLeft + getWidth();
+            mStartX = x;
+            mMinDX = -viewLeft;
+            mMaxDX = docRight - viewRight;
+
+            mProxy.onStartDrag(x, y);
+
+            // ensure we buildBitmap at least once
+            mSX = -99999;
+        }
+
+        private float computeStretch(float delta, float min, float max) {
+            float stretch = 0;
+            if (max - min > MIN_SCROLL_AMOUNT_TO_DISABLE_DRAG_TRACKER) {
+                if (delta < min) {
+                    stretch = delta - min;
+                } else if (delta > max) {
+                    stretch = delta - max;
+                }
+            }
+            return stretch;
+        }
+
+        public void dragTo(float x, float y) {
+            float sy = computeStretch(mStartY - y, mMinDY, mMaxDY);
+            float sx = computeStretch(mStartX - x, mMinDX, mMaxDX);
+
+            if (mCurrStretchX != sx || mCurrStretchY != sy) {
+                mCurrStretchX = sx;
+                mCurrStretchY = sy;
+                if (DebugFlags.DRAG_TRACKER) {
+                    Log.d(DebugFlags.DRAG_TRACKER_LOGTAG, "---- stretch " + sx +
+                          " " + sy);
+                }
+                if (mProxy.onStretchChange(sx, sy)) {
+                    invalidate();
+                }
+            }
+        }
+
+        public void stopDrag() {
+            if (DebugFlags.DRAG_TRACKER) {
+                Log.d(DebugFlags.DRAG_TRACKER_LOGTAG, "----- stopDrag");
+            }
+            mProxy.onStopDrag();
+        }
+
+        private int hiddenHeightOfTitleBar() {
+            return getTitleHeight() - getVisibleTitleHeight();
+        }
+
+        // need a way to know if 565 or 8888 is the right config for
+        // capturing the display and giving it to the drag proxy
+        private Bitmap.Config offscreenBitmapConfig() {
+            // hard code 565 for now
+            return Bitmap.Config.RGB_565;
+        }
+
+        /*  If the tracker draws, then this returns true, otherwise it will
+            return false, and draw nothing.
+         */
+        public boolean draw(Canvas canvas) {
+            if (mCurrStretchX != 0 || mCurrStretchY != 0) {
+                int sx = getScrollX();
+                int sy = getScrollY() - hiddenHeightOfTitleBar();
+
+                if (mSX != sx || mSY != sy) {
+                    buildBitmap(sx, sy);
+                    mSX = sx;
+                    mSY = sy;
+                }
+
+                int count = canvas.save(Canvas.MATRIX_SAVE_FLAG);
+                canvas.translate(sx, sy);
+                mProxy.onDraw(canvas);
+                canvas.restoreToCount(count);
+                return true;
+            }
+            if (DebugFlags.DRAG_TRACKER) {
+                Log.d(DebugFlags.DRAG_TRACKER_LOGTAG, " -- draw false " +
+                      mCurrStretchX + " " + mCurrStretchY);
+            }
+            return false;
+        }
+
+        private void buildBitmap(int sx, int sy) {
+            int w = getWidth();
+            int h = getViewHeight();
+            Bitmap bm = Bitmap.createBitmap(w, h, offscreenBitmapConfig());
+            Canvas canvas = new Canvas(bm);
+            canvas.translate(-sx, -sy);
+            drawContent(canvas);
+
+            if (DebugFlags.DRAG_TRACKER) {
+                Log.d(DebugFlags.DRAG_TRACKER_LOGTAG, "--- buildBitmap " + sx +
+                      " " + sy + " " + w + " " + h);
+            }
+            mProxy.onBitmapChange(bm);
+        }
+    }
+
+    /** @hide */
+    public static class DragTracker {
+        public void onStartDrag(float x, float y) {}
+        public boolean onStretchChange(float sx, float sy) {
+            // return true to have us inval the view
+            return false;
+        }
+        public void onStopDrag() {}
+        public void onBitmapChange(Bitmap bm) {}
+        public void onDraw(Canvas canvas) {}
+    }
+
+    /** @hide */
+    public DragTracker getDragTracker() {
+        return mDragTracker;
+    }
+
+    /** @hide */
+    public void setDragTracker(DragTracker tracker) {
+        mDragTracker = tracker;
+    }
+
+    private DragTracker mDragTracker;
+    private DragTrackerHandler mDragTrackerHandler;
+
     @Override
     public boolean onTouchEvent(MotionEvent ev) {
         if (mNativeClass == 0 || !isClickable() || !isLongClickable()) {
@@ -3963,6 +4130,10 @@
                 mLastTouchTime = eventTime;
                 mVelocityTracker = VelocityTracker.obtain();
                 mSnapScrollMode = SNAP_NONE;
+                if (mDragTracker != null) {
+                    mDragTrackerHandler = new DragTrackerHandler(x, y,
+                                                                 mDragTracker);
+                }
                 break;
             }
             case MotionEvent.ACTION_MOVE: {
@@ -4132,6 +4303,10 @@
                     }
                 }
 
+                if (mDragTrackerHandler != null) {
+                    mDragTrackerHandler.dragTo(x, y);
+                }
+
                 if (keepScrollBarsVisible) {
                     if (mHeldMotionless != MOTIONLESS_TRUE) {
                         mHeldMotionless = MOTIONLESS_TRUE;
@@ -4147,6 +4322,10 @@
                 break;
             }
             case MotionEvent.ACTION_UP: {
+                if (mDragTrackerHandler != null) {
+                    mDragTrackerHandler.stopDrag();
+                    mDragTrackerHandler = null;
+                }
                 mLastTouchUpTime = eventTime;
                 switch (mTouchMode) {
                     case TOUCH_DOUBLE_TAP_MODE: // double tap
@@ -4237,6 +4416,10 @@
                 break;
             }
             case MotionEvent.ACTION_CANCEL: {
+                if (mDragTrackerHandler != null) {
+                    mDragTrackerHandler.stopDrag();
+                    mDragTrackerHandler = null;
+                }
                 // we also use mVelocityTracker == null to tell us that we are
                 // not "moving around", so we can take the slower/prettier
                 // mode in the drawing code
@@ -5226,7 +5409,8 @@
                     final Point viewSize = draw.mViewPoint;
                     boolean useWideViewport = settings.getUseWideViewPort();
                     WebViewCore.RestoreState restoreState = draw.mRestoreState;
-                    if (restoreState != null) {
+                    boolean hasRestoreState = restoreState != null;
+                    if (hasRestoreState) {
                         mInZoomOverview = false;
                         mLastScale = mInitialScaleInPercent > 0
                                 ? mInitialScaleInPercent / 100.0f
@@ -5316,6 +5500,9 @@
                     if (draw.mFocusSizeChanged && inEditingMode()) {
                         mFocusSizeChanged = true;
                     }
+                    if (hasRestoreState) {
+                        mViewManager.postReadyToDrawAll();
+                    }
                     break;
                 }
                 case WEBCORE_INITIALIZED_MSG_ID:
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index ce2637b..fc22f37 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -1924,7 +1924,14 @@
 
         if (mWebView == null) return;
 
-        setupViewport(standardLoad || mRestoredScale > 0);
+        boolean updateRestoreState = standardLoad || mRestoredScale > 0;
+        setupViewport(updateRestoreState);
+        // if updateRestoreState is true, ViewManager.postReadyToDrawAll() will
+        // be called after the WebView restore the state. If updateRestoreState
+        // is false, start to draw now as it is ready.
+        if (!updateRestoreState) {
+            mWebView.mViewManager.postReadyToDrawAll();
+        }
 
         // reset the scroll position, the restored offset and scales
         mWebkitScrollX = mWebkitScrollY = mRestoredX = mRestoredY
diff --git a/core/java/android/widget/ImageButton.java b/core/java/android/widget/ImageButton.java
index d417e40..2fc29bc 100644
--- a/core/java/android/widget/ImageButton.java
+++ b/core/java/android/widget/ImageButton.java
@@ -44,11 +44,11 @@
  * <pre>
  * &lt;?xml version="1.0" encoding="utf-8"?&gt;
  * &lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt;
- *     &lt;item android:drawable="@drawable/button_normal" /&gt; &lt;!-- default --&gt;
  *     &lt;item android:state_pressed="true"
  *           android:drawable="@drawable/button_pressed" /&gt; &lt;!-- pressed --&gt;
  *     &lt;item android:state_focused="true"
  *           android:drawable="@drawable/button_focused" /&gt; &lt;!-- focused --&gt;
+ *     &lt;item android:drawable="@drawable/button_normal" /&gt; &lt;!-- default --&gt;
  * &lt;/selector&gt;</pre>
  *
  * <p>Save the XML file in your project {@code res/drawable/} folder and then 
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index b574d45..e0d2cef 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -3080,13 +3080,19 @@
         if (gainFocus && previouslyFocusedRect != null) {
             previouslyFocusedRect.offset(mScrollX, mScrollY);
 
+            final ListAdapter adapter = mAdapter;
+            final int firstPosition = mFirstPosition;
+            // Don't cache the result of getChildCount here, it could change in layoutChildren.
+            if (adapter.getCount() < getChildCount() + firstPosition) {
+                mLayoutMode = LAYOUT_NORMAL;
+                layoutChildren();
+            }
+
             // figure out which item should be selected based on previously
             // focused rect
             Rect otherRect = mTempRect;
             int minDistance = Integer.MAX_VALUE;
             final int childCount = getChildCount();
-            final int firstPosition = mFirstPosition;
-            final ListAdapter adapter = mAdapter;
 
             for (int i = 0; i < childCount; i++) {
                 // only consider selectable views
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index b847e57..c115073 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -137,11 +137,21 @@
             if (target != null && pendingIntent != null) {
                 OnClickListener listener = new OnClickListener() {
                     public void onClick(View v) {
-                        int[] pos = new int[2];
+                        // Find target view location in screen coordinates and
+                        // fill into PendingIntent before sending.
+                        final float appScale = v.getContext().getResources()
+                                .getCompatibilityInfo().applicationScale;
+                        final int[] pos = new int[2];
                         v.getLocationOnScreen(pos);
-                        Intent intent = new Intent();
-                        intent.setSourceBounds(new Rect(pos[0], pos[1],
-                                    pos[0]+v.getWidth(), pos[1]+v.getHeight()));
+
+                        final Rect rect = new Rect();
+                        rect.left = (int) (pos[0] * appScale + 0.5f);
+                        rect.top = (int) (pos[1] * appScale + 0.5f);
+                        rect.right = (int) ((pos[0] + v.getWidth()) * appScale + 0.5f);
+                        rect.bottom = (int) ((pos[1] + v.getHeight()) * appScale + 0.5f);
+
+                        final Intent intent = new Intent();
+                        intent.setSourceBounds(rect);
                         try {
                             // TODO: Unregister this handler if PendingIntent.FLAG_ONE_SHOT?
                             v.getContext().startIntentSender(
diff --git a/core/java/com/android/internal/os/LoggingPrintStream.java b/core/java/com/android/internal/os/LoggingPrintStream.java
index b3d6f20..451340b 100644
--- a/core/java/com/android/internal/os/LoggingPrintStream.java
+++ b/core/java/com/android/internal/os/LoggingPrintStream.java
@@ -16,11 +16,17 @@
 
 package com.android.internal.os;
 
-import java.io.PrintStream;
-import java.io.OutputStream;
 import java.io.IOException;
-import java.util.Locale;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
 import java.util.Formatter;
+import java.util.Locale;
 
 /**
  * A print stream which logs output line by line.
@@ -31,6 +37,27 @@
 
     private final StringBuilder builder = new StringBuilder();
 
+    /**
+     * A buffer that is initialized when raw bytes are first written to this
+     * stream. It may contain the leading bytes of multi-byte characters.
+     * Between writes this buffer is always ready to receive data; ie. the
+     * position is at the first unassigned byte and the limit is the capacity.
+     */
+    private ByteBuffer encodedBytes;
+
+    /**
+     * A buffer that is initialized when raw bytes are first written to this
+     * stream. Between writes this buffer is always clear; ie. the position is
+     * zero and the limit is the capacity.
+     */
+    private CharBuffer decodedChars;
+
+    /**
+     * Decodes bytes to characters using the system default charset. Initialized
+     * when raw bytes are first written to this stream.
+     */
+    private CharsetDecoder decoder;
+
     protected LoggingPrintStream() {
         super(new OutputStream() {
             public void write(int oneByte) throws IOException {
@@ -80,20 +107,48 @@
         }
     }
 
-    /*
-     * We have no idea of how these bytes are encoded, so just ignore them.
-     */
+    public void write(int oneByte) {
+        write(new byte[] { (byte) oneByte }, 0, 1);
+    }
 
-    /** Ignored. */
-    public void write(int oneByte) {}
-
-    /** Ignored. */
     @Override
-    public void write(byte buffer[]) {}
+    public void write(byte[] buffer) {
+        write(buffer, 0, buffer.length);
+    }
 
-    /** Ignored. */
     @Override
-    public void write(byte bytes[], int start, int count) {}
+    public synchronized void write(byte bytes[], int start, int count) {
+        if (decoder == null) {
+            encodedBytes = ByteBuffer.allocate(80);
+            decodedChars = CharBuffer.allocate(80);
+            decoder = Charset.defaultCharset().newDecoder()
+                    .onMalformedInput(CodingErrorAction.REPLACE)
+                    .onUnmappableCharacter(CodingErrorAction.REPLACE);
+        }
+
+        int end = start + count;
+        while (start < end) {
+            // copy some bytes from the array to the long-lived buffer. This
+            // way, if we end with a partial character we don't lose it.
+            int numBytes = Math.min(encodedBytes.remaining(), end - start);
+            encodedBytes.put(bytes, start, numBytes);
+            start += numBytes;
+
+            encodedBytes.flip();
+            CoderResult coderResult;
+            do {
+                // decode bytes from the byte buffer into the char buffer
+                coderResult = decoder.decode(encodedBytes, decodedChars, false);
+
+                // copy chars from the char buffer into our string builder
+                decodedChars.flip();
+                builder.append(decodedChars);
+                decodedChars.clear();
+            } while (coderResult.isOverflow());
+            encodedBytes.compact();
+        }
+        flush(false);
+    }
 
     /** Always returns false. */
     @Override
diff --git a/core/java/com/android/internal/os/RuntimeInit.java b/core/java/com/android/internal/os/RuntimeInit.java
index b7bb72d..57a28e6 100644
--- a/core/java/com/android/internal/os/RuntimeInit.java
+++ b/core/java/com/android/internal/os/RuntimeInit.java
@@ -58,6 +58,10 @@
     /** true if commonInit() has been called */
     private static boolean initialized;
 
+    private static IBinder mApplicationObject;
+
+    private static volatile boolean mCrashing = false;
+
     /**
      * Use this to log a message when a thread exits due to an uncaught
      * exception.  The framework catches these for the main threads, so
@@ -66,14 +70,30 @@
     private static class UncaughtHandler implements Thread.UncaughtExceptionHandler {
         public void uncaughtException(Thread t, Throwable e) {
             try {
-                Log.e(TAG, "Uncaught handler: thread " + t.getName()
-                        + " exiting due to uncaught exception");
-            } catch (Throwable error) {
-                // Ignore the throwable, since we're in the process of crashing anyway.
-                // If we don't, the crash won't happen properly and the process will
-                // be left around in a bad state.
+                // Don't re-enter -- avoid infinite loops if crash-reporting crashes.
+                if (mCrashing) return;
+                mCrashing = true;
+
+                if (mApplicationObject == null) {
+                    Log.e(TAG, "*** FATAL EXCEPTION IN SYSTEM PROCESS: " + t.getName(), e);
+                } else {
+                    Log.e(TAG, "FATAL EXCEPTION: " + t.getName(), e);
+                }
+
+                // Bring up crash dialog, wait for it to be dismissed
+                ActivityManagerNative.getDefault().handleApplicationCrash(
+                        mApplicationObject, new ApplicationErrorReport.CrashInfo(e));
+            } catch (Throwable t2) {
+                try {
+                    Log.e(TAG, "Error reporting crash", t2);
+                } catch (Throwable t3) {
+                    // Even Log.e() fails!  Oh well.
+                }
+            } finally {
+                // Try everything to make sure this process goes away.
+                Process.killProcess(Process.myPid());
+                System.exit(10);
             }
-            crash(TAG, e);
         }
     }
 
@@ -300,46 +320,22 @@
     public static native int getQwertyKeyboard();
 
     /**
-     * Report a fatal error in the current process.  If this is a user-process,
-     * a dialog may be displayed informing the user of the error.  This
-     * function does not return; it forces the current process to exit.
+     * Report a serious error in the current process.  May or may not cause
+     * the process to terminate (depends on system settings).
      *
-     * @param tag to use when logging the error
-     * @param t exception that was generated by the error
+     * @param tag to record with the error
+     * @param t exception describing the error site and conditions
      */
-    public static void crash(String tag, Throwable t) {
-        if (mApplicationObject != null) {
-            try {
-                // Log exception.
-                Log.e(TAG, Log.getStackTraceString(t));
-
-                // Show a message to the user.
-                IActivityManager am = ActivityManagerNative.getDefault();
-                am.handleApplicationError(mApplicationObject, tag,
-                        new ApplicationErrorReport.CrashInfo(t));
-            } catch (Throwable t2) {
-                try {
-                    // Log exception as a string so we don't get in an infinite loop.
-                    Log.e(TAG, "Error reporting crash: " + Log.getStackTraceString(t2));
-                } catch (Throwable t3) {
-                    // Do nothing, must be OOM so we can't format the message
-                }
-            } finally {
-                // Try everything to make sure this process goes away.
+    public static void wtf(String tag, Throwable t) {
+        try {
+            if (ActivityManagerNative.getDefault().handleApplicationWtf(
+                    mApplicationObject, tag, new ApplicationErrorReport.CrashInfo(t))) {
+                // The Activity Manager has already written us off -- now exit.
                 Process.killProcess(Process.myPid());
                 System.exit(10);
             }
-        } else {
-            try {
-                Log.e(TAG, "*** EXCEPTION IN SYSTEM PROCESS.  System will crash.");
-                Log.e(tag, Log.getStackTraceString(t));
-            } catch (Throwable t2) {
-                // Do nothing, must be OOM so we can't format the message
-            } finally {
-                // Try everything to make sure this process goes away.
-                Process.killProcess(Process.myPid());
-                System.exit(10);
-            }
+        } catch (Throwable t2) {
+            Log.e(TAG, "Error reporting WTF", t2);
         }
     }
 
@@ -361,6 +357,4 @@
         // Register handlers for DDM messages.
         android.ddm.DdmRegister.registerHandlers();
     }
-
-    private static IBinder mApplicationObject;
 }
diff --git a/core/java/com/google/android/util/SimplePullParser.java b/core/java/com/google/android/util/SimplePullParser.java
deleted file mode 100644
index 031790b..0000000
--- a/core/java/com/google/android/util/SimplePullParser.java
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.android.util;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringReader;
-import java.io.Reader;
-import java.io.Closeable;
-
-import android.util.Xml;
-import android.util.Log;
-
-/**
- * This is an abstraction of a pull parser that provides several benefits:<ul>
- *   <li>it is easier to use robustly because it makes it trivial to handle unexpected tags (which
- *   might have children)</li>
- *   <li>it makes the handling of text (cdata) blocks more convenient</li>
- *   <li>it provides convenient methods for getting a mandatory attribute (and throwing an exception
- *   if it is missing) or an optional attribute (and using a default value if it is missing)
- * </ul>
- */
-public class SimplePullParser {
-    public static final String TEXT_TAG = "![CDATA[";
-
-    private String mLogTag = null;
-    private final XmlPullParser mParser;
-    private Closeable source;
-    private String mCurrentStartTag;
-
-    /**
-     * Constructs a new SimplePullParser to parse the stream
-     * @param stream stream to parse
-     * @param encoding the encoding to use
-     */
-    public SimplePullParser(InputStream stream, String encoding)
-            throws ParseException, IOException {
-        try {
-            XmlPullParser parser = Xml.newPullParser();
-            parser.setInput(stream, encoding);
-            moveToStartDocument(parser);
-            mParser = parser;
-            mCurrentStartTag = null;
-            source = stream;
-        } catch (XmlPullParserException e) {
-            throw new ParseException(e);
-        }
-    }
-
-    /**
-     * Constructs a new SimplePullParser to parse the xml
-     * @param parser the underlying parser to use
-     */
-    public SimplePullParser(XmlPullParser parser) {
-        mParser = parser;
-        mCurrentStartTag = null;
-        source = null;
-    }
-
-    /**
-     * Constructs a new SimplePullParser to parse the xml
-     * @param xml the xml to parse
-     */
-    public SimplePullParser(String xml) throws IOException, ParseException {
-        this(new StringReader(xml));
-    }
-
-    /**
-     * Constructs a new SimplePullParser to parse the xml
-     * @param reader a reader containing the xml
-     */
-    public SimplePullParser(Reader reader) throws IOException, ParseException {
-        try {
-            XmlPullParser parser = Xml.newPullParser();
-            parser.setInput(reader);
-            moveToStartDocument(parser);
-            mParser = parser;
-            mCurrentStartTag = null;
-            source = reader;
-        } catch (XmlPullParserException e) {
-            throw new ParseException(e);
-        }
-    }
-
-    private static void moveToStartDocument(XmlPullParser parser)
-            throws XmlPullParserException, IOException {
-        int eventType;
-        eventType = parser.getEventType();
-        if (eventType != XmlPullParser.START_DOCUMENT) {
-            throw new XmlPullParserException("Not at start of response");
-        }
-    }
-
-    /**
-     * Enables logging to the provided log tag. A basic representation of the xml will be logged as
-     * the xml is parsed. No logging is done unless this is called.
-     *
-     * @param logTag the log tag to use when logging
-     */
-    public void setLogTag(String logTag) {
-        mLogTag = logTag;
-    }
-
-    /**
-     * Returns the tag of the next element whose depth is parentDepth plus one
-     * or null if there are no more such elements before the next start tag. When this returns,
-     * getDepth() and all methods relating to attributes will refer to the element whose tag is
-     * returned.
-     *
-     * @param parentDepth the depth of the parrent of the item to be returned
-     * @param textBuilder if null then text blocks will be ignored. If
-     *   non-null then text blocks will be added to the builder and TEXT_TAG
-     *   will be returned when one is found
-     * @return the next of the next child element's tag, TEXT_TAG if a text block is found, or null
-     *   if there are no more child elements or DATA blocks
-     * @throws IOException propogated from the underlying parser
-     * @throws ParseException if there was an error parsing the xml.
-     */
-    public String nextTagOrText(int parentDepth, StringBuilder textBuilder)
-            throws IOException, ParseException {
-        while (true) {
-            int eventType = 0;
-            try {
-                eventType = mParser.next();
-            } catch (XmlPullParserException e) {
-                throw new ParseException(e);
-            }
-            int depth = mParser.getDepth();
-            mCurrentStartTag = null;
-
-            if (eventType == XmlPullParser.START_TAG && depth == parentDepth + 1) {
-                mCurrentStartTag = mParser.getName();
-                if (mLogTag != null && Log.isLoggable(mLogTag, Log.DEBUG)) {
-                    StringBuilder sb = new StringBuilder();
-                    for (int i = 0; i < depth; i++) sb.append("  ");
-                    sb.append("<").append(mParser.getName());
-                    int count = mParser.getAttributeCount();
-                    for (int i = 0; i < count; i++) {
-                        sb.append(" ");
-                        sb.append(mParser.getAttributeName(i));
-                        sb.append("=\"");
-                        sb.append(mParser.getAttributeValue(i));
-                        sb.append("\"");
-                    }
-                    sb.append(">");
-                    Log.d(mLogTag, sb.toString());
-                }
-                return mParser.getName();
-            }
-
-            if (eventType == XmlPullParser.END_TAG && depth == parentDepth) {
-                if (mLogTag != null && Log.isLoggable(mLogTag, Log.DEBUG)) {
-                    StringBuilder sb = new StringBuilder();
-                    for (int i = 0; i < depth; i++) sb.append("  ");
-                    sb.append("</>"); // Not quite valid xml but it gets the job done.
-                    Log.d(mLogTag, sb.toString());
-                }
-                return null;
-            }
-
-            if (eventType == XmlPullParser.END_DOCUMENT && parentDepth == 0) {
-                // we could just rely on the caller calling close(), which it should, but try
-                // to auto-close for clients that might have missed doing so.
-                if (source != null) {
-                    source.close();
-                    source = null;
-                }
-                return null;
-            }
-
-            if (eventType == XmlPullParser.TEXT && depth == parentDepth) {
-                if (textBuilder == null) {
-                    continue;
-                }
-                String text = mParser.getText();
-                textBuilder.append(text);
-                return TEXT_TAG;
-            }
-        }
-    }
-
-    /**
-     * The same as nextTagOrTexxt(int, StringBuilder) but ignores text blocks.
-     */
-    public String nextTag(int parentDepth) throws IOException, ParseException {
-        return nextTagOrText(parentDepth, null /* ignore text */);
-    }
-
-    /**
-     * Returns the depth of the current element. The depth is 0 before the first
-     * element has been returned, 1 after that, etc.
-     *
-     * @return the depth of the current element
-     */
-    public int getDepth() {
-        return mParser.getDepth();
-    }
-
-    /**
-     * Consumes the rest of the children, accumulating any text at this level into the builder.
-     *
-     * @param textBuilder the builder to contain any text
-     * @throws IOException propogated from the XmlPullParser
-     * @throws ParseException if there was an error parsing the xml.
-     */
-    public void readRemainingText(int parentDepth, StringBuilder textBuilder)
-            throws IOException, ParseException {
-        while (nextTagOrText(parentDepth, textBuilder) != null) {
-        }
-    }
-
-    /**
-     * Returns the number of attributes on the current element.
-     *
-     * @return the number of attributes on the current element
-     */
-    public int numAttributes() {
-        return mParser.getAttributeCount();
-    }
-
-    /**
-     * Returns the name of the nth attribute on the current element.
-     *
-     * @return the name of the nth attribute on the current element
-     */
-    public String getAttributeName(int i) {
-        return mParser.getAttributeName(i);
-    }
-
-    /**
-     * Returns the namespace of the nth attribute on the current element.
-     *
-     * @return the namespace of the nth attribute on the current element
-     */
-    public String getAttributeNamespace(int i) {
-        return mParser.getAttributeNamespace(i);
-    }
-
-    /**
-     * Returns the string value of the named attribute.
-     *
-     * @param namespace the namespace of the attribute
-     * @param name the name of the attribute
-     * @param defaultValue the value to return if the attribute is not specified
-     * @return the value of the attribute
-     */
-    public String getStringAttribute(
-            String namespace, String name, String defaultValue) {
-        String value = mParser.getAttributeValue(namespace, name);
-        if (null == value) return defaultValue;
-        return value;
-    }
-
-    /**
-     * Returns the string value of the named attribute. An exception will
-     * be thrown if the attribute is not present.
-     *
-     * @param namespace the namespace of the attribute
-     * @param name the name of the attribute @return the value of the attribute
-     * @throws ParseException thrown if the attribute is missing
-     */
-    public String getStringAttribute(String namespace, String name) throws ParseException {
-        String value = mParser.getAttributeValue(namespace, name);
-        if (null == value) {
-            throw new ParseException(
-                    "missing '" + name + "' attribute on '" + mCurrentStartTag + "' element");
-        }
-        return value;
-    }
-
-    /**
-     * Returns the string value of the named attribute. An exception will
-     * be thrown if the attribute is not a valid integer.
-     *
-     * @param namespace the namespace of the attribute
-     * @param name the name of the attribute
-     * @param defaultValue the value to return if the attribute is not specified
-     * @return the value of the attribute
-     * @throws ParseException thrown if the attribute not a valid integer.
-     */
-    public int getIntAttribute(String namespace, String name, int defaultValue)
-            throws ParseException {
-        String value = mParser.getAttributeValue(namespace, name);
-        if (null == value) return defaultValue;
-        try {
-            return Integer.parseInt(value);
-        } catch (NumberFormatException e) {
-            throw new ParseException("Cannot parse '" + value + "' as an integer");
-        }
-    }
-
-    /**
-     * Returns the string value of the named attribute. An exception will
-     * be thrown if the attribute is not present or is not a valid integer.
-     *
-     * @param namespace the namespace of the attribute
-     * @param name the name of the attribute @return the value of the attribute
-     * @throws ParseException thrown if the attribute is missing or not a valid integer.
-     */
-    public int getIntAttribute(String namespace, String name)
-            throws ParseException {
-        String value = getStringAttribute(namespace, name);
-        try {
-            return Integer.parseInt(value);
-        } catch (NumberFormatException e) {
-            throw new ParseException("Cannot parse '" + value + "' as an integer");
-        }
-    }
-
-    /**
-     * Returns the string value of the named attribute. An exception will
-     * be thrown if the attribute is not a valid long.
-     *
-     * @param namespace the namespace of the attribute
-     * @param name the name of the attribute @return the value of the attribute
-     * @throws ParseException thrown if the attribute is not a valid long.
-     */
-    public long getLongAttribute(String namespace, String name, long defaultValue)
-            throws ParseException {
-        String value = mParser.getAttributeValue(namespace, name);
-        if (null == value) return defaultValue;
-        try {
-            return Long.parseLong(value);
-        } catch (NumberFormatException e) {
-            throw new ParseException("Cannot parse '" + value + "' as a long");
-        }
-    }
-
-    /**
-     * Close this SimplePullParser and any underlying resources (e.g., its InputStream or
-     * Reader source) used by this SimplePullParser.
-     */
-    public void close() {
-        if (source != null) {
-            try {
-                source.close();
-            } catch (IOException ioe) {
-                // ignore
-            }
-        }
-    }
-
-    /**
-     * Returns the string value of the named attribute. An exception will
-     * be thrown if the attribute is not present or is not a valid long.
-     *
-     * @param namespace the namespace of the attribute
-     * @param name the name of the attribute @return the value of the attribute
-     * @throws ParseException thrown if the attribute is missing or not a valid long.
-     */
-    public long getLongAttribute(String namespace, String name)
-            throws ParseException {
-        String value = getStringAttribute(namespace, name);
-        try {
-            return Long.parseLong(value);
-        } catch (NumberFormatException e) {
-            throw new ParseException("Cannot parse '" + value + "' as a long");
-        }
-    }
-
-    public static final class ParseException extends Exception {
-        public ParseException(String message) {
-            super(message);
-        }
-
-        public ParseException(String message, Throwable cause) {
-            super(message, cause);
-        }
-
-        public ParseException(Throwable cause) {
-            super(cause);
-        }
-    }
-}
diff --git a/core/jni/android_text_format_Time.cpp b/core/jni/android_text_format_Time.cpp
index fde6ca6..d89a7e6 100644
--- a/core/jni/android_text_format_Time.cpp
+++ b/core/jni/android_text_format_Time.cpp
@@ -382,7 +382,7 @@
     jchar c = s[spos];
     if (c != expected) {
         char msg[100];
-	sprintf(msg, "Unexpected %c at pos=%d.  Expected %c.", c, spos,
+	sprintf(msg, "Unexpected character 0x%02x at pos=%d.  Expected %c.", c, spos,
 		expected);
 	jniThrowException(env, "android/util/TimeFormatException", msg);
 	return false;
@@ -483,6 +483,12 @@
     int n;
     jboolean inUtc = false;
 
+    if (len < 10) {
+        jniThrowException(env, "android/util/TimeFormatException",
+                "Time input is too short; must be at least 10 characters");
+        return false;
+    }
+
     // year
     n = get_char(env, s, 0, 1000, &thrown);    
     n += get_char(env, s, 1, 100, &thrown);
@@ -510,7 +516,7 @@
     if (thrown) return false;
     env->SetIntField(This, g_mdayField, n);
 
-    if (len >= 17) {
+    if (len >= 19) {
         // T
         if (!check_char(env, s, 10, 'T')) return false;
 
@@ -541,10 +547,19 @@
         if (thrown) return false;
         env->SetIntField(This, g_secField, n);
 
-	// skip the '.XYZ' -- we don't care about subsecond precision.
+        // skip the '.XYZ' -- we don't care about subsecond precision.
+        int tz_index = 19;
+        if (tz_index < len && s[tz_index] == '.') {
+            do {
+                tz_index++;
+            } while (tz_index < len
+                && s[tz_index] >= '0'
+                && s[tz_index] <= '9');
+        }
+
         int offset = 0;
-	if (len >= 23) {
-	    char c = s[23];
+        if (len > tz_index) {
+            char c = s[tz_index];
 
 	    // NOTE: the offset is meant to be subtracted to get from local time
 	    // to UTC.  we therefore use 1 for '-' and -1 for '+'.
@@ -561,27 +576,34 @@
 	        break;
 	    default:
 	        char msg[100];
-	        sprintf(msg, "Unexpected %c at position 19.  Expected + or -",
-			c);
+	        sprintf(msg, "Unexpected character 0x%02x at position %d.  Expected + or -",
+			c, tz_index);
 	        jniThrowException(env, "android/util/TimeFormatException", msg);
 	        return false;
 	    }
             inUtc = true;
 
 	    if (offset != 0) {
+	        if (len < tz_index + 5) {
+	            char msg[100];
+	            sprintf(msg, "Unexpected length; should be %d characters", tz_index + 5);
+	            jniThrowException(env, "android/util/TimeFormatException", msg);
+	            return false;
+	        }
+
 	        // hour
-	        n = get_char(env, s, 24, 10, &thrown);
-		n += get_char(env, s, 25, 1, &thrown);
+	        n = get_char(env, s, tz_index + 1, 10, &thrown);
+		n += get_char(env, s, tz_index + 2, 1, &thrown);
 		if (thrown) return false;
 		n *= offset;
 		hour += n;
 
 		// :
-		if (!check_char(env, s, 26, ':')) return false;
+		if (!check_char(env, s, tz_index + 3, ':')) return false;
 	    
 		// minute
-		n = get_char(env, s, 27, 10, &thrown);
-		n += get_char(env, s, 28, 1, &thrown);
+		n = get_char(env, s, tz_index + 4, 10, &thrown);
+		n += get_char(env, s, tz_index + 5, 1, &thrown);
 		if (thrown) return false;
 		n *= offset;
 		minute += n;
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 4a7adcc..72ad324 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -403,7 +403,13 @@
         android:label="@string/permlab_recordAudio"
         android:description="@string/permdesc_recordAudio" />
 
-    <!-- Required to be able to access the camera device. -->
+    <!-- Required to be able to access the camera device.
+         <p>This will automatically enforce the <a
+         href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code
+         &lt;uses-feature&gt;}</a> manifest element for <em>all</em> camera features.
+         If you do not require all camera features or can properly operate if a camera
+         is not available, then you must modify your manifest as appropriate in order to
+         install on devices that don't support all camera features.</p> -->
     <permission android:name="android.permission.CAMERA"
         android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
         android:protectionLevel="dangerous"
diff --git a/core/res/res/anim/lock_screen_enter.xml b/core/res/res/anim/lock_screen_enter.xml
new file mode 100644
index 0000000..dd47ff8
--- /dev/null
+++ b/core/res/res/anim/lock_screen_enter.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2007, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+-->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+        android:interpolator="@anim/decelerate_interpolator">
+    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
+            android:duration="@android:integer/config_mediumAnimTime" />
+</set>
diff --git a/core/res/res/anim/lock_screen_exit.xml b/core/res/res/anim/lock_screen_exit.xml
index 58bc6db..077fc6b 100644
--- a/core/res/res/anim/lock_screen_exit.xml
+++ b/core/res/res/anim/lock_screen_exit.xml
@@ -17,7 +17,8 @@
 */
 -->
 
-<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@anim/accelerate_interpolator">
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+        android:interpolator="@anim/accelerate_interpolator">
 	<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
             android:duration="@android:integer/config_longAnimTime" />
 </set>
diff --git a/core/res/res/layout/keyguard_screen_sim_pin_portrait.xml b/core/res/res/layout/keyguard_screen_sim_pin_portrait.xml
index 45e96a3..2a23ada 100644
--- a/core/res/res/layout/keyguard_screen_sim_pin_portrait.xml
+++ b/core/res/res/layout/keyguard_screen_sim_pin_portrait.xml
@@ -16,59 +16,55 @@
 ** limitations under the License.
 */
 -->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
+    android:orientation="vertical"
     android:background="@android:color/background_dark"
-        >
+    android:gravity="center_horizontal">
 
     <LinearLayout android:id="@+id/topDisplayGroup"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
-        android:layout_alignParentTop="true"
-        android:orientation="vertical"
-            >
+        android:orientation="vertical">
 
         <!-- header text ('Enter Pin Code') -->
         <TextView android:id="@+id/headerText"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout_marginTop="9dip"
             android:gravity="center"
             android:lines="2"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            />
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
 
-        <RelativeLayout
+        <!-- password entry -->
+        <LinearLayout
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout_marginTop="18dip"
+            android:orientation="horizontal"
             android:layout_marginRight="6dip"
             android:layout_marginLeft="6dip"
-            android:background="@android:drawable/edit_text"
-            >
+            android:gravity="center_vertical"
+            android:background="@android:drawable/edit_text">
 
             <!-- displays dots as user enters pin -->
             <TextView android:id="@+id/pinDisplay"
-                android:layout_width="wrap_content"
-                android:layout_height="64dip"
-                android:layout_centerInParent="true"
+                android:layout_width="0dip"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
                 android:maxLines="1"
                 android:textAppearance="?android:attr/textAppearanceLargeInverse"
                 android:textStyle="bold"
                 android:inputType="textPassword"
-                />
+            />
 
             <ImageButton android:id="@+id/backspace"
                 android:src="@android:drawable/ic_input_delete"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignParentRight="true"
-                android:layout_centerVertical="true"
-                android:layout_marginRight="1dip"
-                    />
-        </RelativeLayout>
-
+                android:layout_marginRight="-3dip"
+                android:layout_marginBottom="-3dip"
+            />
+        </LinearLayout>
 
     </LinearLayout>
 
@@ -78,16 +74,14 @@
         android:layout_height="wrap_content"
         android:layout_below="@id/topDisplayGroup"
         android:layout_marginTop="10dip"
-        android:orientation="vertical"
-        >
+        android:orientation="vertical">
 
         <LinearLayout
             android:layout_width="fill_parent"
             android:layout_height="64dip"
             android:layout_marginLeft="2dip"
             android:layout_marginRight="2dip"
-            android:orientation="horizontal"
-        >
+            android:orientation="horizontal">
 
             <Button android:id="@+id/one"
                 android:layout_width="0sp"
@@ -125,8 +119,7 @@
             android:layout_height="64dip"
             android:layout_marginLeft="2dip"
             android:layout_marginRight="2dip"
-            android:orientation="horizontal"
-        >
+            android:orientation="horizontal">
 
             <Button android:id="@+id/four"
                 android:layout_width="0sp"
@@ -164,8 +157,7 @@
             android:layout_height="64dip"
             android:layout_marginLeft="2dip"
             android:layout_marginRight="2dip"
-            android:orientation="horizontal"
-        >
+            android:orientation="horizontal">
 
             <Button android:id="@+id/seven"
                 android:layout_width="0sp"
@@ -203,8 +195,7 @@
             android:layout_height="64dip"
             android:layout_marginLeft="2dip"
             android:layout_marginRight="2dip"
-            android:orientation="horizontal"
-        >
+            android:orientation="horizontal">
 
             <Button android:id="@+id/ok"
                 android:layout_width="0sp"
@@ -242,27 +233,33 @@
     <!-- end keypad -->
     </LinearLayout>
 
-
-    <!-- emergency call button -->
-    <Button
-        android:id="@+id/emergencyCall"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_centerHorizontal="true"
-        android:layout_alignParentBottom="true"
-        android:drawableLeft="@android:drawable/ic_emergency"
-        android:drawablePadding="8dip"
-        android:text="@android:string/lockscreen_emergency_call"
-        />
-
     <!-- spacer below keypad -->
     <View
         android:id="@+id/spacerBottom"
         android:layout_width="fill_parent"
         android:layout_height="1dip"
-        android:layout_marginBottom="6dip"
+        android:layout_marginTop="6dip"
         android:layout_above="@id/emergencyCall"
-        android:background="@android:drawable/divider_horizontal_dark"/>
+        android:background="@android:drawable/divider_horizontal_dark"
+    />
 
+    <!-- The emergency button should take the rest of the space and be centered vertically -->
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:gravity="center"
+        android:orientation="vertical">
 
-</RelativeLayout>
+        <!-- emergency call button -->
+        <Button
+            android:id="@+id/emergencyCall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:drawableLeft="@android:drawable/ic_emergency"
+            android:drawablePadding="8dip"
+            android:text="@android:string/lockscreen_emergency_call"
+        />
+    </LinearLayout>
+
+</LinearLayout>
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index b155769..f2b52d9 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -101,6 +101,7 @@
 
     <!-- Standard animations for a non-full-screen window or activity. -->
     <style name="Animation.LockScreen">
+        <item name="windowEnterAnimation">@anim/lock_screen_enter</item>
         <item name="windowExitAnimation">@anim/lock_screen_exit</item>
     </style>
 
diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd
index e508392..63bb934 100644
--- a/docs/html/guide/topics/manifest/uses-feature-element.jd
+++ b/docs/html/guide/topics/manifest/uses-feature-element.jd
@@ -7,17 +7,20 @@
 <dd>
 <pre class="stx">
 &lt;uses-feature android:<a href="#glEsVersion">glEsVersion</a>="<em>integer</em>"
-              android:<a href="#name">name</a>="<em>string</em>" /&gt;
+              android:<a href="#name">name</a>="<em>string</em>"
+              android:<a href="#required">required</a>=["true" | "false"] /&gt;
 </pre>
 </dd>
 
 <dt>contained in:</dt>
-<dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code></dd>
+<dd><code><a
+href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code></dd>
 
 <dt>description:</dt>
 <dd>This element declares a specific feature used by the application.
 Android provides some features that may not be equally supported by all
-Android devices. In a manner similar to the <code><a href="uses-sdk-element.html">&lt;uses-sdk></a></code> 
+Android devices. In a manner similar to the <code><a
+href="uses-sdk-element.html">&lt;uses-sdk></a></code>
 element, this element allows an application to specify which device-variable
 features it uses. In this way, the application
 will not be installed on devices that do not offer the feature.</p>
@@ -27,14 +30,14 @@
 installation of the application.</p>
 
 <p>In order to maintain strict device compatibility, it's very important that you use
-this element to declare all features that your application uses. Failure to declare
-a feature may result your application being installed on a device
+this element to declare all applicable features (listed below) that your application uses. Failure
+to declare a feature may result in your application being installed on a device
 that does not support the feature and your application failing.</p>
 
 <p>For some features, there may exist a specfic attribute that allows you to define
 a version of the feature, such as the version of Open GL used (declared with
 <a href="#glEsVersion">{@code glEsVersion}</a>). Other features that either do or do not
-exist for a device, such as camera auto-focus, are declared using the
+exist for a device, such as a camera, are declared using the
 <a href="#name">{@code name}</a> attribute.</p>
 
 <p>Any software or hardware features that may vary among Android-powered
@@ -47,13 +50,12 @@
 &lt;uses-feature android:name="android.hardware.camera" />
 </pre>
 
-<p>If you declare "android.hardware.camera", then your application is considered
-compatible with all devices that include a camera, regardless of whether auto-focus is
-available or not. If you also use the auto-focus features (available through the {@link
-android.hardware.Camera Camera API}), then you need to include an additional
-{@code &lt;uses-feature>} element that declares the "android.hardware.camera.autofocus"
+<p>If you declare {@code android.hardware.camera} this way, then your application is considered
+compatible with all devices that include a camera. If your application also uses auto-focus
+features, then you also need to include a
+{@code &lt;uses-feature>} element that declares the {@code android.hardware.camera.autofocus}
 feature. Also note that you must still request the {@link android.Manifest.permission#CAMERA
-CAMERA permission}. Requesting permission grants your application access to the
+CAMERA} permission. Requesting the permission grants your application access to the
 appropriate hardware and software, while declaring the features used by
 your application ensures proper device compatibility.</p>
 
@@ -75,50 +77,113 @@
 <dt>attributes:</dt>
 
 <dd>
-<dl class="attr"><dt><a name="glEsVersion"></a>{@code android:glEsVersion}</dt>
+<dl class="attr">
+  <dt><a name="glEsVersion"></a>{@code android:glEsVersion}</dt>
   <dd>The GLES version needed by the application.
      The higher 16 bits represent the major number and the lower 16 bits
-     represent the minor number. For example, for GL 1.2 referring to
-     0x00000102, the actual value should be set as 0x00010002.
+     represent the minor number. For example, for GL 1.2,
+     the value should be set as {@code 0x00010002}.
   </dd>
-</dl>
-</dd>
 
-<dd>
-<dl class="attr"><dt><a name="name"></a>{@code android:name}</dt>
+  <dt><a name="name"></a>{@code android:name}</dt>
   <dd>The name of a feature required by the application. 
   The value must be one of the following accepted strings:
-  
-  <table> 
+
+  <table>
     <tr> 
        <th>Feature</th>
        <th>Value</th> 
        <th>Description</th> 
-    </tr><tr> 
-       <td rowspan="3">Camera</td>
-       <td>"{@code android.hardware.camera}"</td> 
+    </tr><tr>
+       <td rowspan="2">Camera</td>
+       <td>{@code android.hardware.camera}</td>
        <td>The application requires a camera.</td> 
-    </tr><tr> 
-       <td>"{@code android.hardware.camera.autofocus}"</td> 
-       <td>The application requires a camera with auto-focus capability.
-       As a prerequisite, "{@code android.hardware.camera}" must also be declared
-       with a separate {@code &lt;uses-feature>} element.
-       </td>
-     <tr>
+    </tr><tr>
        <td colspan="2">
          <strong>Note:</strong> Any application that requests the 
-         {@link android.Manifest.permission#CAMERA CAMERA permission} but does <em>not</em>
+         {@link android.Manifest.permission#CAMERA} permission but does <em>not</em>
          declare any camera features with the {@code &lt;uses-feature>} element will be assumed
-         to use all camera features (such as auto-focus). Thus, the application will not
-         be compatible with devices that do not support all features. Please use 
-         {@code &lt;uses-feature>} to declare only the camera features that your 
-         application needs.
+         to use all camera features (auto-focus and flash). Thus, the application will not
+         be compatible with devices that do not support all camera features. Please use
+         {@code &lt;uses-feature>} to declare only the camera features that your
+         application does need. For instance, if you request the
+         {@link android.Manifest.permission#CAMERA} permission, but you do not need auto-focus or
+          flash, then declare only the {@code android.hardware.camera} feature&mdash;the other
+          camera features that you do not request will no longer be assumed as required.
        </td>
-     </tr>
+    </tr><tr>
+      <td>Camera auto-focus</td>
+      <td>{@code android.hardware.camera.autofocus}</td>
+      <td>The application requires a camera with auto-focus capability.
+       As a prerequisite, {@code android.hardware.camera} must also be declared
+       with a separate {@code &lt;uses-feature>} element.
+      </td>
+    </tr><tr>
+      <td>Camera flash</td>
+      <td>{@code android.hardware.camera.flash}</td>
+      <td>The application requires a camera with a flash.
+        As a prerequisite, both {@code android.hardware.camera} and {@code
+        android.hardware.camera.autofocus} must also be declared
+        with separate {@code &lt;uses-feature>} elements.
+      </td>
+    </tr><tr>
+      <td>Light sensor</td>
+      <td>{@code android.hardware.sensor.light}</td>
+      <td>The application requires a device with a light sensor.
+      </td>
+    </tr><tr>
+      <td>Proximity sensor</td>
+      <td>{@code android.hardware.sensor.proximity}</td>
+      <td>The application requires a device with a proximity sensor.
+      </td>
+    </tr><tr>
+      <td>Multitouch screen</td>
+      <td>{@code android.hardware.touchscreen.multitouch}</td>
+      <td>The application requires a device that supports multitouch.
+      </td>
+    </tr><tr>
+      <td>Telephony</td>
+      <td>{@code android.hardware.telephony}</td>
+      <td>The application requires a device that includes a telephony radio with data
+         communication services.
+      </td>
+    </tr><tr>
+      <td>CDMA telephony</td>
+      <td>{@code android.hardware.telephony.cdma}</td>
+      <td>The application requires a device that includes a CDMA telephony radio. As a
+        prerequisite, {@code android.hardware.telephony} must also be declared
+        with a separate {@code &lt;uses-feature>} element.
+      </td>
+    </tr><tr>
+      <td>GSM telephony</td>
+      <td>{@code android.hardware.telephony.gsm}</td>
+      <td>The application requires a device that includes a GSM telephony radio. As a
+        prerequisite, {@code android.hardware.telephony} must also be declared
+        with a separate {@code &lt;uses-feature>} element.
+      </td>
     </tr>
   </table>
-  
   </dd>
+
+  <dt><a name="required"></a>{@code android:required}</dt>  <!-- added in api level 5 -->
+  <dd>Indicates whether the feature is required by the application. This is
+    {@code true} by default. <strong>You should not use this attribute for most cases.</strong>
+    </p>
+
+    <p>The only situation in which you should set this attribute {@code false} is when your
+    application requests the {@link android.Manifest.permission#CAMERA} permission, but will degrade
+    gracefully and perform without failure if the device does not have a camera. In this situation,
+    you must declare the {@code android.hardware.camera} feature and set the {@code required}
+    attribute {@code false}. This is necessary because the {@link
+    android.Manifest.permission#CAMERA} permission will automatically turn on the requirement for
+    all camera features. So if your application uses this permission but is still compatible with
+    devices without a camera, then you must set the {@code required} attribute {@code false} for
+    {@code android.hardware.camera} or else it will not install on devices without a camera. Note
+    that, while the permission will enable the requirement for <em>all</em> camera features, you
+    only need to off the requirement for the basic camera feature.</p>
+
+  </dd>
+
 </dl>
 </dd>
 
diff --git a/docs/html/guide/topics/wireless/bluetooth.jd b/docs/html/guide/topics/wireless/bluetooth.jd
index 8a0efc9..80aa0d7 100644
--- a/docs/html/guide/topics/wireless/bluetooth.jd
+++ b/docs/html/guide/topics/wireless/bluetooth.jd
@@ -34,6 +34,12 @@
     <li><a href="#ManagingAConnection">Managing a Connection</a></li>
   </ol>
 
+  <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat sample
+      app</a></li>
+  </ol>
+
 </div>
 </div>
 
@@ -826,4 +832,7 @@
 This should always be called when you're done using the Bluetooth
 connection.</p>
 
-
+<div class="special">
+<p>For a complete demonstration using the Bluetooth APIs, see the <a
+href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat sample app</a>.</p>
+</div>
diff --git a/docs/html/guide/topics/wireless/index.jd b/docs/html/guide/topics/wireless/index.jd
index a3a2b363f..23d2f0f 100644
--- a/docs/html/guide/topics/wireless/index.jd
+++ b/docs/html/guide/topics/wireless/index.jd
@@ -1,8 +1,9 @@
 page.title=Wireless Controls
 @jd:body
 
+Go away.
 
-
+<!--
 <h2>Wi-Fi</h2>
 <p>The Wi-Fi APIs provide a means by which application can communicate with the lower-level
 wireless stack that provides Wi-Fi network access. Almost all information from the device supplicant
@@ -12,8 +13,11 @@
 
 
 <h2>Bluetooth</h2>
-<p>The Bluetooth APIs allow applications to scan, connect and pair with other Bluetooth devices.
-THESE APIS ARE NOT YET AVAILABLE.</p>
-
+<p>The Android platform includes support for the Bluetooth network stack, which allows a device to
+wirelessly exchange data with other Bluetooth devices. The application framework provides access to
+the Bluetooth functionality through the Android Bluetooth APIs. These APIs let applications
+wirelessly connect to other Bluetooth devices, enabling point-to-point and multipoint wireless
+features.</p>
+-->
 
 
diff --git a/docs/html/guide/topics/wireless/wifi.jd b/docs/html/guide/topics/wireless/wifi.jd
index 520feafe..761e463 100644
--- a/docs/html/guide/topics/wireless/wifi.jd
+++ b/docs/html/guide/topics/wireless/wifi.jd
@@ -15,4 +15,4 @@
 </div>
 
 
-TODO
\ No newline at end of file
+Go away.
\ No newline at end of file
diff --git a/docs/html/index.jd b/docs/html/index.jd
index d340793..b9854c9 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -20,7 +20,8 @@
                                 </div> <!-- end annoucement -->
                             </div> <!-- end annoucement-block -->  
                         </div><!-- end topAnnouncement -->
-                        <div id="carouselMain" style="height:215px"> <!-- this height can be adjusted based on the content height -->
+                        <div id="carouselMain" style="height:200px"> <!-- this height can be
+                                                            adjusted based on the content height -->
                         </div>
                             <div class="clearer"></div>
                         <div id="carouselWheel">
@@ -126,18 +127,17 @@
     'sdk': {
       'layout':"imgLeft",
       'icon':"sdk-small.png",
-      'name':"Android 2.0.1",
-      'img':"eclair-android.png",
-      'title':"Android 2.0.1",
-      'desc': "<p>Android 2.0.1 is a minor platform update to Android 2.0. "
-               + "For information about what's included in the new platform, read "
-               + "the <a href='{@docRoot}sdk/android-2.0.1.html'>Android 2.0.1 "
+      'name':"Android 2.1",
+      'img':"sdk-large.png",
+      'title':"Android 2.1 is now available",
+      'desc': "<p>Android 2.1 is a small feature release that includes new developer APIs "
+               + "and documentation. For information about what's included in the platform, "
+               + "read the <a href='{@docRoot}sdk/android-2.1.html'>Android 2.1 "
                + "version notes</a>.</p>"
-               + "<p>You can update your existing environment "
-               + "by installing the Android 2.0.1 platform and updated tools as"
-               + " <a href='{@docRoot}sdk/adding-components.html'>SDK "
-               + "components</a>. Otherwise, "
-               + "<a href='{@docRoot}sdk/index.html'>download a new Android SDK</a>.</p>"
+               + "<p>You can update your existing development environment "
+               + "by installing the Android 2.1 platform as an "
+               + "<a href='{@docRoot}sdk/adding-components.html'>SDK "
+               + "component</a>."
     },
 
     'devphone': {
diff --git a/docs/html/robots.txt b/docs/html/robots.txt
index 878996f..503e4b1 100644
--- a/docs/html/robots.txt
+++ b/docs/html/robots.txt
@@ -12,4 +12,6 @@
 Disallow: /sdk/1.5_r3/
 Disallow: /sdk/1.6_r1/
 Disallow: /shareables/
+Disallow: /guide/tutorials/
+Disallow: /guide/samples/
 Sitemap: http://developer.android.com/sitemap.txt
diff --git a/docs/html/sdk/api_diff/7/changes.html b/docs/html/sdk/api_diff/7/changes.html
new file mode 100644
index 0000000..3e5a746
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<!-- on Fri Dec 18 22:29:37 PST 2009 -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+API Differences between 6 and 7
+</TITLE>
+<link href="../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</head>
+<frameset cols="242,**" framespacing="1" frameborder="yes" border="1" bordercolor="#e9e9e9"> 
+<frameset rows="174,**" framespacing="1" frameborder="yes"  border="1" bordercolor="#e9e9e9">
+    <frame src="changes/jdiff_topleftframe.html" scrolling="no" name="topleftframe" frameborder="1">
+    <frame src="changes/alldiffs_index_all.html" scrolling="auto" name="bottomleftframe" frameborder="1">
+  </frameset>
+  <frame src="changes/changes-summary.html" scrolling="auto" name="rightframe" frameborder="1">
+</frameset>
+<noframes>
+<h2>
+Frame Alert
+</h2>
+
+<p>
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+<br>
+Link to <a href="changes/changes-summary.html" target="_top">Non-frame version.</A>
+</noframes>
+</html>
diff --git a/docs/html/sdk/api_diff/7/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/7/changes/alldiffs_index_additions.html
new file mode 100644
index 0000000..5f2347a
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/alldiffs_index_additions.html
@@ -0,0 +1,574 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="alldiffs_index_all.html" xclass="hiddenlink">All Differences</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<b>Additions</b>
+  <br>
+<A HREF="alldiffs_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Field ACTION_LIVE_WALLPAPER_CHOOSER -->
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER" class="hiddenlink" target="rightframe">ACTION_LIVE_WALLPAPER_CHOOSER</A>
+</nobr><br>
+<!-- Field ACTION_LOCALE_CHANGED -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.ACTION_LOCALE_CHANGED" class="hiddenlink" target="rightframe">ACTION_LOCALE_CHANGED</A>
+</nobr><br>
+<!-- Method addView -->
+<nobr><A HREF="android.widget.RemoteViews.html#android.widget.RemoteViews.addView_added(int, android.widget.RemoteViews)" class="hiddenlink" target="rightframe"><b>addView</b>
+(<code>int, RemoteViews</code>)</A></nobr><br>
+<!-- Method allow -->
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.allow_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>allow</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Package android.service.wallpaper -->
+<A HREF="changes-summary.html#android.service.wallpaper" class="hiddenlink" target="rightframe"><b>android.service.wallpaper</b></A><br>
+<!-- Field author -->
+<nobr><A HREF="android.R.attr.html#android.R.attr.author" class="hiddenlink" target="rightframe">author</A>
+</nobr><br>
+<!-- Field autoStart -->
+<nobr><A HREF="android.R.attr.html#android.R.attr.autoStart" class="hiddenlink" target="rightframe">autoStart</A>
+</nobr><br>
+<!-- Field CAMCORDER -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.media.MediaRecorder.AudioSource.html#android.media.MediaRecorder.AudioSource.CAMCORDER" class="hiddenlink" target="rightframe">CAMCORDER</A>
+</nobr><br>
+<!-- Method clear -->
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.clear_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>clear</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Method clearAll -->
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.clearAll_added()" class="hiddenlink" target="rightframe"><b>clearAll</b>
+()</A></nobr><br>
+<!-- Field COMMAND_DROP -->
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.COMMAND_DROP" class="hiddenlink" target="rightframe">COMMAND_DROP</A>
+</nobr><br>
+<!-- Field COMMAND_TAP -->
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.COMMAND_TAP" class="hiddenlink" target="rightframe">COMMAND_TAP</A>
+</nobr><br>
+<!-- Method deleteAllData -->
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.deleteAllData_added()" class="hiddenlink" target="rightframe"><b>deleteAllData</b>
+()</A></nobr><br>
+<!-- Method deleteOrigin -->
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.deleteOrigin_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>deleteOrigin</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Field ECLAIR_MR1 -->
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.os.Build.VERSION_CODES.html#android.os.Build.VERSION_CODES.ECLAIR_MR1" class="hiddenlink" target="rightframe">ECLAIR_MR1</A>
+</nobr><br>
+<!-- Field EXTRA_CHANGED_COMPONENT_NAME_LIST -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST" class="hiddenlink" target="rightframe">EXTRA_CHANGED_COMPONENT_NAME_LIST</A>
+</nobr><br>
+<!-- Field FEATURE_CAMERA -->
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA" class="hiddenlink" target="rightframe">FEATURE_CAMERA</A>
+</nobr><br>
+<!-- Field FEATURE_CAMERA_AUTOFOCUS -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA_AUTOFOCUS" class="hiddenlink" target="rightframe">FEATURE_CAMERA_AUTOFOCUS</A>
+</nobr><br>
+<!-- Field FEATURE_CAMERA_FLASH -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA_FLASH" class="hiddenlink" target="rightframe">FEATURE_CAMERA_FLASH</A>
+</nobr><br>
+<!-- Field FEATURE_LIVE_WALLPAPER -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_LIVE_WALLPAPER" class="hiddenlink" target="rightframe">FEATURE_LIVE_WALLPAPER</A>
+</nobr><br>
+<!-- Field FEATURE_SENSOR_LIGHT -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_SENSOR_LIGHT" class="hiddenlink" target="rightframe">FEATURE_SENSOR_LIGHT</A>
+</nobr><br>
+<!-- Field FEATURE_SENSOR_PROXIMITY -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_SENSOR_PROXIMITY" class="hiddenlink" target="rightframe">FEATURE_SENSOR_PROXIMITY</A>
+</nobr><br>
+<!-- Field FEATURE_TELEPHONY -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY</A>
+</nobr><br>
+<!-- Field FEATURE_TELEPHONY_CDMA -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY_CDMA" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY_CDMA</A>
+</nobr><br>
+<!-- Field FEATURE_TELEPHONY_GSM -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY_GSM" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY_GSM</A>
+</nobr><br>
+<!-- Field FEATURE_TOUCHSCREEN_MULTITOUCH -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH" class="hiddenlink" target="rightframe">FEATURE_TOUCHSCREEN_MULTITOUCH</A>
+</nobr><br>
+<!-- Field FILL_IN_SOURCE_BOUNDS -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.FILL_IN_SOURCE_BOUNDS" class="hiddenlink" target="rightframe">FILL_IN_SOURCE_BOUNDS</A>
+</nobr><br>
+<!-- Method flattenToString -->
+<nobr><A HREF="android.graphics.Rect.html#android.graphics.Rect.flattenToString_added()" class="hiddenlink" target="rightframe"><b>flattenToString</b>
+()</A></nobr><br>
+<!-- Method freeMemory -->
+<nobr><A HREF="android.webkit.WebView.html#android.webkit.WebView.freeMemory_added()" class="hiddenlink" target="rightframe"><b>freeMemory</b>
+()</A></nobr><br>
+<!-- Method getAllowed -->
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getAllowed_added(java.lang.String, android.webkit.ValueCallback<java.lang.Boolean>)" class="hiddenlink" target="rightframe"><b>getAllowed</b>
+(<code>String, ValueCallback&lt;Boolean&gt;</code>)</A></nobr><br>
+<!-- Method getContentDisposition -->
+<nobr><A HREF="android.webkit.CacheManager.CacheResult.html#android.webkit.CacheManager.CacheResult.getContentDisposition_added()" class="hiddenlink" target="rightframe"><b>getContentDisposition</b>
+()</A></nobr><br>
+<!-- Method getDefaultVideoPoster -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getDefaultVideoPoster_added()" class="hiddenlink" target="rightframe"><b>getDefaultVideoPoster</b>
+()</A></nobr><br>
+<!-- Method getDefaultZoom -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getDefaultZoom_added()" class="hiddenlink" target="rightframe"><b>getDefaultZoom</b>
+()</A></nobr><br>
+<!-- Method getDomStorageEnabled -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getDomStorageEnabled_added()" class="hiddenlink" target="rightframe"><b>getDomStorageEnabled</b>
+()</A></nobr><br>
+<!-- Method getExpiresString -->
+<nobr><A HREF="android.webkit.CacheManager.CacheResult.html#android.webkit.CacheManager.CacheResult.getExpiresString_added()" class="hiddenlink" target="rightframe"><b>getExpiresString</b>
+()</A></nobr><br>
+<!-- Method getInstance -->
+<i>getInstance</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getInstance_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.webkit.GeolocationPermissions
+</A></nobr><br>
+<!-- Method getInstance -->
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getInstance_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.webkit.WebStorage
+</A></nobr><br>
+<!-- Method getLoadWithOverviewMode -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getLoadWithOverviewMode_added()" class="hiddenlink" target="rightframe"><b>getLoadWithOverviewMode</b>
+()</A></nobr><br>
+<!-- Method getOrigins -->
+<i>getOrigins</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getOrigins_added(android.webkit.ValueCallback<java.util.Set<java.lang.String>>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>ValueCallback&lt;Set&lt;String&gt;&gt;</code>)</b>&nbsp;in&nbsp;android.webkit.GeolocationPermissions
+</A></nobr><br>
+<!-- Method getOrigins -->
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getOrigins_added(android.webkit.ValueCallback<java.util.Map>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>ValueCallback&lt;Map&gt;</code>)</b>&nbsp;in&nbsp;android.webkit.WebStorage
+</A></nobr><br>
+<!-- Method getQuotaForOrigin -->
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getQuotaForOrigin_added(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)" class="hiddenlink" target="rightframe"><b>getQuotaForOrigin</b>
+(<code>String, ValueCallback&lt;Long&gt;</code>)</A></nobr><br>
+<!-- Method getSourceBounds -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.getSourceBounds_added()" class="hiddenlink" target="rightframe"><b>getSourceBounds</b>
+()</A></nobr><br>
+<!-- Method getUsageForOrigin -->
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getUsageForOrigin_added(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)" class="hiddenlink" target="rightframe"><b>getUsageForOrigin</b>
+(<code>String, ValueCallback&lt;Long&gt;</code>)</A></nobr><br>
+<!-- Method getVideoLoadingProgressView -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getVideoLoadingProgressView_added()" class="hiddenlink" target="rightframe"><b>getVideoLoadingProgressView</b>
+()</A></nobr><br>
+<!-- Method getVisitedHistory -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getVisitedHistory_added(android.webkit.ValueCallback<java.lang.String[]>)" class="hiddenlink" target="rightframe"><b>getVisitedHistory</b>
+(<code>ValueCallback&lt;String[]&gt;</code>)</A></nobr><br>
+<!-- Method getWallpaperInfo -->
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.getWallpaperInfo_added()" class="hiddenlink" target="rightframe"><b>getWallpaperInfo</b>
+()</A></nobr><br>
+<!-- Method isAutoStart -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.widget.ViewFlipper.html#android.widget.ViewFlipper.isAutoStart_added()" class="hiddenlink" target="rightframe"><b>isAutoStart</b>
+()</A></nobr><br>
+<!-- Method isChildrenDrawingOrderEnabled -->
+<nobr><A HREF="android.view.ViewGroup.html#android.view.ViewGroup.isChildrenDrawingOrderEnabled_added()" class="hiddenlink" target="rightframe"><b>isChildrenDrawingOrderEnabled</b>
+()</A></nobr><br>
+<!-- Method isOpaque -->
+<nobr><A HREF="android.view.View.html#android.view.View.isOpaque_added()" class="hiddenlink" target="rightframe"><b>isOpaque</b>
+()</A></nobr><br>
+<!-- Method isScreenOn -->
+<nobr><A HREF="android.os.PowerManager.html#android.os.PowerManager.isScreenOn_added()" class="hiddenlink" target="rightframe"><b>isScreenOn</b>
+()</A></nobr><br>
+<!-- Field LISTEN_SIGNAL_STRENGTHS -->
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTHS" class="hiddenlink" target="rightframe">LISTEN_SIGNAL_STRENGTHS</A>
+</nobr><br>
+<!-- Constructor NeighboringCellInfo -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.telephony.NeighboringCellInfo.html#android.telephony.NeighboringCellInfo.ctor_added(int, java.lang.String, int)" class="hiddenlink" target="rightframe"><b>NeighboringCellInfo</b>
+(<code>int, String, int</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Method onConsoleMessage -->
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onConsoleMessage_added(java.lang.String, int, java.lang.String)" class="hiddenlink" target="rightframe"><b>onConsoleMessage</b>
+(<code>String, int, String</code>)</A></nobr><br>
+<!-- Method onDataConnectionStateChanged -->
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.onDataConnectionStateChanged_added(int, int)" class="hiddenlink" target="rightframe"><b>onDataConnectionStateChanged</b>
+(<code>int, int</code>)</A></nobr><br>
+<!-- Method onDrawScrollBars -->
+<nobr><A HREF="android.view.View.html#android.view.View.onDrawScrollBars_added(android.graphics.Canvas)" class="hiddenlink" target="rightframe"><b>onDrawScrollBars</b>
+(<code>Canvas</code>)</A></nobr><br>
+<!-- Method onHideCustomView -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onHideCustomView_added()" class="hiddenlink" target="rightframe"><b>onHideCustomView</b>
+()</A></nobr><br>
+<!-- Method onJsTimeout -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onJsTimeout_added()" class="hiddenlink" target="rightframe"><b>onJsTimeout</b>
+()</A></nobr><br>
+<!-- Method onReachedMaxAppCacheSize -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onReachedMaxAppCacheSize_added(long, long, android.webkit.WebStorage.QuotaUpdater)" class="hiddenlink" target="rightframe"><b>onReachedMaxAppCacheSize</b>
+(<code>long, long, QuotaUpdater</code>)</A></nobr><br>
+<!-- Method onReceivedTouchIconUrl -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onReceivedTouchIconUrl_added(android.webkit.WebView, java.lang.String, boolean)" class="hiddenlink" target="rightframe"><b>onReceivedTouchIconUrl</b>
+(<code>WebView, String, boolean</code>)</A></nobr><br>
+<!-- Method onShowCustomView -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onShowCustomView_added(android.view.View, android.webkit.WebChromeClient.CustomViewCallback)" class="hiddenlink" target="rightframe"><b>onShowCustomView</b>
+(<code>View, CustomViewCallback</code>)</A></nobr><br>
+<!-- Method onSignalStrengthsChanged -->
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.onSignalStrengthsChanged_added(android.telephony.SignalStrength)" class="hiddenlink" target="rightframe"><b>onSignalStrengthsChanged</b>
+(<code>SignalStrength</code>)</A></nobr><br>
+<!-- Method removeAllViews -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.widget.RemoteViews.html#android.widget.RemoteViews.removeAllViews_added(int)" class="hiddenlink" target="rightframe"><b>removeAllViews</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method sendWallpaperCommand -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.sendWallpaperCommand_added(android.os.IBinder, java.lang.String, int, int, int, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>sendWallpaperCommand</b>
+(<code>IBinder, String, int, int, int, Bundle</code>)</A></nobr><br>
+<!-- Method setAppCacheEnabled -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCacheEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setAppCacheEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setAppCacheMaxSize -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCacheMaxSize_added(long)" class="hiddenlink" target="rightframe"><b>setAppCacheMaxSize</b>
+(<code>long</code>)</A></nobr><br>
+<!-- Method setAppCachePath -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCachePath_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>setAppCachePath</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Method setAutoStart -->
+<nobr><A HREF="android.widget.ViewFlipper.html#android.widget.ViewFlipper.setAutoStart_added(boolean)" class="hiddenlink" target="rightframe"><b>setAutoStart</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setChildrenDrawingOrderEnabled -->
+<nobr><A HREF="android.view.ViewGroup.html#android.view.ViewGroup.setChildrenDrawingOrderEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setChildrenDrawingOrderEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setDefaultZoom -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setDefaultZoom_added(android.webkit.WebSettings.ZoomDensity)" class="hiddenlink" target="rightframe"><b>setDefaultZoom</b>
+(<code>ZoomDensity</code>)</A></nobr><br>
+<!-- Method setDomStorageEnabled -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setDomStorageEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setDomStorageEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setLoadWithOverviewMode -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setLoadWithOverviewMode_added(boolean)" class="hiddenlink" target="rightframe"><b>setLoadWithOverviewMode</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setQuotaForOrigin -->
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.setQuotaForOrigin_added(java.lang.String, long)" class="hiddenlink" target="rightframe"><b>setQuotaForOrigin</b>
+(<code>String, long</code>)</A></nobr><br>
+<!-- Method setSourceBounds -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.setSourceBounds_added(android.graphics.Rect)" class="hiddenlink" target="rightframe"><b>setSourceBounds</b>
+(<code>Rect</code>)</A></nobr><br>
+<!-- Method setWallpaperOffsetSteps -->
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.setWallpaperOffsetSteps_added(float, float)" class="hiddenlink" target="rightframe"><b>setWallpaperOffsetSteps</b>
+(<code>float, float</code>)</A></nobr><br>
+<!-- Class SignalStrength -->
+<A HREF="pkg_android.telephony.html#SignalStrength" class="hiddenlink" target="rightframe"><b>SignalStrength</b></A><br>
+<!-- Method unflattenFromString -->
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.graphics.Rect.html#android.graphics.Rect.unflattenFromString_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>unflattenFromString</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Class ValueCallback -->
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.webkit.html#ValueCallback" class="hiddenlink" target="rightframe"><b><i>ValueCallback</i></b></A><br>
+<!-- Field VOICE_RECOGNITION -->
+<nobr><A HREF="android.media.MediaRecorder.AudioSource.html#android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION" class="hiddenlink" target="rightframe">VOICE_RECOGNITION</A>
+</nobr><br>
+<!-- Class WallpaperInfo -->
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.app.html#WallpaperInfo" class="hiddenlink" target="rightframe"><b>WallpaperInfo</b></A><br>
+<!-- Class WebChromeClient.CustomViewCallback -->
+<A HREF="pkg_android.webkit.html#WebChromeClient.CustomViewCallback" class="hiddenlink" target="rightframe"><b><i>WebChromeClient.CustomViewCallback</i></b></A><br>
+<!-- Class WebSettings.ZoomDensity -->
+<A HREF="pkg_android.webkit.html#WebSettings.ZoomDensity" class="hiddenlink" target="rightframe"><b>WebSettings.ZoomDensity</b></A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/7/changes/alldiffs_index_all.html
new file mode 100644
index 0000000..f0df458
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/alldiffs_index_all.html
@@ -0,0 +1,762 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>All Differences</b>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="alldiffs_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="alldiffs_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Field ACTION_LIVE_WALLPAPER_CHOOSER -->
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER" class="hiddenlink" target="rightframe">ACTION_LIVE_WALLPAPER_CHOOSER</A>
+</nobr><br>
+<!-- Field ACTION_LOCALE_CHANGED -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.ACTION_LOCALE_CHANGED" class="hiddenlink" target="rightframe">ACTION_LOCALE_CHANGED</A>
+</nobr><br>
+<!-- Method addPackageToPreferred -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.addPackageToPreferred_changed(java.lang.String)" class="hiddenlink" target="rightframe">addPackageToPreferred
+(<code>String</code>)</A></nobr><br>
+<!-- Method addView -->
+<nobr><A HREF="android.widget.RemoteViews.html#android.widget.RemoteViews.addView_added(int, android.widget.RemoteViews)" class="hiddenlink" target="rightframe"><b>addView</b>
+(<code>int, RemoteViews</code>)</A></nobr><br>
+<!-- Method allow -->
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.allow_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>allow</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Package android -->
+<A HREF="pkg_android.html" class="hiddenlink" target="rightframe">android</A><br>
+<!-- Package android.app -->
+<A HREF="pkg_android.app.html" class="hiddenlink" target="rightframe">android.app</A><br>
+<!-- Package android.content -->
+<A HREF="pkg_android.content.html" class="hiddenlink" target="rightframe">android.content</A><br>
+<!-- Package android.content.pm -->
+<A HREF="pkg_android.content.pm.html" class="hiddenlink" target="rightframe">android.content.pm</A><br>
+<!-- Package android.graphics -->
+<A HREF="pkg_android.graphics.html" class="hiddenlink" target="rightframe">android.graphics</A><br>
+<!-- Package android.media -->
+<A HREF="pkg_android.media.html" class="hiddenlink" target="rightframe">android.media</A><br>
+<!-- Package android.os -->
+<A HREF="pkg_android.os.html" class="hiddenlink" target="rightframe">android.os</A><br>
+<!-- Package android.service.wallpaper -->
+<A HREF="changes-summary.html#android.service.wallpaper" class="hiddenlink" target="rightframe"><b>android.service.wallpaper</b></A><br>
+<!-- Package android.telephony -->
+<A HREF="pkg_android.telephony.html" class="hiddenlink" target="rightframe">android.telephony</A><br>
+<!-- Package android.view -->
+<A HREF="pkg_android.view.html" class="hiddenlink" target="rightframe">android.view</A><br>
+<!-- Package android.webkit -->
+<A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
+<!-- Package android.widget -->
+<A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
+<!-- Field author -->
+<nobr><A HREF="android.R.attr.html#android.R.attr.author" class="hiddenlink" target="rightframe">author</A>
+</nobr><br>
+<!-- Field autoStart -->
+<nobr><A HREF="android.R.attr.html#android.R.attr.autoStart" class="hiddenlink" target="rightframe">autoStart</A>
+</nobr><br>
+<!-- Class Build.VERSION_CODES -->
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.os.Build.VERSION_CODES.html" class="hiddenlink" target="rightframe">Build.VERSION_CODES</A><br>
+<!-- Class CacheManager.CacheResult -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.webkit.CacheManager.CacheResult.html" class="hiddenlink" target="rightframe">CacheManager.CacheResult</A><br>
+<!-- Field CAMCORDER -->
+<nobr><A HREF="android.media.MediaRecorder.AudioSource.html#android.media.MediaRecorder.AudioSource.CAMCORDER" class="hiddenlink" target="rightframe">CAMCORDER</A>
+</nobr><br>
+<!-- Method clear -->
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.clear_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>clear</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Method clearAll -->
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.clearAll_added()" class="hiddenlink" target="rightframe"><b>clearAll</b>
+()</A></nobr><br>
+<!-- Field COMMAND_DROP -->
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.COMMAND_DROP" class="hiddenlink" target="rightframe">COMMAND_DROP</A>
+</nobr><br>
+<!-- Field COMMAND_TAP -->
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.COMMAND_TAP" class="hiddenlink" target="rightframe">COMMAND_TAP</A>
+</nobr><br>
+<!-- Method deleteAllData -->
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.deleteAllData_added()" class="hiddenlink" target="rightframe"><b>deleteAllData</b>
+()</A></nobr><br>
+<!-- Method deleteOrigin -->
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.deleteOrigin_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>deleteOrigin</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Field ECLAIR_MR1 -->
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.os.Build.VERSION_CODES.html#android.os.Build.VERSION_CODES.ECLAIR_MR1" class="hiddenlink" target="rightframe">ECLAIR_MR1</A>
+</nobr><br>
+<!-- Field EXTRA_CHANGED_COMPONENT_NAME -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME" class="hiddenlink" target="rightframe">EXTRA_CHANGED_COMPONENT_NAME</A>
+</nobr><br>
+<!-- Field EXTRA_CHANGED_COMPONENT_NAME_LIST -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST" class="hiddenlink" target="rightframe">EXTRA_CHANGED_COMPONENT_NAME_LIST</A>
+</nobr><br>
+<!-- Field FEATURE_CAMERA -->
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA" class="hiddenlink" target="rightframe">FEATURE_CAMERA</A>
+</nobr><br>
+<!-- Field FEATURE_CAMERA_AUTOFOCUS -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA_AUTOFOCUS" class="hiddenlink" target="rightframe">FEATURE_CAMERA_AUTOFOCUS</A>
+</nobr><br>
+<!-- Field FEATURE_CAMERA_FLASH -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA_FLASH" class="hiddenlink" target="rightframe">FEATURE_CAMERA_FLASH</A>
+</nobr><br>
+<!-- Field FEATURE_LIVE_WALLPAPER -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_LIVE_WALLPAPER" class="hiddenlink" target="rightframe">FEATURE_LIVE_WALLPAPER</A>
+</nobr><br>
+<!-- Field FEATURE_SENSOR_LIGHT -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_SENSOR_LIGHT" class="hiddenlink" target="rightframe">FEATURE_SENSOR_LIGHT</A>
+</nobr><br>
+<!-- Field FEATURE_SENSOR_PROXIMITY -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_SENSOR_PROXIMITY" class="hiddenlink" target="rightframe">FEATURE_SENSOR_PROXIMITY</A>
+</nobr><br>
+<!-- Field FEATURE_TELEPHONY -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY</A>
+</nobr><br>
+<!-- Field FEATURE_TELEPHONY_CDMA -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY_CDMA" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY_CDMA</A>
+</nobr><br>
+<!-- Field FEATURE_TELEPHONY_GSM -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY_GSM" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY_GSM</A>
+</nobr><br>
+<!-- Field FEATURE_TOUCHSCREEN_MULTITOUCH -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH" class="hiddenlink" target="rightframe">FEATURE_TOUCHSCREEN_MULTITOUCH</A>
+</nobr><br>
+<!-- Field FILL_IN_SOURCE_BOUNDS -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.FILL_IN_SOURCE_BOUNDS" class="hiddenlink" target="rightframe">FILL_IN_SOURCE_BOUNDS</A>
+</nobr><br>
+<!-- Method flattenToString -->
+<nobr><A HREF="android.graphics.Rect.html#android.graphics.Rect.flattenToString_added()" class="hiddenlink" target="rightframe"><b>flattenToString</b>
+()</A></nobr><br>
+<!-- Method freeMemory -->
+<nobr><A HREF="android.webkit.WebView.html#android.webkit.WebView.freeMemory_added()" class="hiddenlink" target="rightframe"><b>freeMemory</b>
+()</A></nobr><br>
+<!-- Class GeolocationPermissions -->
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.webkit.GeolocationPermissions.html" class="hiddenlink" target="rightframe">GeolocationPermissions</A><br>
+<!-- Method getAllowed -->
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getAllowed_added(java.lang.String, android.webkit.ValueCallback<java.lang.Boolean>)" class="hiddenlink" target="rightframe"><b>getAllowed</b>
+(<code>String, ValueCallback&lt;Boolean&gt;</code>)</A></nobr><br>
+<!-- Method getContentDisposition -->
+<nobr><A HREF="android.webkit.CacheManager.CacheResult.html#android.webkit.CacheManager.CacheResult.getContentDisposition_added()" class="hiddenlink" target="rightframe"><b>getContentDisposition</b>
+()</A></nobr><br>
+<!-- Method getDefaultVideoPoster -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getDefaultVideoPoster_added()" class="hiddenlink" target="rightframe"><b>getDefaultVideoPoster</b>
+()</A></nobr><br>
+<!-- Method getDefaultZoom -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getDefaultZoom_added()" class="hiddenlink" target="rightframe"><b>getDefaultZoom</b>
+()</A></nobr><br>
+<!-- Method getDomStorageEnabled -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getDomStorageEnabled_added()" class="hiddenlink" target="rightframe"><b>getDomStorageEnabled</b>
+()</A></nobr><br>
+<!-- Method getExpiresString -->
+<nobr><A HREF="android.webkit.CacheManager.CacheResult.html#android.webkit.CacheManager.CacheResult.getExpiresString_added()" class="hiddenlink" target="rightframe"><b>getExpiresString</b>
+()</A></nobr><br>
+<!-- Method getInstance -->
+<i>getInstance</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getInstance_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.webkit.GeolocationPermissions
+</A></nobr><br>
+<!-- Method getInstance -->
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getInstance_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.webkit.WebStorage
+</A></nobr><br>
+<!-- Method getLoadWithOverviewMode -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getLoadWithOverviewMode_added()" class="hiddenlink" target="rightframe"><b>getLoadWithOverviewMode</b>
+()</A></nobr><br>
+<!-- Method getOrigins -->
+<i>getOrigins</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getOrigins_added(android.webkit.ValueCallback<java.util.Set<java.lang.String>>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>ValueCallback&lt;Set&lt;String&gt;&gt;</code>)</b>&nbsp;in&nbsp;android.webkit.GeolocationPermissions
+</A></nobr><br>
+<!-- Method getOrigins -->
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getOrigins_added(android.webkit.ValueCallback<java.util.Map>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>ValueCallback&lt;Map&gt;</code>)</b>&nbsp;in&nbsp;android.webkit.WebStorage
+</A></nobr><br>
+<!-- Method getQuotaForOrigin -->
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getQuotaForOrigin_added(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)" class="hiddenlink" target="rightframe"><b>getQuotaForOrigin</b>
+(<code>String, ValueCallback&lt;Long&gt;</code>)</A></nobr><br>
+<!-- Method getSourceBounds -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.getSourceBounds_added()" class="hiddenlink" target="rightframe"><b>getSourceBounds</b>
+()</A></nobr><br>
+<!-- Method getUsageForOrigin -->
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getUsageForOrigin_added(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)" class="hiddenlink" target="rightframe"><b>getUsageForOrigin</b>
+(<code>String, ValueCallback&lt;Long&gt;</code>)</A></nobr><br>
+<!-- Method getVideoLoadingProgressView -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getVideoLoadingProgressView_added()" class="hiddenlink" target="rightframe"><b>getVideoLoadingProgressView</b>
+()</A></nobr><br>
+<!-- Method getVisitedHistory -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getVisitedHistory_added(android.webkit.ValueCallback<java.lang.String[]>)" class="hiddenlink" target="rightframe"><b>getVisitedHistory</b>
+(<code>ValueCallback&lt;String[]&gt;</code>)</A></nobr><br>
+<!-- Method getWallpaperInfo -->
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.getWallpaperInfo_added()" class="hiddenlink" target="rightframe"><b>getWallpaperInfo</b>
+()</A></nobr><br>
+<!-- Class Intent -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.content.Intent.html" class="hiddenlink" target="rightframe">Intent</A><br>
+<!-- Method isAutoStart -->
+<nobr><A HREF="android.widget.ViewFlipper.html#android.widget.ViewFlipper.isAutoStart_added()" class="hiddenlink" target="rightframe"><b>isAutoStart</b>
+()</A></nobr><br>
+<!-- Method isChildrenDrawingOrderEnabled -->
+<nobr><A HREF="android.view.ViewGroup.html#android.view.ViewGroup.isChildrenDrawingOrderEnabled_added()" class="hiddenlink" target="rightframe"><b>isChildrenDrawingOrderEnabled</b>
+()</A></nobr><br>
+<!-- Method isOpaque -->
+<nobr><A HREF="android.view.View.html#android.view.View.isOpaque_added()" class="hiddenlink" target="rightframe"><b>isOpaque</b>
+()</A></nobr><br>
+<!-- Method isScreenOn -->
+<nobr><A HREF="android.os.PowerManager.html#android.os.PowerManager.isScreenOn_added()" class="hiddenlink" target="rightframe"><b>isScreenOn</b>
+()</A></nobr><br>
+<!-- Field LISTEN_SIGNAL_STRENGTH -->
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTH" class="hiddenlink" target="rightframe">LISTEN_SIGNAL_STRENGTH</A>
+</nobr><br>
+<!-- Field LISTEN_SIGNAL_STRENGTHS -->
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTHS" class="hiddenlink" target="rightframe">LISTEN_SIGNAL_STRENGTHS</A>
+</nobr><br>
+<!-- Class Manifest.permission -->
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.Manifest.permission.html" class="hiddenlink" target="rightframe">Manifest.permission</A><br>
+<!-- Class MediaRecorder.AudioSource -->
+<A HREF="android.media.MediaRecorder.AudioSource.html" class="hiddenlink" target="rightframe">MediaRecorder.AudioSource</A><br>
+<!-- Class NeighboringCellInfo -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>NeighboringCellInfo</i><br>
+&nbsp;&nbsp;<A HREF="android.telephony.NeighboringCellInfo.html" class="hiddenlink" target="rightframe">android.telephony</A><br>
+<!-- Constructor NeighboringCellInfo -->
+&nbsp;&nbsp;<nobr><A HREF="android.telephony.NeighboringCellInfo.html#android.telephony.NeighboringCellInfo.ctor_added(int, java.lang.String, int)" class="hiddenlink" target="rightframe"><b>NeighboringCellInfo</b>
+(<code>int, String, int</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Method onConsoleMessage -->
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onConsoleMessage_added(java.lang.String, int, java.lang.String)" class="hiddenlink" target="rightframe"><b>onConsoleMessage</b>
+(<code>String, int, String</code>)</A></nobr><br>
+<!-- Method onDataConnectionStateChanged -->
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.onDataConnectionStateChanged_added(int, int)" class="hiddenlink" target="rightframe"><b>onDataConnectionStateChanged</b>
+(<code>int, int</code>)</A></nobr><br>
+<!-- Method onDrawScrollBars -->
+<nobr><A HREF="android.view.View.html#android.view.View.onDrawScrollBars_added(android.graphics.Canvas)" class="hiddenlink" target="rightframe"><b>onDrawScrollBars</b>
+(<code>Canvas</code>)</A></nobr><br>
+<!-- Method onHideCustomView -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onHideCustomView_added()" class="hiddenlink" target="rightframe"><b>onHideCustomView</b>
+()</A></nobr><br>
+<!-- Method onJsTimeout -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onJsTimeout_added()" class="hiddenlink" target="rightframe"><b>onJsTimeout</b>
+()</A></nobr><br>
+<!-- Method onReachedMaxAppCacheSize -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onReachedMaxAppCacheSize_added(long, long, android.webkit.WebStorage.QuotaUpdater)" class="hiddenlink" target="rightframe"><b>onReachedMaxAppCacheSize</b>
+(<code>long, long, QuotaUpdater</code>)</A></nobr><br>
+<!-- Method onReceivedTouchIconUrl -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onReceivedTouchIconUrl_added(android.webkit.WebView, java.lang.String, boolean)" class="hiddenlink" target="rightframe"><b>onReceivedTouchIconUrl</b>
+(<code>WebView, String, boolean</code>)</A></nobr><br>
+<!-- Method onShowCustomView -->
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onShowCustomView_added(android.view.View, android.webkit.WebChromeClient.CustomViewCallback)" class="hiddenlink" target="rightframe"><b>onShowCustomView</b>
+(<code>View, CustomViewCallback</code>)</A></nobr><br>
+<!-- Method onSignalStrengthsChanged -->
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.onSignalStrengthsChanged_added(android.telephony.SignalStrength)" class="hiddenlink" target="rightframe"><b>onSignalStrengthsChanged</b>
+(<code>SignalStrength</code>)</A></nobr><br>
+<!-- Class PackageManager -->
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.content.pm.PackageManager.html" class="hiddenlink" target="rightframe">PackageManager</A><br>
+<!-- Class PhoneStateListener -->
+<A HREF="android.telephony.PhoneStateListener.html" class="hiddenlink" target="rightframe">PhoneStateListener</A><br>
+<!-- Class PowerManager -->
+<A HREF="android.os.PowerManager.html" class="hiddenlink" target="rightframe">PowerManager</A><br>
+<!-- Class R.attr -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.R.attr.html" class="hiddenlink" target="rightframe">R.attr</A><br>
+<!-- Class Rect -->
+<A HREF="android.graphics.Rect.html" class="hiddenlink" target="rightframe">Rect</A><br>
+<!-- Class RemoteViews -->
+<A HREF="android.widget.RemoteViews.html" class="hiddenlink" target="rightframe">RemoteViews</A><br>
+<!-- Method removeAllViews -->
+<nobr><A HREF="android.widget.RemoteViews.html#android.widget.RemoteViews.removeAllViews_added(int)" class="hiddenlink" target="rightframe"><b>removeAllViews</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method removePackageFromPreferred -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.removePackageFromPreferred_changed(java.lang.String)" class="hiddenlink" target="rightframe">removePackageFromPreferred
+(<code>String</code>)</A></nobr><br>
+<!-- Method sendWallpaperCommand -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.sendWallpaperCommand_added(android.os.IBinder, java.lang.String, int, int, int, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>sendWallpaperCommand</b>
+(<code>IBinder, String, int, int, int, Bundle</code>)</A></nobr><br>
+<!-- Field SET_PREFERRED_APPLICATIONS -->
+<nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.SET_PREFERRED_APPLICATIONS" class="hiddenlink" target="rightframe">SET_PREFERRED_APPLICATIONS</A>
+</nobr><br>
+<!-- Method setAppCacheEnabled -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCacheEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setAppCacheEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setAppCacheMaxSize -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCacheMaxSize_added(long)" class="hiddenlink" target="rightframe"><b>setAppCacheMaxSize</b>
+(<code>long</code>)</A></nobr><br>
+<!-- Method setAppCachePath -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCachePath_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>setAppCachePath</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Method setAutoStart -->
+<nobr><A HREF="android.widget.ViewFlipper.html#android.widget.ViewFlipper.setAutoStart_added(boolean)" class="hiddenlink" target="rightframe"><b>setAutoStart</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setChildrenDrawingOrderEnabled -->
+<nobr><A HREF="android.view.ViewGroup.html#android.view.ViewGroup.setChildrenDrawingOrderEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setChildrenDrawingOrderEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setDefaultZoom -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setDefaultZoom_added(android.webkit.WebSettings.ZoomDensity)" class="hiddenlink" target="rightframe"><b>setDefaultZoom</b>
+(<code>ZoomDensity</code>)</A></nobr><br>
+<!-- Method setDomStorageEnabled -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setDomStorageEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setDomStorageEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setLoadWithOverviewMode -->
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setLoadWithOverviewMode_added(boolean)" class="hiddenlink" target="rightframe"><b>setLoadWithOverviewMode</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setQuotaForOrigin -->
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.setQuotaForOrigin_added(java.lang.String, long)" class="hiddenlink" target="rightframe"><b>setQuotaForOrigin</b>
+(<code>String, long</code>)</A></nobr><br>
+<!-- Method setSourceBounds -->
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.setSourceBounds_added(android.graphics.Rect)" class="hiddenlink" target="rightframe"><b>setSourceBounds</b>
+(<code>Rect</code>)</A></nobr><br>
+<!-- Method setWallpaperOffsetSteps -->
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.setWallpaperOffsetSteps_added(float, float)" class="hiddenlink" target="rightframe"><b>setWallpaperOffsetSteps</b>
+(<code>float, float</code>)</A></nobr><br>
+<!-- Class SignalStrength -->
+<A HREF="pkg_android.telephony.html#SignalStrength" class="hiddenlink" target="rightframe"><b>SignalStrength</b></A><br>
+<!-- Method unflattenFromString -->
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.graphics.Rect.html#android.graphics.Rect.unflattenFromString_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>unflattenFromString</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Class ValueCallback -->
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.webkit.html#ValueCallback" class="hiddenlink" target="rightframe"><b><i>ValueCallback</i></b></A><br>
+<!-- Class View -->
+<A HREF="android.view.View.html" class="hiddenlink" target="rightframe">View</A><br>
+<!-- Class ViewFlipper -->
+<A HREF="android.widget.ViewFlipper.html" class="hiddenlink" target="rightframe">ViewFlipper</A><br>
+<!-- Class ViewGroup -->
+<A HREF="android.view.ViewGroup.html" class="hiddenlink" target="rightframe">ViewGroup</A><br>
+<!-- Field VOICE_RECOGNITION -->
+<nobr><A HREF="android.media.MediaRecorder.AudioSource.html#android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION" class="hiddenlink" target="rightframe">VOICE_RECOGNITION</A>
+</nobr><br>
+<!-- Class WallpaperInfo -->
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.app.html#WallpaperInfo" class="hiddenlink" target="rightframe"><b>WallpaperInfo</b></A><br>
+<!-- Class WallpaperManager -->
+<A HREF="android.app.WallpaperManager.html" class="hiddenlink" target="rightframe">WallpaperManager</A><br>
+<!-- Class WebChromeClient -->
+<A HREF="android.webkit.WebChromeClient.html" class="hiddenlink" target="rightframe">WebChromeClient</A><br>
+<!-- Class WebChromeClient.CustomViewCallback -->
+<A HREF="pkg_android.webkit.html#WebChromeClient.CustomViewCallback" class="hiddenlink" target="rightframe"><b><i>WebChromeClient.CustomViewCallback</i></b></A><br>
+<!-- Class WebSettings -->
+<A HREF="android.webkit.WebSettings.html" class="hiddenlink" target="rightframe">WebSettings</A><br>
+<!-- Class WebSettings.ZoomDensity -->
+<A HREF="pkg_android.webkit.html#WebSettings.ZoomDensity" class="hiddenlink" target="rightframe"><b>WebSettings.ZoomDensity</b></A><br>
+<!-- Class WebStorage -->
+<A HREF="android.webkit.WebStorage.html" class="hiddenlink" target="rightframe">WebStorage</A><br>
+<!-- Class WebView -->
+<A HREF="android.webkit.WebView.html" class="hiddenlink" target="rightframe">WebView</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/7/changes/alldiffs_index_changes.html
new file mode 100644
index 0000000..173d8e9
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/alldiffs_index_changes.html
@@ -0,0 +1,378 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="alldiffs_index_all.html" xclass="hiddenlink">All Differences</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="alldiffs_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<b>Changes</b>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Method addPackageToPreferred -->
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.addPackageToPreferred_changed(java.lang.String)" class="hiddenlink" target="rightframe">addPackageToPreferred
+(<code>String</code>)</A></nobr><br>
+<!-- Package android -->
+<A HREF="pkg_android.html" class="hiddenlink" target="rightframe">android</A><br>
+<!-- Package android.app -->
+<A HREF="pkg_android.app.html" class="hiddenlink" target="rightframe">android.app</A><br>
+<!-- Package android.content -->
+<A HREF="pkg_android.content.html" class="hiddenlink" target="rightframe">android.content</A><br>
+<!-- Package android.content.pm -->
+<A HREF="pkg_android.content.pm.html" class="hiddenlink" target="rightframe">android.content.pm</A><br>
+<!-- Package android.graphics -->
+<A HREF="pkg_android.graphics.html" class="hiddenlink" target="rightframe">android.graphics</A><br>
+<!-- Package android.media -->
+<A HREF="pkg_android.media.html" class="hiddenlink" target="rightframe">android.media</A><br>
+<!-- Package android.os -->
+<A HREF="pkg_android.os.html" class="hiddenlink" target="rightframe">android.os</A><br>
+<!-- Package android.telephony -->
+<A HREF="pkg_android.telephony.html" class="hiddenlink" target="rightframe">android.telephony</A><br>
+<!-- Package android.view -->
+<A HREF="pkg_android.view.html" class="hiddenlink" target="rightframe">android.view</A><br>
+<!-- Package android.webkit -->
+<A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
+<!-- Package android.widget -->
+<A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
+<!-- Class Build.VERSION_CODES -->
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.os.Build.VERSION_CODES.html" class="hiddenlink" target="rightframe">Build.VERSION_CODES</A><br>
+<!-- Class CacheManager.CacheResult -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.webkit.CacheManager.CacheResult.html" class="hiddenlink" target="rightframe">CacheManager.CacheResult</A><br>
+<!-- Field EXTRA_CHANGED_COMPONENT_NAME -->
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME" class="hiddenlink" target="rightframe">EXTRA_CHANGED_COMPONENT_NAME</A>
+</nobr><br>
+<!-- Class GeolocationPermissions -->
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.webkit.GeolocationPermissions.html" class="hiddenlink" target="rightframe">GeolocationPermissions</A><br>
+<!-- Class Intent -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.content.Intent.html" class="hiddenlink" target="rightframe">Intent</A><br>
+<!-- Field LISTEN_SIGNAL_STRENGTH -->
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTH" class="hiddenlink" target="rightframe">LISTEN_SIGNAL_STRENGTH</A>
+</nobr><br>
+<!-- Class Manifest.permission -->
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.Manifest.permission.html" class="hiddenlink" target="rightframe">Manifest.permission</A><br>
+<!-- Class MediaRecorder.AudioSource -->
+<A HREF="android.media.MediaRecorder.AudioSource.html" class="hiddenlink" target="rightframe">MediaRecorder.AudioSource</A><br>
+<!-- Class NeighboringCellInfo -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.telephony.NeighboringCellInfo.html" class="hiddenlink" target="rightframe">NeighboringCellInfo</A><br>
+<!-- Class PackageManager -->
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.content.pm.PackageManager.html" class="hiddenlink" target="rightframe">PackageManager</A><br>
+<!-- Class PhoneStateListener -->
+<A HREF="android.telephony.PhoneStateListener.html" class="hiddenlink" target="rightframe">PhoneStateListener</A><br>
+<!-- Class PowerManager -->
+<A HREF="android.os.PowerManager.html" class="hiddenlink" target="rightframe">PowerManager</A><br>
+<!-- Class R.attr -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.R.attr.html" class="hiddenlink" target="rightframe">R.attr</A><br>
+<!-- Class Rect -->
+<A HREF="android.graphics.Rect.html" class="hiddenlink" target="rightframe">Rect</A><br>
+<!-- Class RemoteViews -->
+<A HREF="android.widget.RemoteViews.html" class="hiddenlink" target="rightframe">RemoteViews</A><br>
+<!-- Method removePackageFromPreferred -->
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.removePackageFromPreferred_changed(java.lang.String)" class="hiddenlink" target="rightframe">removePackageFromPreferred
+(<code>String</code>)</A></nobr><br>
+<!-- Field SET_PREFERRED_APPLICATIONS -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.SET_PREFERRED_APPLICATIONS" class="hiddenlink" target="rightframe">SET_PREFERRED_APPLICATIONS</A>
+</nobr><br>
+<!-- Class View -->
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.view.View.html" class="hiddenlink" target="rightframe">View</A><br>
+<!-- Class ViewFlipper -->
+<A HREF="android.widget.ViewFlipper.html" class="hiddenlink" target="rightframe">ViewFlipper</A><br>
+<!-- Class ViewGroup -->
+<A HREF="android.view.ViewGroup.html" class="hiddenlink" target="rightframe">ViewGroup</A><br>
+<!-- Class WallpaperManager -->
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.app.WallpaperManager.html" class="hiddenlink" target="rightframe">WallpaperManager</A><br>
+<!-- Class WebChromeClient -->
+<A HREF="android.webkit.WebChromeClient.html" class="hiddenlink" target="rightframe">WebChromeClient</A><br>
+<!-- Class WebSettings -->
+<A HREF="android.webkit.WebSettings.html" class="hiddenlink" target="rightframe">WebSettings</A><br>
+<!-- Class WebStorage -->
+<A HREF="android.webkit.WebStorage.html" class="hiddenlink" target="rightframe">WebStorage</A><br>
+<!-- Class WebView -->
+<A HREF="android.webkit.WebView.html" class="hiddenlink" target="rightframe">WebView</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/7/changes/alldiffs_index_removals.html
new file mode 100644
index 0000000..68d2c20
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/alldiffs_index_removals.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="alldiffs_index_all.html" xclass="hiddenlink">All Differences</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="alldiffs_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="alldiffs_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/7/changes/android.Manifest.permission.html
new file mode 100644
index 0000000..48b3bb0
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.Manifest.permission.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.Manifest.permission
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.<A HREF="../../../../reference/android/Manifest.permission.html" target="_top"><font size="+2"><code>Manifest.permission</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.Manifest.permission.SET_PREFERRED_APPLICATIONS"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/Manifest.permission.html#SET_PREFERRED_APPLICATIONS" target="_top"><code>SET_PREFERRED_APPLICATIONS</code></font></A></nobr>  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.R.attr.html b/docs/html/sdk/api_diff/7/changes/android.R.attr.html
new file mode 100644
index 0000000..609b2fc
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.R.attr.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.R.attr
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.<A HREF="../../../../reference/android/R.attr.html" target="_top"><font size="+2"><code>R.attr</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.R.attr.author"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/R.attr.html#author" target="_top"><code>author</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.R.attr.autoStart"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/R.attr.html#autoStart" target="_top"><code>autoStart</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.app.WallpaperManager.html b/docs/html/sdk/api_diff/7/changes/android.app.WallpaperManager.html
new file mode 100644
index 0000000..45db50d
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.app.WallpaperManager.html
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.app.WallpaperManager
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.app.<A HREF="../../../../reference/android/app/WallpaperManager.html" target="_top"><font size="+2"><code>WallpaperManager</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.app.WallpaperManager.getWallpaperInfo_added()"></A>
+  <nobr><code>WallpaperInfo</code>&nbsp;<A HREF="../../../../reference/android/app/WallpaperManager.html#getWallpaperInfo()" target="_top"><code>getWallpaperInfo</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.app.WallpaperManager.sendWallpaperCommand_added(android.os.IBinder, java.lang.String, int, int, int, android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/app/WallpaperManager.html#sendWallpaperCommand(android.os.IBinder, java.lang.String, int, int, int, android.os.Bundle)" target="_top"><code>sendWallpaperCommand</code></A>(<code>IBinder,</nobr> String<nobr>,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.app.WallpaperManager.setWallpaperOffsetSteps_added(float, float)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/app/WallpaperManager.html#setWallpaperOffsetSteps(float, float)" target="_top"><code>setWallpaperOffsetSteps</code></A>(<code>float,</nobr> float<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.app.WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/app/WallpaperManager.html#ACTION_LIVE_WALLPAPER_CHOOSER" target="_top"><code>ACTION_LIVE_WALLPAPER_CHOOSER</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.app.WallpaperManager.COMMAND_DROP"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/app/WallpaperManager.html#COMMAND_DROP" target="_top"><code>COMMAND_DROP</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.app.WallpaperManager.COMMAND_TAP"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/app/WallpaperManager.html#COMMAND_TAP" target="_top"><code>COMMAND_TAP</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.content.Intent.html b/docs/html/sdk/api_diff/7/changes/android.content.Intent.html
new file mode 100644
index 0000000..4eb6058
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.content.Intent.html
@@ -0,0 +1,175 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.content.Intent
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.content.<A HREF="../../../../reference/android/content/Intent.html" target="_top"><font size="+2"><code>Intent</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.Intent.getSourceBounds_added()"></A>
+  <nobr><code>Rect</code>&nbsp;<A HREF="../../../../reference/android/content/Intent.html#getSourceBounds()" target="_top"><code>getSourceBounds</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.Intent.setSourceBounds_added(android.graphics.Rect)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/content/Intent.html#setSourceBounds(android.graphics.Rect)" target="_top"><code>setSourceBounds</code></A>(<code>Rect</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.Intent.ACTION_LOCALE_CHANGED"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/Intent.html#ACTION_LOCALE_CHANGED" target="_top"><code>ACTION_LOCALE_CHANGED</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/Intent.html#EXTRA_CHANGED_COMPONENT_NAME_LIST" target="_top"><code>EXTRA_CHANGED_COMPONENT_NAME_LIST</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.Intent.FILL_IN_SOURCE_BOUNDS"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/content/Intent.html#FILL_IN_SOURCE_BOUNDS" target="_top"><code>FILL_IN_SOURCE_BOUNDS</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/Intent.html#EXTRA_CHANGED_COMPONENT_NAME" target="_top"><code>EXTRA_CHANGED_COMPONENT_NAME</code></font></A></nobr>  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/7/changes/android.content.pm.PackageManager.html
new file mode 100644
index 0000000..58b17ee
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.content.pm.PackageManager.html
@@ -0,0 +1,213 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.content.pm.PackageManager
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.content.pm.<A HREF="../../../../reference/android/content/pm/PackageManager.html" target="_top"><font size="+2"><code>PackageManager</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.addPackageToPreferred_changed(java.lang.String)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#addPackageToPreferred(java.lang.String)" target="_top"><code>addPackageToPreferred</code></A>(<code>String</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.removePackageFromPreferred_changed(java.lang.String)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#removePackageFromPreferred(java.lang.String)" target="_top"><code>removePackageFromPreferred</code></A>(<code>String</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.FEATURE_CAMERA"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#FEATURE_CAMERA" target="_top"><code>FEATURE_CAMERA</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.FEATURE_CAMERA_AUTOFOCUS"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#FEATURE_CAMERA_AUTOFOCUS" target="_top"><code>FEATURE_CAMERA_AUTOFOCUS</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.FEATURE_CAMERA_FLASH"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#FEATURE_CAMERA_FLASH" target="_top"><code>FEATURE_CAMERA_FLASH</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.FEATURE_LIVE_WALLPAPER"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#FEATURE_LIVE_WALLPAPER" target="_top"><code>FEATURE_LIVE_WALLPAPER</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.FEATURE_SENSOR_LIGHT"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#FEATURE_SENSOR_LIGHT" target="_top"><code>FEATURE_SENSOR_LIGHT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.FEATURE_SENSOR_PROXIMITY"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#FEATURE_SENSOR_PROXIMITY" target="_top"><code>FEATURE_SENSOR_PROXIMITY</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.FEATURE_TELEPHONY"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#FEATURE_TELEPHONY" target="_top"><code>FEATURE_TELEPHONY</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.FEATURE_TELEPHONY_CDMA"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#FEATURE_TELEPHONY_CDMA" target="_top"><code>FEATURE_TELEPHONY_CDMA</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.FEATURE_TELEPHONY_GSM"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#FEATURE_TELEPHONY_GSM" target="_top"><code>FEATURE_TELEPHONY_GSM</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm.PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/content/pm/PackageManager.html#FEATURE_TOUCHSCREEN_MULTITOUCH" target="_top"><code>FEATURE_TOUCHSCREEN_MULTITOUCH</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.graphics.Rect.html b/docs/html/sdk/api_diff/7/changes/android.graphics.Rect.html
new file mode 100644
index 0000000..dad11c7
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.graphics.Rect.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.graphics.Rect
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.graphics.<A HREF="../../../../reference/android/graphics/Rect.html" target="_top"><font size="+2"><code>Rect</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.graphics.Rect.flattenToString_added()"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/graphics/Rect.html#flattenToString()" target="_top"><code>flattenToString</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.graphics.Rect.unflattenFromString_added(java.lang.String)"></A>
+  <nobr><code>Rect</code>&nbsp;<A HREF="../../../../reference/android/graphics/Rect.html#unflattenFromString(java.lang.String)" target="_top"><code>unflattenFromString</code></A>(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.html b/docs/html/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.html
new file mode 100644
index 0000000..b08003c
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.media.MediaRecorder.AudioSource
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.media.<A HREF="../../../../reference/android/media/MediaRecorder.AudioSource.html" target="_top"><font size="+2"><code>MediaRecorder.AudioSource</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.media.MediaRecorder.AudioSource.CAMCORDER"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/media/MediaRecorder.AudioSource.html#CAMCORDER" target="_top"><code>CAMCORDER</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/media/MediaRecorder.AudioSource.html#VOICE_RECOGNITION" target="_top"><code>VOICE_RECOGNITION</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.html b/docs/html/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.html
new file mode 100644
index 0000000..26b054be
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.os.Build.VERSION_CODES
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.os.<A HREF="../../../../reference/android/os/Build.VERSION_CODES.html" target="_top"><font size="+2"><code>Build.VERSION_CODES</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.os.Build.VERSION_CODES.ECLAIR_MR1"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/os/Build.VERSION_CODES.html#ECLAIR_MR1" target="_top"><code>ECLAIR_MR1</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.os.PowerManager.html b/docs/html/sdk/api_diff/7/changes/android.os.PowerManager.html
new file mode 100644
index 0000000..f766c93
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.os.PowerManager.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.os.PowerManager
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.os.<A HREF="../../../../reference/android/os/PowerManager.html" target="_top"><font size="+2"><code>PowerManager</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.os.PowerManager.isScreenOn_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/os/PowerManager.html#isScreenOn()" target="_top"><code>isScreenOn</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.html b/docs/html/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.html
new file mode 100644
index 0000000..e59d1e8
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.telephony.NeighboringCellInfo
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.telephony.<A HREF="../../../../reference/android/telephony/NeighboringCellInfo.html" target="_top"><font size="+2"><code>NeighboringCellInfo</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.telephony.NeighboringCellInfo.ctor_added(int, java.lang.String, int)"></A>
+  <nobr><A HREF="../../../../reference/android/telephony/NeighboringCellInfo.html#NeighboringCellInfo(int, java.lang.String, int)" target="_top"><code>NeighboringCellInfo</code></A>(<code>int,</nobr> String<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.html b/docs/html/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.html
new file mode 100644
index 0000000..aa87eb8
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.html
@@ -0,0 +1,161 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.telephony.PhoneStateListener
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.telephony.<A HREF="../../../../reference/android/telephony/PhoneStateListener.html" target="_top"><font size="+2"><code>PhoneStateListener</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.telephony.PhoneStateListener.onDataConnectionStateChanged_added(int, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/telephony/PhoneStateListener.html#onDataConnectionStateChanged(int, int)" target="_top"><code>onDataConnectionStateChanged</code></A>(<code>int,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.telephony.PhoneStateListener.onSignalStrengthsChanged_added(android.telephony.SignalStrength)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/telephony/PhoneStateListener.html#onSignalStrengthsChanged(android.telephony.SignalStrength)" target="_top"><code>onSignalStrengthsChanged</code></A>(<code>SignalStrength</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTHS"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/telephony/PhoneStateListener.html#LISTEN_SIGNAL_STRENGTHS" target="_top"><code>LISTEN_SIGNAL_STRENGTHS</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTH"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/telephony/PhoneStateListener.html#LISTEN_SIGNAL_STRENGTH" target="_top"><code>LISTEN_SIGNAL_STRENGTH</code></font></A></nobr>  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.view.View.html b/docs/html/sdk/api_diff/7/changes/android.view.View.html
new file mode 100644
index 0000000..1194d59
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.view.View.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.view.View
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.view.<A HREF="../../../../reference/android/view/View.html" target="_top"><font size="+2"><code>View</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.view.View.isOpaque_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/view/View.html#isOpaque()" target="_top"><code>isOpaque</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.view.View.onDrawScrollBars_added(android.graphics.Canvas)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/view/View.html#onDrawScrollBars(android.graphics.Canvas)" target="_top"><code>onDrawScrollBars</code></A>(<code>Canvas</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/7/changes/android.view.ViewGroup.html
new file mode 100644
index 0000000..d7c030c
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.view.ViewGroup.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.view.ViewGroup
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.view.<A HREF="../../../../reference/android/view/ViewGroup.html" target="_top"><font size="+2"><code>ViewGroup</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.view.ViewGroup.isChildrenDrawingOrderEnabled_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/view/ViewGroup.html#isChildrenDrawingOrderEnabled()" target="_top"><code>isChildrenDrawingOrderEnabled</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.view.ViewGroup.setChildrenDrawingOrderEnabled_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/view/ViewGroup.html#setChildrenDrawingOrderEnabled(boolean)" target="_top"><code>setChildrenDrawingOrderEnabled</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.html b/docs/html/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.html
new file mode 100644
index 0000000..869421e
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.webkit.CacheManager.CacheResult
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.webkit.<A HREF="../../../../reference/android/webkit/CacheManager.CacheResult.html" target="_top"><font size="+2"><code>CacheManager.CacheResult</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.CacheManager.CacheResult.getContentDisposition_added()"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/webkit/CacheManager.CacheResult.html#getContentDisposition()" target="_top"><code>getContentDisposition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.CacheManager.CacheResult.getExpiresString_added()"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/webkit/CacheManager.CacheResult.html#getExpiresString()" target="_top"><code>getExpiresString</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.html b/docs/html/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.html
new file mode 100644
index 0000000..2dacbba
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.webkit.GeolocationPermissions
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.webkit.<A HREF="../../../../reference/android/webkit/GeolocationPermissions.html" target="_top"><font size="+2"><code>GeolocationPermissions</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.GeolocationPermissions.allow_added(java.lang.String)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/GeolocationPermissions.html#allow(java.lang.String)" target="_top"><code>allow</code></A>(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.GeolocationPermissions.clear_added(java.lang.String)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/GeolocationPermissions.html#clear(java.lang.String)" target="_top"><code>clear</code></A>(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.GeolocationPermissions.clearAll_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/GeolocationPermissions.html#clearAll()" target="_top"><code>clearAll</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.GeolocationPermissions.getAllowed_added(java.lang.String, android.webkit.ValueCallback<java.lang.Boolean>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/GeolocationPermissions.html#getAllowed(java.lang.String, android.webkit.ValueCallback<java.lang.Boolean>)" target="_top"><code>getAllowed</code></A>(<code>String,</nobr> ValueCallback&lt;Boolean&gt;<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.GeolocationPermissions.getInstance_added()"></A>
+  <nobr><code>GeolocationPermissions</code>&nbsp;<A HREF="../../../../reference/android/webkit/GeolocationPermissions.html#getInstance()" target="_top"><code>getInstance</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.GeolocationPermissions.getOrigins_added(android.webkit.ValueCallback<java.util.Set<java.lang.String>>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/GeolocationPermissions.html#getOrigins(android.webkit.ValueCallback<java.util.Set<java.lang.String>>)" target="_top"><code>getOrigins</code></A>(<code>ValueCallback&lt;Set&lt;String&gt;&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.WebChromeClient.html b/docs/html/sdk/api_diff/7/changes/android.webkit.WebChromeClient.html
new file mode 100644
index 0000000..5bc64b34
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.WebChromeClient.html
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.webkit.WebChromeClient
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.webkit.<A HREF="../../../../reference/android/webkit/WebChromeClient.html" target="_top"><font size="+2"><code>WebChromeClient</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebChromeClient.getDefaultVideoPoster_added()"></A>
+  <nobr><code>Bitmap</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebChromeClient.html#getDefaultVideoPoster()" target="_top"><code>getDefaultVideoPoster</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebChromeClient.getVideoLoadingProgressView_added()"></A>
+  <nobr><code>View</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebChromeClient.html#getVideoLoadingProgressView()" target="_top"><code>getVideoLoadingProgressView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebChromeClient.getVisitedHistory_added(android.webkit.ValueCallback<java.lang.String[]>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebChromeClient.html#getVisitedHistory(android.webkit.ValueCallback<java.lang.String[]>)" target="_top"><code>getVisitedHistory</code></A>(<code>ValueCallback&lt;String[]&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebChromeClient.onConsoleMessage_added(java.lang.String, int, java.lang.String)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebChromeClient.html#onConsoleMessage(java.lang.String, int, java.lang.String)" target="_top"><code>onConsoleMessage</code></A>(<code>String,</nobr> int<nobr>,</nobr> String<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebChromeClient.onHideCustomView_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebChromeClient.html#onHideCustomView()" target="_top"><code>onHideCustomView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebChromeClient.onJsTimeout_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebChromeClient.html#onJsTimeout()" target="_top"><code>onJsTimeout</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebChromeClient.onReachedMaxAppCacheSize_added(long, long, android.webkit.WebStorage.QuotaUpdater)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebChromeClient.html#onReachedMaxAppCacheSize(long, long, android.webkit.WebStorage.QuotaUpdater)" target="_top"><code>onReachedMaxAppCacheSize</code></A>(<code>long,</nobr> long<nobr>,</nobr> QuotaUpdater<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebChromeClient.onReceivedTouchIconUrl_added(android.webkit.WebView, java.lang.String, boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebChromeClient.html#onReceivedTouchIconUrl(android.webkit.WebView, java.lang.String, boolean)" target="_top"><code>onReceivedTouchIconUrl</code></A>(<code>WebView,</nobr> String<nobr>,</nobr> boolean<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebChromeClient.onShowCustomView_added(android.view.View, android.webkit.WebChromeClient.CustomViewCallback)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebChromeClient.html#onShowCustomView(android.view.View, android.webkit.WebChromeClient.CustomViewCallback)" target="_top"><code>onShowCustomView</code></A>(<code>View,</nobr> CustomViewCallback<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/7/changes/android.webkit.WebSettings.html
new file mode 100644
index 0000000..f763d8b
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.WebSettings.html
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.webkit.WebSettings
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.webkit.<A HREF="../../../../reference/android/webkit/WebSettings.html" target="_top"><font size="+2"><code>WebSettings</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebSettings.getDefaultZoom_added()"></A>
+  <nobr><code>ZoomDensity</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebSettings.html#getDefaultZoom()" target="_top"><code>getDefaultZoom</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebSettings.getDomStorageEnabled_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebSettings.html#getDomStorageEnabled()" target="_top"><code>getDomStorageEnabled</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebSettings.getLoadWithOverviewMode_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebSettings.html#getLoadWithOverviewMode()" target="_top"><code>getLoadWithOverviewMode</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebSettings.setAppCacheEnabled_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebSettings.html#setAppCacheEnabled(boolean)" target="_top"><code>setAppCacheEnabled</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebSettings.setAppCacheMaxSize_added(long)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebSettings.html#setAppCacheMaxSize(long)" target="_top"><code>setAppCacheMaxSize</code></A>(<code>long</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebSettings.setAppCachePath_added(java.lang.String)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebSettings.html#setAppCachePath(java.lang.String)" target="_top"><code>setAppCachePath</code></A>(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebSettings.setDefaultZoom_added(android.webkit.WebSettings.ZoomDensity)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebSettings.html#setDefaultZoom(android.webkit.WebSettings.ZoomDensity)" target="_top"><code>setDefaultZoom</code></A>(<code>ZoomDensity</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebSettings.setDomStorageEnabled_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebSettings.html#setDomStorageEnabled(boolean)" target="_top"><code>setDomStorageEnabled</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebSettings.setLoadWithOverviewMode_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebSettings.html#setLoadWithOverviewMode(boolean)" target="_top"><code>setLoadWithOverviewMode</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.WebStorage.html b/docs/html/sdk/api_diff/7/changes/android.webkit.WebStorage.html
new file mode 100644
index 0000000..0b20ec2
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.WebStorage.html
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.webkit.WebStorage
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.webkit.<A HREF="../../../../reference/android/webkit/WebStorage.html" target="_top"><font size="+2"><code>WebStorage</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebStorage.deleteAllData_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebStorage.html#deleteAllData()" target="_top"><code>deleteAllData</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebStorage.deleteOrigin_added(java.lang.String)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebStorage.html#deleteOrigin(java.lang.String)" target="_top"><code>deleteOrigin</code></A>(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebStorage.getInstance_added()"></A>
+  <nobr><code>WebStorage</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebStorage.html#getInstance()" target="_top"><code>getInstance</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebStorage.getOrigins_added(android.webkit.ValueCallback<java.util.Map>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebStorage.html#getOrigins(android.webkit.ValueCallback<java.util.Map>)" target="_top"><code>getOrigins</code></A>(<code>ValueCallback&lt;Map&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebStorage.getQuotaForOrigin_added(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebStorage.html#getQuotaForOrigin(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)" target="_top"><code>getQuotaForOrigin</code></A>(<code>String,</nobr> ValueCallback&lt;Long&gt;<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebStorage.getUsageForOrigin_added(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebStorage.html#getUsageForOrigin(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)" target="_top"><code>getUsageForOrigin</code></A>(<code>String,</nobr> ValueCallback&lt;Long&gt;<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebStorage.setQuotaForOrigin_added(java.lang.String, long)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebStorage.html#setQuotaForOrigin(java.lang.String, long)" target="_top"><code>setQuotaForOrigin</code></A>(<code>String,</nobr> long<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/7/changes/android.webkit.WebView.html
new file mode 100644
index 0000000..e927bc6
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.webkit.WebView.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.webkit.WebView
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.webkit.<A HREF="../../../../reference/android/webkit/WebView.html" target="_top"><font size="+2"><code>WebView</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit.WebView.freeMemory_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/webkit/WebView.html#freeMemory()" target="_top"><code>freeMemory</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/7/changes/android.widget.RemoteViews.html
new file mode 100644
index 0000000..2651c5e
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.widget.RemoteViews.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.widget.RemoteViews
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.widget.<A HREF="../../../../reference/android/widget/RemoteViews.html" target="_top"><font size="+2"><code>RemoteViews</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.widget.RemoteViews.addView_added(int, android.widget.RemoteViews)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/widget/RemoteViews.html#addView(int, android.widget.RemoteViews)" target="_top"><code>addView</code></A>(<code>int,</nobr> RemoteViews<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.widget.RemoteViews.removeAllViews_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/widget/RemoteViews.html#removeAllViews(int)" target="_top"><code>removeAllViews</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/android.widget.ViewFlipper.html b/docs/html/sdk/api_diff/7/changes/android.widget.ViewFlipper.html
new file mode 100644
index 0000000..fe92777
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/android.widget.ViewFlipper.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.widget.ViewFlipper
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.widget.<A HREF="../../../../reference/android/widget/ViewFlipper.html" target="_top"><font size="+2"><code>ViewFlipper</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.widget.ViewFlipper.isAutoStart_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/widget/ViewFlipper.html#isAutoStart()" target="_top"><code>isAutoStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.widget.ViewFlipper.setAutoStart_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/widget/ViewFlipper.html#setAutoStart(boolean)" target="_top"><code>setAutoStart</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/changes-summary.html b/docs/html/sdk/api_diff/7/changes/changes-summary.html
new file mode 100644
index 0000000..330f727
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/changes-summary.html
@@ -0,0 +1,220 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Android API Differences Report
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<body class="gc-documentation">
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+    <div id="docTitleContainer">
+<h1>Android&nbsp;API&nbsp;Differences&nbsp;Report</h1>
+<p>This report details the changes in the core Android framework API between two <a 
+href="http://developer.android.com/guide/appendix/api-levels.html" target="_top">API Level</a> 
+specifications. It shows additions, modifications, and removals for packages, classes, methods, and fields. 
+The report also includes general statistics that characterize the extent and type of the differences.</p>
+<p>This report is based a comparison of the Android API specifications 
+whose API Level identifiers are given in the upper-right corner of this page. It compares a 
+newer "to" API to an older "from" API, noting all changes relative to the 
+older API. So, for example, API elements marked as removed are no longer present in the "to" 
+API specification.</p>
+<p>To navigate the report, use the "Select a Diffs Index" and "Filter the Index" 
+controls on the left. The report uses text formatting to indicate <em>interface names</em>, 
+<a href= ><code>links to reference documentation</code></a>, and <a href= >links to change 
+description</a>. The statistics are accessible from the "Statistics" link in the upper-right corner.</p>
+<p>For more information about the Android framework API and SDK, 
+see the <a href="http://developer.android.com/index.html" target="_top">Android Developers site</a>.</p>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Packages" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Packages</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.service.wallpaper"></A>
+  <nobr><A HREF="../../../../reference/android/service/wallpaper/package-summary.html" target="_top"><code>android.service.wallpaper</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Packages" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Packages</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android"></A>
+  <nobr><A HREF="pkg_android.html">android</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.app"></A>
+  <nobr><A HREF="pkg_android.app.html">android.app</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content"></A>
+  <nobr><A HREF="pkg_android.content.html">android.content</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.content.pm"></A>
+  <nobr><A HREF="pkg_android.content.pm.html">android.content.pm</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.graphics"></A>
+  <nobr><A HREF="pkg_android.graphics.html">android.graphics</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.media"></A>
+  <nobr><A HREF="pkg_android.media.html">android.media</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.os"></A>
+  <nobr><A HREF="pkg_android.os.html">android.os</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.telephony"></A>
+  <nobr><A HREF="pkg_android.telephony.html">android.telephony</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.view"></A>
+  <nobr><A HREF="pkg_android.view.html">android.view</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.webkit"></A>
+  <nobr><A HREF="pkg_android.webkit.html">android.webkit</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.widget"></A>
+  <nobr><A HREF="pkg_android.widget.html">android.widget</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- End of API section -->
+<!-- Start of packages section -->
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/classes_index_additions.html b/docs/html/sdk/api_diff/7/changes/classes_index_additions.html
new file mode 100644
index 0000000..db5459e
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/classes_index_additions.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Class Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Classes" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="classes_index_all.html" class="staysblack">All Classes</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<b>Additions</b>
+  <br>
+<A HREF="classes_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.telephony.html#SignalStrength" class="hiddenlink" target="rightframe"><b>SignalStrength</b></A><br>
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.webkit.html#ValueCallback" class="hiddenlink" target="rightframe"><b><i>ValueCallback</i></b></A><br>
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.app.html#WallpaperInfo" class="hiddenlink" target="rightframe"><b>WallpaperInfo</b></A><br>
+<A HREF="pkg_android.webkit.html#WebChromeClient.CustomViewCallback" class="hiddenlink" target="rightframe"><b><i>WebChromeClient.CustomViewCallback</i></b></A><br>
+<A HREF="pkg_android.webkit.html#WebSettings.ZoomDensity" class="hiddenlink" target="rightframe"><b>WebSettings.ZoomDensity</b></A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/classes_index_all.html b/docs/html/sdk/api_diff/7/changes/classes_index_all.html
new file mode 100644
index 0000000..49b9728
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/classes_index_all.html
@@ -0,0 +1,241 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Class Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Classes" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>Classes</b>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="classes_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="classes_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.os.Build.VERSION_CODES.html" class="hiddenlink" target="rightframe">Build.VERSION_CODES</A><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.webkit.CacheManager.CacheResult.html" class="hiddenlink" target="rightframe">CacheManager.CacheResult</A><br>
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.webkit.GeolocationPermissions.html" class="hiddenlink" target="rightframe">GeolocationPermissions</A><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.content.Intent.html" class="hiddenlink" target="rightframe">Intent</A><br>
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.Manifest.permission.html" class="hiddenlink" target="rightframe">Manifest.permission</A><br>
+<A HREF="android.media.MediaRecorder.AudioSource.html" class="hiddenlink" target="rightframe">MediaRecorder.AudioSource</A><br>
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.telephony.NeighboringCellInfo.html" class="hiddenlink" target="rightframe">NeighboringCellInfo</A><br>
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.content.pm.PackageManager.html" class="hiddenlink" target="rightframe">PackageManager</A><br>
+<A HREF="android.telephony.PhoneStateListener.html" class="hiddenlink" target="rightframe">PhoneStateListener</A><br>
+<A HREF="android.os.PowerManager.html" class="hiddenlink" target="rightframe">PowerManager</A><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.R.attr.html" class="hiddenlink" target="rightframe">R.attr</A><br>
+<A HREF="android.graphics.Rect.html" class="hiddenlink" target="rightframe">Rect</A><br>
+<A HREF="android.widget.RemoteViews.html" class="hiddenlink" target="rightframe">RemoteViews</A><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.telephony.html#SignalStrength" class="hiddenlink" target="rightframe"><b>SignalStrength</b></A><br>
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.webkit.html#ValueCallback" class="hiddenlink" target="rightframe"><b><i>ValueCallback</i></b></A><br>
+<A HREF="android.view.View.html" class="hiddenlink" target="rightframe">View</A><br>
+<A HREF="android.widget.ViewFlipper.html" class="hiddenlink" target="rightframe">ViewFlipper</A><br>
+<A HREF="android.view.ViewGroup.html" class="hiddenlink" target="rightframe">ViewGroup</A><br>
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.app.html#WallpaperInfo" class="hiddenlink" target="rightframe"><b>WallpaperInfo</b></A><br>
+<A HREF="android.app.WallpaperManager.html" class="hiddenlink" target="rightframe">WallpaperManager</A><br>
+<A HREF="android.webkit.WebChromeClient.html" class="hiddenlink" target="rightframe">WebChromeClient</A><br>
+<A HREF="pkg_android.webkit.html#WebChromeClient.CustomViewCallback" class="hiddenlink" target="rightframe"><b><i>WebChromeClient.CustomViewCallback</i></b></A><br>
+<A HREF="android.webkit.WebSettings.html" class="hiddenlink" target="rightframe">WebSettings</A><br>
+<A HREF="pkg_android.webkit.html#WebSettings.ZoomDensity" class="hiddenlink" target="rightframe"><b>WebSettings.ZoomDensity</b></A><br>
+<A HREF="android.webkit.WebStorage.html" class="hiddenlink" target="rightframe">WebStorage</A><br>
+<A HREF="android.webkit.WebView.html" class="hiddenlink" target="rightframe">WebView</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/classes_index_changes.html b/docs/html/sdk/api_diff/7/changes/classes_index_changes.html
new file mode 100644
index 0000000..f40db15
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/classes_index_changes.html
@@ -0,0 +1,212 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Class Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Classes" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="classes_index_all.html" class="staysblack">All Classes</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="classes_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<b>Changes</b>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.os.Build.VERSION_CODES.html" class="hiddenlink" target="rightframe">Build.VERSION_CODES</A><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.webkit.CacheManager.CacheResult.html" class="hiddenlink" target="rightframe">CacheManager.CacheResult</A><br>
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.webkit.GeolocationPermissions.html" class="hiddenlink" target="rightframe">GeolocationPermissions</A><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.content.Intent.html" class="hiddenlink" target="rightframe">Intent</A><br>
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.Manifest.permission.html" class="hiddenlink" target="rightframe">Manifest.permission</A><br>
+<A HREF="android.media.MediaRecorder.AudioSource.html" class="hiddenlink" target="rightframe">MediaRecorder.AudioSource</A><br>
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.telephony.NeighboringCellInfo.html" class="hiddenlink" target="rightframe">NeighboringCellInfo</A><br>
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.content.pm.PackageManager.html" class="hiddenlink" target="rightframe">PackageManager</A><br>
+<A HREF="android.telephony.PhoneStateListener.html" class="hiddenlink" target="rightframe">PhoneStateListener</A><br>
+<A HREF="android.os.PowerManager.html" class="hiddenlink" target="rightframe">PowerManager</A><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.R.attr.html" class="hiddenlink" target="rightframe">R.attr</A><br>
+<A HREF="android.graphics.Rect.html" class="hiddenlink" target="rightframe">Rect</A><br>
+<A HREF="android.widget.RemoteViews.html" class="hiddenlink" target="rightframe">RemoteViews</A><br>
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.view.View.html" class="hiddenlink" target="rightframe">View</A><br>
+<A HREF="android.widget.ViewFlipper.html" class="hiddenlink" target="rightframe">ViewFlipper</A><br>
+<A HREF="android.view.ViewGroup.html" class="hiddenlink" target="rightframe">ViewGroup</A><br>
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.app.WallpaperManager.html" class="hiddenlink" target="rightframe">WallpaperManager</A><br>
+<A HREF="android.webkit.WebChromeClient.html" class="hiddenlink" target="rightframe">WebChromeClient</A><br>
+<A HREF="android.webkit.WebSettings.html" class="hiddenlink" target="rightframe">WebSettings</A><br>
+<A HREF="android.webkit.WebStorage.html" class="hiddenlink" target="rightframe">WebStorage</A><br>
+<A HREF="android.webkit.WebView.html" class="hiddenlink" target="rightframe">WebView</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/classes_index_removals.html b/docs/html/sdk/api_diff/7/changes/classes_index_removals.html
new file mode 100644
index 0000000..e6da73f
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/classes_index_removals.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Class Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Classes" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="classes_index_all.html" class="staysblack">All Classes</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="classes_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="classes_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/7/changes/constructors_index_additions.html
new file mode 100644
index 0000000..1858441
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/constructors_index_additions.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Constructor Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Constructors" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="constructors_index_all.html" class="staysblack">All Constructors</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<b>Additions</b>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.telephony.NeighboringCellInfo.html#android.telephony.NeighboringCellInfo.ctor_added(int, java.lang.String, int)" class="hiddenlink" target="rightframe"><b>NeighboringCellInfo</b>
+(<code>int, String, int</code>)</A></nobr>&nbsp;constructor<br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/constructors_index_all.html b/docs/html/sdk/api_diff/7/changes/constructors_index_all.html
new file mode 100644
index 0000000..4975970
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/constructors_index_all.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Constructor Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Constructors" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>Constructors</b>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="constructors_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.telephony.NeighboringCellInfo.html#android.telephony.NeighboringCellInfo.ctor_added(int, java.lang.String, int)" class="hiddenlink" target="rightframe"><b>NeighboringCellInfo</b>
+(<code>int, String, int</code>)</A></nobr>&nbsp;constructor<br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/7/changes/constructors_index_changes.html
new file mode 100644
index 0000000..a5ca2ef
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/constructors_index_changes.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Constructor Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Constructors" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="constructors_index_all.html" class="staysblack">All Constructors</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="constructors_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/7/changes/constructors_index_removals.html
new file mode 100644
index 0000000..74a09ba
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/constructors_index_removals.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Constructor Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Constructors" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="constructors_index_all.html" class="staysblack">All Constructors</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="constructors_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/fields_index_additions.html b/docs/html/sdk/api_diff/7/changes/fields_index_additions.html
new file mode 100644
index 0000000..3148f4c
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/fields_index_additions.html
@@ -0,0 +1,159 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Field Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Fields" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="fields_index_all.html" class="staysblack">All Fields</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<b>Additions</b>
+  <br>
+<A HREF="fields_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER" class="hiddenlink" target="rightframe">ACTION_LIVE_WALLPAPER_CHOOSER</A>
+</nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.ACTION_LOCALE_CHANGED" class="hiddenlink" target="rightframe">ACTION_LOCALE_CHANGED</A>
+</nobr><br>
+<nobr><A HREF="android.R.attr.html#android.R.attr.author" class="hiddenlink" target="rightframe">author</A>
+</nobr><br>
+<nobr><A HREF="android.R.attr.html#android.R.attr.autoStart" class="hiddenlink" target="rightframe">autoStart</A>
+</nobr><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.media.MediaRecorder.AudioSource.html#android.media.MediaRecorder.AudioSource.CAMCORDER" class="hiddenlink" target="rightframe">CAMCORDER</A>
+</nobr><br>
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.COMMAND_DROP" class="hiddenlink" target="rightframe">COMMAND_DROP</A>
+</nobr><br>
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.COMMAND_TAP" class="hiddenlink" target="rightframe">COMMAND_TAP</A>
+</nobr><br>
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.os.Build.VERSION_CODES.html#android.os.Build.VERSION_CODES.ECLAIR_MR1" class="hiddenlink" target="rightframe">ECLAIR_MR1</A>
+</nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST" class="hiddenlink" target="rightframe">EXTRA_CHANGED_COMPONENT_NAME_LIST</A>
+</nobr><br>
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA" class="hiddenlink" target="rightframe">FEATURE_CAMERA</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA_AUTOFOCUS" class="hiddenlink" target="rightframe">FEATURE_CAMERA_AUTOFOCUS</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA_FLASH" class="hiddenlink" target="rightframe">FEATURE_CAMERA_FLASH</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_LIVE_WALLPAPER" class="hiddenlink" target="rightframe">FEATURE_LIVE_WALLPAPER</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_SENSOR_LIGHT" class="hiddenlink" target="rightframe">FEATURE_SENSOR_LIGHT</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_SENSOR_PROXIMITY" class="hiddenlink" target="rightframe">FEATURE_SENSOR_PROXIMITY</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY_CDMA" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY_CDMA</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY_GSM" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY_GSM</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH" class="hiddenlink" target="rightframe">FEATURE_TOUCHSCREEN_MULTITOUCH</A>
+</nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.FILL_IN_SOURCE_BOUNDS" class="hiddenlink" target="rightframe">FILL_IN_SOURCE_BOUNDS</A>
+</nobr><br>
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTHS" class="hiddenlink" target="rightframe">LISTEN_SIGNAL_STRENGTHS</A>
+</nobr><br>
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.media.MediaRecorder.AudioSource.html#android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION" class="hiddenlink" target="rightframe">VOICE_RECOGNITION</A>
+</nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/fields_index_all.html b/docs/html/sdk/api_diff/7/changes/fields_index_all.html
new file mode 100644
index 0000000..c782afc
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/fields_index_all.html
@@ -0,0 +1,181 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Field Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Fields" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>Fields</b>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="fields_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="fields_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER" class="hiddenlink" target="rightframe">ACTION_LIVE_WALLPAPER_CHOOSER</A>
+</nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.ACTION_LOCALE_CHANGED" class="hiddenlink" target="rightframe">ACTION_LOCALE_CHANGED</A>
+</nobr><br>
+<nobr><A HREF="android.R.attr.html#android.R.attr.author" class="hiddenlink" target="rightframe">author</A>
+</nobr><br>
+<nobr><A HREF="android.R.attr.html#android.R.attr.autoStart" class="hiddenlink" target="rightframe">autoStart</A>
+</nobr><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.media.MediaRecorder.AudioSource.html#android.media.MediaRecorder.AudioSource.CAMCORDER" class="hiddenlink" target="rightframe">CAMCORDER</A>
+</nobr><br>
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.COMMAND_DROP" class="hiddenlink" target="rightframe">COMMAND_DROP</A>
+</nobr><br>
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.COMMAND_TAP" class="hiddenlink" target="rightframe">COMMAND_TAP</A>
+</nobr><br>
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.os.Build.VERSION_CODES.html#android.os.Build.VERSION_CODES.ECLAIR_MR1" class="hiddenlink" target="rightframe">ECLAIR_MR1</A>
+</nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME" class="hiddenlink" target="rightframe">EXTRA_CHANGED_COMPONENT_NAME</A>
+</nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST" class="hiddenlink" target="rightframe">EXTRA_CHANGED_COMPONENT_NAME_LIST</A>
+</nobr><br>
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA" class="hiddenlink" target="rightframe">FEATURE_CAMERA</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA_AUTOFOCUS" class="hiddenlink" target="rightframe">FEATURE_CAMERA_AUTOFOCUS</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_CAMERA_FLASH" class="hiddenlink" target="rightframe">FEATURE_CAMERA_FLASH</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_LIVE_WALLPAPER" class="hiddenlink" target="rightframe">FEATURE_LIVE_WALLPAPER</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_SENSOR_LIGHT" class="hiddenlink" target="rightframe">FEATURE_SENSOR_LIGHT</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_SENSOR_PROXIMITY" class="hiddenlink" target="rightframe">FEATURE_SENSOR_PROXIMITY</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY_CDMA" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY_CDMA</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TELEPHONY_GSM" class="hiddenlink" target="rightframe">FEATURE_TELEPHONY_GSM</A>
+</nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH" class="hiddenlink" target="rightframe">FEATURE_TOUCHSCREEN_MULTITOUCH</A>
+</nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.FILL_IN_SOURCE_BOUNDS" class="hiddenlink" target="rightframe">FILL_IN_SOURCE_BOUNDS</A>
+</nobr><br>
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTH" class="hiddenlink" target="rightframe">LISTEN_SIGNAL_STRENGTH</A>
+</nobr><br>
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTHS" class="hiddenlink" target="rightframe">LISTEN_SIGNAL_STRENGTHS</A>
+</nobr><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.SET_PREFERRED_APPLICATIONS" class="hiddenlink" target="rightframe">SET_PREFERRED_APPLICATIONS</A>
+</nobr><br>
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.media.MediaRecorder.AudioSource.html#android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION" class="hiddenlink" target="rightframe">VOICE_RECOGNITION</A>
+</nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/fields_index_changes.html b/docs/html/sdk/api_diff/7/changes/fields_index_changes.html
new file mode 100644
index 0000000..88f77de
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/fields_index_changes.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Field Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Fields" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="fields_index_all.html" class="staysblack">All Fields</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="fields_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<b>Changes</b>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME" class="hiddenlink" target="rightframe">EXTRA_CHANGED_COMPONENT_NAME</A>
+</nobr><br>
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTH" class="hiddenlink" target="rightframe">LISTEN_SIGNAL_STRENGTH</A>
+</nobr><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.Manifest.permission.html#android.Manifest.permission.SET_PREFERRED_APPLICATIONS" class="hiddenlink" target="rightframe">SET_PREFERRED_APPLICATIONS</A>
+</nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/fields_index_removals.html b/docs/html/sdk/api_diff/7/changes/fields_index_removals.html
new file mode 100644
index 0000000..9f62d88
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/fields_index_removals.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Field Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Fields" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="fields_index_all.html" class="staysblack">All Fields</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="fields_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="fields_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/jdiff_help.html b/docs/html/sdk/api_diff/7/changes/jdiff_help.html
new file mode 100644
index 0000000..6cc80dc
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/jdiff_help.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+JDiff Help
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<TABLE summary="Navigation bar" BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+  <TABLE summary="Navigation bar" BORDER="0" CELLPADDING="0" CELLSPACING="3">
+    <TR ALIGN="center" VALIGN="top">
+      <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../reference/index.html" target="_top"><FONT CLASS="NavBarFont1"><B><code>7</code></B></FONT></A>&nbsp;</TD>
+      <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="changes-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+      <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> &nbsp;<FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+      <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> &nbsp;<FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+      <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="jdiff_statistics.html"><FONT CLASS="NavBarFont1"><B>Statistics</B></FONT></A>&nbsp;</TD>
+      <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+    </TR>
+  </TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM><b>Generated by<br><a href="http://www.jdiff.org" class="staysblack" target="_top">JDiff</a></b></EM></TD>
+</TR>
+<TR>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell2"><FONT SIZE="-2"></FONT>
+</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../changes.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+  &nbsp;<A HREF="jdiff_help.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<HR>
+<!-- End of nav bar -->
+<center>
+<H1>JDiff Documentation</H1>
+</center>
+<BLOCKQUOTE>
+JDiff is a <a href="http://java.sun.com/j2se/javadoc/" target="_top">Javadoc</a> doclet which generates a report of the API differences between two versions of a product. It does not report changes in Javadoc comments, or changes in what a class or method does. 
+This help page describes the different parts of the output from JDiff.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+ See the reference page in the <a href="http://www.jdiff.org">source for JDiff</a> for information about how to generate a report like this one.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+The indexes shown in the top-left frame help show each type of change in more detail. The index "All Differences" contains all the differences between the APIs, in alphabetical order. 
+These indexes all use the same format:
+<ul>
+<li>Removed packages, classes, constructors, methods and fields are <strike>struck through</strike>.</li>
+<li>Added packages, classes, constructors, methods and fields appear in <b>bold</b>.</li>
+<li>Changed packages, classes, constructors, methods and fields appear in normal text.</li>
+</ul>
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+You can always tell when you are reading a JDiff page, rather than a Javadoc page, by the color of the index bar and the color of the background. 
+Links which take you to a Javadoc page are always in a <code>typewriter</code> font. 
+Just like Javadoc, all interface names are in <i>italic</i>, and class names are not italicized. Where there are multiple entries in an index with the same name, the heading for them is also in italics, but is not a link.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3><b><code>Javadoc</code></b></H3>
+This is a link to the <a href="../../../../reference/index.html" target="_top">top-level</a> Javadoc page for the new version of the product.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Overview</H3>
+The <a href="changes-summary.html">overview</a> is the top-level summary of what was removed, added and changed between versions.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Package</H3>
+This is a link to the package containing the current changed class or interface.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Class</H3>
+This is highlighted when you are looking at the changed class or interface.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Text Changes</H3>
+This is a link to the top-level index of all documentation changes for the current package or class. 
+If it is not present, then there are no documentation changes for the current package or class. 
+This link can be removed entirely by not using the <code>-docchanges</code> option.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Statistics</H3>
+This is a link to a page which shows statistics about the changes between the two APIs.
+This link can be removed entirely by not using the <code>-stats</code> option.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Help</H3>
+A link to this Help page for JDiff.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Prev/Next</H3>
+These links take you to the previous  and next changed package or class.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Frames/No Frames</H3>
+These links show and hide the HTML frames. All pages are available with or without frames.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H2>Complex Changes</H2>
+There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. 
+In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. 
+</BLOCKQUOTE>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/7/changes/jdiff_statistics.html
new file mode 100644
index 0000000..ba81aec
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/jdiff_statistics.html
@@ -0,0 +1,342 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+API Change Statistics
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<body class="gc-documentation">
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;xborder-bottom:none;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="../changes.html" target="_top">Top of Report</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<h1>API&nbsp;Change&nbsp;Statistics</h1>
+<p>The overall difference between API Levels 6 and 7 is approximately <span style="color:222;font-weight:bold;">0.48%</span>.
+</p>
+<br>
+<a name="numbers"></a>
+<h2>Total of Differences, by Number and Type</h2>
+<p>
+The table below lists the numbers of program elements (packages, classes, constructors, methods, and fields) that were added, changed, or removed. The table includes only the highest-level program elements &mdash; that is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class.
+</p>
+<TABLE summary="Number of differences" WIDTH="100%">
+<TR>
+  <th>Type</th>
+  <TH ALIGN="center"><b>Additions</b></TH>
+  <TH ALIGN="center"><b>Changes</b></TH>
+  <TH ALIGN="center">Removals</TH>
+  <TH ALIGN="center"><b>Total</b></TH>
+</TR>
+<TR>
+  <TD>Packages</TD>
+  <TD ALIGN="right">1</TD>
+  <TD ALIGN="right">11</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">12</TD>
+</TR>
+<TR>
+  <TD>Classes and <i>Interfaces</i></TD>
+  <TD ALIGN="right">5</TD>
+  <TD ALIGN="right">21</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">26</TD>
+</TR>
+<TR>
+  <TD>Constructors</TD>
+  <TD ALIGN="right">1</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">1</TD>
+</TR>
+<TR>
+  <TD>Methods</TD>
+  <TD ALIGN="right">52</TD>
+  <TD ALIGN="right">2</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">54</TD>
+</TR>
+<TR>
+  <TD>Fields</TD>
+  <TD ALIGN="right">22</TD>
+  <TD ALIGN="right">3</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">25</TD>
+</TR>
+<TR>
+  <TD style="background-color:#FAFAFA"><b>Total</b></TD>
+  <TD  style="background-color:#FAFAFA" ALIGN="right"><strong>81</strong></TD>
+  <TD  style="background-color:#FAFAFA" ALIGN="right"><strong>37</strong></TD>
+  <TD  style="background-color:#FAFAFA" ALIGN="right"><strong>0</strong></TD>
+  <TD  style="background-color:#FAFAFA" ALIGN="right"><strong>118</strong></TD>
+</TR>
+</TABLE>
+<br>
+<a name="packages"></a>
+<h2>Changed Packages, Sorted by Percentage Difference</h2>
+<TABLE summary="Packages sorted by percentage difference" WIDTH="100%">
+<TR>
+  <TH  WIDTH="10%">Percentage Difference*</TH>
+  <TH>Package</TH>
+</TR>
+<TR>
+  <TD ALIGN="center">8</TD>
+  <TD><A HREF="pkg_android.webkit.html">android.webkit</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="pkg_android.telephony.html">android.telephony</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="pkg_android.app.html">android.app</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.media.html">android.media</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.content.pm.html">android.content.pm</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.os.html">android.os</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.widget.html">android.widget</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.graphics.html">android.graphics</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.html">android</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.content.html">android.content</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.view.html">android.view</A></TD>
+</TR>
+</TABLE>
+<p style="font-size:10px">* See <a href="#calculation">Calculation of Change Percentages</a>, below.</p>
+<br>
+<a name="classes"></a>
+<h2>Changed Classes and <i>Interfaces</i>, Sorted by Percentage Difference</h2>
+<TABLE summary="Classes sorted by percentage difference" WIDTH="100%">
+<TR WIDTH="20%">
+  <TH WIDTH="10%">Percentage<br>Difference*</TH>
+  <TH><b>Class or <i>Interface</i></b></TH>
+</TR>
+<TR>
+  <TD ALIGN="center">77</TD>
+  <TD><A HREF="android.webkit.WebStorage.html">
+android.webkit.WebStorage</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">75</TD>
+  <TD><A HREF="android.webkit.GeolocationPermissions.html">
+android.webkit.GeolocationPermissions</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">24</TD>
+  <TD><A HREF="android.webkit.WebChromeClient.html">
+android.webkit.WebChromeClient</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">17</TD>
+  <TD><A HREF="android.app.WallpaperManager.html">
+android.app.WallpaperManager</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">16</TD>
+  <TD><A HREF="android.media.MediaRecorder.AudioSource.html">
+android.media.MediaRecorder.AudioSource</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">14</TD>
+  <TD><A HREF="android.widget.ViewFlipper.html">
+android.widget.ViewFlipper</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">10</TD>
+  <TD><A HREF="android.telephony.PhoneStateListener.html">
+android.telephony.PhoneStateListener</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">6</TD>
+  <TD><A HREF="android.webkit.CacheManager.CacheResult.html">
+android.webkit.CacheManager.CacheResult</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">6</TD>
+  <TD><A HREF="android.content.pm.PackageManager.html">
+android.content.pm.PackageManager</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="android.os.Build.VERSION_CODES.html">
+android.os.Build.VERSION_CODES</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="android.webkit.WebSettings.html">
+android.webkit.WebSettings</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="android.os.PowerManager.html">
+android.os.PowerManager</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">3</TD>
+  <TD><A HREF="android.telephony.NeighboringCellInfo.html">
+android.telephony.NeighboringCellInfo</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">3</TD>
+  <TD><A HREF="android.widget.RemoteViews.html">
+android.widget.RemoteViews</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">2</TD>
+  <TD><A HREF="android.graphics.Rect.html">
+android.graphics.Rect</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="android.content.Intent.html">
+android.content.Intent</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="android.view.ViewGroup.html">
+android.view.ViewGroup</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="android.webkit.WebView.html">
+android.webkit.WebView</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="android.Manifest.permission.html">
+android.Manifest.permission</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="android.view.View.html">
+android.view.View</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="android.R.attr.html">
+android.R.attr</A></TD>
+</TR>
+</TABLE>
+<p style="font-size:10px">* See <a href="#calculation">Calculation of Change Percentages</a>, below.</p>
+<br>
+<h2 id="calculation">Calculation of Change Percentages</h2>
+<p>
+The percent change statistic reported for all elements in the &quot;to&quot; API Level specification is defined recursively as follows:</p>
+<pre>
+Percentage difference = 100 * (added + removed + 2*changed)
+                        -----------------------------------
+                        sum of public elements in BOTH APIs
+</pre>
+<p>where <code>added</code> is the number of packages added, <code>removed</code> is the number of packages removed, and <code>changed</code> is the number of packages changed.
+This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed.
+The definition ensures that if all packages are removed and all new packages are
+added, the change will be 100%.</p>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY></HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/7/changes/jdiff_topleftframe.html
new file mode 100644
index 0000000..36f9836
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/jdiff_topleftframe.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Android API Version Differences
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<table class="jdiffIndex" summary="Links to diff index files" BORDER="0" WIDTH="100%" cellspacing="0" cellpadding="0" style="margin:0">
+<TR>
+  <th class="indexHeader" nowrap>
+  Select a Diffs Index:</th>
+</TR>
+<TR>
+  <TD><FONT CLASS="indexText" size="-2"><A HREF="alldiffs_index_all.html" TARGET="bottomleftframe">All Differences</A></FONT><br></TD>
+</TR>
+<TR>
+  <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="packages_index_all.html" TARGET="bottomleftframe">By Package</A></FONT><br></TD>
+</TR>
+<TR>
+  <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="classes_index_all.html" TARGET="bottomleftframe">By Class</A></FONT><br></TD>
+</TR>
+<TR>
+  <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="constructors_index_all.html" TARGET="bottomleftframe">By Constructor</A></FONT><br></TD>
+</TR>
+<TR>
+  <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="methods_index_all.html" TARGET="bottomleftframe">By Method</A></FONT><br></TD>
+</TR>
+<TR>
+  <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="fields_index_all.html" TARGET="bottomleftframe">By Field</A></FONT><br></TD>
+</TR>
+</TABLE>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/methods_index_additions.html b/docs/html/sdk/api_diff/7/changes/methods_index_additions.html
new file mode 100644
index 0000000..1623337
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/methods_index_additions.html
@@ -0,0 +1,301 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Method Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Methods" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="methods_index_all.html" class="staysblack">All Methods</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<b>Additions</b>
+  <br>
+<A HREF="methods_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.widget.RemoteViews.html#android.widget.RemoteViews.addView_added(int, android.widget.RemoteViews)" class="hiddenlink" target="rightframe"><b>addView</b>
+(<code>int, RemoteViews</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.allow_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>allow</b>
+(<code>String</code>)</A></nobr><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.clear_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>clear</b>
+(<code>String</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.clearAll_added()" class="hiddenlink" target="rightframe"><b>clearAll</b>
+()</A></nobr><br>
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.deleteAllData_added()" class="hiddenlink" target="rightframe"><b>deleteAllData</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.deleteOrigin_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>deleteOrigin</b>
+(<code>String</code>)</A></nobr><br>
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.graphics.Rect.html#android.graphics.Rect.flattenToString_added()" class="hiddenlink" target="rightframe"><b>flattenToString</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebView.html#android.webkit.WebView.freeMemory_added()" class="hiddenlink" target="rightframe"><b>freeMemory</b>
+()</A></nobr><br>
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getAllowed_added(java.lang.String, android.webkit.ValueCallback<java.lang.Boolean>)" class="hiddenlink" target="rightframe"><b>getAllowed</b>
+(<code>String, ValueCallback&lt;Boolean&gt;</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.CacheManager.CacheResult.html#android.webkit.CacheManager.CacheResult.getContentDisposition_added()" class="hiddenlink" target="rightframe"><b>getContentDisposition</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getDefaultVideoPoster_added()" class="hiddenlink" target="rightframe"><b>getDefaultVideoPoster</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getDefaultZoom_added()" class="hiddenlink" target="rightframe"><b>getDefaultZoom</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getDomStorageEnabled_added()" class="hiddenlink" target="rightframe"><b>getDomStorageEnabled</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.CacheManager.CacheResult.html#android.webkit.CacheManager.CacheResult.getExpiresString_added()" class="hiddenlink" target="rightframe"><b>getExpiresString</b>
+()</A></nobr><br>
+<i>getInstance</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getInstance_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.webkit.GeolocationPermissions
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getInstance_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.webkit.WebStorage
+</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getLoadWithOverviewMode_added()" class="hiddenlink" target="rightframe"><b>getLoadWithOverviewMode</b>
+()</A></nobr><br>
+<i>getOrigins</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getOrigins_added(android.webkit.ValueCallback<java.util.Set<java.lang.String>>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>ValueCallback&lt;Set&lt;String&gt;&gt;</code>)</b>&nbsp;in&nbsp;android.webkit.GeolocationPermissions
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getOrigins_added(android.webkit.ValueCallback<java.util.Map>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>ValueCallback&lt;Map&gt;</code>)</b>&nbsp;in&nbsp;android.webkit.WebStorage
+</A></nobr><br>
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getQuotaForOrigin_added(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)" class="hiddenlink" target="rightframe"><b>getQuotaForOrigin</b>
+(<code>String, ValueCallback&lt;Long&gt;</code>)</A></nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.getSourceBounds_added()" class="hiddenlink" target="rightframe"><b>getSourceBounds</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getUsageForOrigin_added(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)" class="hiddenlink" target="rightframe"><b>getUsageForOrigin</b>
+(<code>String, ValueCallback&lt;Long&gt;</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getVideoLoadingProgressView_added()" class="hiddenlink" target="rightframe"><b>getVideoLoadingProgressView</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getVisitedHistory_added(android.webkit.ValueCallback<java.lang.String[]>)" class="hiddenlink" target="rightframe"><b>getVisitedHistory</b>
+(<code>ValueCallback&lt;String[]&gt;</code>)</A></nobr><br>
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.getWallpaperInfo_added()" class="hiddenlink" target="rightframe"><b>getWallpaperInfo</b>
+()</A></nobr><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.widget.ViewFlipper.html#android.widget.ViewFlipper.isAutoStart_added()" class="hiddenlink" target="rightframe"><b>isAutoStart</b>
+()</A></nobr><br>
+<nobr><A HREF="android.view.ViewGroup.html#android.view.ViewGroup.isChildrenDrawingOrderEnabled_added()" class="hiddenlink" target="rightframe"><b>isChildrenDrawingOrderEnabled</b>
+()</A></nobr><br>
+<nobr><A HREF="android.view.View.html#android.view.View.isOpaque_added()" class="hiddenlink" target="rightframe"><b>isOpaque</b>
+()</A></nobr><br>
+<nobr><A HREF="android.os.PowerManager.html#android.os.PowerManager.isScreenOn_added()" class="hiddenlink" target="rightframe"><b>isScreenOn</b>
+()</A></nobr><br>
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onConsoleMessage_added(java.lang.String, int, java.lang.String)" class="hiddenlink" target="rightframe"><b>onConsoleMessage</b>
+(<code>String, int, String</code>)</A></nobr><br>
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.onDataConnectionStateChanged_added(int, int)" class="hiddenlink" target="rightframe"><b>onDataConnectionStateChanged</b>
+(<code>int, int</code>)</A></nobr><br>
+<nobr><A HREF="android.view.View.html#android.view.View.onDrawScrollBars_added(android.graphics.Canvas)" class="hiddenlink" target="rightframe"><b>onDrawScrollBars</b>
+(<code>Canvas</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onHideCustomView_added()" class="hiddenlink" target="rightframe"><b>onHideCustomView</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onJsTimeout_added()" class="hiddenlink" target="rightframe"><b>onJsTimeout</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onReachedMaxAppCacheSize_added(long, long, android.webkit.WebStorage.QuotaUpdater)" class="hiddenlink" target="rightframe"><b>onReachedMaxAppCacheSize</b>
+(<code>long, long, QuotaUpdater</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onReceivedTouchIconUrl_added(android.webkit.WebView, java.lang.String, boolean)" class="hiddenlink" target="rightframe"><b>onReceivedTouchIconUrl</b>
+(<code>WebView, String, boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onShowCustomView_added(android.view.View, android.webkit.WebChromeClient.CustomViewCallback)" class="hiddenlink" target="rightframe"><b>onShowCustomView</b>
+(<code>View, CustomViewCallback</code>)</A></nobr><br>
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.onSignalStrengthsChanged_added(android.telephony.SignalStrength)" class="hiddenlink" target="rightframe"><b>onSignalStrengthsChanged</b>
+(<code>SignalStrength</code>)</A></nobr><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.widget.RemoteViews.html#android.widget.RemoteViews.removeAllViews_added(int)" class="hiddenlink" target="rightframe"><b>removeAllViews</b>
+(<code>int</code>)</A></nobr><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.sendWallpaperCommand_added(android.os.IBinder, java.lang.String, int, int, int, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>sendWallpaperCommand</b>
+(<code>IBinder, String, int, int, int, Bundle</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCacheEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setAppCacheEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCacheMaxSize_added(long)" class="hiddenlink" target="rightframe"><b>setAppCacheMaxSize</b>
+(<code>long</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCachePath_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>setAppCachePath</b>
+(<code>String</code>)</A></nobr><br>
+<nobr><A HREF="android.widget.ViewFlipper.html#android.widget.ViewFlipper.setAutoStart_added(boolean)" class="hiddenlink" target="rightframe"><b>setAutoStart</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.view.ViewGroup.html#android.view.ViewGroup.setChildrenDrawingOrderEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setChildrenDrawingOrderEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setDefaultZoom_added(android.webkit.WebSettings.ZoomDensity)" class="hiddenlink" target="rightframe"><b>setDefaultZoom</b>
+(<code>ZoomDensity</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setDomStorageEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setDomStorageEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setLoadWithOverviewMode_added(boolean)" class="hiddenlink" target="rightframe"><b>setLoadWithOverviewMode</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.setQuotaForOrigin_added(java.lang.String, long)" class="hiddenlink" target="rightframe"><b>setQuotaForOrigin</b>
+(<code>String, long</code>)</A></nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.setSourceBounds_added(android.graphics.Rect)" class="hiddenlink" target="rightframe"><b>setSourceBounds</b>
+(<code>Rect</code>)</A></nobr><br>
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.setWallpaperOffsetSteps_added(float, float)" class="hiddenlink" target="rightframe"><b>setWallpaperOffsetSteps</b>
+(<code>float, float</code>)</A></nobr><br>
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.graphics.Rect.html#android.graphics.Rect.unflattenFromString_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>unflattenFromString</b>
+(<code>String</code>)</A></nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/methods_index_all.html b/docs/html/sdk/api_diff/7/changes/methods_index_all.html
new file mode 100644
index 0000000..7258ab1
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/methods_index_all.html
@@ -0,0 +1,305 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Method Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Methods" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>Methods</b>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="methods_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="methods_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.addPackageToPreferred_changed(java.lang.String)" class="hiddenlink" target="rightframe">addPackageToPreferred
+(<code>String</code>)</A></nobr><br>
+<nobr><A HREF="android.widget.RemoteViews.html#android.widget.RemoteViews.addView_added(int, android.widget.RemoteViews)" class="hiddenlink" target="rightframe"><b>addView</b>
+(<code>int, RemoteViews</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.allow_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>allow</b>
+(<code>String</code>)</A></nobr><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.clear_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>clear</b>
+(<code>String</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.clearAll_added()" class="hiddenlink" target="rightframe"><b>clearAll</b>
+()</A></nobr><br>
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.deleteAllData_added()" class="hiddenlink" target="rightframe"><b>deleteAllData</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.deleteOrigin_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>deleteOrigin</b>
+(<code>String</code>)</A></nobr><br>
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.graphics.Rect.html#android.graphics.Rect.flattenToString_added()" class="hiddenlink" target="rightframe"><b>flattenToString</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebView.html#android.webkit.WebView.freeMemory_added()" class="hiddenlink" target="rightframe"><b>freeMemory</b>
+()</A></nobr><br>
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getAllowed_added(java.lang.String, android.webkit.ValueCallback<java.lang.Boolean>)" class="hiddenlink" target="rightframe"><b>getAllowed</b>
+(<code>String, ValueCallback&lt;Boolean&gt;</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.CacheManager.CacheResult.html#android.webkit.CacheManager.CacheResult.getContentDisposition_added()" class="hiddenlink" target="rightframe"><b>getContentDisposition</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getDefaultVideoPoster_added()" class="hiddenlink" target="rightframe"><b>getDefaultVideoPoster</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getDefaultZoom_added()" class="hiddenlink" target="rightframe"><b>getDefaultZoom</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getDomStorageEnabled_added()" class="hiddenlink" target="rightframe"><b>getDomStorageEnabled</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.CacheManager.CacheResult.html#android.webkit.CacheManager.CacheResult.getExpiresString_added()" class="hiddenlink" target="rightframe"><b>getExpiresString</b>
+()</A></nobr><br>
+<i>getInstance</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getInstance_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.webkit.GeolocationPermissions
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getInstance_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.webkit.WebStorage
+</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.getLoadWithOverviewMode_added()" class="hiddenlink" target="rightframe"><b>getLoadWithOverviewMode</b>
+()</A></nobr><br>
+<i>getOrigins</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.GeolocationPermissions.html#android.webkit.GeolocationPermissions.getOrigins_added(android.webkit.ValueCallback<java.util.Set<java.lang.String>>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>ValueCallback&lt;Set&lt;String&gt;&gt;</code>)</b>&nbsp;in&nbsp;android.webkit.GeolocationPermissions
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getOrigins_added(android.webkit.ValueCallback<java.util.Map>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>ValueCallback&lt;Map&gt;</code>)</b>&nbsp;in&nbsp;android.webkit.WebStorage
+</A></nobr><br>
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getQuotaForOrigin_added(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)" class="hiddenlink" target="rightframe"><b>getQuotaForOrigin</b>
+(<code>String, ValueCallback&lt;Long&gt;</code>)</A></nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.getSourceBounds_added()" class="hiddenlink" target="rightframe"><b>getSourceBounds</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.getUsageForOrigin_added(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)" class="hiddenlink" target="rightframe"><b>getUsageForOrigin</b>
+(<code>String, ValueCallback&lt;Long&gt;</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getVideoLoadingProgressView_added()" class="hiddenlink" target="rightframe"><b>getVideoLoadingProgressView</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.getVisitedHistory_added(android.webkit.ValueCallback<java.lang.String[]>)" class="hiddenlink" target="rightframe"><b>getVisitedHistory</b>
+(<code>ValueCallback&lt;String[]&gt;</code>)</A></nobr><br>
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.getWallpaperInfo_added()" class="hiddenlink" target="rightframe"><b>getWallpaperInfo</b>
+()</A></nobr><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.widget.ViewFlipper.html#android.widget.ViewFlipper.isAutoStart_added()" class="hiddenlink" target="rightframe"><b>isAutoStart</b>
+()</A></nobr><br>
+<nobr><A HREF="android.view.ViewGroup.html#android.view.ViewGroup.isChildrenDrawingOrderEnabled_added()" class="hiddenlink" target="rightframe"><b>isChildrenDrawingOrderEnabled</b>
+()</A></nobr><br>
+<nobr><A HREF="android.view.View.html#android.view.View.isOpaque_added()" class="hiddenlink" target="rightframe"><b>isOpaque</b>
+()</A></nobr><br>
+<nobr><A HREF="android.os.PowerManager.html#android.os.PowerManager.isScreenOn_added()" class="hiddenlink" target="rightframe"><b>isScreenOn</b>
+()</A></nobr><br>
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onConsoleMessage_added(java.lang.String, int, java.lang.String)" class="hiddenlink" target="rightframe"><b>onConsoleMessage</b>
+(<code>String, int, String</code>)</A></nobr><br>
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.onDataConnectionStateChanged_added(int, int)" class="hiddenlink" target="rightframe"><b>onDataConnectionStateChanged</b>
+(<code>int, int</code>)</A></nobr><br>
+<nobr><A HREF="android.view.View.html#android.view.View.onDrawScrollBars_added(android.graphics.Canvas)" class="hiddenlink" target="rightframe"><b>onDrawScrollBars</b>
+(<code>Canvas</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onHideCustomView_added()" class="hiddenlink" target="rightframe"><b>onHideCustomView</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onJsTimeout_added()" class="hiddenlink" target="rightframe"><b>onJsTimeout</b>
+()</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onReachedMaxAppCacheSize_added(long, long, android.webkit.WebStorage.QuotaUpdater)" class="hiddenlink" target="rightframe"><b>onReachedMaxAppCacheSize</b>
+(<code>long, long, QuotaUpdater</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onReceivedTouchIconUrl_added(android.webkit.WebView, java.lang.String, boolean)" class="hiddenlink" target="rightframe"><b>onReceivedTouchIconUrl</b>
+(<code>WebView, String, boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebChromeClient.html#android.webkit.WebChromeClient.onShowCustomView_added(android.view.View, android.webkit.WebChromeClient.CustomViewCallback)" class="hiddenlink" target="rightframe"><b>onShowCustomView</b>
+(<code>View, CustomViewCallback</code>)</A></nobr><br>
+<nobr><A HREF="android.telephony.PhoneStateListener.html#android.telephony.PhoneStateListener.onSignalStrengthsChanged_added(android.telephony.SignalStrength)" class="hiddenlink" target="rightframe"><b>onSignalStrengthsChanged</b>
+(<code>SignalStrength</code>)</A></nobr><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.widget.RemoteViews.html#android.widget.RemoteViews.removeAllViews_added(int)" class="hiddenlink" target="rightframe"><b>removeAllViews</b>
+(<code>int</code>)</A></nobr><br>
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.removePackageFromPreferred_changed(java.lang.String)" class="hiddenlink" target="rightframe">removePackageFromPreferred
+(<code>String</code>)</A></nobr><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.sendWallpaperCommand_added(android.os.IBinder, java.lang.String, int, int, int, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>sendWallpaperCommand</b>
+(<code>IBinder, String, int, int, int, Bundle</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCacheEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setAppCacheEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCacheMaxSize_added(long)" class="hiddenlink" target="rightframe"><b>setAppCacheMaxSize</b>
+(<code>long</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setAppCachePath_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>setAppCachePath</b>
+(<code>String</code>)</A></nobr><br>
+<nobr><A HREF="android.widget.ViewFlipper.html#android.widget.ViewFlipper.setAutoStart_added(boolean)" class="hiddenlink" target="rightframe"><b>setAutoStart</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.view.ViewGroup.html#android.view.ViewGroup.setChildrenDrawingOrderEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setChildrenDrawingOrderEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setDefaultZoom_added(android.webkit.WebSettings.ZoomDensity)" class="hiddenlink" target="rightframe"><b>setDefaultZoom</b>
+(<code>ZoomDensity</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setDomStorageEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setDomStorageEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebSettings.html#android.webkit.WebSettings.setLoadWithOverviewMode_added(boolean)" class="hiddenlink" target="rightframe"><b>setLoadWithOverviewMode</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.webkit.WebStorage.html#android.webkit.WebStorage.setQuotaForOrigin_added(java.lang.String, long)" class="hiddenlink" target="rightframe"><b>setQuotaForOrigin</b>
+(<code>String, long</code>)</A></nobr><br>
+<nobr><A HREF="android.content.Intent.html#android.content.Intent.setSourceBounds_added(android.graphics.Rect)" class="hiddenlink" target="rightframe"><b>setSourceBounds</b>
+(<code>Rect</code>)</A></nobr><br>
+<nobr><A HREF="android.app.WallpaperManager.html#android.app.WallpaperManager.setWallpaperOffsetSteps_added(float, float)" class="hiddenlink" target="rightframe"><b>setWallpaperOffsetSteps</b>
+(<code>float, float</code>)</A></nobr><br>
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.graphics.Rect.html#android.graphics.Rect.unflattenFromString_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>unflattenFromString</b>
+(<code>String</code>)</A></nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/methods_index_changes.html b/docs/html/sdk/api_diff/7/changes/methods_index_changes.html
new file mode 100644
index 0000000..35867b1
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/methods_index_changes.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Method Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Methods" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="methods_index_all.html" class="staysblack">All Methods</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="methods_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<b>Changes</b>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#R"><font size="-2">R</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.addPackageToPreferred_changed(java.lang.String)" class="hiddenlink" target="rightframe">addPackageToPreferred
+(<code>String</code>)</A></nobr><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.content.pm.PackageManager.html#android.content.pm.PackageManager.removePackageFromPreferred_changed(java.lang.String)" class="hiddenlink" target="rightframe">removePackageFromPreferred
+(<code>String</code>)</A></nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/methods_index_removals.html b/docs/html/sdk/api_diff/7/changes/methods_index_removals.html
new file mode 100644
index 0000000..b5aea4f
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/methods_index_removals.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Method Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Methods" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="methods_index_all.html" class="staysblack">All Methods</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="methods_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="methods_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/packages_index_additions.html b/docs/html/sdk/api_diff/7/changes/packages_index_additions.html
new file mode 100644
index 0000000..d6ad068
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/packages_index_additions.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Package Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Packages" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="packages_index_all.html" class="staysblack">All Packages</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<b>Additions</b>
+  <br>
+<A HREF="packages_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<br>
+<div id="indexTableEntries">
+<A NAME="A"></A>
+<A HREF="changes-summary.html#android.service.wallpaper" class="hiddenlink" target="rightframe"><b>android.service.wallpaper</b></A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/packages_index_all.html b/docs/html/sdk/api_diff/7/changes/packages_index_all.html
new file mode 100644
index 0000000..5ab8b40
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/packages_index_all.html
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Package Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Packages" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>Packages</b>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="packages_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="packages_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<br>
+<div id="indexTableEntries">
+<A NAME="A"></A>
+<A HREF="pkg_android.html" class="hiddenlink" target="rightframe">android</A><br>
+<A HREF="pkg_android.app.html" class="hiddenlink" target="rightframe">android.app</A><br>
+<A HREF="pkg_android.content.html" class="hiddenlink" target="rightframe">android.content</A><br>
+<A HREF="pkg_android.content.pm.html" class="hiddenlink" target="rightframe">android.content.pm</A><br>
+<A HREF="pkg_android.graphics.html" class="hiddenlink" target="rightframe">android.graphics</A><br>
+<A HREF="pkg_android.media.html" class="hiddenlink" target="rightframe">android.media</A><br>
+<A HREF="pkg_android.os.html" class="hiddenlink" target="rightframe">android.os</A><br>
+<A HREF="changes-summary.html#android.service.wallpaper" class="hiddenlink" target="rightframe"><b>android.service.wallpaper</b></A><br>
+<A HREF="pkg_android.telephony.html" class="hiddenlink" target="rightframe">android.telephony</A><br>
+<A HREF="pkg_android.view.html" class="hiddenlink" target="rightframe">android.view</A><br>
+<A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
+<A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/packages_index_changes.html b/docs/html/sdk/api_diff/7/changes/packages_index_changes.html
new file mode 100644
index 0000000..2331bb2
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/packages_index_changes.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Package Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Packages" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="packages_index_all.html" class="staysblack">All Packages</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="packages_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<b>Changes</b>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<br>
+<div id="indexTableEntries">
+<A NAME="A"></A>
+<A HREF="pkg_android.html" class="hiddenlink" target="rightframe">android</A><br>
+<A HREF="pkg_android.app.html" class="hiddenlink" target="rightframe">android.app</A><br>
+<A HREF="pkg_android.content.html" class="hiddenlink" target="rightframe">android.content</A><br>
+<A HREF="pkg_android.content.pm.html" class="hiddenlink" target="rightframe">android.content.pm</A><br>
+<A HREF="pkg_android.graphics.html" class="hiddenlink" target="rightframe">android.graphics</A><br>
+<A HREF="pkg_android.media.html" class="hiddenlink" target="rightframe">android.media</A><br>
+<A HREF="pkg_android.os.html" class="hiddenlink" target="rightframe">android.os</A><br>
+<A HREF="pkg_android.telephony.html" class="hiddenlink" target="rightframe">android.telephony</A><br>
+<A HREF="pkg_android.view.html" class="hiddenlink" target="rightframe">android.view</A><br>
+<A HREF="pkg_android.webkit.html" class="hiddenlink" target="rightframe">android.webkit</A><br>
+<A HREF="pkg_android.widget.html" class="hiddenlink" target="rightframe">android.widget</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/packages_index_removals.html b/docs/html/sdk/api_diff/7/changes/packages_index_removals.html
new file mode 100644
index 0000000..d0ffabc
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/packages_index_removals.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Package Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Packages" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="packages_index_all.html" class="staysblack">All Packages</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="packages_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="packages_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<br>
+<div id="indexTableEntries">
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.app.html b/docs/html/sdk/api_diff/7/changes/pkg_android.app.html
new file mode 100644
index 0000000..f05a62f
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.app.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.app
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/app/package-summary.html" target="_top"><font size="+1"><code>android.app</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="WallpaperInfo"></A>
+  <nobr><A HREF="../../../../reference/android/app/WallpaperInfo.html" target="_top"><code>WallpaperInfo</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="WallpaperManager"></A>
+  <nobr><A HREF="android.app.WallpaperManager.html">WallpaperManager</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.content.html b/docs/html/sdk/api_diff/7/changes/pkg_android.content.html
new file mode 100644
index 0000000..4920ce3
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.content.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.content
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/content/package-summary.html" target="_top"><font size="+1"><code>android.content</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="Intent"></A>
+  <nobr><A HREF="android.content.Intent.html">Intent</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/7/changes/pkg_android.content.pm.html
new file mode 100644
index 0000000..c5c3b2e
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.content.pm.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.content.pm
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/content/pm/package-summary.html" target="_top"><font size="+1"><code>android.content.pm</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="PackageManager"></A>
+  <nobr><A HREF="android.content.pm.PackageManager.html">PackageManager</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/7/changes/pkg_android.graphics.html
new file mode 100644
index 0000000..732481f
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.graphics.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.graphics
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/graphics/package-summary.html" target="_top"><font size="+1"><code>android.graphics</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="Rect"></A>
+  <nobr><A HREF="android.graphics.Rect.html">Rect</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.html b/docs/html/sdk/api_diff/7/changes/pkg_android.html
new file mode 100644
index 0000000..fa07ac1
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/package-summary.html" target="_top"><font size="+1"><code>android</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="Manifest.permission"></A>
+  <nobr><A HREF="android.Manifest.permission.html">Manifest.permission</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="R.attr"></A>
+  <nobr><A HREF="android.R.attr.html">R.attr</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.media.html b/docs/html/sdk/api_diff/7/changes/pkg_android.media.html
new file mode 100644
index 0000000..d5cd679
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.media.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.media
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/media/package-summary.html" target="_top"><font size="+1"><code>android.media</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="MediaRecorder.AudioSource"></A>
+  <nobr><A HREF="android.media.MediaRecorder.AudioSource.html">MediaRecorder.AudioSource</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.os.html b/docs/html/sdk/api_diff/7/changes/pkg_android.os.html
new file mode 100644
index 0000000..bfaa1eb
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.os.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.os
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/os/package-summary.html" target="_top"><font size="+1"><code>android.os</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="Build.VERSION_CODES"></A>
+  <nobr><A HREF="android.os.Build.VERSION_CODES.html">Build.VERSION_CODES</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="PowerManager"></A>
+  <nobr><A HREF="android.os.PowerManager.html">PowerManager</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/7/changes/pkg_android.telephony.html
new file mode 100644
index 0000000..adc1ceb
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.telephony.html
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.telephony
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/telephony/package-summary.html" target="_top"><font size="+1"><code>android.telephony</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="SignalStrength"></A>
+  <nobr><A HREF="../../../../reference/android/telephony/SignalStrength.html" target="_top"><code>SignalStrength</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="NeighboringCellInfo"></A>
+  <nobr><A HREF="android.telephony.NeighboringCellInfo.html">NeighboringCellInfo</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="PhoneStateListener"></A>
+  <nobr><A HREF="android.telephony.PhoneStateListener.html">PhoneStateListener</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.view.html b/docs/html/sdk/api_diff/7/changes/pkg_android.view.html
new file mode 100644
index 0000000..40a8f57
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.view.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.view
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/view/package-summary.html" target="_top"><font size="+1"><code>android.view</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="View"></A>
+  <nobr><A HREF="android.view.View.html">View</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ViewGroup"></A>
+  <nobr><A HREF="android.view.ViewGroup.html">ViewGroup</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/7/changes/pkg_android.webkit.html
new file mode 100644
index 0000000..8c37e6f
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.webkit.html
@@ -0,0 +1,183 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.webkit
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/webkit/package-summary.html" target="_top"><font size="+1"><code>android.webkit</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Classes and Interfaces" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Classes and Interfaces</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ValueCallback"></A>
+  <nobr><A HREF="../../../../reference/android/webkit/ValueCallback.html" target="_top"><code><I>ValueCallback</I></code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="WebChromeClient.CustomViewCallback"></A>
+  <nobr><A HREF="../../../../reference/android/webkit/WebChromeClient.CustomViewCallback.html" target="_top"><code><I>WebChromeClient.CustomViewCallback</I></code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="WebSettings.ZoomDensity"></A>
+  <nobr><A HREF="../../../../reference/android/webkit/WebSettings.ZoomDensity.html" target="_top"><code>WebSettings.ZoomDensity</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="CacheManager.CacheResult"></A>
+  <nobr><A HREF="android.webkit.CacheManager.CacheResult.html">CacheManager.CacheResult</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GeolocationPermissions"></A>
+  <nobr><A HREF="android.webkit.GeolocationPermissions.html">GeolocationPermissions</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="WebChromeClient"></A>
+  <nobr><A HREF="android.webkit.WebChromeClient.html">WebChromeClient</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="WebSettings"></A>
+  <nobr><A HREF="android.webkit.WebSettings.html">WebSettings</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="WebStorage"></A>
+  <nobr><A HREF="android.webkit.WebStorage.html">WebStorage</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="WebView"></A>
+  <nobr><A HREF="android.webkit.WebView.html">WebView</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/7/changes/pkg_android.widget.html
new file mode 100644
index 0000000..e404840
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/changes/pkg_android.widget.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.widget
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">7</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">6</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2009.12.18 22:29</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/widget/package-summary.html" target="_top"><font size="+1"><code>android.widget</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="RemoteViews"></A>
+  <nobr><A HREF="android.widget.RemoteViews.html">RemoteViews</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ViewFlipper"></A>
+  <nobr><A HREF="android.widget.ViewFlipper.html">ViewFlipper</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/api_diff/7/missingSinces.txt b/docs/html/sdk/api_diff/7/missingSinces.txt
new file mode 100644
index 0000000..b95fb6b
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/missingSinces.txt
@@ -0,0 +1,80 @@
+NO DOC BLOCK: android.telephony.SignalStrength Class
+NO DOC BLOCK: android.webkit.ValueCallback Interface
+NO DOC BLOCK: android.app.WallpaperInfo Class
+NO DOC BLOCK: android.webkit.WebChromeClient.CustomViewCallback Interface
+NO DOC BLOCK: android.webkit.WebSettings.ZoomDensity Class
+NO DOC BLOCK: android.telephony.NeighboringCellInfo Constructor (int, java.lang.String, int)
+NO DOC BLOCK: android.widget.RemoteViews Method addView(int, android.widget.RemoteViews)
+NO DOC BLOCK: android.webkit.GeolocationPermissions Method allow(java.lang.String)
+NO DOC BLOCK: android.webkit.GeolocationPermissions Method clear(java.lang.String)
+NO DOC BLOCK: android.webkit.GeolocationPermissions Method clearAll()
+NO DOC BLOCK: android.webkit.WebStorage Method deleteAllData()
+NO DOC BLOCK: android.webkit.WebStorage Method deleteOrigin(java.lang.String)
+NO DOC BLOCK: android.graphics.Rect Method flattenToString()
+NO DOC BLOCK: android.webkit.WebView Method freeMemory()
+NO DOC BLOCK: android.webkit.GeolocationPermissions Method getAllowed(java.lang.String, android.webkit.ValueCallback<java.lang.Boolean>)
+NO DOC BLOCK: android.webkit.CacheManager.CacheResult Method getContentDisposition()
+NO DOC BLOCK: android.webkit.WebChromeClient Method getDefaultVideoPoster()
+NO DOC BLOCK: android.webkit.WebSettings Method getDefaultZoom()
+NO DOC BLOCK: android.webkit.WebSettings Method getDomStorageEnabled()
+NO DOC BLOCK: android.webkit.CacheManager.CacheResult Method getExpiresString()
+NO DOC BLOCK: android.webkit.GeolocationPermissions Method getInstance()
+NO DOC BLOCK: android.webkit.WebStorage Method getInstance()
+NO DOC BLOCK: android.webkit.WebSettings Method getLoadWithOverviewMode()
+NO DOC BLOCK: android.webkit.GeolocationPermissions Method getOrigins(android.webkit.ValueCallback<java.util.Set<java.lang.String>>)
+NO DOC BLOCK: android.webkit.WebStorage Method getOrigins(android.webkit.ValueCallback<java.util.Map>)
+NO DOC BLOCK: android.webkit.WebStorage Method getQuotaForOrigin(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)
+NO DOC BLOCK: android.content.Intent Method getSourceBounds()
+NO DOC BLOCK: android.webkit.WebStorage Method getUsageForOrigin(java.lang.String, android.webkit.ValueCallback<java.lang.Long>)
+NO DOC BLOCK: android.webkit.WebChromeClient Method getVideoLoadingProgressView()
+NO DOC BLOCK: android.webkit.WebChromeClient Method getVisitedHistory(android.webkit.ValueCallback<java.lang.String[]>)
+NO DOC BLOCK: android.app.WallpaperManager Method getWallpaperInfo()
+NO DOC BLOCK: android.widget.ViewFlipper Method isAutoStart()
+NO DOC BLOCK: android.view.ViewGroup Method isChildrenDrawingOrderEnabled()
+NO DOC BLOCK: android.view.View Method isOpaque()
+NO DOC BLOCK: android.os.PowerManager Method isScreenOn()
+NO DOC BLOCK: android.webkit.WebChromeClient Method onConsoleMessage(java.lang.String, int, java.lang.String)
+NO DOC BLOCK: android.telephony.PhoneStateListener Method onDataConnectionStateChanged(int, int)
+NO DOC BLOCK: android.view.View Method onDrawScrollBars(android.graphics.Canvas)
+NO DOC BLOCK: android.webkit.WebChromeClient Method onHideCustomView()
+NO DOC BLOCK: android.webkit.WebChromeClient Method onJsTimeout()
+NO DOC BLOCK: android.webkit.WebChromeClient Method onReachedMaxAppCacheSize(long, long, android.webkit.WebStorage.QuotaUpdater)
+NO DOC BLOCK: android.webkit.WebChromeClient Method onReceivedTouchIconUrl(android.webkit.WebView, java.lang.String, boolean)
+NO DOC BLOCK: android.webkit.WebChromeClient Method onShowCustomView(android.view.View, android.webkit.WebChromeClient.CustomViewCallback)
+NO DOC BLOCK: android.telephony.PhoneStateListener Method onSignalStrengthsChanged(android.telephony.SignalStrength)
+NO DOC BLOCK: android.widget.RemoteViews Method removeAllViews(int)
+NO DOC BLOCK: android.app.WallpaperManager Method sendWallpaperCommand(android.os.IBinder, java.lang.String, int, int, int, android.os.Bundle)
+NO DOC BLOCK: android.webkit.WebSettings Method setAppCacheEnabled(boolean)
+NO DOC BLOCK: android.webkit.WebSettings Method setAppCacheMaxSize(long)
+NO DOC BLOCK: android.webkit.WebSettings Method setAppCachePath(java.lang.String)
+NO DOC BLOCK: android.widget.ViewFlipper Method setAutoStart(boolean)
+NO DOC BLOCK: android.view.ViewGroup Method setChildrenDrawingOrderEnabled(boolean)
+NO DOC BLOCK: android.webkit.WebSettings Method setDefaultZoom(android.webkit.WebSettings.ZoomDensity)
+NO DOC BLOCK: android.webkit.WebSettings Method setDomStorageEnabled(boolean)
+NO DOC BLOCK: android.webkit.WebSettings Method setLoadWithOverviewMode(boolean)
+NO DOC BLOCK: android.webkit.WebStorage Method setQuotaForOrigin(java.lang.String, long)
+NO DOC BLOCK: android.content.Intent Method setSourceBounds(android.graphics.Rect)
+NO DOC BLOCK: android.app.WallpaperManager Method setWallpaperOffsetSteps(float, float)
+NO DOC BLOCK: android.graphics.Rect Method unflattenFromString(java.lang.String)
+NO DOC BLOCK: android.app.WallpaperManager Field ACTION_LIVE_WALLPAPER_CHOOSER
+NO DOC BLOCK: android.content.Intent Field ACTION_LOCALE_CHANGED
+NO DOC BLOCK: android.R.attr Field author
+NO DOC BLOCK: android.R.attr Field autoStart
+NO DOC BLOCK: android.media.MediaRecorder.AudioSource Field CAMCORDER
+NO DOC BLOCK: android.app.WallpaperManager Field COMMAND_DROP
+NO DOC BLOCK: android.app.WallpaperManager Field COMMAND_TAP
+NO DOC BLOCK: android.os.Build.VERSION_CODES Field ECLAIR_MR1
+NO DOC BLOCK: android.content.Intent Field EXTRA_CHANGED_COMPONENT_NAME_LIST
+NO DOC BLOCK: android.content.pm.PackageManager Field FEATURE_CAMERA
+NO DOC BLOCK: android.content.pm.PackageManager Field FEATURE_CAMERA_AUTOFOCUS
+NO DOC BLOCK: android.content.pm.PackageManager Field FEATURE_CAMERA_FLASH
+NO DOC BLOCK: android.content.pm.PackageManager Field FEATURE_LIVE_WALLPAPER
+NO DOC BLOCK: android.content.pm.PackageManager Field FEATURE_SENSOR_LIGHT
+NO DOC BLOCK: android.content.pm.PackageManager Field FEATURE_SENSOR_PROXIMITY
+NO DOC BLOCK: android.content.pm.PackageManager Field FEATURE_TELEPHONY
+NO DOC BLOCK: android.content.pm.PackageManager Field FEATURE_TELEPHONY_CDMA
+NO DOC BLOCK: android.content.pm.PackageManager Field FEATURE_TELEPHONY_GSM
+NO DOC BLOCK: android.content.pm.PackageManager Field FEATURE_TOUCHSCREEN_MULTITOUCH
+NO DOC BLOCK: android.content.Intent Field FILL_IN_SOURCE_BOUNDS
+NO DOC BLOCK: android.telephony.PhoneStateListener Field LISTEN_SIGNAL_STRENGTHS
+NO DOC BLOCK: android.media.MediaRecorder.AudioSource Field VOICE_RECOGNITION
diff --git a/docs/html/sdk/api_diff/7/stylesheet-jdiff.css b/docs/html/sdk/api_diff/7/stylesheet-jdiff.css
new file mode 100644
index 0000000..edafaa3
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/stylesheet-jdiff.css
@@ -0,0 +1,44 @@
+
+/* (http://www.jdiff.org) */
+
+div.and-diff-id {border: 1px solid #eee;position:relative;float:right;clear:both;padding:0px;}
+table.diffspectable {border:1px;padding:0px;margin:0px;}
+.diffspechead {background-color:#eee;}
+.diffspectable tr {border:0px;padding:0px;}
+.diffspectable td  {background-color:eee;border:0px;font-size:90%;font-weight:normal;padding:0px;padding-left:1px;padding-right:1px;text-align:center;color:777;}
+td.diffvalueold {color:orange;background-color:white;border:0px;font-size:80%;font-style:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}
+td.diffvaluenew {color:green;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}
+td.diffvalue {color:444;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}
+td.diffspec {background-color:white;border:0px;font-size:80%;font-weight:normal;padding:1px;color:444;text-align:right;padding-right:.5em;line-height:.95em;}
+tt {font-size:11pt;font-family:monospace;}
+.indexHeader {
+  font-size:96%;
+  line-height:.8em;}
+.jdiffIndex td {
+  font-size:96%;
+  xline-height:.8em;
+  padding:2px;
+  padding-left:1em;}
+.indexText {
+  font-size:100%;
+  padding-left:1em;}
+#indexTableCaption {
+  font-size:96%;
+  margin-top:.25em;
+  margin-bottom:0;
+  }
+.hiddenlink {
+  font-size:96%;
+  line-height:.8em;
+  text-decoration:none;}
+a {
+  text-decoration:none;}
+a:hover {
+  text-decoration:underline;}
+.indexBox {
+  border: 1px solid red;
+  margin:1em 0 0 0;}
+.letterIndexHead {
+  font-size: 1.5em;font-weight:9;
+  margin:0 0 0em 0;
+  border: 1px solid red;}
diff --git a/docs/html/sdk/api_diff/7/user_comments_for_6_to_7.xml b/docs/html/sdk/api_diff/7/user_comments_for_6_to_7.xml
new file mode 100644
index 0000000..8a7495a
--- /dev/null
+++ b/docs/html/sdk/api_diff/7/user_comments_for_6_to_7.xml
@@ -0,0 +1,739 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<comments
+  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+  xsi:noNamespaceSchemaLocation='comments.xsd'
+  name="6_to_7"
+  jdversion="1.1.0">
+
+<!-- Use this file to enter an API change description. For example, when you remove a class, 
+     you can enter a comment for that class that points developers to the replacement class. 
+     You can also provide a change summary for modified API, to give an overview of the changes 
+     why they were made, workarounds, etc.  -->
+
+<!-- When the API diffs report is generated, the comments in this file get added to the tables of 
+     removed, added, and modified packages, classes, methods, and fields. This file does not ship 
+     with the final report. -->
+
+<!-- The id attribute in an identifier element identifies the change as noted in the report. 
+     An id has the form package[.class[.[ctor|method|field].signature]], where [] indicates optional 
+     text. A comment element can have multiple identifier elements, which will will cause the same 
+     text to appear at each place in the report, but will be converted to separate comments when the 
+     comments file is used. -->
+
+<!-- HTML tags in the text field will appear in the report. You also need to close p HTML elements, 
+     used for paragraphs - see the top-level documentation. -->
+
+<!-- You can include standard javadoc links in your change descriptions. You can use the @first command  
+     to cause jdiff to include the first line of the API documentation. You also need to close p HTML 
+     elements, used for paragraphs - see the top-level documentation. -->
+
+<comment>
+  <identifier id="android"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.Manifest.permission"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.Manifest.permission.SET_PREFERRED_APPLICATIONS"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.R.attr"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.R.attr.author"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.R.attr.autoStart"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.app"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.app.WallpaperInfo"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.app.WallpaperManager"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.app.WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.app.WallpaperManager.COMMAND_DROP"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.app.WallpaperManager.COMMAND_TAP"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.app.WallpaperManager.getWallpaperInfo_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.app.WallpaperManager.sendWallpaperCommand_added(android.os.IBinder, java.lang.String, int, int, int, android.os.Bundle)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.app.WallpaperManager.setWallpaperOffsetSteps_added(float, float)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.Intent"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.Intent.ACTION_LOCALE_CHANGED"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.Intent.FILL_IN_SOURCE_BOUNDS"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.Intent.getSourceBounds_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.Intent.setSourceBounds_added(android.graphics.Rect)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.FEATURE_CAMERA"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.FEATURE_CAMERA_AUTOFOCUS"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.FEATURE_CAMERA_FLASH"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.FEATURE_LIVE_WALLPAPER"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.FEATURE_SENSOR_LIGHT"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.FEATURE_SENSOR_PROXIMITY"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.FEATURE_TELEPHONY"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.FEATURE_TELEPHONY_CDMA"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.FEATURE_TELEPHONY_GSM"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.addPackageToPreferred_changed(java.lang.String)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.content.pm.PackageManager.removePackageFromPreferred_changed(java.lang.String)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.graphics"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.graphics.Rect"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.graphics.Rect.flattenToString_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.graphics.Rect.unflattenFromString_added(java.lang.String)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.media"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.media.MediaRecorder.AudioSource"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.media.MediaRecorder.AudioSource.CAMCORDER"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.os"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.os.Build.VERSION_CODES"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.os.Build.VERSION_CODES.ECLAIR_MR1"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.os.PowerManager"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.os.PowerManager.isScreenOn_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.service.wallpaper"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.telephony"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.telephony.NeighboringCellInfo"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.telephony.NeighboringCellInfo.ctor_added(int, java.lang.String, int)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.telephony.PhoneStateListener"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTH"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTHS"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.telephony.PhoneStateListener.onDataConnectionStateChanged_added(int, int)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.telephony.PhoneStateListener.onSignalStrengthsChanged_added(android.telephony.SignalStrength)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.telephony.SignalStrength"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.view"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.view.View"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.view.View.isOpaque_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.view.View.onDrawScrollBars_added(android.graphics.Canvas)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.view.ViewGroup"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.view.ViewGroup.isChildrenDrawingOrderEnabled_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.view.ViewGroup.setChildrenDrawingOrderEnabled_added(boolean)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.CacheManager.CacheResult"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.CacheManager.CacheResult.getContentDisposition_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.CacheManager.CacheResult.getExpiresString_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.GeolocationPermissions"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.GeolocationPermissions.allow_added(java.lang.String)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.GeolocationPermissions.clearAll_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.GeolocationPermissions.clear_added(java.lang.String)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.GeolocationPermissions.getAllowed_added(java.lang.String, android.webkit.ValueCallback&lt;java.lang.Boolean&gt;)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.GeolocationPermissions.getInstance_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.GeolocationPermissions.getOrigins_added(android.webkit.ValueCallback&lt;java.util.Set&lt;java.lang.String&gt;&gt;)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.ValueCallback"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient.CustomViewCallback"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient.getDefaultVideoPoster_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient.getVideoLoadingProgressView_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient.getVisitedHistory_added(android.webkit.ValueCallback&lt;java.lang.String[]&gt;)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient.onConsoleMessage_added(java.lang.String, int, java.lang.String)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient.onHideCustomView_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient.onJsTimeout_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient.onReachedMaxAppCacheSize_added(long, long, android.webkit.WebStorage.QuotaUpdater)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient.onReceivedTouchIconUrl_added(android.webkit.WebView, java.lang.String, boolean)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebChromeClient.onShowCustomView_added(android.view.View, android.webkit.WebChromeClient.CustomViewCallback)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings.ZoomDensity"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings.getDefaultZoom_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings.getDomStorageEnabled_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings.getLoadWithOverviewMode_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings.setAppCacheEnabled_added(boolean)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings.setAppCacheMaxSize_added(long)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings.setAppCachePath_added(java.lang.String)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings.setDefaultZoom_added(android.webkit.WebSettings.ZoomDensity)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings.setDomStorageEnabled_added(boolean)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebSettings.setLoadWithOverviewMode_added(boolean)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebStorage"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebStorage.deleteAllData_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebStorage.deleteOrigin_added(java.lang.String)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebStorage.getInstance_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebStorage.getOrigins_added(android.webkit.ValueCallback&lt;java.util.Map&gt;)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebStorage.getQuotaForOrigin_added(java.lang.String, android.webkit.ValueCallback&lt;java.lang.Long&gt;)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebStorage.getUsageForOrigin_added(java.lang.String, android.webkit.ValueCallback&lt;java.lang.Long&gt;)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebStorage.setQuotaForOrigin_added(java.lang.String, long)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebView"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.webkit.WebView.freeMemory_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.widget"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.widget.RemoteViews"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.widget.RemoteViews.addView_added(int, android.widget.RemoteViews)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.widget.RemoteViews.removeAllViews_added(int)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.widget.ViewFlipper"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.widget.ViewFlipper.isAutoStart_added()"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+<comment>
+  <identifier id="android.widget.ViewFlipper.setAutoStart_added(boolean)"/>
+  <text>
+    InsertCommentsHere
+  </text>
+</comment>
+
+</comments>
diff --git a/docs/html/sitemap.txt b/docs/html/sitemap.txt
index a227d09..f82b2fe 100644
--- a/docs/html/sitemap.txt
+++ b/docs/html/sitemap.txt
@@ -1,11 +1,87 @@
+http://developer.android.com/
 http://developer.android.com/index.html
-http://developer.android.com/favicon.ico
-http://developer.android.com/sdk/1.5_r1/index.html
+http://developer.android.com/sdk/index.html
 http://developer.android.com/guide/index.html
 http://developer.android.com/reference/packages.html
-http://developer.android.com/community/index.html
-http://developer.android.com/sdk/index.html
+http://developer.android.com/resources/index.html
+http://developer.android.com/videos/index.html
+http://developer.android.com/resources/dashboard/platform-versions.html
 http://developer.android.com/license.html
+http://developer.android.com/sdk/terms.html
+http://developer.android.com/resources/community-groups.html
+http://developer.android.com/resources/community-more.html
+http://developer.android.com/resources/articles/index.html
+http://developer.android.com/resources/articles/avoiding-memory-leaks.html
+http://developer.android.com/resources/articles/backward-compatibility.html
+http://developer.android.com/resources/articles/can-i-use-this-intent.html
+http://developer.android.com/resources/articles/creating-input-method.html
+http://developer.android.com/resources/articles/drawable-mutations.html
+http://developer.android.com/resources/articles/faster-screen-orientation-change.html
+http://developer.android.com/resources/articles/future-proofing.html
+http://developer.android.com/resources/articles/gestures.html
+http://developer.android.com/resources/articles/glsurfaceview.html
+http://developer.android.com/resources/articles/layout-tricks-reuse.html
+http://developer.android.com/resources/articles/layout-tricks-efficiency.html
+http://developer.android.com/resources/articles/layout-tricks-stubs.html
+http://developer.android.com/resources/articles/layout-tricks-merge.html
+http://developer.android.com/resources/articles/listview-backgrounds.html
+http://developer.android.com/resources/articles/live-folders.html
+http://developer.android.com/resources/articles/on-screen-inputs.html
+http://developer.android.com/resources/articles/painless-threading.html
+http://developer.android.com/resources/articles/qsb.html
+http://developer.android.com/resources/articles/touch-mode.html
+http://developer.android.com/resources/articles/track-mem.html
+http://developer.android.com/resources/articles/ui-1.5.html
+http://developer.android.com/resources/articles/ui-1.6.html
+http://developer.android.com/resources/articles/timed-ui-updates.html
+http://developer.android.com/resources/articles/tts.html
+http://developer.android.com/resources/articles/using-webviews.html
+http://developer.android.com/resources/articles/wikinotes-linkify.html
+http://developer.android.com/resources/articles/wikinotes-intents.html
+http://developer.android.com/resources/articles/window-bg-speed.html
+http://developer.android.com/resources/articles/zipalign.html
+http://developer.android.com/resources/tutorials/hello-world.html
+http://developer.android.com/resources/tutorials/views/index.html
+http://developer.android.com/resources/tutorials/localization/index.html
+http://developer.android.com/resources/tutorials/notepad/index.html
+http://developer.android.com/resources/samples/index.html
+http://developer.android.com/resources/samples/ApiDemos/index.html
+http://developer.android.com/resources/samples/BluetoothChat/index.html
+http://developer.android.com/resources/samples/ContactManager/index.html
+http://developer.android.com/resources/samples/Home/index.html
+http://developer.android.com/resources/samples/JetBoy/index.html
+http://developer.android.com/resources/samples/LunarLander/index.html
+http://developer.android.com/resources/samples/MultiResolution/index.html
+http://developer.android.com/resources/samples/NotePad/index.html
+http://developer.android.com/resources/samples/SearchableDictionary/index.html
+http://developer.android.com/resources/samples/Snake/index.html
+http://developer.android.com/resources/samples/SoftKeyboard/index.html
+http://developer.android.com/resources/samples/Wiktionary/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/index.html
+http://developer.android.com/resources/faq/commontasks.html
+http://developer.android.com/resources/faq/troubleshooting.html
+http://developer.android.com/resources/faq/index.html
+http://developer.android.com/resources/faq/framework.html
+http://developer.android.com/resources/faq/licensingandoss.html
+http://developer.android.com/resources/faq/security.html
+http://developer.android.com/sdk/installing.html
+http://developer.android.com/sdk/adding-components.html
+http://developer.android.com/sdk/android-2.0.1.html
+http://developer.android.com/sdk/android-1.6.html
+http://developer.android.com/sdk/android-1.5.html
+http://developer.android.com/sdk/android-2.0.html
+http://developer.android.com/sdk/android-1.1.html
+http://developer.android.com/sdk/tools-notes.html
+http://developer.android.com/sdk/win-usb.html
+http://developer.android.com/sdk/eclipse-adt.html
+http://developer.android.com/sdk/adt-notes.html
+http://developer.android.com/sdk/ndk/1.6_r1/index.html
+http://developer.android.com/sdk/requirements.html
+http://developer.android.com/sdk/RELEASENOTES.html
+http://developer.android.com/sdk/older_releases.html
+http://developer.android.com/sdk/download.html?v=android-sdk_r04-windows.zip
+http://developer.android.com/sdk/download.html?v=android-sdk_r04-mac_86.zip
+http://developer.android.com/sdk/download.html?v=android-sdk_r04-linux_86.tgz
 http://developer.android.com/guide/basics/what-is-android.html
 http://developer.android.com/guide/topics/fundamentals.html
 http://developer.android.com/guide/topics/ui/index.html
@@ -22,6 +98,7 @@
 http://developer.android.com/guide/topics/resources/index.html
 http://developer.android.com/guide/topics/resources/resources-i18n.html
 http://developer.android.com/guide/topics/resources/available-resources.html
+http://developer.android.com/guide/topics/resources/localization.html
 http://developer.android.com/guide/topics/intents/intents-filters.html
 http://developer.android.com/guide/topics/data/data-storage.html
 http://developer.android.com/guide/topics/providers/content-providers.html
@@ -38,13 +115,16 @@
 http://developer.android.com/guide/topics/manifest/intent-filter-element.html
 http://developer.android.com/guide/topics/manifest/manifest-element.html
 http://developer.android.com/guide/topics/manifest/meta-data-element.html
+http://developer.android.com/guide/topics/manifest/path-permission-element.html
 http://developer.android.com/guide/topics/manifest/permission-element.html
 http://developer.android.com/guide/topics/manifest/permission-group-element.html
 http://developer.android.com/guide/topics/manifest/permission-tree-element.html
 http://developer.android.com/guide/topics/manifest/provider-element.html
 http://developer.android.com/guide/topics/manifest/receiver-element.html
 http://developer.android.com/guide/topics/manifest/service-element.html
+http://developer.android.com/guide/topics/manifest/supports-screens-element.html
 http://developer.android.com/guide/topics/manifest/uses-configuration-element.html
+http://developer.android.com/guide/topics/manifest/uses-feature-element.html
 http://developer.android.com/guide/topics/manifest/uses-library-element.html
 http://developer.android.com/guide/topics/manifest/uses-permission-element.html
 http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
@@ -54,6 +134,7 @@
 http://developer.android.com/guide/topics/media/index.html
 http://developer.android.com/guide/topics/location/index.html
 http://developer.android.com/guide/topics/appwidgets/index.html
+http://developer.android.com/guide/topics/wireless/bluetooth.html
 http://developer.android.com/guide/developing/eclipse-adt.html
 http://developer.android.com/guide/developing/other-ide.html
 http://developer.android.com/guide/developing/device.html
@@ -68,53 +149,40 @@
 http://developer.android.com/guide/developing/tools/draw9patch.html
 http://developer.android.com/guide/developing/tools/emulator.html
 http://developer.android.com/guide/developing/tools/hierarchy-viewer.html
+http://developer.android.com/guide/developing/tools/layoutopt.html
 http://developer.android.com/guide/developing/tools/monkey.html
 http://developer.android.com/guide/developing/tools/traceview.html
+http://developer.android.com/guide/developing/tools/zipalign.html
 http://developer.android.com/guide/publishing/app-signing.html
 http://developer.android.com/guide/publishing/versioning.html
 http://developer.android.com/guide/publishing/preparing.html
 http://developer.android.com/guide/publishing/publishing.html
+http://developer.android.com/guide/practices/screens_support.html
 http://developer.android.com/guide/practices/ui_guidelines/index.html
 http://developer.android.com/guide/practices/ui_guidelines/icon_design.html
 http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
+http://developer.android.com/guide/practices/ui_guidelines/activity_task_design.html
+http://developer.android.com/guide/practices/ui_guidelines/menu_design.html
 http://developer.android.com/guide/practices/design/performance.html
 http://developer.android.com/guide/practices/design/responsiveness.html
 http://developer.android.com/guide/practices/design/seamlessness.html
-http://developer.android.com/guide/tutorials/hello-world.html
-http://developer.android.com/guide/tutorials/views/index.html
-http://developer.android.com/guide/tutorials/notepad/index.html
-http://developer.android.com/guide/samples/index.html
-http://developer.android.com/guide/samples/ApiDemos/index.html
-http://developer.android.com/guide/samples/LunarLander/index.html
-http://developer.android.com/guide/samples/NotePad/index.html
+http://developer.android.com/guide/appendix/api-levels.html
 http://developer.android.com/guide/appendix/media-formats.html
 http://developer.android.com/guide/appendix/g-app-intents.html
 http://developer.android.com/guide/appendix/glossary.html
-http://developer.android.com/guide/appendix/faq/index.html
-http://developer.android.com/sdk/terms.html
-http://developer.android.com/sdk/1.5_r1/installing.html
-http://developer.android.com/sdk/1.5_r1/upgrading.html
-http://developer.android.com/sdk/1.5_r1/requirements.html
-http://developer.android.com/sdk/RELEASENOTES.html
-http://developer.android.com/sdk/android-1.5.html
-http://developer.android.com/sdk/android-1.1.html
-http://developer.android.com/sdk/1.1_r1/index.html
-http://developer.android.com/sdk/1.0_r2/index.html
-http://developer.android.com/sdk/1.0_r1/index.html
-http://developer.android.com/sdk/older_releases.html
-http://developer.android.com/sdk/download.html?v=android-sdk-windows-1.5_r1.zip
-http://developer.android.com/sdk/download.html?v=android-sdk-mac_x86-1.5_r1.zip
-http://developer.android.com/sdk/download.html?v=android-sdk-linux_x86-1.5_r1.zip
-http://developer.android.com/reference/android/location/Geocoder.html
 http://developer.android.com/reference/classes.html
 http://developer.android.com/reference/android/package-summary.html
+http://developer.android.com/reference/android/accessibilityservice/package-summary.html
+http://developer.android.com/reference/android/accounts/package-summary.html
 http://developer.android.com/reference/android/app/package-summary.html
 http://developer.android.com/reference/android/appwidget/package-summary.html
+http://developer.android.com/reference/android/bluetooth/package-summary.html
 http://developer.android.com/reference/android/content/package-summary.html
 http://developer.android.com/reference/android/content/pm/package-summary.html
 http://developer.android.com/reference/android/content/res/package-summary.html
 http://developer.android.com/reference/android/database/package-summary.html
 http://developer.android.com/reference/android/database/sqlite/package-summary.html
+http://developer.android.com/reference/android/gesture/package-summary.html
 http://developer.android.com/reference/android/graphics/package-summary.html
 http://developer.android.com/reference/android/graphics/drawable/package-summary.html
 http://developer.android.com/reference/android/graphics/drawable/shapes/package-summary.html
@@ -131,7 +199,9 @@
 http://developer.android.com/reference/android/provider/package-summary.html
 http://developer.android.com/reference/android/sax/package-summary.html
 http://developer.android.com/reference/android/speech/package-summary.html
+http://developer.android.com/reference/android/speech/tts/package-summary.html
 http://developer.android.com/reference/android/telephony/package-summary.html
+http://developer.android.com/reference/android/telephony/cdma/package-summary.html
 http://developer.android.com/reference/android/telephony/gsm/package-summary.html
 http://developer.android.com/reference/android/test/package-summary.html
 http://developer.android.com/reference/android/test/mock/package-summary.html
@@ -143,6 +213,7 @@
 http://developer.android.com/reference/android/text/util/package-summary.html
 http://developer.android.com/reference/android/util/package-summary.html
 http://developer.android.com/reference/android/view/package-summary.html
+http://developer.android.com/reference/android/view/accessibility/package-summary.html
 http://developer.android.com/reference/android/view/animation/package-summary.html
 http://developer.android.com/reference/android/view/inputmethod/package-summary.html
 http://developer.android.com/reference/android/webkit/package-summary.html
@@ -236,237 +307,167 @@
 http://developer.android.com/reference/org/xmlpull/v1/package-summary.html
 http://developer.android.com/reference/org/xmlpull/v1/sax2/package-summary.html
 http://developer.android.com/reference/org/apache/http/message/AbstractHttpMessage.html
-http://developer.android.com/reference/android/view/ViewGroup.html
+http://developer.android.com/reference/android/app/Activity.html
+http://developer.android.com/reference/android/view/View.html
+http://developer.android.com/reference/android/widget/TextView.html
+http://developer.android.com/reference/android/content/Context.html
+http://developer.android.com/resources/samples/Wiktionary/res/index.html
+http://developer.android.com/resources/samples/Wiktionary/src/index.html
+http://developer.android.com/resources/samples/Wiktionary/AndroidManifest.html
+http://developer.android.com/reference/android/app/Application.html
+http://developer.android.com/reference/android/graphics/drawable/Drawable.html
+http://developer.android.com/reference/java/lang/ref/WeakReference.html
+http://developer.android.com/resources/samples/ApiDemos/assets/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/index.html
+http://developer.android.com/resources/samples/ApiDemos/tests/index.html
+http://developer.android.com/resources/samples/ApiDemos/AndroidManifest.html
+http://developer.android.com/reference/android/provider/LiveFolders.html
+http://developer.android.com/resources/samples/NotePad/res/index.html
+http://developer.android.com/resources/samples/NotePad/src/index.html
+http://developer.android.com/resources/samples/NotePad/tests/index.html
+http://developer.android.com/resources/samples/NotePad/AndroidManifest.html
 http://developer.android.com/reference/android/widget/FrameLayout.html
-http://developer.android.com/reference/android/widget/LinearLayout.html
-http://developer.android.com/guide/tutorials/views/hello-linearlayout.html
-http://developer.android.com/reference/android/widget/TableLayout.html
-http://developer.android.com/reference/android/widget/TableRow.html
-http://developer.android.com/guide/tutorials/views/hello-tablelayout.html
-http://developer.android.com/reference/android/widget/AbsoluteLayout.html
-http://developer.android.com/reference/android/widget/RelativeLayout.html
-http://developer.android.com/guide/tutorials/views/hello-relativelayout.html
-http://developer.android.com/reference/android/widget/Gallery.html
-http://developer.android.com/reference/android/widget/GridView.html
-http://developer.android.com/reference/android/widget/ListView.html
-http://developer.android.com/reference/android/widget/ScrollView.html
-http://developer.android.com/reference/android/widget/Spinner.html
-http://developer.android.com/reference/android/view/SurfaceView.html
-http://developer.android.com/reference/android/widget/TabHost.html
-http://developer.android.com/reference/android/widget/ViewFlipper.html
-http://developer.android.com/reference/android/widget/ViewSwitcher.html
+http://developer.android.com/reference/android/widget/ImageView.html
+http://developer.android.com/reference/android/view/LayoutInflater.html
+http://developer.android.com/reference/android/view/View.OnClickListener.html
+http://developer.android.com/reference/android/os/Handler.html
+http://developer.android.com/reference/android/os/AsyncTask.html
+http://developer.android.com/reference/android/app/SearchManager.html
+http://developer.android.com/reference/android/content/ContentProvider.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/index.html
+http://developer.android.com/resources/samples/SearchableDictionary/src/index.html
+http://developer.android.com/resources/samples/SearchableDictionary/AndroidManifest.html
+http://developer.android.com/reference/android/view/ContextThemeWrapper.html
+http://developer.android.com/reference/android/R.style.html
+http://developer.android.com/reference/android/app/AliasActivity.html
+http://developer.android.com/reference/android/util/Log.html
+http://developer.android.com/reference/android/os/Debug.html
 http://developer.android.com/reference/android/R.attr.html
 http://developer.android.com/reference/android/R.styleable.html
-http://developer.android.com/reference/android/content/Context.html
 http://developer.android.com/reference/java/lang/SecurityException.html
 http://developer.android.com/reference/android/Manifest.permission.html
 http://developer.android.com/reference/android/Manifest.permission_group.html
-http://developer.android.com/reference/android/app/Activity.html
 http://developer.android.com/reference/android/app/Service.html
 http://developer.android.com/reference/android/content/BroadcastReceiver.html
-http://developer.android.com/reference/android/content/ContentProvider.html
 http://developer.android.com/reference/android/content/ContentResolver.html
 http://developer.android.com/reference/android/content/pm/PackageManager.html
 http://developer.android.com/reference/android/content/Intent.html
-http://developer.android.com/reference/android/os/Debug.html
+http://developer.android.com/reference/java/util/zip/Checksum.html
+http://developer.android.com/reference/java/util/zip/Adler32.html
+http://developer.android.com/reference/java/util/zip/CheckedInputStream.html
+http://developer.android.com/reference/java/util/zip/CheckedOutputStream.html
+http://developer.android.com/reference/java/util/zip/CRC32.html
+http://developer.android.com/reference/java/util/zip/Deflater.html
+http://developer.android.com/reference/java/util/zip/DeflaterOutputStream.html
+http://developer.android.com/reference/java/util/zip/GZIPInputStream.html
+http://developer.android.com/reference/java/util/zip/GZIPOutputStream.html
+http://developer.android.com/reference/java/util/zip/Inflater.html
+http://developer.android.com/reference/java/util/zip/InflaterInputStream.html
+http://developer.android.com/reference/java/util/zip/ZipEntry.html
+http://developer.android.com/reference/java/util/zip/ZipFile.html
+http://developer.android.com/reference/java/util/zip/ZipInputStream.html
+http://developer.android.com/reference/java/util/zip/ZipOutputStream.html
+http://developer.android.com/reference/java/util/zip/DataFormatException.html
+http://developer.android.com/reference/java/util/zip/ZipException.html
+http://developer.android.com/reference/java/util/zip/package-descr.html
+http://developer.android.com/reference/android/os/Parcelable.html
+http://developer.android.com/reference/android/os/Parcelable.Creator.html
+http://developer.android.com/reference/android/graphics/Rect.html
+http://developer.android.com/reference/android/os/Parcel.html
+http://developer.android.com/reference/android/content/ServiceConnection.html
+http://developer.android.com/reference/android/os/IBinder.html
+http://developer.android.com/reference/android/os/DeadObjectException.html
+http://developer.android.com/reference/org/apache/http/impl/conn/AbstractClientConnAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPooledConnAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPoolEntry.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnectionOperator.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultHttpRoutePlanner.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultResponseParser.html
+http://developer.android.com/reference/org/apache/http/impl/conn/IdleConnectionHandler.html
+http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionInputBuffer.html
+http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionOutputBuffer.html
+http://developer.android.com/reference/org/apache/http/impl/conn/ProxySelectorRoutePlanner.html
+http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.html
+http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.ConnAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.PoolEntry.html
+http://developer.android.com/reference/org/apache/http/impl/conn/Wire.html
+http://developer.android.com/reference/org/apache/http/conn/OperatedClientConnection.html
+http://developer.android.com/reference/org/apache/http/conn/ManagedClientConnection.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionOperator.html
+http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoutePlanner.html
+http://developer.android.com/reference/android/view/ViewGroup.html
+http://developer.android.com/reference/android/widget/Button.html
+http://developer.android.com/reference/android/widget/EditText.html
+http://developer.android.com/reference/android/widget/ListView.html
+http://developer.android.com/reference/android/widget/CheckBox.html
+http://developer.android.com/reference/android/widget/RadioButton.html
+http://developer.android.com/reference/android/widget/Gallery.html
+http://developer.android.com/reference/android/widget/Spinner.html
+http://developer.android.com/reference/android/widget/AutoCompleteTextView.html
+http://developer.android.com/reference/android/widget/ImageSwitcher.html
+http://developer.android.com/reference/android/widget/TextSwitcher.html
+http://developer.android.com/reference/android/widget/LinearLayout.html
+http://developer.android.com/reference/android/widget/RelativeLayout.html
+http://developer.android.com/reference/android/app/ListActivity.html
 http://developer.android.com/reference/android/graphics/Canvas.html
-http://developer.android.com/reference/android/app/Dialog.html
-http://developer.android.com/reference/android/view/Surface.html
-http://developer.android.com/reference/android/R.style.html
-http://developer.android.com/reference/android/view/View.html
-http://developer.android.com/reference/android/view/Window.html
-http://developer.android.com/reference/android/os/PatternMatcher.html
-http://developer.android.com/reference/android/view/ContextThemeWrapper.html
-http://developer.android.com/reference/android/app/Instrumentation.html
-http://developer.android.com/reference/android/util/Log.html
-http://developer.android.com/reference/android/graphics/drawable/Drawable.html
+http://developer.android.com/reference/android/view/SurfaceView.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_view_1.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html
+http://developer.android.com/reference/java/util/regex/MatchResult.html
+http://developer.android.com/reference/java/util/regex/Matcher.html
+http://developer.android.com/reference/java/util/regex/Pattern.html
+http://developer.android.com/reference/java/util/regex/PatternSyntaxException.html
+http://developer.android.com/reference/java/util/regex/package-descr.html
+http://developer.android.com/reference/android/text/Editable.html
+http://developer.android.com/reference/android/text/GetChars.html
+http://developer.android.com/reference/android/text/Html.ImageGetter.html
+http://developer.android.com/reference/android/text/Html.TagHandler.html
+http://developer.android.com/reference/android/text/InputFilter.html
+http://developer.android.com/reference/android/text/InputType.html
+http://developer.android.com/reference/android/text/NoCopySpan.html
+http://developer.android.com/reference/android/text/ParcelableSpan.html
+http://developer.android.com/reference/android/text/Spannable.html
+http://developer.android.com/reference/android/text/Spanned.html
+http://developer.android.com/reference/android/text/SpanWatcher.html
+http://developer.android.com/reference/android/text/TextUtils.EllipsizeCallback.html
+http://developer.android.com/reference/android/text/TextUtils.StringSplitter.html
+http://developer.android.com/reference/android/text/TextWatcher.html
+http://developer.android.com/reference/android/text/AlteredCharSequence.html
+http://developer.android.com/reference/android/text/AndroidCharacter.html
+http://developer.android.com/reference/android/text/Annotation.html
+http://developer.android.com/reference/android/text/AutoText.html
+http://developer.android.com/reference/android/text/BoringLayout.html
+http://developer.android.com/reference/android/text/BoringLayout.Metrics.html
+http://developer.android.com/reference/android/text/ClipboardManager.html
+http://developer.android.com/reference/android/text/DynamicLayout.html
+http://developer.android.com/reference/android/text/Editable.Factory.html
+http://developer.android.com/reference/android/text/Html.html
+http://developer.android.com/reference/android/text/InputFilter.AllCaps.html
+http://developer.android.com/reference/android/text/InputFilter.LengthFilter.html
+http://developer.android.com/reference/android/text/Layout.html
+http://developer.android.com/reference/android/text/Layout.Directions.html
+http://developer.android.com/reference/android/text/LoginFilter.html
+http://developer.android.com/reference/android/text/LoginFilter.PasswordFilterGMail.html
+http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGeneric.html
+http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGMail.html
+http://developer.android.com/reference/android/text/NoCopySpan.Concrete.html
+http://developer.android.com/reference/android/text/Selection.html
+http://developer.android.com/reference/android/text/Spannable.Factory.html
+http://developer.android.com/reference/android/text/SpannableString.html
+http://developer.android.com/reference/android/text/SpannableStringBuilder.html
+http://developer.android.com/reference/android/text/SpannedString.html
+http://developer.android.com/reference/android/text/StaticLayout.html
+http://developer.android.com/reference/android/text/TextPaint.html
+http://developer.android.com/reference/android/text/TextUtils.html
+http://developer.android.com/reference/android/text/TextUtils.SimpleStringSplitter.html
+http://developer.android.com/reference/android/text/Layout.Alignment.html
+http://developer.android.com/reference/android/text/TextUtils.TruncateAt.html
+http://developer.android.com/reference/android/text/package-descr.html
 http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html
 http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/PictureDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html
-http://developer.android.com/reference/android/widget/ImageView.html
-http://developer.android.com/reference/android/content/res/Resources.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/OvalShape.html
-http://developer.android.com/reference/android/graphics/drawable/NinePatchDrawable.html
-http://developer.android.com/reference/android/view/animation/AnimationSet.html
-http://developer.android.com/reference/android/view/animation/Animation.html
-http://developer.android.com/reference/android/view/animation/Interpolator.html
-http://developer.android.com/reference/android/view/animation/AccelerateInterpolator.html
-http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
-http://developer.android.com/guide/appendix/faq/troubleshooting.html
-http://developer.android.com/reference/android/database/Cursor.html
-http://developer.android.com/reference/android/net/Uri.html
-http://developer.android.com/reference/android/content/ContentUris.html
-http://developer.android.com/reference/android/provider/Contacts.Phones.html
-http://developer.android.com/reference/android/provider/BaseColumns.html
-http://developer.android.com/reference/android/provider/Contacts.PeopleColumns.html
-http://developer.android.com/reference/android/provider/Contacts.PhonesColumns.html
-http://developer.android.com/reference/android/provider/Contacts.People.html
-http://developer.android.com/reference/java/io/InputStream.html
-http://developer.android.com/reference/android/content/ContentValues.html
-http://developer.android.com/reference/android/provider/MediaStore.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteCursor.html
-http://developer.android.com/reference/android/database/MatrixCursor.html
-http://developer.android.com/guide/tutorials/views/hello-spinner.html
-http://developer.android.com/guide/tutorials/views/hello-listview.html
-http://developer.android.com/guide/tutorials/views/hello-gridview.html
-http://developer.android.com/reference/android/widget/AdapterView.html
-http://developer.android.com/reference/android/widget/Adapter.html
-http://developer.android.com/reference/android/widget/ArrayAdapter.html
-http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html
-http://developer.android.com/reference/android/app/NotificationManager.html
-http://developer.android.com/sdk/api_diff/3/changes.html
-http://developer.android.com/reference/android/provider/Settings.Secure.html
-http://developer.android.com/reference/android/media/MediaPlayer.html
-http://developer.android.com/reference/android/media/MediaRecorder.html
-http://developer.android.com/reference/android/media/JetPlayer.html
-http://developer.android.com/reference/android/media/SoundPool.html
-http://developer.android.com/guide/topics/media/jet/jetcreator_manual.html
-http://developer.android.com/reference/android/graphics/NinePatch.html
-http://developer.android.com/guide/developing/tools/adt.html
-http://developer.android.com/reference/android/graphics/AvoidXfermode.html
-http://developer.android.com/reference/android/graphics/Bitmap.html
-http://developer.android.com/reference/android/graphics/BitmapFactory.html
-http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html
-http://developer.android.com/reference/android/graphics/BitmapShader.html
-http://developer.android.com/reference/android/graphics/BlurMaskFilter.html
-http://developer.android.com/reference/android/graphics/Camera.html
-http://developer.android.com/reference/android/graphics/Color.html
-http://developer.android.com/reference/android/graphics/ColorFilter.html
-http://developer.android.com/reference/android/graphics/ColorMatrix.html
-http://developer.android.com/reference/android/graphics/ColorMatrixColorFilter.html
-http://developer.android.com/reference/android/graphics/ComposePathEffect.html
-http://developer.android.com/reference/android/graphics/ComposeShader.html
-http://developer.android.com/reference/android/graphics/CornerPathEffect.html
-http://developer.android.com/reference/android/graphics/DashPathEffect.html
-http://developer.android.com/reference/android/graphics/DiscretePathEffect.html
-http://developer.android.com/reference/android/graphics/DrawFilter.html
-http://developer.android.com/reference/android/graphics/EmbossMaskFilter.html
-http://developer.android.com/reference/android/graphics/Interpolator.html
-http://developer.android.com/reference/android/graphics/LayerRasterizer.html
-http://developer.android.com/reference/android/graphics/LightingColorFilter.html
-http://developer.android.com/reference/android/graphics/LinearGradient.html
-http://developer.android.com/reference/android/graphics/MaskFilter.html
-http://developer.android.com/reference/android/graphics/Matrix.html
-http://developer.android.com/reference/android/graphics/Movie.html
-http://developer.android.com/reference/android/graphics/Paint.html
-http://developer.android.com/reference/android/graphics/Paint.FontMetrics.html
-http://developer.android.com/reference/android/graphics/Paint.FontMetricsInt.html
-http://developer.android.com/reference/android/graphics/PaintFlagsDrawFilter.html
-http://developer.android.com/reference/android/graphics/Path.html
-http://developer.android.com/reference/android/graphics/PathDashPathEffect.html
-http://developer.android.com/reference/android/graphics/PathEffect.html
-http://developer.android.com/reference/android/graphics/PathMeasure.html
-http://developer.android.com/reference/android/graphics/Picture.html
-http://developer.android.com/reference/android/graphics/PixelFormat.html
-http://developer.android.com/reference/android/graphics/PixelXorXfermode.html
-http://developer.android.com/reference/android/graphics/Point.html
-http://developer.android.com/reference/android/graphics/PointF.html
-http://developer.android.com/reference/android/graphics/PorterDuff.html
-http://developer.android.com/reference/android/graphics/PorterDuffColorFilter.html
-http://developer.android.com/reference/android/graphics/PorterDuffXfermode.html
-http://developer.android.com/reference/android/graphics/RadialGradient.html
-http://developer.android.com/reference/android/graphics/Rasterizer.html
-http://developer.android.com/reference/android/graphics/Rect.html
-http://developer.android.com/reference/android/graphics/RectF.html
-http://developer.android.com/reference/android/graphics/Region.html
-http://developer.android.com/reference/android/graphics/RegionIterator.html
-http://developer.android.com/reference/android/graphics/Shader.html
-http://developer.android.com/reference/android/graphics/SumPathEffect.html
-http://developer.android.com/reference/android/graphics/SweepGradient.html
-http://developer.android.com/reference/android/graphics/Typeface.html
-http://developer.android.com/reference/android/graphics/Xfermode.html
-http://developer.android.com/reference/android/graphics/AvoidXfermode.Mode.html
-http://developer.android.com/reference/android/graphics/Bitmap.CompressFormat.html
-http://developer.android.com/reference/android/graphics/Bitmap.Config.html
-http://developer.android.com/reference/android/graphics/BlurMaskFilter.Blur.html
-http://developer.android.com/reference/android/graphics/Canvas.EdgeType.html
-http://developer.android.com/reference/android/graphics/Canvas.VertexMode.html
-http://developer.android.com/reference/android/graphics/Interpolator.Result.html
-http://developer.android.com/reference/android/graphics/Matrix.ScaleToFit.html
-http://developer.android.com/reference/android/graphics/Paint.Align.html
-http://developer.android.com/reference/android/graphics/Paint.Cap.html
-http://developer.android.com/reference/android/graphics/Paint.Join.html
-http://developer.android.com/reference/android/graphics/Paint.Style.html
-http://developer.android.com/reference/android/graphics/Path.Direction.html
-http://developer.android.com/reference/android/graphics/Path.FillType.html
-http://developer.android.com/reference/android/graphics/PathDashPathEffect.Style.html
-http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
-http://developer.android.com/reference/android/graphics/Region.Op.html
-http://developer.android.com/reference/android/graphics/Shader.TileMode.html
-http://developer.android.com/reference/java/lang/Object.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL.html
-http://developer.android.com/reference/java/lang/String.html
-http://developer.android.com/reference/java/lang/CharSequence.html
-http://developer.android.com/reference/java/lang/Class.html
-http://developer.android.com/reference/java/lang/ref/ReferenceQueue.html
-http://developer.android.com/reference/java/lang/Throwable.html
-http://developer.android.com/reference/android/test/PerformanceTestCase.html
-http://developer.android.com/reference/android/test/PerformanceTestCase.Intermediates.html
-http://developer.android.com/reference/android/test/TestSuiteProvider.html
-http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase.html
-http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html
-http://developer.android.com/reference/android/test/ActivityTestCase.html
-http://developer.android.com/reference/android/test/ActivityUnitTestCase.html
-http://developer.android.com/reference/android/test/AndroidTestCase.html
-http://developer.android.com/reference/android/test/AndroidTestRunner.html
-http://developer.android.com/reference/android/test/ApplicationTestCase.html
-http://developer.android.com/reference/android/app/Application.html
-http://developer.android.com/reference/android/test/InstrumentationTestCase.html
-http://developer.android.com/reference/android/test/InstrumentationTestRunner.html
-http://developer.android.com/reference/android/test/InstrumentationTestSuite.html
-http://developer.android.com/reference/android/test/IsolatedContext.html
-http://developer.android.com/reference/android/test/MoreAsserts.html
-http://developer.android.com/reference/android/test/ProviderTestCase.html
-http://developer.android.com/reference/android/test/ProviderTestCase2.html
-http://developer.android.com/reference/android/test/RenamingDelegatingContext.html
-http://developer.android.com/reference/android/test/ServiceTestCase.html
-http://developer.android.com/reference/android/test/SingleLaunchActivityTestCase.html
-http://developer.android.com/reference/android/test/SyncBaseInstrumentation.html
-http://developer.android.com/reference/android/test/TouchUtils.html
-http://developer.android.com/reference/android/test/ViewAsserts.html
-http://developer.android.com/reference/android/test/AssertionFailedError.html
-http://developer.android.com/reference/android/test/ComparisonFailure.html
-http://developer.android.com/reference/android/test/package-descr.html
-http://developer.android.com/reference/junit/framework/TestCase.html
-http://developer.android.com/reference/junit/framework/TestSuite.html
-http://developer.android.com/reference/android/Manifest.html
-http://developer.android.com/reference/android/R.html
-http://developer.android.com/reference/android/R.anim.html
-http://developer.android.com/reference/android/R.array.html
-http://developer.android.com/reference/android/R.bool.html
-http://developer.android.com/reference/android/R.color.html
-http://developer.android.com/reference/android/R.dimen.html
-http://developer.android.com/reference/android/R.drawable.html
-http://developer.android.com/reference/android/R.id.html
-http://developer.android.com/reference/android/R.integer.html
-http://developer.android.com/reference/android/R.layout.html
-http://developer.android.com/reference/android/R.plurals.html
-http://developer.android.com/reference/android/R.raw.html
-http://developer.android.com/reference/android/R.string.html
-http://developer.android.com/reference/android/R.xml.html
-http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html
-http://developer.android.com/reference/junit/runner/TestSuiteLoader.html
-http://developer.android.com/reference/junit/runner/BaseTestRunner.html
-http://developer.android.com/reference/junit/runner/Version.html
-http://developer.android.com/reference/junit/runner/package-descr.html
-http://developer.android.com/reference/org/apache/http/auth/AuthScheme.html
-http://developer.android.com/reference/org/apache/http/auth/AuthSchemeFactory.html
-http://developer.android.com/reference/org/apache/http/auth/Credentials.html
-http://developer.android.com/reference/org/apache/http/auth/AUTH.html
-http://developer.android.com/reference/org/apache/http/auth/AuthSchemeRegistry.html
-http://developer.android.com/reference/org/apache/http/auth/AuthScope.html
-http://developer.android.com/reference/org/apache/http/auth/AuthState.html
-http://developer.android.com/reference/org/apache/http/auth/BasicUserPrincipal.html
-http://developer.android.com/reference/org/apache/http/auth/NTCredentials.html
-http://developer.android.com/reference/org/apache/http/auth/NTUserPrincipal.html
-http://developer.android.com/reference/org/apache/http/auth/UsernamePasswordCredentials.html
-http://developer.android.com/reference/org/apache/http/auth/AuthenticationException.html
-http://developer.android.com/reference/org/apache/http/auth/InvalidCredentialsException.html
-http://developer.android.com/reference/org/apache/http/auth/MalformedChallengeException.html
-http://developer.android.com/reference/org/apache/http/auth/package-descr.html
 http://developer.android.com/reference/android/view/ContextMenu.html
 http://developer.android.com/reference/android/view/ContextMenu.ContextMenuInfo.html
 http://developer.android.com/reference/android/view/GestureDetector.OnDoubleTapListener.html
@@ -480,7 +481,6 @@
 http://developer.android.com/reference/android/view/SubMenu.html
 http://developer.android.com/reference/android/view/SurfaceHolder.html
 http://developer.android.com/reference/android/view/SurfaceHolder.Callback.html
-http://developer.android.com/reference/android/view/View.OnClickListener.html
 http://developer.android.com/reference/android/view/View.OnCreateContextMenuListener.html
 http://developer.android.com/reference/android/view/View.OnFocusChangeListener.html
 http://developer.android.com/reference/android/view/View.OnKeyListener.html
@@ -507,12 +507,13 @@
 http://developer.android.com/reference/android/view/KeyCharacterMap.html
 http://developer.android.com/reference/android/view/KeyCharacterMap.KeyData.html
 http://developer.android.com/reference/android/view/KeyEvent.html
-http://developer.android.com/reference/android/view/LayoutInflater.html
+http://developer.android.com/reference/android/view/KeyEvent.DispatcherState.html
 http://developer.android.com/reference/android/view/MenuInflater.html
 http://developer.android.com/reference/android/view/MotionEvent.html
 http://developer.android.com/reference/android/view/OrientationEventListener.html
 http://developer.android.com/reference/android/view/OrientationListener.html
 http://developer.android.com/reference/android/view/SoundEffectConstants.html
+http://developer.android.com/reference/android/view/Surface.html
 http://developer.android.com/reference/android/view/TouchDelegate.html
 http://developer.android.com/reference/android/view/VelocityTracker.html
 http://developer.android.com/reference/android/view/View.BaseSavedState.html
@@ -523,6 +524,7 @@
 http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
 http://developer.android.com/reference/android/view/ViewStub.html
 http://developer.android.com/reference/android/view/ViewTreeObserver.html
+http://developer.android.com/reference/android/view/Window.html
 http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html
 http://developer.android.com/reference/android/view/ViewDebug.HierarchyTraceType.html
 http://developer.android.com/reference/android/view/ViewDebug.RecyclerTraceType.html
@@ -530,94 +532,227 @@
 http://developer.android.com/reference/android/view/Surface.OutOfResourcesException.html
 http://developer.android.com/reference/android/view/SurfaceHolder.BadSurfaceTypeException.html
 http://developer.android.com/reference/android/view/WindowManager.BadTokenException.html
+http://developer.android.com/reference/java/lang/Object.html
 http://developer.android.com/reference/android/graphics/drawable/Drawable.Callback.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityEventSource.html
 http://developer.android.com/reference/android/widget/AnalogClock.html
 http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html
 http://developer.android.com/reference/android/widget/ProgressBar.html
-http://developer.android.com/reference/android/widget/TextView.html
 http://developer.android.com/reference/android/inputmethodservice/Keyboard.html
 http://developer.android.com/reference/android/widget/AbsListView.html
 http://developer.android.com/reference/android/widget/AbsSeekBar.html
 http://developer.android.com/reference/android/widget/AbsSpinner.html
+http://developer.android.com/reference/android/widget/AbsoluteLayout.html
+http://developer.android.com/reference/android/widget/AdapterView.html
+http://developer.android.com/reference/android/widget/Adapter.html
 http://developer.android.com/reference/android/appwidget/AppWidgetHostView.html
-http://developer.android.com/reference/android/widget/AutoCompleteTextView.html
-http://developer.android.com/reference/android/widget/Button.html
-http://developer.android.com/reference/android/widget/CheckBox.html
 http://developer.android.com/reference/android/widget/CheckedTextView.html
 http://developer.android.com/reference/android/widget/Chronometer.html
 http://developer.android.com/reference/android/widget/CompoundButton.html
 http://developer.android.com/reference/android/widget/DatePicker.html
 http://developer.android.com/reference/android/widget/DialerFilter.html
 http://developer.android.com/reference/android/widget/DigitalClock.html
-http://developer.android.com/reference/android/widget/EditText.html
 http://developer.android.com/reference/android/widget/ExpandableListView.html
 http://developer.android.com/reference/android/inputmethodservice/ExtractEditText.html
 http://developer.android.com/reference/android/opengl/GLSurfaceView.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.html
+http://developer.android.com/reference/android/widget/GridView.html
 http://developer.android.com/reference/android/widget/HorizontalScrollView.html
 http://developer.android.com/reference/android/widget/ImageButton.html
-http://developer.android.com/reference/android/widget/ImageSwitcher.html
 http://developer.android.com/reference/android/widget/MediaController.html
 http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.html
-http://developer.android.com/reference/android/widget/RadioButton.html
+http://developer.android.com/reference/android/widget/QuickContactBadge.html
 http://developer.android.com/reference/android/widget/RadioGroup.html
 http://developer.android.com/reference/android/widget/RatingBar.html
+http://developer.android.com/reference/android/widget/ScrollView.html
 http://developer.android.com/reference/android/widget/SeekBar.html
 http://developer.android.com/reference/android/widget/SlidingDrawer.html
+http://developer.android.com/reference/android/widget/TabHost.html
 http://developer.android.com/reference/android/widget/TabWidget.html
-http://developer.android.com/reference/android/widget/TextSwitcher.html
+http://developer.android.com/reference/android/widget/TableLayout.html
+http://developer.android.com/reference/android/widget/TableRow.html
 http://developer.android.com/reference/android/widget/TimePicker.html
 http://developer.android.com/reference/android/widget/ToggleButton.html
 http://developer.android.com/reference/android/widget/TwoLineListItem.html
 http://developer.android.com/reference/android/widget/VideoView.html
 http://developer.android.com/reference/android/widget/ViewAnimator.html
+http://developer.android.com/reference/android/widget/ViewFlipper.html
+http://developer.android.com/reference/android/widget/ViewSwitcher.html
 http://developer.android.com/reference/android/webkit/WebView.html
 http://developer.android.com/reference/android/widget/ZoomButton.html
 http://developer.android.com/reference/android/widget/ZoomControls.html
 http://developer.android.com/reference/android/widget/Checkable.html
-http://developer.android.com/reference/android/os/Handler.html
+http://developer.android.com/reference/android/view/animation/Animation.html
 http://developer.android.com/reference/java/lang/RuntimeException.html
+http://developer.android.com/reference/java/lang/String.html
 http://developer.android.com/reference/android/util/AttributeSet.html
 http://developer.android.com/reference/java/util/ArrayList.html
 http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html
-http://developer.android.com/reference/android/os/IBinder.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html
+http://developer.android.com/reference/java/lang/CharSequence.html
+http://developer.android.com/reference/android/graphics/Bitmap.html
+http://developer.android.com/reference/android/graphics/Point.html
+http://developer.android.com/reference/android/content/res/Resources.html
 http://developer.android.com/reference/android/view/inputmethod/InputConnection.html
 http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html
 http://developer.android.com/reference/java/lang/Runnable.html
 http://developer.android.com/reference/android/util/SparseArray.html
-http://developer.android.com/reference/android/os/Parcelable.html
 http://developer.android.com/reference/android/content/res/TypedArray.html
-http://developer.android.com/
+http://developer.android.com/reference/java/lang/Class.html
 http://developer.android.com/reference/android/widget/Scroller.html
 http://developer.android.com/reference/android/os/SystemClock.html
-http://developer.android.com/reference/android/util/Printer.html
-http://developer.android.com/reference/android/util/Config.html
-http://developer.android.com/reference/android/util/DebugUtils.html
-http://developer.android.com/reference/android/util/DisplayMetrics.html
-http://developer.android.com/reference/android/util/EventLogTags.html
-http://developer.android.com/reference/android/util/EventLogTags.Description.html
-http://developer.android.com/reference/android/util/FloatMath.html
-http://developer.android.com/reference/android/util/LogPrinter.html
-http://developer.android.com/reference/android/util/MonthDisplayHelper.html
-http://developer.android.com/reference/android/util/PrintStreamPrinter.html
-http://developer.android.com/reference/android/util/PrintWriterPrinter.html
-http://developer.android.com/reference/android/util/SparseBooleanArray.html
-http://developer.android.com/reference/android/util/SparseIntArray.html
-http://developer.android.com/reference/android/util/StateSet.html
-http://developer.android.com/reference/android/util/StringBuilderPrinter.html
-http://developer.android.com/reference/android/util/TimeUtils.html
-http://developer.android.com/reference/android/util/TimingLogger.html
-http://developer.android.com/reference/android/util/TypedValue.html
-http://developer.android.com/reference/android/util/Xml.html
-http://developer.android.com/reference/android/util/Xml.Encoding.html
-http://developer.android.com/reference/android/util/AndroidException.html
-http://developer.android.com/reference/android/util/AndroidRuntimeException.html
-http://developer.android.com/reference/android/util/TimeFormatException.html
-http://developer.android.com/reference/android/util/package-descr.html
-http://developer.android.com/reference/java/lang/Math.html
-http://developer.android.com/reference/java/io/PrintStream.html
-http://developer.android.com/reference/java/io/PrintWriter.html
-http://developer.android.com/reference/java/lang/StringBuilder.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityManager.html
+http://developer.android.com/reference/java/lang/IllegalArgumentException.html
+http://developer.android.com/reference/java/lang/ref/ReferenceQueue.html
+http://developer.android.com/reference/java/lang/Throwable.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnInitListener.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnUtteranceCompletedListener.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.Engine.html
+http://developer.android.com/reference/org/apache/http/impl/AbstractHttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/AbstractHttpServerConnection.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultConnectionReuseStrategy.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpRequestFactory.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpResponseFactory.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpServerConnection.html
+http://developer.android.com/reference/org/apache/http/impl/EnglishReasonPhraseCatalog.html
+http://developer.android.com/reference/org/apache/http/impl/HttpConnectionMetricsImpl.html
+http://developer.android.com/reference/org/apache/http/impl/NoConnectionReuseStrategy.html
+http://developer.android.com/reference/org/apache/http/impl/SocketHttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/SocketHttpServerConnection.html
+http://developer.android.com/reference/org/apache/http/impl/package-descr.html
+http://developer.android.com/reference/org/apache/http/io/SessionInputBuffer.html
+http://developer.android.com/reference/org/apache/http/io/SessionOutputBuffer.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilderResult.html
+http://developer.android.com/reference/java/security/cert/CertPathParameters.html
+http://developer.android.com/reference/java/security/cert/CertPathValidatorResult.html
+http://developer.android.com/reference/java/security/cert/CertSelector.html
+http://developer.android.com/reference/java/security/cert/CertStoreParameters.html
+http://developer.android.com/reference/java/security/cert/CRLSelector.html
+http://developer.android.com/reference/java/security/cert/PolicyNode.html
+http://developer.android.com/reference/java/security/cert/X509Extension.html
+http://developer.android.com/reference/java/security/cert/Certificate.html
+http://developer.android.com/reference/java/security/cert/Certificate.CertificateRep.html
+http://developer.android.com/reference/java/security/cert/CertificateFactory.html
+http://developer.android.com/reference/java/security/cert/CertificateFactorySpi.html
+http://developer.android.com/reference/java/security/cert/CertPath.html
+http://developer.android.com/reference/java/security/cert/CertPath.CertPathRep.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilder.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilderSpi.html
+http://developer.android.com/reference/java/security/cert/CertPathValidator.html
+http://developer.android.com/reference/java/security/cert/CertPathValidatorSpi.html
+http://developer.android.com/reference/java/security/cert/CertStore.html
+http://developer.android.com/reference/java/security/cert/CertStoreSpi.html
+http://developer.android.com/reference/java/security/cert/CollectionCertStoreParameters.html
+http://developer.android.com/reference/java/security/cert/CRL.html
+http://developer.android.com/reference/java/security/cert/LDAPCertStoreParameters.html
+http://developer.android.com/reference/java/security/cert/PKIXBuilderParameters.html
+http://developer.android.com/reference/java/security/cert/PKIXCertPathBuilderResult.html
+http://developer.android.com/reference/java/security/cert/PKIXCertPathChecker.html
+http://developer.android.com/reference/java/security/cert/PKIXCertPathValidatorResult.html
+http://developer.android.com/reference/java/security/cert/PKIXParameters.html
+http://developer.android.com/reference/java/security/cert/PolicyQualifierInfo.html
+http://developer.android.com/reference/java/security/cert/TrustAnchor.html
+http://developer.android.com/reference/java/security/cert/X509Certificate.html
+http://developer.android.com/reference/java/security/cert/X509CertSelector.html
+http://developer.android.com/reference/java/security/cert/X509CRL.html
+http://developer.android.com/reference/java/security/cert/X509CRLEntry.html
+http://developer.android.com/reference/java/security/cert/X509CRLSelector.html
+http://developer.android.com/reference/java/security/cert/CertificateEncodingException.html
+http://developer.android.com/reference/java/security/cert/CertificateException.html
+http://developer.android.com/reference/java/security/cert/CertificateExpiredException.html
+http://developer.android.com/reference/java/security/cert/CertificateNotYetValidException.html
+http://developer.android.com/reference/java/security/cert/CertificateParsingException.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilderException.html
+http://developer.android.com/reference/java/security/cert/CertPathValidatorException.html
+http://developer.android.com/reference/java/security/cert/CertStoreException.html
+http://developer.android.com/reference/java/security/cert/CRLException.html
+http://developer.android.com/reference/java/security/cert/package-descr.html
 http://developer.android.com/reference/android/location/LocationManager.html
+http://developer.android.com/reference/android/os/Handler.Callback.html
+http://developer.android.com/reference/android/os/IBinder.DeathRecipient.html
+http://developer.android.com/reference/android/os/IInterface.html
+http://developer.android.com/reference/android/os/MessageQueue.IdleHandler.html
+http://developer.android.com/reference/android/os/BatteryManager.html
+http://developer.android.com/reference/android/os/Binder.html
+http://developer.android.com/reference/android/os/Build.html
+http://developer.android.com/reference/android/os/Build.VERSION.html
+http://developer.android.com/reference/android/os/Build.VERSION_CODES.html
+http://developer.android.com/reference/android/os/Bundle.html
+http://developer.android.com/reference/android/os/ConditionVariable.html
+http://developer.android.com/reference/android/os/CountDownTimer.html
+http://developer.android.com/reference/android/os/Debug.InstructionCount.html
+http://developer.android.com/reference/android/os/Debug.MemoryInfo.html
+http://developer.android.com/reference/android/os/Environment.html
+http://developer.android.com/reference/android/os/FileObserver.html
+http://developer.android.com/reference/android/os/HandlerThread.html
+http://developer.android.com/reference/android/os/Looper.html
+http://developer.android.com/reference/android/os/MemoryFile.html
+http://developer.android.com/reference/android/os/Message.html
+http://developer.android.com/reference/android/os/MessageQueue.html
+http://developer.android.com/reference/android/os/Messenger.html
+http://developer.android.com/reference/android/os/ParcelFileDescriptor.html
+http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseInputStream.html
+http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseOutputStream.html
+http://developer.android.com/reference/android/os/ParcelUuid.html
+http://developer.android.com/reference/android/os/PatternMatcher.html
+http://developer.android.com/reference/android/os/PowerManager.html
+http://developer.android.com/reference/android/os/PowerManager.WakeLock.html
+http://developer.android.com/reference/android/os/Process.html
+http://developer.android.com/reference/android/os/RemoteCallbackList.html
+http://developer.android.com/reference/android/os/ResultReceiver.html
+http://developer.android.com/reference/android/os/StatFs.html
+http://developer.android.com/reference/android/os/TokenWatcher.html
+http://developer.android.com/reference/android/os/Vibrator.html
+http://developer.android.com/reference/android/os/AsyncTask.Status.html
+http://developer.android.com/reference/android/os/BadParcelableException.html
+http://developer.android.com/reference/android/os/ParcelFormatException.html
+http://developer.android.com/reference/android/os/RemoteException.html
+http://developer.android.com/reference/java/lang/Void.html
+http://developer.android.com/reference/java/util/concurrent/TimeUnit.html
+http://developer.android.com/reference/java/lang/IllegalStateException.html
+http://developer.android.com/reference/java/util/concurrent/CancellationException.html
+http://developer.android.com/reference/java/util/concurrent/ExecutionException.html
+http://developer.android.com/reference/java/lang/InterruptedException.html
+http://developer.android.com/reference/java/util/concurrent/TimeoutException.html
+http://developer.android.com/reference/java/security/spec/AlgorithmParameterSpec.html
+http://developer.android.com/reference/java/security/spec/ECField.html
+http://developer.android.com/reference/java/security/spec/KeySpec.html
+http://developer.android.com/reference/java/security/spec/DSAParameterSpec.html
+http://developer.android.com/reference/java/security/spec/DSAPrivateKeySpec.html
+http://developer.android.com/reference/java/security/spec/DSAPublicKeySpec.html
+http://developer.android.com/reference/java/security/spec/ECFieldF2m.html
+http://developer.android.com/reference/java/security/spec/ECFieldFp.html
+http://developer.android.com/reference/java/security/spec/ECGenParameterSpec.html
+http://developer.android.com/reference/java/security/spec/ECParameterSpec.html
+http://developer.android.com/reference/java/security/spec/ECPoint.html
+http://developer.android.com/reference/java/security/spec/ECPrivateKeySpec.html
+http://developer.android.com/reference/java/security/spec/ECPublicKeySpec.html
+http://developer.android.com/reference/java/security/spec/EllipticCurve.html
+http://developer.android.com/reference/java/security/spec/EncodedKeySpec.html
+http://developer.android.com/reference/java/security/spec/MGF1ParameterSpec.html
+http://developer.android.com/reference/java/security/spec/PKCS8EncodedKeySpec.html
+http://developer.android.com/reference/java/security/spec/PSSParameterSpec.html
+http://developer.android.com/reference/java/security/spec/RSAKeyGenParameterSpec.html
+http://developer.android.com/reference/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.html
+http://developer.android.com/reference/java/security/spec/RSAOtherPrimeInfo.html
+http://developer.android.com/reference/java/security/spec/RSAPrivateCrtKeySpec.html
+http://developer.android.com/reference/java/security/spec/RSAPrivateKeySpec.html
+http://developer.android.com/reference/java/security/spec/RSAPublicKeySpec.html
+http://developer.android.com/reference/java/security/spec/X509EncodedKeySpec.html
+http://developer.android.com/reference/java/security/spec/InvalidKeySpecException.html
+http://developer.android.com/reference/java/security/spec/InvalidParameterSpecException.html
+http://developer.android.com/reference/java/security/spec/package-descr.html
+http://developer.android.com/reference/android/app/Instrumentation.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/ArcShape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/OvalShape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/RectShape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/RoundRectShape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/Shape.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/package-descr.html
+http://developer.android.com/reference/android/graphics/Path.html
 http://developer.android.com/reference/org/apache/http/client/protocol/ClientContext.html
 http://developer.android.com/reference/org/apache/http/client/protocol/ClientContextConfigurer.html
 http://developer.android.com/reference/org/apache/http/client/protocol/RequestAddCookies.html
@@ -628,247 +763,369 @@
 http://developer.android.com/reference/org/apache/http/client/protocol/package-descr.html
 http://developer.android.com/reference/org/apache/http/protocol/HttpContext.html
 http://developer.android.com/reference/org/apache/http/client/CookieStore.html
-http://developer.android.com/reference/android/net/http/SslCertificate.html
-http://developer.android.com/reference/android/net/http/SslCertificate.DName.html
-http://developer.android.com/images/widget_design/Music_widget_button_states.psd
-http://developer.android.com/images/widget_design/4x1_Widget_Frame_Portrait.psd
-http://developer.android.com/images/widget_design/3x3_Widget_Frame_Portrait.psd
-http://developer.android.com/images/widget_design/2x2_Widget_Frame_Portrait.psd
-http://developer.android.com/images/widget_design/4x1_Widget_Frame_Landscape.psd
-http://developer.android.com/images/widget_design/3x3_Widget_Frame_Landscape.psd
-http://developer.android.com/images/widget_design/2x2_Widget_Frame_Landscape.psd
-http://developer.android.com/reference/javax/security/auth/login/LoginException.html
-http://developer.android.com/reference/javax/security/auth/login/package-descr.html
-http://developer.android.com/reference/javax/security/auth/callback/Callback.html
-http://developer.android.com/reference/javax/security/auth/callback/CallbackHandler.html
-http://developer.android.com/reference/javax/security/auth/callback/PasswordCallback.html
-http://developer.android.com/reference/javax/security/auth/callback/UnsupportedCallbackException.html
-http://developer.android.com/reference/javax/security/auth/callback/package-descr.html
-http://developer.android.com/reference/org/apache/http/util/ByteArrayBuffer.html
-http://developer.android.com/reference/org/apache/http/util/CharArrayBuffer.html
-http://developer.android.com/reference/org/apache/http/util/EncodingUtils.html
-http://developer.android.com/reference/org/apache/http/util/EntityUtils.html
-http://developer.android.com/reference/org/apache/http/util/ExceptionUtils.html
-http://developer.android.com/reference/org/apache/http/util/LangUtils.html
-http://developer.android.com/reference/org/apache/http/util/VersionInfo.html
-http://developer.android.com/reference/org/apache/http/util/package-descr.html
-http://developer.android.com/reference/org/apache/http/HttpEntity.html
-http://developer.android.com/reference/android/app/DatePickerDialog.OnDateSetListener.html
-http://developer.android.com/reference/android/app/KeyguardManager.OnKeyguardExitResult.html
-http://developer.android.com/reference/android/app/PendingIntent.OnFinished.html
-http://developer.android.com/reference/android/app/SearchManager.OnCancelListener.html
-http://developer.android.com/reference/android/app/SearchManager.OnDismissListener.html
-http://developer.android.com/reference/android/app/TimePickerDialog.OnTimeSetListener.html
-http://developer.android.com/reference/android/app/ActivityGroup.html
-http://developer.android.com/reference/android/app/ActivityManager.html
-http://developer.android.com/reference/android/app/ActivityManager.MemoryInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.ProcessErrorStateInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RecentTaskInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RunningServiceInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RunningTaskInfo.html
-http://developer.android.com/reference/android/app/AlarmManager.html
-http://developer.android.com/reference/android/app/AlertDialog.html
-http://developer.android.com/reference/android/app/AlertDialog.Builder.html
-http://developer.android.com/reference/android/app/AliasActivity.html
-http://developer.android.com/reference/android/app/DatePickerDialog.html
-http://developer.android.com/reference/android/app/ExpandableListActivity.html
-http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html
-http://developer.android.com/reference/android/app/Instrumentation.ActivityResult.html
-http://developer.android.com/reference/android/app/IntentService.html
-http://developer.android.com/reference/android/app/KeyguardManager.html
-http://developer.android.com/reference/android/app/KeyguardManager.KeyguardLock.html
-http://developer.android.com/reference/android/app/LauncherActivity.html
-http://developer.android.com/reference/android/app/LauncherActivity.IconResizer.html
-http://developer.android.com/reference/android/app/LauncherActivity.ListItem.html
-http://developer.android.com/reference/android/app/ListActivity.html
-http://developer.android.com/reference/android/app/LocalActivityManager.html
-http://developer.android.com/reference/android/app/Notification.html
-http://developer.android.com/reference/android/app/PendingIntent.html
-http://developer.android.com/reference/android/app/ProgressDialog.html
-http://developer.android.com/reference/android/app/SearchManager.html
-http://developer.android.com/reference/android/app/TabActivity.html
-http://developer.android.com/reference/android/app/TimePickerDialog.html
-http://developer.android.com/reference/android/app/PendingIntent.CanceledException.html
-http://developer.android.com/reference/android/content/ContextWrapper.html
-http://developer.android.com/reference/android/content/ComponentCallbacks.html
-http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.html
-http://developer.android.com/reference/android/media/AudioManager.html
-http://developer.android.com/reference/android/text/ClipboardManager.html
-http://developer.android.com/reference/android/net/ConnectivityManager.html
-http://developer.android.com/reference/android/os/PowerManager.html
-http://developer.android.com/reference/android/hardware/SensorManager.html
-http://developer.android.com/reference/android/telephony/TelephonyManager.html
-http://developer.android.com/reference/android/os/Vibrator.html
-http://developer.android.com/reference/android/net/wifi/WifiManager.html
-http://developer.android.com/reference/android/content/res/Configuration.html
-http://developer.android.com/reference/java/io/FileDescriptor.html
-http://developer.android.com/reference/android/content/ServiceConnection.html
-http://developer.android.com/reference/android/content/res/AssetManager.html
-http://developer.android.com/reference/java/io/File.html
-http://developer.android.com/reference/java/lang/ClassLoader.html
-http://developer.android.com/reference/android/os/Looper.html
-http://developer.android.com/reference/android/content/SharedPreferences.html
-http://developer.android.com/reference/android/content/res/Resources.Theme.html
-http://developer.android.com/reference/java/io/FileInputStream.html
-http://developer.android.com/reference/java/io/FileOutputStream.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.CursorFactory.html
-http://developer.android.com/reference/android/content/IntentFilter.html
-http://developer.android.com/reference/android/os/Bundle.html
-http://developer.android.com/reference/android/content/ComponentName.html
-http://developer.android.com/reference/java/util/Formatter.html
-http://developer.android.com/sdk/1.1_r1/installing.html
-http://developer.android.com/reference/java/util/zip/Checksum.html
-http://developer.android.com/reference/java/util/zip/Adler32.html
-http://developer.android.com/reference/java/util/zip/CheckedInputStream.html
-http://developer.android.com/reference/java/util/zip/CheckedOutputStream.html
-http://developer.android.com/reference/java/util/zip/CRC32.html
-http://developer.android.com/reference/java/util/zip/Deflater.html
-http://developer.android.com/reference/java/util/zip/DeflaterOutputStream.html
-http://developer.android.com/reference/java/util/zip/GZIPInputStream.html
-http://developer.android.com/reference/java/util/zip/GZIPOutputStream.html
-http://developer.android.com/reference/java/util/zip/Inflater.html
-http://developer.android.com/reference/java/util/zip/InflaterInputStream.html
-http://developer.android.com/reference/java/util/zip/ZipEntry.html
-http://developer.android.com/reference/java/util/zip/ZipFile.html
-http://developer.android.com/reference/java/util/zip/ZipInputStream.html
-http://developer.android.com/reference/java/util/zip/ZipOutputStream.html
-http://developer.android.com/reference/java/util/zip/DataFormatException.html
-http://developer.android.com/reference/java/util/zip/ZipException.html
-http://developer.android.com/reference/java/util/zip/package-descr.html
-http://developer.android.com/reference/javax/crypto/interfaces/DHKey.html
-http://developer.android.com/reference/javax/crypto/interfaces/DHPrivateKey.html
-http://developer.android.com/reference/javax/crypto/interfaces/DHPublicKey.html
-http://developer.android.com/reference/javax/crypto/interfaces/PBEKey.html
-http://developer.android.com/reference/javax/crypto/interfaces/package-descr.html
-http://developer.android.com/sdk/1.1_r1/upgrading.html
-http://developer.android.com/sdk/1.0_r2/upgrading.html
-http://developer.android.com/sdk/1.0_r2/installing.html
-http://developer.android.com/sdk/1.0_r1/upgrading.html
-http://developer.android.com/sdk/1.0_r1/installing.html
-http://developer.android.com/guide/tutorials/views/hello-formstuff.html
-http://developer.android.com/reference/java/net/ContentHandlerFactory.html
-http://developer.android.com/reference/java/net/DatagramSocketImplFactory.html
-http://developer.android.com/reference/java/net/FileNameMap.html
-http://developer.android.com/reference/java/net/SocketImplFactory.html
-http://developer.android.com/reference/java/net/SocketOptions.html
-http://developer.android.com/reference/java/net/URLStreamHandlerFactory.html
-http://developer.android.com/reference/java/net/Authenticator.html
-http://developer.android.com/reference/java/net/CacheRequest.html
-http://developer.android.com/reference/java/net/CacheResponse.html
-http://developer.android.com/reference/java/net/ContentHandler.html
-http://developer.android.com/reference/java/net/CookieHandler.html
-http://developer.android.com/reference/java/net/DatagramPacket.html
-http://developer.android.com/reference/java/net/DatagramSocket.html
-http://developer.android.com/reference/java/net/DatagramSocketImpl.html
-http://developer.android.com/reference/java/net/HttpURLConnection.html
-http://developer.android.com/reference/java/net/Inet4Address.html
-http://developer.android.com/reference/java/net/Inet6Address.html
-http://developer.android.com/reference/java/net/InetAddress.html
-http://developer.android.com/reference/java/net/InetSocketAddress.html
-http://developer.android.com/reference/java/net/JarURLConnection.html
-http://developer.android.com/reference/java/net/MulticastSocket.html
-http://developer.android.com/reference/java/net/NetPermission.html
-http://developer.android.com/reference/java/net/NetworkInterface.html
-http://developer.android.com/reference/java/net/PasswordAuthentication.html
-http://developer.android.com/reference/java/net/Proxy.html
-http://developer.android.com/reference/java/net/ProxySelector.html
-http://developer.android.com/reference/java/net/ResponseCache.html
-http://developer.android.com/reference/java/net/SecureCacheResponse.html
-http://developer.android.com/reference/java/net/ServerSocket.html
-http://developer.android.com/reference/java/net/Socket.html
-http://developer.android.com/reference/java/net/SocketAddress.html
-http://developer.android.com/reference/java/net/SocketImpl.html
-http://developer.android.com/reference/java/net/SocketPermission.html
-http://developer.android.com/reference/java/net/URI.html
-http://developer.android.com/reference/java/net/URL.html
-http://developer.android.com/reference/java/net/URLClassLoader.html
-http://developer.android.com/reference/java/net/URLConnection.html
-http://developer.android.com/reference/java/net/URLDecoder.html
-http://developer.android.com/reference/java/net/URLEncoder.html
-http://developer.android.com/reference/java/net/URLStreamHandler.html
-http://developer.android.com/reference/java/net/Authenticator.RequestorType.html
-http://developer.android.com/reference/java/net/Proxy.Type.html
-http://developer.android.com/reference/java/net/BindException.html
-http://developer.android.com/reference/java/net/ConnectException.html
-http://developer.android.com/reference/java/net/HttpRetryException.html
-http://developer.android.com/reference/java/net/MalformedURLException.html
-http://developer.android.com/reference/java/net/NoRouteToHostException.html
-http://developer.android.com/reference/java/net/PortUnreachableException.html
-http://developer.android.com/reference/java/net/ProtocolException.html
-http://developer.android.com/reference/java/net/SocketException.html
-http://developer.android.com/reference/java/net/SocketTimeoutException.html
-http://developer.android.com/reference/java/net/UnknownHostException.html
-http://developer.android.com/reference/java/net/UnknownServiceException.html
-http://developer.android.com/reference/java/net/URISyntaxException.html
-http://developer.android.com/reference/java/net/package-descr.html
-http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/ColorDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/Drawable.ConstantState.html
-http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.html
-http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.DrawableContainerState.html
-http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/InsetDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/LevelListDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/PaintDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/RotateDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/ScaleDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.ShaderFactory.html
-http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/TransitionDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.Orientation.html
-http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractInterruptibleChannel.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectableChannel.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectionKey.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractSelector.html
+http://developer.android.com/reference/java/nio/channels/spi/SelectorProvider.html
+http://developer.android.com/reference/java/nio/channels/spi/package-descr.html
+http://developer.android.com/reference/java/nio/channels/DatagramChannel.html
+http://developer.android.com/reference/java/nio/channels/Pipe.html
+http://developer.android.com/reference/java/nio/channels/Selector.html
+http://developer.android.com/reference/java/nio/channels/ServerSocketChannel.html
+http://developer.android.com/reference/java/nio/channels/SocketChannel.html
+http://developer.android.com/reference/android/content/pm/PackageItemInfo.html
+http://developer.android.com/reference/android/location/Geocoder.html
+http://developer.android.com/reference/android/media/SoundPool.html
+http://developer.android.com/reference/android/graphics/AvoidXfermode.html
+http://developer.android.com/reference/android/graphics/BitmapFactory.html
+http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html
+http://developer.android.com/reference/android/graphics/BitmapShader.html
+http://developer.android.com/reference/android/graphics/BlurMaskFilter.html
+http://developer.android.com/reference/android/graphics/Camera.html
+http://developer.android.com/reference/android/graphics/Color.html
+http://developer.android.com/reference/android/graphics/ColorFilter.html
+http://developer.android.com/reference/android/graphics/ColorMatrix.html
+http://developer.android.com/reference/android/graphics/ColorMatrixColorFilter.html
+http://developer.android.com/reference/android/graphics/ComposePathEffect.html
+http://developer.android.com/reference/android/graphics/ComposeShader.html
+http://developer.android.com/reference/android/graphics/CornerPathEffect.html
+http://developer.android.com/reference/android/graphics/DashPathEffect.html
+http://developer.android.com/reference/android/graphics/DiscretePathEffect.html
+http://developer.android.com/reference/android/graphics/DrawFilter.html
+http://developer.android.com/reference/android/graphics/EmbossMaskFilter.html
+http://developer.android.com/reference/android/graphics/Interpolator.html
+http://developer.android.com/reference/android/graphics/LayerRasterizer.html
+http://developer.android.com/reference/android/graphics/LightingColorFilter.html
+http://developer.android.com/reference/android/graphics/LinearGradient.html
+http://developer.android.com/reference/android/graphics/MaskFilter.html
+http://developer.android.com/reference/android/graphics/Matrix.html
+http://developer.android.com/reference/android/graphics/Movie.html
+http://developer.android.com/reference/android/graphics/NinePatch.html
+http://developer.android.com/reference/android/graphics/Paint.html
+http://developer.android.com/reference/android/graphics/Paint.FontMetrics.html
+http://developer.android.com/reference/android/graphics/Paint.FontMetricsInt.html
+http://developer.android.com/reference/android/graphics/PaintFlagsDrawFilter.html
+http://developer.android.com/reference/android/graphics/PathDashPathEffect.html
+http://developer.android.com/reference/android/graphics/PathEffect.html
+http://developer.android.com/reference/android/graphics/PathMeasure.html
+http://developer.android.com/reference/android/graphics/Picture.html
+http://developer.android.com/reference/android/graphics/PixelFormat.html
+http://developer.android.com/reference/android/graphics/PixelXorXfermode.html
+http://developer.android.com/reference/android/graphics/PointF.html
+http://developer.android.com/reference/android/graphics/PorterDuff.html
+http://developer.android.com/reference/android/graphics/PorterDuffColorFilter.html
+http://developer.android.com/reference/android/graphics/PorterDuffXfermode.html
+http://developer.android.com/reference/android/graphics/RadialGradient.html
+http://developer.android.com/reference/android/graphics/Rasterizer.html
+http://developer.android.com/reference/android/graphics/RectF.html
+http://developer.android.com/reference/android/graphics/Region.html
+http://developer.android.com/reference/android/graphics/RegionIterator.html
+http://developer.android.com/reference/android/graphics/Shader.html
+http://developer.android.com/reference/android/graphics/SumPathEffect.html
+http://developer.android.com/reference/android/graphics/SweepGradient.html
+http://developer.android.com/reference/android/graphics/Typeface.html
+http://developer.android.com/reference/android/graphics/Xfermode.html
+http://developer.android.com/reference/android/graphics/AvoidXfermode.Mode.html
+http://developer.android.com/reference/android/graphics/Bitmap.CompressFormat.html
+http://developer.android.com/reference/android/graphics/Bitmap.Config.html
+http://developer.android.com/reference/android/graphics/BlurMaskFilter.Blur.html
+http://developer.android.com/reference/android/graphics/Canvas.EdgeType.html
+http://developer.android.com/reference/android/graphics/Canvas.VertexMode.html
+http://developer.android.com/reference/android/graphics/Interpolator.Result.html
+http://developer.android.com/reference/android/graphics/Matrix.ScaleToFit.html
+http://developer.android.com/reference/android/graphics/Paint.Align.html
+http://developer.android.com/reference/android/graphics/Paint.Cap.html
+http://developer.android.com/reference/android/graphics/Paint.Join.html
+http://developer.android.com/reference/android/graphics/Paint.Style.html
+http://developer.android.com/reference/android/graphics/Path.Direction.html
+http://developer.android.com/reference/android/graphics/Path.FillType.html
+http://developer.android.com/reference/android/graphics/PathDashPathEffect.Style.html
+http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
+http://developer.android.com/reference/android/graphics/Region.Op.html
+http://developer.android.com/reference/android/graphics/Shader.TileMode.html
+http://developer.android.com/reference/android/graphics/package-descr.html
+http://developer.android.com/reference/android/text/util/Linkify.MatchFilter.html
+http://developer.android.com/reference/android/text/util/Linkify.TransformFilter.html
+http://developer.android.com/reference/android/text/util/Linkify.html
+http://developer.android.com/reference/android/text/util/Rfc822Token.html
+http://developer.android.com/reference/android/text/util/Rfc822Tokenizer.html
+http://developer.android.com/reference/android/text/util/package-descr.html
+http://developer.android.com/reference/android/text/method/MetaKeyKeyListener.html
+http://developer.android.com/reference/android/widget/AbsListView.OnScrollListener.html
+http://developer.android.com/reference/android/widget/AbsListView.RecyclerListener.html
+http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html
+http://developer.android.com/reference/android/widget/AdapterView.OnItemLongClickListener.html
+http://developer.android.com/reference/android/widget/AdapterView.OnItemSelectedListener.html
+http://developer.android.com/reference/android/widget/AutoCompleteTextView.Validator.html
+http://developer.android.com/reference/android/widget/Chronometer.OnChronometerTickListener.html
+http://developer.android.com/reference/android/widget/CompoundButton.OnCheckedChangeListener.html
+http://developer.android.com/reference/android/widget/DatePicker.OnDateChangedListener.html
+http://developer.android.com/reference/android/widget/ExpandableListAdapter.html
+http://developer.android.com/reference/android/widget/ExpandableListView.OnChildClickListener.html
+http://developer.android.com/reference/android/widget/ExpandableListView.OnGroupClickListener.html
+http://developer.android.com/reference/android/widget/ExpandableListView.OnGroupCollapseListener.html
+http://developer.android.com/reference/android/widget/ExpandableListView.OnGroupExpandListener.html
+http://developer.android.com/reference/android/widget/Filter.FilterListener.html
+http://developer.android.com/reference/android/widget/Filterable.html
+http://developer.android.com/reference/android/widget/FilterQueryProvider.html
+http://developer.android.com/reference/android/widget/ListAdapter.html
+http://developer.android.com/reference/android/widget/MediaController.MediaPlayerControl.html
+http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.Tokenizer.html
+http://developer.android.com/reference/android/widget/PopupWindow.OnDismissListener.html
+http://developer.android.com/reference/android/widget/RadioGroup.OnCheckedChangeListener.html
+http://developer.android.com/reference/android/widget/RatingBar.OnRatingBarChangeListener.html
+http://developer.android.com/reference/android/widget/SectionIndexer.html
+http://developer.android.com/reference/android/widget/SeekBar.OnSeekBarChangeListener.html
+http://developer.android.com/reference/android/widget/SimpleAdapter.ViewBinder.html
+http://developer.android.com/reference/android/widget/SimpleCursorAdapter.CursorToStringConverter.html
+http://developer.android.com/reference/android/widget/SimpleCursorAdapter.ViewBinder.html
+http://developer.android.com/reference/android/widget/SimpleCursorTreeAdapter.ViewBinder.html
+http://developer.android.com/reference/android/widget/SlidingDrawer.OnDrawerCloseListener.html
+http://developer.android.com/reference/android/widget/SlidingDrawer.OnDrawerOpenListener.html
+http://developer.android.com/reference/android/widget/SlidingDrawer.OnDrawerScrollListener.html
+http://developer.android.com/reference/android/widget/SpinnerAdapter.html
+http://developer.android.com/reference/android/widget/TabHost.OnTabChangeListener.html
+http://developer.android.com/reference/android/widget/TabHost.TabContentFactory.html
+http://developer.android.com/reference/android/widget/TextView.OnEditorActionListener.html
+http://developer.android.com/reference/android/widget/TimePicker.OnTimeChangedListener.html
+http://developer.android.com/reference/android/widget/ViewSwitcher.ViewFactory.html
+http://developer.android.com/reference/android/widget/WrapperListAdapter.html
+http://developer.android.com/reference/android/widget/ZoomButtonsController.OnZoomListener.html
+http://developer.android.com/reference/android/widget/AbsListView.LayoutParams.html
+http://developer.android.com/reference/android/widget/AbsoluteLayout.LayoutParams.html
+http://developer.android.com/reference/android/widget/AdapterView.AdapterContextMenuInfo.html
+http://developer.android.com/reference/android/widget/AlphabetIndexer.html
+http://developer.android.com/reference/android/widget/ArrayAdapter.html
+http://developer.android.com/reference/android/widget/BaseAdapter.html
+http://developer.android.com/reference/android/widget/BaseExpandableListAdapter.html
+http://developer.android.com/reference/android/widget/CursorAdapter.html
+http://developer.android.com/reference/android/widget/CursorTreeAdapter.html
+http://developer.android.com/reference/android/widget/ExpandableListView.ExpandableListContextMenuInfo.html
+http://developer.android.com/reference/android/widget/Filter.html
+http://developer.android.com/reference/android/widget/Filter.FilterResults.html
+http://developer.android.com/reference/android/widget/FrameLayout.LayoutParams.html
+http://developer.android.com/reference/android/widget/Gallery.LayoutParams.html
+http://developer.android.com/reference/android/widget/HeaderViewListAdapter.html
+http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
+http://developer.android.com/reference/android/widget/ListView.FixedViewInfo.html
+http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.CommaTokenizer.html
+http://developer.android.com/reference/android/widget/PopupWindow.html
+http://developer.android.com/reference/android/widget/RadioGroup.LayoutParams.html
+http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html
+http://developer.android.com/reference/android/widget/RemoteViews.html
+http://developer.android.com/reference/android/widget/ResourceCursorAdapter.html
+http://developer.android.com/reference/android/widget/ResourceCursorTreeAdapter.html
+http://developer.android.com/reference/android/widget/SimpleAdapter.html
+http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html
+http://developer.android.com/reference/android/widget/SimpleCursorTreeAdapter.html
+http://developer.android.com/reference/android/widget/SimpleExpandableListAdapter.html
+http://developer.android.com/reference/android/widget/TabHost.TabSpec.html
+http://developer.android.com/reference/android/widget/TableLayout.LayoutParams.html
+http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
+http://developer.android.com/reference/android/widget/TextView.SavedState.html
+http://developer.android.com/reference/android/widget/Toast.html
+http://developer.android.com/reference/android/widget/ZoomButtonsController.html
+http://developer.android.com/reference/android/widget/ImageView.ScaleType.html
+http://developer.android.com/reference/android/widget/TextView.BufferType.html
+http://developer.android.com/reference/android/widget/RemoteViews.ActionException.html
+http://developer.android.com/reference/android/view/inputmethod/BaseInputConnection.html
+http://developer.android.com/reference/android/view/inputmethod/ExtractedTextRequest.html
+http://developer.android.com/reference/android/view/inputmethod/ExtractedText.html
+http://developer.android.com/reference/android/content/res/ColorStateList.html
+http://developer.android.com/reference/android/text/method/KeyListener.html
+http://developer.android.com/reference/android/text/method/LinkMovementMethod.html
+http://developer.android.com/reference/android/text/method/MovementMethod.html
+http://developer.android.com/reference/android/text/method/TransformationMethod.html
+http://developer.android.com/reference/android/text/style/URLSpan.html
+http://developer.android.com/reference/android/view/inputmethod/CompletionInfo.html
+http://developer.android.com/reference/android/R.id.html
 http://developer.android.com/reference/org/xmlpull/v1/XmlPullParserException.html
 http://developer.android.com/reference/java/io/IOException.html
-http://developer.android.com/reference/android/content/DialogInterface.html
-http://developer.android.com/reference/android/content/DialogInterface.OnCancelListener.html
-http://developer.android.com/reference/android/content/DialogInterface.OnClickListener.html
-http://developer.android.com/reference/android/content/DialogInterface.OnDismissListener.html
-http://developer.android.com/reference/android/content/DialogInterface.OnKeyListener.html
-http://developer.android.com/reference/android/content/DialogInterface.OnMultiChoiceClickListener.html
-http://developer.android.com/reference/android/content/SharedPreferences.Editor.html
-http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html
-http://developer.android.com/reference/android/content/AsyncQueryHandler.html
-http://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerArgs.html
-http://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerHandler.html
-http://developer.android.com/reference/android/content/ContentQueryMap.html
-http://developer.android.com/reference/android/content/Intent.FilterComparison.html
-http://developer.android.com/reference/android/content/Intent.ShortcutIconResource.html
-http://developer.android.com/reference/android/content/IntentFilter.AuthorityEntry.html
-http://developer.android.com/reference/android/content/MutableContextWrapper.html
-http://developer.android.com/reference/android/content/SearchRecentSuggestionsProvider.html
-http://developer.android.com/reference/android/content/UriMatcher.html
-http://developer.android.com/reference/android/content/ActivityNotFoundException.html
-http://developer.android.com/reference/android/content/IntentFilter.MalformedMimeTypeException.html
-http://developer.android.com/reference/android/content/ReceiverCallNotAllowedException.html
-http://developer.android.com/reference/android/test/mock/MockContext.html
-http://developer.android.com/reference/android/test/mock/MockApplication.html
-http://developer.android.com/reference/android/preference/PreferenceActivity.html
-http://developer.android.com/reference/android/preference/Preference.html
-http://developer.android.com/reference/android/os/Binder.html
-http://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException.html
+http://developer.android.com/reference/android/util/TypedValue.html
+http://developer.android.com/reference/org/apache/http/io/HttpMessageParser.html
+http://developer.android.com/reference/org/apache/http/io/HttpMessageWriter.html
+http://developer.android.com/reference/org/apache/http/io/HttpTransportMetrics.html
+http://developer.android.com/reference/org/apache/http/io/package-descr.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManager.html
+http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoute.html
+http://developer.android.com/reference/org/apache/http/params/HttpParams.html
+http://developer.android.com/reference/org/apache/http/HttpHost.html
+http://developer.android.com/reference/java/net/InetAddress.html
+http://developer.android.com/reference/org/apache/http/HttpConnectionMetrics.html
+http://developer.android.com/reference/javax/net/ssl/SSLSession.html
+http://developer.android.com/reference/org/apache/http/HttpResponse.html
+http://developer.android.com/reference/org/apache/http/HttpEntityEnclosingRequest.html
+http://developer.android.com/reference/org/apache/http/HttpRequest.html
+http://developer.android.com/reference/org/apache/http/HttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/HttpConnection.html
+http://developer.android.com/reference/org/apache/http/HttpInetConnection.html
+http://developer.android.com/reference/org/apache/http/conn/ConnectionReleaseTrigger.html
+http://developer.android.com/reference/android/content/res/XmlResourceParser.html
+http://developer.android.com/reference/android/content/res/AssetFileDescriptor.html
+http://developer.android.com/reference/android/content/res/AssetFileDescriptor.AutoCloseInputStream.html
+http://developer.android.com/reference/android/content/res/AssetFileDescriptor.AutoCloseOutputStream.html
+http://developer.android.com/reference/android/content/res/AssetManager.html
+http://developer.android.com/reference/android/content/res/AssetManager.AssetInputStream.html
+http://developer.android.com/reference/android/content/res/Configuration.html
+http://developer.android.com/reference/android/content/res/Resources.Theme.html
 http://developer.android.com/reference/android/content/res/Resources.NotFoundException.html
-http://developer.android.com/reference/java/io/FileNotFoundException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteException.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/ArcShape.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/RectShape.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/RoundRectShape.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/Shape.html
-http://developer.android.com/reference/java/lang/annotation/Annotation.html
-http://developer.android.com/reference/java/lang/annotation/ElementType.html
-http://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html
-http://developer.android.com/reference/java/lang/annotation/AnnotationTypeMismatchException.html
-http://developer.android.com/reference/java/lang/annotation/IncompleteAnnotationException.html
-http://developer.android.com/reference/java/lang/annotation/AnnotationFormatError.html
-http://developer.android.com/reference/java/lang/annotation/package-descr.html
-http://developer.android.com/reference/java/lang/ref/PhantomReference.html
-http://developer.android.com/reference/java/lang/ref/Reference.html
-http://developer.android.com/reference/java/lang/ref/SoftReference.html
-http://developer.android.com/reference/java/lang/ref/WeakReference.html
+http://developer.android.com/reference/android/test/mock/MockResources.html
+http://developer.android.com/reference/android/util/DisplayMetrics.html
+http://developer.android.com/reference/java/util/Formatter.html
+http://developer.android.com/reference/java/io/InputStream.html
+http://developer.android.com/reference/android/accounts/AccountAuthenticatorActivity.html
+http://developer.android.com/reference/android/app/ActivityGroup.html
+http://developer.android.com/reference/android/app/AlertDialog.html
+http://developer.android.com/reference/android/text/method/CharacterPickerDialog.html
+http://developer.android.com/reference/android/app/DatePickerDialog.html
+http://developer.android.com/reference/android/app/Dialog.html
+http://developer.android.com/reference/android/app/ExpandableListActivity.html
+http://developer.android.com/reference/android/app/LauncherActivity.html
+http://developer.android.com/reference/android/preference/PreferenceActivity.html
+http://developer.android.com/reference/android/app/ProgressDialog.html
+http://developer.android.com/reference/android/app/TabActivity.html
+http://developer.android.com/reference/android/app/TimePickerDialog.html
+http://developer.android.com/reference/android/preference/Preference.html
+http://developer.android.com/reference/android/view/animation/Interpolator.html
+http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/index.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi-v6/index.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-ldpi-v6/index.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-mdpi/index.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-mdpi-v6/index.html
+http://developer.android.com/resources/samples/NotePad/res/layout/index.html
+http://developer.android.com/resources/samples/NotePad/res/values/index.html
+http://developer.android.com/reference/org/apache/http/client/methods/AbortableHttpRequest.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpUriRequest.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpDelete.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpGet.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpHead.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpOptions.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpPost.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpPut.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpRequestBase.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpTrace.html
+http://developer.android.com/reference/org/apache/http/client/methods/package-descr.html
+http://developer.android.com/reference/java/util/concurrent/BlockingQueue.html
+http://developer.android.com/reference/java/util/concurrent/Callable.html
+http://developer.android.com/reference/java/util/concurrent/CompletionService.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentMap.html
+http://developer.android.com/reference/java/util/concurrent/Delayed.html
+http://developer.android.com/reference/java/util/concurrent/Executor.html
+http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
+http://developer.android.com/reference/java/util/concurrent/Future.html
+http://developer.android.com/reference/java/util/concurrent/RejectedExecutionHandler.html
+http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html
+http://developer.android.com/reference/java/util/concurrent/ScheduledFuture.html
+http://developer.android.com/reference/java/util/concurrent/ThreadFactory.html
+http://developer.android.com/reference/java/util/concurrent/AbstractExecutorService.html
+http://developer.android.com/reference/java/util/concurrent/ArrayBlockingQueue.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentHashMap.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentLinkedQueue.html
+http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArrayList.html
+http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArraySet.html
+http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html
+http://developer.android.com/reference/java/util/concurrent/CyclicBarrier.html
+http://developer.android.com/reference/java/util/concurrent/DelayQueue.html
+http://developer.android.com/reference/java/util/concurrent/Exchanger.html
+http://developer.android.com/reference/java/util/concurrent/ExecutorCompletionService.html
+http://developer.android.com/reference/java/util/concurrent/Executors.html
+http://developer.android.com/reference/java/util/concurrent/FutureTask.html
+http://developer.android.com/reference/java/util/concurrent/LinkedBlockingQueue.html
+http://developer.android.com/reference/java/util/concurrent/PriorityBlockingQueue.html
+http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html
+http://developer.android.com/reference/java/util/concurrent/Semaphore.html
+http://developer.android.com/reference/java/util/concurrent/SynchronousQueue.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.AbortPolicy.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.CallerRunsPolicy.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardOldestPolicy.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardPolicy.html
+http://developer.android.com/reference/java/util/concurrent/BrokenBarrierException.html
+http://developer.android.com/reference/java/util/concurrent/RejectedExecutionException.html
+http://developer.android.com/reference/java/lang/Exception.html
+http://developer.android.com/reference/java/lang/StackTraceElement.html
+http://developer.android.com/reference/java/io/PrintWriter.html
+http://developer.android.com/reference/java/io/PrintStream.html
+http://developer.android.com/reference/java/lang/Enum.html
+http://developer.android.com/reference/java/lang/Comparable.html
+http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html
+http://developer.android.com/reference/android/view/animation/AccelerateDecelerateInterpolator.html
+http://developer.android.com/reference/android/view/animation/AccelerateInterpolator.html
+http://developer.android.com/reference/android/view/animation/AlphaAnimation.html
+http://developer.android.com/reference/android/view/animation/Animation.Description.html
+http://developer.android.com/reference/android/view/animation/AnimationSet.html
+http://developer.android.com/reference/android/view/animation/AnimationUtils.html
+http://developer.android.com/reference/android/view/animation/AnticipateInterpolator.html
+http://developer.android.com/reference/android/view/animation/AnticipateOvershootInterpolator.html
+http://developer.android.com/reference/android/view/animation/BounceInterpolator.html
+http://developer.android.com/reference/android/view/animation/CycleInterpolator.html
+http://developer.android.com/reference/android/view/animation/DecelerateInterpolator.html
+http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.html
+http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.AnimationParameters.html
+http://developer.android.com/reference/android/view/animation/LayoutAnimationController.html
+http://developer.android.com/reference/android/view/animation/LayoutAnimationController.AnimationParameters.html
+http://developer.android.com/reference/android/view/animation/LinearInterpolator.html
+http://developer.android.com/reference/android/view/animation/OvershootInterpolator.html
+http://developer.android.com/reference/android/view/animation/RotateAnimation.html
+http://developer.android.com/reference/android/view/animation/ScaleAnimation.html
+http://developer.android.com/reference/android/view/animation/Transformation.html
+http://developer.android.com/reference/android/view/animation/TranslateAnimation.html
+http://developer.android.com/reference/android/view/animation/package-descr.html
+http://developer.android.com/reference/android/widget/package-descr.html
+http://developer.android.com/reference/android/database/Cursor.html
+http://developer.android.com/reference/java/security/PublicKey.html
+http://developer.android.com/reference/java/lang/NullPointerException.html
+http://developer.android.com/reference/javax/security/auth/Destroyable.html
+http://developer.android.com/reference/javax/security/auth/AuthPermission.html
+http://developer.android.com/reference/javax/security/auth/PrivateCredentialPermission.html
+http://developer.android.com/reference/javax/security/auth/Subject.html
+http://developer.android.com/reference/javax/security/auth/SubjectDomainCombiner.html
+http://developer.android.com/reference/javax/security/auth/DestroyFailedException.html
+http://developer.android.com/reference/javax/security/auth/package-descr.html
+http://developer.android.com/reference/java/util/logging/Filter.html
+http://developer.android.com/reference/java/util/logging/LoggingMXBean.html
+http://developer.android.com/reference/java/util/logging/ConsoleHandler.html
+http://developer.android.com/reference/java/util/logging/ErrorManager.html
+http://developer.android.com/reference/java/util/logging/FileHandler.html
+http://developer.android.com/reference/java/util/logging/Formatter.html
+http://developer.android.com/reference/java/util/logging/Handler.html
+http://developer.android.com/reference/java/util/logging/Level.html
+http://developer.android.com/reference/java/util/logging/Logger.html
+http://developer.android.com/reference/java/util/logging/LoggingPermission.html
+http://developer.android.com/reference/java/util/logging/LogManager.html
+http://developer.android.com/reference/java/util/logging/LogRecord.html
+http://developer.android.com/reference/java/util/logging/MemoryHandler.html
+http://developer.android.com/reference/java/util/logging/SimpleFormatter.html
+http://developer.android.com/reference/java/util/logging/SocketHandler.html
+http://developer.android.com/reference/java/util/logging/StreamHandler.html
+http://developer.android.com/reference/java/util/logging/XMLFormatter.html
+http://developer.android.com/reference/java/util/logging/package-descr.html
+http://developer.android.com/reference/java/io/OutputStream.html
+http://developer.android.com/reference/android/Manifest.html
+http://developer.android.com/reference/android/R.html
+http://developer.android.com/reference/android/R.anim.html
+http://developer.android.com/reference/android/R.array.html
+http://developer.android.com/reference/android/R.bool.html
+http://developer.android.com/reference/android/R.color.html
+http://developer.android.com/reference/android/R.dimen.html
+http://developer.android.com/reference/android/R.drawable.html
+http://developer.android.com/reference/android/R.integer.html
+http://developer.android.com/reference/android/R.layout.html
+http://developer.android.com/reference/android/R.plurals.html
+http://developer.android.com/reference/android/R.raw.html
+http://developer.android.com/reference/android/R.string.html
+http://developer.android.com/reference/android/R.xml.html
+http://developer.android.com/reference/android/media/MediaPlayer.html
+http://developer.android.com/reference/android/media/MediaRecorder.html
+http://developer.android.com/reference/android/media/JetPlayer.html
+http://developer.android.com/guide/topics/media/jet/jetcreator_manual.html
+http://developer.android.com/reference/android/content/ContentValues.html
 http://developer.android.com/reference/java/lang/Appendable.html
 http://developer.android.com/reference/java/lang/Cloneable.html
-http://developer.android.com/reference/java/lang/Comparable.html
 http://developer.android.com/reference/java/lang/Iterable.html
 http://developer.android.com/reference/java/lang/Readable.html
 http://developer.android.com/reference/java/lang/Thread.UncaughtExceptionHandler.html
@@ -877,13 +1134,14 @@
 http://developer.android.com/reference/java/lang/Character.html
 http://developer.android.com/reference/java/lang/Character.Subset.html
 http://developer.android.com/reference/java/lang/Character.UnicodeBlock.html
+http://developer.android.com/reference/java/lang/ClassLoader.html
 http://developer.android.com/reference/java/lang/Compiler.html
 http://developer.android.com/reference/java/lang/Double.html
-http://developer.android.com/reference/java/lang/Enum.html
 http://developer.android.com/reference/java/lang/Float.html
 http://developer.android.com/reference/java/lang/InheritableThreadLocal.html
 http://developer.android.com/reference/java/lang/Integer.html
 http://developer.android.com/reference/java/lang/Long.html
+http://developer.android.com/reference/java/lang/Math.html
 http://developer.android.com/reference/java/lang/Number.html
 http://developer.android.com/reference/java/lang/Package.html
 http://developer.android.com/reference/java/lang/Process.html
@@ -892,14 +1150,13 @@
 http://developer.android.com/reference/java/lang/RuntimePermission.html
 http://developer.android.com/reference/java/lang/SecurityManager.html
 http://developer.android.com/reference/java/lang/Short.html
-http://developer.android.com/reference/java/lang/StackTraceElement.html
 http://developer.android.com/reference/java/lang/StrictMath.html
 http://developer.android.com/reference/java/lang/StringBuffer.html
+http://developer.android.com/reference/java/lang/StringBuilder.html
 http://developer.android.com/reference/java/lang/System.html
 http://developer.android.com/reference/java/lang/Thread.html
 http://developer.android.com/reference/java/lang/ThreadGroup.html
 http://developer.android.com/reference/java/lang/ThreadLocal.html
-http://developer.android.com/reference/java/lang/Void.html
 http://developer.android.com/reference/java/lang/Thread.State.html
 http://developer.android.com/reference/java/lang/ArithmeticException.html
 http://developer.android.com/reference/java/lang/ArrayIndexOutOfBoundsException.html
@@ -908,19 +1165,14 @@
 http://developer.android.com/reference/java/lang/ClassNotFoundException.html
 http://developer.android.com/reference/java/lang/CloneNotSupportedException.html
 http://developer.android.com/reference/java/lang/EnumConstantNotPresentException.html
-http://developer.android.com/reference/java/lang/Exception.html
 http://developer.android.com/reference/java/lang/IllegalAccessException.html
-http://developer.android.com/reference/java/lang/IllegalArgumentException.html
 http://developer.android.com/reference/java/lang/IllegalMonitorStateException.html
-http://developer.android.com/reference/java/lang/IllegalStateException.html
 http://developer.android.com/reference/java/lang/IllegalThreadStateException.html
 http://developer.android.com/reference/java/lang/IndexOutOfBoundsException.html
 http://developer.android.com/reference/java/lang/InstantiationException.html
-http://developer.android.com/reference/java/lang/InterruptedException.html
 http://developer.android.com/reference/java/lang/NegativeArraySizeException.html
 http://developer.android.com/reference/java/lang/NoSuchFieldException.html
 http://developer.android.com/reference/java/lang/NoSuchMethodException.html
-http://developer.android.com/reference/java/lang/NullPointerException.html
 http://developer.android.com/reference/java/lang/NumberFormatException.html
 http://developer.android.com/reference/java/lang/StringIndexOutOfBoundsException.html
 http://developer.android.com/reference/java/lang/TypeNotPresentException.html
@@ -947,46 +1199,90 @@
 http://developer.android.com/reference/java/lang/UnsupportedClassVersionError.html
 http://developer.android.com/reference/java/lang/VerifyError.html
 http://developer.android.com/reference/java/lang/VirtualMachineError.html
+http://developer.android.com/reference/java/nio/channels/AlreadyConnectedException.html
+http://developer.android.com/reference/java/nio/channels/CancelledKeyException.html
+http://developer.android.com/reference/java/nio/channels/ClosedSelectorException.html
+http://developer.android.com/reference/java/nio/channels/ConnectionPendingException.html
+http://developer.android.com/reference/java/util/FormatterClosedException.html
+http://developer.android.com/reference/java/nio/channels/IllegalBlockingModeException.html
+http://developer.android.com/reference/java/nio/InvalidMarkException.html
+http://developer.android.com/reference/java/nio/channels/NoConnectionPendingException.html
+http://developer.android.com/reference/java/nio/channels/NonReadableChannelException.html
+http://developer.android.com/reference/java/nio/channels/NonWritableChannelException.html
+http://developer.android.com/reference/java/nio/channels/NotYetBoundException.html
+http://developer.android.com/reference/java/nio/channels/NotYetConnectedException.html
+http://developer.android.com/reference/java/nio/channels/OverlappingFileLockException.html
+http://developer.android.com/reference/org/apache/http/protocol/ExecutionContext.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpExpectationVerifier.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpProcessor.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandler.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerResolver.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestInterceptorList.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpResponseInterceptorList.html
+http://developer.android.com/reference/org/apache/http/protocol/BasicHttpContext.html
+http://developer.android.com/reference/org/apache/http/protocol/BasicHttpProcessor.html
+http://developer.android.com/reference/org/apache/http/protocol/DefaultedHttpContext.html
+http://developer.android.com/reference/org/apache/http/protocol/HTTP.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpDateGenerator.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestExecutor.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerRegistry.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpService.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestConnControl.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestContent.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestDate.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestExpectContinue.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestTargetHost.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestUserAgent.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseConnControl.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseContent.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseDate.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseServer.html
+http://developer.android.com/reference/org/apache/http/protocol/SyncBasicHttpContext.html
+http://developer.android.com/reference/org/apache/http/protocol/UriPatternMatcher.html
+http://developer.android.com/reference/org/apache/http/auth/AUTH.html
+http://developer.android.com/reference/android/accounts/AbstractAccountAuthenticator.html
 http://developer.android.com/reference/org/apache/http/impl/client/AbstractAuthenticationHandler.html
-http://developer.android.com/reference/org/apache/http/impl/conn/AbstractClientConnAdapter.html
 http://developer.android.com/reference/java/util/AbstractCollection.html
 http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/AbstractConnPool.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/AbstractCookieAttributeHandler.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/AbstractCookieSpec.html
 http://developer.android.com/reference/android/database/AbstractCursor.html
-http://developer.android.com/reference/java/util/concurrent/AbstractExecutorService.html
 http://developer.android.com/reference/org/apache/http/impl/client/AbstractHttpClient.html
-http://developer.android.com/reference/org/apache/http/impl/AbstractHttpClientConnection.html
 http://developer.android.com/reference/org/apache/http/entity/AbstractHttpEntity.html
 http://developer.android.com/reference/org/apache/http/params/AbstractHttpParams.html
-http://developer.android.com/reference/org/apache/http/impl/AbstractHttpServerConnection.html
 http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.AbstractInputMethodImpl.html
 http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.AbstractInputMethodSessionImpl.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractInterruptibleChannel.html
 http://developer.android.com/reference/java/util/AbstractMap.html
 http://developer.android.com/reference/org/apache/http/impl/io/AbstractMessageParser.html
 http://developer.android.com/reference/org/apache/http/impl/io/AbstractMessageWriter.html
-http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPoolEntry.html
 http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.html
 http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html
 http://developer.android.com/reference/org/apache/http/impl/io/AbstractSessionInputBuffer.html
 http://developer.android.com/reference/org/apache/http/impl/io/AbstractSessionOutputBuffer.html
+http://developer.android.com/reference/android/content/AbstractThreadedSyncAdapter.html
 http://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier.html
-http://developer.android.com/reference/android/view/animation/AccelerateDecelerateInterpolator.html
 http://developer.android.com/reference/java/security/AccessControlContext.html
 http://developer.android.com/reference/java/security/AccessController.html
+http://developer.android.com/reference/android/accessibilityservice/AccessibilityServiceInfo.html
 http://developer.android.com/reference/java/lang/reflect/AccessibleObject.html
-http://developer.android.com/reference/android/widget/AdapterView.AdapterContextMenuInfo.html
+http://developer.android.com/reference/android/accounts/Account.html
+http://developer.android.com/reference/android/accounts/AccountAuthenticatorResponse.html
+http://developer.android.com/reference/android/accounts/AccountManager.html
+http://developer.android.com/reference/android/app/ActivityManager.html
+http://developer.android.com/reference/android/app/ActivityManager.MemoryInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.ProcessErrorStateInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RecentTaskInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RunningServiceInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RunningTaskInfo.html
 http://developer.android.com/reference/android/location/Address.html
+http://developer.android.com/reference/android/app/AlarmManager.html
+http://developer.android.com/reference/android/app/AlertDialog.Builder.html
 http://developer.android.com/reference/java/security/AlgorithmParameterGenerator.html
 http://developer.android.com/reference/java/security/AlgorithmParameterGeneratorSpi.html
 http://developer.android.com/reference/java/security/AlgorithmParameters.html
 http://developer.android.com/reference/java/security/AlgorithmParametersSpi.html
 http://developer.android.com/reference/android/text/style/AlignmentSpan.Standard.html
-http://developer.android.com/reference/android/text/AlteredCharSequence.html
-http://developer.android.com/reference/android/text/AndroidCharacter.html
-http://developer.android.com/reference/android/view/animation/Animation.Description.html
-http://developer.android.com/reference/android/view/animation/AnimationUtils.html
 http://developer.android.com/reference/java/text/Annotation.html
 http://developer.android.com/reference/android/appwidget/AppWidgetHost.html
 http://developer.android.com/reference/android/appwidget/AppWidgetManager.html
@@ -996,9 +1292,8 @@
 http://developer.android.com/reference/java/util/Arrays.html
 http://developer.android.com/reference/android/text/method/ArrowKeyMovementMethod.html
 http://developer.android.com/reference/junit/framework/Assert.html
-http://developer.android.com/reference/android/content/res/AssetFileDescriptor.html
 http://developer.android.com/reference/android/media/AsyncPlayer.html
-http://developer.android.com/reference/android/os/AsyncTask.html
+http://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerArgs.html
 http://developer.android.com/reference/java/util/concurrent/atomic/AtomicBoolean.html
 http://developer.android.com/reference/java/util/concurrent/atomic/AtomicIntegerArray.html
 http://developer.android.com/reference/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.html
@@ -1016,15 +1311,18 @@
 http://developer.android.com/reference/java/util/jar/Attributes.Name.html
 http://developer.android.com/reference/org/xml/sax/helpers/AttributesImpl.html
 http://developer.android.com/reference/android/media/AudioFormat.html
+http://developer.android.com/reference/android/media/AudioManager.html
 http://developer.android.com/reference/android/media/AudioRecord.html
 http://developer.android.com/reference/android/media/AudioTrack.html
 http://developer.android.com/reference/org/apache/http/auth/params/AuthParams.html
 http://developer.android.com/reference/org/apache/http/client/params/AuthPolicy.html
 http://developer.android.com/reference/org/apache/http/impl/auth/AuthSchemeBase.html
-http://developer.android.com/reference/android/text/AutoText.html
-http://developer.android.com/reference/android/widget/BaseAdapter.html
-http://developer.android.com/reference/android/widget/BaseExpandableListAdapter.html
-http://developer.android.com/reference/android/view/inputmethod/BaseInputConnection.html
+http://developer.android.com/reference/org/apache/http/auth/AuthSchemeRegistry.html
+http://developer.android.com/reference/org/apache/http/auth/AuthScope.html
+http://developer.android.com/reference/org/apache/http/auth/AuthState.html
+http://developer.android.com/reference/java/net/Authenticator.html
+http://developer.android.com/reference/android/accounts/AuthenticatorDescription.html
+http://developer.android.com/reference/junit/runner/BaseTestRunner.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/BasicClientCookie.html
 http://developer.android.com/reference/org/apache/http/impl/client/BasicCookieStore.html
 http://developer.android.com/reference/org/apache/http/impl/client/BasicCredentialsProvider.html
@@ -1036,8 +1334,6 @@
 http://developer.android.com/reference/org/apache/http/message/BasicHeaderIterator.html
 http://developer.android.com/reference/org/apache/http/message/BasicHeaderValueFormatter.html
 http://developer.android.com/reference/org/apache/http/message/BasicHeaderValueParser.html
-http://developer.android.com/reference/org/apache/http/protocol/BasicHttpContext.html
-http://developer.android.com/reference/org/apache/http/protocol/BasicHttpProcessor.html
 http://developer.android.com/reference/org/apache/http/message/BasicLineFormatter.html
 http://developer.android.com/reference/org/apache/http/message/BasicLineParser.html
 http://developer.android.com/reference/org/apache/http/message/BasicListHeaderIterator.html
@@ -1049,11 +1345,18 @@
 http://developer.android.com/reference/org/apache/http/impl/auth/BasicSchemeFactory.html
 http://developer.android.com/reference/org/apache/http/message/BasicStatusLine.html
 http://developer.android.com/reference/org/apache/http/message/BasicTokenIterator.html
-http://developer.android.com/reference/android/os/BatteryManager.html
+http://developer.android.com/reference/org/apache/http/auth/BasicUserPrincipal.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/BestMatchSpec.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/BestMatchSpecFactory.html
 http://developer.android.com/reference/java/text/Bidi.html
 http://developer.android.com/reference/java/util/BitSet.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.Major.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.Service.html
+http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html
+http://developer.android.com/reference/android/bluetooth/BluetoothServerSocket.html
+http://developer.android.com/reference/android/bluetooth/BluetoothSocket.html
 http://developer.android.com/reference/java/text/BreakIterator.html
 http://developer.android.com/reference/android/provider/Browser.html
 http://developer.android.com/reference/android/provider/Browser.BookmarkColumns.html
@@ -1061,33 +1364,23 @@
 http://developer.android.com/reference/org/apache/http/impl/cookie/BrowserCompatSpecFactory.html
 http://developer.android.com/reference/java/nio/Buffer.html
 http://developer.android.com/reference/org/apache/http/message/BufferedHeader.html
-http://developer.android.com/reference/android/os/Build.html
-http://developer.android.com/reference/android/os/Build.VERSION.html
 http://developer.android.com/reference/android/text/style/BulletSpan.html
+http://developer.android.com/reference/org/apache/http/util/ByteArrayBuffer.html
 http://developer.android.com/reference/java/nio/ByteOrder.html
-http://developer.android.com/reference/java/security/cert/CRL.html
 http://developer.android.com/reference/android/webkit/CacheManager.html
 http://developer.android.com/reference/android/webkit/CacheManager.CacheResult.html
+http://developer.android.com/reference/java/net/CacheRequest.html
+http://developer.android.com/reference/java/net/CacheResponse.html
 http://developer.android.com/reference/java/util/Calendar.html
 http://developer.android.com/reference/android/provider/CallLog.html
 http://developer.android.com/reference/android/provider/CallLog.Calls.html
 http://developer.android.com/reference/android/hardware/Camera.Parameters.html
 http://developer.android.com/reference/android/hardware/Camera.Size.html
 http://developer.android.com/reference/android/telephony/CellLocation.html
-http://developer.android.com/reference/java/security/cert/CertPath.html
-http://developer.android.com/reference/java/security/cert/CertPath.CertPathRep.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilder.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilderSpi.html
 http://developer.android.com/reference/javax/net/ssl/CertPathTrustManagerParameters.html
-http://developer.android.com/reference/java/security/cert/CertPathValidator.html
-http://developer.android.com/reference/java/security/cert/CertPathValidatorSpi.html
-http://developer.android.com/reference/java/security/cert/CertStore.html
-http://developer.android.com/reference/java/security/cert/CertStoreSpi.html
 http://developer.android.com/reference/javax/security/cert/Certificate.html
-http://developer.android.com/reference/java/security/cert/Certificate.CertificateRep.html
-http://developer.android.com/reference/java/security/cert/CertificateFactory.html
-http://developer.android.com/reference/java/security/cert/CertificateFactorySpi.html
 http://developer.android.com/reference/java/nio/channels/Channels.html
+http://developer.android.com/reference/org/apache/http/util/CharArrayBuffer.html
 http://developer.android.com/reference/android/text/style/CharacterStyle.html
 http://developer.android.com/reference/java/nio/charset/Charset.html
 http://developer.android.com/reference/java/nio/charset/CharsetDecoder.html
@@ -1103,16 +1396,14 @@
 http://developer.android.com/reference/java/text/CollationElementIterator.html
 http://developer.android.com/reference/java/text/CollationKey.html
 http://developer.android.com/reference/java/text/Collator.html
-http://developer.android.com/reference/java/security/cert/CollectionCertStoreParameters.html
 http://developer.android.com/reference/java/util/Collections.html
-http://developer.android.com/reference/android/content/res/ColorStateList.html
-http://developer.android.com/reference/android/view/inputmethod/CompletionInfo.html
-http://developer.android.com/reference/android/os/ConditionVariable.html
+http://developer.android.com/reference/android/content/ComponentName.html
+http://developer.android.com/reference/android/util/Config.html
 http://developer.android.com/reference/android/content/pm/ConfigurationInfo.html
 http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerParams.html
 http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRouteBean.html
 http://developer.android.com/reference/org/apache/http/conn/params/ConnRouteParams.html
-http://developer.android.com/reference/android/provider/Contacts.html
+http://developer.android.com/reference/android/net/ConnectivityManager.html
 http://developer.android.com/reference/android/provider/Contacts.ContactMethods.html
 http://developer.android.com/reference/android/provider/Contacts.Extensions.html
 http://developer.android.com/reference/android/provider/Contacts.GroupMembership.html
@@ -1121,12 +1412,54 @@
 http://developer.android.com/reference/android/provider/Contacts.Intents.Insert.html
 http://developer.android.com/reference/android/provider/Contacts.Intents.UI.html
 http://developer.android.com/reference/android/provider/Contacts.Organizations.html
+http://developer.android.com/reference/android/provider/Contacts.People.html
 http://developer.android.com/reference/android/provider/Contacts.People.ContactMethods.html
 http://developer.android.com/reference/android/provider/Contacts.People.Extensions.html
 http://developer.android.com/reference/android/provider/Contacts.People.Phones.html
+http://developer.android.com/reference/android/provider/Contacts.Phones.html
 http://developer.android.com/reference/android/provider/Contacts.Photos.html
 http://developer.android.com/reference/android/provider/Contacts.Settings.html
+http://developer.android.com/reference/android/provider/ContactsContract.html
+http://developer.android.com/reference/android/provider/ContactsContract.AggregationExceptions.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Email.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Event.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.GroupMembership.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Im.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Nickname.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Note.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Organization.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Photo.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Relation.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredName.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredPostal.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Website.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.AggregationSuggestions.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.Data.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.Photo.html
+http://developer.android.com/reference/android/provider/ContactsContract.Data.html
+http://developer.android.com/reference/android/provider/ContactsContract.Groups.html
+http://developer.android.com/reference/android/provider/ContactsContract.Intents.html
+http://developer.android.com/reference/android/provider/ContactsContract.Intents.Insert.html
+http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookup.html
+http://developer.android.com/reference/android/provider/ContactsContract.QuickContact.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.Data.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.Entity.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContactsEntity.html
+http://developer.android.com/reference/android/provider/ContactsContract.Settings.html
+http://developer.android.com/reference/android/provider/ContactsContract.StatusUpdates.html
+http://developer.android.com/reference/android/provider/ContactsContract.SyncState.html
+http://developer.android.com/reference/java/net/ContentHandler.html
 http://developer.android.com/reference/android/database/ContentObserver.html
+http://developer.android.com/reference/android/content/ContentProviderClient.html
+http://developer.android.com/reference/android/content/ContentProviderOperation.html
+http://developer.android.com/reference/android/content/ContentProviderOperation.Builder.html
+http://developer.android.com/reference/android/content/ContentProviderResult.html
+http://developer.android.com/reference/android/content/ContentUris.html
+http://developer.android.com/reference/java/net/CookieHandler.html
 http://developer.android.com/reference/org/apache/http/cookie/CookieIdentityComparator.html
 http://developer.android.com/reference/android/webkit/CookieManager.html
 http://developer.android.com/reference/org/apache/http/cookie/CookieOrigin.html
@@ -1134,138 +1467,115 @@
 http://developer.android.com/reference/org/apache/http/client/params/CookiePolicy.html
 http://developer.android.com/reference/org/apache/http/cookie/CookieSpecRegistry.html
 http://developer.android.com/reference/android/webkit/CookieSyncManager.html
-http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArrayList.html
-http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html
-http://developer.android.com/reference/android/os/CountDownTimer.html
-http://developer.android.com/reference/android/net/Credentials.html
 http://developer.android.com/reference/android/location/Criteria.html
 http://developer.android.com/reference/java/util/Currency.html
 http://developer.android.com/reference/android/database/CursorJoiner.html
 http://developer.android.com/reference/android/database/CursorWrapper.html
-http://developer.android.com/reference/android/view/animation/CycleInterpolator.html
-http://developer.android.com/reference/java/util/concurrent/CyclicBarrier.html
 http://developer.android.com/reference/javax/crypto/spec/DESKeySpec.html
 http://developer.android.com/reference/javax/crypto/spec/DESedeKeySpec.html
 http://developer.android.com/reference/javax/crypto/spec/DHGenParameterSpec.html
 http://developer.android.com/reference/javax/crypto/spec/DHParameterSpec.html
 http://developer.android.com/reference/javax/crypto/spec/DHPrivateKeySpec.html
 http://developer.android.com/reference/javax/crypto/spec/DHPublicKeySpec.html
-http://developer.android.com/reference/java/security/spec/DSAParameterSpec.html
-http://developer.android.com/reference/java/security/spec/DSAPrivateKeySpec.html
-http://developer.android.com/reference/java/security/spec/DSAPublicKeySpec.html
 http://developer.android.com/reference/android/database/DataSetObserver.html
 http://developer.android.com/reference/android/database/DatabaseUtils.html
 http://developer.android.com/reference/android/database/DatabaseUtils.InsertHelper.html
+http://developer.android.com/reference/java/net/DatagramPacket.html
+http://developer.android.com/reference/java/net/DatagramSocket.html
+http://developer.android.com/reference/java/net/DatagramSocketImpl.html
 http://developer.android.com/reference/java/util/Date.html
 http://developer.android.com/reference/android/text/format/DateFormat.html
 http://developer.android.com/reference/java/text/DateFormatSymbols.html
 http://developer.android.com/reference/android/webkit/DateSorter.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/DateUtils.html
-http://developer.android.com/reference/android/os/Debug.InstructionCount.html
-http://developer.android.com/reference/android/os/Debug.MemoryInfo.html
-http://developer.android.com/reference/android/view/animation/DecelerateInterpolator.html
+http://developer.android.com/reference/android/util/DebugUtils.html
 http://developer.android.com/reference/java/text/DecimalFormatSymbols.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnectionOperator.html
 http://developer.android.com/reference/org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultConnectionReuseStrategy.html
 http://developer.android.com/reference/org/xml/sax/helpers/DefaultHandler.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpRequestFactory.html
 http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpResponseFactory.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultHttpRoutePlanner.html
 http://developer.android.com/reference/org/apache/http/impl/client/DefaultRedirectHandler.html
 http://developer.android.com/reference/org/apache/http/impl/client/DefaultRequestDirector.html
 http://developer.android.com/reference/org/apache/http/impl/client/DefaultUserTokenHandler.html
-http://developer.android.com/reference/org/apache/http/protocol/DefaultedHttpContext.html
 http://developer.android.com/reference/dalvik/system/DexFile.html
 http://developer.android.com/reference/android/net/DhcpInfo.html
 http://developer.android.com/reference/java/util/Dictionary.html
 http://developer.android.com/reference/org/apache/http/impl/auth/DigestSchemeFactory.html
 http://developer.android.com/reference/javax/xml/parsers/DocumentBuilder.html
 http://developer.android.com/reference/javax/xml/parsers/DocumentBuilderFactory.html
+http://developer.android.com/reference/android/graphics/drawable/Drawable.ConstantState.html
 http://developer.android.com/reference/android/text/style/DrawableMarginSpan.html
 http://developer.android.com/reference/org/xmlpull/v1/sax2/Driver.html
 http://developer.android.com/reference/java/sql/DriverManager.html
 http://developer.android.com/reference/java/sql/DriverPropertyInfo.html
-http://developer.android.com/reference/java/security/spec/ECFieldF2m.html
-http://developer.android.com/reference/java/security/spec/ECFieldFp.html
-http://developer.android.com/reference/java/security/spec/ECGenParameterSpec.html
-http://developer.android.com/reference/java/security/spec/ECParameterSpec.html
-http://developer.android.com/reference/java/security/spec/ECPoint.html
-http://developer.android.com/reference/java/security/spec/ECPrivateKeySpec.html
-http://developer.android.com/reference/java/security/spec/ECPublicKeySpec.html
 http://developer.android.com/reference/javax/microedition/khronos/egl/EGLConfig.html
 http://developer.android.com/reference/javax/microedition/khronos/egl/EGLContext.html
 http://developer.android.com/reference/javax/microedition/khronos/egl/EGLDisplay.html
 http://developer.android.com/reference/javax/microedition/khronos/egl/EGLSurface.html
-http://developer.android.com/reference/android/text/Editable.Factory.html
 http://developer.android.com/reference/android/sax/Element.html
-http://developer.android.com/reference/java/security/spec/EllipticCurve.html
-http://developer.android.com/reference/java/security/spec/EncodedKeySpec.html
+http://developer.android.com/reference/org/apache/http/util/EncodingUtils.html
 http://developer.android.com/reference/javax/crypto/EncryptedPrivateKeyInfo.html
-http://developer.android.com/reference/org/apache/http/impl/EnglishReasonPhraseCatalog.html
 http://developer.android.com/reference/org/apache/http/impl/entity/EntityDeserializer.html
 http://developer.android.com/reference/org/apache/http/impl/entity/EntitySerializer.html
-http://developer.android.com/reference/android/os/Environment.html
-http://developer.android.com/reference/java/util/logging/ErrorManager.html
+http://developer.android.com/reference/org/apache/http/util/EntityUtils.html
 http://developer.android.com/reference/java/util/EventListenerProxy.html
+http://developer.android.com/reference/android/util/EventLogTags.html
+http://developer.android.com/reference/android/util/EventLogTags.Description.html
 http://developer.android.com/reference/java/util/EventObject.html
-http://developer.android.com/reference/java/util/concurrent/Exchanger.html
-http://developer.android.com/reference/java/util/concurrent/ExecutorCompletionService.html
-http://developer.android.com/reference/java/util/concurrent/Executors.html
+http://developer.android.com/reference/org/apache/http/util/ExceptionUtils.html
 http://developer.android.com/reference/javax/crypto/ExemptionMechanism.html
 http://developer.android.com/reference/javax/crypto/ExemptionMechanismSpi.html
-http://developer.android.com/reference/android/widget/ExpandableListView.ExpandableListContextMenuInfo.html
-http://developer.android.com/reference/android/view/inputmethod/ExtractedText.html
-http://developer.android.com/reference/android/view/inputmethod/ExtractedTextRequest.html
+http://developer.android.com/reference/android/media/ExifInterface.html
 http://developer.android.com/reference/android/media/FaceDetector.html
 http://developer.android.com/reference/android/media/FaceDetector.Face.html
+http://developer.android.com/reference/android/content/pm/FeatureInfo.html
 http://developer.android.com/reference/java/text/FieldPosition.html
+http://developer.android.com/reference/java/io/File.html
 http://developer.android.com/reference/java/nio/channels/FileChannel.MapMode.html
+http://developer.android.com/reference/java/io/FileDescriptor.html
 http://developer.android.com/reference/java/nio/channels/FileLock.html
-http://developer.android.com/reference/android/os/FileObserver.html
-http://developer.android.com/reference/android/widget/Filter.html
-http://developer.android.com/reference/android/widget/Filter.FilterResults.html
+http://developer.android.com/reference/android/util/FloatMath.html
 http://developer.android.com/reference/java/text/Format.html
 http://developer.android.com/reference/java/util/FormattableFlags.html
-http://developer.android.com/reference/java/util/concurrent/FutureTask.html
 http://developer.android.com/reference/android/opengl/GLDebugHelper.html
+http://developer.android.com/reference/android/opengl/GLES10.html
+http://developer.android.com/reference/android/opengl/GLES10Ext.html
+http://developer.android.com/reference/android/opengl/GLES11Ext.html
 http://developer.android.com/reference/android/opengl/GLU.html
 http://developer.android.com/reference/android/opengl/GLUtils.html
+http://developer.android.com/reference/android/webkit/GeolocationPermissions.html
 http://developer.android.com/reference/android/hardware/GeomagneticField.html
+http://developer.android.com/reference/android/gesture/Gesture.html
+http://developer.android.com/reference/android/gesture/GestureLibraries.html
+http://developer.android.com/reference/android/gesture/GestureLibrary.html
+http://developer.android.com/reference/android/gesture/GesturePoint.html
+http://developer.android.com/reference/android/gesture/GestureStore.html
+http://developer.android.com/reference/android/gesture/GestureStroke.html
 http://developer.android.com/reference/android/location/GpsSatellite.html
 http://developer.android.com/reference/android/location/GpsStatus.html
 http://developer.android.com/reference/java/security/GuardedObject.html
-http://developer.android.com/reference/org/apache/http/protocol/HTTP.html
-http://developer.android.com/reference/java/util/logging/Handler.html
 http://developer.android.com/reference/org/xml/sax/HandlerBase.html
 http://developer.android.com/reference/org/apache/http/message/HeaderGroup.html
-http://developer.android.com/reference/android/widget/HeaderViewListAdapter.html
-http://developer.android.com/reference/android/text/Html.html
 http://developer.android.com/reference/org/apache/http/params/HttpAbstractParamBean.html
 http://developer.android.com/reference/org/apache/http/client/params/HttpClientParams.html
-http://developer.android.com/reference/org/apache/http/impl/HttpConnectionMetricsImpl.html
 http://developer.android.com/reference/org/apache/http/params/HttpConnectionParams.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpDateGenerator.html
 http://developer.android.com/reference/org/apache/http/entity/HttpEntityWrapper.html
-http://developer.android.com/reference/org/apache/http/HttpHost.html
 http://developer.android.com/reference/org/apache/http/params/HttpProtocolParams.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestExecutor.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerRegistry.html
-http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoute.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpService.html
 http://developer.android.com/reference/org/apache/http/impl/io/HttpTransportMetricsImpl.html
 http://developer.android.com/reference/android/text/style/IconMarginSpan.html
 http://developer.android.com/reference/java/security/Identity.html
-http://developer.android.com/reference/org/apache/http/impl/conn/IdleConnectionHandler.html
 http://developer.android.com/reference/org/apache/http/conn/util/InetAddressUtils.html
 http://developer.android.com/reference/android/view/inputmethod/InputBinding.html
 http://developer.android.com/reference/android/view/inputmethod/InputConnectionWrapper.html
-http://developer.android.com/reference/android/text/InputFilter.AllCaps.html
-http://developer.android.com/reference/android/text/InputFilter.LengthFilter.html
 http://developer.android.com/reference/android/view/inputmethod/InputMethodInfo.html
 http://developer.android.com/reference/android/inputmethodservice/InputMethodService.Insets.html
 http://developer.android.com/reference/org/xml/sax/InputSource.html
+http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html
+http://developer.android.com/reference/android/app/Instrumentation.ActivityResult.html
+http://developer.android.com/reference/android/content/Intent.FilterComparison.html
+http://developer.android.com/reference/android/content/Intent.ShortcutIconResource.html
+http://developer.android.com/reference/android/content/IntentFilter.html
+http://developer.android.com/reference/android/content/IntentFilter.AuthorityEntry.html
+http://developer.android.com/reference/android/content/IntentSender.html
 http://developer.android.com/reference/javax/crypto/spec/IvParameterSpec.html
 http://developer.android.com/reference/org/json/JSONArray.html
 http://developer.android.com/reference/org/json/JSONObject.html
@@ -1294,18 +1604,14 @@
 http://developer.android.com/reference/java/security/KeyStoreSpi.html
 http://developer.android.com/reference/android/inputmethodservice/Keyboard.Key.html
 http://developer.android.com/reference/android/inputmethodservice/Keyboard.Row.html
-http://developer.android.com/reference/java/security/cert/LDAPCertStoreParameters.html
+http://developer.android.com/reference/android/app/KeyguardManager.html
+http://developer.android.com/reference/android/app/KeyguardManager.KeyguardLock.html
+http://developer.android.com/reference/org/apache/http/util/LangUtils.html
+http://developer.android.com/reference/android/app/LauncherActivity.IconResizer.html
+http://developer.android.com/reference/android/app/LauncherActivity.ListItem.html
 http://developer.android.com/reference/org/apache/http/impl/entity/LaxContentLengthStrategy.html
-http://developer.android.com/reference/android/text/Layout.html
-http://developer.android.com/reference/android/text/Layout.Directions.html
-http://developer.android.com/reference/android/view/animation/LayoutAnimationController.html
-http://developer.android.com/reference/android/view/animation/LayoutAnimationController.AnimationParameters.html
 http://developer.android.com/reference/android/text/style/LeadingMarginSpan.Standard.html
-http://developer.android.com/reference/java/util/logging/Level.html
-http://developer.android.com/reference/android/view/animation/LinearInterpolator.html
-http://developer.android.com/reference/android/text/util/Linkify.html
-http://developer.android.com/reference/android/widget/ListView.FixedViewInfo.html
-http://developer.android.com/reference/android/provider/LiveFolders.html
+http://developer.android.com/reference/android/app/LocalActivityManager.html
 http://developer.android.com/reference/android/net/LocalServerSocket.html
 http://developer.android.com/reference/android/net/LocalSocket.html
 http://developer.android.com/reference/android/net/LocalSocketAddress.html
@@ -1314,17 +1620,10 @@
 http://developer.android.com/reference/android/location/LocationProvider.html
 http://developer.android.com/reference/org/xml/sax/helpers/LocatorImpl.html
 http://developer.android.com/reference/java/util/concurrent/locks/LockSupport.html
-http://developer.android.com/reference/java/util/logging/LogManager.html
-http://developer.android.com/reference/java/util/logging/LogRecord.html
-http://developer.android.com/reference/java/util/logging/Logger.html
-http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionInputBuffer.html
-http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionOutputBuffer.html
-http://developer.android.com/reference/android/text/LoginFilter.html
-http://developer.android.com/reference/java/security/spec/MGF1ParameterSpec.html
+http://developer.android.com/reference/android/util/LogPrinter.html
 http://developer.android.com/reference/javax/crypto/Mac.html
 http://developer.android.com/reference/javax/crypto/MacSpi.html
 http://developer.android.com/reference/android/net/MailTo.html
-http://developer.android.com/reference/java/util/regex/Matcher.html
 http://developer.android.com/reference/java/math/MathContext.html
 http://developer.android.com/reference/android/opengl/Matrix.html
 http://developer.android.com/reference/android/database/MatrixCursor.RowBuilder.html
@@ -1334,6 +1633,7 @@
 http://developer.android.com/reference/android/media/MediaRecorder.VideoEncoder.html
 http://developer.android.com/reference/android/media/MediaRecorder.VideoSource.html
 http://developer.android.com/reference/android/media/MediaScannerConnection.html
+http://developer.android.com/reference/android/provider/MediaStore.html
 http://developer.android.com/reference/android/provider/MediaStore.Audio.html
 http://developer.android.com/reference/android/provider/MediaStore.Audio.Albums.html
 http://developer.android.com/reference/android/provider/MediaStore.Audio.Artists.html
@@ -1348,24 +1648,24 @@
 http://developer.android.com/reference/android/provider/MediaStore.Images.Thumbnails.html
 http://developer.android.com/reference/android/provider/MediaStore.Video.html
 http://developer.android.com/reference/android/provider/MediaStore.Video.Media.html
-http://developer.android.com/reference/android/os/MemoryFile.html
-http://developer.android.com/reference/android/os/Message.html
+http://developer.android.com/reference/android/provider/MediaStore.Video.Thumbnails.html
 http://developer.android.com/reference/java/security/MessageDigestSpi.html
-http://developer.android.com/reference/android/os/MessageQueue.html
-http://developer.android.com/reference/android/os/Messenger.html
-http://developer.android.com/reference/android/text/method/MetaKeyKeyListener.html
 http://developer.android.com/reference/android/webkit/MimeTypeMap.html
 http://developer.android.com/reference/android/test/mock/MockDialogInterface.html
 http://developer.android.com/reference/java/lang/reflect/Modifier.html
-http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.CommaTokenizer.html
+http://developer.android.com/reference/android/util/MonthDisplayHelper.html
+http://developer.android.com/reference/android/test/MoreAsserts.html
 http://developer.android.com/reference/org/apache/http/conn/MultihomePlainSocketFactory.html
+http://developer.android.com/reference/org/apache/http/auth/NTCredentials.html
+http://developer.android.com/reference/org/apache/http/auth/NTUserPrincipal.html
 http://developer.android.com/reference/org/xml/sax/helpers/NamespaceSupport.html
 http://developer.android.com/reference/android/telephony/NeighboringCellInfo.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftSpecFactory.html
 http://developer.android.com/reference/android/net/NetworkInfo.html
-http://developer.android.com/reference/org/apache/http/impl/NoConnectionReuseStrategy.html
-http://developer.android.com/reference/android/text/NoCopySpan.Concrete.html
+http://developer.android.com/reference/java/net/NetworkInterface.html
+http://developer.android.com/reference/android/app/Notification.html
+http://developer.android.com/reference/android/app/NotificationManager.html
 http://developer.android.com/reference/java/awt/font/NumericShaper.html
 http://developer.android.com/reference/javax/crypto/spec/OAEPParameterSpec.html
 http://developer.android.com/reference/java/io/ObjectInputStream.GetField.html
@@ -1373,48 +1673,44 @@
 http://developer.android.com/reference/java/io/ObjectStreamClass.html
 http://developer.android.com/reference/java/io/ObjectStreamField.html
 http://developer.android.com/reference/java/util/Observable.html
-http://developer.android.com/reference/java/io/OutputStream.html
+http://developer.android.com/reference/android/gesture/OrientedBoundingBox.html
 http://developer.android.com/reference/javax/crypto/spec/PBEKeySpec.html
 http://developer.android.com/reference/javax/crypto/spec/PBEParameterSpec.html
-http://developer.android.com/reference/java/security/cert/PKIXCertPathChecker.html
-http://developer.android.com/reference/java/security/cert/PKIXCertPathValidatorResult.html
-http://developer.android.com/reference/java/security/cert/PKIXParameters.html
-http://developer.android.com/reference/java/security/spec/PSSParameterSpec.html
 http://developer.android.com/reference/javax/crypto/spec/PSource.html
 http://developer.android.com/reference/java/util/jar/Pack200.html
 http://developer.android.com/reference/android/content/pm/PackageInfo.html
-http://developer.android.com/reference/android/content/pm/PackageItemInfo.html
 http://developer.android.com/reference/android/content/pm/PackageItemInfo.DisplayNameComparator.html
 http://developer.android.com/reference/android/content/pm/PackageStats.html
-http://developer.android.com/reference/android/os/Parcel.html
-http://developer.android.com/reference/android/os/ParcelFileDescriptor.html
+http://developer.android.com/reference/android/util/Pair.html
 http://developer.android.com/reference/java/text/ParsePosition.html
 http://developer.android.com/reference/org/xml/sax/helpers/ParserAdapter.html
 http://developer.android.com/reference/org/apache/http/message/ParserCursor.html
 http://developer.android.com/reference/org/xml/sax/helpers/ParserFactory.html
+http://developer.android.com/reference/java/net/PasswordAuthentication.html
+http://developer.android.com/reference/javax/security/auth/callback/PasswordCallback.html
 http://developer.android.com/reference/android/text/method/PasswordTransformationMethod.html
-http://developer.android.com/reference/java/util/regex/Pattern.html
+http://developer.android.com/reference/android/app/PendingIntent.html
 http://developer.android.com/reference/java/security/Permission.html
 http://developer.android.com/reference/java/security/PermissionCollection.html
 http://developer.android.com/reference/android/telephony/PhoneNumberFormattingTextWatcher.html
 http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html
 http://developer.android.com/reference/android/telephony/PhoneStateListener.html
-http://developer.android.com/reference/java/nio/channels/Pipe.html
 http://developer.android.com/reference/org/apache/http/conn/scheme/PlainSocketFactory.html
 http://developer.android.com/reference/android/webkit/Plugin.html
 http://developer.android.com/reference/android/webkit/PluginData.html
 http://developer.android.com/reference/android/webkit/PluginList.html
 http://developer.android.com/reference/java/security/Policy.html
-http://developer.android.com/reference/java/security/cert/PolicyQualifierInfo.html
-http://developer.android.com/reference/android/widget/PopupWindow.html
-http://developer.android.com/reference/android/os/PowerManager.WakeLock.html
+http://developer.android.com/reference/android/gesture/Prediction.html
 http://developer.android.com/reference/android/preference/PreferenceManager.html
 http://developer.android.com/reference/java/util/prefs/Preferences.html
+http://developer.android.com/reference/android/util/PrintStreamPrinter.html
+http://developer.android.com/reference/android/util/PrintWriterPrinter.html
 http://developer.android.com/reference/java/beans/PropertyChangeSupport.html
 http://developer.android.com/reference/java/security/ProtectionDomain.html
 http://developer.android.com/reference/org/apache/http/ProtocolVersion.html
 http://developer.android.com/reference/java/security/Provider.Service.html
-http://developer.android.com/reference/org/apache/http/impl/conn/ProxySelectorRoutePlanner.html
+http://developer.android.com/reference/java/net/Proxy.html
+http://developer.android.com/reference/java/net/ProxySelector.html
 http://developer.android.com/reference/android/text/style/QuoteSpan.html
 http://developer.android.com/reference/javax/crypto/spec/RC2ParameterSpec.html
 http://developer.android.com/reference/javax/crypto/spec/RC5ParameterSpec.html
@@ -1426,10 +1722,6 @@
 http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965SpecFactory.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.html
-http://developer.android.com/reference/java/security/spec/RSAKeyGenParameterSpec.html
-http://developer.android.com/reference/java/security/spec/RSAOtherPrimeInfo.html
-http://developer.android.com/reference/java/security/spec/RSAPrivateKeySpec.html
-http://developer.android.com/reference/java/security/spec/RSAPublicKeySpec.html
 http://developer.android.com/reference/java/util/Random.html
 http://developer.android.com/reference/java/io/RandomAccessFile.html
 http://developer.android.com/reference/java/io/Reader.html
@@ -1440,26 +1732,12 @@
 http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.ReadLock.html
 http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.WriteLock.html
 http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueWorker.html
-http://developer.android.com/reference/android/os/RemoteCallbackList.html
-http://developer.android.com/reference/android/os/IInterface.html
-http://developer.android.com/reference/android/widget/RemoteViews.html
+http://developer.android.com/reference/java/lang/ref/Reference.html
 http://developer.android.com/reference/android/text/method/ReplacementTransformationMethod.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestConnControl.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestContent.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestDate.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestExpectContinue.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestTargetHost.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestUserAgent.html
 http://developer.android.com/reference/android/content/pm/ResolveInfo.html
 http://developer.android.com/reference/android/content/pm/ResolveInfo.DisplayNameComparator.html
 http://developer.android.com/reference/java/util/ResourceBundle.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseConnControl.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseContent.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseDate.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseServer.html
-http://developer.android.com/reference/android/os/ResultReceiver.html
-http://developer.android.com/reference/android/text/util/Rfc822Token.html
-http://developer.android.com/reference/android/text/util/Rfc822Tokenizer.html
+http://developer.android.com/reference/java/net/ResponseCache.html
 http://developer.android.com/reference/android/media/Ringtone.html
 http://developer.android.com/reference/android/media/RingtoneManager.html
 http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RouteSpecificPool.html
@@ -1468,6 +1746,7 @@
 http://developer.android.com/reference/javax/xml/parsers/SAXParser.html
 http://developer.android.com/reference/javax/xml/parsers/SAXParserFactory.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteClosable.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html
 http://developer.android.com/reference/javax/net/ssl/SSLContext.html
 http://developer.android.com/reference/javax/net/ssl/SSLContextSpi.html
@@ -1486,88 +1765,101 @@
 http://developer.android.com/reference/javax/crypto/spec/SecretKeySpec.html
 http://developer.android.com/reference/java/security/SecureRandomSpi.html
 http://developer.android.com/reference/java/security/Security.html
-http://developer.android.com/reference/android/text/Selection.html
 http://developer.android.com/reference/java/nio/channels/SelectionKey.html
-http://developer.android.com/reference/java/nio/channels/Selector.html
-http://developer.android.com/reference/java/nio/channels/spi/SelectorProvider.html
-http://developer.android.com/reference/java/util/concurrent/Semaphore.html
 http://developer.android.com/reference/android/hardware/Sensor.html
 http://developer.android.com/reference/android/hardware/SensorEvent.html
+http://developer.android.com/reference/android/hardware/SensorManager.html
+http://developer.android.com/reference/java/net/ServerSocket.html
 http://developer.android.com/reference/javax/net/ServerSocketFactory.html
 http://developer.android.com/reference/android/telephony/ServiceState.html
 http://developer.android.com/reference/android/provider/Settings.html
 http://developer.android.com/reference/android/provider/Settings.NameValueTable.html
+http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.ShaderFactory.html
 http://developer.android.com/reference/android/content/pm/Signature.html
 http://developer.android.com/reference/java/security/SignatureSpi.html
 http://developer.android.com/reference/java/security/SignedObject.html
-http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.html
-http://developer.android.com/reference/android/telephony/gsm/SmsManager.html
+http://developer.android.com/reference/android/telephony/SmsManager.html
 http://developer.android.com/reference/android/telephony/gsm/SmsMessage.html
 http://developer.android.com/reference/android/telephony/gsm/SmsMessage.SubmitPdu.html
+http://developer.android.com/reference/java/net/Socket.html
+http://developer.android.com/reference/java/net/SocketAddress.html
 http://developer.android.com/reference/javax/net/SocketFactory.html
-http://developer.android.com/reference/android/text/Spannable.Factory.html
-http://developer.android.com/reference/android/text/SpannableString.html
-http://developer.android.com/reference/android/text/SpannableStringBuilder.html
-http://developer.android.com/reference/android/text/SpannedString.html
-http://developer.android.com/reference/android/os/StatFs.html
+http://developer.android.com/reference/java/net/SocketImpl.html
+http://developer.android.com/reference/android/util/SparseBooleanArray.html
+http://developer.android.com/reference/android/util/SparseIntArray.html
+http://developer.android.com/reference/android/net/http/SslCertificate.html
+http://developer.android.com/reference/android/net/http/SslCertificate.DName.html
+http://developer.android.com/reference/android/util/StateSet.html
 http://developer.android.com/reference/java/io/StreamTokenizer.html
 http://developer.android.com/reference/org/apache/http/impl/entity/StrictContentLengthStrategy.html
+http://developer.android.com/reference/android/util/StringBuilderPrinter.html
 http://developer.android.com/reference/java/text/StringCharacterIterator.html
 http://developer.android.com/reference/java/util/StringTokenizer.html
-http://developer.android.com/reference/javax/security/auth/Subject.html
-http://developer.android.com/reference/javax/security/auth/SubjectDomainCombiner.html
-http://developer.android.com/reference/android/widget/TabHost.TabSpec.html
+http://developer.android.com/reference/android/content/SyncAdapterType.html
+http://developer.android.com/reference/android/content/SyncContext.html
+http://developer.android.com/reference/android/content/SyncResult.html
+http://developer.android.com/reference/android/provider/SyncStateContract.html
+http://developer.android.com/reference/android/provider/SyncStateContract.Constants.html
+http://developer.android.com/reference/android/provider/SyncStateContract.Helpers.html
 http://developer.android.com/reference/android/text/style/TabStopSpan.Standard.html
+http://developer.android.com/reference/android/telephony/TelephonyManager.html
 http://developer.android.com/reference/dalvik/system/TemporaryDirectory.html
 http://developer.android.com/reference/junit/framework/TestFailure.html
 http://developer.android.com/reference/android/test/suitebuilder/TestMethod.html
 http://developer.android.com/reference/junit/framework/TestResult.html
+http://developer.android.com/reference/junit/framework/TestSuite.html
 http://developer.android.com/reference/android/test/suitebuilder/TestSuiteBuilder.html
-http://developer.android.com/reference/android/text/TextUtils.html
-http://developer.android.com/reference/android/text/TextUtils.SimpleStringSplitter.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.AbortPolicy.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.CallerRunsPolicy.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardOldestPolicy.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardPolicy.html
 http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.html
 http://developer.android.com/reference/android/text/format/Time.html
+http://developer.android.com/reference/android/util/TimeUtils.html
 http://developer.android.com/reference/java/util/TimeZone.html
 http://developer.android.com/reference/java/util/Timer.html
 http://developer.android.com/reference/java/util/TimerTask.html
 http://developer.android.com/reference/java/security/Timestamp.html
-http://developer.android.com/reference/android/widget/Toast.html
-http://developer.android.com/reference/android/os/TokenWatcher.html
+http://developer.android.com/reference/android/util/TimingLogger.html
 http://developer.android.com/reference/android/media/ToneGenerator.html
 http://developer.android.com/reference/android/text/method/Touch.html
 http://developer.android.com/reference/dalvik/system/TouchDex.html
-http://developer.android.com/reference/android/view/animation/Transformation.html
-http://developer.android.com/reference/java/security/cert/TrustAnchor.html
+http://developer.android.com/reference/android/test/TouchUtils.html
 http://developer.android.com/reference/javax/net/ssl/TrustManagerFactory.html
 http://developer.android.com/reference/javax/net/ssl/TrustManagerFactorySpi.html
 http://developer.android.com/reference/java/sql/Types.html
+http://developer.android.com/reference/java/net/URI.html
 http://developer.android.com/reference/org/apache/http/client/utils/URIUtils.html
+http://developer.android.com/reference/java/net/URL.html
+http://developer.android.com/reference/java/net/URLConnection.html
+http://developer.android.com/reference/java/net/URLDecoder.html
 http://developer.android.com/reference/org/apache/http/client/utils/URLEncodedUtils.html
+http://developer.android.com/reference/java/net/URLEncoder.html
+http://developer.android.com/reference/java/net/URLStreamHandler.html
 http://developer.android.com/reference/android/webkit/URLUtil.html
 http://developer.android.com/reference/java/util/UUID.html
+http://developer.android.com/reference/android/net/Uri.html
 http://developer.android.com/reference/android/net/Uri.Builder.html
-http://developer.android.com/reference/org/apache/http/protocol/UriPatternMatcher.html
+http://developer.android.com/reference/android/content/UriMatcher.html
 http://developer.android.com/reference/android/webkit/UrlInterceptRegistry.html
 http://developer.android.com/reference/android/net/UrlQuerySanitizer.html
 http://developer.android.com/reference/android/net/UrlQuerySanitizer.IllegalCharacterValueSanitizer.html
 http://developer.android.com/reference/android/net/UrlQuerySanitizer.ParameterValuePair.html
 http://developer.android.com/reference/android/provider/UserDictionary.html
 http://developer.android.com/reference/android/provider/UserDictionary.Words.html
+http://developer.android.com/reference/org/apache/http/auth/UsernamePasswordCredentials.html
 http://developer.android.com/reference/dalvik/system/VMDebug.html
 http://developer.android.com/reference/dalvik/system/VMRuntime.html
 http://developer.android.com/reference/dalvik/system/VMStack.html
+http://developer.android.com/reference/junit/runner/Version.html
+http://developer.android.com/reference/org/apache/http/util/VersionInfo.html
+http://developer.android.com/reference/android/test/ViewAsserts.html
 http://developer.android.com/reference/android/opengl/Visibility.html
 http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/WaitingThread.html
 http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/WaitingThreadAborter.html
+http://developer.android.com/reference/android/app/WallpaperManager.html
 http://developer.android.com/reference/android/webkit/WebBackForwardList.html
 http://developer.android.com/reference/android/webkit/WebChromeClient.html
 http://developer.android.com/reference/android/webkit/WebHistoryItem.html
 http://developer.android.com/reference/android/webkit/WebIconDatabase.html
 http://developer.android.com/reference/android/webkit/WebSettings.html
+http://developer.android.com/reference/android/webkit/WebStorage.html
 http://developer.android.com/reference/android/webkit/WebView.HitTestResult.html
 http://developer.android.com/reference/android/webkit/WebView.WebViewTransport.html
 http://developer.android.com/reference/android/webkit/WebViewClient.html
@@ -1580,121 +1872,109 @@
 http://developer.android.com/reference/android/net/wifi/WifiConfiguration.Protocol.html
 http://developer.android.com/reference/android/net/wifi/WifiConfiguration.Status.html
 http://developer.android.com/reference/android/net/wifi/WifiInfo.html
+http://developer.android.com/reference/android/net/wifi/WifiManager.html
+http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
 http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html
-http://developer.android.com/reference/org/apache/http/impl/conn/Wire.html
 http://developer.android.com/reference/java/io/Writer.html
 http://developer.android.com/reference/javax/security/auth/x500/X500Principal.html
-http://developer.android.com/reference/java/security/cert/X509CRLEntry.html
-http://developer.android.com/reference/java/security/cert/X509CRLSelector.html
-http://developer.android.com/reference/java/security/cert/X509CertSelector.html
 http://developer.android.com/reference/javax/net/ssl/X509ExtendedKeyManager.html
 http://developer.android.com/reference/javax/xml/XMLConstants.html
 http://developer.android.com/reference/org/xml/sax/helpers/XMLFilterImpl.html
 http://developer.android.com/reference/org/xml/sax/helpers/XMLReaderAdapter.html
 http://developer.android.com/reference/org/xml/sax/helpers/XMLReaderFactory.html
+http://developer.android.com/reference/android/util/Xml.html
 http://developer.android.com/reference/org/xmlpull/v1/XmlPullParserFactory.html
 http://developer.android.com/reference/dalvik/system/Zygote.html
-http://developer.android.com/reference/org/apache/http/conn/OperatedClientConnection.html
-http://developer.android.com/reference/org/apache/http/conn/ManagedClientConnection.html
 http://developer.android.com/reference/org/apache/http/cookie/CookieAttributeHandler.html
-http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
-http://developer.android.com/reference/org/apache/http/io/SessionInputBuffer.html
-http://developer.android.com/reference/org/apache/http/io/SessionOutputBuffer.html
 http://developer.android.com/reference/android/view/inputmethod/InputMethod.html
 http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.html
 http://developer.android.com/reference/java/util/concurrent/locks/Lock.html
 http://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier.html
+http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html
 http://developer.android.com/reference/org/xml/sax/AttributeList.html
 http://developer.android.com/reference/org/xml/sax/Attributes.html
-http://developer.android.com/reference/org/apache/http/params/HttpParams.html
-http://developer.android.com/reference/android/widget/ListAdapter.html
-http://developer.android.com/reference/android/widget/SpinnerAdapter.html
-http://developer.android.com/reference/android/widget/ExpandableListAdapter.html
+http://developer.android.com/reference/org/apache/http/auth/Credentials.html
 http://developer.android.com/reference/org/apache/http/client/CredentialsProvider.html
 http://developer.android.com/reference/org/apache/http/conn/EofSensorWatcher.html
 http://developer.android.com/reference/org/apache/http/HeaderElementIterator.html
 http://developer.android.com/reference/org/apache/http/HeaderIterator.html
 http://developer.android.com/reference/java/util/List.html
-http://developer.android.com/reference/org/apache/http/HttpRequest.html
 http://developer.android.com/reference/org/apache/http/client/ResponseHandler.html
 http://developer.android.com/reference/org/apache/http/conn/routing/HttpRouteDirector.html
 http://developer.android.com/reference/org/apache/http/TokenIterator.html
-http://developer.android.com/reference/android/telephony/gsm/GsmCellLocation.html
 http://developer.android.com/reference/javax/net/ssl/TrustManager.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManager.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionOperator.html
 http://developer.android.com/reference/org/apache/http/client/HttpRequestRetryHandler.html
-http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoutePlanner.html
 http://developer.android.com/reference/org/apache/http/client/RedirectHandler.html
 http://developer.android.com/reference/org/apache/http/client/RequestDirector.html
-http://developer.android.com/reference/java/util/concurrent/CompletionService.html
-http://developer.android.com/reference/java/util/concurrent/Executor.html
-http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html
-http://developer.android.com/reference/java/util/concurrent/ThreadFactory.html
-http://developer.android.com/reference/java/util/concurrent/Callable.html
+http://developer.android.com/reference/org/apache/http/HttpEntity.html
 http://developer.android.com/reference/java/util/Formattable.html
 http://developer.android.com/reference/org/xml/sax/DocumentHandler.html
-http://developer.android.com/reference/org/apache/http/io/HttpTransportMetrics.html
 http://developer.android.com/reference/java/security/Principal.html
 http://developer.android.com/reference/java/security/KeyPairGenerator.html
 http://developer.android.com/reference/java/security/Key.html
+http://developer.android.com/reference/javax/security/auth/callback/CallbackHandler.html
+http://developer.android.com/reference/android/util/Printer.html
 http://developer.android.com/reference/java/math/BigDecimal.html
 http://developer.android.com/reference/java/security/MessageDigest.html
+http://developer.android.com/reference/android/content/DialogInterface.html
 http://developer.android.com/reference/java/util/jar/Pack200.Packer.html
 http://developer.android.com/reference/java/util/jar/Pack200.Unpacker.html
 http://developer.android.com/reference/org/xml/sax/Parser.html
 http://developer.android.com/reference/java/util/concurrent/locks/ReadWriteLock.html
 http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.html
 http://developer.android.com/reference/org/xml/sax/XMLReader.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
+http://developer.android.com/reference/android/content/SearchRecentSuggestionsProvider.html
 http://developer.android.com/reference/java/security/SecureRandom.html
 http://developer.android.com/reference/java/nio/channels/SelectableChannel.html
-http://developer.android.com/reference/java/nio/channels/DatagramChannel.html
-http://developer.android.com/reference/java/nio/channels/ServerSocketChannel.html
-http://developer.android.com/reference/java/nio/channels/SocketChannel.html
 http://developer.android.com/reference/java/security/Signature.html
 http://developer.android.com/reference/java/text/CharacterIterator.html
-http://developer.android.com/reference/android/widget/AbsListView.LayoutParams.html
-http://developer.android.com/reference/android/widget/AbsoluteLayout.LayoutParams.html
 http://developer.android.com/reference/android/text/style/AbsoluteSizeSpan.html
 http://developer.android.com/reference/android/database/AbstractCursor.SelfContentObserver.html
+http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.html
 http://developer.android.com/reference/java/util/AbstractList.html
-http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPooledConnAdapter.html
 http://developer.android.com/reference/java/util/prefs/AbstractPreferences.html
 http://developer.android.com/reference/java/util/AbstractQueue.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectableChannel.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectionKey.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractSelector.html
 http://developer.android.com/reference/java/util/AbstractSequentialList.html
 http://developer.android.com/reference/java/util/AbstractSet.html
 http://developer.android.com/reference/android/database/AbstractWindowedCursor.html
 http://developer.android.com/reference/java/security/AccessControlException.html
+http://developer.android.com/reference/android/accounts/AccountsException.html
 http://developer.android.com/reference/java/security/acl/AclNotFoundException.html
 http://developer.android.com/reference/android/content/pm/ActivityInfo.html
+http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase.html
+http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html
+http://developer.android.com/reference/android/content/ActivityNotFoundException.html
+http://developer.android.com/reference/android/test/ActivityTestCase.html
+http://developer.android.com/reference/android/test/ActivityUnitTestCase.html
 http://developer.android.com/reference/java/security/AllPermission.html
 http://developer.android.com/reference/dalvik/system/AllocationLimitError.html
 http://developer.android.com/reference/org/apache/http/conn/ssl/AllowAllHostnameVerifier.html
-http://developer.android.com/reference/android/view/animation/AlphaAnimation.html
-http://developer.android.com/reference/android/widget/AlphabetIndexer.html
-http://developer.android.com/reference/java/nio/channels/AlreadyConnectedException.html
+http://developer.android.com/reference/android/util/AndroidException.html
+http://developer.android.com/reference/android/util/AndroidRuntimeException.html
+http://developer.android.com/reference/android/test/AndroidTestCase.html
+http://developer.android.com/reference/android/test/AndroidTestRunner.html
+http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
+http://developer.android.com/reference/java/lang/annotation/AnnotationFormatError.html
+http://developer.android.com/reference/java/lang/annotation/AnnotationTypeMismatchException.html
 http://developer.android.com/reference/android/appwidget/AppWidgetProvider.html
 http://developer.android.com/reference/android/content/pm/ApplicationInfo.html
-http://developer.android.com/reference/java/util/concurrent/ArrayBlockingQueue.html
+http://developer.android.com/reference/android/test/ApplicationTestCase.html
 http://developer.android.com/reference/junit/framework/AssertionFailedError.html
-http://developer.android.com/reference/android/content/res/AssetFileDescriptor.AutoCloseInputStream.html
-http://developer.android.com/reference/android/content/res/AssetFileDescriptor.AutoCloseOutputStream.html
-http://developer.android.com/reference/android/content/res/AssetManager.AssetInputStream.html
-http://developer.android.com/reference/android/os/AsyncTask.Status.html
+http://developer.android.com/reference/android/content/AsyncQueryHandler.html
+http://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerHandler.html
 http://developer.android.com/reference/java/nio/channels/AsynchronousCloseException.html
 http://developer.android.com/reference/java/util/concurrent/atomic/AtomicInteger.html
 http://developer.android.com/reference/java/util/concurrent/atomic/AtomicLong.html
 http://developer.android.com/reference/org/xml/sax/ext/Attributes2Impl.html
 http://developer.android.com/reference/org/apache/http/auth/params/AuthParamBean.html
-http://developer.android.com/reference/javax/security/auth/AuthPermission.html
 http://developer.android.com/reference/java/security/AuthProvider.html
+http://developer.android.com/reference/org/apache/http/auth/AuthenticationException.html
+http://developer.android.com/reference/java/net/Authenticator.RequestorType.html
+http://developer.android.com/reference/android/accounts/AuthenticatorException.html
 http://developer.android.com/reference/android/text/style/BackgroundColorSpan.html
 http://developer.android.com/reference/java/util/prefs/BackingStoreException.html
 http://developer.android.com/reference/javax/crypto/BadPaddingException.html
-http://developer.android.com/reference/android/os/BadParcelableException.html
 http://developer.android.com/reference/android/text/method/BaseKeyListener.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/BasicClientCookie2.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/BasicCommentHandler.html
@@ -1709,14 +1989,11 @@
 http://developer.android.com/reference/java/security/BasicPermission.html
 http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPoolEntry.html
 http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter.html
 http://developer.android.com/reference/org/apache/http/impl/auth/BasicScheme.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/BasicSecureHandler.html
 http://developer.android.com/reference/java/sql/BatchUpdateException.html
 http://developer.android.com/reference/java/math/BigInteger.html
-http://developer.android.com/reference/android/text/BoringLayout.html
-http://developer.android.com/reference/android/text/BoringLayout.Metrics.html
-http://developer.android.com/reference/java/util/concurrent/BrokenBarrierException.html
+http://developer.android.com/reference/java/net/BindException.html
 http://developer.android.com/reference/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/BrowserCompatSpec.html
 http://developer.android.com/reference/java/nio/BufferOverflowException.html
@@ -1730,12 +2007,7 @@
 http://developer.android.com/reference/java/io/ByteArrayInputStream.html
 http://developer.android.com/reference/java/io/ByteArrayOutputStream.html
 http://developer.android.com/reference/java/nio/ByteBuffer.html
-http://developer.android.com/reference/java/security/cert/CRLException.html
-http://developer.android.com/reference/java/util/concurrent/CancellationException.html
-http://developer.android.com/reference/java/nio/channels/CancelledKeyException.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilderException.html
-http://developer.android.com/reference/java/security/cert/CertPathValidatorException.html
-http://developer.android.com/reference/java/security/cert/CertStoreException.html
+http://developer.android.com/reference/android/telephony/cdma/CdmaCellLocation.html
 http://developer.android.com/reference/javax/security/cert/CertificateEncodingException.html
 http://developer.android.com/reference/javax/security/cert/CertificateException.html
 http://developer.android.com/reference/javax/security/cert/CertificateExpiredException.html
@@ -1746,7 +2018,6 @@
 http://developer.android.com/reference/java/nio/CharBuffer.html
 http://developer.android.com/reference/java/io/CharConversionException.html
 http://developer.android.com/reference/java/nio/charset/CharacterCodingException.html
-http://developer.android.com/reference/android/text/method/CharacterPickerDialog.html
 http://developer.android.com/reference/android/preference/CheckBoxPreference.html
 http://developer.android.com/reference/java/text/ChoiceFormat.html
 http://developer.android.com/reference/org/apache/http/impl/io/ChunkedInputStream.html
@@ -1758,35 +2029,33 @@
 http://developer.android.com/reference/org/apache/http/client/params/ClientParamBean.html
 http://developer.android.com/reference/org/apache/http/impl/client/ClientParamsStack.html
 http://developer.android.com/reference/org/apache/http/client/ClientProtocolException.html
+http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html
 http://developer.android.com/reference/java/nio/channels/ClosedByInterruptException.html
 http://developer.android.com/reference/java/nio/channels/ClosedChannelException.html
-http://developer.android.com/reference/java/nio/channels/ClosedSelectorException.html
 http://developer.android.com/reference/java/nio/charset/CoderMalfunctionError.html
+http://developer.android.com/reference/android/graphics/drawable/ColorDrawable.html
 http://developer.android.com/reference/junit/framework/ComparisonFailure.html
 http://developer.android.com/reference/android/content/pm/ComponentInfo.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentHashMap.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentLinkedQueue.html
 http://developer.android.com/reference/java/util/ConcurrentModificationException.html
 http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionParamBean.html
 http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerParamBean.html
 http://developer.android.com/reference/org/apache/http/conn/params/ConnRouteParamBean.html
+http://developer.android.com/reference/java/net/ConnectException.html
 http://developer.android.com/reference/org/apache/http/conn/ConnectTimeoutException.html
 http://developer.android.com/reference/org/apache/http/ConnectionClosedException.html
 http://developer.android.com/reference/javax/sql/ConnectionEvent.html
-http://developer.android.com/reference/java/nio/channels/ConnectionPendingException.html
 http://developer.android.com/reference/org/apache/http/conn/ConnectionPoolTimeoutException.html
-http://developer.android.com/reference/java/util/logging/ConsoleHandler.html
 http://developer.android.com/reference/java/lang/reflect/Constructor.html
+http://developer.android.com/reference/android/provider/ContactsContract.Presence.html
 http://developer.android.com/reference/org/apache/http/impl/io/ContentLengthInputStream.html
 http://developer.android.com/reference/org/apache/http/impl/io/ContentLengthOutputStream.html
 http://developer.android.com/reference/android/database/ContentObservable.html
+http://developer.android.com/reference/android/content/ContentQueryMap.html
+http://developer.android.com/reference/android/content/ContextWrapper.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/CookieSpecBase.html
 http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecParamBean.html
-http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArraySet.html
-http://developer.android.com/reference/android/widget/CursorAdapter.html
 http://developer.android.com/reference/android/database/CursorIndexOutOfBoundsException.html
 http://developer.android.com/reference/android/database/CursorJoiner.Result.html
-http://developer.android.com/reference/android/widget/CursorTreeAdapter.html
 http://developer.android.com/reference/android/database/CursorWindow.html
 http://developer.android.com/reference/org/w3c/dom/DOMException.html
 http://developer.android.com/reference/java/io/DataInputStream.html
@@ -1799,20 +2068,12 @@
 http://developer.android.com/reference/android/text/method/DateKeyListener.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/DateParseException.html
 http://developer.android.com/reference/android/text/method/DateTimeKeyListener.html
-http://developer.android.com/reference/android/os/DeadObjectException.html
 http://developer.android.com/reference/java/text/DecimalFormat.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnection.html
 http://developer.android.com/reference/org/xml/sax/ext/DefaultHandler2.html
 http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpClientConnection.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpServerConnection.html
 http://developer.android.com/reference/org/apache/http/impl/client/DefaultProxyAuthenticationHandler.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultResponseParser.html
 http://developer.android.com/reference/org/apache/http/impl/client/DefaultTargetAuthenticationHandler.html
 http://developer.android.com/reference/org/apache/http/params/DefaultedHttpParams.html
-http://developer.android.com/reference/java/util/concurrent/DelayQueue.html
-http://developer.android.com/reference/java/util/concurrent/Delayed.html
-http://developer.android.com/reference/javax/security/auth/DestroyFailedException.html
 http://developer.android.com/reference/dalvik/system/DexClassLoader.html
 http://developer.android.com/reference/android/text/method/DialerKeyListener.html
 http://developer.android.com/reference/android/preference/DialogPreference.html
@@ -1822,25 +2083,28 @@
 http://developer.android.com/reference/org/apache/http/impl/auth/DigestScheme.html
 http://developer.android.com/reference/android/text/method/DigitsKeyListener.html
 http://developer.android.com/reference/java/nio/DoubleBuffer.html
+http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.html
+http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.DrawableContainerState.html
 http://developer.android.com/reference/java/util/DuplicateFormatFlagsException.html
 http://developer.android.com/reference/android/text/style/DynamicDrawableSpan.html
-http://developer.android.com/reference/android/text/DynamicLayout.html
 http://developer.android.com/reference/java/io/EOFException.html
 http://developer.android.com/reference/android/preference/EditTextPreference.html
+http://developer.android.com/reference/java/lang/annotation/ElementType.html
 http://developer.android.com/reference/java/util/EmptyStackException.html
 http://developer.android.com/reference/org/apache/http/impl/client/EntityEnclosingRequestWrapper.html
 http://developer.android.com/reference/org/apache/http/entity/EntityTemplate.html
 http://developer.android.com/reference/java/util/EnumMap.html
 http://developer.android.com/reference/java/util/EnumSet.html
 http://developer.android.com/reference/org/apache/http/conn/EofSensorInputStream.html
-http://developer.android.com/reference/java/util/concurrent/ExecutionException.html
 http://developer.android.com/reference/javax/crypto/ExemptionMechanismException.html
 http://developer.android.com/reference/javax/xml/parsers/FactoryConfigurationError.html
 http://developer.android.com/reference/java/lang/reflect/Field.html
 http://developer.android.com/reference/java/nio/channels/FileChannel.html
 http://developer.android.com/reference/org/apache/http/entity/FileEntity.html
-http://developer.android.com/reference/java/util/logging/FileHandler.html
+http://developer.android.com/reference/java/io/FileInputStream.html
 http://developer.android.com/reference/java/nio/channels/FileLockInterruptionException.html
+http://developer.android.com/reference/java/io/FileNotFoundException.html
+http://developer.android.com/reference/java/io/FileOutputStream.html
 http://developer.android.com/reference/java/io/FilePermission.html
 http://developer.android.com/reference/java/io/FileReader.html
 http://developer.android.com/reference/java/io/FileWriter.html
@@ -1853,16 +2117,14 @@
 http://developer.android.com/reference/java/text/Format.Field.html
 http://developer.android.com/reference/java/util/FormatFlagsConversionMismatchException.html
 http://developer.android.com/reference/java/util/Formatter.BigDecimalLayoutForm.html
-http://developer.android.com/reference/java/util/FormatterClosedException.html
-http://developer.android.com/reference/android/widget/FrameLayout.LayoutParams.html
+http://developer.android.com/reference/android/opengl/GLES11.html
 http://developer.android.com/reference/android/opengl/GLException.html
-http://developer.android.com/reference/android/widget/Gallery.LayoutParams.html
 http://developer.android.com/reference/java/security/GeneralSecurityException.html
 http://developer.android.com/reference/java/lang/reflect/GenericSignatureFormatError.html
+http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.Orientation.html
 http://developer.android.com/reference/java/util/GregorianCalendar.html
-http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.html
-http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.AnimationParameters.html
-http://developer.android.com/reference/android/os/HandlerThread.html
+http://developer.android.com/reference/android/telephony/gsm/GsmCellLocation.html
 http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedEvent.html
 http://developer.android.com/reference/java/util/HashMap.html
 http://developer.android.com/reference/java/util/HashSet.html
@@ -1870,32 +2132,23 @@
 http://developer.android.com/reference/android/text/method/HideReturnsTransformationMethod.html
 http://developer.android.com/reference/android/webkit/HttpAuthHandler.html
 http://developer.android.com/reference/org/apache/http/params/HttpConnectionParamBean.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpDelete.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.html
 http://developer.android.com/reference/org/apache/http/HttpException.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpGet.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpHead.html
 http://developer.android.com/reference/org/apache/http/conn/HttpHostConnectException.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpOptions.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpPost.html
 http://developer.android.com/reference/org/apache/http/params/HttpProtocolParamBean.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpPut.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpRequestBase.html
 http://developer.android.com/reference/org/apache/http/impl/io/HttpRequestParser.html
 http://developer.android.com/reference/org/apache/http/impl/io/HttpRequestWriter.html
 http://developer.android.com/reference/org/apache/http/client/HttpResponseException.html
 http://developer.android.com/reference/org/apache/http/impl/io/HttpResponseParser.html
 http://developer.android.com/reference/org/apache/http/impl/io/HttpResponseWriter.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpTrace.html
+http://developer.android.com/reference/java/net/HttpRetryException.html
+http://developer.android.com/reference/java/net/HttpURLConnection.html
 http://developer.android.com/reference/org/apache/http/HttpVersion.html
 http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html
-http://developer.android.com/reference/android/content/pm/IPackageInstallObserver.Stub.html
 http://developer.android.com/reference/java/util/IdentityHashMap.html
 http://developer.android.com/reference/org/apache/http/impl/io/IdentityInputStream.html
 http://developer.android.com/reference/org/apache/http/impl/io/IdentityOutputStream.html
 http://developer.android.com/reference/java/security/IdentityScope.html
 http://developer.android.com/reference/javax/crypto/IllegalBlockSizeException.html
-http://developer.android.com/reference/java/nio/channels/IllegalBlockingModeException.html
 http://developer.android.com/reference/java/nio/charset/IllegalCharsetNameException.html
 http://developer.android.com/reference/java/util/IllegalFormatCodePointException.html
 http://developer.android.com/reference/java/util/IllegalFormatConversionException.html
@@ -1905,45 +2158,55 @@
 http://developer.android.com/reference/java/util/IllegalFormatWidthException.html
 http://developer.android.com/reference/java/nio/channels/IllegalSelectorException.html
 http://developer.android.com/reference/android/text/style/ImageSpan.html
-http://developer.android.com/reference/android/widget/ImageView.ScaleType.html
+http://developer.android.com/reference/java/lang/annotation/IncompleteAnnotationException.html
 http://developer.android.com/reference/java/beans/IndexedPropertyChangeEvent.html
+http://developer.android.com/reference/java/net/Inet4Address.html
+http://developer.android.com/reference/java/net/Inet6Address.html
+http://developer.android.com/reference/java/net/InetSocketAddress.html
+http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html
 http://developer.android.com/reference/android/inputmethodservice/InputMethodService.InputMethodImpl.html
 http://developer.android.com/reference/android/inputmethodservice/InputMethodService.InputMethodSessionImpl.html
 http://developer.android.com/reference/java/util/InputMismatchException.html
 http://developer.android.com/reference/org/apache/http/entity/InputStreamEntity.html
 http://developer.android.com/reference/java/io/InputStreamReader.html
+http://developer.android.com/reference/android/graphics/drawable/InsetDrawable.html
 http://developer.android.com/reference/android/content/pm/InstrumentationInfo.html
+http://developer.android.com/reference/android/test/InstrumentationTestCase.html
+http://developer.android.com/reference/android/test/InstrumentationTestRunner.html
+http://developer.android.com/reference/android/test/InstrumentationTestSuite.html
 http://developer.android.com/reference/java/nio/IntBuffer.html
+http://developer.android.com/reference/android/content/IntentFilter.MalformedMimeTypeException.html
+http://developer.android.com/reference/android/content/IntentSender.SendIntentException.html
+http://developer.android.com/reference/android/app/IntentService.html
 http://developer.android.com/reference/java/io/InterruptedIOException.html
 http://developer.android.com/reference/java/security/InvalidAlgorithmParameterException.html
 http://developer.android.com/reference/java/io/InvalidClassException.html
+http://developer.android.com/reference/org/apache/http/auth/InvalidCredentialsException.html
 http://developer.android.com/reference/java/security/InvalidKeyException.html
-http://developer.android.com/reference/java/security/spec/InvalidKeySpecException.html
-http://developer.android.com/reference/java/nio/InvalidMarkException.html
 http://developer.android.com/reference/java/io/InvalidObjectException.html
 http://developer.android.com/reference/java/security/InvalidParameterException.html
-http://developer.android.com/reference/java/security/spec/InvalidParameterSpecException.html
 http://developer.android.com/reference/java/util/prefs/InvalidPreferencesFormatException.html
 http://developer.android.com/reference/java/util/InvalidPropertiesFormatException.html
 http://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html
+http://developer.android.com/reference/android/test/IsolatedContext.html
 http://developer.android.com/reference/org/json/JSONException.html
 http://developer.android.com/reference/java/util/jar/JarEntry.html
 http://developer.android.com/reference/java/util/jar/JarException.html
 http://developer.android.com/reference/java/util/jar/JarFile.html
 http://developer.android.com/reference/java/util/jar/JarInputStream.html
 http://developer.android.com/reference/java/util/jar/JarOutputStream.html
+http://developer.android.com/reference/java/net/JarURLConnection.html
 http://developer.android.com/reference/android/webkit/JsPromptResult.html
 http://developer.android.com/reference/java/security/KeyException.html
 http://developer.android.com/reference/java/security/KeyManagementException.html
 http://developer.android.com/reference/java/security/KeyRep.Type.html
 http://developer.android.com/reference/java/security/KeyStoreException.html
+http://developer.android.com/reference/android/content/pm/LabeledIntent.html
 http://developer.android.com/reference/java/security/acl/LastOwnerException.html
-http://developer.android.com/reference/android/text/Layout.Alignment.html
+http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/LevelListDrawable.html
 http://developer.android.com/reference/java/io/LineNumberInputStream.html
 http://developer.android.com/reference/java/io/LineNumberReader.html
-http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
-http://developer.android.com/reference/android/text/method/LinkMovementMethod.html
-http://developer.android.com/reference/java/util/concurrent/LinkedBlockingQueue.html
 http://developer.android.com/reference/java/util/LinkedHashMap.html
 http://developer.android.com/reference/java/util/LinkedHashSet.html
 http://developer.android.com/reference/java/util/LinkedList.html
@@ -1951,18 +2214,17 @@
 http://developer.android.com/reference/java/util/ListResourceBundle.html
 http://developer.android.com/reference/android/net/LocalSocketAddress.Namespace.html
 http://developer.android.com/reference/org/xml/sax/ext/Locator2Impl.html
-http://developer.android.com/reference/java/util/logging/LoggingPermission.html
-http://developer.android.com/reference/android/text/LoginFilter.PasswordFilterGMail.html
-http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGMail.html
-http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGeneric.html
+http://developer.android.com/reference/javax/security/auth/login/LoginException.html
 http://developer.android.com/reference/java/nio/LongBuffer.html
+http://developer.android.com/reference/org/apache/http/auth/MalformedChallengeException.html
 http://developer.android.com/reference/org/apache/http/MalformedChunkCodingException.html
 http://developer.android.com/reference/org/apache/http/cookie/MalformedCookieException.html
 http://developer.android.com/reference/java/nio/charset/MalformedInputException.html
 http://developer.android.com/reference/java/lang/reflect/MalformedParameterizedTypeException.html
+http://developer.android.com/reference/java/net/MalformedURLException.html
 http://developer.android.com/reference/java/nio/MappedByteBuffer.html
 http://developer.android.com/reference/android/text/style/MaskFilterSpan.html
-http://developer.android.com/reference/java/util/logging/MemoryHandler.html
+http://developer.android.com/reference/android/database/MatrixCursor.html
 http://developer.android.com/reference/android/database/MergeCursor.html
 http://developer.android.com/reference/java/text/MessageFormat.html
 http://developer.android.com/reference/java/text/MessageFormat.Field.html
@@ -1972,31 +2234,33 @@
 http://developer.android.com/reference/java/util/MissingFormatArgumentException.html
 http://developer.android.com/reference/java/util/MissingFormatWidthException.html
 http://developer.android.com/reference/java/util/MissingResourceException.html
+http://developer.android.com/reference/android/test/mock/MockApplication.html
 http://developer.android.com/reference/android/test/mock/MockContentResolver.html
+http://developer.android.com/reference/android/test/mock/MockContext.html
 http://developer.android.com/reference/android/test/mock/MockPackageManager.html
-http://developer.android.com/reference/android/test/mock/MockResources.html
 http://developer.android.com/reference/android/text/method/MultiTapKeyListener.html
+http://developer.android.com/reference/java/net/MulticastSocket.html
+http://developer.android.com/reference/android/content/MutableContextWrapper.html
 http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngineException.html
 http://developer.android.com/reference/org/apache/http/impl/auth/NTLMScheme.html
+http://developer.android.com/reference/java/net/NetPermission.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDomainHandler.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftSpec.html
+http://developer.android.com/reference/android/accounts/NetworkErrorException.html
 http://developer.android.com/reference/android/net/NetworkInfo.DetailedState.html
 http://developer.android.com/reference/android/net/NetworkInfo.State.html
-http://developer.android.com/reference/java/nio/channels/NoConnectionPendingException.html
+http://developer.android.com/reference/android/graphics/drawable/NinePatchDrawable.html
 http://developer.android.com/reference/org/apache/http/NoHttpResponseException.html
+http://developer.android.com/reference/java/net/NoRouteToHostException.html
 http://developer.android.com/reference/java/security/NoSuchAlgorithmException.html
 http://developer.android.com/reference/java/util/NoSuchElementException.html
 http://developer.android.com/reference/javax/crypto/NoSuchPaddingException.html
 http://developer.android.com/reference/java/security/NoSuchProviderException.html
 http://developer.android.com/reference/java/util/prefs/NodeChangeEvent.html
-http://developer.android.com/reference/java/nio/channels/NonReadableChannelException.html
 http://developer.android.com/reference/org/apache/http/client/NonRepeatableRequestException.html
-http://developer.android.com/reference/java/nio/channels/NonWritableChannelException.html
 http://developer.android.com/reference/java/io/NotActiveException.html
 http://developer.android.com/reference/java/security/acl/NotOwnerException.html
 http://developer.android.com/reference/java/io/NotSerializableException.html
-http://developer.android.com/reference/java/nio/channels/NotYetBoundException.html
-http://developer.android.com/reference/java/nio/channels/NotYetConnectedException.html
 http://developer.android.com/reference/javax/crypto/NullCipher.html
 http://developer.android.com/reference/java/text/NumberFormat.html
 http://developer.android.com/reference/java/text/NumberFormat.Field.html
@@ -2004,47 +2268,50 @@
 http://developer.android.com/reference/java/io/ObjectInputStream.html
 http://developer.android.com/reference/java/io/ObjectOutputStream.html
 http://developer.android.com/reference/java/io/ObjectStreamException.html
+http://developer.android.com/reference/android/content/OperationApplicationException.html
+http://developer.android.com/reference/android/accounts/OperationCanceledException.html
 http://developer.android.com/reference/java/io/OptionalDataException.html
 http://developer.android.com/reference/java/io/OutputStreamWriter.html
-http://developer.android.com/reference/java/nio/channels/OverlappingFileLockException.html
-http://developer.android.com/reference/java/security/spec/PKCS8EncodedKeySpec.html
-http://developer.android.com/reference/java/security/cert/PKIXBuilderParameters.html
-http://developer.android.com/reference/java/security/cert/PKIXCertPathBuilderResult.html
 http://developer.android.com/reference/javax/crypto/spec/PSource.PSpecified.html
-http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseInputStream.html
-http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseOutputStream.html
-http://developer.android.com/reference/android/os/ParcelFormatException.html
+http://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException.html
+http://developer.android.com/reference/android/graphics/drawable/PaintDrawable.html
 http://developer.android.com/reference/java/text/ParseException.html
 http://developer.android.com/reference/javax/xml/parsers/ParserConfigurationException.html
 http://developer.android.com/reference/dalvik/system/PathClassLoader.html
-http://developer.android.com/reference/java/util/regex/PatternSyntaxException.html
+http://developer.android.com/reference/android/content/pm/PathPermission.html
+http://developer.android.com/reference/android/app/PendingIntent.CanceledException.html
 http://developer.android.com/reference/android/content/pm/PermissionGroupInfo.html
 http://developer.android.com/reference/android/content/pm/PermissionInfo.html
 http://developer.android.com/reference/java/security/Permissions.html
+http://developer.android.com/reference/java/lang/ref/PhantomReference.html
+http://developer.android.com/reference/android/graphics/drawable/PictureDrawable.html
 http://developer.android.com/reference/java/nio/channels/Pipe.SinkChannel.html
 http://developer.android.com/reference/java/nio/channels/Pipe.SourceChannel.html
 http://developer.android.com/reference/java/io/PipedInputStream.html
 http://developer.android.com/reference/java/io/PipedOutputStream.html
 http://developer.android.com/reference/java/io/PipedReader.html
 http://developer.android.com/reference/java/io/PipedWriter.html
+http://developer.android.com/reference/java/net/PortUnreachableException.html
 http://developer.android.com/reference/dalvik/system/PotentialDeadlockError.html
 http://developer.android.com/reference/android/preference/Preference.BaseSavedState.html
 http://developer.android.com/reference/android/preference/PreferenceCategory.html
 http://developer.android.com/reference/java/util/prefs/PreferenceChangeEvent.html
 http://developer.android.com/reference/android/preference/PreferenceGroup.html
 http://developer.android.com/reference/android/preference/PreferenceScreen.html
-http://developer.android.com/reference/java/util/concurrent/PriorityBlockingQueue.html
 http://developer.android.com/reference/java/util/PriorityQueue.html
-http://developer.android.com/reference/javax/security/auth/PrivateCredentialPermission.html
 http://developer.android.com/reference/java/security/PrivilegedActionException.html
 http://developer.android.com/reference/java/util/Properties.html
 http://developer.android.com/reference/java/beans/PropertyChangeEvent.html
 http://developer.android.com/reference/java/beans/PropertyChangeListenerProxy.html
 http://developer.android.com/reference/java/util/PropertyPermission.html
 http://developer.android.com/reference/java/util/PropertyResourceBundle.html
+http://developer.android.com/reference/java/net/ProtocolException.html
 http://developer.android.com/reference/java/security/Provider.html
 http://developer.android.com/reference/java/security/ProviderException.html
 http://developer.android.com/reference/android/content/pm/ProviderInfo.html
+http://developer.android.com/reference/android/test/ProviderTestCase.html
+http://developer.android.com/reference/android/test/ProviderTestCase2.html
+http://developer.android.com/reference/java/net/Proxy.Type.html
 http://developer.android.com/reference/java/io/PushbackInputStream.html
 http://developer.android.com/reference/java/io/PushbackReader.html
 http://developer.android.com/reference/android/text/method/QwertyKeyListener.html
@@ -2052,25 +2319,19 @@
 http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109VersionHandler.html
 http://developer.android.com/reference/org/apache/http/impl/auth/RFC2617Scheme.html
 http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965Spec.html
-http://developer.android.com/reference/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.html
-http://developer.android.com/reference/java/security/spec/RSAPrivateCrtKeySpec.html
-http://developer.android.com/reference/android/widget/RadioGroup.LayoutParams.html
 http://developer.android.com/reference/android/text/style/RasterizerSpan.html
 http://developer.android.com/reference/java/nio/ReadOnlyBufferException.html
+http://developer.android.com/reference/android/content/ReceiverCallNotAllowedException.html
 http://developer.android.com/reference/org/apache/http/client/RedirectException.html
 http://developer.android.com/reference/java/lang/reflect/ReflectPermission.html
-http://developer.android.com/reference/java/util/concurrent/RejectedExecutionException.html
-http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html
 http://developer.android.com/reference/android/text/style/RelativeSizeSpan.html
-http://developer.android.com/reference/android/os/RemoteException.html
-http://developer.android.com/reference/android/widget/RemoteViews.ActionException.html
+http://developer.android.com/reference/android/test/RenamingDelegatingContext.html
 http://developer.android.com/reference/android/text/style/ReplacementSpan.html
 http://developer.android.com/reference/org/apache/http/impl/client/RequestWrapper.html
-http://developer.android.com/reference/android/widget/ResourceCursorAdapter.html
-http://developer.android.com/reference/android/widget/ResourceCursorTreeAdapter.html
+http://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html
 http://developer.android.com/reference/android/preference/RingtonePreference.html
 http://developer.android.com/reference/android/sax/RootElement.html
-http://developer.android.com/reference/android/view/animation/RotateAnimation.html
+http://developer.android.com/reference/android/graphics/drawable/RotateDrawable.html
 http://developer.android.com/reference/java/math/RoundingMode.html
 http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.LayerType.html
 http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.TunnelType.html
@@ -2085,9 +2346,11 @@
 http://developer.android.com/reference/java/sql/SQLWarning.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteAbortException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteConstraintException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteCursor.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabaseCorruptException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteDiskIOException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteDoneException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteFullException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteMisuseException.html
 http://developer.android.com/reference/android/database/sqlite/SQLiteProgram.html
@@ -2107,44 +2370,40 @@
 http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingEvent.html
 http://developer.android.com/reference/javax/net/ssl/SSLSocket.html
 http://developer.android.com/reference/javax/net/ssl/SSLSocketFactory.html
-http://developer.android.com/reference/android/view/animation/ScaleAnimation.html
+http://developer.android.com/reference/android/graphics/drawable/ScaleDrawable.html
 http://developer.android.com/reference/android/text/style/ScaleXSpan.html
-http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html
+http://developer.android.com/reference/java/net/SecureCacheResponse.html
 http://developer.android.com/reference/java/security/SecureClassLoader.html
 http://developer.android.com/reference/java/security/SecurityPermission.html
 http://developer.android.com/reference/java/io/SequenceInputStream.html
 http://developer.android.com/reference/org/apache/http/entity/SerializableEntity.html
 http://developer.android.com/reference/java/io/SerializablePermission.html
 http://developer.android.com/reference/android/content/pm/ServiceInfo.html
+http://developer.android.com/reference/android/test/ServiceTestCase.html
+http://developer.android.com/reference/android/provider/Settings.Secure.html
 http://developer.android.com/reference/android/provider/Settings.SettingNotFoundException.html
 http://developer.android.com/reference/android/provider/Settings.System.html
 http://developer.android.com/reference/java/nio/ShortBuffer.html
 http://developer.android.com/reference/javax/crypto/ShortBufferException.html
 http://developer.android.com/reference/java/security/SignatureException.html
 http://developer.android.com/reference/java/security/Signer.html
-http://developer.android.com/reference/android/widget/SimpleAdapter.html
-http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html
-http://developer.android.com/reference/android/widget/SimpleCursorTreeAdapter.html
 http://developer.android.com/reference/java/text/SimpleDateFormat.html
-http://developer.android.com/reference/android/widget/SimpleExpandableListAdapter.html
-http://developer.android.com/reference/java/util/logging/SimpleFormatter.html
 http://developer.android.com/reference/java/util/SimpleTimeZone.html
-http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.ConnAdapter.html
-http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.PoolEntry.html
+http://developer.android.com/reference/android/test/SingleLaunchActivityTestCase.html
 http://developer.android.com/reference/android/text/method/SingleLineTransformationMethod.html
 http://developer.android.com/reference/android/telephony/gsm/SmsMessage.MessageClass.html
-http://developer.android.com/reference/java/util/logging/SocketHandler.html
-http://developer.android.com/reference/org/apache/http/impl/SocketHttpClientConnection.html
-http://developer.android.com/reference/org/apache/http/impl/SocketHttpServerConnection.html
+http://developer.android.com/reference/java/net/SocketException.html
 http://developer.android.com/reference/org/apache/http/impl/io/SocketInputBuffer.html
 http://developer.android.com/reference/org/apache/http/impl/io/SocketOutputBuffer.html
+http://developer.android.com/reference/java/net/SocketPermission.html
+http://developer.android.com/reference/java/net/SocketTimeoutException.html
+http://developer.android.com/reference/java/lang/ref/SoftReference.html
 http://developer.android.com/reference/android/webkit/SslErrorHandler.html
 http://developer.android.com/reference/java/util/Stack.html
 http://developer.android.com/reference/android/database/StaleDataException.html
 http://developer.android.com/reference/dalvik/system/StaleDexCacheError.html
-http://developer.android.com/reference/android/text/StaticLayout.html
+http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
 http://developer.android.com/reference/java/io/StreamCorruptedException.html
-http://developer.android.com/reference/java/util/logging/StreamHandler.html
 http://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier.html
 http://developer.android.com/reference/android/text/style/StrikethroughSpan.html
 http://developer.android.com/reference/java/io/StringBufferInputStream.html
@@ -2155,44 +2414,40 @@
 http://developer.android.com/reference/android/text/style/SubscriptSpan.html
 http://developer.android.com/reference/android/text/style/SuperscriptSpan.html
 http://developer.android.com/reference/android/net/wifi/SupplicantState.html
-http://developer.android.com/reference/org/apache/http/protocol/SyncBasicHttpContext.html
+http://developer.android.com/reference/android/test/SyncBaseInstrumentation.html
 http://developer.android.com/reference/java/io/SyncFailedException.html
-http://developer.android.com/reference/java/util/concurrent/SynchronousQueue.html
-http://developer.android.com/reference/android/widget/TableLayout.LayoutParams.html
-http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
+http://developer.android.com/reference/junit/framework/TestCase.html
 http://developer.android.com/reference/android/test/suitebuilder/TestSuiteBuilder.FailedToCreateTests.html
 http://developer.android.com/reference/android/text/style/TextAppearanceSpan.html
 http://developer.android.com/reference/java/awt/font/TextAttribute.html
 http://developer.android.com/reference/android/text/method/TextKeyListener.html
 http://developer.android.com/reference/android/text/method/TextKeyListener.Capitalize.html
-http://developer.android.com/reference/android/text/TextPaint.html
-http://developer.android.com/reference/android/text/TextUtils.TruncateAt.html
-http://developer.android.com/reference/android/widget/TextView.BufferType.html
-http://developer.android.com/reference/android/widget/TextView.SavedState.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html
 http://developer.android.com/reference/java/sql/Time.html
+http://developer.android.com/reference/android/util/TimeFormatException.html
 http://developer.android.com/reference/android/text/method/TimeKeyListener.html
-http://developer.android.com/reference/java/util/concurrent/TimeUnit.html
-http://developer.android.com/reference/java/util/concurrent/TimeoutException.html
 http://developer.android.com/reference/java/sql/Timestamp.html
 http://developer.android.com/reference/java/util/TooManyListenersException.html
-http://developer.android.com/reference/android/view/animation/TranslateAnimation.html
+http://developer.android.com/reference/android/graphics/drawable/TransitionDrawable.html
 http://developer.android.com/reference/java/util/TreeMap.html
 http://developer.android.com/reference/java/util/TreeSet.html
 http://developer.android.com/reference/org/apache/http/impl/client/TunnelRefusedException.html
 http://developer.android.com/reference/android/text/style/TypefaceSpan.html
-http://developer.android.com/reference/android/text/style/URLSpan.html
+http://developer.android.com/reference/java/net/URISyntaxException.html
+http://developer.android.com/reference/java/net/URLClassLoader.html
 http://developer.android.com/reference/java/io/UTFDataFormatException.html
 http://developer.android.com/reference/java/lang/reflect/UndeclaredThrowableException.html
 http://developer.android.com/reference/android/text/style/UnderlineSpan.html
 http://developer.android.com/reference/java/util/UnknownFormatConversionException.html
 http://developer.android.com/reference/java/util/UnknownFormatFlagsException.html
+http://developer.android.com/reference/java/net/UnknownHostException.html
+http://developer.android.com/reference/java/net/UnknownServiceException.html
 http://developer.android.com/reference/java/nio/charset/UnmappableCharacterException.html
 http://developer.android.com/reference/java/security/UnrecoverableEntryException.html
 http://developer.android.com/reference/java/security/UnrecoverableKeyException.html
 http://developer.android.com/reference/java/nio/channels/UnresolvedAddressException.html
 http://developer.android.com/reference/java/security/UnresolvedPermission.html
 http://developer.android.com/reference/java/nio/channels/UnsupportedAddressTypeException.html
+http://developer.android.com/reference/javax/security/auth/callback/UnsupportedCallbackException.html
 http://developer.android.com/reference/java/nio/charset/UnsupportedCharsetException.html
 http://developer.android.com/reference/org/apache/http/impl/auth/UnsupportedDigestAlgorithmException.html
 http://developer.android.com/reference/java/io/UnsupportedEncodingException.html
@@ -2204,111 +2459,123 @@
 http://developer.android.com/reference/android/webkit/WebSettings.RenderPriority.html
 http://developer.android.com/reference/android/webkit/WebSettings.TextSize.html
 http://developer.android.com/reference/java/io/WriteAbortedException.html
-http://developer.android.com/reference/java/security/cert/X509CRL.html
 http://developer.android.com/reference/javax/security/cert/X509Certificate.html
-http://developer.android.com/reference/java/security/spec/X509EncodedKeySpec.html
-http://developer.android.com/reference/java/util/logging/XMLFormatter.html
+http://developer.android.com/reference/android/util/Xml.Encoding.html
 http://developer.android.com/reference/java/util/Queue.html
-http://developer.android.com/reference/java/util/concurrent/BlockingQueue.html
 http://developer.android.com/reference/org/xml/sax/ext/Attributes2.html
 http://developer.android.com/reference/javax/sql/PooledConnection.html
 http://developer.android.com/reference/java/util/Set.html
 http://developer.android.com/reference/org/xml/sax/ext/LexicalHandler.html
 http://developer.android.com/reference/org/xml/sax/ext/DeclHandler.html
 http://developer.android.com/reference/org/xml/sax/ext/EntityResolver2.html
-http://developer.android.com/reference/javax/security/auth/Destroyable.html
-http://developer.android.com/reference/org/apache/http/HttpEntityEnclosingRequest.html
 http://developer.android.com/reference/org/xml/sax/ext/Locator2.html
 http://developer.android.com/reference/javax/sql/RowSet.html
-http://developer.android.com/reference/javax/net/ssl/SSLSession.html
-http://developer.android.com/reference/java/security/Certificate.html
-http://developer.android.com/reference/java/security/DomainCombiner.html
-http://developer.android.com/reference/java/security/Guard.html
-http://developer.android.com/reference/java/security/KeyStore.Entry.html
-http://developer.android.com/reference/java/security/KeyStore.LoadStoreParameter.html
-http://developer.android.com/reference/java/security/KeyStore.ProtectionParameter.html
-http://developer.android.com/reference/java/security/PrivateKey.html
+http://developer.android.com/reference/javax/security/auth/callback/Callback.html
+http://developer.android.com/reference/org/apache/http/ConnectionReuseStrategy.html
+http://developer.android.com/reference/org/apache/http/FormattedHeader.html
+http://developer.android.com/reference/org/apache/http/Header.html
+http://developer.android.com/reference/org/apache/http/HeaderElement.html
+http://developer.android.com/reference/org/apache/http/HttpMessage.html
+http://developer.android.com/reference/org/apache/http/HttpRequestFactory.html
+http://developer.android.com/reference/org/apache/http/HttpRequestInterceptor.html
+http://developer.android.com/reference/org/apache/http/HttpResponseFactory.html
+http://developer.android.com/reference/org/apache/http/HttpResponseInterceptor.html
+http://developer.android.com/reference/org/apache/http/HttpServerConnection.html
+http://developer.android.com/reference/org/apache/http/HttpStatus.html
+http://developer.android.com/reference/org/apache/http/NameValuePair.html
+http://developer.android.com/reference/org/apache/http/ReasonPhraseCatalog.html
+http://developer.android.com/reference/org/apache/http/RequestLine.html
+http://developer.android.com/reference/org/apache/http/StatusLine.html
+http://developer.android.com/reference/org/apache/http/ParseException.html
+http://developer.android.com/reference/org/apache/http/ProtocolException.html
+http://developer.android.com/reference/android/net/wifi/package-descr.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/src/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/AndroidManifest.html
+http://developer.android.com/reference/org/apache/http/auth/AuthScheme.html
+http://developer.android.com/reference/org/apache/http/auth/AuthSchemeFactory.html
+http://developer.android.com/reference/org/apache/http/auth/package-descr.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManagerFactory.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionRequest.html
+http://developer.android.com/reference/org/apache/http/conn/ConnectionKeepAliveStrategy.html
+http://developer.android.com/reference/android/graphics/drawable/Animatable.html
+http://developer.android.com/reference/android/graphics/drawable/package-descr.html
+http://developer.android.com/reference/android/test/PerformanceTestCase.html
+http://developer.android.com/reference/android/test/PerformanceTestCase.Intermediates.html
+http://developer.android.com/reference/android/test/TestSuiteProvider.html
+http://developer.android.com/reference/android/test/AssertionFailedError.html
+http://developer.android.com/reference/android/test/ComparisonFailure.html
+http://developer.android.com/reference/android/test/package-descr.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-mdpi-v6/app_notes.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-mdpi-v6/live_folder_notes.html
+http://developer.android.com/reference/java/util/Collection.html
 http://developer.android.com/reference/java/security/PrivilegedAction.html
-http://developer.android.com/reference/java/security/PrivilegedExceptionAction.html
-http://developer.android.com/reference/java/security/PublicKey.html
-http://developer.android.com/reference/java/security/package-descr.html
-http://developer.android.com/reference/android/widget/AbsListView.OnScrollListener.html
-http://developer.android.com/reference/android/widget/AbsListView.RecyclerListener.html
-http://developer.android.com/reference/android/widget/AdapterView.OnItemLongClickListener.html
-http://developer.android.com/reference/android/widget/AdapterView.OnItemSelectedListener.html
-http://developer.android.com/reference/android/widget/AutoCompleteTextView.Validator.html
-http://developer.android.com/reference/android/widget/Chronometer.OnChronometerTickListener.html
-http://developer.android.com/reference/android/widget/CompoundButton.OnCheckedChangeListener.html
-http://developer.android.com/reference/android/widget/DatePicker.OnDateChangedListener.html
-http://developer.android.com/reference/android/widget/ExpandableListView.OnChildClickListener.html
-http://developer.android.com/reference/android/widget/ExpandableListView.OnGroupClickListener.html
-http://developer.android.com/reference/android/widget/ExpandableListView.OnGroupCollapseListener.html
-http://developer.android.com/reference/android/widget/ExpandableListView.OnGroupExpandListener.html
-http://developer.android.com/reference/android/widget/Filter.FilterListener.html
-http://developer.android.com/reference/android/widget/Filterable.html
-http://developer.android.com/reference/android/widget/FilterQueryProvider.html
-http://developer.android.com/reference/android/widget/MediaController.MediaPlayerControl.html
-http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.Tokenizer.html
-http://developer.android.com/reference/android/widget/PopupWindow.OnDismissListener.html
-http://developer.android.com/reference/android/widget/RadioGroup.OnCheckedChangeListener.html
-http://developer.android.com/reference/android/widget/RatingBar.OnRatingBarChangeListener.html
-http://developer.android.com/reference/android/widget/SectionIndexer.html
-http://developer.android.com/reference/android/widget/SeekBar.OnSeekBarChangeListener.html
-http://developer.android.com/reference/android/widget/SimpleAdapter.ViewBinder.html
-http://developer.android.com/reference/android/widget/SimpleCursorAdapter.CursorToStringConverter.html
-http://developer.android.com/reference/android/widget/SimpleCursorAdapter.ViewBinder.html
-http://developer.android.com/reference/android/widget/SlidingDrawer.OnDrawerCloseListener.html
-http://developer.android.com/reference/android/widget/SlidingDrawer.OnDrawerOpenListener.html
-http://developer.android.com/reference/android/widget/SlidingDrawer.OnDrawerScrollListener.html
-http://developer.android.com/reference/android/widget/TabHost.OnTabChangeListener.html
-http://developer.android.com/reference/android/widget/TabHost.TabContentFactory.html
-http://developer.android.com/reference/android/widget/TextView.OnEditorActionListener.html
-http://developer.android.com/reference/android/widget/TimePicker.OnTimeChangedListener.html
-http://developer.android.com/reference/android/widget/ViewSwitcher.ViewFactory.html
-http://developer.android.com/reference/android/widget/WrapperListAdapter.html
-http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html
+http://developer.android.com/reference/java/io/Serializable.html
+http://developer.android.com/reference/java/lang/reflect/AnnotatedElement.html
+http://developer.android.com/reference/java/lang/reflect/GenericDeclaration.html
+http://developer.android.com/reference/java/lang/reflect/Type.html
+http://developer.android.com/reference/java/lang/annotation/Annotation.html
+http://developer.android.com/reference/java/lang/reflect/TypeVariable.html
+http://developer.android.com/reference/java/util/Comparator.html
+http://developer.android.com/reference/java/util/Enumeration.html
+http://developer.android.com/reference/java/util/EventListener.html
+http://developer.android.com/reference/java/util/Iterator.html
+http://developer.android.com/reference/java/util/ListIterator.html
+http://developer.android.com/reference/java/util/Map.html
+http://developer.android.com/reference/java/util/Map.Entry.html
+http://developer.android.com/reference/java/util/Observer.html
+http://developer.android.com/reference/java/util/RandomAccess.html
+http://developer.android.com/reference/java/util/SortedMap.html
+http://developer.android.com/reference/java/util/SortedSet.html
+http://developer.android.com/reference/android/provider/BaseColumns.html
+http://developer.android.com/reference/android/provider/Contacts.ContactMethodsColumns.html
+http://developer.android.com/reference/android/provider/Contacts.ExtensionsColumns.html
+http://developer.android.com/reference/android/provider/Contacts.GroupsColumns.html
+http://developer.android.com/reference/android/provider/Contacts.OrganizationColumns.html
+http://developer.android.com/reference/android/provider/Contacts.PeopleColumns.html
+http://developer.android.com/reference/android/provider/Contacts.PhonesColumns.html
+http://developer.android.com/reference/android/provider/Contacts.PhotosColumns.html
+http://developer.android.com/reference/android/provider/Contacts.PresenceColumns.html
+http://developer.android.com/reference/android/provider/Contacts.SettingsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.BaseSyncColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.BaseTypes.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.CommonColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactOptionsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactStatusColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.DataColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.DataColumnsWithJoins.html
+http://developer.android.com/reference/android/provider/ContactsContract.GroupsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookupColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.PresenceColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContactsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.SettingsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.StatusColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.SyncColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.AlbumColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.ArtistColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.AudioColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.GenresColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.PlaylistsColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Images.ImageColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.MediaColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Video.VideoColumns.html
+http://developer.android.com/reference/android/provider/OpenableColumns.html
+http://developer.android.com/reference/android/provider/SyncStateContract.Columns.html
 http://developer.android.com/reference/java/io/Closeable.html
+http://developer.android.com/reference/java/io/Flushable.html
 http://developer.android.com/reference/java/io/DataInput.html
 http://developer.android.com/reference/java/io/DataOutput.html
 http://developer.android.com/reference/java/io/Externalizable.html
 http://developer.android.com/reference/java/io/FileFilter.html
 http://developer.android.com/reference/java/io/FilenameFilter.html
-http://developer.android.com/reference/java/io/Flushable.html
 http://developer.android.com/reference/java/io/ObjectInput.html
 http://developer.android.com/reference/java/io/ObjectInputValidation.html
 http://developer.android.com/reference/java/io/ObjectOutput.html
 http://developer.android.com/reference/java/io/ObjectStreamConstants.html
-http://developer.android.com/reference/java/io/Serializable.html
-http://developer.android.com/reference/org/xmlpull/v1/XmlSerializer.html
-http://developer.android.com/reference/org/xml/sax/ContentHandler.html
-http://developer.android.com/reference/java/security/acl/Acl.html
-http://developer.android.com/reference/java/security/acl/AclEntry.html
-http://developer.android.com/reference/java/security/acl/Group.html
-http://developer.android.com/reference/java/security/acl/Owner.html
-http://developer.android.com/reference/java/security/acl/Permission.html
-http://developer.android.com/reference/java/security/acl/package-descr.html
-http://developer.android.com/reference/android/os/Parcelable.Creator.html
-http://developer.android.com/reference/org/apache/http/client/AuthenticationHandler.html
-http://developer.android.com/reference/org/apache/http/client/HttpClient.html
-http://developer.android.com/reference/org/apache/http/client/UserTokenHandler.html
-http://developer.android.com/reference/org/apache/http/client/package-descr.html
-http://developer.android.com/reference/org/apache/http/HttpResponse.html
-http://developer.android.com/reference/android/hardware/Camera.AutoFocusCallback.html
-http://developer.android.com/reference/android/hardware/Camera.ErrorCallback.html
-http://developer.android.com/reference/android/hardware/Camera.PictureCallback.html
-http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html
-http://developer.android.com/reference/android/hardware/Camera.ShutterCallback.html
-http://developer.android.com/reference/android/hardware/SensorEventListener.html
-http://developer.android.com/reference/android/hardware/SensorListener.html
-http://developer.android.com/reference/android/hardware/Camera.html
-http://developer.android.com/reference/android/hardware/package-descr.html
-http://developer.android.com/reference/java/nio/charset/package-descr.html
-http://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html
-http://developer.android.com/reference/android/preference/Preference.OnPreferenceClickListener.html
-http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityDestroyListener.html
-http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityResultListener.html
-http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityStopListener.html
-http://developer.android.com/reference/android/preference/package-descr.html
+http://developer.android.com/reference/android/accounts/AccountManagerCallback.html
+http://developer.android.com/reference/android/accounts/AccountManagerFuture.html
+http://developer.android.com/reference/android/accounts/OnAccountsUpdateListener.html
 http://developer.android.com/reference/java/nio/channels/ByteChannel.html
 http://developer.android.com/reference/java/nio/channels/Channel.html
 http://developer.android.com/reference/java/nio/channels/GatheringByteChannel.html
@@ -2316,49 +2583,65 @@
 http://developer.android.com/reference/java/nio/channels/ReadableByteChannel.html
 http://developer.android.com/reference/java/nio/channels/ScatteringByteChannel.html
 http://developer.android.com/reference/java/nio/channels/WritableByteChannel.html
-http://developer.android.com/reference/java/util/Map.Entry.html
-http://developer.android.com/reference/org/apache/http/message/HeaderValueFormatter.html
-http://developer.android.com/reference/org/apache/http/message/HeaderValueParser.html
-http://developer.android.com/reference/org/apache/http/message/LineFormatter.html
-http://developer.android.com/reference/org/apache/http/message/LineParser.html
-http://developer.android.com/reference/org/apache/http/HeaderElement.html
-http://developer.android.com/reference/org/apache/http/NameValuePair.html
-http://developer.android.com/reference/javax/crypto/SecretKey.html
-http://developer.android.com/reference/java/security/spec/AlgorithmParameterSpec.html
+http://developer.android.com/reference/org/apache/http/client/AuthenticationHandler.html
+http://developer.android.com/reference/org/apache/http/client/UserTokenHandler.html
+http://developer.android.com/reference/org/apache/http/client/HttpClient.html
+http://developer.android.com/reference/android/util/package-descr.html
+http://developer.android.com/reference/android/app/DatePickerDialog.OnDateSetListener.html
+http://developer.android.com/reference/android/app/KeyguardManager.OnKeyguardExitResult.html
+http://developer.android.com/reference/android/app/PendingIntent.OnFinished.html
+http://developer.android.com/reference/android/app/SearchManager.OnCancelListener.html
+http://developer.android.com/reference/android/app/SearchManager.OnDismissListener.html
+http://developer.android.com/reference/android/app/TimePickerDialog.OnTimeSetListener.html
+http://developer.android.com/guide/topics/ui/notifiers/notifications.html
+http://developer.android.com/reference/java/text/AttributedCharacterIterator.html
+http://developer.android.com/reference/org/xml/sax/helpers/package-descr.html
+http://developer.android.com/reference/org/apache/http/params/CoreConnectionPNames.html
+http://developer.android.com/reference/org/apache/http/params/CoreProtocolPNames.html
+http://developer.android.com/reference/java/security/Certificate.html
+http://developer.android.com/reference/java/security/DomainCombiner.html
+http://developer.android.com/reference/java/security/Guard.html
+http://developer.android.com/reference/java/security/KeyStore.Entry.html
+http://developer.android.com/reference/java/security/KeyStore.LoadStoreParameter.html
+http://developer.android.com/reference/java/security/KeyStore.ProtectionParameter.html
+http://developer.android.com/reference/java/security/PrivateKey.html
+http://developer.android.com/reference/java/security/PrivilegedExceptionAction.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethod.SessionCallback.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.EventCallback.html
 http://developer.android.com/reference/android/database/CrossProcessCursor.html
 http://developer.android.com/reference/android/database/CharArrayBuffer.html
 http://developer.android.com/reference/android/database/Observable.html
 http://developer.android.com/reference/android/database/SQLException.html
-http://developer.android.com/reference/java/util/Collection.html
-http://developer.android.com/reference/java/util/Comparator.html
-http://developer.android.com/reference/java/util/Enumeration.html
-http://developer.android.com/reference/java/util/EventListener.html
-http://developer.android.com/reference/java/util/Iterator.html
-http://developer.android.com/reference/java/util/ListIterator.html
-http://developer.android.com/reference/java/util/Map.html
-http://developer.android.com/reference/java/util/Observer.html
-http://developer.android.com/reference/java/util/RandomAccess.html
-http://developer.android.com/reference/java/util/SortedMap.html
-http://developer.android.com/reference/java/util/SortedSet.html
-http://developer.android.com/reference/org/apache/http/cookie/ClientCookie.html
-http://developer.android.com/reference/org/apache/http/cookie/Cookie.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieSpec.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieSpecFactory.html
-http://developer.android.com/reference/org/apache/http/cookie/SetCookie.html
-http://developer.android.com/reference/org/apache/http/cookie/SetCookie2.html
-http://developer.android.com/reference/org/apache/http/cookie/SM.html
-http://developer.android.com/reference/android/content/res/XmlResourceParser.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionPNames.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerPNames.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRoute.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnRoutePNames.html
-http://developer.android.com/reference/org/apache/http/client/methods/AbortableHttpRequest.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpUriRequest.html
-http://developer.android.com/reference/org/apache/http/RequestLine.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionRequest.html
-http://developer.android.com/reference/org/apache/http/conn/ConnectionReleaseTrigger.html
-http://developer.android.com/reference/org/apache/http/Header.html
-http://developer.android.com/reference/org/apache/http/HttpMessage.html
+http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
+http://developer.android.com/reference/android/text/style/AlignmentSpan.html
+http://developer.android.com/reference/android/text/style/LeadingMarginSpan.html
+http://developer.android.com/reference/android/text/style/LineBackgroundSpan.html
+http://developer.android.com/reference/android/text/style/LineHeightSpan.html
+http://developer.android.com/reference/android/text/style/LineHeightSpan.WithDensity.html
+http://developer.android.com/reference/android/text/style/ParagraphStyle.html
+http://developer.android.com/reference/android/text/style/TabStopSpan.html
+http://developer.android.com/reference/android/text/style/UpdateAppearance.html
+http://developer.android.com/reference/android/text/style/UpdateLayout.html
+http://developer.android.com/reference/android/text/style/WrapTogetherSpan.html
+http://developer.android.com/reference/android/content/ComponentCallbacks.html
+http://developer.android.com/reference/android/content/DialogInterface.OnCancelListener.html
+http://developer.android.com/reference/android/content/DialogInterface.OnClickListener.html
+http://developer.android.com/reference/android/content/DialogInterface.OnDismissListener.html
+http://developer.android.com/reference/android/content/DialogInterface.OnKeyListener.html
+http://developer.android.com/reference/android/content/DialogInterface.OnMultiChoiceClickListener.html
+http://developer.android.com/reference/android/content/IntentSender.OnFinished.html
+http://developer.android.com/reference/android/content/SharedPreferences.html
+http://developer.android.com/reference/android/content/SharedPreferences.Editor.html
+http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html
+http://developer.android.com/reference/android/content/SyncStatusObserver.html
+http://developer.android.com/reference/android/webkit/DownloadListener.html
+http://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback.html
+http://developer.android.com/reference/android/webkit/Plugin.PreferencesClickHandler.html
+http://developer.android.com/reference/android/webkit/PluginStub.html
+http://developer.android.com/reference/android/webkit/UrlInterceptHandler.html
+http://developer.android.com/reference/android/webkit/WebIconDatabase.IconListener.html
+http://developer.android.com/reference/android/webkit/WebStorage.QuotaUpdater.html
+http://developer.android.com/reference/android/webkit/WebView.PictureListener.html
 http://developer.android.com/reference/android/media/AudioRecord.OnRecordPositionUpdateListener.html
 http://developer.android.com/reference/android/media/AudioTrack.OnPlaybackPositionUpdateListener.html
 http://developer.android.com/reference/android/media/JetPlayer.OnJetEventListener.html
@@ -2372,1011 +2655,1209 @@
 http://developer.android.com/reference/android/media/MediaRecorder.OnErrorListener.html
 http://developer.android.com/reference/android/media/MediaRecorder.OnInfoListener.html
 http://developer.android.com/reference/android/media/MediaScannerConnection.MediaScannerConnectionClient.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManagerFactory.html
-http://developer.android.com/reference/org/apache/http/conn/ConnectionKeepAliveStrategy.html
-http://developer.android.com/reference/org/apache/http/HttpConnection.html
-http://developer.android.com/reference/android/net/UrlQuerySanitizer.ValueSanitizer.html
-http://developer.android.com/reference/android/net/Proxy.html
-http://developer.android.com/reference/android/net/ParseException.html
-http://developer.android.com/reference/java/util/regex/MatchResult.html
-http://developer.android.com/reference/org/apache/http/ConnectionReuseStrategy.html
-http://developer.android.com/reference/org/apache/http/FormattedHeader.html
-http://developer.android.com/reference/org/apache/http/HttpClientConnection.html
-http://developer.android.com/reference/org/apache/http/HttpConnectionMetrics.html
-http://developer.android.com/reference/org/apache/http/HttpInetConnection.html
-http://developer.android.com/reference/org/apache/http/HttpRequestFactory.html
-http://developer.android.com/reference/org/apache/http/HttpRequestInterceptor.html
-http://developer.android.com/reference/org/apache/http/HttpResponseFactory.html
-http://developer.android.com/reference/org/apache/http/HttpResponseInterceptor.html
-http://developer.android.com/reference/org/apache/http/HttpServerConnection.html
-http://developer.android.com/reference/org/apache/http/HttpStatus.html
-http://developer.android.com/reference/org/apache/http/ReasonPhraseCatalog.html
-http://developer.android.com/reference/org/apache/http/StatusLine.html
-http://developer.android.com/reference/org/apache/http/ParseException.html
-http://developer.android.com/reference/org/apache/http/ProtocolException.html
-http://developer.android.com/reference/android/provider/Contacts.ContactMethodsColumns.html
-http://developer.android.com/reference/android/provider/Contacts.ExtensionsColumns.html
-http://developer.android.com/reference/android/provider/Contacts.GroupsColumns.html
-http://developer.android.com/reference/android/provider/Contacts.OrganizationColumns.html
-http://developer.android.com/reference/android/provider/Contacts.PhotosColumns.html
-http://developer.android.com/reference/android/provider/Contacts.PresenceColumns.html
-http://developer.android.com/reference/android/provider/Contacts.SettingsColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.AlbumColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.ArtistColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.AudioColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.GenresColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.PlaylistsColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Images.ImageColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.MediaColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Video.VideoColumns.html
-http://developer.android.com/reference/android/provider/OpenableColumns.html
-http://developer.android.com/reference/java/security/cert/Certificate.html
-http://developer.android.com/reference/junit/framework/TestListener.html
-http://developer.android.com/reference/junit/framework/Test.html
-http://developer.android.com/reference/android/os/Handler.Callback.html
-http://developer.android.com/reference/android/os/IBinder.DeathRecipient.html
-http://developer.android.com/reference/android/os/MessageQueue.IdleHandler.html
-http://developer.android.com/reference/android/os/Process.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethod.SessionCallback.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.EventCallback.html
-http://developer.android.com/reference/org/apache/http/io/HttpMessageParser.html
-http://developer.android.com/reference/org/apache/http/io/HttpMessageWriter.html
-http://developer.android.com/reference/android/text/style/AlignmentSpan.html
-http://developer.android.com/reference/android/text/style/LeadingMarginSpan.html
-http://developer.android.com/reference/android/text/style/LineBackgroundSpan.html
-http://developer.android.com/reference/android/text/style/LineHeightSpan.html
-http://developer.android.com/reference/android/text/style/ParagraphStyle.html
-http://developer.android.com/reference/android/text/style/TabStopSpan.html
-http://developer.android.com/reference/android/text/style/UpdateAppearance.html
-http://developer.android.com/reference/android/text/style/UpdateLayout.html
-http://developer.android.com/reference/android/text/style/WrapTogetherSpan.html
-http://developer.android.com/reference/android/text/style/package-descr.html
-http://developer.android.com/reference/android/text/TextWatcher.html
-http://developer.android.com/reference/android/text/method/MovementMethod.html
-http://developer.android.com/reference/android/text/Editable.html
-http://developer.android.com/reference/android/text/InputFilter.html
-http://developer.android.com/reference/android/text/method/KeyListener.html
-http://developer.android.com/reference/android/text/method/TransformationMethod.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteCursorDriver.html
-http://developer.android.com/reference/java/util/concurrent/locks/Condition.html
-http://developer.android.com/reference/org/apache/http/protocol/ExecutionContext.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpExpectationVerifier.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpProcessor.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandler.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerResolver.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestInterceptorList.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpResponseInterceptorList.html
-http://developer.android.com/reference/java/text/AttributedCharacterIterator.html
-http://developer.android.com/reference/android/provider/package-descr.html
-http://developer.android.com/reference/org/apache/http/impl/entity/package-descr.html
-http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedListener.html
-http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html
-http://developer.android.com/reference/javax/net/ssl/KeyManager.html
-http://developer.android.com/reference/javax/net/ssl/ManagerFactoryParameters.html
-http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingListener.html
-http://developer.android.com/reference/javax/net/ssl/SSLSessionContext.html
-http://developer.android.com/reference/javax/net/ssl/X509KeyManager.html
-http://developer.android.com/reference/javax/net/ssl/X509TrustManager.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentMap.html
-http://developer.android.com/reference/java/util/concurrent/Future.html
-http://developer.android.com/reference/java/util/concurrent/RejectedExecutionHandler.html
-http://developer.android.com/reference/java/util/concurrent/ScheduledFuture.html
+http://developer.android.com/reference/android/webkit/package-descr.html
+http://developer.android.com/reference/java/lang/reflect/GenericArrayType.html
+http://developer.android.com/reference/java/lang/reflect/InvocationHandler.html
+http://developer.android.com/reference/java/lang/reflect/Member.html
+http://developer.android.com/reference/java/lang/reflect/ParameterizedType.html
+http://developer.android.com/reference/java/lang/reflect/WildcardType.html
+http://developer.android.com/reference/java/lang/reflect/Proxy.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnRoutePNames.html
+http://developer.android.com/reference/org/apache/http/cookie/Cookie.html
+http://developer.android.com/reference/org/apache/http/cookie/SetCookie.html
+http://developer.android.com/reference/org/xml/sax/ContentHandler.html
 http://developer.android.com/reference/org/xml/sax/DTDHandler.html
 http://developer.android.com/reference/org/xml/sax/EntityResolver.html
 http://developer.android.com/reference/org/xml/sax/ErrorHandler.html
 http://developer.android.com/reference/org/xml/sax/Locator.html
 http://developer.android.com/reference/org/xml/sax/XMLFilter.html
-http://developer.android.com/reference/java/security/cert/CertPathParameters.html
-http://developer.android.com/reference/android/location/GpsStatus.Listener.html
-http://developer.android.com/reference/android/location/LocationListener.html
-http://developer.android.com/reference/org/apache/http/params/CoreConnectionPNames.html
-http://developer.android.com/reference/org/apache/http/params/CoreProtocolPNames.html
-http://developer.android.com/reference/android/text/method/package-descr.html
-http://developer.android.com/guide/samples/NotePad/res/index.html
-http://developer.android.com/guide/samples/NotePad/src/index.html
-http://developer.android.com/guide/samples/NotePad/tests/index.html
-http://developer.android.com/guide/samples/NotePad/AndroidManifest.html
-http://developer.android.com/guide/samples/NotePad/sample_note.html
-http://developer.android.com/guide/samples/NotePad/sample_notepad.html
-http://developer.android.com/reference/android/content/pm/IPackageInstallObserver.html
-http://developer.android.com/guide/samples/LunarLander/res/index.html
-http://developer.android.com/guide/samples/LunarLander/src/index.html
-http://developer.android.com/guide/samples/LunarLander/tests/index.html
-http://developer.android.com/guide/samples/LunarLander/AndroidManifest.html
-http://developer.android.com/guide/samples/LunarLander/sample_lunarlander.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilderResult.html
-http://developer.android.com/reference/java/security/cert/CertPathValidatorResult.html
-http://developer.android.com/reference/java/security/cert/CertSelector.html
-http://developer.android.com/reference/java/security/cert/CertStoreParameters.html
-http://developer.android.com/reference/java/security/cert/CRLSelector.html
-http://developer.android.com/reference/java/security/cert/PolicyNode.html
-http://developer.android.com/reference/java/security/cert/X509Extension.html
-http://developer.android.com/reference/java/security/cert/X509Certificate.html
-http://developer.android.com/reference/java/security/cert/CertificateEncodingException.html
-http://developer.android.com/reference/java/security/cert/CertificateException.html
-http://developer.android.com/reference/java/security/cert/CertificateExpiredException.html
-http://developer.android.com/reference/java/security/cert/CertificateNotYetValidException.html
-http://developer.android.com/reference/java/security/cert/CertificateParsingException.html
-http://developer.android.com/reference/java/security/spec/ECField.html
-http://developer.android.com/reference/java/security/spec/KeySpec.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/PoolEntryRequest.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueHandler.html
-http://developer.android.com/reference/org/apache/http/params/package-descr.html
-http://developer.android.com/sdk/android-1.5-highlights.html
-http://developer.android.com/reference/javax/security/auth/package-descr.html
-http://developer.android.com/reference/java/beans/PropertyChangeListener.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.CursorFactory.html
+http://developer.android.com/reference/java/security/acl/Acl.html
+http://developer.android.com/reference/java/security/acl/AclEntry.html
+http://developer.android.com/reference/org/apache/http/client/params/AllClientPNames.html
+http://developer.android.com/reference/java/sql/Array.html
+http://developer.android.com/reference/org/w3c/dom/Attr.html
+http://developer.android.com/reference/org/apache/http/auth/params/AuthPNames.html
+http://developer.android.com/reference/java/sql/Blob.html
+http://developer.android.com/reference/java/sql/CallableStatement.html
+http://developer.android.com/reference/android/hardware/Camera.html
+http://developer.android.com/reference/android/hardware/Camera.AutoFocusCallback.html
+http://developer.android.com/reference/android/hardware/Camera.ErrorCallback.html
+http://developer.android.com/reference/android/hardware/Camera.PictureCallback.html
+http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html
+http://developer.android.com/reference/android/hardware/Camera.ShutterCallback.html
+http://developer.android.com/reference/org/w3c/dom/CDATASection.html
+http://developer.android.com/reference/org/w3c/dom/CharacterData.html
+http://developer.android.com/reference/org/apache/http/cookie/ClientCookie.html
+http://developer.android.com/reference/org/apache/http/client/params/ClientPNames.html
+http://developer.android.com/reference/java/sql/Clob.html
+http://developer.android.com/reference/org/w3c/dom/Comment.html
+http://developer.android.com/reference/java/util/concurrent/locks/Condition.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionPNames.html
+http://developer.android.com/reference/java/sql/Connection.html
+http://developer.android.com/reference/javax/sql/ConnectionEventListener.html
+http://developer.android.com/reference/javax/sql/ConnectionPoolDataSource.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerPNames.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRoute.html
+http://developer.android.com/reference/java/net/ContentHandlerFactory.html
+http://developer.android.com/reference/org/apache/http/entity/ContentLengthStrategy.html
+http://developer.android.com/reference/org/apache/http/entity/ContentProducer.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieSpec.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieSpecFactory.html
+http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecPNames.html
+http://developer.android.com/reference/android/net/Credentials.html
+http://developer.android.com/reference/java/sql/DatabaseMetaData.html
+http://developer.android.com/reference/java/net/DatagramSocketImplFactory.html
+http://developer.android.com/reference/javax/sql/DataSource.html
+http://developer.android.com/reference/android/text/format/DateUtils.html
+http://developer.android.com/reference/java/lang/Deprecated.html
+http://developer.android.com/reference/javax/crypto/interfaces/DHKey.html
+http://developer.android.com/reference/javax/crypto/interfaces/DHPrivateKey.html
+http://developer.android.com/reference/javax/crypto/interfaces/DHPublicKey.html
+http://developer.android.com/reference/org/w3c/dom/Document.html
+http://developer.android.com/reference/java/lang/annotation/Documented.html
+http://developer.android.com/reference/org/w3c/dom/DocumentFragment.html
+http://developer.android.com/reference/org/w3c/dom/DocumentType.html
+http://developer.android.com/reference/org/w3c/dom/DOMImplementation.html
+http://developer.android.com/reference/java/sql/Driver.html
+http://developer.android.com/reference/java/security/interfaces/DSAKey.html
+http://developer.android.com/reference/java/security/interfaces/DSAKeyPairGenerator.html
+http://developer.android.com/reference/java/security/interfaces/DSAParams.html
+http://developer.android.com/reference/java/security/interfaces/DSAPrivateKey.html
+http://developer.android.com/reference/java/security/interfaces/DSAPublicKey.html
+http://developer.android.com/reference/java/security/interfaces/ECKey.html
+http://developer.android.com/reference/java/security/interfaces/ECPrivateKey.html
+http://developer.android.com/reference/java/security/interfaces/ECPublicKey.html
 http://developer.android.com/reference/javax/microedition/khronos/egl/EGL.html
 http://developer.android.com/reference/javax/microedition/khronos/egl/EGL10.html
 http://developer.android.com/reference/javax/microedition/khronos/egl/EGL11.html
-http://developer.android.com/reference/android/text/GetChars.html
-http://developer.android.com/reference/android/text/Html.ImageGetter.html
-http://developer.android.com/reference/android/text/Html.TagHandler.html
-http://developer.android.com/reference/android/text/InputType.html
-http://developer.android.com/reference/android/text/NoCopySpan.html
-http://developer.android.com/reference/android/text/ParcelableSpan.html
-http://developer.android.com/reference/android/text/Spannable.html
-http://developer.android.com/reference/android/text/Spanned.html
-http://developer.android.com/reference/android/text/SpanWatcher.html
-http://developer.android.com/reference/android/text/TextUtils.EllipsizeCallback.html
-http://developer.android.com/reference/android/text/TextUtils.StringSplitter.html
-http://developer.android.com/reference/android/text/Annotation.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/LayeredSocketFactory.html
+http://developer.android.com/reference/org/w3c/dom/Element.html
+http://developer.android.com/reference/android/sax/ElementListener.html
+http://developer.android.com/reference/android/sax/EndElementListener.html
+http://developer.android.com/reference/android/sax/EndTextElementListener.html
+http://developer.android.com/reference/org/w3c/dom/Entity.html
+http://developer.android.com/reference/org/w3c/dom/EntityReference.html
+http://developer.android.com/reference/java/net/FileNameMap.html
+http://developer.android.com/reference/android/test/FlakyTest.html
+http://developer.android.com/reference/android/text/format/Formatter.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGestureListener.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGesturePerformedListener.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGesturingListener.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10Ext.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11Ext.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11ExtensionPack.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLConfigChooser.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLContextFactory.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLWindowSurfaceFactory.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.GLWrapper.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.Renderer.html
+http://developer.android.com/reference/android/location/GpsStatus.Listener.html
+http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html
+http://developer.android.com/reference/java/security/acl/Group.html
+http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedListener.html
+http://developer.android.com/reference/org/apache/http/message/HeaderValueFormatter.html
+http://developer.android.com/reference/org/apache/http/message/HeaderValueParser.html
 http://developer.android.com/reference/org/apache/http/conn/scheme/HostNameResolver.html
+http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html
+http://developer.android.com/reference/java/lang/annotation/Inherited.html
+http://developer.android.com/reference/android/inputmethodservice/KeyboardView.OnKeyboardActionListener.html
+http://developer.android.com/reference/javax/net/ssl/KeyManager.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/LargeTest.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/LayeredSocketFactory.html
 http://developer.android.com/reference/org/apache/http/conn/scheme/SocketFactory.html
-http://developer.android.com/reference/java/lang/reflect/AnnotatedElement.html
-http://developer.android.com/reference/java/lang/reflect/GenericArrayType.html
-http://developer.android.com/reference/java/lang/reflect/GenericDeclaration.html
-http://developer.android.com/reference/java/lang/reflect/InvocationHandler.html
-http://developer.android.com/reference/java/lang/reflect/Member.html
-http://developer.android.com/reference/java/lang/reflect/ParameterizedType.html
-http://developer.android.com/reference/java/lang/reflect/Type.html
-http://developer.android.com/reference/java/lang/reflect/TypeVariable.html
-http://developer.android.com/reference/java/lang/reflect/WildcardType.html
-http://developer.android.com/reference/java/lang/reflect/Proxy.html
-http://developer.android.com/reference/org/apache/http/client/params/AllClientPNames.html
+http://developer.android.com/reference/org/apache/http/message/LineFormatter.html
+http://developer.android.com/reference/org/apache/http/message/LineParser.html
+http://developer.android.com/reference/android/location/LocationListener.html
+http://developer.android.com/reference/javax/net/ssl/ManagerFactoryParameters.html
+http://developer.android.com/reference/java/util/jar/Manifest.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/MediumTest.html
+http://developer.android.com/reference/org/w3c/dom/NamedNodeMap.html
+http://developer.android.com/reference/org/w3c/dom/Node.html
+http://developer.android.com/reference/java/util/prefs/NodeChangeListener.html
+http://developer.android.com/reference/org/w3c/dom/NodeList.html
+http://developer.android.com/reference/org/w3c/dom/Notation.html
+http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngine.html
+http://developer.android.com/reference/dalvik/bytecode/Opcodes.html
+http://developer.android.com/reference/java/lang/Override.html
+http://developer.android.com/reference/java/security/acl/Owner.html
+http://developer.android.com/reference/java/sql/ParameterMetaData.html
+http://developer.android.com/reference/android/net/ParseException.html
+http://developer.android.com/reference/javax/crypto/interfaces/PBEKey.html
+http://developer.android.com/reference/java/security/acl/Permission.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/PoolEntryRequest.html
+http://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html
+http://developer.android.com/reference/android/preference/Preference.OnPreferenceClickListener.html
+http://developer.android.com/reference/java/util/prefs/PreferenceChangeListener.html
+http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityDestroyListener.html
+http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityResultListener.html
+http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityStopListener.html
+http://developer.android.com/reference/java/util/prefs/PreferencesFactory.html
+http://developer.android.com/reference/java/sql/PreparedStatement.html
+http://developer.android.com/reference/org/w3c/dom/ProcessingInstruction.html
+http://developer.android.com/reference/java/beans/PropertyChangeListener.html
 http://developer.android.com/reference/junit/framework/Protectable.html
-http://developer.android.com/reference/javax/sql/ConnectionEventListener.html
-http://developer.android.com/reference/javax/sql/ConnectionPoolDataSource.html
-http://developer.android.com/reference/javax/sql/DataSource.html
+http://developer.android.com/reference/android/net/Proxy.html
+http://developer.android.com/reference/java/sql/Ref.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueHandler.html
+http://developer.android.com/reference/android/widget/RemoteViews.RemoteView.html
+http://developer.android.com/reference/java/sql/ResultSet.html
+http://developer.android.com/reference/java/sql/ResultSetMetaData.html
+http://developer.android.com/reference/java/lang/annotation/Retention.html
+http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.html
 http://developer.android.com/reference/javax/sql/RowSetInternal.html
 http://developer.android.com/reference/javax/sql/RowSetListener.html
 http://developer.android.com/reference/javax/sql/RowSetMetaData.html
 http://developer.android.com/reference/javax/sql/RowSetReader.html
 http://developer.android.com/reference/javax/sql/RowSetWriter.html
-http://developer.android.com/reference/java/sql/Connection.html
-http://developer.android.com/reference/java/util/logging/Filter.html
-http://developer.android.com/reference/java/util/logging/LoggingMXBean.html
-http://developer.android.com/reference/java/util/logging/Formatter.html
-http://developer.android.com/reference/android/package-descr.html
-http://developer.android.com/reference/android/webkit/DownloadListener.html
-http://developer.android.com/reference/android/webkit/Plugin.PreferencesClickHandler.html
-http://developer.android.com/reference/android/webkit/UrlInterceptHandler.html
-http://developer.android.com/reference/android/webkit/WebIconDatabase.IconListener.html
-http://developer.android.com/reference/android/webkit/WebView.PictureListener.html
-http://developer.android.com/reference/java/security/cert/package-descr.html
-http://developer.android.com/reference/android/inputmethodservice/KeyboardView.OnKeyboardActionListener.html
-http://developer.android.com/reference/android/graphics/drawable/package-descr.html
-http://developer.android.com/reference/java/sql/Array.html
-http://developer.android.com/reference/java/sql/Blob.html
-http://developer.android.com/reference/java/sql/CallableStatement.html
-http://developer.android.com/reference/java/sql/Clob.html
-http://developer.android.com/reference/java/sql/DatabaseMetaData.html
-http://developer.android.com/reference/java/sql/Driver.html
-http://developer.android.com/reference/java/sql/ParameterMetaData.html
-http://developer.android.com/reference/java/sql/PreparedStatement.html
-http://developer.android.com/reference/java/sql/Ref.html
-http://developer.android.com/reference/java/sql/ResultSet.html
-http://developer.android.com/reference/java/sql/ResultSetMetaData.html
-http://developer.android.com/reference/java/sql/Savepoint.html
-http://developer.android.com/reference/java/sql/SQLData.html
-http://developer.android.com/reference/java/sql/SQLInput.html
-http://developer.android.com/reference/java/sql/SQLOutput.html
-http://developer.android.com/reference/java/sql/Statement.html
-http://developer.android.com/reference/java/sql/Struct.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLConfigChooser.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.GLWrapper.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.Renderer.html
-http://developer.android.com/reference/org/apache/http/entity/ContentLengthStrategy.html
-http://developer.android.com/reference/javax/xml/parsers/package-descr.html
-http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngine.html
-http://developer.android.com/reference/java/lang/package-descr.html
-http://developer.android.com/reference/android/webkit/package-descr.html
-http://developer.android.com/reference/java/util/concurrent/locks/package-descr.html
-http://developer.android.com/reference/dalvik/system/package-descr.html
-http://developer.android.com/reference/org/apache/http/client/params/ClientPNames.html
-http://developer.android.com/reference/org/apache/http/entity/ContentProducer.html
-http://developer.android.com/reference/java/util/jar/Manifest.html
-http://developer.android.com/reference/javax/security/cert/package-descr.html
-http://developer.android.com/reference/org/apache/http/conn/params/package-descr.html
-http://developer.android.com/reference/android/view/ViewDebug.CapturedViewProperty.html
-http://developer.android.com/reference/android/view/ViewDebug.ExportedProperty.html
-http://developer.android.com/reference/android/view/ViewDebug.IntToString.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/LargeTest.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/MediumTest.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/SmallTest.html
-http://developer.android.com/reference/android/content/pm/package-descr.html
-http://developer.android.com/reference/org/xml/sax/ext/package-descr.html
-http://developer.android.com/reference/java/io/package-descr.html
-http://developer.android.com/reference/android/widget/RemoteViews.RemoteView.html
-http://developer.android.com/reference/javax/crypto/package-descr.html
-http://developer.android.com/reference/org/apache/http/auth/params/AuthPNames.html
-http://developer.android.com/reference/org/apache/http/auth/params/package-descr.html
-http://developer.android.com/reference/javax/net/package-descr.html
-http://developer.android.com/reference/java/util/prefs/NodeChangeListener.html
-http://developer.android.com/reference/java/util/prefs/PreferenceChangeListener.html
-http://developer.android.com/reference/java/util/prefs/PreferencesFactory.html
-http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.html
-http://developer.android.com/reference/org/apache/http/entity/package-descr.html
-http://developer.android.com/sdk/1.0_r2/requirements.html
-http://developer.android.com/sdk/adt_download.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10.html
-http://developer.android.com/reference/android/inputmethodservice/package-descr.html
-http://developer.android.com/reference/javax/net/ssl/package-descr.html
-http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecPNames.html
-http://developer.android.com/reference/org/apache/http/cookie/params/package-descr.html
-http://developer.android.com/reference/java/security/spec/package-descr.html
-http://developer.android.com/guide/samples/LunarLander/res/drawable/index.html
-http://developer.android.com/guide/samples/LunarLander/res/drawable-land/index.html
-http://developer.android.com/guide/samples/LunarLander/res/drawable-port/index.html
-http://developer.android.com/guide/samples/LunarLander/res/layout/index.html
-http://developer.android.com/guide/samples/LunarLander/res/values/index.html
-http://developer.android.com/reference/java/sql/package-descr.html
-http://developer.android.com/reference/android/graphics/package-descr.html
-http://developer.android.com/reference/android/content/res/package-descr.html
-http://developer.android.com/reference/java/security/interfaces/DSAPublicKey.html
-http://developer.android.com/reference/java/security/interfaces/ECPublicKey.html
-http://developer.android.com/reference/java/security/interfaces/RSAPublicKey.html
-http://developer.android.com/reference/junit/framework/package-descr.html
-http://developer.android.com/reference/org/apache/http/impl/package-descr.html
-http://developer.android.com/guide/appendix/faq/commontasks.html
-http://developer.android.com/guide/appendix/faq/framework.html
-http://developer.android.com/guide/appendix/faq/licensingandoss.html
-http://developer.android.com/guide/appendix/faq/security.html
-http://developer.android.com/sdk/download.html?v=android-sdk-windows-1.0_r2.zip
-http://developer.android.com/sdk/download.html?v=android-sdk-mac_x86-1.0_r2.zip
-http://developer.android.com/sdk/download.html?v=android-sdk-linux_x86-1.0_r2.zip
-http://developer.android.com/reference/android/opengl/package-descr.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10Ext.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11Ext.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11ExtensionPack.html
-http://developer.android.com/reference/android/view/package-descr.html
-http://developer.android.com/reference/org/w3c/dom/Attr.html
-http://developer.android.com/reference/org/w3c/dom/CDATASection.html
-http://developer.android.com/reference/org/w3c/dom/CharacterData.html
-http://developer.android.com/reference/org/w3c/dom/Comment.html
-http://developer.android.com/reference/org/w3c/dom/Document.html
-http://developer.android.com/reference/org/w3c/dom/DocumentFragment.html
-http://developer.android.com/reference/org/w3c/dom/DocumentType.html
-http://developer.android.com/reference/org/w3c/dom/DOMImplementation.html
-http://developer.android.com/reference/org/w3c/dom/Element.html
-http://developer.android.com/reference/org/w3c/dom/Entity.html
-http://developer.android.com/reference/org/w3c/dom/EntityReference.html
-http://developer.android.com/reference/org/w3c/dom/NamedNodeMap.html
-http://developer.android.com/reference/org/w3c/dom/Node.html
-http://developer.android.com/reference/org/w3c/dom/NodeList.html
-http://developer.android.com/reference/org/w3c/dom/Notation.html
-http://developer.android.com/reference/org/w3c/dom/ProcessingInstruction.html
-http://developer.android.com/reference/org/w3c/dom/Text.html
-http://developer.android.com/reference/org/apache/http/message/package-descr.html
-http://developer.android.com/reference/java/util/concurrent/package-descr.html
-http://developer.android.com/guide/tutorials/views/hello-datepicker.html
-http://developer.android.com/guide/tutorials/views/hello-timepicker.html
-http://developer.android.com/reference/android/net/wifi/package-descr.html
-http://developer.android.com/reference/android/content/package-descr.html
-http://developer.android.com/guide/samples/NotePad/src/com/index.html
-http://developer.android.com/guide/samples/LunarLander/src/com/index.html
-http://developer.android.com/reference/org/apache/http/impl/io/package-descr.html
-http://developer.android.com/reference/android/text/format/DateUtils.html
-http://developer.android.com/reference/android/text/format/Formatter.html
-http://developer.android.com/reference/java/security/interfaces/DSAKey.html
-http://developer.android.com/reference/java/security/interfaces/DSAKeyPairGenerator.html
-http://developer.android.com/reference/java/security/interfaces/DSAParams.html
-http://developer.android.com/reference/java/security/interfaces/DSAPrivateKey.html
-http://developer.android.com/reference/java/security/interfaces/ECKey.html
-http://developer.android.com/reference/java/security/interfaces/ECPrivateKey.html
 http://developer.android.com/reference/java/security/interfaces/RSAKey.html
 http://developer.android.com/reference/java/security/interfaces/RSAMultiPrimePrivateCrtKey.html
 http://developer.android.com/reference/java/security/interfaces/RSAPrivateCrtKey.html
 http://developer.android.com/reference/java/security/interfaces/RSAPrivateKey.html
-http://developer.android.com/reference/java/security/interfaces/package-descr.html
-http://developer.android.com/reference/org/apache/http/client/params/package-descr.html
-http://developer.android.com/guide/samples/LunarLander/res/layout/lunar_layout.html
-http://developer.android.com/reference/android/net/package-descr.html
-http://developer.android.com/reference/android/text/util/Linkify.MatchFilter.html
-http://developer.android.com/reference/android/text/util/Linkify.TransformFilter.html
-http://developer.android.com/reference/android/text/util/package-descr.html
-http://developer.android.com/reference/android/appwidget/package-descr.html
-http://developer.android.com/sdk/1.1_r1/requirements.html
-http://developer.android.com/sdk/download.html?v=android-sdk-windows-1.1_r1.zip
-http://developer.android.com/sdk/download.html?v=android-sdk-mac_x86-1.1_r1.zip
-http://developer.android.com/sdk/download.html?v=android-sdk-linux_x86-1.1_r1.zip
-http://developer.android.com/reference/android/graphics/drawable/shapes/package-descr.html
-http://developer.android.com/reference/javax/xml/package-descr.html
-http://developer.android.com/guide/samples/LunarLander/res/drawable-land/earthrise.html
-http://developer.android.com/reference/android/test/mock/package-descr.html
-http://developer.android.com/reference/org/apache/http/protocol/package-descr.html
-http://developer.android.com/guide/samples/LunarLander/tests/src/index.html
-http://developer.android.com/guide/samples/LunarLander/tests/AndroidManifest.html
-http://developer.android.com/guide/samples/NotePad/tests/src/index.html
-http://developer.android.com/guide/samples/NotePad/tests/AndroidManifest.html
-http://developer.android.com/reference/java/lang/annotation/Retention.html
-http://developer.android.com/reference/java/util/prefs/package-descr.html
-http://developer.android.com/reference/android/view/animation/package-descr.html
-http://developer.android.com/reference/java/nio/charset/spi/package-descr.html
-http://developer.android.com/reference/javax/security/auth/x500/package-descr.html
-http://developer.android.com/reference/org/apache/http/conn/package-descr.html
-http://developer.android.com/reference/java/util/package-descr.html
-http://developer.android.com/guide/samples/NotePad/src/com/example/index.html
-http://developer.android.com/guide/samples/NotePad/src/com/google/index.html
-http://developer.android.com/reference/android/telephony/gsm/package-descr.html
-http://developer.android.com/reference/android/sax/ElementListener.html
-http://developer.android.com/reference/android/sax/EndElementListener.html
-http://developer.android.com/reference/android/sax/EndTextElementListener.html
+http://developer.android.com/reference/java/security/interfaces/RSAPublicKey.html
+http://developer.android.com/reference/java/sql/Savepoint.html
+http://developer.android.com/reference/javax/crypto/SecretKey.html
+http://developer.android.com/reference/android/hardware/SensorEventListener.html
+http://developer.android.com/reference/android/hardware/SensorListener.html
+http://developer.android.com/reference/org/apache/http/cookie/SetCookie2.html
+http://developer.android.com/reference/org/apache/http/cookie/SM.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/SmallTest.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/Smoke.html
+http://developer.android.com/reference/android/telephony/gsm/SmsManager.html
+http://developer.android.com/reference/android/telephony/SmsMessage.html
+http://developer.android.com/reference/android/telephony/SmsMessage.MessageClass.html
+http://developer.android.com/reference/android/telephony/SmsMessage.SubmitPdu.html
+http://developer.android.com/reference/java/net/SocketImplFactory.html
+http://developer.android.com/reference/java/net/SocketOptions.html
+http://developer.android.com/reference/java/sql/SQLData.html
+http://developer.android.com/reference/java/sql/SQLInput.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteCursorDriver.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteTransactionListener.html
+http://developer.android.com/reference/java/sql/SQLOutput.html
+http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingListener.html
+http://developer.android.com/reference/javax/net/ssl/SSLSessionContext.html
 http://developer.android.com/reference/android/sax/StartElementListener.html
-http://developer.android.com/reference/android/sax/TextElementListener.html
-http://developer.android.com/reference/android/sax/package-descr.html
-http://developer.android.com/reference/index.html
-http://developer.android.com/reference/org/apache/http/client/methods/package-descr.html
-http://developer.android.com/reference/android/database/sqlite/package-descr.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html
-http://developer.android.com/guide/samples/LunarLander/res/values/strings.html
-http://developer.android.com/reference/android/telephony/package-descr.html
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/index.html
-http://developer.android.com/reference/org/apache/http/package-descr.html
-http://developer.android.com/reference/java/util/regex/package-descr.html
-http://developer.android.com/guide/samples/LunarLander/res/drawable-port/earthrise.html
-http://developer.android.com/reference/android/location/package-descr.html
+http://developer.android.com/reference/java/sql/Statement.html
+http://developer.android.com/reference/java/sql/Struct.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/Suppress.html
+http://developer.android.com/reference/java/lang/SuppressWarnings.html
 http://developer.android.com/reference/java/lang/annotation/Target.html
+http://developer.android.com/reference/junit/framework/Test.html
+http://developer.android.com/reference/junit/framework/TestListener.html
+http://developer.android.com/reference/junit/runner/TestSuiteLoader.html
+http://developer.android.com/reference/dalvik/annotation/TestTarget.html
+http://developer.android.com/reference/dalvik/annotation/TestTargetClass.html
+http://developer.android.com/reference/org/w3c/dom/Text.html
+http://developer.android.com/reference/android/sax/TextElementListener.html
+http://developer.android.com/reference/android/test/UiThreadTest.html
+http://developer.android.com/reference/android/net/UrlQuerySanitizer.ValueSanitizer.html
+http://developer.android.com/reference/java/net/URLStreamHandlerFactory.html
+http://developer.android.com/reference/android/view/ViewDebug.CapturedViewProperty.html
+http://developer.android.com/reference/android/view/ViewDebug.ExportedProperty.html
+http://developer.android.com/reference/android/view/ViewDebug.FlagToString.html
+http://developer.android.com/reference/android/view/ViewDebug.IntToString.html
+http://developer.android.com/reference/javax/net/ssl/X509KeyManager.html
+http://developer.android.com/reference/javax/net/ssl/X509TrustManager.html
+http://developer.android.com/reference/org/xmlpull/v1/XmlSerializer.html
+http://developer.android.com/reference/org/apache/http/cookie/params/package-descr.html
+http://developer.android.com/reference/java/util/concurrent/locks/package-descr.html
+http://developer.android.com/reference/org/apache/http/conn/routing/package-descr.html
+http://developer.android.com/guide/samples/index.html
 http://developer.android.com/guide/tutorials/notepad/notepad-ex1.html
 http://developer.android.com/guide/tutorials/notepad/notepad-ex2.html
 http://developer.android.com/guide/tutorials/notepad/notepad-ex3.html
 http://developer.android.com/guide/tutorials/notepad/notepad-extra-credit.html
-http://developer.android.com/reference/java/math/package-descr.html
-http://developer.android.com/guide/samples/LunarLander/res/drawable/app_lunar_lander.html
-http://developer.android.com/guide/samples/LunarLander/res/drawable/lander_crashed.html
-http://developer.android.com/guide/samples/LunarLander/res/drawable/lander_firing.html
-http://developer.android.com/guide/samples/LunarLander/res/drawable/lander_plain.html
-http://developer.android.com/reference/android/test/UiThreadTest.html
-http://developer.android.com/guide/topics/ui/notifiers/notifications.html
-http://developer.android.com/guide/samples/NotePad/tests/src/com/index.html
-http://developer.android.com/reference/java/util/jar/package-descr.html
-http://developer.android.com/reference/org/apache/http/io/package-descr.html
-http://developer.android.com/reference/org/xml/sax/helpers/package-descr.html
-http://developer.android.com/reference/android/database/package-descr.html
-http://developer.android.com/reference/javax/sql/package-descr.html
-http://developer.android.com/reference/java/nio/package-descr.html
-http://developer.android.com/sdk/OLD_RELEASENOTES.html
-http://developer.android.com/sdk/download.html?v=android-sdk-windows-0.9_beta.zip
-http://developer.android.com/sdk/download.html?v=android-sdk-mac_x86-0.9_beta.zip
-http://developer.android.com/sdk/download.html?v=android-sdk-linux_x86-0.9_beta.zip
-http://developer.android.com/sdk/download.html?v=android-sdk_m5-rc15_windows.zip
-http://developer.android.com/sdk/download.html?v=android-sdk_m5-rc15_mac-x86.zip
-http://developer.android.com/sdk/download.html?v=android-sdk_m5-rc15_linux-x86.zip
-http://developer.android.com/sdk/download.html?v=android-sdk_m5-rc14_windows.zip
-http://developer.android.com/sdk/download.html?v=android-sdk_m5-rc14_mac-x86.zip
-http://developer.android.com/sdk/download.html?v=android-sdk_m5-rc14_linux-x86.zip
-http://developer.android.com/sdk/download.html?v=android_sdk_windows_m3-rc37a.zip
-http://developer.android.com/sdk/download.html?v=android_sdk_darwin_m3-rc37a.zip
-http://developer.android.com/sdk/download.html?v=android_sdk_linux_m3-rc37a.zip
-http://developer.android.com/sdk/download.html?v=android_sdk_windows_m3-rc22a.zip
-http://developer.android.com/sdk/download.html?v=android_sdk_darwin_m3-rc22a.zip
-http://developer.android.com/sdk/download.html?v=android_sdk_linux_m3-rc22a.zip
-http://developer.android.com/sdk/download.html?v=android_sdk_windows_m3-rc20a.zip
-http://developer.android.com/sdk/download.html?v=android_sdk_darwin_m3-rc20a.zip
-http://developer.android.com/sdk/download.html?v=android_sdk_linux_m3-rc20a.zip
-http://developer.android.com/reference/javax/crypto/spec/package-descr.html
-http://developer.android.com/reference/java/nio/channels/spi/package-descr.html
-http://developer.android.com/reference/dalvik/bytecode/Opcodes.html
-http://developer.android.com/reference/dalvik/bytecode/package-descr.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/package-descr.html
-http://developer.android.com/sdk/api_diff/3/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/3/changes/changes-summary.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/content/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/text/index.html
-http://developer.android.com/guide/samples/ApiDemos/assets/index.html
-http://developer.android.com/guide/samples/ApiDemos/res/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/index.html
-http://developer.android.com/guide/samples/ApiDemos/tests/index.html
-http://developer.android.com/guide/samples/ApiDemos/AndroidManifest.html
-http://developer.android.com/reference/org/xml/sax/package-descr.html
-http://developer.android.com/reference/android/widget/package-descr.html
-http://developer.android.com/reference/android/test/suitebuilder/package-descr.html
-http://developer.android.com/reference/android/media/package-descr.html
-http://developer.android.com/reference/java/util/logging/package-descr.html
-http://developer.android.com/reference/java/nio/channels/package-descr.html
-http://developer.android.com/guide/samples/ApiDemos/assets/fonts/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/content/StyledText.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/content/ResourcesSample.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/content/ReadAsset.html
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/ShapeDrawable1.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/hello_world.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/PolyToPoly.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/DrawPoints.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/PathEffects.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/SurfaceViewOverlay.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/surface_view_overlay.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/AlphaBitmap.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawable.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawables.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Arcs.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapDecode.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapMesh.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapPixels.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Clipping.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/ColorMatrixSample.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/ColorPickerDialog.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Compass.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/CreateBitmap.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Cube.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/CubeRenderer.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/GradientDrawable1.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/GraphicsActivity.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Layers.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/MeasureText.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/PathFillTypes.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Patterns.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/PictureLayout.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Pictures.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/ProxyDrawable.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Regions.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/RoundRects.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/ScaleToFit.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/SensorTest.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Sweep.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TextAlign.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TranslucentGLSurfaceViewActivity.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TriangleActivity.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TriangleRenderer.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Typefaces.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/UnicodeChart.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Vertices.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html
-http://developer.android.com/reference/org/apache/http/client/utils/package-descr.html
-http://developer.android.com/guide/samples/NotePad/tests/src/com/example/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/content/ReadAsset.java
-http://developer.android.com/guide/developing/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/custom_view_1.html
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/NoteEditor.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Sweep.java
+http://developer.android.com/guide/appendix/faq/commontasks.html
+http://developer.android.com/reference/javax/security/cert/package-descr.html
+http://developer.android.com/reference/org/xml/sax/ext/package-descr.html
+http://developer.android.com/reference/java/security/package-descr.html
+http://developer.android.com/guide/topics/ui/notifiers/toasts.html
+http://developer.android.com/guide/appendix/faq/index.html
+http://developer.android.com/reference/org/apache/http/message/package-descr.html
+http://developer.android.com/resources/samples/ContactManager/res/index.html
+http://developer.android.com/resources/samples/ContactManager/src/index.html
+http://developer.android.com/resources/samples/ContactManager/AndroidManifest.html
+http://developer.android.com/guide/developing/tools/adt.html
+http://developer.android.com/resources/samples/BluetoothChat/res/index.html
+http://developer.android.com/resources/samples/BluetoothChat/src/index.html
+http://developer.android.com/resources/samples/BluetoothChat/AndroidManifest.html
 http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/package-descr.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapPixels.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/SurfaceViewOverlay.java
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/NotePad.html
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/NotesList.html
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/TitleEditor.html
+http://developer.android.com/reference/android/content/pm/package-descr.html
+http://developer.android.com/reference/org/apache/http/auth/params/package-descr.html
+http://developer.android.com/reference/org/apache/http/cookie/package-descr.html
+http://developer.android.com/reference/java/net/package-descr.html
+http://developer.android.com/reference/java/util/prefs/package-descr.html
+http://developer.android.com/reference/android/sax/package-descr.html
+http://developer.android.com/resources/samples/LunarLander/res/index.html
+http://developer.android.com/resources/samples/LunarLander/src/index.html
+http://developer.android.com/resources/samples/LunarLander/tests/index.html
+http://developer.android.com/resources/samples/LunarLander/AndroidManifest.html
+http://developer.android.com/reference/java/io/package-descr.html
+http://developer.android.com/reference/javax/xml/parsers/package-descr.html
+http://developer.android.com/reference/java/nio/channels/package-descr.html
+http://developer.android.com/resources/tutorials/views/hello-datepicker.html
+http://developer.android.com/resources/tutorials/views/hello-timepicker.html
+http://developer.android.com/reference/java/util/concurrent/package-descr.html
+http://developer.android.com/reference/org/apache/http/client/utils/package-descr.html
+http://developer.android.com/reference/android/database/sqlite/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html
+http://developer.android.com/resources/samples/WiktionarySimple/src/com/index.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/index.html
+http://developer.android.com/resources/samples/ApiDemos/tests/AndroidManifest.html
+http://developer.android.com/resources/samples/LunarLander/src/com/index.html
+http://developer.android.com/reference/junit/framework/package-descr.html
+http://developer.android.com/reference/java/util/concurrent/atomic/package-descr.html
+http://developer.android.com/reference/org/xml/sax/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/index.html
+http://developer.android.com/reference/java/lang/package-descr.html
+http://developer.android.com/reference/android/bluetooth/package-descr.html
+http://developer.android.com/guide/appendix/faq/framework.html
+http://developer.android.com/guide/appendix/faq/troubleshooting.html
+http://developer.android.com/guide/appendix/faq/licensingandoss.html
+http://developer.android.com/guide/appendix/faq/security.html
+http://developer.android.com/resources/samples/ApiDemos/assets/fonts/index.html
+http://developer.android.com/reference/android/telephony/package-descr.html
+http://developer.android.com/reference/android/hardware/package-descr.html
+http://developer.android.com/reference/android/package-descr.html
+http://developer.android.com/reference/java/sql/package-descr.html
+http://developer.android.com/reference/org/apache/http/impl/io/package-descr.html
+http://developer.android.com/resources/tutorials/views/hello-spinner.html
+http://developer.android.com/resources/tutorials/views/hello-listview.html
+http://developer.android.com/resources/tutorials/views/hello-gridview.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-nodpi/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/raw/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-large/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-large-long/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-large-notlong/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-long/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-normal/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-normal-long/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-normal-notlong/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-notlong/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-small/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-small-long/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-small-notlong/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/xml/index.html
+http://developer.android.com/reference/android/view/inputmethod/package-descr.html
+http://developer.android.com/resources/samples/NotePad/res/layout/note_editor.html
+http://developer.android.com/resources/samples/NotePad/res/layout/noteslist_item.html
+http://developer.android.com/resources/samples/NotePad/res/layout/title_editor.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/alert_dialog_icon.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/app_sample_code.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/arrow_down_float.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/arrow_up_float.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/btn_check_off.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/btn_check_on.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/btn_circle_normal.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/btn_default_normal.9.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/button.9.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/ic_contact_picture.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/ic_popup_reminder.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/icon48x48_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/progress_circular_background.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/progress_particle.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/robot.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/scrollbar_state2.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/star_big_on.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/stat_happy.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/stat_neutral.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/stat_sad.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/stat_sample.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.html
+http://developer.android.com/resources/samples/Snake/res/index.html
+http://developer.android.com/resources/samples/Snake/src/index.html
+http://developer.android.com/resources/samples/Snake/tests/index.html
+http://developer.android.com/resources/samples/Snake/AndroidManifest.html
+http://developer.android.com/sdk/api_diff/6/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/changes-summary.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/logo120dpi.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/npatch120dpi.9.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/reslogo120dpi.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/smlnpatch120dpi.9.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/stylogo120dpi.html
+http://developer.android.com/sdk/api_diff/3/changes.html
+http://developer.android.com/sdk/android-1.5-highlights.html
+http://developer.android.com/sdk/api_diff/6/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.accounts.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/4/changes.html
+http://developer.android.com/sdk/android-1.6-highlights.html
+http://developer.android.com/reference/android/content/res/package-descr.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi-v6/app_notes.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi-v6/live_folder_notes.html
+http://developer.android.com/reference/android/test/mock/package-descr.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/index.html
+http://developer.android.com/resources/samples/SoftKeyboard/src/index.html
+http://developer.android.com/resources/samples/SoftKeyboard/AndroidManifest.html
+http://developer.android.com/sdk/api_diff/4/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/changes-summary.html
+http://developer.android.com/resources/samples/NotePad/tests/src/index.html
+http://developer.android.com/resources/samples/NotePad/tests/AndroidManifest.html
+http://developer.android.com/reference/java/nio/charset/package-descr.html
+http://developer.android.com/reference/javax/crypto/interfaces/package-descr.html
+http://developer.android.com/reference/org/apache/http/conn/params/package-descr.html
+http://developer.android.com/resources/samples/MultiResolution/res/index.html
+http://developer.android.com/resources/samples/MultiResolution/src/index.html
+http://developer.android.com/resources/samples/MultiResolution/AndroidManifest.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-small-long/strings.html
+http://developer.android.com/sdk/api_diff/4/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/fields_index_all.html
+http://developer.android.com/reference/android/view/package-descr.html
+http://developer.android.com/sdk/api_diff/6/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/reference/android/database/package-descr.html
+http://developer.android.com/sdk/adt_download.html
+http://developer.android.com/reference/javax/security/auth/x500/package-descr.html
+http://developer.android.com/sdk/api_diff/6/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/reference/android/net/package-descr.html
+http://developer.android.com/reference/org/apache/http/client/package-descr.html
+http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-windows-1.6_r1.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-mac_x86-1.6_r1.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-linux_x86-1.6_r1.tgz
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-windows-1.5_r3.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-mac_x86-1.5_r3.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-linux_x86-1.5_r3.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-windows-1.1_r1.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-mac_x86-1.1_r1.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-linux_x86-1.1_r1.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-windows-1.0_r2.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-mac_x86-1.0_r2.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-linux_x86-1.0_r2.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-windows-1.5_r2.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-mac_x86-1.5_r2.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-linux_x86-1.5_r2.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-windows-1.5_r1.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-mac_x86-1.5_r1.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-linux_x86-1.5_r1.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-windows-1.0_r1.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-mac_x86-1.0_r1.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-linux_x86-1.0_r1.zip
+http://developer.android.com/sdk/OLD_RELEASENOTES.html
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-windows-0.9_beta.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-mac_x86-0.9_beta.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk-linux_x86-0.9_beta.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc15_windows.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc15_mac-x86.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc15_linux-x86.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc14_windows.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc14_mac-x86.zip
+http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc14_linux-x86.zip
+http://developer.android.com/sdk/download.html?v=archives/android_sdk_windows_m3-rc37a.zip
+http://developer.android.com/sdk/download.html?v=archives/android_sdk_darwin_m3-rc37a.zip
+http://developer.android.com/sdk/download.html?v=archives/android_sdk_linux_m3-rc37a.zip
+http://developer.android.com/sdk/download.html?v=archives/android_sdk_windows_m3-rc22a.zip
+http://developer.android.com/sdk/download.html?v=archives/android_sdk_darwin_m3-rc22a.zip
+http://developer.android.com/sdk/download.html?v=archives/android_sdk_linux_m3-rc22a.zip
+http://developer.android.com/sdk/download.html?v=archives/android_sdk_windows_m3-rc20a.zip
+http://developer.android.com/sdk/download.html?v=archives/android_sdk_darwin_m3-rc20a.zip
+http://developer.android.com/sdk/download.html?v=archives/android_sdk_linux_m3-rc20a.zip
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/animated_gif.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/balloons.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/beach.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/black_box.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/black_opaque_box.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/box.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/circular_progress.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/filled_box.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/frog.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_background_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_4.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_5.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_6.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_7.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_8.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/icon48x48_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/line.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/logo160dpi.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/npatch160dpi.9.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo1.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo2.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo3.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo4.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo5.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo6.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/picture_frame.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/reslogo160dpi.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_0.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_4.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_5.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_6.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_7.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_0.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_4.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_5.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_6.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_7.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/scrollbar_vertical_thumb.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/scrollbar_vertical_track.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/shape_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/shape_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/shape_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/shape_4.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/shape_5.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/smlnpatch160dpi.9.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable/stylogo160dpi.html
+http://developer.android.com/resources/samples/JetBoy/JETBOY_content/index.html
+http://developer.android.com/resources/samples/JetBoy/res/index.html
+http://developer.android.com/resources/samples/JetBoy/src/index.html
+http://developer.android.com/resources/samples/JetBoy/AndroidManifest.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/4/changes/android.test.AndroidTestCase.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.ComponentName.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.VelocityTracker.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Typeface.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html
+http://developer.android.com/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.Dialog.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.Window.Callback.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.ContextWrapper.html
+http://developer.android.com/sdk/api_diff/4/changes/android.test.mock.MockContext.html
+http://developer.android.com/sdk/api_diff/4/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.ListView.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.TabWidget.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Bitmap.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.NinePatch.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/4/changes/android.location.Address.html
+http://developer.android.com/sdk/api_diff/4/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.PopupWindow.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html
+http://developer.android.com/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.LauncherActivity.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html
+http://developer.android.com/sdk/api_diff/6/changes/android.accounts.AbstractAccountAuthenticator.html
+http://developer.android.com/resources/samples/Home/res/index.html
+http://developer.android.com/resources/samples/Home/src/index.html
+http://developer.android.com/resources/samples/Home/AndroidManifest.html
+http://developer.android.com/sdk/api_diff/4/changes/jdiff_statistics.html
+http://developer.android.com/reference/java/security/acl/package-descr.html
+http://developer.android.com/reference/javax/crypto/spec/package-descr.html
+http://developer.android.com/resources/samples/Wiktionary/src/com/index.html
+http://developer.android.com/reference/android/telephony/cdma/package-descr.html
+http://developer.android.com/reference/android/content/package-descr.html
+http://developer.android.com/reference/android/app/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-notlong/strings.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-long/strings.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/index.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/index.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/layout/index.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/values/index.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/values-land/index.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/xml/index.html
+http://developer.android.com/reference/java/util/package-descr.html
 http://developer.android.com/reference/java/text/package-descr.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Vertices.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Typefaces.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/ShapeDrawable1.java
+http://developer.android.com/resources/samples/BluetoothChat/src/com/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/xml/advanced_preferences.html
+http://developer.android.com/resources/samples/ApiDemos/res/xml/appwidget_provider.html
+http://developer.android.com/resources/samples/ApiDemos/res/xml/default_values.html
+http://developer.android.com/resources/samples/ApiDemos/res/xml/preference_dependencies.html
+http://developer.android.com/resources/samples/ApiDemos/res/xml/preferences.html
+http://developer.android.com/resources/samples/ApiDemos/res/xml/searchable.html
+http://developer.android.com/sdk/api_diff/4/changes/classes_index_removals.html
+http://developer.android.com/sdk/api_diff/4/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/4/changes/java.util.concurrent.locks.AbstractQueuedSynchronizer.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html
+http://developer.android.com/sdk/api_diff/4/changes/android.os.Build.html
+http://developer.android.com/sdk/api_diff/4/changes/android.os.Build.VERSION.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.CheckedTextView.html
+http://developer.android.com/sdk/api_diff/4/changes/android.util.Config.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/4/changes/android.util.DisplayMetrics.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/4/changes/android.text.style.ImageSpan.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html
+http://developer.android.com/sdk/api_diff/4/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/4/changes/android.Manifest.permission_group.html
+http://developer.android.com/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.R.anim.html
+http://developer.android.com/sdk/api_diff/4/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/4/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/4/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/4/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.Surface.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/4/changes/java.util.concurrent.TimeUnit.html
+http://developer.android.com/sdk/api_diff/4/changes/android.media.ToneGenerator.html
+http://developer.android.com/sdk/api_diff/4/changes/android.util.TypedValue.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.net.wifi.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.widget.html
+http://developer.android.com/reference/org/apache/http/protocol/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-large-long/strings.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/values-land/dimens.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-large/strings.html
+http://developer.android.com/reference/java/security/interfaces/package-descr.html
+http://developer.android.com/resources/tutorials/notepad/notepad-ex1.html
+http://developer.android.com/resources/tutorials/notepad/notepad-ex2.html
+http://developer.android.com/resources/tutorials/notepad/notepad-ex3.html
+http://developer.android.com/resources/tutorials/notepad/notepad-extra-credit.html
+http://developer.android.com/reference/android/text/style/package-descr.html
+http://developer.android.com/resources/samples/BluetoothChat/res/drawable/index.html
+http://developer.android.com/resources/samples/BluetoothChat/res/drawable-hdpi/index.html
+http://developer.android.com/resources/samples/BluetoothChat/res/layout/index.html
+http://developer.android.com/resources/samples/BluetoothChat/res/menu/index.html
+http://developer.android.com/resources/samples/BluetoothChat/res/values/index.html
+http://developer.android.com/resources/tutorials/views/hello-linearlayout.html
+http://developer.android.com/resources/tutorials/views/hello-tablelayout.html
+http://developer.android.com/resources/tutorials/views/hello-relativelayout.html
+http://developer.android.com/reference/dalvik/system/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/res/values/arrays.html
+http://developer.android.com/resources/samples/ApiDemos/res/values/attrs.html
+http://developer.android.com/resources/samples/ApiDemos/res/values/colors.html
+http://developer.android.com/resources/samples/ApiDemos/res/values/ids.html
+http://developer.android.com/resources/samples/ApiDemos/res/values/strings.html
+http://developer.android.com/resources/samples/ApiDemos/res/values/styles.html
+http://developer.android.com/reference/javax/net/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/index.html
+http://developer.android.com/sdk/api_diff/6/changes/android.R.attr.html
+http://developer.android.com/reference/android/provider/package-descr.html
+http://developer.android.com/sdk/terms_body.html
+http://developer.android.com/reference/java/util/jar/package-descr.html
+http://developer.android.com/resources/samples/LunarLander/tests/src/index.html
+http://developer.android.com/resources/samples/LunarLander/tests/AndroidManifest.html
+http://developer.android.com/resources/samples/BluetoothChat/res/menu/option_menu.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/values/colors.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/values/dimens.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/values/strings.html
+http://developer.android.com/resources/tutorials/views/hello-formstuff.html
+http://developer.android.com/resources/samples/ContactManager/res/drawable-hdpi/index.html
+http://developer.android.com/resources/samples/ContactManager/res/drawable-ldpi/index.html
+http://developer.android.com/resources/samples/ContactManager/res/drawable-mdpi/index.html
+http://developer.android.com/resources/samples/ContactManager/res/layout/index.html
+http://developer.android.com/resources/samples/ContactManager/res/values/index.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/app_notes.html
+http://developer.android.com/reference/dalvik/bytecode/package-descr.html
+http://developer.android.com/resources/samples/BluetoothChat/res/layout/custom_title.html
+http://developer.android.com/resources/samples/BluetoothChat/res/layout/device_list.html
+http://developer.android.com/resources/samples/BluetoothChat/res/layout/device_name.html
+http://developer.android.com/resources/samples/BluetoothChat/res/layout/main.html
+http://developer.android.com/resources/samples/BluetoothChat/res/layout/message.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-ldpi-v6/app_notes.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-ldpi-v6/live_folder_notes.html
+http://developer.android.com/guide/tutorials/views/index.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.inputmethodservice.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.location.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.telephony.gsm.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_java.util.concurrent.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_java.util.concurrent.locks.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/category_order.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/checkable.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/disabled.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/groups.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/order.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/shortcuts.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/submenu.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/title_icon.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/title_only.html
+http://developer.android.com/resources/samples/ApiDemos/res/menu/visible.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/activity_animation.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/alarm_controller.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/alarm_service.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/alert_dialog.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/alert_dialog_text_entry.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/animation_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/animation_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/animation_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/animations_main_screen.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/appwidget_configure.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/appwidget_provider.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_4.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_5.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_6.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_4.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_6.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_7.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_nested_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_nested_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_nested_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/buttons_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/chronometer.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/contacts_filter.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/controls_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_dialog_activity.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_title.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_title_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/date_widgets_example_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/date_widgets_example_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/density_image_views.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/density_styled_image_views.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/dialog_activity.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/focus_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/focus_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/focus_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/foreground_service_controller.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/forward_target.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/forwarding.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/gallery_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/gallery_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/google_login.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/grid_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/grid_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/hello_world.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/image_button_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/image_switcher_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/image_view_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/incoming_message.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/incoming_message_info.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/incoming_message_panel.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/incoming_message_view.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/intents.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/launcher_shortcuts.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_4.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_5.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_6.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_7.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_10.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_4.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_5.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_6.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_7.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_8.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_9.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/link.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/list_12.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/list_13.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/list_7.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/list_8.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/list_item_checkbox.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/list_item_icon_text.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/list_position.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/local_sample.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/local_service_binding.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/local_service_controller.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/log_text_box_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/mapview.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/marquee.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/mediaplayer_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/mediaplayer_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/morse_code.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/notify_with_text.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/notifying_controller.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/preference_widget_mypreference.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/progressbar_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/progressbar_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/progressbar_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/progressbar_4.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/quick_contacts.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/radio_group_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/ratingbar_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/read_asset.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/receive_result.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/redirect_enter.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/redirect_getter.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/redirect_main.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/relative_layout_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/relative_layout_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/remote_service_binding.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/remote_service_controller.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/reorder_four.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/reorder_on_launch.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/reorder_three.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/reorder_two.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/resources.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/save_restore_state.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/scroll_view_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/scroll_view_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/scrollbar1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/scrollbar2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/scrollbar3.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/search_invoke.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/search_query_results.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/seekbar_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/select_dialog.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/send_result.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/service_start_arguments_controller.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/shape_drawable_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/spinner_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/status_bar_balloon.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/status_bar_notifications.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/styled_text.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/surface_view_overlay.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_10.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_11.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_12.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_3.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_4.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_5.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_6.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_7.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_8.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_9.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/tabs1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/text_switcher_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/text_to_speech.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/translucent_background.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/videoview.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/visibility_1.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/voice_recognition.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/wallpaper_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/webview_1.html
+http://developer.android.com/sdk/api_diff/5/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/changes-summary.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/layout/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/values/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/xml/index.html
+http://developer.android.com/reference/android/os/package-descr.html
+http://developer.android.com/reference/javax/xml/package-descr.html
+http://developer.android.com/resources/samples/Snake/tests/src/index.html
+http://developer.android.com/resources/samples/Snake/tests/AndroidManifest.html
+http://developer.android.com/reference/org/apache/http/client/params/package-descr.html
+http://developer.android.com/resources/samples/BluetoothChat/src/com/example/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/app_icon.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/star_logo.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/widget_bg.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/widget_bg_normal.9.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/widget_bg_pressed.9.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/widget_bg_selected.9.html
+http://developer.android.com/sdk/api_diff/6/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/fields_index_all.html
+http://developer.android.com/resources/samples/NotePad/src/com/index.html
+http://developer.android.com/resources/samples/LunarLander/src/com/example/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-small/strings.html
+http://developer.android.com/reference/java/math/package-descr.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/layout/input.html
+http://developer.android.com/resources/samples/BluetoothChat/res/drawable-hdpi/app_icon.html
+http://developer.android.com/reference/javax/crypto/package-descr.html
+http://developer.android.com/reference/android/gesture/package-descr.html
+http://developer.android.com/sdk/api_diff/6/changes/classes_index_changes.html
+http://developer.android.com/reference/org/apache/http/params/package-descr.html
+http://developer.android.com/sdk/api_diff/4/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/packages_index_changes.html
+http://developer.android.com/reference/android/telephony/gsm/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-normal/strings.html
+http://developer.android.com/reference/javax/security/auth/login/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/index.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/package-descr.html
+http://developer.android.com/resources/samples/ContactManager/res/drawable-hdpi/icon.html
+http://developer.android.com/guide/tutorials/views/hello-linearlayout.html
+http://developer.android.com/guide/tutorials/views/hello-relativelayout.html
+http://developer.android.com/guide/tutorials/views/hello-tablelayout.html
+http://developer.android.com/guide/tutorials/views/hello-datepicker.html
+http://developer.android.com/guide/tutorials/views/hello-timepicker.html
+http://developer.android.com/guide/tutorials/views/hello-formstuff.html
+http://developer.android.com/guide/tutorials/views/hello-spinner.html
 http://developer.android.com/guide/tutorials/views/hello-autocomplete.html
+http://developer.android.com/guide/tutorials/views/hello-listview.html
+http://developer.android.com/guide/tutorials/views/hello-gridview.html
 http://developer.android.com/guide/tutorials/views/hello-gallery.html
 http://developer.android.com/guide/tutorials/views/hello-tabwidget.html
 http://developer.android.com/guide/tutorials/views/hello-mapview.html
 http://developer.android.com/guide/tutorials/views/hello-webview.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.java
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/NoteEditor.java
-http://developer.android.com/guide/samples/ApiDemos/res/anim/index.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/index.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/index.html
-http://developer.android.com/guide/samples/ApiDemos/res/menu/index.html
-http://developer.android.com/guide/samples/ApiDemos/res/raw/index.html
-http://developer.android.com/guide/samples/ApiDemos/res/values/index.html
-http://developer.android.com/guide/samples/ApiDemos/res/xml/index.html
-http://developer.android.com/guide/topics/ui/notifiers/toasts.html
+http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/index.html
+http://developer.android.com/sdk/api_diff/5/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_all.html
+http://developer.android.com/resources/samples/SoftKeyboard/src/com/index.html
+http://developer.android.com/resources/samples/BluetoothChat/res/drawable/app_icon.html
+http://developer.android.com/reference/org/apache/http/impl/entity/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/index.html
+http://developer.android.com/resources/samples/Snake/res/drawable/index.html
+http://developer.android.com/resources/samples/Snake/res/layout/index.html
+http://developer.android.com/resources/samples/Snake/res/values/index.html
+http://developer.android.com/reference/android/location/package-descr.html
+http://developer.android.com/sdk/api_diff/4/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/constructors_index_changes.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_delete.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_done.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_return.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_search.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_shift.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_space.html
+http://developer.android.com/resources/samples/MultiResolution/src/com/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/xml/widget_word.html
+http://developer.android.com/resources/tutorials/views/hello-autocomplete.html
+http://developer.android.com/resources/tutorials/views/hello-gallery.html
+http://developer.android.com/resources/tutorials/views/hello-tabwidget.html
+http://developer.android.com/resources/tutorials/views/hello-mapview.html
+http://developer.android.com/resources/tutorials/views/hello-webview.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/index.html
+http://developer.android.com/resources/samples/JetBoy/src/com/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/values/strings.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/values/styles.html
+http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_changes.html
+http://developer.android.com/resources/samples/LunarLander/src/com/example/android/index.html
+http://developer.android.com/resources/samples/LunarLander/tests/src/com/index.html
+http://developer.android.com/sdk/api_diff/6/changes/packages_index_changes.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/alert_dialog_icon.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/app_sample_code.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/arrow_down_float.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/arrow_up_float.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/btn_check_off.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/btn_check_on.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/btn_circle_normal.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/btn_default_normal.9.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/button.9.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/ic_contact_picture.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/ic_popup_reminder.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/icon48x48_2.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/logo240dpi.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/npatch240dpi.9.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/progress_circular_background.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/progress_particle.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/reslogo240dpi.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/robot.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/scrollbar_state2.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/smlnpatch240dpi.9.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/star_big_on.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/stat_happy.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/stat_neutral.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/stat_sad.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/stat_sample.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/stylogo240dpi.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/xml/method.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/xml/qwerty.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/xml/symbols.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/xml/symbols_shift.html
+http://developer.android.com/resources/samples/ContactManager/res/drawable-mdpi/icon.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/app/index.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/os/index.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/view/index.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/AllTests.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/ApiDemosApplicationTests.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/ApiDemosTest.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/index.html
+http://developer.android.com/sdk/api_diff/6/changes/methods_index_changes.html
+http://developer.android.com/reference/android/text/method/package-descr.html
+http://developer.android.com/resources/samples/ContactManager/src/com/index.html
+http://developer.android.com/resources/samples/LunarLander/tests/src/com/example/index.html
+http://developer.android.com/resources/samples/ContactManager/res/layout/account_entry.html
+http://developer.android.com/resources/samples/ContactManager/res/layout/contact_adder.html
+http://developer.android.com/resources/samples/ContactManager/res/layout/contact_entry.html
+http://developer.android.com/resources/samples/ContactManager/res/layout/contact_manager.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-small-notlong/strings.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/layout/widget_message.html
+http://developer.android.com/resources/samples/WiktionarySimple/res/layout/widget_word.html
+http://developer.android.com/resources/samples/BluetoothChat/res/values/strings.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/cycle_7.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/fade.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/hold.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/hyperspace_in.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/hyperspace_out.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_animation_row_left_slide.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_animation_row_right_slide.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_animation_table.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_bottom_to_top_slide.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_grid_fade.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_grid_inverse_fade.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_random_fade.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_wave_scale.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/push_left_in.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/push_left_out.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/push_up_in.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/push_up_out.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/shake.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/slide_left.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/slide_right.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/slide_top_to_bottom.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/wave_scale.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/zoom_enter.html
+http://developer.android.com/resources/samples/ApiDemos/res/anim/zoom_exit.html
+http://developer.android.com/resources/samples/Wiktionary/src/com/example/index.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_delete.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_done.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_return.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_search.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_shift.html
+http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_space.html
+http://developer.android.com/sdk/api_diff/5/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.inputmethodservice.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.location.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.format.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_dalvik.system.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_java.util.concurrent.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_java.util.concurrent.locks.html
+http://developer.android.com/resources/samples/ContactManager/src/com/example/index.html
+http://developer.android.com/reference/javax/net/ssl/package-descr.html
+http://developer.android.com/reference/android/media/package-descr.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-mdpi/app_notes.html
+http://developer.android.com/resources/samples/NotePad/res/drawable-mdpi/live_folder_notes.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.MediaController.MediaPlayerControl.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.SimpleCursorTreeAdapter.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.VideoView.html
+http://developer.android.com/reference/org/apache/http/conn/package-descr.html
+http://developer.android.com/resources/samples/Home/res/anim/index.html
+http://developer.android.com/resources/samples/Home/res/color/index.html
+http://developer.android.com/resources/samples/Home/res/drawable/index.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/index.html
+http://developer.android.com/resources/samples/Home/res/drawable-land/index.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/index.html
+http://developer.android.com/resources/samples/Home/res/drawable-port/index.html
+http://developer.android.com/resources/samples/Home/res/layout/index.html
+http://developer.android.com/resources/samples/Home/res/layout-land/index.html
+http://developer.android.com/resources/samples/Home/res/layout-port/index.html
+http://developer.android.com/resources/samples/Home/res/values/index.html
+http://developer.android.com/resources/samples/Home/res/values-cs/index.html
+http://developer.android.com/resources/samples/Home/res/values-de-rDE/index.html
+http://developer.android.com/resources/samples/Home/res/values-es-rUS/index.html
+http://developer.android.com/resources/samples/Home/res/values-land/index.html
+http://developer.android.com/resources/samples/Home/res/values-nl-rNL/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-normal-notlong/strings.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.HapticFeedbackConstants.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.KeyEvent.Callback.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.Surface.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.SurfaceHolder.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.SurfaceView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.Window.Callback.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.BroadcastReceiver.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.ContextWrapper.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/5/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/android.location.LocationManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.PluginList.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethods.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.NotificationManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.MediaStore.Images.Thumbnails.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.PhoneNumberUtils.html
+http://developer.android.com/sdk/api_diff/5/changes/java.util.concurrent.BlockingQueue.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.Debug.MemoryInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.Plugin.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ServiceInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.format.DateUtils.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.format.Formatter.html
+http://developer.android.com/sdk/api_diff/5/changes/android.hardware.Camera.Parameters.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.PluginData.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.style.AbsoluteSizeSpan.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Organizations.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Phones.html
+http://developer.android.com/sdk/api_diff/5/changes/android.inputmethodservice.AbstractInputMethodService.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.NeighboringCellInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.UrlInterceptHandler.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.UrlInterceptRegistry.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Settings.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.InstrumentationTestCase.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.AbstractWindowedCursor.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.CursorWindow.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.ConstantState.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Dialog.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.CallbackProxy.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebChromeClient.html
+http://developer.android.com/sdk/api_diff/5/changes/android.inputmethodservice.InputMethodService.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.LauncherActivity.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.PhoneStateListener.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Service.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.HandlerThread.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.DatabaseUtils.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.mock.MockContext.html
+http://developer.android.com/sdk/api_diff/5/changes/android.opengl.GLSurfaceView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.AndroidTestRunner.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.IntentService.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.ToneGenerator.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.SettingsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/5/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.Insert.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/5/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethodsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.AudioFormat.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.RunningServiceInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.OrganizationColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.GroupMembership.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.ContactMethods.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.Extensions.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.Phones.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Photos.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Extensions.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Groups.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PeopleColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PhotosColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.TextPaint.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebViewClient.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.BatteryManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.UI.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Notification.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PresenceColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.RunningAppProcessInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PhonesColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ProviderInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.MediaPlayer.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ExtensionsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.GroupsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.PackageInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ResolveInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.InputType.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.PixelFormat.html
+http://developer.android.com/sdk/api_diff/3/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/3/changes/changes-summary.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-large-notlong/strings.html
+http://developer.android.com/reference/javax/sql/package-descr.html
+http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/index.html
+http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/index.html
 http://developer.android.com/sdk/api_diff/3/changes/packages_index_all.html
 http://developer.android.com/sdk/api_diff/3/changes/classes_index_all.html
 http://developer.android.com/sdk/api_diff/3/changes/constructors_index_all.html
 http://developer.android.com/sdk/api_diff/3/changes/methods_index_all.html
 http://developer.android.com/sdk/api_diff/3/changes/fields_index_all.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/ColorPickerDialog.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/content/StyledText.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/RoundRects.java
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.System.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.net.ConnectivityManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.MotionEvent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.id.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.Gravity.html
-http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.DialogInterface.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.TextUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.RectF.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.drawable.html
-http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.Zygote.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.string.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Build.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Browser.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.PendingIntent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.AlarmManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.location.LocationManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Environment.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaPlayer.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.Spanned.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.GridView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/CubeRenderer.java
-http://developer.android.com/guide/samples/LunarLander/src/com/example/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawables.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/DrawPoints.java
-http://developer.android.com/guide/samples/NotePad/res/drawable/index.html
-http://developer.android.com/guide/samples/NotePad/res/layout/index.html
-http://developer.android.com/guide/samples/NotePad/res/values/index.html
-http://developer.android.com/sdk/api_diff/3/changes/jdiff_statistics.html
-http://developer.android.com/reference/android/view/inputmethod/package-descr.html
-http://developer.android.com/sdk/1.0_r1/requirements.html
-http://developer.android.com/sdk/download.html?v=android-sdk-windows-1.0_r1.zip
-http://developer.android.com/sdk/download.html?v=android-sdk-mac_x86-1.0_r1.zip
-http://developer.android.com/sdk/download.html?v=android-sdk-linux_x86-1.0_r1.zip
-http://developer.android.com/reference/java/util/concurrent/atomic/package-descr.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/alarm_controller.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/alarm_service.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/alert_dialog.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/alert_dialog_text_entry.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/animation_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/animation_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/animations_main_screen.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/appwidget_configure.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/appwidget_provider.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/autocomplete_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/autocomplete_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/autocomplete_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/autocomplete_4.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/autocomplete_5.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/autocomplete_6.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/baseline_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/baseline_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/baseline_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/baseline_4.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/baseline_6.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/baseline_7.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/baseline_nested_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/baseline_nested_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/baseline_nested_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/buttons_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/chronometer.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/contacts_filter.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/controls_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/custom_dialog_activity.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/custom_title.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/custom_title_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/date_widgets_example_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/date_widgets_example_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/dialog_activity.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/focus_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/focus_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/focus_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/forward_target.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/forwarding.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/gallery_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/gallery_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/google_login.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/grid_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/grid_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/image_button_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/image_switcher_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/image_view_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/incoming_message.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/incoming_message_info.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/incoming_message_panel.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/incoming_message_view.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/intents.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/launcher_shortcuts.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/layout_animation_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/layout_animation_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/layout_animation_4.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/layout_animation_5.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/layout_animation_6.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/layout_animation_7.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/linear_layout_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/linear_layout_10.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/linear_layout_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/linear_layout_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/linear_layout_4.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/linear_layout_5.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/linear_layout_6.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/linear_layout_7.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/linear_layout_8.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/linear_layout_9.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/link.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/list_12.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/list_13.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/list_7.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/list_8.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/list_item_checkbox.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/list_item_icon_text.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/list_position.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/local_sample.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/local_service_binding.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/local_service_controller.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/log_text_box_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/mapview.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/marquee.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/mediaplayer_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/mediaplayer_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/morse_code.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/notify_with_text.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/notifying_controller.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/preference_widget_mypreference.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/progressbar_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/progressbar_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/progressbar_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/progressbar_4.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/radio_group_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/ratingbar_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/read_asset.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/receive_result.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/redirect_enter.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/redirect_getter.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/redirect_main.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/relative_layout_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/relative_layout_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/remote_service_binding.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/remote_service_controller.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/reorder_four.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/reorder_on_launch.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/reorder_three.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/reorder_two.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/resources.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/save_restore_state.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/scroll_view_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/scroll_view_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/scrollbar1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/scrollbar2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/scrollbar3.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/search_invoke.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/search_query_results.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/seekbar_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/select_dialog.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/send_result.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/service_start_arguments_controller.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/shape_drawable_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/spinner_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/status_bar_balloon.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/status_bar_notifications.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/styled_text.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_10.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_11.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_12.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_4.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_5.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_6.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_7.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_8.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/table_layout_9.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/tabs1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/text_switcher_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/translucent_background.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/videoview.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/visibility_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/voice_recognition.html
-http://developer.android.com/guide/samples/ApiDemos/res/layout/webview_1.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.java
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsListView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.ActivityManager.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.LogManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.AlertDialog.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.res.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.database.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.database.sqlite.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.location.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.net.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.net.wifi.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.opengl.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.preference.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.method.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.style.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.view.animation.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Animation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.Annotation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.DatabaseUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.AutoText.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.TextView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Binder.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Bitmap.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BulletSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.Instrumentation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Canvas.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Debug.html
-http://developer.android.com/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.Chronometer.html
-http://developer.android.com/sdk/api_diff/3/changes/java.lang.Class.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.KeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.Menu.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentProvider.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentResolver.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.Cursor.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.CursorAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.CursorWrapper.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_dalvik.system.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.Date.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StyleSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.URLSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html
-http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.DexFile.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.preference.DialogPreference.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.TouchUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.location.Location.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.IBinder.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewDebug.html
-http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.VMDebug.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewConfiguration.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Resources.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.Touch.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.TypedArray.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html
-http://developer.android.com/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.Scroller.html
-http://developer.android.com/sdk/api_diff/3/changes/android.net.NetworkInfo.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.LauncherActivity.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Looper.html
-http://developer.android.com/sdk/api_diff/3/changes/android.util.TimeUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Handler.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.Window.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ImageSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.RingtoneManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.URLUtil.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_java.lang.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_java.lang.reflect.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_java.net.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.jar.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.logging.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.Level.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ListView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.SoundPool.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MovementMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ProgressBar.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.OrientationListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Parcel.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.ProviderTestCase.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Rect.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html
-http://developer.android.com/sdk/api_diff/3/changes/android.util.SparseIntArray.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewParent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewGroup.html
-http://developer.android.com/sdk/api_diff/3/changes/java.net.Socket.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.SpanWatcher.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html
-http://developer.android.com/sdk/api_diff/3/changes/java.lang.String.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.TextWatcher.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Transformation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.java
-http://developer.android.com/reference/android/text/package-descr.html
-http://developer.android.com/guide/samples/NotePad/src/com/google/provider/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/PictureLayout.java
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/NotePad.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/CreateBitmap.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapMesh.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/GradientDrawable1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/ProxyDrawable.java
-http://developer.android.com/guide/samples/LunarLander/tests/src/com/index.html
-http://developer.android.com/guide/samples/LunarLander/src/com/example/android/index.html
-http://developer.android.com/reference/org/apache/http/conn/routing/package-descr.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/ColorMatrixSample.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Regions.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LabelView.java
-http://developer.android.com/reference/java/lang/Deprecated.html
-http://developer.android.com/reference/java/lang/annotation/Documented.html
-http://developer.android.com/reference/android/test/FlakyTest.html
-http://developer.android.com/reference/java/lang/annotation/Inherited.html
-http://developer.android.com/reference/java/lang/Override.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/Smoke.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/Suppress.html
-http://developer.android.com/reference/java/lang/SuppressWarnings.html
-http://developer.android.com/reference/dalvik/annotation/TestTarget.html
-http://developer.android.com/reference/dalvik/annotation/TestTargetClass.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Layers.java
-http://developer.android.com/guide/samples/NotePad/res/values/strings.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Arcs.java
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/NotePadProvider.java
-http://developer.android.com/guide/samples/ApiDemos/res/anim/cycle_7.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/fade.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/hyperspace_in.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/hyperspace_out.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/layout_animation_row_left_slide.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/layout_animation_row_right_slide.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/layout_animation_table.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/layout_bottom_to_top_slide.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/layout_grid_fade.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/layout_grid_inverse_fade.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/layout_random_fade.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/layout_wave_scale.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/push_left_in.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/push_left_out.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/push_up_in.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/push_up_out.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/shake.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/slide_left.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/slide_right.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/slide_top_to_bottom.html
-http://developer.android.com/guide/samples/ApiDemos/res/anim/wave_scale.html
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/TitleEditor.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawable.java
-http://developer.android.com/guide/samples/ApiDemos/res/values/arrays.html
-http://developer.android.com/guide/samples/ApiDemos/res/values/attrs.html
-http://developer.android.com/guide/samples/ApiDemos/res/values/colors.html
-http://developer.android.com/guide/samples/ApiDemos/res/values/ids.html
-http://developer.android.com/guide/samples/ApiDemos/res/values/strings.html
-http://developer.android.com/guide/samples/ApiDemos/res/values/styles.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Patterns.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/ScaleToFit.java
-http://developer.android.com/guide/samples/LunarLander/src/com/example/android/lunarlander/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.java
-http://developer.android.com/sdk/api_diff/3/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/packages_index_changes.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/PolyToPoly.java
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_changes.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/PathEffects.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Pictures.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TextAlign.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Clipping.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Cube.java
+http://developer.android.com/resources/samples/Snake/src/com/index.html
+http://developer.android.com/reference/android/appwidget/package-descr.html
+http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/index.html
+http://developer.android.com/resources/samples/Home/res/anim/fade_in.html
+http://developer.android.com/resources/samples/Home/res/anim/fade_out.html
+http://developer.android.com/resources/samples/Home/res/anim/grid_entry.html
+http://developer.android.com/resources/samples/Home/res/anim/grid_exit.html
+http://developer.android.com/resources/samples/Home/res/anim/hide_applications.html
+http://developer.android.com/resources/samples/Home/res/anim/show_applications.html
 http://developer.android.com/reference/org/w3c/dom/package-descr.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/Grid.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/LabelMaker.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixGrabber.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixStack.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixTrackingGL.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/NumericSprite.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/Projector.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextActivity.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextRenderer.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TriangleActivity.java
-http://developer.android.com/guide/samples/ApiDemos/res/menu/category_order.html
-http://developer.android.com/guide/samples/ApiDemos/res/menu/checkable.html
-http://developer.android.com/guide/samples/ApiDemos/res/menu/disabled.html
-http://developer.android.com/guide/samples/ApiDemos/res/menu/groups.html
-http://developer.android.com/guide/samples/ApiDemos/res/menu/order.html
-http://developer.android.com/guide/samples/ApiDemos/res/menu/shortcuts.html
-http://developer.android.com/guide/samples/ApiDemos/res/menu/submenu.html
-http://developer.android.com/guide/samples/ApiDemos/res/menu/title_icon.html
-http://developer.android.com/guide/samples/ApiDemos/res/menu/title_only.html
-http://developer.android.com/guide/samples/ApiDemos/res/menu/visible.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/Projector.java
-http://developer.android.com/guide/samples/LunarLander/tests/src/com/example/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixStack.java
+http://developer.android.com/reference/org/apache/http/package-descr.html
+http://developer.android.com/resources/samples/MultiResolution/src/com/example/index.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/RelativeLayout1.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/RelativeLayout2.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout1.html
@@ -3450,6 +3931,7 @@
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Focus1.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Focus2.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Focus3.html
+http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Animation3.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete6.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Buttons1.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ChronometerDemo.html
@@ -3460,6 +3942,7 @@
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionFocus.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionScroll.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionView.html
+http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation1.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation2.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation3.html
@@ -3481,428 +3964,826 @@
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Tabs2.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Tabs3.html
 http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/WebView1.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Cube.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLColor.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLFace.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLShape.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLVertex.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLWorld.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Kube.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/KubeRenderer.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Layer.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/M4.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout10.java
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/alert_dialog_icon.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/animated_gif.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/app_sample_code.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/arrow_down_float.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/arrow_up_float.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/balloons.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/beach.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/black_box.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/black_opaque_box.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/box.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/button.9.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/circular_progress.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/filled_box.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/frog.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/gallery_background_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/gallery_photo_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/gallery_photo_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/gallery_photo_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/gallery_photo_4.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/gallery_photo_5.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/gallery_photo_6.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/gallery_photo_7.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/gallery_photo_8.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/ic_popup_reminder.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/icon48x48_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/icon48x48_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/line.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/photo1.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/photo2.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/photo3.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/photo4.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/photo5.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/photo6.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/picture_frame.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/progress_circular_background.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/progress_particle.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/robot.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_0.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_4.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_5.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_6.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_7.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_thumb_0.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_thumb_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_thumb_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_thumb_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_thumb_4.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_thumb_5.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_thumb_6.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/sample_thumb_7.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/scrollbar_state2.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/scrollbar_vertical_thumb.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/scrollbar_vertical_track.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/shape_1.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/shape_2.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/shape_3.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/shape_4.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/shape_5.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/star_big_on.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/stat_happy.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/stat_neutral.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/stat_sad.html
-http://developer.android.com/guide/samples/ApiDemos/res/drawable/stat_sample.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ChronometerDemo.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/AlphaBitmap.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/LabelMaker.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List11.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/content/ResourcesSample.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Gallery2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Buttons1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Spinner1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Focus1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List9.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout12.java
-http://developer.android.com/reference/org/apache/http/cookie/package-descr.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List13.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Focus2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout4.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/WebView1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List7.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout8.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation5.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/RelativeLayout1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/BaselineNested1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Kube.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/BaselineNested3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout9.java
-http://developer.android.com/guide/samples/NotePad/src/com/example/android/notepad/NotesList.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLColor.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/GraphicsActivity.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/Compass.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ScrollBar3.java
-http://developer.android.com/reference/android/os/package-descr.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation7.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLWorld.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List14.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionScroll.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Layer.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/SeekBar1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Cube.java
-http://developer.android.com/guide/samples/LunarLander/tests/src/com/example/android/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete4.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ScrollView1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout9.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout11.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List12.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Controls1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Animation2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapDecode.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout7.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Grid1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List5.java
-http://developer.android.com/guide/samples/NotePad/src/com/google/provider/NotePad.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextActivity.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Visibility1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/HelloWorld.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/SaveRestoreState.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/PersistentState.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ReceiveResult.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/Forwarding.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RedirectEnter.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/TranslucentActivity.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/TranslucentBlurActivity.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceController.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceBinding.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteServiceController.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteServiceBinding.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArgumentsController.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/AlarmController.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/OneShotAlarm.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RepeatingAlarm.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/AlarmService.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/AlarmService_Service.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/NotifyWithText.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/SearchInvoke.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/SearchQueryResults.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/SearchSuggestionSampleProvider.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/AdvancedPreferences.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/AlertDialogSamples.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ContactsFilter.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ContactsFilterInstrumentation.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ContactsSelectInstrumentation.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/CustomDialogActivity.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/CustomTitle.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/DefaultValues.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/DialogActivity.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ForwardTarget.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageView.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/Intents.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LaunchingPreferences.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LocalSample.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LocalSampleInstrumentation.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/MenuInflateFromXml.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/MyPreference.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/NotificationDisplay.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/NotifyingController.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/NotifyingService.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/PreferenceDependencies.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/PreferencesFromCode.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/PreferencesFromXml.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RedirectGetter.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RedirectMain.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ReorderFour.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ReorderOnLaunch.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ReorderThree.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ReorderTwo.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/SendResult.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/StatusBarNotifications.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ScrollBar1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Baseline6.java
-http://developer.android.com/reference/android/app/package-descr.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ReorderOnLaunch.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation4.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List8.java
+http://developer.android.com/resources/samples/Home/res/drawable/all_applications.html
+http://developer.android.com/resources/samples/Home/res/drawable/all_applications_background.html
+http://developer.android.com/resources/samples/Home/res/drawable/all_applications_button_background.html
+http://developer.android.com/resources/samples/Home/res/drawable/favorite_background.html
+http://developer.android.com/resources/samples/Home/res/drawable/grid_selector.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/all_applications_label_background.9.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/application_background.9.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/application_background_static.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/focused_application_background_static.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/hide_all_applications.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/ic_launcher_allhide.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/ic_launcher_allshow.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/ic_launcher_home.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/pressed_application_background_static.html
+http://developer.android.com/resources/samples/Home/res/drawable-hdpi/show_all_applications.html
+http://developer.android.com/reference/android/inputmethodservice/package-descr.html
+http://developer.android.com/sdk/api_diff/3/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.location.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.net.wifi.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.preference.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.method.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_dalvik.system.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_java.lang.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.jar.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.logging.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.AllocationLimitError.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.PotentialDeadlockError.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.StaleDexCacheError.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.TemporaryDirectory.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.TouchDex.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.BitmapDrawable.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMStack.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMRuntime.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.Zygote.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMDebug.html
+http://developer.android.com/resources/samples/Home/res/values-de-rDE/strings.html
+http://developer.android.com/resources/samples/SearchableDictionary/src/com/index.html
+http://developer.android.com/reference/android/opengl/package-descr.html
+http://developer.android.com/sdk/api_diff/3/changes/jdiff_statistics.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-nodpi/logonodpi120.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-nodpi/logonodpi160.html
+http://developer.android.com/resources/samples/ApiDemos/res/drawable-nodpi/logonodpi240.html
+http://developer.android.com/resources/samples/Home/res/values-cs/strings.html
+http://developer.android.com/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_changes.html
+http://developer.android.com/reference/java/nio/charset/spi/package-descr.html
+http://developer.android.com/resources/samples/JetBoy/src/com/example/index.html
+http://developer.android.com/reference/junit/runner/package-descr.html
+http://developer.android.com/reference/android/test/suitebuilder/package-descr.html
+http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/index.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.Gravity.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.Menu.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.OrientationListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewDebug.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewParent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.Window.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html
+http://developer.android.com/resources/samples/Home/res/layout-land/home.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/RelativeLayout1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/RelativeLayout2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout4.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout5.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout6.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout7.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout8.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout9.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ScrollView1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ScrollView2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout4.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout5.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout6.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout7.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout8.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout9.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout10.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout11.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout12.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline4.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline6.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline7.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/BaselineNested1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/BaselineNested2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/BaselineNested3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/RadioGroup1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ScrollBar1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ScrollBar2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Visibility1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List4.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List5.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List6.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List8.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/CustomView1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ImageButton1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/DateWidgets1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/DateWidgets2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Gallery1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Gallery2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Spinner1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Grid1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Grid2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ImageSwitcher1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TextSwitcher1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Animation1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Animation2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Controls1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Controls2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete4.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete5.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar4.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Focus1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Focus2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Focus3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Animation3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete6.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Buttons1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ChronometerDemo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ImageView1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionFocus.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionScroll.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionView.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation4.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation5.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation6.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation7.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout10.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List10.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List11.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List12.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List13.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List9.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/RatingBar1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ScrollBar3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SeekBar1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Tabs1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Tabs2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Tabs3.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/WebView1.html
+http://developer.android.com/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html
+http://developer.android.com/sdk/api_diff/3/changes/java.lang.Class.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/index.html
+http://developer.android.com/resources/samples/NotePad/src/com/google/index.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.Annotation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BulletSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Handler.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ImageSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html
+http://developer.android.com/sdk/api_diff/3/changes/android.net.NetworkInfo.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StyleSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.URLSpan.html
+http://developer.android.com/reference/java/nio/package-descr.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.AutoText.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.SpanWatcher.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.Spanned.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.TextUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.TextWatcher.html
 http://developer.android.com/sdk/api_diff/3/changes/classes_index_additions.html
 http://developer.android.com/sdk/api_diff/3/changes/classes_index_changes.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Controls2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/Grid.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Animation1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionFocus.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation6.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/TranslucentBlurActivity.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ReorderThree.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/BaselineNested2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Baseline7.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/Forwarding.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ImageSwitcher1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteServiceBinding.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TextSwitcher1.java
-http://developer.android.com/guide/samples/NotePad/src/com/google/provider/NotePad.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout6.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List10.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/PreferencesFromXml.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ScrollBar2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/PreferenceDependencies.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/text/Link.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/text/LogTextBox.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/text/LogTextBox1.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/text/Marquee.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/MeasureText.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/HelloWorld.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Tabs1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Tabs2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/PreferencesFromCode.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RepeatingAlarm.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/MenuInflateFromXml.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/PersistentState.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Baseline2.java
-http://developer.android.com/guide/samples/LunarLander/tests/src/com/example/android/lunarlander/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/DateWidgets2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageView.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RedirectEnter.java
-http://developer.android.com/guide/samples/LunarLander/src/com/example/android/lunarlander/LunarLander.html
-http://developer.android.com/guide/samples/LunarLander/src/com/example/android/lunarlander/LunarView.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ReorderTwo.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/AdvancedPreferences.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ContactsFilterInstrumentation.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout4.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/Intents.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout7.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/KubeRenderer.java
-http://developer.android.com/guide/samples/NotePad/res/layout/note_editor.html
-http://developer.android.com/guide/samples/NotePad/res/layout/noteslist_item.html
-http://developer.android.com/guide/samples/NotePad/res/layout/title_editor.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLFace.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ImageButton1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextRenderer.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout5.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/SaveRestoreState.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLShape.java
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsListView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.AlarmManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.AlertDialog.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Binder.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Bitmap.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Browser.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Build.html
+http://developer.android.com/sdk/api_diff/3/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.Chronometer.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/3/changes/android.net.ConnectivityManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.Cursor.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.CursorAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.CursorWrapper.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.DatabaseUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Debug.html
+http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.DexFile.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.DialogInterface.html
+http://developer.android.com/sdk/api_diff/3/changes/android.preference.DialogPreference.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Environment.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.GridView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.IBinder.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.Instrumentation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.KeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.LauncherActivity.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.Level.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ListView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.location.Location.html
+http://developer.android.com/sdk/api_diff/3/changes/android.location.LocationManager.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.LogManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Looper.html
+http://developer.android.com/sdk/api_diff/3/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaPlayer.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MovementMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Parcel.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ProgressBar.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.ProviderTestCase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.id.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.string.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Rect.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.RectF.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Resources.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.RingtoneManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.Scroller.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.SoundPool.html
+http://developer.android.com/sdk/api_diff/3/changes/android.util.SparseIntArray.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.TextView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.util.TimeUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.Touch.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.TouchUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Transformation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.TypedArray.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.URLUtil.html
+http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.VMDebug.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.Zygote.html
+http://developer.android.com/resources/samples/Snake/res/layout/snake_layout.html
+http://developer.android.com/resources/samples/MultiResolution/src/com/example/android/index.html
+http://developer.android.com/reference/javax/security/auth/callback/package-descr.html
+http://developer.android.com/resources/samples/Snake/src/com/example/index.html
+http://developer.android.com/sdk/api_diff/4/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/4/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/fields_index_changes.html
+http://developer.android.com/resources/samples/Wiktionary/res/anim/index.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/index.html
+http://developer.android.com/resources/samples/Wiktionary/res/layout/index.html
+http://developer.android.com/resources/samples/Wiktionary/res/menu/index.html
+http://developer.android.com/resources/samples/Wiktionary/res/values/index.html
+http://developer.android.com/resources/samples/Wiktionary/res/xml/index.html
+http://developer.android.com/sdk/api_diff/6/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/6/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_changes.html
+http://developer.android.com/reference/org/apache/http/util/package-descr.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_changes.html
+http://developer.android.com/resources/samples/LunarLander/res/drawable/index.html
+http://developer.android.com/resources/samples/LunarLander/res/drawable-land/index.html
+http://developer.android.com/resources/samples/LunarLander/res/drawable-port/index.html
+http://developer.android.com/resources/samples/LunarLander/res/layout/index.html
+http://developer.android.com/resources/samples/LunarLander/res/values/index.html
+http://developer.android.com/resources/samples/MultiResolution/src/com/example/android/multires/index.html
+http://developer.android.com/resources/samples/Home/res/values/attrs.html
+http://developer.android.com/resources/samples/Home/res/values/strings.html
+http://developer.android.com/resources/samples/Home/res/values/styles.html
+http://developer.android.com/resources/samples/Wiktionary/res/layout/about.html
+http://developer.android.com/resources/samples/Wiktionary/res/layout/lookup.html
+http://developer.android.com/resources/samples/Wiktionary/res/layout/widget_message.html
+http://developer.android.com/resources/samples/Wiktionary/res/layout/widget_word.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/app_icon.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/ic_menu_shuffle.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/logo_overlay.9.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/lookup_bg.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/progress_spin.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/star_logo.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/widget_bg.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/widget_bg_normal.9.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/widget_bg_pressed.9.html
+http://developer.android.com/resources/samples/Wiktionary/res/drawable/widget_bg_selected.9.html
+http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/index.html
+http://developer.android.com/resources/samples/LunarLander/res/values/strings.html
+http://developer.android.com/resources/samples/Home/res/layout/all_applications_button.html
+http://developer.android.com/resources/samples/Home/res/layout/application.html
+http://developer.android.com/resources/samples/Home/res/layout/favorite.html
+http://developer.android.com/resources/samples/Home/res/layout/wallpaper.html
+http://developer.android.com/resources/samples/LunarLander/res/drawable-port/earthrise.html
+http://developer.android.com/resources/samples/Snake/res/drawable/greenstar.html
+http://developer.android.com/resources/samples/Snake/res/drawable/redstar.html
+http://developer.android.com/resources/samples/Snake/res/drawable/yellowstar.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/index.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/index.html
+http://developer.android.com/resources/samples/JetBoy/res/layout/index.html
+http://developer.android.com/resources/samples/JetBoy/res/raw/index.html
+http://developer.android.com/resources/samples/JetBoy/res/values/index.html
+http://developer.android.com/resources/samples/ContactManager/res/drawable-ldpi/icon.html
+http://developer.android.com/resources/samples/LunarLander/res/layout/lunar_layout.html
+http://developer.android.com/resources/samples/Home/res/values-es-rUS/strings.html
+http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/wiktionary/index.html
+http://developer.android.com/resources/samples/LunarLander/tests/src/com/example/android/index.html
+http://developer.android.com/resources/samples/Wiktionary/res/menu/lookup.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/view/Focus2ActivityTest.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/view/Focus2AndroidTest.html
+http://developer.android.com/reference/android/preference/package-descr.html
+http://developer.android.com/resources/samples/Snake/src/com/example/android/index.html
+http://developer.android.com/resources/samples/LunarLander/res/drawable-land/earthrise.html
+http://developer.android.com/resources/samples/Home/res/drawable-port/bg_android.html
+http://developer.android.com/resources/samples/Home/res/drawable-port/bg_android_icon.html
+http://developer.android.com/resources/samples/Home/res/drawable-port/bg_sunrise.html
+http://developer.android.com/resources/samples/Home/res/drawable-port/bg_sunrise_icon.html
+http://developer.android.com/resources/samples/Home/res/drawable-port/bg_sunset.html
+http://developer.android.com/resources/samples/Home/res/drawable-port/bg_sunset_icon.html
+http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/softkeyboard/index.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/all_applications_label_background.9.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/application_background.9.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/application_background_static.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/focused_application_background_static.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/hide_all_applications.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/ic_launcher_allhide.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/ic_launcher_allshow.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/ic_launcher_home.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/pressed_application_background_static.html
+http://developer.android.com/resources/samples/Home/res/drawable-mdpi/show_all_applications.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/ApiDemos.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/ApiDemosApplication.html
+http://developer.android.com/resources/samples/Home/res/layout-port/home.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/app/ForwardingTest.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/app/LocalServiceTest.html
+http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/index.html
+http://developer.android.com/resources/samples/Home/src/com/index.html
+http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/os/MorseCodeConverterTest.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Audio.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/VideoViewDemo.html
+http://developer.android.com/reference/java/lang/annotation/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/StyledText.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ResourcesSample.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ReadAsset.html
+http://developer.android.com/sdk/api_diff/5/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/constructors_index_changes.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ShapeDrawable1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PolyToPoly.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/DrawPoints.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PathEffects.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/SurfaceViewOverlay.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/AlphaBitmap.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawable.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawables.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Arcs.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapDecode.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapMesh.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapPixels.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Clipping.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ColorFilters.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ColorMatrixSample.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ColorPickerDialog.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Compass.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CreateBitmap.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Cube.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CubeRenderer.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/DensityActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GradientDrawable1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GraphicsActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Layers.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/MeasureText.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PathFillTypes.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Patterns.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PictureLayout.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Pictures.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ProxyDrawable.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PurgeableBitmap.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PurgeableBitmapView.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Regions.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/RoundRects.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ScaleToFit.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/SensorTest.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/StaticTriangleRenderer.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Sweep.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TextAlign.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TranslucentGLSurfaceViewActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TriangleActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TriangleRenderer.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Typefaces.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/UnicodeChart.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Vertices.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html
+http://developer.android.com/resources/samples/Wiktionary/res/anim/slide_in.html
+http://developer.android.com/resources/samples/Wiktionary/res/anim/slide_out.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_changes.html
+http://developer.android.com/resources/samples/Home/res/color/bright_text_dark_focused.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/drawable/index.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/layout/index.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/raw/index.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/values/index.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/xml/index.html
+http://developer.android.com/resources/samples/LunarLander/src/com/example/android/lunarlander/index.html
+http://developer.android.com/resources/samples/LunarLander/tests/src/com/example/android/lunarlander/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/Grid.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/LabelMaker.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixGrabber.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixStack.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixTrackingGL.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/NumericSprite.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/Projector.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextRenderer.html
+http://developer.android.com/resources/samples/ContactManager/res/values/strings.html
+http://developer.android.com/resources/samples/WiktionarySimple/src/com/example/index.html
+http://developer.android.com/sdk/api_diff/5/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/classes_index_changes.html
+http://developer.android.com/resources/samples/Home/res/drawable-land/bg_android.html
+http://developer.android.com/resources/samples/Home/res/drawable-land/bg_android_icon.html
+http://developer.android.com/resources/samples/Home/res/drawable-land/bg_sunrise.html
+http://developer.android.com/resources/samples/Home/res/drawable-land/bg_sunrise_icon.html
+http://developer.android.com/resources/samples/Home/res/drawable-land/bg_sunset.html
+http://developer.android.com/resources/samples/Home/res/drawable-land/bg_sunset_icon.html
+http://developer.android.com/reference/org/apache/http/entity/package-descr.html
+http://developer.android.com/resources/samples/ApiDemos/res/values-normal-long/strings.html
+http://developer.android.com/resources/samples/MultiResolution/src/com/example/android/multires/MultiRes.html
+http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/softkeyboard/CandidateView.html
+http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/softkeyboard/LatinKeyboard.html
+http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/softkeyboard/LatinKeyboardView.html
+http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/softkeyboard/SoftKeyboard.html
+http://developer.android.com/resources/samples/Home/src/com/example/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi-v6/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi-v6/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi-v6/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/layout/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/layout-land/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/values/index.html
+http://developer.android.com/resources/samples/JetBoy/JETBOY_content/JETBOY_Music.logic/index.html
+http://developer.android.com/sdk/api_diff/5/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/packages_index_changes.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/Link.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/LogTextBox.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/LogTextBox1.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/Marquee.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/values/strings.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi/android.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi/ic_launcher.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi/image_container.9.html
+http://developer.android.com/resources/samples/Snake/tests/src/com/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi-v6/ic_launcher.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/layout/main.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/layout/word.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi-v6/ic_launcher.html
+http://developer.android.com/resources/samples/Wiktionary/res/xml/searchable.html
+http://developer.android.com/resources/samples/Wiktionary/res/xml/widget_word.html
+http://developer.android.com/resources/samples/JetBoy/res/values/strings.html
+http://developer.android.com/resources/samples/JetBoy/res/values/styles.html
+http://developer.android.com/sdk/api_diff/3/changes/methods_index_removals.html
 http://developer.android.com/sdk/api_diff/3/changes/methods_index_additions.html
 http://developer.android.com/sdk/api_diff/3/changes/methods_index_changes.html
-http://developer.android.com/guide/samples/LunarLander/src/com/example/android/lunarlander/LunarLander.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LocalService.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/index.html
-http://developer.android.com/guide/samples/ApiDemos/tests/AndroidManifest.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArgumentsController.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/text/LogTextBox.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/SensorTest.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/M4.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar4.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/CustomDialogActivity.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteServiceController.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/SearchInvoke.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Grid2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/TranslucentActivity.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceController.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Baseline4.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List4.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LocalSample.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/AlarmService.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout8.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/UnicodeChart.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/MyPreference.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixTrackingGL.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/NotifyWithText.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/RelativeLayout2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/StatusBarNotifications.java
-http://developer.android.com/guide/samples/LunarLander/src/com/example/android/lunarlander/LunarView.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ImageView1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/NotificationDisplay.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceBinding.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/AlarmController.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TriangleRenderer.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ContactsFilter.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/RatingBar1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Gallery1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/RadioGroup1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/text/Link.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/NotifyingService.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ForwardTarget.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RedirectGetter.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/text/LogTextBox1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/OneShotAlarm.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout6.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/CustomTitle.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/text/Marquee.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ReceiveResult.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/PathFillTypes.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete5.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixGrabber.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/CustomView1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/DialogActivity.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/DateWidgets1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout2.java
-http://developer.android.com/guide/samples/NotePad/res/drawable/app_notes.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ContactsSelectInstrumentation.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/ScrollView2.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LocalSampleInstrumentation.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionView.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/LaunchingPreferences.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Tabs3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Baseline3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/NumericSprite.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/DefaultValues.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/RedirectMain.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/ReorderFour.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete6.java
-http://developer.android.com/guide/samples/LunarLander/tests/src/com/example/android/lunarlander/LunarLanderTest.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/NotifyingController.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/SearchQueryResults.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout5.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/SendResult.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLVertex.java
-http://developer.android.com/guide/samples/NotePad/tests/src/com/example/android/index.html
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Focus3.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/TableLayout10.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/SearchSuggestionSampleProvider.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List6.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/AlarmService_Service.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/index.html
-http://developer.android.com/guide/samples/ApiDemos/res/xml/advanced_preferences.html
-http://developer.android.com/guide/samples/ApiDemos/res/xml/appwidget_provider.html
-http://developer.android.com/guide/samples/ApiDemos/res/xml/default_values.html
-http://developer.android.com/guide/samples/ApiDemos/res/xml/preference_dependencies.html
-http://developer.android.com/guide/samples/ApiDemos/res/xml/preferences.html
-http://developer.android.com/guide/samples/ApiDemos/res/xml/searchable.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/TranslucentGLSurfaceViewActivity.java
-http://developer.android.com/guide/samples/LunarLander/tests/src/com/example/android/lunarlander/LunarLanderTest.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/animation/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/appwidget/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/media/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/os/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/ApiDemos.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/ApiDemosApplication.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/List1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/app/AlertDialogSamples.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/index.html
-http://developer.android.com/guide/samples/NotePad/tests/src/com/example/android/notepad/index.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/ApiDemos.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Baseline1.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/ApiDemosApplication.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Audio.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/media/VideoViewDemo.html
-http://developer.android.com/guide/samples/NotePad/tests/src/com/example/android/notepad/NotePadTest.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/os/MorseCode.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/os/MorseCodeConverter.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/os/Sensors.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleBroadcastReceiver.html
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/app/index.html
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/os/index.html
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/view/index.html
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/AllTests.html
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/ApiDemosApplicationTests.html
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/ApiDemosTest.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/animation/Rotate3dAnimation.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/animation/Transition3d.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Audio.java
-http://developer.android.com/guide/samples/NotePad/tests/src/com/example/android/notepad/NotePadTest.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/media/VideoViewDemo.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/view/Focus2ActivityTest.html
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/view/Focus2AndroidTest.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/os/Sensors.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleBroadcastReceiver.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/os/MorseCodeConverter.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/AllTests.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/app/ForwardingTest.html
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/app/LocalServiceTest.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/os/MorseCode.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/ApiDemosTest.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/ApiDemosApplicationTests.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/os/MorseCodeConverterTest.html
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/animation/Rotate3dAnimation.java
-http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/animation/Transition3d.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/view/Focus2ActivityTest.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/view/Focus2AndroidTest.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/app/ForwardingTest.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/app/LocalServiceTest.java
-http://developer.android.com/guide/samples/ApiDemos/tests/src/com/example/android/apis/os/MorseCodeConverterTest.java
+http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/wiktionary/ExtendedWikiHelper.html
+http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/wiktionary/LookupActivity.html
+http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/wiktionary/SimpleWikiHelper.html
+http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/wiktionary/WordWidget.html
+http://developer.android.com/resources/samples/Home/res/values-land/strings.html
+http://developer.android.com/resources/samples/Snake/res/values/attrs.html
+http://developer.android.com/resources/samples/Snake/res/values/strings.html
+http://developer.android.com/resources/samples/Snake/src/com/example/android/snake/index.html
+http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/BluetoothChat.html
+http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/BluetoothChatService.html
+http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/DeviceListActivity.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi/android.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi/ic_launcher.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi/image_container.9.html
+http://developer.android.com/resources/samples/NotePad/tests/src/com/index.html
+http://developer.android.com/resources/samples/Wiktionary/res/values/strings.html
+http://developer.android.com/resources/samples/Wiktionary/res/values/styles.html
+http://developer.android.com/resources/samples/Wiktionary/res/values/themes.html
+http://developer.android.com/resources/samples/JetBoy/src/com/example/android/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/MorseCode.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/MorseCodeConverter.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/Sensors.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/drawable/ic_dictionary.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/index.html
+http://developer.android.com/resources/samples/LunarLander/res/drawable/app_lunar_lander.html
+http://developer.android.com/resources/samples/LunarLander/res/drawable/lander_crashed.html
+http://developer.android.com/resources/samples/LunarLander/res/drawable/lander_firing.html
+http://developer.android.com/resources/samples/LunarLander/res/drawable/lander_plain.html
+http://developer.android.com/resources/samples/NotePad/src/com/google/provider/index.html
+http://developer.android.com/resources/samples/JetBoy/JETBOY_content/JETBOY_Music.logic/LgDoc/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/Rotate3dAnimation.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/Transition3d.html
+http://developer.android.com/resources/samples/SearchableDictionary/res/xml/searchable.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi/android.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi/ic_launcher.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi/image_container.9.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi-v6/ic_launcher.html
+http://developer.android.com/resources/samples/LunarLander/tests/src/com/example/android/lunarlander/LunarLanderTest.html
+http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/src/com/example/android/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/background.9.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/icon.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_0.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_1.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_2.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_3.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_4.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_5.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_6.html
+http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_7.html
+http://developer.android.com/resources/samples/MultiResolution/res/layout/main.html
+http://developer.android.com/resources/samples/NotePad/res/values/strings.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Cube.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLColor.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLFace.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLShape.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLVertex.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLWorld.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Kube.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/KubeRenderer.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Layer.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/M4.html
+http://developer.android.com/resources/samples/Home/res/values-nl-rNL/strings.html
+http://developer.android.com/resources/samples/Snake/src/com/example/android/snake/Snake.html
+http://developer.android.com/resources/samples/Snake/src/com/example/android/snake/SnakeView.html
+http://developer.android.com/resources/samples/Snake/src/com/example/android/snake/TileView.html
+http://developer.android.com/resources/samples/NotePad/tests/src/com/example/index.html
+http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/index.html
+http://developer.android.com/resources/samples/MultiResolution/res/values/strings.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleBroadcastReceiver.html
+http://developer.android.com/resources/samples/MultiResolution/res/layout-land/main.html
+http://developer.android.com/resources/samples/LunarLander/src/com/example/android/lunarlander/LunarLander.html
+http://developer.android.com/resources/samples/LunarLander/src/com/example/android/lunarlander/LunarView.html
+http://developer.android.com/resources/samples/Home/src/com/example/android/index.html
+http://developer.android.com/resources/samples/Snake/tests/src/com/example/index.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid01.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid02.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid03.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid04.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid05.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid06.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid07.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid08.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid09.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid10.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid11.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid12.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid_explode1.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid_explode2.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid_explode3.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid_explode4.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/background_a.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/background_b.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/icon.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/int_timer.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/intbeam_1.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/intbeam_2.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/intbeam_3.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/intbeam_4.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/laser.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_1.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_2.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_3.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_4.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_hit_1.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_hit_2.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_hit_3.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_hit_4.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/title_bg_hori.html
+http://developer.android.com/resources/samples/JetBoy/res/drawable/title_hori.html
+http://developer.android.com/resources/samples/WiktionarySimple/src/com/example/android/simplewiktionary/index.html
+http://developer.android.com/resources/samples/JetBoy/src/com/example/android/jetboy/index.html
+http://developer.android.com/resources/samples/Home/src/com/example/android/home/index.html
+http://developer.android.com/resources/samples/NotePad/tests/src/com/example/android/index.html
+http://developer.android.com/resources/samples/NotePad/src/com/google/provider/NotePad.html
+http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/Dictionary.html
+http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/DictionaryProvider.html
+http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/SearchableDictionary.html
+http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/WordActivity.html
+http://developer.android.com/resources/samples/JetBoy/res/layout/main.html
+http://developer.android.com/resources/samples/Home/src/com/example/android/home/ApplicationInfo.html
+http://developer.android.com/resources/samples/Home/src/com/example/android/home/ApplicationsStackLayout.html
+http://developer.android.com/resources/samples/Home/src/com/example/android/home/Home.html
+http://developer.android.com/resources/samples/Home/src/com/example/android/home/Wallpaper.html
+http://developer.android.com/resources/samples/ContactManager/src/com/example/android/index.html
+http://developer.android.com/resources/samples/Snake/tests/src/com/example/android/index.html
+http://developer.android.com/resources/samples/WiktionarySimple/src/com/example/android/simplewiktionary/SimpleWikiHelper.html
+http://developer.android.com/resources/samples/WiktionarySimple/src/com/example/android/simplewiktionary/WordWidget.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/HelloWorld.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SaveRestoreState.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/PersistentState.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ReceiveResult.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/Forwarding.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RedirectEnter.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/TranslucentActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/TranslucentBlurActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceController.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceBinding.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteServiceController.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteServiceBinding.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArgumentsController.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ForegroundServiceController.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AlarmController.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/OneShotAlarm.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RepeatingAlarm.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AlarmService.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AlarmService_Service.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/NotifyWithText.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SearchInvoke.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SearchQueryResults.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SearchSuggestionSampleProvider.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AdvancedPreferences.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AlertDialogSamples.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/Animation.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ContactsFilter.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ContactsFilterInstrumentation.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ContactsSelectInstrumentation.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/CustomDialogActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/CustomTitle.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DefaultValues.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DialogActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ForwardTarget.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageView.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/Intents.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LaunchingPreferences.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalSample.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalSampleInstrumentation.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MenuInflateFromXml.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MyPreference.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/NotificationDisplay.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/NotifyingController.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/NotifyingService.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/PreferenceDependencies.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/PreferencesFromCode.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/PreferencesFromXml.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/QuickContactsDemo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RedirectGetter.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RedirectMain.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ReorderFour.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ReorderOnLaunch.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ReorderThree.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ReorderTwo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SendResult.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SetWallpaperActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/StatusBarNotifications.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/TextToSpeechActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/WallpaperActivity.html
+http://developer.android.com/resources/samples/ContactManager/src/com/example/android/contactmanager/index.html
+http://developer.android.com/resources/samples/Snake/tests/src/com/example/android/snake/index.html
+http://developer.android.com/resources/samples/JetBoy/src/com/example/android/jetboy/Asteroid.html
+http://developer.android.com/resources/samples/JetBoy/src/com/example/android/jetboy/Explosion.html
+http://developer.android.com/resources/samples/JetBoy/src/com/example/android/jetboy/JetBoy.html
+http://developer.android.com/resources/samples/JetBoy/src/com/example/android/jetboy/JetBoyView.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePad.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotesList.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotesLiveFolder.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/TitleEditor.html
+http://developer.android.com/resources/samples/ContactManager/src/com/example/android/contactmanager/ContactAdder.html
+http://developer.android.com/resources/samples/ContactManager/src/com/example/android/contactmanager/ContactManager.html
+http://developer.android.com/resources/samples/NotePad/tests/src/com/example/android/notepad/index.html
+http://developer.android.com/resources/samples/Snake/tests/src/com/example/android/snake/SnakeTest.html
+http://developer.android.com/resources/samples/NotePad/tests/src/com/example/android/notepad/NotePadTest.html
\ No newline at end of file
diff --git a/graphics/java/android/renderscript/Program.java b/graphics/java/android/renderscript/Program.java
index 88b87b0..9d70cb2 100644
--- a/graphics/java/android/renderscript/Program.java
+++ b/graphics/java/android/renderscript/Program.java
@@ -46,6 +46,27 @@
         mRS.nProgramBindConstants(mID, slot, a.mID);
     }
 
+    public void bindTexture(Allocation va, int slot)
+        throws IllegalArgumentException {
+        mRS.validate();
+        if((slot < 0) || (slot >= mTextureCount)) {
+            throw new IllegalArgumentException("Slot ID out of range.");
+        }
+
+        mRS.nProgramBindTexture(mID, slot, va.mID);
+    }
+
+    public void bindSampler(Sampler vs, int slot)
+        throws IllegalArgumentException {
+        mRS.validate();
+        if((slot < 0) || (slot >= mTextureCount)) {
+            throw new IllegalArgumentException("Slot ID out of range.");
+        }
+
+        mRS.nProgramBindSampler(mID, slot, vs.mID);
+    }
+
+
     public static class BaseProgramBuilder {
         RenderScript mRS;
         Element mInputs[];
diff --git a/graphics/java/android/renderscript/ProgramFragment.java b/graphics/java/android/renderscript/ProgramFragment.java
index f150043..5e04f0c 100644
--- a/graphics/java/android/renderscript/ProgramFragment.java
+++ b/graphics/java/android/renderscript/ProgramFragment.java
@@ -26,44 +26,10 @@
  *
  **/
 public class ProgramFragment extends Program {
-    public static final int MAX_SLOT = 2;
-
-    public enum EnvMode {
-        REPLACE (0),
-        MODULATE (1),
-        DECAL (2);
-
-        int mID;
-        EnvMode(int id) {
-            mID = id;
-        }
-    }
-
-
     ProgramFragment(int id, RenderScript rs) {
         super(id, rs);
     }
 
-    public void bindTexture(Allocation va, int slot)
-        throws IllegalArgumentException {
-        mRS.validate();
-        if((slot < 0) || (slot >= MAX_SLOT)) {
-            throw new IllegalArgumentException("Slot ID out of range.");
-        }
-
-        mRS.nProgramFragmentBindTexture(mID, slot, va.mID);
-    }
-
-    public void bindSampler(Sampler vs, int slot)
-        throws IllegalArgumentException {
-        mRS.validate();
-        if((slot < 0) || (slot >= MAX_SLOT)) {
-            throw new IllegalArgumentException("Slot ID out of range.");
-        }
-
-        mRS.nProgramFragmentBindSampler(mID, slot, vs.mID);
-    }
-
     public static class ShaderBuilder extends BaseProgramBuilder {
         public ShaderBuilder(RenderScript rs) {
             super(rs);
@@ -97,101 +63,77 @@
     }
 
     public static class Builder {
+        public static final int MAX_TEXTURE = 2;
         RenderScript mRS;
-        Element mIn;
-        Element mOut;
         boolean mPointSpriteEnable;
-        String mShader;
+
+        public enum EnvMode {
+            REPLACE (1),
+            MODULATE (2),
+            DECAL (3);
+
+            int mID;
+            EnvMode(int id) {
+                mID = id;
+            }
+        }
+
+        public enum Format {
+            ALPHA (1),
+            LUMINANCE_ALPHA (2),
+            RGB (3),
+            RGBA (4);
+
+            int mID;
+            Format(int id) {
+                mID = id;
+            }
+        }
 
         private class Slot {
-            Type mType;
-            EnvMode mEnv;
-            boolean mTexEnable;
-
-            Slot() {
-                mTexEnable = false;
+            EnvMode env;
+            Format format;
+            Slot(EnvMode _env, Format _fmt) {
+                env = _env;
+                format = _fmt;
             }
         }
         Slot[] mSlots;
 
-        public Builder(RenderScript rs, Element in, Element out) {
+        public Builder(RenderScript rs) {
             mRS = rs;
-            mIn = in;
-            mOut = out;
-            mSlots = new Slot[MAX_SLOT];
+            mSlots = new Slot[MAX_TEXTURE];
             mPointSpriteEnable = false;
-            for(int ct=0; ct < MAX_SLOT; ct++) {
-                mSlots[ct] = new Slot();
-            }
         }
 
-        public void setShader(String s) {
-            mShader = s;
-        }
-
-        public void setType(int slot, Type t)
+        public void setTexture(EnvMode env, Format fmt, int slot)
             throws IllegalArgumentException {
-            if((slot < 0) || (slot >= MAX_SLOT)) {
-                throw new IllegalArgumentException("Slot ID out of range.");
+            if((slot < 0) || (slot >= MAX_TEXTURE)) {
+                throw new IllegalArgumentException("MAX_TEXTURE exceeded.");
             }
-
-            mSlots[slot].mType = t;
-        }
-
-        public void setTexEnable(boolean enable, int slot)
-            throws IllegalArgumentException {
-            if((slot < 0) || (slot >= MAX_SLOT)) {
-                throw new IllegalArgumentException("Slot ID out of range.");
-            }
-
-            mSlots[slot].mTexEnable = enable;
-        }
-
-        public void setTexEnvMode(EnvMode env, int slot)
-            throws IllegalArgumentException {
-            if((slot < 0) || (slot >= MAX_SLOT)) {
-                throw new IllegalArgumentException("Slot ID out of range.");
-            }
-
-            mSlots[slot].mEnv = env;
+            mSlots[slot] = new Slot(env, fmt);
         }
 
         public void setPointSpriteTexCoordinateReplacement(boolean enable) {
             mPointSpriteEnable = enable;
         }
 
-        static synchronized ProgramFragment internalCreate(RenderScript rs, Builder b) {
-            int inID = 0;
-            int outID = 0;
-            if (b.mIn != null) {
-                inID = b.mIn.mID;
-            }
-            if (b.mOut != null) {
-                outID = b.mOut.mID;
-            }
-            rs.nProgramFragmentBegin(inID, outID, b.mPointSpriteEnable);
-            for(int ct=0; ct < MAX_SLOT; ct++) {
-                if(b.mSlots[ct].mTexEnable) {
-                    Slot s = b.mSlots[ct];
-                    int typeID = 0;
-                    if(s.mType != null) {
-                        typeID = s.mType.mID;
-                    }
-                    rs.nProgramFragmentSetSlot(ct, true, s.mEnv.mID, typeID);
-                }
-            }
-
-            if (b.mShader != null) {
-                rs.nProgramFragmentSetShader(b.mShader);
-            }
-
-            int id = rs.nProgramFragmentCreate();
-            return new ProgramFragment(id, rs);
-        }
-
         public ProgramFragment create() {
             mRS.validate();
-            return internalCreate(mRS, this);
+            int[] tmp = new int[MAX_TEXTURE * 2 + 1];
+            if (mSlots[0] != null) {
+                tmp[0] = mSlots[0].env.mID;
+                tmp[1] = mSlots[0].format.mID;
+            }
+            if (mSlots[1] != null) {
+                tmp[2] = mSlots[1].env.mID;
+                tmp[3] = mSlots[1].format.mID;
+            }
+            tmp[4] = mPointSpriteEnable ? 1 : 0;
+            int id = mRS.nProgramFragmentCreate(tmp);
+            ProgramFragment pf = new ProgramFragment(id, mRS);
+            pf.mTextureCount = MAX_TEXTURE;
+            return pf;
         }
     }
 }
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 0e4d5b0..6574219 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -168,13 +168,10 @@
     native void nProgramRasterSetPointSize(int pr, float v);
 
     native void nProgramBindConstants(int pv, int slot, int mID);
+    native void nProgramBindTexture(int vpf, int slot, int a);
+    native void nProgramBindSampler(int vpf, int slot, int s);
 
-    native void nProgramFragmentBegin(int in, int out, boolean pointSpriteEnable);
-    native void nProgramFragmentBindTexture(int vpf, int slot, int a);
-    native void nProgramFragmentBindSampler(int vpf, int slot, int s);
-    native void nProgramFragmentSetSlot(int slot, boolean enable, int env, int vt);
-    native void nProgramFragmentSetShader(String txt);
-    native int  nProgramFragmentCreate();
+    native int  nProgramFragmentCreate(int[] params);
     native int  nProgramFragmentCreate2(String shader, int[] params);
 
     native int  nProgramVertexCreate(boolean texMat);
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 8bacefc..6ae93a7 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -1063,56 +1063,36 @@
     rsProgramBindConstants(con, (RsProgram)vpv, slot, (RsAllocation)a);
 }
 
+static void
+nProgramBindTexture(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a)
+{
+    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
+    LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a);
+    rsProgramBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a);
+}
+
+static void
+nProgramBindSampler(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a)
+{
+    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
+    LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a);
+    rsProgramBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a);
+}
+
 // ---------------------------------------------------------------------------
 
-static void
-nProgramFragmentSetShader(JNIEnv *_env, jobject _this, jstring name)
-{
-    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    const char* n = _env->GetStringUTFChars(name, NULL);
-    LOG_API("nProgramFragmentSetShader, con(%p)", con);
-    rsProgramFragmentSetShader(con, n, _env->GetStringUTFLength(name));
-    _env->ReleaseStringUTFChars(name, n);
-}
-
-static void
-nProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out, jboolean pointSpriteEnable)
-{
-    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p) PointSprite(%i)", con, (RsElement)in, (RsElement)out, pointSpriteEnable);
-    rsProgramFragmentBegin(con, (RsElement)in, (RsElement)out, pointSpriteEnable);
-}
-
-static void
-nProgramFragmentBindTexture(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a)
-{
-    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nProgramFragmentBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a);
-    rsProgramFragmentBindTexture(con, (RsProgramFragment)vpf, slot, (RsAllocation)a);
-}
-
-static void
-nProgramFragmentBindSampler(JNIEnv *_env, jobject _this, jint vpf, jint slot, jint a)
-{
-    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nProgramFragmentBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a);
-    rsProgramFragmentBindSampler(con, (RsProgramFragment)vpf, slot, (RsSampler)a);
-}
-
-static void
-nProgramFragmentSetSlot(JNIEnv *_env, jobject _this, jint slot, jboolean enable, jint env, jint vt)
-{
-    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nProgramFragmentSetType, con(%p), slot(%i), enable(%i), env(%i), vt(%p)", con, slot, enable, env, (RsType)vt);
-    rsProgramFragmentSetSlot(con, slot, enable, (RsTexEnvMode)env, (RsType)vt);
-}
-
 static jint
-nProgramFragmentCreate(JNIEnv *_env, jobject _this, jint slot, jboolean enable)
+nProgramFragmentCreate(JNIEnv *_env, jobject _this, jintArray params)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nProgramFragmentCreate, con(%p)", con);
-    return (jint)rsProgramFragmentCreate(con);
+    jint *paramPtr = _env->GetIntArrayElements(params, NULL);
+    jint paramLen = _env->GetArrayLength(params);
+
+    LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, shaderLen, paramLen);
+
+    jint ret = (jint)rsProgramFragmentCreate(con, (uint32_t *)paramPtr, paramLen);
+    _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT);
+    return ret;
 }
 
 static jint
@@ -1455,13 +1435,10 @@
 {"nProgramFragmentStoreCreate",    "()I",                                  (void*)nProgramFragmentStoreCreate },
 
 {"nProgramBindConstants",          "(III)V",                               (void*)nProgramBindConstants },
+{"nProgramBindTexture",            "(III)V",                               (void*)nProgramBindTexture },
+{"nProgramBindSampler",            "(III)V",                               (void*)nProgramBindSampler },
 
-{"nProgramFragmentBegin",          "(IIZ)V",                               (void*)nProgramFragmentBegin },
-{"nProgramFragmentBindTexture",    "(III)V",                               (void*)nProgramFragmentBindTexture },
-{"nProgramFragmentBindSampler",    "(III)V",                               (void*)nProgramFragmentBindSampler },
-{"nProgramFragmentSetSlot",        "(IZII)V",                              (void*)nProgramFragmentSetSlot },
-{"nProgramFragmentSetShader",      "(Ljava/lang/String;)V",                (void*)nProgramFragmentSetShader },
-{"nProgramFragmentCreate",         "()I",                                  (void*)nProgramFragmentCreate },
+{"nProgramFragmentCreate",         "([I)I",                                (void*)nProgramFragmentCreate },
 {"nProgramFragmentCreate2",        "(Ljava/lang/String;[I)I",              (void*)nProgramFragmentCreate2 },
 
 {"nProgramRasterCreate",           "(IIZZZ)I",                             (void*)nProgramRasterCreate },
diff --git a/libs/rs/RenderScript.h b/libs/rs/RenderScript.h
index 44ff901..d10eeda 100644
--- a/libs/rs/RenderScript.h
+++ b/libs/rs/RenderScript.h
@@ -158,6 +158,7 @@
 };
 
 enum RsTexEnvMode {
+    RS_TEX_ENV_MODE_NONE,
     RS_TEX_ENV_MODE_REPLACE,
     RS_TEX_ENV_MODE_MODULATE,
     RS_TEX_ENV_MODE_DECAL
diff --git a/libs/rs/java/Film/src/com/android/film/FilmRS.java b/libs/rs/java/Film/src/com/android/film/FilmRS.java
index 3b93c18..dccc1d2 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmRS.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmRS.java
@@ -121,13 +121,13 @@
         bs.setWrapT(Sampler.Value.WRAP);
         mSampler = bs.create();
 
-        ProgramFragment.Builder b = new ProgramFragment.Builder(mRS, null, null);
-
+        ProgramFragment.Builder b = new ProgramFragment.Builder(mRS);
         mPFBackground = b.create();
         mPFBackground.setName("PFBackground");
 
-        b.setTexEnable(true, 0);
-        b.setTexEnvMode(ProgramFragment.EnvMode.REPLACE, 0);
+        b = new ProgramFragment.Builder(mRS);
+        b.setTexture(ProgramFragment.Builder.EnvMode.REPLACE,
+                     ProgramFragment.Builder.Format.RGBA, 0);
         mPFImages = b.create();
         mPFImages.bindSampler(mSampler, 0);
         mPFImages.setName("PFImages");
diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec
index 5de76b25..df415685 100644
--- a/libs/rs/rs.spec
+++ b/libs/rs/rs.spec
@@ -372,37 +372,22 @@
 	param RsAllocation constants
 	}
 
-ProgramFragmentBegin {
-	param RsElement in
-	param RsElement out
-	param bool pointSpriteEnable
-	}
 
-ProgramFragmentSetShader {
-	param const char * text
-	param uint32_t length
-	}
-
-ProgramFragmentBindTexture {
+ProgramBindTexture {
 	param RsProgramFragment pf
 	param uint32_t slot
 	param RsAllocation a
 	}
 
-ProgramFragmentBindSampler {
+ProgramBindSampler {
 	param RsProgramFragment pf
 	param uint32_t slot
 	param RsSampler s
 	}
 
-ProgramFragmentSetSlot {
-	param uint32_t slot
-	param bool enable
-	param RsTexEnvMode env
-	param RsType t
-	}
-
 ProgramFragmentCreate {
+	param const uint32_t * params
+	param uint32_t paramLength
 	ret RsProgramFragment
 	}
 
diff --git a/libs/rs/rsProgram.cpp b/libs/rs/rsProgram.cpp
index e6d1e36..ede8c86 100644
--- a/libs/rs/rsProgram.cpp
+++ b/libs/rs/rsProgram.cpp
@@ -121,6 +121,30 @@
     mDirty = true;
 }
 
+void Program::bindTexture(uint32_t slot, Allocation *a)
+{
+    if (slot >= MAX_TEXTURE) {
+        LOGE("Attempt to bind a texture to a slot > MAX_TEXTURE");
+        return;
+    }
+
+    //LOGE("bindtex %i %p", slot, a);
+    mTextures[slot].set(a);
+    mDirty = true;
+}
+
+void Program::bindSampler(uint32_t slot, Sampler *s)
+{
+    if (slot >= MAX_TEXTURE) {
+        LOGE("Attempt to bind a Sampler to a slot > MAX_TEXTURE");
+        return;
+    }
+
+    mSamplers[slot].set(s);
+    mDirty = true;
+}
+
+
 void Program::createShader()
 {
 }
@@ -182,6 +206,17 @@
     p->bindAllocation(static_cast<Allocation *>(constants));
 }
 
+void rsi_ProgramBindTexture(Context *rsc, RsProgram vpf, uint32_t slot, RsAllocation a)
+{
+    Program *p = static_cast<Program *>(vpf);
+    p->bindTexture(slot, static_cast<Allocation *>(a));
+}
+
+void rsi_ProgramBindSampler(Context *rsc, RsProgram vpf, uint32_t slot, RsSampler s)
+{
+    Program *p = static_cast<Program *>(vpf);
+    p->bindSampler(slot, static_cast<Sampler *>(s));
+}
 
 }
 }
diff --git a/libs/rs/rsProgram.h b/libs/rs/rsProgram.h
index 003498e..25a5434 100644
--- a/libs/rs/rsProgram.h
+++ b/libs/rs/rsProgram.h
@@ -32,6 +32,7 @@
 public:
     const static uint32_t MAX_ATTRIBS = 8;
     const static uint32_t MAX_UNIFORMS = 16;
+    const static uint32_t MAX_TEXTURE = 2;
 
     Program(Context *);
     Program(Context *, const char * shaderText, uint32_t shaderLength,
@@ -41,6 +42,9 @@
     void bindAllocation(Allocation *);
     virtual void createShader();
 
+    void bindTexture(uint32_t slot, Allocation *);
+    void bindSampler(uint32_t slot, Sampler *);
+
     uint32_t getShaderID() const {return mShaderID;}
     void setShader(const char *, uint32_t len);
 
@@ -72,6 +76,15 @@
     String8 mAttribNames[MAX_ATTRIBS];
     String8 mUniformNames[MAX_UNIFORMS];
 
+    // The difference between Textures and Constants is how they are accessed
+    // Texture lookups go though a sampler which in effect converts normalized
+    // coordinates into type specific.  Multiple samples may also be taken
+    // and filtered.
+    //
+    // Constants are strictly accessed by programetic loads.
+    ObjectBaseRef<Allocation> mTextures[MAX_TEXTURE];
+    ObjectBaseRef<Sampler> mSamplers[MAX_TEXTURE];
+
     bool loadShader(Context *, uint32_t type);
 
 public:
diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp
index c353301..05672e5c 100644
--- a/libs/rs/rsProgramFragment.cpp
+++ b/libs/rs/rsProgramFragment.cpp
@@ -26,18 +26,28 @@
 using namespace android::renderscript;
 
 
-ProgramFragment::ProgramFragment(Context *rsc, Element *in, Element *out, bool pointSpriteEnable) :
+ProgramFragment::ProgramFragment(Context *rsc, const uint32_t * params,
+                                 uint32_t paramLength) :
     Program(rsc)
 {
     mAllocFile = __FILE__;
     mAllocLine = __LINE__;
-    for (uint32_t ct=0; ct < MAX_TEXTURE; ct++) {
-        mEnvModes[ct] = RS_TEX_ENV_MODE_REPLACE;
-        mTextureDimensions[ct] = 2;
-    }
+    rsAssert(paramLength = 5);
+
+    mEnvModes[0] = (RsTexEnvMode)params[0];
+    mTextureFormats[0] = params[1];
+    mEnvModes[1] = (RsTexEnvMode)params[2];
+    mTextureFormats[1] = params[3];
+    mPointSpriteEnable = params[4] != 0;
+
     mTextureEnableMask = 0;
-    mPointSpriteEnable = pointSpriteEnable;
-    mEnvModes[1] = RS_TEX_ENV_MODE_DECAL;
+    if (mEnvModes[0]) {
+        mTextureEnableMask |= 1;
+    }
+    if (mEnvModes[1]) {
+        mTextureEnableMask |= 2;
+    }
+    init(rsc);
 }
 
 ProgramFragment::ProgramFragment(Context *rsc, const char * shaderText,
@@ -84,6 +94,9 @@
         glBindTexture(GL_TEXTURE_2D, mTextures[ct]->getTextureID());
 
         switch(mEnvModes[ct]) {
+        case RS_TEX_ENV_MODE_NONE:
+            rsAssert(0);
+            break;
         case RS_TEX_ENV_MODE_REPLACE:
             glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
             break;
@@ -211,6 +224,9 @@
         while (mask) {
             if (mask & 1) {
                 switch(mEnvModes[texNum]) {
+                case RS_TEX_ENV_MODE_NONE:
+                    rsAssert(0);
+                    break;
                 case RS_TEX_ENV_MODE_REPLACE:
                     mShader.append("  col = texture2D(uni_Tex0, tex0);\n");
                     break;
@@ -235,69 +251,6 @@
     }
 }
 
-void ProgramFragment::bindTexture(uint32_t slot, Allocation *a)
-{
-    if (slot >= MAX_TEXTURE) {
-        LOGE("Attempt to bind a texture to a slot > MAX_TEXTURE");
-        return;
-    }
-
-    //LOGE("bindtex %i %p", slot, a);
-    mTextures[slot].set(a);
-    mDirty = true;
-}
-
-void ProgramFragment::bindSampler(uint32_t slot, Sampler *s)
-{
-    if (slot >= MAX_TEXTURE) {
-        LOGE("Attempt to bind a Sampler to a slot > MAX_TEXTURE");
-        return;
-    }
-
-    mSamplers[slot].set(s);
-    mDirty = true;
-}
-
-void ProgramFragment::setType(uint32_t slot, const Element *e, uint32_t dim)
-{
-    if (slot >= MAX_TEXTURE) {
-        LOGE("Attempt to setType to a slot > MAX_TEXTURE");
-        return;
-    }
-
-    if (dim >= 4) {
-        LOGE("Attempt to setType to a dimension > 3");
-        return;
-    }
-
-    mTextureFormats[slot].set(e);
-    mTextureDimensions[slot] = dim;
-}
-
-void ProgramFragment::setEnvMode(uint32_t slot, RsTexEnvMode env)
-{
-    if (slot >= MAX_TEXTURE) {
-        LOGE("Attempt to setEnvMode to a slot > MAX_TEXTURE");
-        return;
-    }
-
-    mEnvModes[slot] = env;
-}
-
-void ProgramFragment::setTexEnable(uint32_t slot, bool enable)
-{
-    if (slot >= MAX_TEXTURE) {
-        LOGE("Attempt to setEnvMode to a slot > MAX_TEXTURE");
-        return;
-    }
-
-    uint32_t bit = 1 << slot;
-    mTextureEnableMask &= ~bit;
-    if (enable) {
-        mTextureEnableMask |= bit;
-    }
-}
-
 void ProgramFragment::init(Context *rsc)
 {
     mUniformCount = 2;
@@ -320,7 +273,12 @@
 
 void ProgramFragmentState::init(Context *rsc, int32_t w, int32_t h)
 {
-    ProgramFragment *pf = new ProgramFragment(rsc, NULL, NULL, false);
+    uint32_t tmp[5] = {
+        RS_TEX_ENV_MODE_NONE, 0,
+        RS_TEX_ENV_MODE_NONE, 0,
+        0
+    };
+    ProgramFragment *pf = new ProgramFragment(rsc, tmp, 5);
     mDefault.set(pf);
     pf->init(rsc);
 }
@@ -335,52 +293,12 @@
 namespace android {
 namespace renderscript {
 
-void rsi_ProgramFragmentBegin(Context * rsc, RsElement in, RsElement out, bool pointSpriteEnable)
+RsProgramFragment rsi_ProgramFragmentCreate(Context *rsc,
+                                            const uint32_t * params,
+                                            uint32_t paramLength)
 {
-    delete rsc->mStateFragment.mPF;
-    rsc->mStateFragment.mPF = new ProgramFragment(rsc, (Element *)in, (Element *)out, pointSpriteEnable);
-}
-
-void rsi_ProgramFragmentBindTexture(Context *rsc, RsProgramFragment vpf, uint32_t slot, RsAllocation a)
-{
-    ProgramFragment *pf = static_cast<ProgramFragment *>(vpf);
-    pf->bindTexture(slot, static_cast<Allocation *>(a));
-}
-
-void rsi_ProgramFragmentBindSampler(Context *rsc, RsProgramFragment vpf, uint32_t slot, RsSampler s)
-{
-    ProgramFragment *pf = static_cast<ProgramFragment *>(vpf);
-    pf->bindSampler(slot, static_cast<Sampler *>(s));
-}
-
-void rsi_ProgramFragmentSetSlot(Context *rsc, uint32_t slot, bool enable, RsTexEnvMode env, RsType vt)
-{
-    const Type *t = static_cast<const Type *>(vt);
-    if (t) {
-        uint32_t dim = 1;
-        if (t->getDimY()) {
-            dim ++;
-            if (t->getDimZ()) {
-                dim ++;
-            }
-        }
-        rsc->mStateFragment.mPF->setType(slot, t->getElement(), dim);
-    }
-    rsc->mStateFragment.mPF->setEnvMode(slot, env);
-    rsc->mStateFragment.mPF->setTexEnable(slot, enable);
-}
-
-void rsi_ProgramFragmentSetShader(Context *rsc, const char *txt, uint32_t len)
-{
-    rsc->mStateFragment.mPF->setShader(txt, len);
-}
-
-RsProgramFragment rsi_ProgramFragmentCreate(Context *rsc)
-{
-    ProgramFragment *pf = rsc->mStateFragment.mPF;
+    ProgramFragment *pf = new ProgramFragment(rsc, params, paramLength);
     pf->incUserRef();
-    pf->init(rsc);
-    rsc->mStateFragment.mPF = 0;
     return pf;
 }
 
diff --git a/libs/rs/rsProgramFragment.h b/libs/rs/rsProgramFragment.h
index 14b4ec3..9fa565d 100644
--- a/libs/rs/rsProgramFragment.h
+++ b/libs/rs/rsProgramFragment.h
@@ -28,11 +28,7 @@
 class ProgramFragment : public Program
 {
 public:
-    const static uint32_t MAX_TEXTURE = 2;
-
-
-
-    ProgramFragment(Context *, Element *in, Element *out, bool pointSpriteEnable);
+    ProgramFragment(Context *, const uint32_t * params, uint32_t paramLength);
     ProgramFragment(Context *rsc, const char * shaderText,
                              uint32_t shaderLength, const uint32_t * params,
                              uint32_t paramLength);
@@ -41,33 +37,14 @@
     virtual void setupGL(const Context *, ProgramFragmentState *);
     virtual void setupGL2(const Context *, ProgramFragmentState *, ShaderCache *sc);
 
-
-    void bindTexture(uint32_t slot, Allocation *);
-    void bindSampler(uint32_t slot, Sampler *);
-    void setType(uint32_t slot, const Element *, uint32_t dim);
-
-    void setEnvMode(uint32_t slot, RsTexEnvMode);
-    void setTexEnable(uint32_t slot, bool);
-
     virtual void createShader();
     virtual void loadShader(Context *rsc);
     virtual void init(Context *rsc);
 
-
 protected:
-    // The difference between Textures and Constants is how they are accessed
-    // Texture lookups go though a sampler which in effect converts normalized
-    // coordinates into type specific.  Multiple samples may also be taken
-    // and filtered.
-    //
-    // Constants are strictly accessed by programetic loads.
-    ObjectBaseRef<Allocation> mTextures[MAX_TEXTURE];
-    ObjectBaseRef<Sampler> mSamplers[MAX_TEXTURE];
-    ObjectBaseRef<const Element> mTextureFormats[MAX_TEXTURE];
-    uint32_t mTextureDimensions[MAX_TEXTURE];
-
-
     // Hacks to create a program for now
+    uint32_t mTextureFormats[MAX_TEXTURE];
+    uint32_t mTextureDimensions[MAX_TEXTURE];
     RsTexEnvMode mEnvModes[MAX_TEXTURE];
     uint32_t mTextureEnableMask;
     bool mPointSpriteEnable;
diff --git a/libs/rs/rsScriptC_Lib.cpp b/libs/rs/rsScriptC_Lib.cpp
index ade136c..e9f47d6 100644
--- a/libs/rs/rsScriptC_Lib.cpp
+++ b/libs/rs/rsScriptC_Lib.cpp
@@ -619,20 +619,20 @@
 static void SC_bindTexture(RsProgramFragment vpf, uint32_t slot, RsAllocation va)
 {
     GET_TLS();
-    rsi_ProgramFragmentBindTexture(rsc,
-                                   static_cast<ProgramFragment *>(vpf),
-                                   slot,
-                                   static_cast<Allocation *>(va));
+    rsi_ProgramBindTexture(rsc,
+                           static_cast<ProgramFragment *>(vpf),
+                           slot,
+                           static_cast<Allocation *>(va));
 
 }
 
 static void SC_bindSampler(RsProgramFragment vpf, uint32_t slot, RsSampler vs)
 {
     GET_TLS();
-    rsi_ProgramFragmentBindSampler(rsc,
-                                   static_cast<ProgramFragment *>(vpf),
-                                   slot,
-                                   static_cast<Sampler *>(vs));
+    rsi_ProgramBindSampler(rsc,
+                           static_cast<ProgramFragment *>(vpf),
+                           slot,
+                           static_cast<Sampler *>(vs));
 
 }
 
@@ -846,9 +846,7 @@
     rsc->mStateVertex.color[1] = g;
     rsc->mStateVertex.color[2] = b;
     rsc->mStateVertex.color[3] = a;
-    if (rsc->checkVersion2_0()) {
-        glVertexAttrib4f(1, r, g, b, a);
-    } else {
+    if (!rsc->checkVersion2_0()) {
         glColor4f(r, g, b, a);
     }
 }
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index fb75aef..f7df69c 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -59,6 +59,7 @@
         libstagefright_amrnbenc \
         libstagefright_amrwbdec \
         libstagefright_avcdec \
+        libstagefright_m4vh263dec \
         libstagefright_mp3dec
 
 LOCAL_SHARED_LIBRARIES += \
diff --git a/media/libstagefright/MP3Extractor.cpp b/media/libstagefright/MP3Extractor.cpp
index 39d4c0b..14e6177 100644
--- a/media/libstagefright/MP3Extractor.cpp
+++ b/media/libstagefright/MP3Extractor.cpp
@@ -173,6 +173,133 @@
     return true;
 }
 
+static bool parse_xing_header(
+        const sp<DataSource> &source, off_t first_frame_pos,
+        int32_t *frame_number = NULL, int32_t *byte_number = NULL,
+        char *table_of_contents = NULL, int32_t *quality_indicator = NULL,
+        int64_t *duration = NULL) {
+
+    if (frame_number) {
+        *frame_number = 0;
+    }
+    if (byte_number) {
+        *byte_number = 0;
+    }
+    if (table_of_contents) {
+        table_of_contents[0] = 0;
+    }
+    if (quality_indicator) {
+        *quality_indicator = 0;
+    }
+    if (duration) {
+        *duration = 0;
+    }
+
+    uint8_t buffer[4];
+    int offset = first_frame_pos;
+    if (source->readAt(offset, &buffer, 4) < 4) { // get header
+        return false;
+    }
+    offset += 4;
+
+    uint8_t id, layer, sr_index, mode;
+    layer = (buffer[1] >> 1) & 3;
+    id = (buffer[1] >> 3) & 3;
+    sr_index = (buffer[2] >> 2) & 3;
+    mode = (buffer[3] >> 6) & 3;
+    if (layer == 0) {
+        return false;
+    }
+    if (id == 1) {
+        return false;
+    }
+    if (sr_index == 3) {
+        return false;
+    }
+    // determine offset of XING header
+    if(id&1) { // mpeg1
+        if (mode != 3) offset += 32;
+        else offset += 17;
+    } else { // mpeg2
+        if (mode != 3) offset += 17;
+        else offset += 9;
+    }
+
+    if (source->readAt(offset, &buffer, 4) < 4) { // XING header ID
+        return false;
+    }
+    offset += 4;
+    // Check XING ID
+    if ((buffer[0] != 'X') || (buffer[1] != 'i')
+                || (buffer[2] != 'n') || (buffer[3] != 'g')) {
+        if ((buffer[0] != 'I') || (buffer[1] != 'n')
+                    || (buffer[2] != 'f') || (buffer[3] != 'o')) {
+            return false;
+        }
+    }
+
+    if (source->readAt(offset, &buffer, 4) < 4) { // flags
+        return false;
+    }
+    offset += 4;
+    uint32_t flags = U32_AT(buffer);
+
+    if (flags & 0x0001) {  // Frames field is present
+        if (source->readAt(offset, buffer, 4) < 4) {
+             return false;
+        }
+        if (frame_number) {
+           *frame_number = U32_AT(buffer);
+        }
+        int32_t frame = U32_AT(buffer);
+        // Samples per Frame: 1. index = MPEG Version ID, 2. index = Layer
+        const int samplesPerFrames[2][3] =
+        {
+            { 384, 1152, 576  }, // MPEG 2, 2.5: layer1, layer2, layer3
+            { 384, 1152, 1152 }, // MPEG 1: layer1, layer2, layer3
+        };
+        // sampling rates in hertz: 1. index = MPEG Version ID, 2. index = sampling rate index
+        const int samplingRates[4][3] =
+        {
+            { 11025, 12000, 8000,  },    // MPEG 2.5
+            { 0,     0,     0,     },    // reserved
+            { 22050, 24000, 16000, },    // MPEG 2
+            { 44100, 48000, 32000, }     // MPEG 1
+        };
+        if (duration) {
+            *duration = (int64_t)frame * samplesPerFrames[id&1][3-layer] * 1000000LL
+                / samplingRates[id][sr_index];
+        }
+        offset += 4;
+    }
+    if (flags & 0x0002) {  // Bytes field is present
+        if (byte_number) {
+            if (source->readAt(offset, buffer, 4) < 4) {
+                return false;
+            }
+            *byte_number = U32_AT(buffer);
+        }
+        offset += 4;
+    }
+    if (flags & 0x0004) {  // TOC field is present
+       if (table_of_contents) {
+            if (source->readAt(offset + 1, table_of_contents, 99) < 99) {
+                return false;
+            }
+        }
+        offset += 100;
+    }
+    if (flags & 0x0008) {  // Quality indicator field is present
+        if (quality_indicator) {
+            if (source->readAt(offset, buffer, 4) < 4) {
+                return false;
+            }
+            *quality_indicator = U32_AT(buffer);
+        }
+    }
+    return true;
+}
+
 static bool Resync(
         const sp<DataSource> &source, uint32_t match_header,
         off_t *inout_pos, uint32_t *out_header) {
@@ -314,7 +441,8 @@
 public:
     MP3Source(
             const sp<MetaData> &meta, const sp<DataSource> &source,
-            off_t first_frame_pos, uint32_t fixed_header);
+            off_t first_frame_pos, uint32_t fixed_header,
+            int32_t byte_number, const char *table_of_contents);
 
     virtual status_t start(MetaData *params = NULL);
     virtual status_t stop();
@@ -335,7 +463,9 @@
     off_t mCurrentPos;
     int64_t mCurrentTimeUs;
     bool mStarted;
-
+    int32_t mByteNumber; // total number of bytes in this MP3
+    // TOC entries in XING header. Skip the first one since it's always 0.
+    char mTableOfContents[99];
     MediaBufferGroup *mGroup;
 
     MP3Source(const MP3Source &);
@@ -345,7 +475,8 @@
 MP3Extractor::MP3Extractor(const sp<DataSource> &source)
     : mDataSource(source),
       mFirstFramePos(-1),
-      mFixedHeader(0) {
+      mFixedHeader(0),
+      mByteNumber(0) {
     off_t pos = 0;
     uint32_t header;
     bool success = Resync(mDataSource, 0, &pos, &header);
@@ -369,11 +500,19 @@
         mMeta->setInt32(kKeyBitRate, bitrate * 1000);
         mMeta->setInt32(kKeyChannelCount, num_channels);
 
-        off_t fileSize;
-        if (mDataSource->getSize(&fileSize) == OK) {
-            mMeta->setInt64(
-                    kKeyDuration,
-                    8000LL * (fileSize - mFirstFramePos) / bitrate);
+        int64_t duration;
+        parse_xing_header(
+                mDataSource, mFirstFramePos, NULL, &mByteNumber,
+                mTableOfContents, NULL, &duration);
+        if (duration > 0) {
+            mMeta->setInt64(kKeyDuration, duration);
+        } else {
+            off_t fileSize;
+            if (mDataSource->getSize(&fileSize) == OK) {
+                mMeta->setInt64(
+                        kKeyDuration,
+                        8000LL * (fileSize - mFirstFramePos) / bitrate);
+            }
         }
     }
 }
@@ -391,7 +530,8 @@
     }
 
     return new MP3Source(
-            mMeta, mDataSource, mFirstFramePos, mFixedHeader);
+            mMeta, mDataSource, mFirstFramePos, mFixedHeader,
+            mByteNumber, mTableOfContents);
 }
 
 sp<MetaData> MP3Extractor::getTrackMetaData(size_t index, uint32_t flags) {
@@ -406,7 +546,8 @@
 
 MP3Source::MP3Source(
         const sp<MetaData> &meta, const sp<DataSource> &source,
-        off_t first_frame_pos, uint32_t fixed_header)
+        off_t first_frame_pos, uint32_t fixed_header,
+        int32_t byte_number, const char *table_of_contents)
     : mMeta(meta),
       mDataSource(source),
       mFirstFramePos(first_frame_pos),
@@ -414,7 +555,9 @@
       mCurrentPos(0),
       mCurrentTimeUs(0),
       mStarted(false),
+      mByteNumber(byte_number),
       mGroup(NULL) {
+    memcpy (mTableOfContents, table_of_contents, strlen(table_of_contents));
 }
 
 MP3Source::~MP3Source() {
@@ -469,7 +612,35 @@
         }
 
         mCurrentTimeUs = seekTimeUs;
-        mCurrentPos = mFirstFramePos + seekTimeUs * bitrate / 8000000;
+        // interpolate in TOC to get file seek point in bytes
+        int64_t duration;
+        if ((mByteNumber > 0) && (mTableOfContents[0] > 0)
+            && mMeta->findInt64(kKeyDuration, &duration)) {
+            float percent = (float)seekTimeUs * 100 / duration;
+            float fx;
+            if( percent <= 0.0f ) {
+                fx = 0.0f;
+            } else if( percent >= 100.0f ) {
+                fx = 256.0f;
+            } else {
+                int a = (int)percent;
+                float fa, fb;
+                if ( a == 0 ) {
+                    fa = 0.0f;
+                } else {
+                    fa = (float)mTableOfContents[a-1];
+                }
+                if ( a < 99 ) {
+                    fb = (float)mTableOfContents[a];
+                } else {
+                    fb = 256.0f;
+                }
+                fx = fa + (fb-fa)*(percent-a);
+            }
+            mCurrentPos = mFirstFramePos + (int)((1.0f/256.0f)*fx*mByteNumber);
+        } else {
+            mCurrentPos = mFirstFramePos + seekTimeUs * bitrate / 8000000;
+        }
     }
 
     MediaBuffer *buffer;
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 47bbda3..d8bd25d 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -24,6 +24,7 @@
 #include "include/AMRNBEncoder.h"
 #include "include/AMRWBDecoder.h"
 #include "include/AVCDecoder.h"
+#include "include/M4vH263Decoder.h"
 #include "include/MP3Decoder.h"
 #endif
 
@@ -70,6 +71,7 @@
 FACTORY_CREATE(AMRWBDecoder)
 FACTORY_CREATE(AACDecoder)
 FACTORY_CREATE(AVCDecoder)
+FACTORY_CREATE(M4vH263Decoder)
 FACTORY_CREATE(AMRNBEncoder)
 
 static sp<MediaSource> InstantiateSoftwareCodec(
@@ -85,6 +87,7 @@
         FACTORY_REF(AMRWBDecoder)
         FACTORY_REF(AACDecoder)
         FACTORY_REF(AVCDecoder)
+        FACTORY_REF(M4vH263Decoder)
         FACTORY_REF(AMRNBEncoder)
     };
     for (size_t i = 0;
@@ -120,9 +123,11 @@
     { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.PV.aacdec" },
     { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.video.decoder.mpeg4" },
     { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.Video.Decoder" },
+    OPTIONAL(MEDIA_MIMETYPE_VIDEO_MPEG4, "M4vH263Decoder")
     { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.PV.mpeg4dec" },
     { MEDIA_MIMETYPE_VIDEO_H263, "OMX.qcom.video.decoder.h263" },
     { MEDIA_MIMETYPE_VIDEO_H263, "OMX.TI.Video.Decoder" },
+    OPTIONAL(MEDIA_MIMETYPE_VIDEO_H263, "M4vH263Decoder")
     { MEDIA_MIMETYPE_VIDEO_H263, "OMX.PV.h263dec" },
     { MEDIA_MIMETYPE_VIDEO_AVC, "OMX.qcom.video.decoder.avc" },
     { MEDIA_MIMETYPE_VIDEO_AVC, "OMX.TI.Video.Decoder" },
diff --git a/media/libstagefright/codecs/m4v_h263/Android.mk b/media/libstagefright/codecs/m4v_h263/Android.mk
new file mode 100644
index 0000000..2e431205
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/Android.mk
@@ -0,0 +1,4 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/media/libstagefright/codecs/m4v_h263/dec/Android.mk b/media/libstagefright/codecs/m4v_h263/dec/Android.mk
new file mode 100644
index 0000000..403da58
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/Android.mk
@@ -0,0 +1,50 @@
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ 	M4vH263Decoder.cpp \
+ 	src/adaptive_smooth_no_mmx.cpp \
+ 	src/bitstream.cpp \
+ 	src/block_idct.cpp \
+ 	src/cal_dc_scaler.cpp \
+ 	src/chvr_filter.cpp \
+ 	src/chv_filter.cpp \
+ 	src/combined_decode.cpp \
+ 	src/conceal.cpp \
+ 	src/datapart_decode.cpp \
+ 	src/dcac_prediction.cpp \
+ 	src/dec_pred_intra_dc.cpp \
+ 	src/deringing_chroma.cpp \
+ 	src/deringing_luma.cpp \
+ 	src/find_min_max.cpp \
+ 	src/get_pred_adv_b_add.cpp \
+ 	src/get_pred_outside.cpp \
+ 	src/idct.cpp \
+ 	src/idct_vca.cpp \
+ 	src/mb_motion_comp.cpp \
+ 	src/mb_utils.cpp \
+ 	src/packet_util.cpp \
+ 	src/post_filter.cpp \
+ 	src/post_proc_semaphore.cpp \
+ 	src/pp_semaphore_chroma_inter.cpp \
+ 	src/pp_semaphore_luma.cpp \
+ 	src/pvdec_api.cpp \
+ 	src/scaling_tab.cpp \
+ 	src/vlc_decode.cpp \
+ 	src/vlc_dequant.cpp \
+ 	src/vlc_tab.cpp \
+ 	src/vop.cpp \
+ 	src/zigzag_tab.cpp
+
+
+LOCAL_MODULE := libstagefright_m4vh263dec
+
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH)/src \
+	$(LOCAL_PATH)/include \
+	$(TOP)/frameworks/base/media/libstagefright/include \
+	$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include
+
+LOCAL_CFLAGS := -DOSCL_EXPORT_REF= -DOSCL_IMPORT_REF=
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/media/libstagefright/codecs/m4v_h263/dec/M4vH263Decoder.cpp b/media/libstagefright/codecs/m4v_h263/dec/M4vH263Decoder.cpp
new file mode 100644
index 0000000..c3ef0d2
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/M4vH263Decoder.cpp
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+//#define LOG_NDEBUG 0
+#define LOG_TAG "M4vH263Decoder"
+#include <utils/Log.h>
+#include <stdlib.h> // for free
+#include "ESDS.h"
+#include "M4vH263Decoder.h"
+
+#include "mp4dec_api.h"
+
+#include <OMX_Component.h>
+#include <media/stagefright/MediaBufferGroup.h>
+#include <media/stagefright/MediaDebug.h>
+#include <media/stagefright/MediaDefs.h>
+#include <media/stagefright/MediaErrors.h>
+#include <media/stagefright/MetaData.h>
+#include <media/stagefright/Utils.h>
+
+namespace android {
+
+M4vH263Decoder::M4vH263Decoder(const sp<MediaSource> &source)
+    : mSource(source),
+      mStarted(false),
+      mHandle(new tagvideoDecControls),
+      mInputBuffer(NULL),
+      mNumSamplesOutput(0) {
+
+    LOGV("M4vH263Decoder");
+    memset(mHandle, 0, sizeof(tagvideoDecControls));
+    mFormat = new MetaData;
+    mFormat->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_RAW);
+    CHECK(mSource->getFormat()->findInt32(kKeyWidth, &mWidth));
+    CHECK(mSource->getFormat()->findInt32(kKeyHeight, &mHeight));
+    mFormat->setInt32(kKeyWidth, mWidth);
+    mFormat->setInt32(kKeyHeight, mHeight);
+    mFormat->setInt32(kKeyColorFormat, OMX_COLOR_FormatYUV420Planar);
+    mFormat->setCString(kKeyDecoderComponent, "M4vH263Decoder");
+}
+
+M4vH263Decoder::~M4vH263Decoder() {
+    if (mStarted) {
+        stop();
+    }
+
+    delete mHandle;
+    mHandle = NULL;
+}
+
+status_t M4vH263Decoder::start(MetaData *) {
+    CHECK(!mStarted);
+
+    const char *mime = NULL;
+    CHECK(mSource->getFormat()->findCString(kKeyMIMEType, &mime));
+
+    MP4DecodingMode mode;
+    if (!strcasecmp(MEDIA_MIMETYPE_VIDEO_MPEG4, mime)) {
+        mode = MPEG4_MODE;
+    } else {
+        CHECK(!strcasecmp(MEDIA_MIMETYPE_VIDEO_H263, mime));
+        mode = H263_MODE;
+    }
+
+    uint32_t type;
+    const void *data = NULL;
+    size_t size = 0;
+    uint8_t *vol_data[1] = {0};
+    int32_t vol_size = 0;
+    if (mSource->getFormat()->findData(kKeyESDS, &type, &data, &size)) {
+        ESDS esds((const uint8_t *)data, size);
+        CHECK_EQ(esds.InitCheck(), OK);
+
+        const void *codec_specific_data;
+        size_t codec_specific_data_size;
+        esds.getCodecSpecificInfo(&codec_specific_data, &codec_specific_data_size);
+
+        vol_data[0] = (uint8_t *) malloc(codec_specific_data_size);
+        memcpy(vol_data[0], codec_specific_data, codec_specific_data_size);
+        vol_size = codec_specific_data_size;
+    } else {
+        vol_data[0] = NULL;
+        vol_size = 0;
+
+    }
+    CHECK_EQ(PV_TRUE, PVInitVideoDecoder(
+            mHandle, vol_data, &vol_size, 1, mWidth, mHeight, mode));
+    if (vol_data[0]) free(vol_data[0]);
+    MP4DecodingMode actualMode = PVGetDecBitstreamMode(mHandle);
+    CHECK_EQ(mode, actualMode);
+
+    PVSetPostProcType((VideoDecControls *) mHandle, 0);
+    size_t frameSize = (((mWidth + 15) & - 16) * ((mHeight + 15) & - 16) * 3) / 2;
+    for (uint32_t i = 0; i < 2; ++i) {
+        mFrames[i] = new MediaBuffer(frameSize);
+        mFrames[i]->setObserver(this);
+    }
+    PVSetReferenceYUV(mHandle, (uint8_t *)mFrames[1]->data());
+
+    mSource->start();
+
+    mNumSamplesOutput = 0;
+    mStarted = true;
+
+    return OK;
+}
+
+status_t M4vH263Decoder::stop() {
+    CHECK(mStarted);
+
+    if (mInputBuffer) {
+        mInputBuffer->release();
+        mInputBuffer = NULL;
+    }
+
+    mSource->stop();
+
+    releaseFrames();
+
+    mStarted = false;
+    return (PVCleanUpVideoDecoder(mHandle) == PV_TRUE)? OK: UNKNOWN_ERROR;
+}
+
+sp<MetaData> M4vH263Decoder::getFormat() {
+    return mFormat;
+}
+
+status_t M4vH263Decoder::read(
+        MediaBuffer **out, const ReadOptions *options) {
+    *out = NULL;
+
+    int64_t seekTimeUs;
+    if (options && options->getSeekTo(&seekTimeUs)) {
+        CHECK_EQ(PVResetVideoDecoder(mHandle), PV_TRUE);
+    }
+
+    MediaBuffer *inputBuffer = NULL;
+    status_t err = mSource->read(&inputBuffer, options);
+    if (err != OK) {
+        return err;
+    }
+
+    uint8_t *bitstream = (uint8_t *) inputBuffer->data() + inputBuffer->range_offset();
+    uint32_t timestamp = 0xFFFFFFFF;
+    int32_t bufferSize = inputBuffer->range_length();
+    uint32_t useExtTimestamp = 0;
+    CHECK_EQ(PV_TRUE, PVDecodeVideoFrame(mHandle, &bitstream, &timestamp, &bufferSize,
+            &useExtTimestamp,  (uint8_t *)mFrames[mNumSamplesOutput & 0x01]->data()));
+
+    // Check whether video dimension is changed.
+    // If so, notify the client about the change.
+    int32_t width, height;
+    PVGetVideoDimensions(mHandle, &width, &height);
+    if (mWidth != width || mHeight != height) {
+        mFormat->setInt32(kKeyWidth, width);
+        mFormat->setInt32(kKeyHeight, height);
+        return INFO_FORMAT_CHANGED;
+    }
+
+    PVSetReferenceYUV(mHandle, (uint8_t *)mFrames[mNumSamplesOutput & 0x01]->data());
+    *out = mFrames[mNumSamplesOutput & 0x01];
+    (*out)->add_ref();
+
+    int64_t timeUs;
+    CHECK(inputBuffer->meta_data()->findInt64(kKeyTime, &timeUs));
+    (*out)->meta_data()->setInt64(kKeyTime, timeUs);
+
+    ++mNumSamplesOutput;
+    inputBuffer->release();
+
+    return OK;
+}
+
+void M4vH263Decoder::releaseFrames() {
+    for (size_t i = 0; i < sizeof(mFrames) / sizeof(mFrames[0]); ++i) {
+        MediaBuffer *buffer = mFrames[i];
+
+        buffer->setObserver(NULL);
+        buffer->release();
+
+        mFrames[i] = NULL;
+    }
+}
+
+void M4vH263Decoder::signalBufferReturned(MediaBuffer *buffer) {
+    LOGV("signalBufferReturned");
+}
+
+
+}  // namespace android
diff --git a/media/libstagefright/codecs/m4v_h263/dec/include/m4vh263_decoder_pv_types.h b/media/libstagefright/codecs/m4v_h263/dec/include/m4vh263_decoder_pv_types.h
new file mode 100644
index 0000000..ec6871f
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/include/m4vh263_decoder_pv_types.h
@@ -0,0 +1,67 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------$
+ */
+
+#ifndef M4V_H263_DECODER_PV_TYPES_H_
+#define M4V_H263_DECODER_PV_TYPES_H_
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h> // for free, malloc, etc
+
+// Redefine the int types
+typedef uint8_t uint8;
+typedef uint16_t uint16;
+typedef int16_t int16;
+typedef uint32_t uint32;
+typedef int32_t int32;
+typedef unsigned int uint;
+
+// Redefine the oscl memory management routines
+#define oscl_memcpy memcpy
+#define oscl_memset memset
+#define oscl_malloc malloc
+#define oscl_free free
+#define oscl_memcmp memcmp
+#define OSCL_DELETE(ptr) { delete(ptr); }
+
+// Request status values.  These are negative so that
+// they won't conflict with system error codes.
+const int32 OSCL_REQUEST_ERR_NONE = 0;
+const int32 OSCL_REQUEST_PENDING = (-0x7fffffff);
+const int32 OSCL_REQUEST_ERR_CANCEL = (-1);
+const int32 OSCL_REQUEST_ERR_GENERAL = (-2);
+
+// Request status type
+class OsclAOStatus
+{
+    public:
+        OsclAOStatus();
+        OsclAOStatus(int32 aStatus);
+        int32 operator=(int32 aStatus);
+        int32 operator==(int32 aStatus) const;
+        int32 operator!=(int32 aStatus) const;
+        int32 operator>=(int32 aStatus) const;
+        int32 operator<=(int32 aStatus) const;
+        int32 operator>(int32 aStatus) const;
+        int32 operator<(int32 aStatus) const;
+        int32 Value() const;
+    private:
+        int32 iStatus;
+};
+
+#endif  // M4V_H263_DECODER_PV_TYPES_H_
diff --git a/media/libstagefright/codecs/m4v_h263/dec/include/mp4dec_api.h b/media/libstagefright/codecs/m4v_h263/dec/include/mp4dec_api.h
new file mode 100644
index 0000000..ef09900
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/include/mp4dec_api.h
@@ -0,0 +1,180 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#ifndef _MP4DEC_API_H_
+#define _MP4DEC_API_H_
+
+#include "m4vh263_decoder_pv_types.h"
+
+#define PV_TOLERATE_VOL_ERRORS
+#define PV_MEMORY_POOL
+
+#ifndef _PV_TYPES_
+#define _PV_TYPES_
+
+typedef uint Bool;
+
+#define PV_CODEC_INIT  0
+#define PV_CODEC_STOP  1
+#endif
+
+#define PV_TRUE  1
+#define PV_FALSE 0
+
+/* flag for post-processing  4/25/00 */
+
+#ifdef DEC_NOPOSTPROC
+#undef PV_POSTPROC_ON   /* enable compilation of post-processing code */
+#else
+#define PV_POSTPROC_ON
+#endif
+
+#define PV_NO_POST_PROC 0
+#define PV_DEBLOCK 1
+#define PV_DERING  2
+
+
+
+#include "visual_header.h" // struct VolInfo is defined
+
+
+/**@name Structure and Data Types
+ * These type definitions specify the input / output from the PVMessage
+ * library.
+ */
+
+/*@{*/
+/* The application has to allocate space for this structure */
+typedef struct tagOutputFrame
+{
+    uint8       *data;          /* pointer to output YUV buffer */
+    uint32      timeStamp;      /* time stamp */
+} OutputFrame;
+
+typedef struct tagApplicationData
+{
+    int layer;          /* current video layer */
+    void *object;       /* some optional data field */
+} applicationData;
+
+/* Application controls, this structed shall be allocated */
+/*    and initialized in the application.                 */
+typedef struct tagvideoDecControls
+{
+    /* The following fucntion pointer is copied to BitstreamDecVideo structure  */
+    /*    upon initialization and never used again. */
+    int (*readBitstreamData)(uint8 *buf, int nbytes_required, void *appData);
+    applicationData appData;
+
+    uint8 *outputFrame;
+    void *videoDecoderData;     /* this is an internal pointer that is only used */
+    /* in the decoder library.   */
+#ifdef PV_MEMORY_POOL
+    int32 size;
+#endif
+    int nLayers;
+    /* pointers to VOL data for frame-based decoding. */
+    uint8 *volbuf[2];           /* maximum of 2 layers for now */
+    int32 volbuf_size[2];
+
+} VideoDecControls;
+
+typedef enum
+{
+    H263_MODE = 0, MPEG4_MODE, UNKNOWN_MODE
+} MP4DecodingMode;
+
+typedef enum
+{
+    MP4_I_FRAME, MP4_P_FRAME, MP4_B_FRAME, MP4_BAD_FRAME
+} MP4FrameType;
+
+typedef struct tagVopHeaderInfo
+{
+    int     currLayer;
+    uint32  timestamp;
+    MP4FrameType    frameType;
+    int     refSelCode;
+    int16       quantizer;
+} VopHeaderInfo;
+
+/*--------------------------------------------------------------------------*
+ * VideoRefCopyInfo:
+ * OMAP DSP specific typedef structure, to support the user (ARM) copying
+ * of a Reference Frame into the Video Decoder.
+ *--------------------------------------------------------------------------*/
+typedef struct tagVideoRefCopyInfoPtr
+{
+    uint8   *yChan;             /* The Y component frame the user can copy a new reference to */
+    uint8   *uChan;             /* The U component frame the user can copy a new reference to */
+    uint8   *vChan;             /* The V component frame the user can copy a new reference to */
+    uint8   *currentVop;        /* The Vop for video the user can copy a new reference to */
+} VideoRefCopyInfoPtr;
+
+typedef struct tagVideoRefCopyInfoData
+{
+    int16   width;              /* Width */
+    int16   height;             /* Height */
+    int16   realWidth;          /* Non-padded width, not a multiple of 16. */
+    int16   realHeight;         /* Non-padded height, not a multiple of 16. */
+} VideoRefCopyInfoData;
+
+typedef struct tagVideoRefCopyInfo
+{
+    VideoRefCopyInfoData data;
+    VideoRefCopyInfoPtr ptrs;
+} VideoRefCopyInfo;
+
+/*@}*/
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+    OSCL_IMPORT_REF Bool    PVInitVideoDecoder(VideoDecControls *decCtrl, uint8 *volbuf[], int32 *volbuf_size, int nLayers, int width, int height, MP4DecodingMode mode);
+    Bool    PVAllocVideoData(VideoDecControls *decCtrl, int width, int height, int nLayers);
+    OSCL_IMPORT_REF Bool    PVCleanUpVideoDecoder(VideoDecControls *decCtrl);
+    Bool    PVResetVideoDecoder(VideoDecControls *decCtrl);
+    OSCL_IMPORT_REF void    PVSetReferenceYUV(VideoDecControls *decCtrl, uint8 *refYUV);
+    Bool    PVDecSetReference(VideoDecControls *decCtrl, uint8 *refYUV, uint32 timestamp);
+    Bool    PVDecSetEnhReference(VideoDecControls *decCtrl, uint8 *refYUV, uint32 timestamp);
+    OSCL_IMPORT_REF Bool    PVDecodeVideoFrame(VideoDecControls *decCtrl, uint8 *bitstream[], uint32 *timestamp, int32 *buffer_size, uint use_ext_timestamp[], uint8* currYUV);
+    Bool    PVDecodeVopHeader(VideoDecControls *decCtrl, uint8 *buffer[], uint32 timestamp[], int32 buffer_size[], VopHeaderInfo *header_info, uint use_ext_timestamp[], uint8 *currYUV);
+    Bool    PVDecodeVopBody(VideoDecControls *decCtrl, int32 buffer_size[]);
+    void    PVDecPostProcess(VideoDecControls *decCtrl, uint8 *outputYUV);
+    OSCL_IMPORT_REF void    PVGetVideoDimensions(VideoDecControls *decCtrl, int32 *display_width, int32 *display_height);
+    OSCL_IMPORT_REF void    PVSetPostProcType(VideoDecControls *decCtrl, int mode);
+    uint32  PVGetVideoTimeStamp(VideoDecControls *decoderControl);
+    int     PVGetDecBitrate(VideoDecControls *decCtrl);
+    int     PVGetDecFramerate(VideoDecControls *decCtrl);
+    uint8   *PVGetDecOutputFrame(VideoDecControls *decCtrl);
+    int     PVGetLayerID(VideoDecControls *decCtrl);
+    int32   PVGetDecMemoryUsage(VideoDecControls *decCtrl);
+    OSCL_IMPORT_REF MP4DecodingMode PVGetDecBitstreamMode(VideoDecControls *decCtrl);
+    Bool    PVExtractVolHeader(uint8 *video_buffer, uint8 *vol_header, int32 *vol_header_size);
+    int32   PVLocateFrameHeader(uint8 *video_buffer, int32 vop_size);
+    int32   PVLocateH263FrameHeader(uint8 *video_buffer, int32 vop_size);
+    Bool    PVGetVolInfo(VideoDecControls *decCtrl, VolInfo *pVolInfo); // BX 6/24/04
+    Bool    IsIntraFrame(VideoDecControls *decoderControl);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _MP4DEC_API_H_ */
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/include/visual_header.h b/media/libstagefright/codecs/m4v_h263/dec/include/visual_header.h
new file mode 100644
index 0000000..48da0dc
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/include/visual_header.h
@@ -0,0 +1,51 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#ifndef _VISUAL_HEADER_H
+#define _VISUAL_HEADER_H
+
+#ifndef _PV_TYPES_ // In order to compile in MDF wrapper
+#define _PV_TYPES_
+
+#include "m4vh263_decoder_pv_types.h"
+
+typedef uint Bool;
+
+#endif // #ifndef _PV_TYPES_
+
+
+typedef struct tagVolInfo
+{
+    int32   shortVideoHeader;       /* shortVideoHeader mode */
+
+    /* Error Resilience Flags */
+    int32   errorResDisable;        /* VOL disable error resilence mode(Use Resynch markers) */
+    int32   useReverseVLC;          /* VOL reversible VLCs */
+    int32   dataPartitioning;       /* VOL data partitioning */
+
+    /* Parameters used for scalability */
+    int32   scalability;            /* VOL scalability (flag) */
+
+    int32   nbitsTimeIncRes;        /* number of bits for time increment () */
+
+    int32   profile_level_id;       /* profile and level */
+
+
+} VolInfo;
+
+#endif // #ifndef _VISUAL_HEADER_H
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/adaptive_smooth_no_mmx.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/adaptive_smooth_no_mmx.cpp
new file mode 100644
index 0000000..e2761eb
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/adaptive_smooth_no_mmx.cpp
@@ -0,0 +1,421 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+
+ Description: Separated modules into one function per file and put into
+    new template.
+
+ Description: Optimizing C code and adding comments.  Also changing variable
+    names to make them more meaningful.
+
+ Who:                   Date:
+ Description:
+
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+
+    Rec_Y = pointer to 0th position in buffer containing luminance values
+        of type uint8.
+    y_start = value of y coordinate of type int that specifies the first
+        row of pixels to be used in the filter algorithm.
+    x_start = value of x coordinate of type int that specifies the first
+        column of pixels to be used in the filter algorithm.
+    y_blk_start = value of the y coordinate of type int that specifies the
+        row of pixels which contains the start of a block. The row
+        specified by y_blk_start+BLK_SIZE is the last row of pixels
+        that are used in the filter algorithm.
+    x_blk_start = value of the x coordinate of type int that specifies the
+        column of pixels which contains the start of a block.  The
+        column specified by x_blk_start+BLK_SIZE is the last column of
+        pixels that are used in the filter algorithm.
+    thr = value of type int that is compared to the elements in Rec_Y to
+        determine if a particular value in Rec_Y will be modified by
+        the filter or not
+    width = value of type int that specifies the width of the display
+        in pixels (or pels, equivalently).
+    max_diff = value of type int that specifies the value that may be added
+        or subtracted from the pixel in Rec_Y that is being filtered
+        if the filter algorithm decides to change that particular
+        pixel's luminance value.
+
+
+ Local Stores/Buffers/Pointers Needed:
+    None
+
+ Global Stores/Buffers/Pointers Needed:
+    None
+
+ Outputs:
+    None
+
+ Pointers and Buffers Modified:
+    Buffer pointed to by Rec_Y is modified with the filtered
+    luminance values.
+
+ Local Stores Modified:
+    None
+
+ Global Stores Modified:
+    None
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+ This function implements a motion compensated noise filter using adaptive
+ weighted averaging of luminance values.  *Rec_Y contains the luminance values
+ that are being filtered.
+
+ The picture below depicts a 3x3 group of pixel luminance values.  The "u", "c",
+ and "l" stand for "upper", "center" and "lower", respectively.  The location
+ of pelc0 is specified by x_start and y_start in the 1-D array "Rec_Y" as
+ follows (assuming x_start=0):
+
+ location of pelc0 = [(y_start+1) * width] + x_start
+
+ Moving up or down 1 row (moving from pelu2 to pelc2, for example) is done by
+ incrementing or decrementing "width" elements within Rec_Y.
+
+ The coordinates of the upper left hand corner of a block (not the group of
+ 9 pixels depicted in the figure below) is specified by
+ (y_blk_start, x_blk_start).  The width and height of the block is BLKSIZE.
+ (y_start,x_start) may be specified independently of (y_blk_start, x_blk_start).
+
+    (y_start,x_start)
+ -----------|--------------------------
+    |   |   |   |   |
+    |   X   | pelu1 | pelu2 |
+    | pelu0 |   |   |
+    |   |   |   |
+ --------------------------------------
+    |   |   |   |
+    | pelc0 | pelc1 | pelc2 |
+    |   |   |   |
+    |   |   |   |
+ --------------------------------------
+    |   |   |   |
+    | pell0 | pell1 | pell2 |
+    |   |   |   |
+    |   |   |   |
+ --------------------------------------
+
+ The filtering of the luminance values is achieved by comparing the 9
+ luminance values to a threshold value ("thr") and then changing the
+ luminance value of pelc1 if all of the values are above or all of the values
+ are below the threshold.  The amount that the luminance value is changed
+ depends on a weighted sum of the 9 luminance values. The position of Pelc1
+ is then advanced to the right by one (as well as all of the surrounding pixels)
+ and the same calculation is performed again for the luminance value of the new
+ Pelc1. This continues row-wise until pixels in the last row of the block are
+ filtered.
+
+
+------------------------------------------------------------------------------
+ REQUIREMENTS
+
+ None.
+
+------------------------------------------------------------------------------
+ REFERENCES
+
+ ..\corelibs\decoder\common\src\post_proc.c
+
+------------------------------------------------------------------------------
+ PSEUDO-CODE
+
+------------------------------------------------------------------------------
+ RESOURCES USED
+   When the code is written for a specific target processor the
+     the resources used should be documented below.
+
+ STACK USAGE: [stack count for this module] + [variable to represent
+          stack usage for each subroutine called]
+
+     where: [stack usage variable] = stack usage for [subroutine
+         name] (see [filename].ext)
+
+ DATA MEMORY USED: x words
+
+ PROGRAM MEMORY USED: x words
+
+ CLOCK CYCLES: [cycle count equation for this module] + [variable
+           used to represent cycle count for each subroutine
+           called]
+
+     where: [cycle count variable] = cycle count for [subroutine
+        name] (see [filename].ext)
+
+------------------------------------------------------------------------------
+*/
+
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include    "mp4dec_lib.h"
+#include    "post_proc.h"
+#include    "mp4def.h"
+
+#define OSCL_DISABLE_WARNING_CONV_POSSIBLE_LOSS_OF_DATA
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+#ifdef PV_POSTPROC_ON
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+void AdaptiveSmooth_NoMMX(
+    uint8 *Rec_Y,       /* i/o  */
+    int y_start,        /* i    */
+    int x_start,        /* i    */
+    int y_blk_start,    /* i    */
+    int x_blk_start,    /* i    */
+    int thr,        /* i    */
+    int width,      /* i    */
+    int max_diff        /* i    */
+)
+{
+
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int  sign_v[15];
+    int sum_v[15];
+    int *sum_V_ptr;
+    int *sign_V_ptr;
+    uint8 pelu;
+    uint8 pelc;
+    uint8 pell;
+    uint8 *pelp;
+    uint8 oldrow[15];
+    int  sum;
+    int sum1;
+    uint8 *Rec_Y_ptr;
+    int32  addr_v;
+    int row_cntr;
+    int col_cntr;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /*  first row
+    */
+    addr_v = (int32)(y_start + 1) * width;  /* y coord of 1st element in the row  /
+                     /containing pelc pixel /     */
+    Rec_Y_ptr = &Rec_Y[addr_v + x_start];  /* initializing pointer to
+                           /  pelc0 position  */
+    sum_V_ptr = &sum_v[0];  /* initializing pointer to 0th element of array
+                /   that will contain weighted sums of pixel
+                /   luminance values */
+    sign_V_ptr = &sign_v[0];  /*  initializing pointer to 0th element of
+                  /   array that will contain sums that indicate
+                  /    how many of the 9 pixels are above or below
+                  /    the threshold value (thr)    */
+    pelp = &oldrow[0];  /* initializing pointer to the 0th element of array
+                /    that will contain current values of pelc that
+                /   are saved and used as values of pelu when the
+                /   next row of pixels are filtered */
+
+    pelu = *(Rec_Y_ptr - width);  /* assigning value of pelu0 to pelu  */
+    *pelp++ = pelc = *Rec_Y_ptr; /* assigning value of pelc0 to pelc and
+                     /  storing this value in pelp which
+                     /   will be used as value of pelu0 when
+                     /  next row is filtered */
+    pell = *(Rec_Y_ptr + width);  /* assigning value of pell0 to pell */
+    Rec_Y_ptr++; /* advancing pointer from pelc0 to pelc1 */
+    *sum_V_ptr++ = pelu + (pelc << 1) + pell;  /* weighted sum of pelu0,
+                         /  pelc0 and pell0  */
+    /* sum of 0's and 1's (0 if pixel value is below thr, 1 if value
+    /is above thr)  */
+    *sign_V_ptr++ = INDEX(pelu, thr) + INDEX(pelc, thr) + INDEX(pell, thr);
+
+
+    pelu = *(Rec_Y_ptr - width);  /* assigning value of pelu1 to pelu */
+    *pelp++ = pelc = *Rec_Y_ptr; /* assigning value of pelc1 to pelc and
+                     /  storing this value in pelp which
+                     /  will be used as the value of pelu1 when
+                     /  next row is filtered */
+    pell = *(Rec_Y_ptr + width);  /* assigning value of pell1 to pell */
+    Rec_Y_ptr++;  /* advancing pointer from pelc1 to pelc2 */
+    *sum_V_ptr++ = pelu + (pelc << 1) + pell; /* weighted sum of pelu1,
+                        / pelc1 and pell1  */
+    /* sum of 0's and 1's (0 if pixel value is below thr, 1 if value
+    /is above thr)  */
+    *sign_V_ptr++ = INDEX(pelu, thr) + INDEX(pelc, thr) + INDEX(pell, thr);
+
+    /* The loop below performs the filtering for the first row of
+    /   pixels in the region.  It steps across the remaining pixels in
+    /   the row and alters the luminance value of pelc1 if necessary,
+    /   depending on the luminance values of the adjacent pixels*/
+
+    for (col_cntr = (x_blk_start + BLKSIZE - 1) - x_start; col_cntr > 0; col_cntr--)
+    {
+        pelu = *(Rec_Y_ptr - width);  /* assigning value of pelu2 to
+                        /   pelu */
+        *pelp++ = pelc = *Rec_Y_ptr; /* assigning value of pelc2 to pelc
+                         / and storing this value in pelp
+                         / which will be used   as value of pelu2
+                         / when next row is filtered */
+        pell = *(Rec_Y_ptr + width); /* assigning value of pell2 to pell */
+
+        /* weighted sum of pelu1, pelc1 and pell1  */
+        *sum_V_ptr = pelu + (pelc << 1) + pell;
+        /* sum of 0's and 1's (0 if pixel value is below thr,
+        /1 if value is above thr)  */
+        *sign_V_ptr = INDEX(pelu, thr) + INDEX(pelc, thr) +
+                      INDEX(pell, thr);
+        /* the value of sum1 indicates how many of the 9 pixels'
+        /luminance values are above or equal to thr */
+        sum1 = *(sign_V_ptr - 2) + *(sign_V_ptr - 1) + *sign_V_ptr;
+
+        /* alter the luminance value of pelc1 if all 9 luminance values
+        /are above or equal to thr or if all 9 values are below thr */
+        if (sum1 == 0 || sum1 == 9)
+        {
+            /* sum is a weighted average of the 9 pixel luminance
+            /values   */
+            sum = (*(sum_V_ptr - 2) + (*(sum_V_ptr - 1) << 1) +
+                   *sum_V_ptr + 8) >> 4;
+
+            Rec_Y_ptr--;  /* move pointer back to pelc1  */
+            /* If luminance value of pelc1 is larger than
+            / sum by more than max_diff, then subract max_diff
+            / from luminance value of pelc1*/
+            if ((int)(*Rec_Y_ptr - sum) > max_diff)
+            {
+                sum = *Rec_Y_ptr - max_diff;
+            }
+            /* If luminance value of pelc1 is smaller than
+            / sum by more than max_diff, then add max_diff
+            / to luminance value of pelc1*/
+            else if ((int)(*Rec_Y_ptr - sum) < -max_diff)
+            {
+                sum = *Rec_Y_ptr + max_diff;
+            }
+            *Rec_Y_ptr++ = sum; /* assign value of sum to pelc1
+                         and advance pointer to pelc2 */
+        }
+        Rec_Y_ptr++; /* advance pointer to new value of pelc2
+                 /   old pelc2 is now treated as pelc1*/
+        sum_V_ptr++; /* pointer is advanced so next weighted sum may
+                 /  be saved */
+        sign_V_ptr++; /* pointer is advanced so next sum of 0's and
+                  / 1's may be saved  */
+    }
+
+    /* The nested loops below perform the filtering for the remaining rows */
+
+    addr_v = (y_start + 2) * width;  /* advance addr_v to the next row
+                     /   (corresponding to pell0)*/
+    /* The outer loop steps throught the rows.   */
+    for (row_cntr = (y_blk_start + BLKSIZE) - (y_start + 2); row_cntr > 0; row_cntr--)
+    {
+        Rec_Y_ptr = &Rec_Y[addr_v + x_start]; /* advance pointer to
+            /the old pell0, which has become the new pelc0 */
+        addr_v += width;  /* move addr_v down 1 row */
+        sum_V_ptr = &sum_v[0];  /* re-initializing pointer */
+        sign_V_ptr = &sign_v[0];  /* re-initilaizing pointer */
+        pelp = &oldrow[0]; /* re-initializing pointer */
+
+        pelu = *pelp; /* setting pelu0 to old value of pelc0 */
+        *pelp++ = pelc = *Rec_Y_ptr;
+        pell = *(Rec_Y_ptr + width);
+        Rec_Y_ptr++;
+        *sum_V_ptr++ = pelu + (pelc << 1) + pell;
+        *sign_V_ptr++ = INDEX(pelu, thr) + INDEX(pelc, thr) +
+                        INDEX(pell, thr);
+
+        pelu = *pelp; /* setting pelu1 to old value of pelc1 */
+        *pelp++ = pelc = *Rec_Y_ptr;
+        pell = *(Rec_Y_ptr + width);
+        Rec_Y_ptr++;
+        *sum_V_ptr++ = pelu + (pelc << 1) + pell;
+        *sign_V_ptr++ = INDEX(pelu, thr) + INDEX(pelc, thr) +
+                        INDEX(pell, thr);
+        /* The inner loop steps through the columns */
+        for (col_cntr = (x_blk_start + BLKSIZE - 1) - x_start; col_cntr > 0; col_cntr--)
+        {
+            pelu = *pelp; /* setting pelu2 to old value of pelc2 */
+            *pelp++ = pelc = *Rec_Y_ptr;
+            pell = *(Rec_Y_ptr + width);
+
+            *sum_V_ptr = pelu + (pelc << 1) + pell;
+            *sign_V_ptr = INDEX(pelu, thr) + INDEX(pelc, thr) +
+                          INDEX(pell, thr);
+
+            sum1 = *(sign_V_ptr - 2) + *(sign_V_ptr - 1) + *sign_V_ptr;
+            /* the "if" statement below is the same as the one in
+            / the first loop */
+            if (sum1 == 0 || sum1 == 9)
+            {
+                sum = (*(sum_V_ptr - 2) + (*(sum_V_ptr - 1) << 1) +
+                       *sum_V_ptr + 8) >> 4;
+
+                Rec_Y_ptr--;
+                if ((int)(*Rec_Y_ptr - sum) > max_diff)
+                {
+                    sum = *Rec_Y_ptr - max_diff;
+                }
+                else if ((int)(*Rec_Y_ptr - sum) < -max_diff)
+                {
+                    sum = *Rec_Y_ptr + max_diff;
+                }
+                *Rec_Y_ptr++ = (uint8) sum;
+            }
+            Rec_Y_ptr++;
+            sum_V_ptr++;
+            sign_V_ptr++;
+        }
+    }
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+#endif
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/bitstream.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/bitstream.cpp
new file mode 100644
index 0000000..37250f3
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/bitstream.cpp
@@ -0,0 +1,1001 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "bitstream.h"
+#include "mp4dec_lib.h"
+
+
+#define OSCL_DISABLE_WARNING_CONDITIONAL_IS_CONSTANT
+/* to mask the n least significant bits of an integer */
+static const uint32 msk[33] =
+{
+    0x00000000, 0x00000001, 0x00000003, 0x00000007,
+    0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f,
+    0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff,
+    0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff,
+    0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff,
+    0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff,
+    0x00ffffff, 0x01ffffff, 0x03ffffff, 0x07ffffff,
+    0x0fffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff,
+    0xffffffff
+};
+
+
+/* ======================================================================== */
+/*  Function : BitstreamFillCache()                                         */
+/*  Date     : 08/29/2000                                                   */
+/*  Purpose  : Read more bitstream data into buffer & the 24-byte cache.    */
+/*              This function is different from BitstreamFillBuffer in      */
+/*              that the buffer is the frame-based buffer provided by       */
+/*              the application.                                            */
+/*  In/out   :                                                              */
+/*  Return   : PV_SUCCESS if successed, PV_FAIL if failed.                  */
+/*  Modified : 4/16/01  : removed return of PV_END_OF_BUFFER                */
+/* ======================================================================== */
+PV_STATUS BitstreamFillCache(BitstreamDecVideo *stream)
+{
+    uint8 *bitstreamBuffer = stream->bitstreamBuffer;
+    uint8 *v;
+    int num_bits, i;
+
+    stream->curr_word |= (stream->next_word >> stream->incnt);   // stream->incnt cannot be 32
+    stream->next_word <<= (31 - stream->incnt);
+    stream->next_word <<= 1;
+    num_bits = stream->incnt_next + stream->incnt;
+    if (num_bits >= 32)
+    {
+        stream->incnt_next -= (32 - stream->incnt);
+        stream->incnt = 32;
+        return PV_SUCCESS;
+    }
+    /* this check can be removed if there is additional extra 4 bytes at the end of the bitstream */
+    v = bitstreamBuffer + stream->read_point;
+
+    if (stream->read_point > stream->data_end_pos - 4)
+    {
+        if (stream->data_end_pos <= stream->read_point)
+        {
+            stream->incnt = num_bits;
+            stream->incnt_next = 0;
+            return PV_SUCCESS;
+        }
+
+        stream->next_word = 0;
+
+        for (i = 0; i < stream->data_end_pos - stream->read_point; i++)
+        {
+            stream->next_word |= (v[i] << ((3 - i) << 3));
+        }
+
+        stream->read_point = stream->data_end_pos;
+        stream->curr_word |= (stream->next_word >> num_bits); // this is safe
+
+        stream->next_word <<= (31 - num_bits);
+        stream->next_word <<= 1;
+        num_bits = i << 3;
+        stream->incnt += stream->incnt_next;
+        stream->incnt_next = num_bits - (32 - stream->incnt);
+        if (stream->incnt_next < 0)
+        {
+            stream->incnt +=  num_bits;
+            stream->incnt_next = 0;
+        }
+        else
+        {
+            stream->incnt = 32;
+        }
+        return PV_SUCCESS;
+    }
+
+    stream->next_word = ((uint32)v[0] << 24) | (v[1] << 16) | (v[2] << 8) | v[3];
+    stream->read_point += 4;
+
+    stream->curr_word |= (stream->next_word >> num_bits); // this is safe
+    stream->next_word <<= (31 - num_bits);
+    stream->next_word <<= 1;
+    stream->incnt_next += stream->incnt;
+    stream->incnt = 32;
+    return PV_SUCCESS;
+}
+
+
+/* ======================================================================== */
+/*  Function : BitstreamReset()                                             */
+/*  Date     : 08/29/2000                                                   */
+/*  Purpose  : Initialize the bitstream buffer for frame-based decoding.    */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+void BitstreamReset(BitstreamDecVideo *stream, uint8 *buffer, int32 buffer_size)
+{
+    /* set up frame-based bitstream buffer */
+    oscl_memset(stream, 0, sizeof(BitstreamDecVideo));
+    stream->data_end_pos = buffer_size;
+    stream->bitstreamBuffer = buffer;
+}
+
+
+/* ======================================================================== */
+/*  Function : BitstreamOpen()                                              */
+/*  Purpose  : Initialize the bitstream data structure.                     */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+int BitstreamOpen(BitstreamDecVideo *stream, int)
+{
+    int buffer_size = 0;
+    /* set up linear bitstream buffer */
+//  stream->currentBytePos = 0;
+    stream->data_end_pos = 0;
+
+    stream->incnt = 0;
+    stream->incnt_next = 0;
+    stream->bitcnt = 0;
+    stream->curr_word = stream->next_word = 0;
+    stream->read_point = stream->data_end_pos;
+    return buffer_size;
+}
+
+
+/* ======================================================================== */
+/*  Function : BitstreamClose()                                             */
+/*  Purpose  : Cleanup the bitstream data structure.                        */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+void BitstreamClose(BitstreamDecVideo *)
+{
+    return;
+}
+
+
+/***********************************************************CommentBegin******
+*
+* -- BitstreamShowBits32HC
+* Shows 32 bits
+***********************************************************CommentEnd********/
+
+PV_STATUS BitstreamShowBits32HC(BitstreamDecVideo *stream, uint32 *code)
+{
+    PV_STATUS status = PV_SUCCESS;
+
+    if (stream->incnt < 32)
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+    }
+    *code = stream->curr_word;
+    return status;
+}
+
+/***********************************************************CommentBegin******
+*
+* -- BitstreamShowBits32
+* Shows upto and including 31 bits
+***********************************************************CommentEnd********/
+PV_STATUS BitstreamShowBits32(BitstreamDecVideo *stream, int nbits, uint32 *code)
+{
+    PV_STATUS status = PV_SUCCESS;
+
+    if (stream->incnt < nbits)
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+    }
+    *code = stream->curr_word >> (32 - nbits);
+    return status;
+}
+
+
+#ifndef PV_BS_INLINE
+/*========================================================================= */
+/*  Function:   BitstreamShowBits16()                                       */
+/*  Date:       12/18/2000                                                  */
+/*  Purpose:    To see the next "nbits"(nbits<=16) bitstream bits           */
+/*              without advancing the read pointer                          */
+/*                                                                          */
+/* =========================================================================*/
+PV_STATUS BitstreamShowBits16(BitstreamDecVideo *stream, int nbits, uint *code)
+{
+    PV_STATUS status = PV_SUCCESS;
+
+
+    if (stream->incnt < nbits)
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+    }
+
+    *code = stream->curr_word >> (32 - nbits);
+    return status;
+}
+
+
+/*========================================================================= */
+/*  Function:   BitstreamShow15Bits()                                       */
+/*  Date:       01/23/2001                                                  */
+/*  Purpose:    To see the next 15 bitstream bits                           */
+/*              without advancing the read pointer                          */
+/*                                                                          */
+/* =========================================================================*/
+PV_STATUS BitstreamShow15Bits(BitstreamDecVideo *stream, uint *code)
+{
+    PV_STATUS status = PV_SUCCESS;
+
+    if (stream->incnt < 15)
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+    }
+    *code = stream->curr_word >> 17;
+    return status;
+}
+/*========================================================================= */
+/*  Function: BitstreamShow13Bits                                           */
+/*  Date:       050923                                              */
+/*  Purpose:    Faciliate and speed up showing 13 bit from bitstream        */
+/*              used in VlcTCOEFF decoding                                  */
+/*  Modified:                            */
+/* =========================================================================*/
+PV_STATUS BitstreamShow13Bits(BitstreamDecVideo *stream, uint *code)
+{
+    PV_STATUS status = PV_SUCCESS;
+
+    if (stream->incnt < 13)
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+    }
+    *code = stream->curr_word >> 19;
+    return status;
+}
+
+uint BitstreamReadBits16_INLINE(BitstreamDecVideo *stream, int nbits)
+{
+    uint code;
+    PV_STATUS status;
+
+    if (stream->incnt < nbits)
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+    }
+    code = stream->curr_word >> (32 - nbits);
+    PV_BitstreamFlushBits(stream, nbits);
+    return code;
+}
+
+
+uint BitstreamRead1Bits_INLINE(BitstreamDecVideo *stream)
+{
+    PV_STATUS status = PV_SUCCESS;
+    uint    code;
+
+
+    if (stream->incnt < 1)
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+    }
+    code = stream->curr_word >> 31;
+    PV_BitstreamFlushBits(stream, 1);
+
+    return code;
+}
+
+#endif
+
+/* ======================================================================== */
+/*  Function : BitstreamReadBits16()                                        */
+/*  Purpose  : Read bits (nbits <=16) from bitstream buffer.                */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/* ======================================================================== */
+uint BitstreamReadBits16(BitstreamDecVideo *stream, int nbits)
+{
+    uint code;
+
+    if (stream->incnt < nbits)
+    {
+        /* frame-based decoding */
+        BitstreamFillCache(stream);
+    }
+    code = stream->curr_word >> (32 - nbits);
+    PV_BitstreamFlushBits(stream, nbits);
+    return code;
+}
+
+/* ======================================================================== */
+/*  Function : BitstreamRead1Bits()                                         */
+/*  Date     : 10/23/2000                                                   */
+/*  Purpose  : Faciliate and speed up reading 1 bit from bitstream.         */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/* ======================================================================== */
+
+uint BitstreamRead1Bits(BitstreamDecVideo *stream)
+{
+    uint    code;
+
+    if (stream->incnt < 1)
+    {
+        /* frame-based decoding */
+        BitstreamFillCache(stream);
+    }
+    code = stream->curr_word >> 31;
+    PV_BitstreamFlushBits(stream, 1);
+
+    return code;
+}
+
+/* ======================================================================== */
+/*  Function : PV_BitstreamFlushBitsCheck()                                 */
+/*  Purpose  : Flush nbits bits from bitstream buffer. Check for cache      */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+PV_STATUS PV_BitstreamFlushBitsCheck(BitstreamDecVideo *stream, int nbits)
+{
+    PV_STATUS status = PV_SUCCESS;
+
+    stream->bitcnt += nbits;
+    stream->incnt -= nbits;
+    if (stream->incnt < 0)
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+
+        if (stream->incnt < 0)
+        {
+            stream->bitcnt += stream->incnt;
+            stream->incnt = 0;
+        }
+    }
+    stream->curr_word <<= nbits;
+    return status;
+}
+
+/* ======================================================================== */
+/*  Function : BitstreamReadBits32()                                        */
+/*  Purpose  : Read bits from bitstream buffer.                             */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/* ======================================================================== */
+uint32 BitstreamReadBits32(BitstreamDecVideo *stream, int nbits)
+{
+    uint32 code;
+
+    if (stream->incnt < nbits)
+    {
+        /* frame-based decoding */
+        BitstreamFillCache(stream);
+    }
+    code = stream->curr_word >> (32 - nbits);
+    PV_BitstreamFlushBits(stream, nbits);
+    return code;
+}
+
+uint32 BitstreamReadBits32HC(BitstreamDecVideo *stream)
+{
+    uint32 code;
+
+    BitstreamShowBits32HC(stream, &code);
+    stream->bitcnt += 32;
+    stream->incnt = 0;
+    stream->curr_word = 0;
+    return code;
+}
+
+/* ======================================================================== */
+/*  Function : BitstreamCheckEndBuffer()                                    */
+/*  Date     : 03/30/2001                                                   */
+/*  Purpose  : Check to see if we are at the end of buffer                  */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+PV_STATUS BitstreamCheckEndBuffer(BitstreamDecVideo *stream)
+{
+    if (stream->read_point >= stream->data_end_pos && stream->incnt <= 0) return PV_END_OF_VOP;
+    return PV_SUCCESS;
+}
+
+
+PV_STATUS PV_BitstreamShowBitsByteAlign(BitstreamDecVideo *stream, int nbits, uint32 *code)
+{
+    PV_STATUS status = PV_SUCCESS;
+
+    int n_stuffed;
+
+    n_stuffed = 8 - (stream->bitcnt & 0x7); /*  07/05/01 */
+
+    if (stream->incnt < (nbits + n_stuffed))
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+    }
+
+    *code = (stream->curr_word << n_stuffed) >> (32 - nbits);
+    return status;
+}
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+PV_STATUS PV_BitstreamShowBitsByteAlignNoForceStuffing(BitstreamDecVideo *stream, int nbits, uint32 *code)
+{
+    PV_STATUS status = PV_SUCCESS;
+
+    int n_stuffed;
+
+    n_stuffed = (8 - (stream->bitcnt & 0x7)) & 7;
+
+    if (stream->incnt < (nbits + n_stuffed))
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+    }
+
+    *code = (stream->curr_word << n_stuffed) >> (32 - nbits);
+    return status;
+}
+#endif
+
+PV_STATUS PV_BitstreamByteAlign(BitstreamDecVideo *stream)
+{
+    PV_STATUS status = PV_SUCCESS;
+    int n_stuffed;
+
+    n_stuffed = 8 - (stream->bitcnt & 0x7); /*  07/05/01 */
+
+    /* We have to make sure we have enough bits in the cache.   08/15/2000 */
+    if (stream->incnt < n_stuffed)
+    {
+        /* frame-based decoding */
+        status = BitstreamFillCache(stream);
+    }
+
+
+    stream->bitcnt += n_stuffed;
+    stream->incnt -= n_stuffed;
+    stream->curr_word <<= n_stuffed;
+    if (stream->incnt < 0)
+    {
+        stream->bitcnt += stream->incnt;
+        stream->incnt = 0;
+    }
+    return status;
+}
+
+
+PV_STATUS BitstreamByteAlignNoForceStuffing(BitstreamDecVideo *stream)
+{
+    uint n_stuffed;
+
+    n_stuffed = (8 - (stream->bitcnt & 0x7)) & 0x7; /*  07/05/01 */
+
+    stream->bitcnt += n_stuffed;
+    stream->incnt -= n_stuffed;
+
+    if (stream->incnt < 0)
+    {
+        stream->bitcnt += stream->incnt;
+        stream->incnt = 0;
+    }
+    stream->curr_word <<= n_stuffed;
+    return PV_SUCCESS;
+}
+
+
+/* ==================================================================== */
+/*  Function : getPointer()                                             */
+/*  Date     : 10/98                                                    */
+/*  Purpose  : get current position of file pointer                     */
+/*  In/out   :                                                          */
+/*  Return   :                                                          */
+/* ==================================================================== */
+int32 getPointer(BitstreamDecVideo *stream)
+{
+    return stream->bitcnt;
+}
+
+
+
+
+/* ====================================================================== /
+Function : movePointerTo()
+Date     : 05/14/2004
+Purpose  : move bitstream pointer to a desired position
+In/out   :
+Return   :
+Modified :
+/ ====================================================================== */
+PV_STATUS movePointerTo(BitstreamDecVideo *stream, int32 pos)
+{
+    int32 byte_pos;
+    if (pos < 0)
+    {
+        pos = 0;
+    }
+
+    byte_pos = pos >> 3;
+
+    if (byte_pos > stream->data_end_pos)
+    {
+        byte_pos = stream->data_end_pos;
+    }
+
+    stream->read_point = byte_pos & -4;
+    stream->bitcnt = stream->read_point << 3;;
+    stream->curr_word = 0;
+    stream->next_word = 0;
+    stream->incnt = 0;
+    stream->incnt_next = 0;
+    BitstreamFillCache(stream);
+    PV_BitstreamFlushBits(stream, ((pos & 0x7) + ((byte_pos & 0x3) << 3)));
+    return PV_SUCCESS;
+}
+
+
+/* ======================================================================== */
+/*  Function : validStuffing()                                              */
+/*  Date     : 04/11/2000                                                   */
+/*  Purpose  : Check whether we have valid stuffing at current position.    */
+/*  In/out   :                                                              */
+/*  Return   : PV_TRUE if successed, PV_FALSE if failed.                    */
+/*  Modified : 12/18/2000 : changed the pattern type to uint    */
+/*             04/01/2001 : removed PV_END_OF_BUFFER                        */
+/* ======================================================================== */
+Bool validStuffing(BitstreamDecVideo *stream)
+{
+    uint n_stuffed;
+    uint pattern;
+
+
+    n_stuffed = 8 - (stream->bitcnt & 0x7);
+    BitstreamShowBits16(stream, n_stuffed, &pattern);
+    if (pattern == msk[n_stuffed-1]) return PV_TRUE;
+    return PV_FALSE;
+}
+#ifdef PV_ANNEX_IJKT_SUPPORT
+Bool validStuffing_h263(BitstreamDecVideo *stream)
+{
+    uint n_stuffed;
+    uint pattern;
+
+
+    n_stuffed = (8 - (stream->bitcnt & 0x7)) & 7;  //  stream->incnt % 8
+    if (n_stuffed == 0)
+    {
+        return PV_TRUE;
+    }
+    BitstreamShowBits16(stream, n_stuffed, &pattern);
+    if (pattern == 0) return PV_TRUE;
+    return PV_FALSE;
+}
+#endif
+
+
+/* ======================================================================== */
+/*  Function : PVSearchNextH263Frame()                                      */
+/*  Date     : 04/08/2005                                                   */
+/*  Purpose  : search for 0x00 0x00 0x80                                    */
+/*  In/out   :                                                              */
+/*  Return   : PV_SUCCESS if succeeded  or PV_END_OF_VOP if failed          */
+/*  Modified :                                                              */
+/* ======================================================================== */
+PV_STATUS PVSearchNextH263Frame(BitstreamDecVideo *stream)
+{
+    PV_STATUS status = PV_SUCCESS;
+    uint8 *ptr;
+    int32 i;
+    int32 initial_byte_aligned_position = (stream->bitcnt + 7) >> 3;
+
+    ptr = stream->bitstreamBuffer + initial_byte_aligned_position;
+
+    i = PVLocateH263FrameHeader(ptr, stream->data_end_pos - initial_byte_aligned_position);
+    if (stream->data_end_pos <= initial_byte_aligned_position + i)
+    {
+        status = PV_END_OF_VOP;
+    }
+    (void)movePointerTo(stream, ((i + initial_byte_aligned_position) << 3)); /* ptr + i */
+    return status;
+}
+
+
+/* ======================================================================== */
+/*  Function : PVSearchNextM4VFrame()                                       */
+/*  Date     : 04/08/2005                                                   */
+/*  Purpose  : search for 0x00 0x00 0x01 and move the pointer to the        */
+/*  beginning of the start code                                             */
+/*  In/out   :                                                              */
+/*  Return   : PV_SUCCESS if succeeded  or PV_END_OF_VOP if failed          */
+/*  Modified :                                                              */
+/* ======================================================================== */
+
+PV_STATUS PVSearchNextM4VFrame(BitstreamDecVideo *stream)
+{
+    PV_STATUS status = PV_SUCCESS;
+    uint8 *ptr;
+    int32 i;
+    int32 initial_byte_aligned_position = (stream->bitcnt + 7) >> 3;
+
+    ptr = stream->bitstreamBuffer + initial_byte_aligned_position;
+
+    i = PVLocateFrameHeader(ptr, stream->data_end_pos - initial_byte_aligned_position);
+    if (stream->data_end_pos <= initial_byte_aligned_position + i)
+    {
+        status = PV_END_OF_VOP;
+    }
+    (void)movePointerTo(stream, ((i + initial_byte_aligned_position) << 3)); /* ptr + i */
+    return status;
+}
+
+
+
+void PVLocateM4VFrameBoundary(BitstreamDecVideo *stream)
+{
+    uint8 *ptr;
+    int32 byte_pos = (stream->bitcnt >> 3);
+
+    stream->searched_frame_boundary = 1;
+    ptr = stream->bitstreamBuffer + byte_pos;
+
+    stream->data_end_pos = PVLocateFrameHeader(ptr, (int32)stream->data_end_pos - byte_pos) + byte_pos;
+}
+
+void PVLocateH263FrameBoundary(BitstreamDecVideo *stream)
+{
+    uint8 *ptr;
+    int32 byte_pos = (stream->bitcnt >> 3);
+
+    stream->searched_frame_boundary = 1;
+    ptr = stream->bitstreamBuffer + byte_pos;
+
+    stream->data_end_pos = PVLocateH263FrameHeader(ptr, (int32)stream->data_end_pos - byte_pos) + byte_pos;
+}
+
+/* ======================================================================== */
+/*  Function : quickSearchVideoPacketHeader()               */
+/*  Date     : 05/08/2000                           */
+/*  Purpose  : Quick search for the next video packet header        */
+/*  In/out   :                              */
+/*  Return   : PV_TRUE if successed, PV_FALSE if failed.            */
+/*  Modified :                              */
+/* ======================================================================== */
+PV_STATUS quickSearchVideoPacketHeader(BitstreamDecVideo *stream, int marker_length)
+{
+    PV_STATUS status = PV_SUCCESS;
+    uint32 tmpvar;
+
+
+    if (stream->searched_frame_boundary == 0)
+    {
+        PVLocateM4VFrameBoundary(stream);
+    }
+
+    do
+    {
+        status = BitstreamCheckEndBuffer(stream);
+        if (status == PV_END_OF_VOP) break;
+        PV_BitstreamShowBitsByteAlign(stream, marker_length, &tmpvar);
+        if (tmpvar == RESYNC_MARKER) break;
+        PV_BitstreamFlushBits(stream, 8);
+    }
+    while (status == PV_SUCCESS);
+
+    return status;
+}
+#ifdef PV_ANNEX_IJKT_SUPPORT
+PV_STATUS quickSearchH263SliceHeader(BitstreamDecVideo *stream)
+{
+    PV_STATUS status = PV_SUCCESS;
+    uint32 tmpvar;
+
+
+    if (stream->searched_frame_boundary == 0)
+    {
+        PVLocateH263FrameBoundary(stream);
+    }
+
+    do
+    {
+        status = BitstreamCheckEndBuffer(stream);
+        if (status == PV_END_OF_VOP) break;
+        PV_BitstreamShowBitsByteAlignNoForceStuffing(stream, 17, &tmpvar);
+        if (tmpvar == RESYNC_MARKER) break;
+        PV_BitstreamFlushBits(stream, 8);
+    }
+    while (status == PV_SUCCESS);
+
+    return status;
+}
+#endif
+/* ======================================================================== */
+/*          The following functions are for Error Concealment.              */
+/* ======================================================================== */
+
+/****************************************************/
+//  01/22/99 Quick search of Resync Marker
+// (actually the first part of it, i.e. 16 0's and a 1.
+
+/* We are not using the fastest algorithm possible. What this function does is
+to locate 11 consecutive 0's and then check if the 5 bits before them and
+the 1 bit after them are all 1's.
+*/
+
+//  Table used for quick search of markers. Gives the last `1' in
+// 4 bits. The MSB is bit #1, the LSB is bit #4.
+const int lastOne[] =
+{
+    0,  4,  3,  4,  2,  4,  3,  4,
+    1,  4,  3,  4,  2,  4,  3,  4
+};
+
+//  Table used for quick search of markers. Gives the last `0' in
+// 4 bits. The MSB is bit #1, the LSB is bit #4.
+/*const int lastZero[]=
+{
+    4,  3,  4,  2,  4,  3,  4,  1,
+        4,  3,  4,  2,  4,  3,  4,  0
+};
+*/
+//  Table used for quick search of markers. Gives the first `0' in
+// 4 bits. The MSB is bit #1, the LSB is bit #4.
+const int firstZero[] =
+{
+    1, 1, 1, 1, 1, 1, 1, 1,
+    2, 2, 2, 2, 3, 3, 4, 0
+};
+
+//  Table used for quick search of markers. Gives the first `1' in
+// 4 bits. The MSB is bit #1, the LSB is bit #4.
+const int firstOne[] =
+{
+    0, 4, 3, 3, 2, 2, 2, 2,
+    1, 1, 1, 1, 1, 1, 1, 1
+};
+
+
+/* ======================================================================== */
+/*  Function : quickSearchMarkers()                                         */
+/*  Date     : 01/25/99                                                     */
+/*  Purpose  : Quick search for Motion marker                               */
+/*  In/out   :                                                              */
+/*  Return   : Boolean true of false                                        */
+/*  Modified : 12/18/2000 : 32-bit version                    */
+/* ======================================================================== */
+PV_STATUS quickSearchMotionMarker(BitstreamDecVideo *stream)
+// MM: (11111000000000001)
+{
+    PV_STATUS status;
+    uint32 tmpvar, tmpvar2;
+
+    if (stream->searched_frame_boundary == 0)
+    {
+        PVLocateM4VFrameBoundary(stream);
+    }
+
+    while (TRUE)
+    {
+        status = BitstreamCheckEndBuffer(stream);
+        if (status == PV_END_OF_VOP) return PV_END_OF_VOP;
+
+        BitstreamShowBits32(stream, 17, &tmpvar);
+        if (!tmpvar) return PV_FAIL;
+
+        if (tmpvar & 1) //  Check if the 17th bit from the curr bit pos is a '1'
+        {
+            if (tmpvar == MOTION_MARKER_COMB)
+            {
+                return PV_SUCCESS; //  Found
+            }
+            else
+            {
+                tmpvar >>= 1;
+                tmpvar &= 0xF;
+                PV_BitstreamFlushBits(stream, (int)(12 + firstZero[tmpvar]));
+            }
+        }
+        else
+        {
+            //  01/25/99 Get the first 16 bits
+            tmpvar >>= 1;
+            tmpvar2 = tmpvar & 0xF;
+
+            //  01/26/99 Check bits #13 ~ #16
+            if (tmpvar2)
+            {
+                PV_BitstreamFlushBits(stream, (int)(7 + lastOne[tmpvar2]));
+            }
+            else
+            {
+                tmpvar >>= 4;
+                tmpvar2 = tmpvar & 0xF;
+
+                //  01/26/99 Check bits #9 ~ #12
+                if (tmpvar2)
+                {
+                    PV_BitstreamFlushBits(stream, (int)(3 + lastOne[tmpvar2]));
+                }
+                else
+                {
+                    tmpvar >>= 4;
+                    tmpvar2 = tmpvar & 0xF;
+
+                    //  01/26/99 Check bits #5 ~ #8
+                    // We don't need to check further
+                    // for the first 5 bits should be all 1's
+                    if (lastOne[tmpvar2] < 2)
+                    {
+                        /* we already have too many consecutive 0's. */
+                        /* Go directly pass the last of the 17 bits. */
+                        PV_BitstreamFlushBits(stream, 17);
+                    }
+                    else
+                    {
+                        PV_BitstreamFlushBits(stream, (int)(lastOne[tmpvar2] - 1));
+                    }
+                }
+            }
+        }
+
+    }
+}
+
+/* ======================================================================== */
+/*  Function : quickSearchDCM()                                             */
+/*  Date     : 01/22/99                                                     */
+/*  Purpose  : Quick search for DC Marker                                   */
+/*              We are not using the fastest algorithm possible.  What this */
+/*              function does is to locate 11 consecutive 0's and then      */
+/*              check if the 7 bits before them and the 1 bit after them    */
+/*              are correct.  (actually the first part of it, i.e. 16 0's   */
+/*              and a 1.                                                    */
+/*  In/out   :                                                              */
+/*  Return   : Boolean true of false                                        */
+/*  Modified : 12/18/2000 : 32-bit version                    */
+/* ======================================================================== */
+PV_STATUS quickSearchDCM(BitstreamDecVideo *stream)
+// DCM: (110 1011 0000 0000 0001)
+{
+    PV_STATUS status;
+    uint32 tmpvar, tmpvar2;
+
+    if (stream->searched_frame_boundary == 0)
+    {
+        PVLocateM4VFrameBoundary(stream);
+    }
+
+    while (TRUE)
+    {
+        status = BitstreamCheckEndBuffer(stream);
+        if (status == PV_END_OF_VOP) return PV_END_OF_VOP;
+        BitstreamShowBits32(stream, 19, &tmpvar);
+
+        if (tmpvar & 1) //  Check if the 17th bit from the curr bit pos is a '1'
+        {
+            if (tmpvar == DC_MARKER)
+            {
+                return PV_SUCCESS; //  Found
+            }
+            else
+            {
+                //  01/25/99 We treat the last of the 19 bits as its 7th bit (which is
+                // also a `1'
+                PV_BitstreamFlushBits(stream, 12);
+            }
+        }
+        else
+        {
+            tmpvar >>= 1;
+            tmpvar2 = tmpvar & 0xF;
+
+            if (tmpvar2)
+            {
+                PV_BitstreamFlushBits(stream, (int)(7 + lastOne[tmpvar2]));
+            }
+            else
+            {
+                tmpvar >>= 4;
+                tmpvar2 = tmpvar & 0xF;
+                if (tmpvar2)
+                {
+                    PV_BitstreamFlushBits(stream, (int)(3 + lastOne[tmpvar2]));
+                }
+                else
+                {
+                    tmpvar >>= 4;
+                    tmpvar2 = tmpvar & 0xF;
+                    if (lastOne[tmpvar2] < 2)
+                    {
+                        /* we already have too many consecutive 0's. */
+                        /* Go directly pass the last of the 17 bits. */
+                        PV_BitstreamFlushBits(stream, 19);
+                    }
+                    else
+                    {
+                        PV_BitstreamFlushBits(stream, (int)(lastOne[tmpvar2] - 1));
+                    }
+                }
+            }
+        }
+    }
+}
+
+/* ======================================================================== */
+/*  Function : quickSearchGOBHeader()   0000 0000 0000 0000 1               */
+/*  Date     : 07/06/01                                                     */
+/*  Purpose  : Quick search of GOBHeader (not byte aligned)                 */
+/*  In/out   :                                                              */
+/*  Return   : Integer value indicates type of marker found                 */
+/*  Modified :                                                              */
+/* ======================================================================== */
+PV_STATUS quickSearchGOBHeader(BitstreamDecVideo *stream)
+{
+    PV_STATUS status;
+    int byte0, byte1, byte2, shift, tmpvar;
+
+    BitstreamByteAlignNoForceStuffing(stream);
+
+    if (stream->searched_frame_boundary == 0)
+    {
+        PVLocateH263FrameBoundary(stream);
+    }
+
+    while (TRUE)
+    {
+        status = BitstreamCheckEndBuffer(stream);
+        if (status == PV_END_OF_VOP) return PV_END_OF_VOP;
+
+        if (stream->incnt < 24)
+        {
+            status = BitstreamFillCache(stream);
+        }
+
+
+        byte1 = (stream->curr_word << 8) >> 24;
+        if (byte1 == 0)
+        {
+            byte2 = (stream->curr_word << 16) >> 24;
+            if (byte2)
+            {
+                tmpvar = byte2 >> 4;
+
+                if (tmpvar)
+                {
+                    shift = 9 - firstOne[tmpvar];
+                }
+                else
+                {
+                    shift = 5 - firstOne[byte2];
+                }
+                byte0 = stream->curr_word >> 24;
+                if ((byte0 & msk[shift]) == 0)
+                {
+                    PV_BitstreamFlushBits(stream, 8 - shift);
+                    return PV_SUCCESS;
+                }
+                PV_BitstreamFlushBits(stream, 8);    /* third_byte is not zero */
+            }
+        }
+
+        PV_BitstreamFlushBits(stream, 8);
+    }
+}
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/bitstream.h b/media/libstagefright/codecs/m4v_h263/dec/src/bitstream.h
new file mode 100644
index 0000000..d52fa873
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/bitstream.h
@@ -0,0 +1,174 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+
+#ifndef _BITSTREAM_D_H_
+#define _BITSTREAM_D_H_
+
+#include "mp4dec_lib.h" /* video decoder function prototypes */
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+#define PV_BS_INLINE  /* support inline bitstream functions */
+
+#define PV_BitstreamFlushBits(A,B)  {(A)->bitcnt += (B); (A)->incnt -= (B); (A)->curr_word <<= (B);}
+
+    PV_STATUS BitstreamFillBuffer(BitstreamDecVideo *stream);
+    PV_STATUS BitstreamFillCache(BitstreamDecVideo *stream);
+    void BitstreamReset(BitstreamDecVideo *stream, uint8 *buffer, int32 buffer_size);
+    int BitstreamOpen(BitstreamDecVideo *stream, int layer);
+    void BitstreamClose(BitstreamDecVideo *stream);
+
+    PV_STATUS BitstreamShowBits32(BitstreamDecVideo *stream, int nbits, uint32 *code);
+    uint32 BitstreamReadBits32(BitstreamDecVideo *stream, int nbits);
+
+    uint BitstreamReadBits16(BitstreamDecVideo *stream, int nbits);
+    uint BitstreamRead1Bits(BitstreamDecVideo *stream);
+#ifndef PV_BS_INLINE
+    PV_STATUS BitstreamShowBits16(BitstreamDecVideo *stream, int nbits, uint *code);
+    PV_STATUS BitstreamShow15Bits(BitstreamDecVideo *stream, uint *code);
+    PV_STATUS BitstreamShow13Bits(BitstreamDecVideo *stream, uint *code);
+    uint BitstreamReadBits16_INLINE(BitstreamDecVideo *stream, int nbits);
+    uint BitstreamRead1Bits_INLINE(BitstreamDecVideo *stream);
+#else
+    __inline PV_STATUS BitstreamShowBits16(BitstreamDecVideo *stream, int nbits, uint *code)
+    {
+        PV_STATUS status = PV_SUCCESS;
+
+
+        if (stream->incnt < nbits)
+        {
+            /* frame-based decoding */
+            status = BitstreamFillCache(stream);
+        }
+
+        *code = stream->curr_word >> (32 - nbits);
+        return status;
+    }
+
+
+
+    /* =========================================================================*/
+    __inline PV_STATUS BitstreamShow15Bits(BitstreamDecVideo *stream, uint *code)
+    {
+        PV_STATUS status = PV_SUCCESS;
+
+        if (stream->incnt < 15)
+        {
+            /* frame-based decoding */
+            status = BitstreamFillCache(stream);
+        }
+        *code = stream->curr_word >> 17;
+        return status;
+    }
+
+
+    __inline PV_STATUS BitstreamShow13Bits(BitstreamDecVideo *stream, uint *code)
+    {
+        PV_STATUS status = PV_SUCCESS;
+
+        if (stream->incnt < 13)
+        {
+            /* frame-based decoding */
+            status = BitstreamFillCache(stream);
+        }
+        *code = stream->curr_word >> 19;
+        return status;
+    }
+    __inline uint BitstreamReadBits16_INLINE(BitstreamDecVideo *stream, int nbits)
+    {
+        uint code;
+
+        if (stream->incnt < nbits)
+        {
+            /* frame-based decoding */
+            BitstreamFillCache(stream);
+        }
+        code = stream->curr_word >> (32 - nbits);
+        PV_BitstreamFlushBits(stream, nbits);
+        return code;
+    }
+
+
+    __inline uint BitstreamRead1Bits_INLINE(BitstreamDecVideo *stream)
+    {
+        uint    code;
+
+        if (stream->incnt < 1)
+        {
+            /* frame-based decoding */
+            BitstreamFillCache(stream);
+        }
+        code = stream->curr_word >> 31;
+        PV_BitstreamFlushBits(stream, 1);
+
+        return code;
+    }
+
+#endif
+
+
+
+
+
+
+
+    PV_STATUS PV_BitstreamFlushBitsCheck(BitstreamDecVideo *stream, int nbits);
+
+    uint32 BitstreamReadBits32HC(BitstreamDecVideo *stream);
+    PV_STATUS BitstreamShowBits32HC(BitstreamDecVideo *stream, uint32 *code);
+
+
+
+    PV_STATUS BitstreamCheckEndBuffer(BitstreamDecVideo *stream);
+
+    PV_STATUS PV_BitstreamShowBitsByteAlign(BitstreamDecVideo *stream, int nbits, uint32 *code);
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    PV_STATUS PV_BitstreamShowBitsByteAlignNoForceStuffing(BitstreamDecVideo *stream, int nbits, uint32 *code);
+    Bool validStuffing_h263(BitstreamDecVideo *stream);
+    PV_STATUS quickSearchH263SliceHeader(BitstreamDecVideo *stream);
+#endif
+    PV_STATUS PV_BitstreamByteAlign(BitstreamDecVideo *stream);
+    PV_STATUS BitstreamByteAlignNoForceStuffing(BitstreamDecVideo *stream);
+    Bool validStuffing(BitstreamDecVideo *stream);
+
+    PV_STATUS movePointerTo(BitstreamDecVideo *stream, int32 pos);
+    PV_STATUS PVSearchNextM4VFrame(BitstreamDecVideo *stream);
+    PV_STATUS PVSearchNextH263Frame(BitstreamDecVideo *stream);
+    PV_STATUS quickSearchVideoPacketHeader(BitstreamDecVideo *stream, int marker_length);
+
+
+    /* for error concealment & soft-decoding */
+    void PVLocateM4VFrameBoundary(BitstreamDecVideo *stream);
+    void PVSearchH263FrameBoundary(BitstreamDecVideo *stream);
+
+    PV_STATUS quickSearchMotionMarker(BitstreamDecVideo *stream);
+    PV_STATUS quickSearchDCM(BitstreamDecVideo *stream);
+    PV_STATUS quickSearchGOBHeader(BitstreamDecVideo *stream);
+    void BitstreamShowBuffer(BitstreamDecVideo *stream, int32 startbit, int32 endbit, uint8 *bitBfr);
+
+    /*  10/8/98 New prototyps. */
+    int32 getPointer(BitstreamDecVideo *stream);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus  */
+
+#endif /* _BITSTREAM_D_H_ */
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/block_idct.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/block_idct.cpp
new file mode 100644
index 0000000..a75483a
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/block_idct.cpp
@@ -0,0 +1,911 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+    [input_variable_name] = [description of the input to module, its type
+                 definition, and length (when applicable)]
+
+ Local Stores/Buffers/Pointers Needed:
+    [local_store_name] = [description of the local store, its type
+                  definition, and length (when applicable)]
+    [local_buffer_name] = [description of the local buffer, its type
+                   definition, and length (when applicable)]
+    [local_ptr_name] = [description of the local pointer, its type
+                definition, and length (when applicable)]
+
+ Global Stores/Buffers/Pointers Needed:
+    [global_store_name] = [description of the global store, its type
+                   definition, and length (when applicable)]
+    [global_buffer_name] = [description of the global buffer, its type
+                definition, and length (when applicable)]
+    [global_ptr_name] = [description of the global pointer, its type
+                 definition, and length (when applicable)]
+
+ Outputs:
+    [return_variable_name] = [description of data/pointer returned
+                  by module, its type definition, and length
+                  (when applicable)]
+
+ Pointers and Buffers Modified:
+    [variable_bfr_ptr] points to the [describe where the
+      variable_bfr_ptr points to, its type definition, and length
+      (when applicable)]
+    [variable_bfr] contents are [describe the new contents of
+      variable_bfr]
+
+ Local Stores Modified:
+    [local_store_name] = [describe new contents, its type
+                  definition, and length (when applicable)]
+
+ Global Stores Modified:
+    [global_store_name] = [describe new contents, its type
+                   definition, and length (when applicable)]
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+------------------------------------------------------------------------------
+ REQUIREMENTS
+
+------------------------------------------------------------------------------
+ REFERENCES
+
+------------------------------------------------------------------------------
+ PSEUDO-CODE
+
+------------------------------------------------------------------------------
+ RESOURCES USED
+   When the code is written for a specific target processor the
+     the resources used should be documented below.
+
+ STACK USAGE: [stack count for this module] + [variable to represent
+          stack usage for each subroutine called]
+
+     where: [stack usage variable] = stack usage for [subroutine
+         name] (see [filename].ext)
+
+ DATA MEMORY USED: x words
+
+ PROGRAM MEMORY USED: x words
+
+ CLOCK CYCLES: [cycle count equation for this module] + [variable
+           used to represent cycle count for each subroutine
+           called]
+
+     where: [cycle count variable] = cycle count for [subroutine
+        name] (see [filename].ext)
+
+------------------------------------------------------------------------------
+*/
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4dec_lib.h"
+#include "idct.h"
+#include "motion_comp.h"
+
+#define OSCL_DISABLE_WARNING_CONV_POSSIBLE_LOSS_OF_DATA
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+/* private prototypes */
+static void idctrow(int16 *blk, uint8 *pred, uint8 *dst, int width);
+static void idctrow_intra(int16 *blk, PIXEL *, int width);
+static void idctcol(int16 *blk);
+
+#ifdef FAST_IDCT
+// mapping from nz_coefs to functions to be used
+
+
+// ARM4 does not allow global data when they are not constant hence
+// an array of function pointers cannot be considered as array of constants
+// (actual addresses are only known when the dll is loaded).
+// So instead of arrays of function pointers, we'll store here
+// arrays of rows or columns and then call the idct function
+// corresponding to such the row/column number:
+
+
+static void (*const idctcolVCA[10][4])(int16*) =
+{
+    {&idctcol1, &idctcol0, &idctcol0, &idctcol0},
+    {&idctcol1, &idctcol1, &idctcol0, &idctcol0},
+    {&idctcol2, &idctcol1, &idctcol0, &idctcol0},
+    {&idctcol3, &idctcol1, &idctcol0, &idctcol0},
+    {&idctcol3, &idctcol2, &idctcol0, &idctcol0},
+    {&idctcol3, &idctcol2, &idctcol1, &idctcol0},
+    {&idctcol3, &idctcol2, &idctcol1, &idctcol1},
+    {&idctcol3, &idctcol2, &idctcol2, &idctcol1},
+    {&idctcol3, &idctcol3, &idctcol2, &idctcol1},
+    {&idctcol4, &idctcol3, &idctcol2, &idctcol1}
+};
+
+
+static void (*const idctrowVCA[10])(int16*, uint8*, uint8*, int) =
+{
+    &idctrow1,
+    &idctrow2,
+    &idctrow2,
+    &idctrow2,
+    &idctrow2,
+    &idctrow3,
+    &idctrow4,
+    &idctrow4,
+    &idctrow4,
+    &idctrow4
+};
+
+
+static void (*const idctcolVCA2[16])(int16*) =
+{
+    &idctcol0, &idctcol4, &idctcol3, &idctcol4,
+    &idctcol2, &idctcol4, &idctcol3, &idctcol4,
+    &idctcol1, &idctcol4, &idctcol3, &idctcol4,
+    &idctcol2, &idctcol4, &idctcol3, &idctcol4
+};
+
+static void (*const idctrowVCA2[8])(int16*, uint8*, uint8*, int) =
+{
+    &idctrow1, &idctrow4, &idctrow3, &idctrow4,
+    &idctrow2, &idctrow4, &idctrow3, &idctrow4
+};
+
+static void (*const idctrowVCA_intra[10])(int16*, PIXEL *, int) =
+{
+    &idctrow1_intra,
+    &idctrow2_intra,
+    &idctrow2_intra,
+    &idctrow2_intra,
+    &idctrow2_intra,
+    &idctrow3_intra,
+    &idctrow4_intra,
+    &idctrow4_intra,
+    &idctrow4_intra,
+    &idctrow4_intra
+};
+
+static void (*const idctrowVCA2_intra[8])(int16*, PIXEL *, int) =
+{
+    &idctrow1_intra, &idctrow4_intra, &idctrow3_intra, &idctrow4_intra,
+    &idctrow2_intra, &idctrow4_intra, &idctrow3_intra, &idctrow4_intra
+};
+#endif
+
+/*----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+void MBlockIDCT(VideoDecData *video)
+{
+    Vop *currVop = video->currVop;
+    MacroBlock *mblock = video->mblock;
+    PIXEL *c_comp;
+    PIXEL *cu_comp;
+    PIXEL *cv_comp;
+    int x_pos = video->mbnum_col;
+    int y_pos = video->mbnum_row;
+    int width, width_uv;
+    int32 offset;
+    width = video->width;
+    width_uv = width >> 1;
+    offset = (int32)(y_pos << 4) * width + (x_pos << 4);
+
+    c_comp  = currVop->yChan + offset;
+    cu_comp = currVop->uChan + (offset >> 2) + (x_pos << 2);
+    cv_comp = currVop->vChan + (offset >> 2) + (x_pos << 2);
+
+    BlockIDCT_intra(mblock, c_comp, 0, width);
+    BlockIDCT_intra(mblock, c_comp + 8, 1, width);
+    BlockIDCT_intra(mblock, c_comp + (width << 3), 2, width);
+    BlockIDCT_intra(mblock, c_comp + (width << 3) + 8, 3, width);
+    BlockIDCT_intra(mblock, cu_comp, 4, width_uv);
+    BlockIDCT_intra(mblock, cv_comp, 5, width_uv);
+}
+
+
+void BlockIDCT_intra(
+    MacroBlock *mblock, PIXEL *c_comp, int comp, int width)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int16 *coeff_in = mblock->block[comp];
+#ifdef INTEGER_IDCT
+#ifdef FAST_IDCT  /* VCA IDCT using nzcoefs and bitmaps*/
+    int i, bmapr;
+    int nz_coefs = mblock->no_coeff[comp];
+    uint8 *bitmapcol = mblock->bitmapcol[comp];
+    uint8 bitmaprow = mblock->bitmaprow[comp];
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    if (nz_coefs <= 10)
+    {
+        bmapr = (nz_coefs - 1);
+
+        (*(idctcolVCA[bmapr]))(coeff_in);
+        (*(idctcolVCA[bmapr][1]))(coeff_in + 1);
+        (*(idctcolVCA[bmapr][2]))(coeff_in + 2);
+        (*(idctcolVCA[bmapr][3]))(coeff_in + 3);
+
+        (*idctrowVCA_intra[nz_coefs-1])(coeff_in, c_comp, width);
+    }
+    else
+    {
+        i = 8;
+        while (i--)
+        {
+            bmapr = (int)bitmapcol[i];
+            if (bmapr)
+            {
+                if ((bmapr&0xf) == 0)         /*  07/18/01 */
+                {
+                    (*(idctcolVCA2[bmapr>>4]))(coeff_in + i);
+                }
+                else
+                {
+                    idctcol(coeff_in + i);
+                }
+            }
+        }
+        if ((bitmapcol[4] | bitmapcol[5] | bitmapcol[6] | bitmapcol[7]) == 0)
+        {
+            bitmaprow >>= 4;
+            (*(idctrowVCA2_intra[(int)bitmaprow]))(coeff_in, c_comp, width);
+        }
+        else
+        {
+            idctrow_intra(coeff_in, c_comp, width);
+        }
+    }
+#else
+    void idct_intra(int *block, uint8 *comp, int width);
+    idct_intra(coeff_in, c_comp, width);
+#endif
+#else
+    void idctref_intra(int *block, uint8 *comp, int width);
+    idctref_intra(coeff_in, c_comp, width);
+#endif
+
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+
+/*  08/04/05, no residue, just copy from pred to output */
+void Copy_Blk_to_Vop(uint8 *dst, uint8 *pred, int width)
+{
+    /* copy 4 bytes at a time */
+    width -= 4;
+    *((uint32*)dst) = *((uint32*)pred);
+    *((uint32*)(dst += 4)) = *((uint32*)(pred += 4));
+    *((uint32*)(dst += width)) = *((uint32*)(pred += 12));
+    *((uint32*)(dst += 4)) = *((uint32*)(pred += 4));
+    *((uint32*)(dst += width)) = *((uint32*)(pred += 12));
+    *((uint32*)(dst += 4)) = *((uint32*)(pred += 4));
+    *((uint32*)(dst += width)) = *((uint32*)(pred += 12));
+    *((uint32*)(dst += 4)) = *((uint32*)(pred += 4));
+    *((uint32*)(dst += width)) = *((uint32*)(pred += 12));
+    *((uint32*)(dst += 4)) = *((uint32*)(pred += 4));
+    *((uint32*)(dst += width)) = *((uint32*)(pred += 12));
+    *((uint32*)(dst += 4)) = *((uint32*)(pred += 4));
+    *((uint32*)(dst += width)) = *((uint32*)(pred += 12));
+    *((uint32*)(dst += 4)) = *((uint32*)(pred += 4));
+    *((uint32*)(dst += width)) = *((uint32*)(pred += 12));
+    *((uint32*)(dst += 4)) = *((uint32*)(pred += 4));
+
+    return ;
+}
+
+/*  08/04/05 compute IDCT and add prediction at the end  */
+void BlockIDCT(
+    uint8 *dst,  /* destination */
+    uint8 *pred, /* prediction block, pitch 16 */
+    int16   *coeff_in,  /* DCT data, size 64 */
+    int width, /* width of dst */
+    int nz_coefs,
+    uint8 *bitmapcol,
+    uint8 bitmaprow
+)
+{
+#ifdef INTEGER_IDCT
+#ifdef FAST_IDCT  /* VCA IDCT using nzcoefs and bitmaps*/
+    int i, bmapr;
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    if (nz_coefs <= 10)
+    {
+        bmapr = (nz_coefs - 1);
+        (*(idctcolVCA[bmapr]))(coeff_in);
+        (*(idctcolVCA[bmapr][1]))(coeff_in + 1);
+        (*(idctcolVCA[bmapr][2]))(coeff_in + 2);
+        (*(idctcolVCA[bmapr][3]))(coeff_in + 3);
+
+        (*idctrowVCA[nz_coefs-1])(coeff_in, pred, dst, width);
+        return ;
+    }
+    else
+    {
+        i = 8;
+
+        while (i--)
+        {
+            bmapr = (int)bitmapcol[i];
+            if (bmapr)
+            {
+                if ((bmapr&0xf) == 0)         /*  07/18/01 */
+                {
+                    (*(idctcolVCA2[bmapr>>4]))(coeff_in + i);
+                }
+                else
+                {
+                    idctcol(coeff_in + i);
+                }
+            }
+        }
+        if ((bitmapcol[4] | bitmapcol[5] | bitmapcol[6] | bitmapcol[7]) == 0)
+        {
+            (*(idctrowVCA2[bitmaprow>>4]))(coeff_in, pred, dst, width);
+        }
+        else
+        {
+            idctrow(coeff_in, pred, dst, width);
+        }
+        return ;
+    }
+#else // FAST_IDCT
+    void idct(int *block, uint8 *pred, uint8 *dst, int width);
+    idct(coeff_in, pred, dst, width);
+    return;
+#endif // FAST_IDCT
+#else // INTEGER_IDCT
+    void idctref(int *block, uint8 *pred, uint8 *dst, int width);
+    idctref(coeff_in, pred, dst, width);
+    return;
+#endif // INTEGER_IDCT
+
+}
+/*----------------------------------------------------------------------------
+;  End Function: block_idct
+----------------------------------------------------------------------------*/
+
+
+/****************************************************************************/
+
+/*
+------------------------------------------------------------------------------
+ FUNCTION NAME: idctrow
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS FOR idctrow
+
+ Inputs:
+    [input_variable_name] = [description of the input to module, its type
+                 definition, and length (when applicable)]
+
+ Local Stores/Buffers/Pointers Needed:
+    [local_store_name] = [description of the local store, its type
+                  definition, and length (when applicable)]
+    [local_buffer_name] = [description of the local buffer, its type
+                   definition, and length (when applicable)]
+    [local_ptr_name] = [description of the local pointer, its type
+                definition, and length (when applicable)]
+
+ Global Stores/Buffers/Pointers Needed:
+    [global_store_name] = [description of the global store, its type
+                   definition, and length (when applicable)]
+    [global_buffer_name] = [description of the global buffer, its type
+                definition, and length (when applicable)]
+    [global_ptr_name] = [description of the global pointer, its type
+                 definition, and length (when applicable)]
+
+ Outputs:
+    [return_variable_name] = [description of data/pointer returned
+                  by module, its type definition, and length
+                  (when applicable)]
+
+ Pointers and Buffers Modified:
+    [variable_bfr_ptr] points to the [describe where the
+      variable_bfr_ptr points to, its type definition, and length
+      (when applicable)]
+    [variable_bfr] contents are [describe the new contents of
+      variable_bfr]
+
+ Local Stores Modified:
+    [local_store_name] = [describe new contents, its type
+                  definition, and length (when applicable)]
+
+ Global Stores Modified:
+    [global_store_name] = [describe new contents, its type
+                   definition, and length (when applicable)]
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION FOR idctrow
+
+------------------------------------------------------------------------------
+ REQUIREMENTS FOR idctrow
+
+------------------------------------------------------------------------------
+ REFERENCES FOR idctrow
+
+------------------------------------------------------------------------------
+ PSEUDO-CODE FOR idctrow
+
+------------------------------------------------------------------------------
+ RESOURCES USED FOR idctrow
+   When the code is written for a specific target processor the
+     the resources used should be documented below.
+
+ STACK USAGE: [stack count for this module] + [variable to represent
+          stack usage for each subroutine called]
+
+     where: [stack usage variable] = stack usage for [subroutine
+         name] (see [filename].ext)
+
+ DATA MEMORY USED: x words
+
+ PROGRAM MEMORY USED: x words
+
+ CLOCK CYCLES: [cycle count equation for this module] + [variable
+           used to represent cycle count for each subroutine
+           called]
+
+     where: [cycle count variable] = cycle count for [subroutine
+        name] (see [filename].ext)
+
+------------------------------------------------------------------------------
+*/
+
+/*----------------------------------------------------------------------------
+; Function Code FOR idctrow
+----------------------------------------------------------------------------*/
+void idctrow(
+    int16 *blk, uint8 *pred, uint8 *dst, int width
+)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int32 x0, x1, x2, x3, x4, x5, x6, x7, x8;
+    int i = 8;
+    uint32 pred_word, dst_word;
+    int res, res2;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* row (horizontal) IDCT
+    *
+    * 7                       pi         1 dst[k] = sum c[l] * src[l] * cos( -- *
+    * ( k + - ) * l ) l=0                      8          2
+    *
+    * where: c[0]    = 128 c[1..7] = 128*sqrt(2) */
+
+    /* preset the offset, such that we can take advantage pre-offset addressing mode   */
+    width -= 4;
+    dst -= width;
+    pred -= 12;
+    blk -= 8;
+
+    while (i--)
+    {
+        x1 = (int32)blk[12] << 8;
+        blk[12] = 0;
+        x2 = blk[14];
+        blk[14] = 0;
+        x3 = blk[10];
+        blk[10] = 0;
+        x4 = blk[9];
+        blk[9] = 0;
+        x5 = blk[15];
+        blk[15] = 0;
+        x6 = blk[13];
+        blk[13] = 0;
+        x7 = blk[11];
+        blk[11] = 0;
+        x0 = ((*(blk += 8)) << 8) + 8192;
+        blk[0] = 0;   /* for proper rounding in the fourth stage */
+
+        /* first stage */
+        x8 = W7 * (x4 + x5) + 4;
+        x4 = (x8 + (W1 - W7) * x4) >> 3;
+        x5 = (x8 - (W1 + W7) * x5) >> 3;
+        x8 = W3 * (x6 + x7) + 4;
+        x6 = (x8 - (W3 - W5) * x6) >> 3;
+        x7 = (x8 - (W3 + W5) * x7) >> 3;
+
+        /* second stage */
+        x8 = x0 + x1;
+        x0 -= x1;
+        x1 = W6 * (x3 + x2) + 4;
+        x2 = (x1 - (W2 + W6) * x2) >> 3;
+        x3 = (x1 + (W2 - W6) * x3) >> 3;
+        x1 = x4 + x6;
+        x4 -= x6;
+        x6 = x5 + x7;
+        x5 -= x7;
+
+        /* third stage */
+        x7 = x8 + x3;
+        x8 -= x3;
+        x3 = x0 + x2;
+        x0 -= x2;
+        x2 = (181 * (x4 + x5) + 128) >> 8;
+        x4 = (181 * (x4 - x5) + 128) >> 8;
+
+        /* fourth stage */
+        pred_word = *((uint32*)(pred += 12)); /* read 4 bytes from pred */
+
+        res = (x7 + x1) >> 14;
+        ADD_AND_CLIP1(res);
+        res2 = (x3 + x2) >> 14;
+        ADD_AND_CLIP2(res2);
+        dst_word = (res2 << 8) | res;
+        res = (x0 + x4) >> 14;
+        ADD_AND_CLIP3(res);
+        dst_word |= (res << 16);
+        res = (x8 + x6) >> 14;
+        ADD_AND_CLIP4(res);
+        dst_word |= (res << 24);
+        *((uint32*)(dst += width)) = dst_word; /* save 4 bytes to dst */
+
+        pred_word = *((uint32*)(pred += 4)); /* read 4 bytes from pred */
+
+        res = (x8 - x6) >> 14;
+        ADD_AND_CLIP1(res);
+        res2 = (x0 - x4) >> 14;
+        ADD_AND_CLIP2(res2);
+        dst_word = (res2 << 8) | res;
+        res = (x3 - x2) >> 14;
+        ADD_AND_CLIP3(res);
+        dst_word |= (res << 16);
+        res = (x7 - x1) >> 14;
+        ADD_AND_CLIP4(res);
+        dst_word |= (res << 24);
+        *((uint32*)(dst += 4)) = dst_word; /* save 4 bytes to dst */
+    }
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+
+void idctrow_intra(
+    int16 *blk, PIXEL *comp, int width
+)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int32 x0, x1, x2, x3, x4, x5, x6, x7, x8, temp;
+    int i = 8;
+    int offset = width;
+    int32 word;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* row (horizontal) IDCT
+    *
+    * 7                       pi         1 dst[k] = sum c[l] * src[l] * cos( -- *
+    * ( k + - ) * l ) l=0                      8          2
+    *
+    * where: c[0]    = 128 c[1..7] = 128*sqrt(2) */
+    while (i--)
+    {
+        x1 = (int32)blk[4] << 8;
+        blk[4] = 0;
+        x2 = blk[6];
+        blk[6] = 0;
+        x3 = blk[2];
+        blk[2] = 0;
+        x4 = blk[1];
+        blk[1] = 0;
+        x5 = blk[7];
+        blk[7] = 0;
+        x6 = blk[5];
+        blk[5] = 0;
+        x7 = blk[3];
+        blk[3] = 0;
+#ifndef FAST_IDCT
+        /* shortcut */  /* covered by idctrow1  01/9/2001 */
+        if (!(x1 | x2 | x3 | x4 | x5 | x6 | x7))
+        {
+            blk[0] = blk[1] = blk[2] = blk[3] = blk[4] = blk[5] = blk[6] = blk[7] = (blk[0] + 32) >> 6;
+            return;
+        }
+#endif
+        x0 = ((int32)blk[0] << 8) + 8192;
+        blk[0] = 0;  /* for proper rounding in the fourth stage */
+
+        /* first stage */
+        x8 = W7 * (x4 + x5) + 4;
+        x4 = (x8 + (W1 - W7) * x4) >> 3;
+        x5 = (x8 - (W1 + W7) * x5) >> 3;
+        x8 = W3 * (x6 + x7) + 4;
+        x6 = (x8 - (W3 - W5) * x6) >> 3;
+        x7 = (x8 - (W3 + W5) * x7) >> 3;
+
+        /* second stage */
+        x8 = x0 + x1;
+        x0 -= x1;
+        x1 = W6 * (x3 + x2) + 4;
+        x2 = (x1 - (W2 + W6) * x2) >> 3;
+        x3 = (x1 + (W2 - W6) * x3) >> 3;
+        x1 = x4 + x6;
+        x4 -= x6;
+        x6 = x5 + x7;
+        x5 -= x7;
+
+        /* third stage */
+        x7 = x8 + x3;
+        x8 -= x3;
+        x3 = x0 + x2;
+        x0 -= x2;
+        x2 = (181 * (x4 + x5) + 128) >> 8;
+        x4 = (181 * (x4 - x5) + 128) >> 8;
+
+        /* fourth stage */
+        word = ((x7 + x1) >> 14);
+        CLIP_RESULT(word)
+
+        temp = ((x3 + x2) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 8);
+
+        temp = ((x0 + x4) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 16);
+
+        temp = ((x8 + x6) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 24);
+        *((int32*)(comp)) = word;
+
+        word = ((x8 - x6) >> 14);
+        CLIP_RESULT(word)
+
+        temp = ((x0 - x4) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 8);
+
+        temp = ((x3 - x2) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 16);
+
+        temp = ((x7 - x1) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 24);
+        *((int32*)(comp + 4)) = word;
+        comp += offset;
+
+        blk += B_SIZE;
+    }
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+
+/*----------------------------------------------------------------------------
+; End Function: idctrow
+----------------------------------------------------------------------------*/
+
+
+/****************************************************************************/
+
+/*
+------------------------------------------------------------------------------
+ FUNCTION NAME: idctcol
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS FOR idctcol
+
+ Inputs:
+    [input_variable_name] = [description of the input to module, its type
+                 definition, and length (when applicable)]
+
+ Local Stores/Buffers/Pointers Needed:
+    [local_store_name] = [description of the local store, its type
+                  definition, and length (when applicable)]
+    [local_buffer_name] = [description of the local buffer, its type
+                   definition, and length (when applicable)]
+    [local_ptr_name] = [description of the local pointer, its type
+                definition, and length (when applicable)]
+
+ Global Stores/Buffers/Pointers Needed:
+    [global_store_name] = [description of the global store, its type
+                   definition, and length (when applicable)]
+    [global_buffer_name] = [description of the global buffer, its type
+                definition, and length (when applicable)]
+    [global_ptr_name] = [description of the global pointer, its type
+                 definition, and length (when applicable)]
+
+ Outputs:
+    [return_variable_name] = [description of data/pointer returned
+                  by module, its type definition, and length
+                  (when applicable)]
+
+ Pointers and Buffers Modified:
+    [variable_bfr_ptr] points to the [describe where the
+      variable_bfr_ptr points to, its type definition, and length
+      (when applicable)]
+    [variable_bfr] contents are [describe the new contents of
+      variable_bfr]
+
+ Local Stores Modified:
+    [local_store_name] = [describe new contents, its type
+                  definition, and length (when applicable)]
+
+ Global Stores Modified:
+    [global_store_name] = [describe new contents, its type
+                   definition, and length (when applicable)]
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION FOR idctcol
+
+------------------------------------------------------------------------------
+ REQUIREMENTS FOR idctcol
+
+------------------------------------------------------------------------------
+ REFERENCES FOR idctcol
+
+------------------------------------------------------------------------------
+ PSEUDO-CODE FOR idctcol
+
+------------------------------------------------------------------------------
+ RESOURCES USED FOR idctcol
+   When the code is written for a specific target processor the
+     the resources used should be documented below.
+
+ STACK USAGE: [stack count for this module] + [variable to represent
+          stack usage for each subroutine called]
+
+     where: [stack usage variable] = stack usage for [subroutine
+         name] (see [filename].ext)
+
+ DATA MEMORY USED: x words
+
+ PROGRAM MEMORY USED: x words
+
+ CLOCK CYCLES: [cycle count equation for this module] + [variable
+           used to represent cycle count for each subroutine
+           called]
+
+     where: [cycle count variable] = cycle count for [subroutine
+        name] (see [filename].ext)
+
+------------------------------------------------------------------------------
+*/
+
+/*----------------------------------------------------------------------------
+; Function Code FOR idctcol
+----------------------------------------------------------------------------*/
+void idctcol(
+    int16 *blk
+)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int32 x0, x1, x2, x3, x4, x5, x6, x7, x8;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* column (vertical) IDCT
+    *
+    * 7                         pi         1 dst[8*k] = sum c[l] * src[8*l] *
+    * cos( -- * ( k + - ) * l ) l=0                        8          2
+    *
+    * where: c[0]    = 1/1024 c[1..7] = (1/1024)*sqrt(2) */
+    x1 = (int32)blk[32] << 11;
+    x2 = blk[48];
+    x3 = blk[16];
+    x4 = blk[8];
+    x5 = blk[56];
+    x6 = blk[40];
+    x7 = blk[24];
+#ifndef FAST_IDCT
+    /* shortcut */        /* covered by idctcolumn1  01/9/2001 */
+    if (!(x1 | x2 | x3 | x4 | x5 | x6 | x7))
+    {
+        blk[0] = blk[8] = blk[16] = blk[24] = blk[32] = blk[40] = blk[48] = blk[56]
+                                              = blk[0] << 3;
+        return;
+    }
+#endif
+
+    x0 = ((int32)blk[0] << 11) + 128;
+
+    /* first stage */
+    x8 = W7 * (x4 + x5);
+    x4 = x8 + (W1 - W7) * x4;
+    x5 = x8 - (W1 + W7) * x5;
+    x8 = W3 * (x6 + x7);
+    x6 = x8 - (W3 - W5) * x6;
+    x7 = x8 - (W3 + W5) * x7;
+
+    /* second stage */
+    x8 = x0 + x1;
+    x0 -= x1;
+    x1 = W6 * (x3 + x2);
+    x2 = x1 - (W2 + W6) * x2;
+    x3 = x1 + (W2 - W6) * x3;
+    x1 = x4 + x6;
+    x4 -= x6;
+    x6 = x5 + x7;
+    x5 -= x7;
+
+    /* third stage */
+    x7 = x8 + x3;
+    x8 -= x3;
+    x3 = x0 + x2;
+    x0 -= x2;
+    x2 = (181 * (x4 + x5) + 128) >> 8;
+    x4 = (181 * (x4 - x5) + 128) >> 8;
+
+    /* fourth stage */
+    blk[0]    = (x7 + x1) >> 8;
+    blk[8] = (x3 + x2) >> 8;
+    blk[16] = (x0 + x4) >> 8;
+    blk[24] = (x8 + x6) >> 8;
+    blk[32] = (x8 - x6) >> 8;
+    blk[40] = (x0 - x4) >> 8;
+    blk[48] = (x3 - x2) >> 8;
+    blk[56] = (x7 - x1) >> 8;
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+/*----------------------------------------------------------------------------
+;  End Function: idctcol
+----------------------------------------------------------------------------*/
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/cal_dc_scaler.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/cal_dc_scaler.cpp
new file mode 100644
index 0000000..85889d3
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/cal_dc_scaler.cpp
@@ -0,0 +1,182 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+    [input_variable_name] = [description of the input to module, its type
+                 definition, and length (when applicable)]
+
+ Local Stores/Buffers/Pointers Needed:
+    [local_store_name] = [description of the local store, its type
+                  definition, and length (when applicable)]
+    [local_buffer_name] = [description of the local buffer, its type
+                   definition, and length (when applicable)]
+    [local_ptr_name] = [description of the local pointer, its type
+                definition, and length (when applicable)]
+
+ Global Stores/Buffers/Pointers Needed:
+    [global_store_name] = [description of the global store, its type
+                   definition, and length (when applicable)]
+    [global_buffer_name] = [description of the global buffer, its type
+                definition, and length (when applicable)]
+    [global_ptr_name] = [description of the global pointer, its type
+                 definition, and length (when applicable)]
+
+ Outputs:
+    [return_variable_name] = [description of data/pointer returned
+                  by module, its type definition, and length
+                  (when applicable)]
+
+ Pointers and Buffers Modified:
+    [variable_bfr_ptr] points to the [describe where the
+      variable_bfr_ptr points to, its type definition, and length
+      (when applicable)]
+    [variable_bfr] contents are [describe the new contents of
+      variable_bfr]
+
+ Local Stores Modified:
+    [local_store_name] = [describe new contents, its type
+                  definition, and length (when applicable)]
+
+ Global Stores Modified:
+    [global_store_name] = [describe new contents, its type
+                   definition, and length (when applicable)]
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+ This module calculates the DC quantization scale according
+ to the incoming Q and type.
+
+------------------------------------------------------------------------------
+ REQUIREMENTS
+
+ [List requirements to be satisfied by this module.]
+
+------------------------------------------------------------------------------
+ REFERENCES
+
+ [List all references used in designing this module.]
+
+------------------------------------------------------------------------------
+ PSEUDO-CODE
+
+------------------------------------------------------------------------------
+ RESOURCES USED
+   When the code is written for a specific target processor the
+     the resources used should be documented below.
+
+ STACK USAGE: [stack count for this module] + [variable to represent
+          stack usage for each subroutine called]
+
+     where: [stack usage variable] = stack usage for [subroutine
+         name] (see [filename].ext)
+
+ DATA MEMORY USED: x words
+
+ PROGRAM MEMORY USED: x words
+
+ CLOCK CYCLES: [cycle count equation for this module] + [variable
+           used to represent cycle count for each subroutine
+           called]
+
+     where: [cycle count variable] = cycle count for [subroutine
+        name] (see [filename].ext)
+
+------------------------------------------------------------------------------
+*/
+
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include    "mp4dec_lib.h"
+#include    "vlc_decode.h"
+#include    "bitstream.h"
+#include    "zigzag.h"
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+int cal_dc_scaler(
+    int QP,
+    int type)
+{
+
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int dc_scaler;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    if (type == LUMINANCE_DC_TYPE)
+    {
+        if (QP > 0 && QP < 5) dc_scaler = 8;
+        else if (QP > 4 && QP < 9) dc_scaler = 2 * QP;
+        else if (QP > 8 && QP < 25) dc_scaler = QP + 8;
+        else dc_scaler = 2 * QP - 16;
+    }
+    else /* if (type == CHROMINANCE_DC_TYPE), there is no other types.  */
+    {
+        if (QP > 0 && QP < 5) dc_scaler = 8;
+        else if (QP > 4 && QP < 25) dc_scaler = (QP + 13) >> 1;
+        else dc_scaler = QP - 6;
+    }
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return dc_scaler;
+}
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/chv_filter.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/chv_filter.cpp
new file mode 100644
index 0000000..6593b48
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/chv_filter.cpp
@@ -0,0 +1,654 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+    [input_variable_name] = [description of the input to module, its type
+                 definition, and length (when applicable)]
+
+ Local Stores/Buffers/Pointers Needed:
+    [local_store_name] = [description of the local store, its type
+                  definition, and length (when applicable)]
+    [local_buffer_name] = [description of the local buffer, its type
+                   definition, and length (when applicable)]
+    [local_ptr_name] = [description of the local pointer, its type
+                definition, and length (when applicable)]
+
+ Global Stores/Buffers/Pointers Needed:
+    [global_store_name] = [description of the global store, its type
+                   definition, and length (when applicable)]
+    [global_buffer_name] = [description of the global buffer, its type
+                definition, and length (when applicable)]
+    [global_ptr_name] = [description of the global pointer, its type
+                 definition, and length (when applicable)]
+
+ Outputs:
+    [return_variable_name] = [description of data/pointer returned
+                  by module, its type definition, and length
+                  (when applicable)]
+
+ Pointers and Buffers Modified:
+    [variable_bfr_ptr] points to the [describe where the
+      variable_bfr_ptr points to, its type definition, and length
+      (when applicable)]
+    [variable_bfr] contents are [describe the new contents of
+      variable_bfr]
+
+ Local Stores Modified:
+    [local_store_name] = [describe new contents, its type
+                  definition, and length (when applicable)]
+
+ Global Stores Modified:
+    [global_store_name] = [describe new contents, its type
+                   definition, and length (when applicable)]
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+   For fast Deblock filtering
+   Newer version (macroblock based processing)
+
+------------------------------------------------------------------------------
+ REQUIREMENTS
+
+ [List requirements to be satisfied by this module.]
+
+------------------------------------------------------------------------------
+ REFERENCES
+
+ [List all references used in designing this module.]
+
+------------------------------------------------------------------------------
+ PSEUDO-CODE
+
+------------------------------------------------------------------------------
+ RESOURCES USED
+   When the code is written for a specific target processor the
+     the resources used should be documented below.
+
+ STACK USAGE: [stack count for this module] + [variable to represent
+          stack usage for each subroutine called]
+
+     where: [stack usage variable] = stack usage for [subroutine
+         name] (see [filename].ext)
+
+ DATA MEMORY USED: x words
+
+ PROGRAM MEMORY USED: x words
+
+ CLOCK CYCLES: [cycle count equation for this module] + [variable
+           used to represent cycle count for each subroutine
+           called]
+
+     where: [cycle count variable] = cycle count for [subroutine
+        name] (see [filename].ext)
+
+------------------------------------------------------------------------------
+*/
+
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include    "mp4dec_lib.h"
+#include    "post_proc.h"
+
+#define OSCL_DISABLE_WARNING_CONV_POSSIBLE_LOSS_OF_DATA
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+//#define FILTER_LEN_8
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+
+----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+#ifdef PV_POSTPROC_ON
+
+/*************************************************************************
+    Function prototype : void CombinedHorzVertFilter(   uint8 *rec,
+                                                        int width,
+                                                        int height,
+                                                        int *QP_store,
+                                                        int chr,
+                                                        uint8 *pp_mod)
+    Parameters  :
+        rec     :   pointer to the decoded frame buffer.
+        width   :   width of decoded frame.
+        height  :   height of decoded frame
+        QP_store:   pointer to the array of QP corresponding to the decoded frame.
+                    It had only one value for each MB.
+        chr     :   luma or color indication
+                    == 0 luma
+                    == 1 color
+        pp_mod  :   The semphore used for deblocking
+
+    Remark      :   The function do the deblocking on decoded frames.
+                    First based on the semaphore info., it is divided into hard and soft filtering.
+                    To differentiate real and fake edge, it then check the difference with QP to
+                    decide whether to do the filtering or not.
+
+*************************************************************************/
+
+
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+void CombinedHorzVertFilter(
+    uint8 *rec,
+    int width,
+    int height,
+    int16 *QP_store,
+    int chr,
+    uint8 *pp_mod)
+{
+
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int br, bc, mbr, mbc;
+    int QP = 1;
+    uint8 *ptr, *ptr_e;
+    int pp_w, pp_h;
+    int brwidth;
+
+    int jVal0, jVal1, jVal2;
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    pp_w = (width >> 3);
+    pp_h = (height >> 3);
+
+    for (mbr = 0; mbr < pp_h; mbr += 2)         /* row of blocks */
+    {
+        brwidth = mbr * pp_w;               /* number of blocks above current block row */
+        for (mbc = 0; mbc < pp_w; mbc += 2)     /* col of blocks */
+        {
+            if (!chr)
+                QP = QP_store[(brwidth>>2) + (mbc>>1)]; /* QP is per MB based value */
+
+            /********* for each block **************/
+            /****************** Horiz. Filtering ********************/
+            for (br = mbr + 1; br < mbr + 3; br++)  /* 2x2 blocks */
+            {
+                brwidth += pp_w;                    /* number of blocks above & left current block row */
+                /* the profile on ARM920T shows separate these two boundary check is faster than combine them */
+                if (br < pp_h)                  /* boundary : don't do it on the lowest row block */
+                    for (bc = mbc; bc < mbc + 2; bc++)
+                    {
+                        /****** check boundary for deblocking ************/
+                        if (bc < pp_w)              /* boundary : don't do it on the most right col block */
+                        {
+                            ptr = rec + (brwidth << 6) + (bc << 3);
+                            jVal0 = brwidth + bc;
+                            if (chr)    QP = QP_store[jVal0];
+
+                            ptr_e = ptr + 8;        /* pointer to where the loop ends */
+
+                            if (((pp_mod[jVal0]&0x02)) && ((pp_mod[jVal0-pp_w]&0x02)))
+                            {
+                                /* Horiz Hard filter */
+                                do
+                                {
+                                    jVal0 = *(ptr - width);     /* C */
+                                    jVal1 = *ptr;               /* D */
+                                    jVal2 = jVal1 - jVal0;
+
+                                    if (((jVal2 > 0) && (jVal2 < (QP << 1)))
+                                            || ((jVal2 < 0) && (jVal2 > -(QP << 1)))) /* (D-C) compared with 2QP */
+                                    {
+                                        /* differentiate between real and fake edge */
+                                        jVal0 = ((jVal0 + jVal1) >> 1);     /* (D+C)/2 */
+                                        *(ptr - width) = (uint8)(jVal0);    /*  C */
+                                        *ptr = (uint8)(jVal0);          /*  D */
+
+                                        jVal0 = *(ptr - (width << 1));      /* B */
+                                        jVal1 = *(ptr + width);         /* E */
+                                        jVal2 = jVal1 - jVal0;      /* E-B */
+
+                                        if (jVal2 > 0)
+                                        {
+                                            jVal0 += ((jVal2 + 3) >> 2);
+                                            jVal1 -= ((jVal2 + 3) >> 2);
+                                            *(ptr - (width << 1)) = (uint8)jVal0;       /*  store B */
+                                            *(ptr + width) = (uint8)jVal1;          /* store E */
+                                        }
+                                        else if (jVal2)
+                                        {
+                                            jVal0 -= ((3 - jVal2) >> 2);
+                                            jVal1 += ((3 - jVal2) >> 2);
+                                            *(ptr - (width << 1)) = (uint8)jVal0;       /*  store B */
+                                            *(ptr + width) = (uint8)jVal1;          /* store E */
+                                        }
+
+                                        jVal0 = *(ptr - (width << 1) - width);  /* A */
+                                        jVal1 = *(ptr + (width << 1));      /* F */
+                                        jVal2 = jVal1 - jVal0;              /* (F-A) */
+
+                                        if (jVal2 > 0)
+                                        {
+                                            jVal0 += ((jVal2 + 7) >> 3);
+                                            jVal1 -= ((jVal2 + 7) >> 3);
+                                            *(ptr - (width << 1) - width) = (uint8)(jVal0);
+                                            *(ptr + (width << 1)) = (uint8)(jVal1);
+                                        }
+                                        else if (jVal2)
+                                        {
+                                            jVal0 -= ((7 - jVal2) >> 3);
+                                            jVal1 += ((7 - jVal2) >> 3);
+                                            *(ptr - (width << 1) - width) = (uint8)(jVal0);
+                                            *(ptr + (width << 1)) = (uint8)(jVal1);
+                                        }
+                                    }/* a3_0 > 2QP */
+                                }
+                                while (++ptr < ptr_e);
+                            }
+                            else   /* Horiz soft filter*/
+                            {
+                                do
+                                {
+                                    jVal0 = *(ptr - width); /* B */
+                                    jVal1 = *ptr;           /* C */
+                                    jVal2 = jVal1 - jVal0;  /* C-B */
+
+                                    if (((jVal2 > 0) && (jVal2 < (QP)))
+                                            || ((jVal2 < 0) && (jVal2 > -(QP)))) /* (C-B) compared with QP */
+                                    {
+
+                                        jVal0 = ((jVal0 + jVal1) >> 1);     /* (B+C)/2 cannot overflow; ceil() */
+                                        *(ptr - width) = (uint8)(jVal0);    /* B = (B+C)/2 */
+                                        *ptr = (uint8)jVal0;            /* C = (B+C)/2 */
+
+                                        jVal0 = *(ptr - (width << 1));      /* A */
+                                        jVal1 = *(ptr + width);         /* D */
+                                        jVal2 = jVal1 - jVal0;          /* D-A */
+
+
+                                        if (jVal2 > 0)
+                                        {
+                                            jVal1 -= ((jVal2 + 7) >> 3);
+                                            jVal0 += ((jVal2 + 7) >> 3);
+                                            *(ptr - (width << 1)) = (uint8)jVal0;       /* A */
+                                            *(ptr + width) = (uint8)jVal1;          /* D */
+                                        }
+                                        else if (jVal2)
+                                        {
+                                            jVal1 += ((7 - jVal2) >> 3);
+                                            jVal0 -= ((7 - jVal2) >> 3);
+                                            *(ptr - (width << 1)) = (uint8)jVal0;       /* A */
+                                            *(ptr + width) = (uint8)jVal1;          /* D */
+                                        }
+                                    }
+                                }
+                                while (++ptr < ptr_e);
+                            } /* Soft filter*/
+                        }/* boundary checking*/
+                    }/*bc*/
+            }/*br*/
+            brwidth -= (pp_w << 1);
+            /****************** Vert. Filtering ********************/
+            for (br = mbr; br < mbr + 2; br++)
+            {
+                if (br < pp_h)
+                    for (bc = mbc + 1; bc < mbc + 3; bc++)
+                    {
+                        /****** check boundary for deblocking ************/
+                        if (bc < pp_w)
+                        {
+                            ptr = rec + (brwidth << 6) + (bc << 3);
+                            jVal0 = brwidth + bc;
+                            if (chr)    QP = QP_store[jVal0];
+
+                            ptr_e = ptr + (width << 3);
+
+                            if (((pp_mod[jVal0-1]&0x01)) && ((pp_mod[jVal0]&0x01)))
+                            {
+                                /* Vert Hard filter */
+                                do
+                                {
+                                    jVal1 = *ptr;       /* D */
+                                    jVal0 = *(ptr - 1); /* C */
+                                    jVal2 = jVal1 - jVal0;  /* D-C */
+
+                                    if (((jVal2 > 0) && (jVal2 < (QP << 1)))
+                                            || ((jVal2 < 0) && (jVal2 > -(QP << 1))))
+                                    {
+                                        jVal1 = (jVal0 + jVal1) >> 1;   /* (C+D)/2 */
+                                        *ptr        =   jVal1;
+                                        *(ptr - 1)  =   jVal1;
+
+                                        jVal1 = *(ptr + 1);     /* E */
+                                        jVal0 = *(ptr - 2);     /* B */
+                                        jVal2 = jVal1 - jVal0;      /* E-B */
+
+                                        if (jVal2 > 0)
+                                        {
+                                            jVal1 -= ((jVal2 + 3) >> 2);        /* E = E -(E-B)/4 */
+                                            jVal0 += ((jVal2 + 3) >> 2);        /* B = B +(E-B)/4 */
+                                            *(ptr + 1) = jVal1;
+                                            *(ptr - 2) = jVal0;
+                                        }
+                                        else if (jVal2)
+                                        {
+                                            jVal1 += ((3 - jVal2) >> 2);        /* E = E -(E-B)/4 */
+                                            jVal0 -= ((3 - jVal2) >> 2);        /* B = B +(E-B)/4 */
+                                            *(ptr + 1) = jVal1;
+                                            *(ptr - 2) = jVal0;
+                                        }
+
+                                        jVal1 = *(ptr + 2);     /* F */
+                                        jVal0 = *(ptr - 3);     /* A */
+
+                                        jVal2 = jVal1 - jVal0;          /* (F-A) */
+
+                                        if (jVal2 > 0)
+                                        {
+                                            jVal1 -= ((jVal2 + 7) >> 3);    /* F -= (F-A)/8 */
+                                            jVal0 += ((jVal2 + 7) >> 3);    /* A += (F-A)/8 */
+                                            *(ptr + 2) = jVal1;
+                                            *(ptr - 3) = jVal0;
+                                        }
+                                        else if (jVal2)
+                                        {
+                                            jVal1 -= ((jVal2 - 7) >> 3);    /* F -= (F-A)/8 */
+                                            jVal0 += ((jVal2 - 7) >> 3);    /* A += (F-A)/8 */
+                                            *(ptr + 2) = jVal1;
+                                            *(ptr - 3) = jVal0;
+                                        }
+                                    }   /* end of ver hard filetering */
+                                }
+                                while ((ptr += width) < ptr_e);
+                            }
+                            else   /* Vert soft filter*/
+                            {
+                                do
+                                {
+                                    jVal1 = *ptr;               /* C */
+                                    jVal0 = *(ptr - 1);         /* B */
+                                    jVal2 = jVal1 - jVal0;
+
+                                    if (((jVal2 > 0) && (jVal2 < (QP)))
+                                            || ((jVal2 < 0) && (jVal2 > -(QP))))
+                                    {
+
+                                        jVal1 = (jVal0 + jVal1 + 1) >> 1;
+                                        *ptr = jVal1;           /* C */
+                                        *(ptr - 1) = jVal1;     /* B */
+
+                                        jVal1 = *(ptr + 1);     /* D */
+                                        jVal0 = *(ptr - 2);     /* A */
+                                        jVal2 = (jVal1 - jVal0);        /* D- A */
+
+                                        if (jVal2 > 0)
+                                        {
+                                            jVal1 -= (((jVal2) + 7) >> 3);      /* D -= (D-A)/8 */
+                                            jVal0 += (((jVal2) + 7) >> 3);      /* A += (D-A)/8 */
+                                            *(ptr + 1) = jVal1;
+                                            *(ptr - 2) = jVal0;
+
+                                        }
+                                        else if (jVal2)
+                                        {
+                                            jVal1 += ((7 - (jVal2)) >> 3);      /* D -= (D-A)/8 */
+                                            jVal0 -= ((7 - (jVal2)) >> 3);      /* A += (D-A)/8 */
+                                            *(ptr + 1) = jVal1;
+                                            *(ptr - 2) = jVal0;
+                                        }
+                                    }
+                                }
+                                while ((ptr += width) < ptr_e);
+                            } /* Soft filter*/
+                        } /* boundary*/
+                    } /*bc*/
+                brwidth += pp_w;
+            }/*br*/
+            brwidth -= (pp_w << 1);
+        }/*mbc*/
+        brwidth += (pp_w << 1);
+    }/*mbr*/
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+void CombinedHorzVertFilter_NoSoftDeblocking(
+    uint8 *rec,
+    int width,
+    int height,
+    int16 *QP_store,
+    int chr,
+    uint8 *pp_mod)
+{
+
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int br, bc, mbr, mbc;
+    int QP = 1;
+    uint8 *ptr, *ptr_e;
+    int pp_w, pp_h;
+    int brwidth;
+
+    int jVal0, jVal1, jVal2;
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    pp_w = (width >> 3);
+    pp_h = (height >> 3);
+
+    for (mbr = 0; mbr < pp_h; mbr += 2)         /* row of blocks */
+    {
+        brwidth = mbr * pp_w;               /* number of blocks above current block row */
+        for (mbc = 0; mbc < pp_w; mbc += 2)     /* col of blocks */
+        {
+            if (!chr)
+                QP = QP_store[(brwidth>>2) + (mbc>>1)]; /* QP is per MB based value */
+
+            /********* for each block **************/
+            /****************** Horiz. Filtering ********************/
+            for (br = mbr + 1; br < mbr + 3; br++)  /* 2x2 blocks */
+            {
+                brwidth += pp_w;                    /* number of blocks above & left current block row */
+                /* the profile on ARM920T shows separate these two boundary check is faster than combine them */
+                if (br < pp_h)                  /* boundary : don't do it on the lowest row block */
+                    for (bc = mbc; bc < mbc + 2; bc++)
+                    {
+                        /****** check boundary for deblocking ************/
+                        if (bc < pp_w)              /* boundary : don't do it on the most right col block */
+                        {
+                            ptr = rec + (brwidth << 6) + (bc << 3);
+                            jVal0 = brwidth + bc;
+                            if (chr)    QP = QP_store[jVal0];
+
+                            ptr_e = ptr + 8;        /* pointer to where the loop ends */
+
+                            if (((pp_mod[jVal0]&0x02)) && ((pp_mod[jVal0-pp_w]&0x02)))
+                            {
+                                /* Horiz Hard filter */
+                                do
+                                {
+                                    jVal0 = *(ptr - width);     /* C */
+                                    jVal1 = *ptr;               /* D */
+                                    jVal2 = jVal1 - jVal0;
+
+                                    if (((jVal2 > 0) && (jVal2 < (QP << 1)))
+                                            || ((jVal2 < 0) && (jVal2 > -(QP << 1)))) /* (D-C) compared with 2QP */
+                                    {
+                                        /* differentiate between real and fake edge */
+                                        jVal0 = ((jVal0 + jVal1) >> 1);     /* (D+C)/2 */
+                                        *(ptr - width) = (uint8)(jVal0);    /*  C */
+                                        *ptr = (uint8)(jVal0);          /*  D */
+
+                                        jVal0 = *(ptr - (width << 1));      /* B */
+                                        jVal1 = *(ptr + width);         /* E */
+                                        jVal2 = jVal1 - jVal0;      /* E-B */
+
+                                        if (jVal2 > 0)
+                                        {
+                                            jVal0 += ((jVal2 + 3) >> 2);
+                                            jVal1 -= ((jVal2 + 3) >> 2);
+                                            *(ptr - (width << 1)) = (uint8)jVal0;       /*  store B */
+                                            *(ptr + width) = (uint8)jVal1;          /* store E */
+                                        }
+                                        else if (jVal2)
+                                        {
+                                            jVal0 -= ((3 - jVal2) >> 2);
+                                            jVal1 += ((3 - jVal2) >> 2);
+                                            *(ptr - (width << 1)) = (uint8)jVal0;       /*  store B */
+                                            *(ptr + width) = (uint8)jVal1;          /* store E */
+                                        }
+
+                                        jVal0 = *(ptr - (width << 1) - width);  /* A */
+                                        jVal1 = *(ptr + (width << 1));      /* F */
+                                        jVal2 = jVal1 - jVal0;              /* (F-A) */
+
+                                        if (jVal2 > 0)
+                                        {
+                                            jVal0 += ((jVal2 + 7) >> 3);
+                                            jVal1 -= ((jVal2 + 7) >> 3);
+                                            *(ptr - (width << 1) - width) = (uint8)(jVal0);
+                                            *(ptr + (width << 1)) = (uint8)(jVal1);
+                                        }
+                                        else if (jVal2)
+                                        {
+                                            jVal0 -= ((7 - jVal2) >> 3);
+                                            jVal1 += ((7 - jVal2) >> 3);
+                                            *(ptr - (width << 1) - width) = (uint8)(jVal0);
+                                            *(ptr + (width << 1)) = (uint8)(jVal1);
+                                        }
+                                    }/* a3_0 > 2QP */
+                                }
+                                while (++ptr < ptr_e);
+                            }
+
+                        }/* boundary checking*/
+                    }/*bc*/
+            }/*br*/
+            brwidth -= (pp_w << 1);
+            /****************** Vert. Filtering ********************/
+            for (br = mbr; br < mbr + 2; br++)
+            {
+                if (br < pp_h)
+                    for (bc = mbc + 1; bc < mbc + 3; bc++)
+                    {
+                        /****** check boundary for deblocking ************/
+                        if (bc < pp_w)
+                        {
+                            ptr = rec + (brwidth << 6) + (bc << 3);
+                            jVal0 = brwidth + bc;
+                            if (chr)    QP = QP_store[jVal0];
+
+                            ptr_e = ptr + (width << 3);
+
+                            if (((pp_mod[jVal0-1]&0x01)) && ((pp_mod[jVal0]&0x01)))
+                            {
+                                /* Vert Hard filter */
+                                do
+                                {
+                                    jVal1 = *ptr;       /* D */
+                                    jVal0 = *(ptr - 1); /* C */
+                                    jVal2 = jVal1 - jVal0;  /* D-C */
+
+                                    if (((jVal2 > 0) && (jVal2 < (QP << 1)))
+                                            || ((jVal2 < 0) && (jVal2 > -(QP << 1))))
+                                    {
+                                        jVal1 = (jVal0 + jVal1) >> 1;   /* (C+D)/2 */
+                                        *ptr        =   jVal1;
+                                        *(ptr - 1)  =   jVal1;
+
+                                        jVal1 = *(ptr + 1);     /* E */
+                                        jVal0 = *(ptr - 2);     /* B */
+                                        jVal2 = jVal1 - jVal0;      /* E-B */
+
+                                        if (jVal2 > 0)
+                                        {
+                                            jVal1 -= ((jVal2 + 3) >> 2);        /* E = E -(E-B)/4 */
+                                            jVal0 += ((jVal2 + 3) >> 2);        /* B = B +(E-B)/4 */
+                                            *(ptr + 1) = jVal1;
+                                            *(ptr - 2) = jVal0;
+                                        }
+                                        else if (jVal2)
+                                        {
+                                            jVal1 += ((3 - jVal2) >> 2);        /* E = E -(E-B)/4 */
+                                            jVal0 -= ((3 - jVal2) >> 2);        /* B = B +(E-B)/4 */
+                                            *(ptr + 1) = jVal1;
+                                            *(ptr - 2) = jVal0;
+                                        }
+
+                                        jVal1 = *(ptr + 2);     /* F */
+                                        jVal0 = *(ptr - 3);     /* A */
+
+                                        jVal2 = jVal1 - jVal0;          /* (F-A) */
+
+                                        if (jVal2 > 0)
+                                        {
+                                            jVal1 -= ((jVal2 + 7) >> 3);    /* F -= (F-A)/8 */
+                                            jVal0 += ((jVal2 + 7) >> 3);    /* A += (F-A)/8 */
+                                            *(ptr + 2) = jVal1;
+                                            *(ptr - 3) = jVal0;
+                                        }
+                                        else if (jVal2)
+                                        {
+                                            jVal1 -= ((jVal2 - 7) >> 3);    /* F -= (F-A)/8 */
+                                            jVal0 += ((jVal2 - 7) >> 3);    /* A += (F-A)/8 */
+                                            *(ptr + 2) = jVal1;
+                                            *(ptr - 3) = jVal0;
+                                        }
+                                    }   /* end of ver hard filetering */
+                                }
+                                while ((ptr += width) < ptr_e);
+                            }
+
+                        } /* boundary*/
+                    } /*bc*/
+                brwidth += pp_w;
+            }/*br*/
+            brwidth -= (pp_w << 1);
+        }/*mbc*/
+        brwidth += (pp_w << 1);
+    }/*mbr*/
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+#endif
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/chvr_filter.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/chvr_filter.cpp
new file mode 100644
index 0000000..795cf71
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/chvr_filter.cpp
@@ -0,0 +1,565 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include    "mp4dec_lib.h"
+#include    "post_proc.h"
+
+#ifdef PV_POSTPROC_ON
+
+void CombinedHorzVertRingFilter(
+    uint8 *rec,
+    int width,
+    int height,
+    int16 *QP_store,
+    int chr,
+    uint8 *pp_mod)
+{
+
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int index, counter;
+    int br, bc, incr, mbr, mbc;
+    int QP = 1;
+    int v[5];
+    uint8 *ptr, *ptr_c, *ptr_n;
+    int w1, w2, w3, w4;
+    int pp_w, pp_h, brwidth;
+    int sum, delta;
+    int a3_0, a3_1, a3_2, A3_0;
+    /* for Deringing Threshold approach (MPEG4)*/
+    int max_diff, thres, v0, h0, min_blk, max_blk;
+    int cnthflag;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* Calculate the width and height of the area in blocks (divide by 8) */
+    pp_w = (width >> 3);
+    pp_h = (height >> 3);
+
+    /* Set up various values needed for updating pointers into rec */
+    w1 = width;             /* Offset to next row in pixels */
+    w2 = width << 1;        /* Offset to two rows in pixels */
+    w3 = w1 + w2;           /* Offset to three rows in pixels */
+    w4 = w2 << 1;           /* Offset to four rows in pixels */
+    incr = width - BLKSIZE; /* Offset to next row after processing block */
+
+    /* Work through the area hortizontally by two rows per step */
+    for (mbr = 0; mbr < pp_h; mbr += 2)
+    {
+        /* brwidth contains the block number of the leftmost block
+         * of the current row */
+        brwidth = mbr * pp_w;
+
+        /* Work through the area vertically by two columns per step */
+        for (mbc = 0; mbc < pp_w; mbc += 2)
+        {
+            /* if the data is luminance info, get the correct
+                    * quantization paramenter. One parameter per macroblock */
+            if (!chr)
+            {
+                /* brwidth/4 is the macroblock number and mbc/2 is the macroblock col number*/
+                QP = QP_store[(brwidth>>2) + (mbc>>1)];
+            }
+
+            /****************** Horiz. Filtering ********************/
+            /* Process four blocks for the filtering        */
+            /********************************************************/
+            /* Loop over two rows of blocks */
+            for (br = mbr + 1; br < mbr + 3; br++)    /* br is the row counter in blocks */
+            {
+                /* Set brwidth to the first (leftmost) block number of the next row */
+                /* brwidth is used as an index when counting blocks */
+                brwidth += pp_w;
+
+                /* Loop over two columns of blocks in the row */
+                for (bc = mbc; bc < mbc + 2; bc++)    /* bc is the column counter in blocks */
+                {
+                    /****** check boundary for deblocking ************/
+                    /* Execute if the row and column counters are within the area */
+                    if (br < pp_h && bc < pp_w)
+                    {
+                        /* Set the ptr to the first pixel of the first block of the second row
+                        * brwidth * 64 is the pixel row offset
+                        * bc * 8 is the pixel column offset */
+                        ptr = rec + (brwidth << 6) + (bc << 3);
+
+                        /* Set the index to the current block of the second row counting in blocks */
+                        index = brwidth + bc;
+
+                        /* if the data is chrominance info, get the correct
+                         * quantization paramenter. One parameter per block. */
+                        if (chr)
+                        {
+                            QP = QP_store[index];
+                        }
+
+                        /* Execute hard horizontal filter if semaphore for horizontal deblocking
+                          * is set for the current block and block immediately above it */
+                        if (((pp_mod[index]&0x02) != 0) && ((pp_mod[index-pp_w]&0x02) != 0))
+                        {   /* Hard filter */
+
+                            /* Set HorzHflag (bit 4) in the pp_mod location */
+                            pp_mod[index-pp_w] |= 0x10; /*  4/26/00 reuse pp_mod for HorzHflag*/
+
+                            /* Filter across the 8 pixels of the block */
+                            for (index = BLKSIZE; index > 0; index--)
+                            {
+                                /* Difference between the current pixel and the pixel above it */
+                                a3_0 = *ptr - *(ptr - w1);
+
+                                /* if the magnitude of the difference is greater than the KThH threshold
+                                 * and within the quantization parameter, apply hard filter */
+                                if ((a3_0 > KThH || a3_0 < -KThH) && a3_0<QP && a3_0> -QP)
+                                {
+                                    ptr_c = ptr - w3;   /* Points to pixel three rows above */
+                                    ptr_n = ptr + w1;   /* Points to pixel one row below */
+                                    v[0] = (int)(*(ptr_c - w3));
+                                    v[1] = (int)(*(ptr_c - w2));
+                                    v[2] = (int)(*(ptr_c - w1));
+                                    v[3] = (int)(*ptr_c);
+                                    v[4] = (int)(*(ptr_c + w1));
+
+                                    sum = v[0]
+                                          + v[1]
+                                          + v[2]
+                                          + *ptr_c
+                                          + v[4]
+                                          + (*(ptr_c + w2))
+                                          + (*(ptr_c + w3));  /* Current pixel */
+
+                                    delta = (sum + *ptr_c + 4) >> 3;   /* Average pixel values with rounding */
+                                    *(ptr_c) = (uint8) delta;
+
+                                    /* Move pointer down one row of pixels (points to pixel two rows
+                                     * above current pixel) */
+                                    ptr_c += w1;
+
+                                    for (counter = 0; counter < 5; counter++)
+                                    {
+                                        /* Subtract off highest pixel and add in pixel below */
+                                        sum = sum - v[counter] + *ptr_n;
+                                        /* Average the pixel values with rounding */
+                                        delta = (sum + *ptr_c + 4) >> 3;
+                                        *ptr_c = (uint8)(delta);
+
+                                        /* Increment pointers to next pixel row */
+                                        ptr_c += w1;
+                                        ptr_n += w1;
+                                    }
+                                }
+                                /* Increment pointer to next pixel */
+                                ++ptr;
+                            } /* index*/
+                        }
+                        else
+                        { /* soft filter*/
+
+                            /* Clear HorzHflag (bit 4) in the pp_mod location */
+                            pp_mod[index-pp_w] &= 0xef; /* reset 1110,1111 */
+
+                            for (index = BLKSIZE; index > 0; index--)
+                            {
+                                /* Difference between the current pixel and the pixel above it */
+                                a3_0 = *(ptr) - *(ptr - w1);
+
+                                /* if the magnitude of the difference is greater than the KTh threshold,
+                                 * apply soft filter */
+                                if ((a3_0 > KTh || a3_0 < -KTh))
+                                {
+
+                                    /* Sum of weighted differences */
+                                    a3_0 += ((*(ptr - w2) - *(ptr + w1)) << 1) + (a3_0 << 2);
+
+                                    /* Check if sum is less than the quantization parameter */
+                                    if (PV_ABS(a3_0) < (QP << 3))
+                                    {
+                                        a3_1 = *(ptr - w2) - *(ptr - w3);
+                                        a3_1 += ((*(ptr - w4) - *(ptr - w1)) << 1) + (a3_1 << 2);
+
+                                        a3_2  = *(ptr + w2) - *(ptr + w1);
+                                        a3_2 += ((*(ptr) - *(ptr + w3)) << 1) + (a3_2 << 2);
+
+                                        A3_0 = PV_ABS(a3_0) - PV_MIN(PV_ABS(a3_1), PV_ABS(a3_2));
+
+                                        if (A3_0 > 0)
+                                        {
+                                            A3_0 += A3_0 << 2;
+                                            A3_0 = (A3_0 + 32) >> 6;
+                                            if (a3_0 > 0)
+                                            {
+                                                A3_0 = -A3_0;
+                                            }
+
+                                            delta = (*(ptr - w1) - *(ptr)) >> 1;
+                                            if (delta >= 0)
+                                            {
+                                                if (delta >= A3_0)
+                                                {
+                                                    delta = PV_MAX(A3_0, 0);
+                                                }
+                                            }
+                                            else
+                                            {
+                                                if (A3_0 > 0)
+                                                {
+                                                    delta = 0;
+                                                }
+                                                else
+                                                {
+                                                    delta = PV_MAX(A3_0, delta);
+                                                }
+                                            }
+
+                                            *(ptr - w1) = (uint8)(*(ptr - w1) - delta);
+                                            *(ptr) = (uint8)(*(ptr) + delta);
+                                        }
+                                    } /*threshold*/
+                                }
+                                /* Increment pointer to next pixel */
+                                ++ptr;
+                            } /*index*/
+                        } /* Soft filter*/
+                    }/* boundary checking*/
+                }/*bc*/
+            }/*br*/
+            brwidth -= (pp_w << 1);
+
+
+            /****************** Vert. Filtering *********************/
+            /* Process four blocks for the filtering        */
+            /********************************************************/
+            /* Loop over two rows of blocks */
+            for (br = mbr; br < mbr + 2; br++)      /* br is the row counter in blocks */
+            {
+                for (bc = mbc + 1; bc < mbc + 3; bc++)  /* bc is the column counter in blocks */
+                {
+                    /****** check boundary for deblocking ************/
+                    /* Execute if the row and column counters are within the area */
+                    if (br < pp_h && bc < pp_w)
+                    {
+                        /* Set the ptr to the first pixel of the first block of the second row
+                        * brwidth * 64 is the pixel row offset
+                        * bc * 8 is the pixel column offset */
+                        ptr = rec + (brwidth << 6) + (bc << 3);
+
+                        /* Set the index to the current block of the second row counting in blocks */
+                        index = brwidth + bc;
+
+                        /* if the data is chrominance info, get the correct
+                         * quantization paramenter. One parameter per block. */
+                        if (chr)
+                        {
+                            QP = QP_store[index];
+                        }
+
+                        /* Execute hard vertical filter if semaphore for vertical deblocking
+                          * is set for the current block and block immediately left of it */
+                        if (((pp_mod[index-1]&0x01) != 0) && ((pp_mod[index]&0x01) != 0))
+                        {   /* Hard filter */
+
+                            /* Set VertHflag (bit 5) in the pp_mod location of previous block*/
+                            pp_mod[index-1] |= 0x20; /*  4/26/00 reuse pp_mod for VertHflag*/
+
+                            /* Filter across the 8 pixels of the block */
+                            for (index = BLKSIZE; index > 0; index--)
+                            {
+                                /* Difference between the current pixel
+                                * and the pixel to left of it */
+                                a3_0 = *ptr - *(ptr - 1);
+
+                                /* if the magnitude of the difference is greater than the KThH threshold
+                                 * and within the quantization parameter, apply hard filter */
+                                if ((a3_0 > KThH || a3_0 < -KThH) && a3_0<QP && a3_0> -QP)
+                                {
+                                    ptr_c = ptr - 3;
+                                    ptr_n = ptr + 1;
+                                    v[0] = (int)(*(ptr_c - 3));
+                                    v[1] = (int)(*(ptr_c - 2));
+                                    v[2] = (int)(*(ptr_c - 1));
+                                    v[3] = (int)(*ptr_c);
+                                    v[4] = (int)(*(ptr_c + 1));
+
+                                    sum = v[0]
+                                          + v[1]
+                                          + v[2]
+                                          + *ptr_c
+                                          + v[4]
+                                          + (*(ptr_c + 2))
+                                          + (*(ptr_c + 3));
+
+                                    delta = (sum + *ptr_c + 4) >> 3;
+                                    *(ptr_c) = (uint8) delta;
+
+                                    /* Move pointer down one pixel to the right */
+                                    ptr_c += 1;
+                                    for (counter = 0; counter < 5; counter++)
+                                    {
+                                        /* Subtract off highest pixel and add in pixel below */
+                                        sum = sum - v[counter] + *ptr_n;
+                                        /* Average the pixel values with rounding */
+                                        delta = (sum + *ptr_c + 4) >> 3;
+                                        *ptr_c = (uint8)(delta);
+
+                                        /* Increment pointers to next pixel */
+                                        ptr_c += 1;
+                                        ptr_n += 1;
+                                    }
+                                }
+                                /* Increment pointers to next pixel row */
+                                ptr += w1;
+                            } /* index*/
+                        }
+                        else
+                        { /* soft filter*/
+
+                            /* Clear VertHflag (bit 5) in the pp_mod location */
+                            pp_mod[index-1] &= 0xdf; /* reset 1101,1111 */
+                            for (index = BLKSIZE; index > 0; index--)
+                            {
+                                /* Difference between the current pixel and the pixel above it */
+                                a3_0 = *(ptr) - *(ptr - 1);
+
+                                /* if the magnitude of the difference is greater than the KTh threshold,
+                                 * apply soft filter */
+                                if ((a3_0 > KTh || a3_0 < -KTh))
+                                {
+
+                                    /* Sum of weighted differences */
+                                    a3_0 += ((*(ptr - 2) - *(ptr + 1)) << 1) + (a3_0 << 2);
+
+                                    /* Check if sum is less than the quantization parameter */
+                                    if (PV_ABS(a3_0) < (QP << 3))
+                                    {
+                                        a3_1 = *(ptr - 2) - *(ptr - 3);
+                                        a3_1 += ((*(ptr - 4) - *(ptr - 1)) << 1) + (a3_1 << 2);
+
+                                        a3_2  = *(ptr + 2) - *(ptr + 1);
+                                        a3_2 += ((*(ptr) - *(ptr + 3)) << 1) + (a3_2 << 2);
+
+                                        A3_0 = PV_ABS(a3_0) - PV_MIN(PV_ABS(a3_1), PV_ABS(a3_2));
+
+                                        if (A3_0 > 0)
+                                        {
+                                            A3_0 += A3_0 << 2;
+                                            A3_0 = (A3_0 + 32) >> 6;
+                                            if (a3_0 > 0)
+                                            {
+                                                A3_0 = -A3_0;
+                                            }
+
+                                            delta = (*(ptr - 1) - *(ptr)) >> 1;
+                                            if (delta >= 0)
+                                            {
+                                                if (delta >= A3_0)
+                                                {
+                                                    delta = PV_MAX(A3_0, 0);
+                                                }
+                                            }
+                                            else
+                                            {
+                                                if (A3_0 > 0)
+                                                {
+                                                    delta = 0;
+                                                }
+                                                else
+                                                {
+                                                    delta = PV_MAX(A3_0, delta);
+                                                }
+                                            }
+
+                                            *(ptr - 1) = (uint8)(*(ptr - 1) - delta);
+                                            *(ptr) = (uint8)(*(ptr) + delta);
+                                        }
+                                    } /*threshold*/
+                                }
+                                ptr += w1;
+                            } /*index*/
+                        } /* Soft filter*/
+                    } /* boundary*/
+                } /*bc*/
+                /* Increment pointer to next row of pixels */
+                brwidth += pp_w;
+            }/*br*/
+            brwidth -= (pp_w << 1);
+
+            /****************** Deringing ***************************/
+            /* Process four blocks for the filtering        */
+            /********************************************************/
+            /* Loop over two rows of blocks */
+            for (br = mbr; br < mbr + 2; br++)
+            {
+                /* Loop over two columns of blocks in the row */
+                for (bc = mbc; bc < mbc + 2; bc++)
+                {
+                    /* Execute if the row and column counters are within the area */
+                    if (br < pp_h && bc < pp_w)
+                    {
+                        /* Set the index to the current block */
+                        index = brwidth + bc;
+
+                        /* Execute deringing if semaphore for deringing (bit-3 of pp_mod)
+                         * is set for the current block */
+                        if ((pp_mod[index]&0x04) != 0)
+                        {
+                            /* Don't process deringing if on an edge block */
+                            if (br > 0 && bc > 0 && br < pp_h - 1 && bc < pp_w - 1)
+                            {
+                                /* cnthflag = weighted average of HorzHflag of current,
+                                 * one above, previous blocks*/
+                                cnthflag = ((pp_mod[index] & 0x10) +
+                                            (pp_mod[index-pp_w] & 0x10) +
+                                            ((pp_mod[index-1] >> 1) & 0x10) +
+                                            ((pp_mod[index] >> 1) & 0x10)) >> 4; /* 4/26/00*/
+
+                                /* Do the deringing if decision flags indicate it's necessary */
+                                if (cnthflag < 3)
+                                {
+                                    /* if the data is chrominance info, get the correct
+                                     * quantization paramenter. One parameter per block. */
+                                    if (chr)
+                                    {
+                                        QP = QP_store[index];
+                                    }
+
+                                    /* Set amount to change luminance if it needs to be changed
+                                     * based on quantization parameter */
+                                    max_diff = (QP >> 2) + 4;
+
+                                    /* Set pointer to first pixel of current block */
+                                    ptr = rec + (brwidth << 6) + (bc << 3);
+
+                                    /* Find minimum and maximum value of pixel block */
+                                    FindMaxMin(ptr, &min_blk, &max_blk, incr);
+
+                                    /* threshold determination */
+                                    thres = (max_blk + min_blk + 1) >> 1;
+
+                                    /* If pixel range is greater or equal than DERING_THR, smooth the region */
+                                    if ((max_blk - min_blk) >= DERING_THR) /*smooth 8x8 region*/
+#ifndef NoMMX
+                                    {
+                                        /* smooth all pixels in the block*/
+                                        DeringAdaptiveSmoothMMX(ptr, width, thres, max_diff);
+                                    }
+#else
+                                    {
+                                        /* Setup the starting point of the region to smooth */
+                                        v0 = (br << 3) - 1;
+                                        h0 = (bc << 3) - 1;
+
+                                        /*smooth 8x8 region*/
+                                        AdaptiveSmooth_NoMMX(rec, v0, h0, v0 + 1, h0 + 1, thres, width, max_diff);
+                                    }
+#endif
+                                }/*cnthflag*/
+                            } /*dering br==1 or bc==1 (boundary block)*/
+                            else    /* Process the boundary blocks */
+                            {
+                                /* Decide to perform deblocking based on the semaphore flags
+                                   * of the neighboring blocks in each case. A certain number of
+                                 * hard filtering flags have to be set in order to signal need
+                                 * for smoothing */
+                                if (br > 0 && br < pp_h - 1)
+                                {
+                                    if (bc > 0)
+                                    {
+                                        cnthflag = ((pp_mod[index-pp_w] & 0x10) +
+                                                    (pp_mod[index] & 0x10) +
+                                                    ((pp_mod[index-1] >> 1) & 0x10)) >> 4;
+                                    }
+                                    else
+                                    {
+                                        cnthflag = ((pp_mod[index] & 0x10) +
+                                                    (pp_mod[index-pp_w] & 0x10) +
+                                                    ((pp_mod[index] >> 1) & 0x10)) >> 4;
+                                    }
+                                }
+                                else if (bc > 0 && bc < pp_w - 1)
+                                {
+                                    if (br > 0)
+                                    {
+                                        cnthflag = ((pp_mod[index-pp_w] & 0x10) +
+                                                    ((pp_mod[index-1] >> 1) & 0x10) +
+                                                    ((pp_mod[index] >> 1) & 0x10)) >> 4;
+                                    }
+                                    else
+                                    {
+                                        cnthflag = ((pp_mod[index] & 0x10) +
+                                                    ((pp_mod[index-1] >> 1) & 0x10) +
+                                                    ((pp_mod[index] >> 1) & 0x10)) >> 4;
+                                    }
+                                }
+                                else /* at the corner do default*/
+                                {
+                                    cnthflag = 0;
+                                }
+
+                                /* Do the deringing if decision flags indicate it's necessary */
+                                if (cnthflag < 2)
+                                {
+
+                                    /* if the data is chrominance info, get the correct
+                                                         * quantization paramenter. One parameter per block. */
+                                    if (chr)
+                                    {
+                                        QP = QP_store[index];
+                                    }
+
+                                    /* Set amount to change luminance if it needs to be changed
+                                     * based on quantization parameter */
+                                    max_diff = (QP >> 2) + 4;
+
+                                    /* Set pointer to first pixel of current block */
+                                    ptr = rec + (brwidth << 6) + (bc << 3);
+
+                                    /* Find minimum and maximum value of pixel block */
+                                    FindMaxMin(ptr, &min_blk, &max_blk, incr);
+
+                                    /* threshold determination */
+                                    thres = (max_blk + min_blk + 1) >> 1;
+
+                                    /* Setup the starting point of the region to smooth
+                                     * This is going to be a 4x4 region */
+                                    v0 = (br << 3) + 1;
+                                    h0 = (bc << 3) + 1;
+
+                                    /* If pixel range is greater or equal than DERING_THR, smooth the region */
+                                    if ((max_blk - min_blk) >= DERING_THR)
+                                    {
+                                        /* Smooth 4x4 region */
+                                        AdaptiveSmooth_NoMMX(rec, v0, h0, v0 - 3, h0 - 3, thres, width, max_diff);
+                                    }
+                                }/*cnthflag*/
+                            } /* br==0, bc==0*/
+                        }  /* dering*/
+                    } /*boundary condition*/
+                }/*bc*/
+                brwidth += pp_w;
+            }/*br*/
+            brwidth -= (pp_w << 1);
+        }/*mbc*/
+        brwidth += (pp_w << 1);
+    }/*mbr*/
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return ;
+}
+#endif
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/combined_decode.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/combined_decode.cpp
new file mode 100644
index 0000000..6499233
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/combined_decode.cpp
@@ -0,0 +1,840 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "mp4dec_lib.h" /* video decoder function prototypes */
+#include "vlc_decode.h"
+#include "bitstream.h"
+#include "scaling.h"
+#include "mbtype_mode.h"
+
+#define OSCL_DISABLE_WARNING_CONDITIONAL_IS_CONSTANT
+/* ======================================================================== */
+/*  Function : DecodeFrameCombinedMode()                                    */
+/*  Purpose  : Decode a frame of MPEG4 bitstream in combined mode.          */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Modified :                                                              */
+/*                                                                          */
+/*      03/30/2000 : Cleaned up and optimized the code.             */
+/*      03/31/2000 : Added proper handling of MB stuffing.          */
+/*      04/13/2000 : Rewrote this combined mode path completely     */
+/*                           so that it handles "Combined Mode With Error   */
+/*                           Resilience."  Now the code resembles the       */
+/*                           pseudo codes in MPEG-4 standard better.        */
+/*      10/13/2000 : Add fast VLC+dequant                           */
+/*      04/13/2001 : fix MB_stuffing                               */
+/*      08/07/2001 : remove MBzero                                  */
+/* ======================================================================== */
+PV_STATUS DecodeFrameCombinedMode(VideoDecData *video)
+{
+    PV_STATUS status;
+    int mbnum;
+    Vop *currVop = video->currVop;
+    BitstreamDecVideo *stream = video->bitstream;
+    int shortVideoHeader = video->shortVideoHeader;
+    int16 QP, *QPMB = video->QPMB;
+    uint8 *Mode = video->headerInfo.Mode;
+    int nTotalMB = video->nTotalMB;
+    int nMBPerRow = video->nMBPerRow;
+    int slice_counter;
+    uint32 tmpvar, long_zero_bits;
+    uint code;
+    int valid_stuffing;
+    int resync_marker_length;
+    int stuffing_length;
+
+    /* add this for error resilient, 05/18/2000 */
+    int32 startPacket;
+    int mb_start;
+    /* copy and pad to prev_Vop for INTER coding */
+    switch (currVop->predictionType)
+    {
+        case I_VOP :
+//      oscl_memset(Mode, MODE_INTRA, sizeof(uint8)*nTotalMB);
+            resync_marker_length = 17;
+            stuffing_length = 9;
+            break;
+        case P_VOP :
+            oscl_memset(video->motX, 0, sizeof(MOT)*4*nTotalMB);
+            oscl_memset(video->motY, 0, sizeof(MOT)*4*nTotalMB);
+//      oscl_memset(Mode, MODE_INTER, sizeof(uint8)*nTotalMB);
+            resync_marker_length = 16 + currVop->fcodeForward;
+            stuffing_length = 10;
+            break;
+        default :
+            mp4dec_log("DecodeFrameCombinedMode(): Vop type not supported.\n");
+            return PV_FAIL;
+    }
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    if (video->shortVideoHeader)
+    {
+        if (video->advanced_INTRA)
+        {
+            if (video->modified_quant)
+            {
+                video->vlcDecCoeffIntra = &VlcDecTCOEFShortHeader_AnnexIT;
+                video->vlcDecCoeffInter = &VlcDecTCOEFShortHeader_AnnexT;
+            }
+            else
+            {
+                video->vlcDecCoeffIntra = &VlcDecTCOEFShortHeader_AnnexI;
+                video->vlcDecCoeffInter = &VlcDecTCOEFShortHeader;
+            }
+        }
+        else
+        {
+            if (video->modified_quant)
+            {
+                video->vlcDecCoeffInter = video->vlcDecCoeffIntra = &VlcDecTCOEFShortHeader_AnnexT;
+            }
+            else
+            {
+                video->vlcDecCoeffInter = video->vlcDecCoeffIntra = &VlcDecTCOEFShortHeader;
+            }
+        }
+    }
+
+#endif
+
+    /** Initialize sliceNo ***/
+    mbnum = slice_counter = 0;
+//  oscl_memset(video->sliceNo, 0, sizeof(uint8)*nTotalMB);
+    QP = video->currVop->quantizer;
+
+    do
+    {
+        /* This section is equivalent to motion_shape_texture() */
+        /*    in the MPEG-4 standard.     04/13/2000          */
+        mb_start = mbnum;
+        video->usePrevQP = 0;             /*  04/27/01 */
+        startPacket = getPointer(stream);
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+        if (video->modified_quant)
+        {
+            video->QP_CHR = MQ_chroma_QP_table[QP];
+        }
+        else
+        {
+            video->QP_CHR = QP;     /* ANNEX_T */
+        }
+#endif
+        /* remove any stuffing bits */
+        BitstreamShowBits16(stream, stuffing_length, &code);
+        while (code == 1)
+        {
+            PV_BitstreamFlushBits(stream, stuffing_length);
+            BitstreamShowBits16(stream, stuffing_length, &code);
+        }
+
+        do
+        {
+            /* we need video->mbnum in lower level functions */
+            video->mbnum = mbnum;
+            video->mbnum_row = PV_GET_ROW(mbnum, nMBPerRow);
+            video->mbnum_col = mbnum - video->mbnum_row * nMBPerRow;
+            /* assign slice number for each macroblocks */
+            video->sliceNo[mbnum] = (uint8) slice_counter;
+
+            /* decode COD, MCBPC, ACpred_flag, CPBY and DQUANT */
+            /* We have to discard stuffed MB header */
+            status = GetMBheader(video, &QP);
+
+            if (status != PV_SUCCESS)
+            {
+                VideoDecoderErrorDetected(video);
+                video->mbnum = mb_start;
+                movePointerTo(stream, (startPacket & -8));
+                break;
+            }
+
+            /* Store the QP value for later use in AC prediction */
+            QPMB[mbnum] = QP;
+
+            if (Mode[mbnum] != MODE_SKIPPED)
+            {
+                /* decode the DCT coeficients for the MB */
+                status = GetMBData(video);
+                if (status != PV_SUCCESS)
+                {
+                    VideoDecoderErrorDetected(video);
+                    video->mbnum = mb_start;
+                    movePointerTo(stream, (startPacket & -8));
+                    break;
+                }
+            }
+            else /* MODE_SKIPPED */
+            {
+                SkippedMBMotionComp(video); /*  08/04/05 */
+            }
+            // Motion compensation and put video->mblock->pred_block
+            mbnum++;
+
+            /* remove any stuffing bits */
+            BitstreamShowBits16(stream, stuffing_length, &code);
+            while (code == 1)
+            {
+                PV_BitstreamFlushBits(stream, stuffing_length);
+                BitstreamShowBits16(stream, stuffing_length, &code);
+            }
+
+            /* have we reached the end of the video packet or vop? */
+            if (shortVideoHeader)
+            {
+#ifdef PV_ANNEX_IJKT_SUPPORT
+                if (!video->slice_structure)
+                {
+#endif
+                    if (mbnum >= (int)(video->mbnum_row + 1)*video->nMBinGOB)   /*  10/11/01 */
+                    {
+                        if (mbnum >= nTotalMB) return PV_SUCCESS;
+                        status = BitstreamShowBits32(stream, GOB_RESYNC_MARKER_LENGTH, &tmpvar);
+
+                        if (tmpvar == GOB_RESYNC_MARKER)
+                        {
+                            break;
+                        }
+                        else
+                        {
+                            status = PV_BitstreamShowBitsByteAlign(stream, GOB_RESYNC_MARKER_LENGTH, &tmpvar);
+                            if (tmpvar == GOB_RESYNC_MARKER) break;
+                        }
+                    }
+#ifdef PV_ANNEX_IJKT_SUPPORT
+                }
+                else
+                {
+
+                    if (mbnum >= nTotalMB)  /* in case no valid stuffing  06/23/01 */
+                    {
+                        valid_stuffing = validStuffing_h263(stream);
+                        if (valid_stuffing == 0)
+                        {
+                            VideoDecoderErrorDetected(video);
+                            ConcealPacket(video, mb_start, nTotalMB, slice_counter);
+                        }
+                        return PV_SUCCESS;
+                    }
+                    /* ANNEX_K */
+                    PV_BitstreamShowBitsByteAlignNoForceStuffing(stream, 17, &tmpvar);
+                    if (tmpvar == RESYNC_MARKER)
+                    {
+                        valid_stuffing = validStuffing_h263(stream);
+                        if (valid_stuffing)
+                            break; /*  06/21/01 */
+                    }
+
+                }
+#endif
+            }
+            else
+            {
+                if (mbnum >= nTotalMB)  /* in case no valid stuffing  06/23/01 */
+                {
+                    /*  11/01/2002 if we are at the end of the frame and there is some garbage data
+                    at the end of the frame (i.e. no next startcode) break if the stuffing is valid */
+                    valid_stuffing = validStuffing(stream);
+                    if (valid_stuffing == 0)
+                    {
+                        /* end 11/01/2002 */
+                        VideoDecoderErrorDetected(video);
+                        ConcealPacket(video, mb_start, nTotalMB, slice_counter);
+                    }
+                    PV_BitstreamByteAlign(stream);
+                    return PV_SUCCESS;
+                }
+
+                status = PV_BitstreamShowBitsByteAlign(stream, 23, &tmpvar); /* this call is valid for f_code < 8 */
+                long_zero_bits = !tmpvar;
+
+                if ((tmpvar >> (23 - resync_marker_length)) == RESYNC_MARKER || long_zero_bits)
+                {
+                    valid_stuffing = validStuffing(stream);
+                    if (valid_stuffing)
+                        break; /*  06/21/01 */
+                }
+
+            }
+        }
+        while (TRUE);
+
+        if (shortVideoHeader)
+        { /* We need to check newgob to refresh quantizer */
+#ifdef PV_ANNEX_IJKT_SUPPORT
+            if (!video->slice_structure)
+            {
+#endif
+                while ((status = PV_GobHeader(video)) == PV_FAIL)
+                {
+                    if ((status = quickSearchGOBHeader(stream)) != PV_SUCCESS)
+                    {
+                        break;
+                    }
+                }
+
+                mbnum = currVop->gobNumber * video->nMBinGOB;
+#ifdef PV_ANNEX_IJKT_SUPPORT
+            }
+            else
+            {
+                while ((status = PV_H263SliceHeader(video, &mbnum)) == PV_FAIL)
+                {
+                    if ((status = quickSearchH263SliceHeader(stream)) != PV_SUCCESS)
+                    {
+                        break;
+                    }
+                }
+            }
+
+#endif
+        }
+        else
+        {
+            while ((status = PV_ReadVideoPacketHeader(video, &mbnum)) == PV_FAIL)
+            {
+                if ((status = quickSearchVideoPacketHeader(stream, resync_marker_length)) != PV_SUCCESS)
+                {
+                    break;
+                }
+            }
+        }
+
+        if (status == PV_END_OF_VOP)
+        {
+            mbnum = nTotalMB;
+        }
+
+        if (mbnum > video->mbnum + 1)
+        {
+            ConcealPacket(video, video->mbnum, mbnum, slice_counter);
+        }
+        QP = video->currVop->quantizer;
+        slice_counter++;
+        if (mbnum >= nTotalMB) break;
+
+    }
+    while (TRUE);
+    return PV_SUCCESS;
+}
+
+
+/* ============================================================================ */
+/*  Function : GetMBHeader()                                                    */
+/*  Purpose  : Decode MB header, not_coded, mcbpc, ac_pred_flag, cbpy, dquant.  */
+/*  In/out   :                                                                  */
+/*  Return   :                                                                  */
+/*  Modified :                                                                  */
+/*                                                                              */
+/*      3/29/00 : Changed the returned value and optimized the code.    */
+/*      4/01/01 : new ACDC prediction structure                         */
+/* ============================================================================ */
+PV_STATUS GetMBheader(VideoDecData *video, int16 *QP)
+{
+    BitstreamDecVideo *stream = video->bitstream;
+    int mbnum = video->mbnum;
+    uint8 *Mode = video->headerInfo.Mode;
+    int x_pos = video->mbnum_col;
+    typeDCStore *DC = video->predDC + mbnum;
+    typeDCACStore *DCAC_row = video->predDCAC_row + x_pos;
+    typeDCACStore *DCAC_col = video->predDCAC_col;
+    const static int16  DQ_tab[4] = { -1, -2, 1, 2};
+
+    int CBPY, CBPC;
+    int MBtype, VopType;
+    int MCBPC;
+    uint DQUANT;
+    int comp;
+    Bool mb_coded;
+
+    VopType = video->currVop->predictionType;
+    mb_coded = ((VopType == I_VOP) ? TRUE : !BitstreamRead1Bits_INLINE(stream));
+
+    if (!mb_coded)
+    {
+        /* skipped macroblock */
+        Mode[mbnum] = MODE_SKIPPED;
+        //oscl_memset(DCAC_row, 0, sizeof(typeDCACStore));   /*  SKIPPED_ACDC */
+        //oscl_memset(DCAC_col, 0, sizeof(typeDCACStore));
+        ZERO_OUT_64BYTES(DCAC_row);
+        ZERO_OUT_64BYTES(DCAC_col); /*  08/12/05 */
+
+        for (comp = 0; comp < 6; comp++)
+        {
+            (*DC)[comp] = mid_gray;
+        }
+    }
+    else
+    {
+        /* coded macroblock */
+        if (VopType == I_VOP)
+        {
+            MCBPC = PV_VlcDecMCBPC_com_intra(stream);
+        }
+        else
+        {
+#ifdef PV_ANNEX_IJKT_SUPPORT
+            if (!video->deblocking)
+            {
+                MCBPC = PV_VlcDecMCBPC_com_inter(stream);
+            }
+            else
+            {
+                MCBPC = PV_VlcDecMCBPC_com_inter_H263(stream);
+            }
+#else
+            MCBPC = PV_VlcDecMCBPC_com_inter(stream);
+#endif
+        }
+
+        if (VLC_ERROR_DETECTED(MCBPC))
+        {
+            return PV_FAIL;
+        }
+
+        Mode[mbnum] = (uint8)(MBtype = MBtype_mode[MCBPC & 7]);
+        CBPC = (MCBPC >> 4) & 3;
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+        if (MBtype & INTRA_MASK)
+        {
+            if (!video->shortVideoHeader)
+            {
+                video->acPredFlag[mbnum] = (uint8) BitstreamRead1Bits(stream);
+            }
+            else
+            {
+                if (video->advanced_INTRA)
+                {
+                    if (!BitstreamRead1Bits(stream))
+                    {
+                        video->acPredFlag[mbnum] = 0;
+                    }
+                    else
+                    {
+                        video->acPredFlag[mbnum] = 1;
+                        if (BitstreamRead1Bits(stream))
+                        {
+                            video->mblock->direction = 0;
+                        }
+                        else
+                        {
+                            video->mblock->direction = 1;
+                        }
+                    }
+                }
+                else
+                {
+                    video->acPredFlag[mbnum] = 0;
+                }
+            }
+        }
+#else
+        if ((MBtype & INTRA_MASK) && !video->shortVideoHeader)
+        {
+            video->acPredFlag[mbnum] = (uint8) BitstreamRead1Bits_INLINE(stream);
+        }
+        else
+        {
+            video->acPredFlag[mbnum] = 0;
+        }
+#endif
+        CBPY = PV_VlcDecCBPY(stream, MBtype & INTRA_MASK); /* INTRA || INTRA_Q */
+        if (CBPY < 0)
+        {
+            return PV_FAIL;
+        }
+
+        // GW 04/23/99
+        video->headerInfo.CBP[mbnum] = (uint8)(CBPY << 2 | (CBPC & 3));
+#ifdef PV_ANNEX_IJKT_SUPPORT
+        if (MBtype & Q_MASK)
+        {
+            if (!video->modified_quant)
+            {
+                DQUANT = BitstreamReadBits16(stream, 2);
+                *QP += DQ_tab[DQUANT];
+
+                if (*QP < 1) *QP = 1;
+                else if (*QP > 31) *QP = 31;
+                video->QP_CHR = *QP;  /* ANNEX_T */
+            }
+            else
+            {
+                if (BitstreamRead1Bits(stream))
+                {
+                    if (BitstreamRead1Bits(stream))
+                    {
+                        *QP += DQ_tab_Annex_T_11[*QP];
+                    }
+                    else
+                    {
+                        *QP += DQ_tab_Annex_T_10[*QP];
+                    }
+                    if (*QP < 1) *QP = 1;
+                    else if (*QP > 31) *QP = 31;
+                }
+                else
+                {
+                    *QP = (int16)BitstreamReadBits16(stream, 5);
+                }
+                video->QP_CHR =  MQ_chroma_QP_table[*QP];
+            }
+        }
+#else
+        if (MBtype & Q_MASK)
+        {
+            DQUANT = BitstreamReadBits16(stream, 2);
+            *QP += DQ_tab[DQUANT];
+
+            if (*QP < 1) *QP = 1;
+            else if (*QP > 31) *QP = 31;
+        }
+#endif
+    }
+    return PV_SUCCESS;
+}
+
+
+
+
+
+/***********************************************************CommentBegin******
+*       3/10/00  : initial modification to the
+*                new PV-Decoder Lib format.
+*       4/2/2000 : Cleanup and error-handling modification.  This
+*                   function has been divided into several sub-functions for
+*                   better coding style and maintainance reason.  I also
+*                   greatly shrunk the code size here.
+*       9/18/2000 : VlcDecode+Dequant optimization *
+*       4/01/2001 : new ACDC prediction structure
+*       3/29/2002 : removed GetIntraMB and GetInterMB
+***********************************************************CommentEnd********/
+PV_STATUS GetMBData(VideoDecData *video)
+{
+    BitstreamDecVideo *stream = video->bitstream;
+    int mbnum = video->mbnum;
+    MacroBlock *mblock = video->mblock;
+    int16 *dataBlock;
+    PIXEL *c_comp;
+    uint mode = video->headerInfo.Mode[mbnum];
+    uint CBP = video->headerInfo.CBP[mbnum];
+    typeDCStore *DC = video->predDC + mbnum;
+    int intra_dc_vlc_thr = video->currVop->intraDCVlcThr;
+    int16 QP = video->QPMB[mbnum];
+    int16 QP_tmp = QP;
+    int width = video->width;
+    int  comp;
+    int  switched;
+    int ncoeffs[6] = {0, 0, 0, 0, 0, 0};
+    int *no_coeff = mblock->no_coeff;
+    int16 DC_coeff;
+    PV_STATUS status;
+
+#ifdef PV_POSTPROC_ON
+    /* post-processing */
+    uint8 *pp_mod[6];
+    int TotalMB = video->nTotalMB;
+    int MB_in_width = video->nMBPerRow;
+#endif
+    int y_pos = video->mbnum_row;
+    int x_pos = video->mbnum_col;
+    int32 offset = (int32)(y_pos << 4) * width + (x_pos << 4);
+
+    /* Decode each 8-by-8 blocks. comp 0 ~ 3 are luminance blocks, 4 ~ 5 */
+    /*  are chrominance blocks.   04/03/2000.                          */
+#ifdef PV_POSTPROC_ON
+    if (video->postFilterType != PV_NO_POST_PROC)
+    {
+        /** post-processing ***/
+        pp_mod[0] = video->pstprcTypCur + (y_pos << 1) * (MB_in_width << 1) + (x_pos << 1);
+        pp_mod[1] = pp_mod[0] + 1;
+        pp_mod[2] = pp_mod[0] + (MB_in_width << 1);
+        pp_mod[3] = pp_mod[2] + 1;
+        pp_mod[4] = video->pstprcTypCur + (TotalMB << 2) + mbnum;
+        pp_mod[5] = pp_mod[4] + TotalMB;
+    }
+#endif
+
+    /*  oscl_memset(mblock->block, 0, sizeof(typeMBStore));    Aug 9,2005 */
+
+    if (mode & INTRA_MASK) /* MODE_INTRA || MODE_INTRA_Q */
+    {
+        switched = 0;
+        if (intra_dc_vlc_thr)
+        {
+            if (video->usePrevQP)
+                QP_tmp = video->QPMB[mbnum-1];   /* running QP  04/26/01 */
+
+            switched = (intra_dc_vlc_thr == 7 || QP_tmp >= intra_dc_vlc_thr * 2 + 11);
+        }
+
+        mblock->DCScalarLum = cal_dc_scaler(QP, LUMINANCE_DC_TYPE);   /*  3/01/01 */
+        mblock->DCScalarChr = cal_dc_scaler(QP, CHROMINANCE_DC_TYPE);
+
+        for (comp = 0; comp < 6; comp++)
+        {
+            dataBlock = mblock->block[comp];    /* 10/20/2000 */
+
+            if (video->shortVideoHeader)
+            {
+#ifdef PV_ANNEX_IJKT_SUPPORT
+                if (!video->advanced_INTRA)
+                {
+#endif
+                    DC_coeff = (int16) BitstreamReadBits16_INLINE(stream, 8);
+
+                    if ((DC_coeff & 0x7f) == 0) /* 128 & 0  */
+                    {
+                        /* currently we will only signal FAIL for 128. We will ignore the 0 case  */
+                        if (DC_coeff == 128)
+                        {
+                            return PV_FAIL;
+                        }
+                        else
+                        {
+                            VideoDecoderErrorDetected(video);
+                        }
+                    }
+                    if (DC_coeff == 255)
+                    {
+                        DC_coeff = 128;
+                    }
+                    dataBlock[0] = (int16) DC_coeff;
+#ifdef PV_ANNEX_IJKT_SUPPORT
+                }
+#endif
+                ncoeffs[comp] = VlcDequantH263IntraBlock_SH(video, comp, mblock->bitmapcol[comp], &mblock->bitmaprow[comp]);
+
+            }
+            else
+            {
+                if (switched == 0)
+                {
+                    status = PV_DecodePredictedIntraDC(comp, stream, &DC_coeff);
+                    if (status != PV_SUCCESS) return PV_FAIL;
+
+                    dataBlock[0] = (int16) DC_coeff;
+                }
+                ncoeffs[comp] = VlcDequantH263IntraBlock(video, comp,
+                                switched, mblock->bitmapcol[comp], &mblock->bitmaprow[comp]);
+            }
+
+            if (VLC_ERROR_DETECTED(ncoeffs[comp]))
+            {
+                if (switched)
+                    return PV_FAIL;
+                else
+                {
+                    ncoeffs[comp] = 1;
+                    oscl_memset((dataBlock + 1), 0, sizeof(int16)*63);
+                }
+            }
+            no_coeff[comp] = ncoeffs[comp];
+
+#ifdef PV_POSTPROC_ON
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[comp] = (uint8) PostProcSemaphore(dataBlock);
+#endif
+        }
+        MBlockIDCT(video);
+    }
+    else      /* INTER modes */
+    {   /*  moved it here Aug 15, 2005 */
+        /* decode the motion vector (if there are any) */
+        status = PV_GetMBvectors(video, mode);
+        if (status != PV_SUCCESS)
+        {
+            return status;
+        }
+
+
+        MBMotionComp(video, CBP);
+        c_comp  = video->currVop->yChan + offset;
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+        for (comp = 0; comp < 4; comp++)
+        {
+            (*DC)[comp] = mid_gray;
+            if (CBP & (1 << (5 - comp)))
+            {
+                ncoeffs[comp] = VlcDequantH263InterBlock(video, comp, mblock->bitmapcol[comp], &mblock->bitmaprow[comp]);
+                if (VLC_ERROR_DETECTED(ncoeffs[comp])) return PV_FAIL;
+
+                BlockIDCT(c_comp + (comp&2)*(width << 2) + 8*(comp&1), mblock->pred_block + (comp&2)*64 + 8*(comp&1), mblock->block[comp], width, ncoeffs[comp],
+                          mblock->bitmapcol[comp], mblock->bitmaprow[comp]);
+
+#ifdef PV_POSTPROC_ON
+                /* for inter just test for ringing */
+                if (video->postFilterType != PV_NO_POST_PROC)
+                    *pp_mod[comp] = (uint8)((ncoeffs[comp] > 3) ? 4 : 0);
+#endif
+            }
+            else
+            {
+                /* no IDCT for all zeros blocks  03/28/2002 */
+                /*              BlockIDCT();                */
+#ifdef PV_POSTPROC_ON
+                if (video->postFilterType != PV_NO_POST_PROC)
+                    *pp_mod[comp] = 0;
+#endif
+            }
+        }
+
+        video->QPMB[mbnum] = video->QP_CHR;     /* ANNEX_T */
+
+
+
+        (*DC)[4] = mid_gray;
+        if (CBP & 2)
+        {
+            ncoeffs[4] = VlcDequantH263InterBlock(video, 4, mblock->bitmapcol[4], &mblock->bitmaprow[4]);
+            if (VLC_ERROR_DETECTED(ncoeffs[4])) return PV_FAIL;
+
+            BlockIDCT(video->currVop->uChan + (offset >> 2) + (x_pos << 2), mblock->pred_block + 256, mblock->block[4], width >> 1, ncoeffs[4],
+                      mblock->bitmapcol[4], mblock->bitmaprow[4]);
+
+#ifdef PV_POSTPROC_ON
+            /* for inter just test for ringing */
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[4] = (uint8)((ncoeffs[4] > 3) ? 4 : 0);
+#endif
+        }
+        else
+        {
+            /* no IDCT for all zeros blocks  03/28/2002 */
+            /*              BlockIDCT();                */
+#ifdef PV_POSTPROC_ON
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[4] = 0;
+#endif
+        }
+        (*DC)[5] = mid_gray;
+        if (CBP & 1)
+        {
+            ncoeffs[5] = VlcDequantH263InterBlock(video, 5, mblock->bitmapcol[5], &mblock->bitmaprow[5]);
+            if (VLC_ERROR_DETECTED(ncoeffs[5])) return PV_FAIL;
+
+            BlockIDCT(video->currVop->vChan + (offset >> 2) + (x_pos << 2), mblock->pred_block + 264, mblock->block[5], width >> 1, ncoeffs[5],
+                      mblock->bitmapcol[5], mblock->bitmaprow[5]);
+
+#ifdef PV_POSTPROC_ON
+            /* for inter just test for ringing */
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[5] = (uint8)((ncoeffs[5] > 3) ? 4 : 0);
+#endif
+        }
+        else
+        {
+            /* no IDCT for all zeros blocks  03/28/2002 */
+            /*              BlockIDCT();                */
+#ifdef PV_POSTPROC_ON
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[5] = 0;
+#endif
+        }
+        video->QPMB[mbnum] = QP;  /* restore the QP values  ANNEX_T*/
+#else
+        for (comp = 0; comp < 4; comp++)
+        {
+            (*DC)[comp] = mid_gray;
+            if (CBP & (1 << (5 - comp)))
+            {
+                ncoeffs[comp] = VlcDequantH263InterBlock(video, comp, mblock->bitmapcol[comp], &mblock->bitmaprow[comp]);
+                if (VLC_ERROR_DETECTED(ncoeffs[comp])) return PV_FAIL;
+
+                BlockIDCT(c_comp + (comp&2)*(width << 2) + 8*(comp&1), mblock->pred_block + (comp&2)*64 + 8*(comp&1), mblock->block[comp], width, ncoeffs[comp],
+                          mblock->bitmapcol[comp], mblock->bitmaprow[comp]);
+
+#ifdef PV_POSTPROC_ON
+                /* for inter just test for ringing */
+                if (video->postFilterType != PV_NO_POST_PROC)
+                    *pp_mod[comp] = (uint8)((ncoeffs[comp] > 3) ? 4 : 0);
+#endif
+            }
+            else
+            {
+                /* no IDCT for all zeros blocks  03/28/2002 */
+                /*              BlockIDCT();                */
+#ifdef PV_POSTPROC_ON
+                if (video->postFilterType != PV_NO_POST_PROC)
+                    *pp_mod[comp] = 0;
+#endif
+            }
+        }
+
+        (*DC)[4] = mid_gray;
+        if (CBP & 2)
+        {
+            ncoeffs[4] = VlcDequantH263InterBlock(video, 4, mblock->bitmapcol[4], &mblock->bitmaprow[4]);
+            if (VLC_ERROR_DETECTED(ncoeffs[4])) return PV_FAIL;
+
+            BlockIDCT(video->currVop->uChan + (offset >> 2) + (x_pos << 2), mblock->pred_block + 256, mblock->block[4], width >> 1, ncoeffs[4],
+                      mblock->bitmapcol[4], mblock->bitmaprow[4]);
+
+#ifdef PV_POSTPROC_ON
+            /* for inter just test for ringing */
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[4] = (uint8)((ncoeffs[4] > 3) ? 4 : 0);
+#endif
+        }
+        else
+        {
+            /* no IDCT for all zeros blocks  03/28/2002 */
+            /*              BlockIDCT();                */
+#ifdef PV_POSTPROC_ON
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[4] = 0;
+#endif
+        }
+        (*DC)[5] = mid_gray;
+        if (CBP & 1)
+        {
+            ncoeffs[5] = VlcDequantH263InterBlock(video, 5, mblock->bitmapcol[5], &mblock->bitmaprow[5]);
+            if (VLC_ERROR_DETECTED(ncoeffs[5])) return PV_FAIL;
+
+            BlockIDCT(video->currVop->vChan + (offset >> 2) + (x_pos << 2), mblock->pred_block + 264, mblock->block[5], width >> 1, ncoeffs[5],
+                      mblock->bitmapcol[5], mblock->bitmaprow[5]);
+
+#ifdef PV_POSTPROC_ON
+            /* for inter just test for ringing */
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[5] = (uint8)((ncoeffs[5] > 3) ? 4 : 0);
+#endif
+        }
+        else
+        {
+            /* no IDCT for all zeros blocks  03/28/2002 */
+            /*              BlockIDCT();                */
+#ifdef PV_POSTPROC_ON
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[5] = 0;
+#endif
+#endif  // PV_ANNEX_IJKT_SUPPORT
+
+
+
+
+
+
+    }
+
+    video->usePrevQP = 1;          /* should be set after decoding the first Coded  04/27/01 */
+    return PV_SUCCESS;
+}
+
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/conceal.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/conceal.cpp
new file mode 100644
index 0000000..e9ead01
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/conceal.cpp
@@ -0,0 +1,193 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "mp4dec_lib.h" /* video decoder function prototypes */
+#include "vlc_decode.h"
+#include "bitstream.h"
+#include "scaling.h"
+
+/* ====================================================================== /
+Function : ConcealTexture_I()
+Date     : 06/12/2001
+Purpose  : Conceal texture for I-partition
+In/out   :
+Return   :
+Modified :
+/ ====================================================================== */
+void ConcealTexture_I(VideoDecData *video, int32 startFirstPartition, int mb_start, int mb_stop, int slice_counter)
+{
+    int mbnum;
+    BitstreamDecVideo *stream = video->bitstream;
+    int16 QP;
+    int intra_dc_vlc_thr = video->currVop->intraDCVlcThr;
+
+    movePointerTo(stream, startFirstPartition);
+
+    video->usePrevQP = 0;
+    for (mbnum = mb_start; mbnum < mb_stop; mbnum++)
+    {
+        video->mbnum = mbnum;
+        video->mbnum_row = PV_GET_ROW(mbnum, video->nMBPerRow);
+        video->mbnum_col = mbnum - video->mbnum_row * video->nMBPerRow;
+        video->sliceNo[mbnum] = (uint8) slice_counter;
+        QP = video->QPMB[mbnum];
+        PV_VlcDecMCBPC_com_intra(stream);
+        GetMBheaderDataPart_DQUANT_DC(video, &QP);
+
+        if (intra_dc_vlc_thr)
+        {
+            if (video->usePrevQP)
+                QP = video->QPMB[mbnum-1];
+            if (intra_dc_vlc_thr == 7 || QP >= intra_dc_vlc_thr*2 + 11)  /* if switched then conceal from previous frame  */
+            {
+                ConcealPacket(video, mbnum, mb_stop, slice_counter);
+                video->mbnum = mb_stop - 1;
+                video->mbnum_row = PV_GET_ROW(video->mbnum, video->nMBPerRow);
+                video->mbnum_col = video->mbnum - video->mbnum_row * video->nMBPerRow;
+                break;
+            }
+        }
+
+        video->headerInfo.CBP[mbnum] = 0;
+        video->acPredFlag[mbnum] = 0;
+        GetMBData_DataPart(video);
+        video->usePrevQP = 1;
+    }
+    return;
+}
+
+/* ====================================================================== /
+Function : ConcealTexture_P()
+Date     : 05/16/2000
+Purpose  : Conceal texture for P-partition
+In/out   :
+Return   :
+/ ====================================================================== */
+
+void ConcealTexture_P(VideoDecData *video, int mb_start, int mb_stop, int slice_counter)
+{
+    int mbnum;
+
+    for (mbnum = mb_start; mbnum < mb_stop; mbnum++)
+    {
+        video->mbnum = mbnum;
+        video->mbnum_row = PV_GET_ROW(mbnum, video->nMBPerRow);
+        video->mbnum_col = mbnum - video->mbnum_row * video->nMBPerRow;
+        video->sliceNo[mbnum] = (uint8) slice_counter;
+        oscl_memset(video->mblock->block, 0, sizeof(typeMBStore));
+        /*  to get rid of dark region caused by INTRA blocks */
+        /* 05/19/2000 */
+        if (video->headerInfo.Mode[mbnum] & INTER_MASK)
+        {
+            MBMotionComp(video, 0);
+        }
+        else
+        {
+            video->headerInfo.Mode[mbnum] = MODE_SKIPPED;
+            SkippedMBMotionComp(video);
+        }
+    }
+
+    return;
+}
+
+/***************************************************************
+Function:   ConcealPacket
+Purpose :   Conceal motion and texture of a packet by direct
+copying from previous frame.
+Returned:   void
+Modified:
+*************************************************************/
+void ConcealPacket(VideoDecData *video,
+                   int mb_start,
+                   int mb_stop,
+                   int slice_counter)
+{
+    int i;
+    for (i = mb_start; i < mb_stop; i++)
+    {
+        CopyVopMB(video->currVop, video->concealFrame, i, video->width, video->height);
+        video->sliceNo[i] = (uint8) slice_counter;
+        video->headerInfo.Mode[i] = MODE_SKIPPED;
+    }
+
+    return;
+}
+
+/****************************************************************************
+Function:   CopyVopMB
+Purpose :   Fill a macroblock with previous Vop.
+Returned    :   void
+Modified:   6/04/2001 rewrote the function
+            copies from concealFrame
+****************************************************************************/
+void CopyVopMB(Vop *curr, uint8 *prevFrame, int mbnum, int width_Y, int height)
+{
+    int width_C = width_Y >> 1;
+    int row = MB_SIZE;
+    uint8              *y1, *y2, *u1, *u2, *v1, *v2;
+    int xpos, ypos, MB_in_width;
+    int32 lumstart, chrstart, size;
+
+    MB_in_width = (width_Y + 15) >> 4;
+    ypos = PV_GET_ROW(mbnum, MB_in_width);
+    xpos = mbnum - ypos * MB_in_width;
+    lumstart = (ypos << 4) * (int32)width_Y  + (xpos << 4);
+    chrstart = (ypos << 3) * (int32)width_C  + (xpos << 3);
+
+    size = (int32)height * width_Y;
+
+    y1 =  curr->yChan + lumstart;
+    u1 =  curr->uChan + chrstart;
+    v1 =  curr->vChan + chrstart;
+    y2 =  prevFrame + lumstart;
+    u2 =  prevFrame + size + chrstart;
+    v2 =  prevFrame + size + (size >> 2) + chrstart;
+    while (row)
+    {
+        oscl_memcpy(y1, y2, MB_SIZE);
+        y1 += width_Y;
+        y2 += width_Y;
+        oscl_memcpy(y1, y2, MB_SIZE);
+        y1 += width_Y;
+        y2 += width_Y;
+        oscl_memcpy(y1, y2, MB_SIZE);
+        y1 += width_Y;
+        y2 += width_Y;
+        oscl_memcpy(y1, y2, MB_SIZE);
+        y1 += width_Y;
+        y2 += width_Y;
+
+        oscl_memcpy(u1, u2, B_SIZE);
+        u1 += width_C;
+        u2 += width_C;
+        oscl_memcpy(u1, u2, B_SIZE);
+        u1 += width_C;
+        u2 += width_C;
+
+        oscl_memcpy(v1, v2, B_SIZE);
+        v1 += width_C;
+        v2 += width_C;
+        oscl_memcpy(v1, v2, B_SIZE);
+        v1 += width_C;
+        v2 += width_C;
+
+        row -= 4;
+    }
+    return;
+}               /* CopyVopMB */
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/datapart_decode.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/datapart_decode.cpp
new file mode 100644
index 0000000..00db04b
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/datapart_decode.cpp
@@ -0,0 +1,794 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "mp4dec_lib.h"
+#include "vlc_decode.h"
+#include "bitstream.h"
+#include "scaling.h"
+#include "mbtype_mode.h"
+#include "idct.h"
+
+#define OSCL_DISABLE_WARNING_CONDITIONAL_IS_CONSTANT
+/* ======================================================================== */
+/*  Function : DecodeFrameDataPartMode()                                    */
+/*  Purpose  : Decode a frame of MPEG4 bitstream in datapartitioning mode.  */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Modified :                                                              */
+/*                                                                          */
+/*      04/25/2000 : Rewrite the data partitioning path completely  */
+/*                           according to the pseudo codes in MPEG-4        */
+/*                           standard.                                      */
+/*  Modified : 09/18/2000 add fast VlcDecode+Dequant                    */
+/*             04/17/2001 cleanup                                       */
+/* ======================================================================== */
+PV_STATUS DecodeFrameDataPartMode(VideoDecData *video)
+{
+    PV_STATUS status;
+    Vop *currVop = video->currVop;
+    BitstreamDecVideo *stream = video->bitstream;
+
+    int nMBPerRow = video->nMBPerRow;
+
+    int vopType = currVop->predictionType;
+    int mbnum;
+    int nTotalMB = video->nTotalMB;
+    int slice_counter;
+    int resync_marker_length;
+
+    /* copy and pad to prev_Vop for INTER coding */
+    switch (vopType)
+    {
+        case I_VOP :
+//      oscl_memset(Mode, MODE_INTRA, sizeof(uint8)*nTotalMB);
+            resync_marker_length = 17;
+            break;
+        case P_VOP :
+            oscl_memset(video->motX, 0, sizeof(MOT)*4*nTotalMB);
+            oscl_memset(video->motY, 0, sizeof(MOT)*4*nTotalMB);
+//      oscl_memset(Mode, MODE_INTER, sizeof(uint8)*nTotalMB);
+            resync_marker_length = 16 + currVop->fcodeForward;
+            break;
+        default :
+            mp4dec_log("DecodeFrameDataPartMode(): Vop type not supported.\n");
+            return PV_FAIL;
+    }
+
+    /** Initialize sliceNo ***/
+    mbnum = slice_counter = 0;
+//  oscl_memset(video->sliceNo, 0, sizeof(uint8)*nTotalMB);
+
+    do
+    {
+        /* This section is equivalent to motion_shape_texture() */
+        /* in the MPEG-4 standard.            04/13/2000      */
+        video->mbnum = mbnum;
+        video->mbnum_row = PV_GET_ROW(mbnum, nMBPerRow);   /*  This is needed if nbnum is read from the packet header */
+        video->mbnum_col = mbnum - video->mbnum_row * nMBPerRow;
+
+        switch (vopType)
+        {
+            case I_VOP :
+                status = DecodeDataPart_I_VideoPacket(video, slice_counter);
+                break;
+
+            case P_VOP :
+                status = DecodeDataPart_P_VideoPacket(video, slice_counter);
+                break;
+
+            default :
+                mp4dec_log("DecodeFrameDataPartMode(): Vop type not supported.\n");
+                return PV_FAIL;
+        }
+
+        while ((status = PV_ReadVideoPacketHeader(video, &mbnum)) == PV_FAIL)
+        {
+            if ((status = quickSearchVideoPacketHeader(stream, resync_marker_length)) != PV_SUCCESS)
+            {
+                break;
+            }
+        }
+
+        if (status == PV_END_OF_VOP)
+        {
+            mbnum = nTotalMB;
+        }
+
+        if (mbnum > video->mbnum + 1)
+        {
+            ConcealPacket(video, video->mbnum, mbnum, slice_counter);
+        }
+        slice_counter++;
+        if (mbnum >= nTotalMB)
+        {
+            break;
+        }
+
+
+    }
+    while (TRUE);
+
+    return PV_SUCCESS;
+}
+
+
+/* ======================================================================== */
+/*  Function : DecodeDataPart_I_VideoPacket()                               */
+/*  Date     : 04/25/2000                                                   */
+/*  Purpose  : Decode Data Partitioned Mode Video Packet in I-VOP           */
+/*  In/out   :                                                              */
+/*  Return   : PV_SUCCESS if successed, PV_FAIL if failed.                  */
+/*  Modified : 09/18/2000 add fast VlcDecode+Dequant                    */
+/*             04/01/2001 fixed MB_stuffing, removed unnecessary code   */
+/* ======================================================================== */
+PV_STATUS DecodeDataPart_I_VideoPacket(VideoDecData *video, int slice_counter)
+{
+    PV_STATUS status;
+    uint8 *Mode = video->headerInfo.Mode;
+    BitstreamDecVideo *stream = video->bitstream;
+    int  nTotalMB = video->nTotalMB;
+    int  mbnum, mb_start, mb_end;
+    int16 QP, *QPMB = video->QPMB;
+    int  MBtype, MCBPC, CBPY;
+    uint32 tmpvar;
+    uint code;
+    int nMBPerRow = video->nMBPerRow;
+    Bool valid_stuffing;
+    int32 startSecondPart, startFirstPart = getPointer(stream);
+
+    /* decode the first partition */
+    QP = video->currVop->quantizer;
+    mb_start = mbnum = video->mbnum;
+    video->usePrevQP = 0;         /*  04/27/01 */
+
+
+    BitstreamShowBits16(stream, 9, &code);
+    while (code == 1)
+    {
+        PV_BitstreamFlushBits(stream, 9);
+        BitstreamShowBits16(stream, 9, &code);
+    }
+
+    do
+    {
+        /* decode COD, MCBPC, ACpred_flag, CPBY and DQUANT */
+        MCBPC = PV_VlcDecMCBPC_com_intra(stream);
+
+        if (!VLC_ERROR_DETECTED(MCBPC))
+        {
+            Mode[mbnum] = (uint8)(MBtype = MBtype_mode[MCBPC & 7]);
+            video->headerInfo.CBP[mbnum] = (uint8)((MCBPC >> 4) & 3);
+            status = GetMBheaderDataPart_DQUANT_DC(video, &QP);
+            video->usePrevQP = 1;        /* set it after the first coded MB      04/27/01 */
+        }
+        else
+        {
+            /* Report the error to the application.   06/20/2000 */
+            VideoDecoderErrorDetected(video);
+            video->mbnum = mb_start;
+            movePointerTo(stream, startFirstPart);
+            return PV_FAIL;
+        }
+
+        video->sliceNo[mbnum] = (uint8) slice_counter;
+        QPMB[mbnum] = QP;
+        video->mbnum = ++mbnum;
+
+        BitstreamShowBits16(stream, 9, &code);
+        while (code == 1)
+        {
+            PV_BitstreamFlushBits(stream, 9);
+            BitstreamShowBits16(stream, 9, &code);
+        }
+        /* have we reached the end of the video packet or vop? */
+        status = BitstreamShowBits32(stream, DC_MARKER_LENGTH, &tmpvar);
+
+    }
+    while (tmpvar != DC_MARKER && video->mbnum < nTotalMB);
+
+    if (tmpvar == DC_MARKER)
+    {
+        PV_BitstreamFlushBits(stream, DC_MARKER_LENGTH);
+    }
+    else
+    {
+        status = quickSearchDCM(stream);
+        if (status == PV_SUCCESS)
+        {
+            /* only way you can end up being here is in the last packet,and there is stuffing at
+            the end of the first partition */
+            PV_BitstreamFlushBits(stream, DC_MARKER_LENGTH);
+        }
+        else
+        {
+            /* Report the error to the application.   06/20/2000 */
+            VideoDecoderErrorDetected(video);
+            movePointerTo(stream, startFirstPart);
+            video->mbnum = mb_start;
+            /* concealment will be taken care of in the upper layer */
+            return PV_FAIL;
+        }
+    }
+
+    /* decode the second partition */
+    startSecondPart = getPointer(stream);
+
+    mb_end = video->mbnum;
+
+    for (mbnum = mb_start; mbnum < mb_end; mbnum++)
+    {
+        MBtype = Mode[mbnum];
+        /* No skipped mode in I-packets  3/1/2001    */
+        video->mbnum = mbnum;
+
+        video->mbnum_row = PV_GET_ROW(mbnum, nMBPerRow);   /*  This is needed if nbnum is read from the packet header */
+        video->mbnum_col = mbnum - video->mbnum_row * nMBPerRow;
+        /* there is always acdcpred in DataPart mode  04/10/01 */
+        video->acPredFlag[mbnum] = (uint8) BitstreamRead1Bits(stream);
+
+        CBPY = PV_VlcDecCBPY(stream, MBtype & INTRA_MASK); /* MODE_INTRA || MODE_INTRA_Q */
+        if (CBPY < 0)
+        {
+            /* Report the error to the application.   06/20/2000 */
+            VideoDecoderErrorDetected(video);
+            movePointerTo(stream, startSecondPart); /*  */
+            /* Conceal packet,  05/15/2000 */
+            ConcealTexture_I(video, startFirstPart, mb_start, mb_end, slice_counter);
+            return PV_FAIL;
+        }
+
+        video->headerInfo.CBP[mbnum] |= (uint8)(CBPY << 2);
+    }
+
+    video->usePrevQP = 0;
+
+    for (mbnum = mb_start; mbnum < mb_end; mbnum++)
+    {
+        video->mbnum = mbnum;
+
+        video->mbnum_row = PV_GET_ROW(mbnum , nMBPerRow);  /*  This is needed if nbnum is read from the packet header */
+        video->mbnum_col = mbnum - video->mbnum_row * nMBPerRow;
+        /* No skipped mode in I-packets  3/1/2001    */
+        /* decode the DCT coeficients for the MB */
+        status = GetMBData_DataPart(video);
+        if (status != PV_SUCCESS)
+        {
+            /* Report the error to the application.   06/20/2000 */
+            VideoDecoderErrorDetected(video);
+            movePointerTo(stream, startSecondPart); /*  */
+            /* Conceal packet,  05/15/2000 */
+            ConcealTexture_I(video, startFirstPart, mb_start, mb_end, slice_counter);
+            return status;
+        }
+        video->usePrevQP = 1;           /*  04/27/01 should be set after decoding first MB */
+    }
+
+    valid_stuffing = validStuffing(stream);
+    if (!valid_stuffing)
+    {
+        VideoDecoderErrorDetected(video);
+        movePointerTo(stream, startSecondPart);
+        ConcealTexture_I(video, startFirstPart, mb_start, mb_end, slice_counter);
+        return PV_FAIL;
+    }
+    return PV_SUCCESS;
+}
+
+
+/* ======================================================================== */
+/*  Function : DecodeDataPart_P_VideoPacket()                               */
+/*  Date     : 04/25/2000                                                   */
+/*  Purpose  : Decode Data Partitioned Mode Video Packet in P-VOP           */
+/*  In/out   :                                                              */
+/*  Return   : PV_SUCCESS if successed, PV_FAIL if failed.                  */
+/*  Modified :   09/18/2000,  fast VlcDecode+Dequant                        */
+/*              04/13/2001,  fixed MB_stuffing, new ACDC pred structure,  */
+/*                              cleanup                                     */
+/*              08/07/2001,  remove MBzero                              */
+/* ======================================================================== */
+PV_STATUS DecodeDataPart_P_VideoPacket(VideoDecData *video, int slice_counter)
+{
+    PV_STATUS status;
+    uint8 *Mode = video->headerInfo.Mode;
+    BitstreamDecVideo *stream = video->bitstream;
+    int nTotalMB = video->nTotalMB;
+    int mbnum, mb_start, mb_end;
+    int16 QP, *QPMB = video->QPMB;
+    int MBtype, CBPY;
+    Bool valid_stuffing;
+    int intra_MB;
+    uint32 tmpvar;
+    uint code;
+    int32  startFirstPart, startSecondPart;
+    int nMBPerRow = video->nMBPerRow;
+    uint8 *pbyte;
+    /* decode the first partition */
+    startFirstPart = getPointer(stream);
+    mb_start = video->mbnum;
+    video->usePrevQP = 0;            /*  04/27/01 */
+
+    BitstreamShowBits16(stream, 10, &code);
+    while (code == 1)
+    {
+        PV_BitstreamFlushBits(stream, 10);
+        BitstreamShowBits16(stream, 10, &code);
+    }
+
+    do
+    {
+        /* decode COD, MCBPC, ACpred_flag, CPBY and DQUANT */
+        /* We have to discard stuffed MB header */
+
+        status = GetMBheaderDataPart_P(video);
+
+        if (status != PV_SUCCESS)
+        {
+            /* Report the error to the application.   06/20/2000 */
+            VideoDecoderErrorDetected(video);
+            movePointerTo(stream, startFirstPart);
+            video->mbnum = mb_start;
+            return PV_FAIL;
+        }
+
+        /* we must update slice_counter before motion vector decoding.   */
+        video->sliceNo[video->mbnum] = (uint8) slice_counter;
+
+        if (Mode[video->mbnum] & INTER_MASK) /* INTER || INTER_Q || INTER_4V */
+        {
+            /* decode the motion vector (if there are any) */
+            status = PV_GetMBvectors(video, Mode[video->mbnum]);
+            if (status != PV_SUCCESS)
+            {
+                /* Report the error to the application.   06/20/2000 */
+                VideoDecoderErrorDetected(video);
+                movePointerTo(stream, startFirstPart);
+                video->mbnum = mb_start;
+                return PV_FAIL;
+            }
+        }
+        video->mbnum++;
+
+        video->mbnum_row = PV_GET_ROW(video->mbnum, nMBPerRow);   /*  This is needed if mbnum is read from the packet header */
+        video->mbnum_col = video->mbnum - video->mbnum_row * nMBPerRow;
+
+        BitstreamShowBits16(stream, 10, &code);
+        while (code == 1)
+        {
+            PV_BitstreamFlushBits(stream, 10);
+            BitstreamShowBits16(stream, 10, &code);
+        }
+        /* have we reached the end of the video packet or vop? */
+        status = BitstreamShowBits32(stream, MOTION_MARKER_COMB_LENGTH, &tmpvar);
+        /*      if (status != PV_SUCCESS && status != PV_END_OF_BUFFER) return status;  */
+    }
+    while (tmpvar != MOTION_MARKER_COMB && video->mbnum < nTotalMB);
+
+    if (tmpvar == MOTION_MARKER_COMB)
+    {
+        PV_BitstreamFlushBits(stream, MOTION_MARKER_COMB_LENGTH);
+    }
+    else
+    {
+        status = quickSearchMotionMarker(stream);
+        if (status == PV_SUCCESS)
+        {
+            /* only way you can end up being here is in the last packet,and there is stuffing at
+            the end of the first partition */
+            PV_BitstreamFlushBits(stream, MOTION_MARKER_COMB_LENGTH);
+        }
+        else
+        {
+            /* Report the error to the application.   06/20/2000 */
+            VideoDecoderErrorDetected(video);
+            movePointerTo(stream, startFirstPart);
+            video->mbnum = mb_start;
+            /* concealment will be taken care of in the upper layer  */
+            return PV_FAIL;
+        }
+    }
+
+    /* decode the second partition */
+    startSecondPart = getPointer(stream);
+    QP = video->currVop->quantizer;
+
+    mb_end = video->mbnum;
+
+    for (mbnum = mb_start; mbnum < mb_end; mbnum++)
+    {
+        MBtype = Mode[mbnum];
+
+        if (MBtype == MODE_SKIPPED)
+        {
+            QPMB[mbnum] = QP; /*  03/01/01 */
+            continue;
+        }
+        intra_MB = (MBtype & INTRA_MASK); /* (MBtype == MODE_INTRA || MBtype == MODE_INTRA_Q) */
+        video->mbnum = mbnum;
+        video->mbnum_row = PV_GET_ROW(mbnum, nMBPerRow);   /*  This is needed if nbnum is read from the packet header */
+        video->mbnum_col = mbnum - video->mbnum_row * nMBPerRow;
+
+        /* there is always acdcprediction in DataPart mode    04/10/01 */
+        if (intra_MB)
+        {
+            video->acPredFlag[mbnum] = (uint8) BitstreamRead1Bits_INLINE(stream);
+        }
+
+        CBPY = PV_VlcDecCBPY(stream, intra_MB);
+        if (CBPY < 0)
+        {
+            /* Report the error to the application.   06/20/2000 */
+            VideoDecoderErrorDetected(video);
+            /* Conceal second partition,  5/15/2000 */
+            movePointerTo(stream, startSecondPart);
+            ConcealTexture_P(video, mb_start, mb_end, slice_counter);
+            return PV_FAIL;
+        }
+
+        video->headerInfo.CBP[mbnum] |= (uint8)(CBPY << 2);
+        if (intra_MB || MBtype == MODE_INTER_Q)                     /*  04/26/01 */
+        {
+            status = GetMBheaderDataPart_DQUANT_DC(video, &QP);
+            if (status != PV_SUCCESS) return status;
+        }
+        video->usePrevQP = 1;        /*  04/27/01 */
+        QPMB[mbnum] = QP;
+    }
+
+    video->usePrevQP = 0;  /*  04/27/01 */
+
+    for (mbnum = mb_start; mbnum < mb_end; mbnum++)
+    {
+        video->mbnum = mbnum;
+        video->mbnum_row = PV_GET_ROW(mbnum, nMBPerRow);  /*  This is needed if nbnum is read from the packet header */
+        video->mbnum_col = mbnum - video->mbnum_row * nMBPerRow;
+
+
+        if (Mode[mbnum] != MODE_SKIPPED)
+        {
+            /* decode the DCT coeficients for the MB */
+            status = GetMBData_DataPart(video);
+            if (status != PV_SUCCESS)
+            {
+                /* Report the error to the application.   06/20/2000 */
+                VideoDecoderErrorDetected(video);
+
+                /* Conceal second partition,  5/15/2000 */
+                movePointerTo(stream, startSecondPart);
+                ConcealTexture_P(video, mb_start, mb_end, slice_counter);
+                return status;
+            }
+            video->usePrevQP = 1;  /*  04/27/01 */
+        }
+        else
+        {   // SKIPPED
+
+            /* Motion compensation and put it to video->mblock->pred_block */
+            SkippedMBMotionComp(video);
+
+            //oscl_memset(video->predDCAC_row + video->mbnum_col, 0, sizeof(typeDCACStore)); /*  SKIPPED_ACDC */
+            //oscl_memset(video->predDCAC_col, 0, sizeof(typeDCACStore));
+            /*  08/08/2005 */
+            pbyte = (uint8*)(video->predDCAC_row + video->mbnum_col);
+            ZERO_OUT_64BYTES(pbyte);
+            pbyte = (uint8*)(video->predDCAC_col);
+            ZERO_OUT_64BYTES(pbyte);
+
+        }
+    }
+
+    valid_stuffing = validStuffing(stream);   /*  */
+    if (!valid_stuffing)
+    {
+        VideoDecoderErrorDetected(video);
+        movePointerTo(stream, startSecondPart); /*  */
+        ConcealTexture_P(video, mb_start, mb_end, slice_counter);
+
+        return PV_FAIL;
+    }
+    return PV_SUCCESS;
+}
+
+
+/* ======================================================================== */
+/*  Function : GetMBheaderDataPart_DQUANT_DC()                              */
+/*  Date     : 04/26/2000                                                   */
+/*  Purpose  : Decode DQUANT and DC in Data Partitioned Mode for both       */
+/*             I-VOP and P-VOP.                                             */
+/*  In/out   :                                                              */
+/*  Return   : PV_SUCCESS if successed, PV_FAIL if failed.                  */
+/*  Modified : 02/13/2001 new ACDC prediction structure,        */
+/*                                       cleanup                            */
+/* ======================================================================== */
+PV_STATUS GetMBheaderDataPart_DQUANT_DC(VideoDecData *video, int16 *QP)
+{
+    PV_STATUS status = PV_SUCCESS;
+    BitstreamDecVideo *stream = video->bitstream;
+    int mbnum = video->mbnum;
+    int intra_dc_vlc_thr = video->currVop->intraDCVlcThr;
+    uint8 *Mode = video->headerInfo.Mode;
+    int  MBtype = Mode[mbnum];
+    typeDCStore *DC = video->predDC + mbnum;
+    int  comp;
+    Bool switched;
+    uint  DQUANT;
+    int16 QP_tmp;
+
+    const static int  DQ_tab[4] = { -1, -2, 1, 2};
+
+    if (MBtype & Q_MASK)             /* INTRA_Q || INTER_Q */
+    {
+        DQUANT = BitstreamReadBits16(stream, 2);
+        *QP += DQ_tab[DQUANT];
+
+        if (*QP < 1) *QP = 1;
+        else if (*QP > 31) *QP = 31;
+    }
+    if (MBtype & INTRA_MASK)  /* INTRA || INTRA_Q */ /* no switch, code DC separately */
+    {
+        QP_tmp = *QP;                      /* running QP  04/26/01*/
+        switched = 0;
+        if (intra_dc_vlc_thr)                 /*  04/27/01 */
+        {
+            if (video->usePrevQP)
+                QP_tmp = video->QPMB[mbnum-1];
+            switched = (intra_dc_vlc_thr == 7 || QP_tmp >= intra_dc_vlc_thr * 2 + 11);
+        }
+        if (!switched)
+        {
+            for (comp = 0; comp < 6; comp++)
+            {
+                status = PV_DecodePredictedIntraDC(comp, stream, (*DC + comp));   /*  03/01/01 */
+                if (status != PV_SUCCESS) return PV_FAIL;
+            }
+        }
+        else
+        {
+            for (comp = 0; comp < 6; comp++)
+            {
+                (*DC)[comp] = 0;   /*  04/26/01 needed for switched case*/
+            }
+        }
+    }
+    return status;
+}
+
+
+/***********************************************************CommentBegin******
+*       04/25/2000 : Initial modification to the new PV Lib format.
+*       04/17/2001 : new ACDC pred structure
+***********************************************************CommentEnd********/
+PV_STATUS GetMBheaderDataPart_P(VideoDecData *video)
+{
+    BitstreamDecVideo *stream = video->bitstream;
+    int mbnum = video->mbnum;
+    uint8 *Mode = video->headerInfo.Mode;
+    typeDCStore *DC = video->predDC + mbnum;
+    uint no_dct_flag;
+    int comp;
+    int MCBPC;
+
+    no_dct_flag = BitstreamRead1Bits_INLINE(stream);
+
+    if (no_dct_flag)
+    {
+        /* skipped macroblock */
+        Mode[mbnum] = MODE_SKIPPED;
+
+        for (comp = 0; comp < 6; comp++)
+        {
+            (*DC)[comp] = mid_gray;
+            /*  ACDC REMOVE AC coefs are set in DecodeDataPart_P */
+        }
+    }
+    else
+    {
+        /* coded macroblock */
+        MCBPC = PV_VlcDecMCBPC_com_inter(stream);
+
+        if (VLC_ERROR_DETECTED(MCBPC))
+        {
+            return PV_FAIL;
+        }
+
+        Mode[mbnum] = (uint8)MBtype_mode[MCBPC & 7];
+        video->headerInfo.CBP[mbnum] = (uint8)((MCBPC >> 4) & 3);
+    }
+
+    return PV_SUCCESS;
+}
+
+
+/***********************************************************CommentBegin******
+*       04/17/01  new ACDC pred structure, reorganized code, cleanup
+***********************************************************CommentEnd********/
+PV_STATUS GetMBData_DataPart(VideoDecData *video)
+{
+    int mbnum = video->mbnum;
+    int16 *dataBlock;
+    MacroBlock *mblock = video->mblock;
+    int QP = video->QPMB[mbnum];
+    int32 offset;
+    PIXEL *c_comp;
+    int width = video->width;
+    int intra_dc_vlc_thr = video->currVop->intraDCVlcThr;
+    uint CBP = video->headerInfo.CBP[mbnum];
+    uint8 mode = video->headerInfo.Mode[mbnum];
+    int x_pos = video->mbnum_col;
+    typeDCStore *DC = video->predDC + mbnum;
+    int  ncoeffs[6], *no_coeff = mblock->no_coeff;
+    int  comp;
+    Bool  switched;
+    int QP_tmp = QP;
+
+    int y_pos = video->mbnum_row;
+#ifdef PV_POSTPROC_ON
+    uint8 *pp_mod[6];
+    int TotalMB = video->nTotalMB;
+    int MB_in_width = video->nMBPerRow;
+#endif
+
+
+
+    /*****
+    *     Decoding of the 6 blocks (depending on transparent pattern)
+    *****/
+#ifdef PV_POSTPROC_ON
+    if (video->postFilterType != PV_NO_POST_PROC)
+    {
+        /** post-processing ***/
+        pp_mod[0] = video->pstprcTypCur + (y_pos << 1) * (MB_in_width << 1) + (x_pos << 1);
+        pp_mod[1] = pp_mod[0] + 1;
+        pp_mod[2] = pp_mod[0] + (MB_in_width << 1);
+        pp_mod[3] = pp_mod[2] + 1;
+        pp_mod[4] = video->pstprcTypCur + (TotalMB << 2) + mbnum;
+        pp_mod[5] = pp_mod[4] + TotalMB;
+    }
+#endif
+
+    /*  oscl_memset(mblock->block, 0, sizeof(typeMBStore));    Aug 9,2005 */
+
+    if (mode & INTRA_MASK) /* MODE_INTRA || mode == MODE_INTRA_Q */
+    {
+        switched = 0;
+        if (intra_dc_vlc_thr)
+        {
+            if (video->usePrevQP)
+                QP_tmp = video->QPMB[mbnum-1];   /* running QP  04/26/01 */
+
+            switched = (intra_dc_vlc_thr == 7 || QP_tmp >= intra_dc_vlc_thr * 2 + 11);
+        }
+
+        mblock->DCScalarLum = cal_dc_scaler(QP, LUMINANCE_DC_TYPE);     /*   ACDC 03/01/01 */
+        mblock->DCScalarChr = cal_dc_scaler(QP, CHROMINANCE_DC_TYPE);
+
+        for (comp = 0; comp < 6; comp++)
+        {
+            dataBlock = mblock->block[comp];    /*, 10/20/2000 */
+
+            dataBlock[0] = (*DC)[comp];
+
+            ncoeffs[comp] = VlcDequantH263IntraBlock(video, comp,
+                            switched, mblock->bitmapcol[comp], &mblock->bitmaprow[comp]);
+
+            if (VLC_ERROR_DETECTED(ncoeffs[comp]))         /*  */
+            {
+                if (switched)
+                    return PV_FAIL;
+                else
+                {
+                    ncoeffs[comp] = 1;
+                    oscl_memset((dataBlock + 1), 0, sizeof(int16)*63);
+                }
+            }
+            no_coeff[comp] = ncoeffs[comp];
+            /*  modified to new semaphore for post-proc */
+            // Future work:: can be combined in the dequant function
+            // @todo Deblocking Semaphore for INTRA block
+#ifdef PV_POSTPROC_ON
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[comp] = (uint8) PostProcSemaphore(dataBlock);
+#endif
+        }
+        MBlockIDCT(video);
+    }
+    else /* MODE INTER*/
+    {
+
+
+
+
+        MBMotionComp(video, CBP);
+        offset = (int32)(y_pos << 4) * width + (x_pos << 4);
+        c_comp  = video->currVop->yChan + offset;
+
+
+        for (comp = 0; comp < 4; comp++)
+        {
+            (*DC)[comp] = mid_gray;
+
+            if (CBP & (1 << (5 - comp)))
+            {
+                ncoeffs[comp] = VlcDequantH263InterBlock(video, comp,
+                                mblock->bitmapcol[comp], &mblock->bitmaprow[comp]);
+                if (VLC_ERROR_DETECTED(ncoeffs[comp]))
+                    return PV_FAIL;
+
+
+                BlockIDCT(c_comp + (comp&2)*(width << 2) + 8*(comp&1), mblock->pred_block + (comp&2)*64 + 8*(comp&1), mblock->block[comp], width, ncoeffs[comp],
+                          mblock->bitmapcol[comp], mblock->bitmaprow[comp]);
+
+            }
+            else
+            {
+                ncoeffs[comp] = 0;
+            }
+
+            /*  @todo Deblocking Semaphore for INTRA block, for inter just test for ringing  */
+#ifdef PV_POSTPROC_ON
+            if (video->postFilterType != PV_NO_POST_PROC)
+                *pp_mod[comp] = (uint8)((ncoeffs[comp] > 3) ? 4 : 0);
+#endif
+        }
+
+        (*DC)[4] = mid_gray;
+        if (CBP & 2)
+        {
+            ncoeffs[4] = VlcDequantH263InterBlock(video, 4,
+                                                  mblock->bitmapcol[4], &mblock->bitmaprow[4]);
+            if (VLC_ERROR_DETECTED(ncoeffs[4]))
+                return PV_FAIL;
+
+            BlockIDCT(video->currVop->uChan + (offset >> 2) + (x_pos << 2), mblock->pred_block + 256, mblock->block[4], width >> 1, ncoeffs[4],
+                      mblock->bitmapcol[4], mblock->bitmaprow[4]);
+
+        }
+        else
+        {
+            ncoeffs[4] = 0;
+        }
+#ifdef PV_POSTPROC_ON
+        if (video->postFilterType != PV_NO_POST_PROC)
+            *pp_mod[4] = (uint8)((ncoeffs[4] > 3) ? 4 : 0);
+#endif
+        (*DC)[5] = mid_gray;
+        if (CBP & 1)
+        {
+            ncoeffs[5] = VlcDequantH263InterBlock(video, 5,
+                                                  mblock->bitmapcol[5], &mblock->bitmaprow[5]);
+            if (VLC_ERROR_DETECTED(ncoeffs[5]))
+                return PV_FAIL;
+
+            BlockIDCT(video->currVop->vChan + (offset >> 2) + (x_pos << 2), mblock->pred_block + 264, mblock->block[5], width >> 1, ncoeffs[5],
+                      mblock->bitmapcol[5], mblock->bitmaprow[5]);
+
+        }
+        else
+        {
+            ncoeffs[5] = 0;
+        }
+#ifdef PV_POSTPROC_ON
+        if (video->postFilterType != PV_NO_POST_PROC)
+            *pp_mod[5] = (uint8)((ncoeffs[5] > 3) ? 4 : 0);
+#endif
+
+
+
+
+        /* Motion compensation and put it to video->mblock->pred_block */
+    }
+    return PV_SUCCESS;
+}
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/dcac_prediction.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/dcac_prediction.cpp
new file mode 100644
index 0000000..2a8bf1e
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/dcac_prediction.cpp
@@ -0,0 +1,368 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4dec_lib.h"
+#include "vlc_decode.h"
+#include "bitstream.h"
+#include "zigzag.h"
+#include "scaling.h"
+
+void    doDCACPrediction(
+    VideoDecData *video,
+    int comp,
+    int16 *q_block,
+    int *direction
+)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int i;
+    int mbnum = video->mbnum;
+    int nMBPerRow = video->nMBPerRow;
+    int x_pos = video->mbnum_col;
+    int y_pos = video->mbnum_row;
+    int16 *AC_tmp;
+    int QP_tmp;
+    int16 *QP_store = video->QPMB + mbnum;
+    int QP = video->QPMB[mbnum];
+    int QP_half = QP >> 1;
+    int32 val;
+    int flag_0 = FALSE, flag_1 = FALSE;
+    uint8 *slice_nb = video->sliceNo;
+    typeDCStore *DC_store = video->predDC + mbnum;
+    typeDCACStore *DCAC_row = video->predDCAC_row + x_pos;
+    typeDCACStore *DCAC_col = video->predDCAC_col;
+
+    uint ACpred_flag = (uint) video->acPredFlag[mbnum];
+
+    int left_bnd, up_bnd;
+
+    static const int Xpos[6] = { -1, 0, -1, 0, -1, -1};
+    static const int Ypos[6] = { -1, -1, 0, 0, -1, -1};
+
+    static const int Xtab[6] = {1, 0, 3, 2, 4, 5};
+    static const int Ytab[6] = {2, 3, 0, 1, 4, 5};
+    static const int Ztab[6] = {3, 2, 1, 0, 4, 5};
+
+    /* I added these to speed up comparisons */
+    static const int Pos0[6] = { 1, 1, 0, 0, 1, 1};
+    static const int Pos1[6] = { 1, 0, 1, 0, 1, 1};
+
+    static const int B_Xtab[6] = {0, 1, 0, 1, 2, 3};
+    static const int B_Ytab[6] = {0, 0, 1, 1, 2, 3};
+
+//  int *direction;     /* 0: HORIZONTAL, 1: VERTICAL */
+    int block_A, block_B, block_C;
+    int DC_pred;
+    int y_offset, x_offset, x_tab, y_tab, z_tab;    /* speedup coefficients */
+    int b_xtab, b_ytab;
+
+    if (!comp && x_pos && !(video->headerInfo.Mode[mbnum-1]&INTRA_MASK)) /* not intra */
+    {
+        oscl_memset(DCAC_col, 0, sizeof(typeDCACStore));
+    }
+    if (!comp && y_pos && !(video->headerInfo.Mode[mbnum-nMBPerRow]&INTRA_MASK)) /* not intra */
+    {
+        oscl_memset(DCAC_row, 0, sizeof(typeDCACStore));
+    }
+
+    y_offset = Ypos[comp] * nMBPerRow;
+    x_offset = Xpos[comp];
+    x_tab = Xtab[comp];
+    y_tab = Ytab[comp];
+    z_tab = Ztab[comp];
+
+    b_xtab = B_Xtab[comp];
+    b_ytab = B_Ytab[comp];
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* Find the direction of prediction and the DC prediction */
+
+    if (x_pos == 0 && y_pos == 0)
+    {   /* top left corner */
+        block_A = (comp == 1 || comp == 3) ? flag_0 = TRUE, DC_store[0][x_tab] : mid_gray;
+        block_B = (comp == 3) ? DC_store[x_offset][z_tab] : mid_gray;
+        block_C = (comp == 2 || comp == 3) ? flag_1 = TRUE, DC_store[0][y_tab] : mid_gray;
+    }
+    else if (x_pos == 0)
+    {   /* left edge */
+        up_bnd   = Pos0[comp] && slice_nb[mbnum] == slice_nb[mbnum-nMBPerRow];
+
+        block_A = (comp == 1 || comp == 3) ? flag_0 = TRUE, DC_store[0][x_tab] : mid_gray;
+        block_B = ((comp == 1 && up_bnd) || comp == 3) ?  DC_store[y_offset+x_offset][z_tab] : mid_gray;
+        block_C = (comp == 2 || comp == 3 || up_bnd) ? flag_1 = TRUE, DC_store[y_offset][y_tab] : mid_gray;
+    }
+    else if (y_pos == 0)
+    { /* top row */
+        left_bnd = Pos1[comp] && slice_nb[mbnum] == slice_nb[mbnum-1];
+
+        block_A = (comp == 1 || comp == 3 || left_bnd) ? flag_0 = TRUE, DC_store[x_offset][x_tab] : mid_gray;
+        block_B = ((comp == 2 && left_bnd) || comp == 3) ? DC_store[y_offset + x_offset][z_tab] : mid_gray;
+        block_C = (comp == 2 || comp == 3) ? flag_1 = TRUE, DC_store[y_offset][y_tab] : mid_gray;
+    }
+    else
+    {
+        up_bnd   = Pos0[comp] && slice_nb[mbnum] == slice_nb[mbnum-nMBPerRow];
+        left_bnd = Pos1[comp] && slice_nb[mbnum] == slice_nb[mbnum-1];
+
+        block_A = (comp == 1 || comp == 3 || left_bnd) ? flag_0 = TRUE, DC_store[x_offset][x_tab] : mid_gray;
+        block_B = (((comp == 0 || comp == 4 || comp == 5) && slice_nb[mbnum] == slice_nb[mbnum-1-nMBPerRow]) ||
+                   (comp == 1 && up_bnd) || (comp == 2 && left_bnd) || (comp == 3)) ? DC_store[y_offset+x_offset][z_tab] : mid_gray;
+        block_C = (comp == 2 || comp == 3 || up_bnd) ? flag_1 = TRUE, DC_store[y_offset][y_tab] : mid_gray;
+    }
+
+
+    if ((PV_ABS((block_A - block_B))) < (PV_ABS((block_B - block_C))))
+    {
+        DC_pred = block_C;
+        *direction = 1;
+        if (ACpred_flag == 1)
+        {
+            if (flag_1)
+            {
+                AC_tmp = DCAC_row[0][b_xtab];
+                QP_tmp = QP_store[y_offset];
+                if (QP_tmp == QP)
+                {
+                    for (i = 1; i < 8; i++)
+                    {
+                        q_block[i] = *AC_tmp++;
+                    }
+                }
+                else
+                {
+                    for (i = 1; i < 8; i++)
+                    {
+                        val = (int32)(*AC_tmp++) * QP_tmp;
+                        q_block[i] = (val < 0) ? (int16)((val - QP_half) / QP) : (int16)((val + QP_half) / QP);
+                        /* Vertical, top ROW of block C */
+                    }
+                }
+            }
+        }
+    }
+    else
+    {
+        DC_pred = block_A;
+        *direction = 0;
+        if (ACpred_flag == 1)
+        {
+            if (flag_0)
+            {
+                AC_tmp = DCAC_col[0][b_ytab];
+                QP_tmp = QP_store[x_offset];
+                if (QP_tmp == QP)
+                {
+                    for (i = 1; i < 8; i++)
+                    {
+                        q_block[i<<3] = *AC_tmp++;
+                    }
+                }
+                else
+                {
+                    for (i = 1; i < 8; i++)
+                    {
+                        val = (int32)(*AC_tmp++) * QP_tmp;
+                        q_block[i<<3] = (val < 0) ? (int16)((val - QP_half) / QP) : (int16)((val + QP_half) / QP);
+                        /* Vertical, top ROW of block C */
+                    }
+                }
+            }
+        }
+    }
+
+    /* Now predict the DC coefficient */
+    QP_tmp = (comp < 4) ? video->mblock->DCScalarLum : video->mblock->DCScalarChr;
+    q_block[0] += (int16)((DC_pred + (QP_tmp >> 1)) * scale[QP_tmp] >> 18);
+//      q_block[0] += (DC_pred+(QP_tmp>>1))/QP_tmp;
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+#ifdef PV_ANNEX_IJKT_SUPPORT
+void    doDCACPrediction_I(
+    VideoDecData *video,
+    int comp,
+    int16 *q_block
+)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int mbnum = video->mbnum;
+    int nMBPerRow = video->nMBPerRow;
+    int x_pos = video->mbnum_col;
+    int y_pos = video->mbnum_row;
+    int16 *AC_tmp;
+    int flag_0 = FALSE, flag_1 = FALSE;
+    uint8 *slice_nb = video->sliceNo;
+    typeDCStore *DC_store = video->predDC + mbnum;
+    typeDCACStore *DCAC_row = video->predDCAC_row + x_pos;
+    typeDCACStore *DCAC_col = video->predDCAC_col;
+    int left_bnd, up_bnd;
+    uint8 *mode = video->headerInfo.Mode;
+    uint ACpred_flag = (uint) video->acPredFlag[mbnum];
+
+
+
+    static const int Xpos[6] = { -1, 0, -1, 0, -1, -1};
+    static const int Ypos[6] = { -1, -1, 0, 0, -1, -1};
+
+    static const int Xtab[6] = {1, 0, 3, 2, 4, 5};
+    static const int Ytab[6] = {2, 3, 0, 1, 4, 5};
+
+    /* I added these to speed up comparisons */
+    static const int Pos0[6] = { 1, 1, 0, 0, 1, 1};
+    static const int Pos1[6] = { 1, 0, 1, 0, 1, 1};
+
+    static const int B_Xtab[6] = {0, 1, 0, 1, 2, 3};
+    static const int B_Ytab[6] = {0, 0, 1, 1, 2, 3};
+
+//  int *direction;     /* 0: HORIZONTAL, 1: VERTICAL */
+    int block_A, block_C;
+    int y_offset, x_offset, x_tab, y_tab;   /* speedup coefficients */
+    int b_xtab, b_ytab;
+    y_offset = Ypos[comp] * nMBPerRow;
+    x_offset = Xpos[comp];
+    x_tab = Xtab[comp];
+    y_tab = Ytab[comp];
+
+    b_xtab = B_Xtab[comp];
+    b_ytab = B_Ytab[comp];
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* Find the direction of prediction and the DC prediction */
+
+    if (x_pos == 0 && y_pos == 0)
+    {   /* top left corner */
+        block_A = (comp == 1 || comp == 3) ? flag_0 = TRUE, DC_store[0][x_tab] : mid_gray;
+        block_C = (comp == 2 || comp == 3) ? flag_1 = TRUE, DC_store[0][y_tab] : mid_gray;
+    }
+    else if (x_pos == 0)
+    {   /* left edge */
+        up_bnd   = (Pos0[comp] && slice_nb[mbnum] == slice_nb[mbnum-nMBPerRow])
+                   && (mode[mbnum-nMBPerRow] == MODE_INTRA || mode[mbnum-nMBPerRow] == MODE_INTRA_Q);;
+
+        block_A = (comp == 1 || comp == 3) ? flag_0 = TRUE, DC_store[0][x_tab] : mid_gray;
+        block_C = (comp == 2 || comp == 3 || up_bnd) ? flag_1 = TRUE, DC_store[y_offset][y_tab] : mid_gray;
+    }
+    else if (y_pos == 0)
+    { /* top row */
+        left_bnd = (Pos1[comp] && slice_nb[mbnum] == slice_nb[mbnum-1])
+                   && (mode[mbnum-1] == MODE_INTRA || mode[mbnum-1] == MODE_INTRA_Q);
+
+        block_A = (comp == 1 || comp == 3 || left_bnd) ? flag_0 = TRUE, DC_store[x_offset][x_tab] : mid_gray;
+        block_C = (comp == 2 || comp == 3) ? flag_1 = TRUE, DC_store[y_offset][y_tab] : mid_gray;
+    }
+    else
+    {
+        up_bnd   = (Pos0[comp] && slice_nb[mbnum] == slice_nb[mbnum-nMBPerRow])
+                   && (mode[mbnum-nMBPerRow] == MODE_INTRA || mode[mbnum-nMBPerRow] == MODE_INTRA_Q);
+        left_bnd = (Pos1[comp] && slice_nb[mbnum] == slice_nb[mbnum-1])
+                   && (mode[mbnum-1] == MODE_INTRA || mode[mbnum-1] == MODE_INTRA_Q);
+
+        block_A = (comp == 1 || comp == 3 || left_bnd) ? flag_0 = TRUE, DC_store[x_offset][x_tab] : mid_gray;
+        block_C = (comp == 2 || comp == 3 || up_bnd) ? flag_1 = TRUE, DC_store[y_offset][y_tab] : mid_gray;
+    }
+
+    if (ACpred_flag == 0)
+    {
+        if (flag_0 == TRUE)
+        {
+            if (flag_1 == TRUE)
+            {
+                q_block[0] = (int16)((block_A + block_C) >> 1);
+            }
+            else
+            {
+                q_block[0] = (int16)block_A;
+            }
+        }
+        else
+        {
+            if (flag_1 == TRUE)
+            {
+                q_block[0] = (int16)block_C;
+            }
+            else
+            {
+                q_block[0] = mid_gray;
+            }
+        }
+
+    }
+    else
+    {
+        if (video->mblock->direction == 1)
+        {
+            if (flag_1 == TRUE)
+            {
+                q_block[0] = (int16)block_C;
+
+                AC_tmp = DCAC_row[0][b_xtab];
+                q_block[1] = AC_tmp[0];
+                q_block[2] = AC_tmp[1];
+                q_block[3] = AC_tmp[2];
+                q_block[4] = AC_tmp[3];
+                q_block[5] = AC_tmp[4];
+                q_block[6] = AC_tmp[5];
+                q_block[7] = AC_tmp[6];
+            }
+            else
+            {
+                q_block[0] = mid_gray;
+            }
+        }
+        else
+        {
+            if (flag_0 == TRUE)
+            {
+                q_block[0] = (int16)block_A;
+
+                AC_tmp = DCAC_col[0][b_ytab];
+                q_block[8] = AC_tmp[0];
+                q_block[16] = AC_tmp[1];
+                q_block[24] = AC_tmp[2];
+                q_block[32] = AC_tmp[3];
+                q_block[40] = AC_tmp[4];
+                q_block[48] = AC_tmp[5];
+                q_block[56] = AC_tmp[6];
+            }
+            else
+            {
+                q_block[0] = mid_gray;
+            }
+        }
+    }
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+#endif
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/dec_pred_intra_dc.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/dec_pred_intra_dc.cpp
new file mode 100644
index 0000000..c19c23a
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/dec_pred_intra_dc.cpp
@@ -0,0 +1,75 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "mp4dec_lib.h"
+#include "vlc_decode.h"
+#include "bitstream.h"
+#include "zigzag.h"
+
+PV_STATUS PV_DecodePredictedIntraDC(
+    int compnum,
+    BitstreamDecVideo *stream,
+    int16 *INTRADC_delta)
+{
+
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    PV_STATUS status = PV_SUCCESS;
+    uint DC_size;
+    uint code;
+    int first_bit;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* read DC size 2 - 8 bits */
+    status = PV_VlcDecIntraDCPredSize(stream, compnum, &DC_size);
+
+    if (status == PV_SUCCESS)
+    {
+        if (DC_size == 0)
+        {
+            *INTRADC_delta = 0;
+        }
+        else
+        {
+            /* read delta DC 0 - 8 bits */
+            code = (int) BitstreamReadBits16_INLINE(stream, DC_size);
+
+            first_bit = code >> (DC_size - 1);
+
+            if (first_bit == 0)
+            {
+                /* negative delta INTRA DC */
+                *INTRADC_delta = code ^((1 << DC_size) - 1);
+                *INTRADC_delta = -(*INTRADC_delta);
+            }
+            else
+            { /* positive delta INTRA DC */
+                *INTRADC_delta = code;
+            }
+            if (DC_size > 8) BitstreamRead1Bits_INLINE(stream);
+        }
+    }
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return status;
+}
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/deringing_chroma.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/deringing_chroma.cpp
new file mode 100644
index 0000000..ce779b0
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/deringing_chroma.cpp
@@ -0,0 +1,215 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include    "mp4dec_lib.h"
+#include    "post_proc.h"
+
+#ifdef PV_POSTPROC_ON
+
+void Deringing_Chroma(
+    uint8 *Rec_C,
+    int width,
+    int height,
+    int16 *QP_store,
+    int,
+    uint8 *pp_mod
+)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int thres;
+    int v_blk, h_blk;
+    int max_diff;
+    int v_pel, h_pel;
+    int max_blk, min_blk;
+    int v0, h0;
+    uint8 *ptr;
+    int sum, sum1, incr;
+    int32 addr_v;
+    int sign_v[10], sum_v[10];
+    int *ptr2, *ptr3;
+    uint8 pelu, pelc, pell;
+    incr = width - BLKSIZE;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* chrominance */
+    /* Do the first line (7 pixels at a time => Don't use MMX)*/
+    for (h_blk = 0; h_blk < width; h_blk += BLKSIZE)
+    {
+        max_diff = (QP_store[h_blk>>3] >> 2) + 4;
+        ptr = &Rec_C[h_blk];
+        max_blk = min_blk = *ptr;
+        FindMaxMin(ptr, &min_blk, &max_blk, width);
+        h0 = ((h_blk - 1) >= 1) ? (h_blk - 1) : 1;
+
+        if (max_blk - min_blk >= 4)
+        {
+            thres = (max_blk + min_blk + 1) >> 1;
+
+
+            for (v_pel = 1; v_pel < BLKSIZE - 1; v_pel++)
+            {
+                addr_v = (int32)v_pel * width;
+                ptr = &Rec_C[addr_v + h0 - 1];
+                ptr2 = &sum_v[0];
+                ptr3 = &sign_v[0];
+
+                pelu = *(ptr - width);
+                pelc = *ptr;
+                pell = *(ptr + width);
+                ptr++;
+                *ptr2++ = pelu + (pelc << 1) + pell;
+                *ptr3++ = INDEX(pelu, thres) + INDEX(pelc, thres) + INDEX(pell, thres);
+
+                pelu = *(ptr - width);
+                pelc = *ptr;
+                pell = *(ptr + width);
+                ptr++;
+                *ptr2++ = pelu + (pelc << 1) + pell;
+                *ptr3++ = INDEX(pelu, thres) + INDEX(pelc, thres) + INDEX(pell, thres);
+
+                for (h_pel = h0; h_pel < h_blk + BLKSIZE - 1; h_pel++)
+                {
+                    pelu = *(ptr - width);
+                    pelc = *ptr;
+                    pell = *(ptr + width);
+
+                    *ptr2 = pelu + (pelc << 1) + pell;
+                    *ptr3 = INDEX(pelu, thres) + INDEX(pelc, thres) + INDEX(pell, thres);
+
+                    sum1 = *(ptr3 - 2) + *(ptr3 - 1) + *ptr3;
+                    if (sum1 == 0 || sum1 == 9)
+                    {
+                        sum = (*(ptr2 - 2) + (*(ptr2 - 1) << 1) + *ptr2 + 8) >> 4;
+
+                        ptr--;
+                        if (PV_ABS(*ptr - sum) > max_diff)
+                        {
+                            if (sum > *ptr)
+                                sum = *ptr + max_diff;
+                            else
+                                sum = *ptr - max_diff;
+                        }
+                        *ptr++ = (uint8) sum;
+                    }
+                    ptr++;
+                    ptr2++;
+                    ptr3++;
+                }
+            }
+        }
+    }
+
+    for (v_blk = BLKSIZE; v_blk < height; v_blk += BLKSIZE)
+    {
+        v0 = v_blk - 1;
+        /* Do the first block (pixels=7 => No MMX) */
+        max_diff = (QP_store[((((int32)v_blk*width)>>3))>>3] >> 2) + 4;
+        ptr = &Rec_C[(int32)v_blk * width];
+        max_blk = min_blk = *ptr;
+        FindMaxMin(ptr, &min_blk, &max_blk, incr);
+
+        if (max_blk - min_blk >= 4)
+        {
+            thres = (max_blk + min_blk + 1) >> 1;
+
+            for (v_pel = v0; v_pel < v_blk + BLKSIZE - 1; v_pel++)
+            {
+                addr_v = v_pel * width;
+                ptr = &Rec_C[addr_v];
+                ptr2 = &sum_v[0];
+                ptr3 = &sign_v[0];
+
+                pelu = *(ptr - width);
+                pelc = *ptr;
+                pell = *(ptr + width);
+                ptr++;
+                *ptr2++ = pelu + (pelc << 1) + pell;
+                *ptr3++ = INDEX(pelu, thres) + INDEX(pelc, thres) + INDEX(pell, thres);
+
+                pelu = *(ptr - width);
+                pelc = *ptr;
+                pell = *(ptr + width);
+                ptr++;
+                *ptr2++ = pelu + (pelc << 1) + pell;
+                *ptr3++ = INDEX(pelu, thres) + INDEX(pelc, thres) + INDEX(pell, thres);
+
+                for (h_pel = 1; h_pel < BLKSIZE - 1; h_pel++)
+                {
+                    pelu = *(ptr - width);
+                    pelc = *ptr;
+                    pell = *(ptr + width);
+
+                    *ptr2 = pelu + (pelc << 1) + pell;
+                    *ptr3 = INDEX(pelu, thres) + INDEX(pelc, thres) + INDEX(pell, thres);
+
+                    sum1 = *(ptr3 - 2) + *(ptr3 - 1) + *ptr3;
+                    if (sum1 == 0 || sum1 == 9)
+                    {
+                        sum = (*(ptr2 - 2) + (*(ptr2 - 1) << 1) + *ptr2 + 8) >> 4;
+
+                        ptr--;
+                        if (PV_ABS(*ptr - sum) > max_diff)
+                        {
+                            if (sum > *ptr)
+                                sum = *ptr + max_diff;
+                            else
+                                sum = *ptr - max_diff;
+                        }
+                        *ptr++ = (uint8) sum;
+                    }
+                    ptr++;
+                    ptr2++;
+                    ptr3++;
+                }
+            }
+        }
+
+
+        /* Do the rest in MMX */
+        for (h_blk = BLKSIZE; h_blk < width; h_blk += BLKSIZE)
+        {
+            if ((pp_mod[(v_blk/8)*(width/8)+h_blk/8]&0x4) != 0)
+            {
+                max_diff = (QP_store[((((int32)v_blk*width)>>3)+h_blk)>>3] >> 2) + 4;
+                ptr = &Rec_C[(int32)v_blk * width + h_blk];
+                max_blk = min_blk = *ptr;
+                FindMaxMin(ptr, &min_blk, &max_blk, incr);
+                h0 = h_blk - 1;
+
+                if (max_blk - min_blk >= 4)
+                {
+                    thres = (max_blk + min_blk + 1) >> 1;
+#ifdef NoMMX
+                    AdaptiveSmooth_NoMMX(Rec_C, v0, h0, v_blk, h_blk, thres, width, max_diff);
+#else
+                    DeringAdaptiveSmoothMMX(&Rec_C[(int32)v0*width+h0], width, thres, max_diff);
+#endif
+                }
+            }
+        }
+    } /* macroblock level */
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+#endif
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/deringing_luma.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/deringing_luma.cpp
new file mode 100644
index 0000000..b5574b4
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/deringing_luma.cpp
@@ -0,0 +1,231 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include    "mp4dec_lib.h"
+#include    "post_proc.h"
+
+#ifdef PV_POSTPROC_ON
+
+void Deringing_Luma(
+    uint8 *Rec_Y,
+    int width,
+    int height,
+    int16 *QP_store,
+    int,
+    uint8 *pp_mod)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int thres[4], range[4], max_range_blk, max_thres_blk;
+    int MB_V, MB_H, BLK_V, BLK_H;
+    int v_blk, h_blk;
+    int max_diff;
+    int max_blk, min_blk;
+    int v0, h0;
+    uint8 *ptr;
+    int thr, blks, incr;
+    int mb_indx, blk_indx;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    incr = width - BLKSIZE;
+
+    /* Dering the first line of macro blocks */
+    for (MB_H = 0; MB_H < width; MB_H += MBSIZE)
+    {
+        max_diff = (QP_store[(MB_H)>>4] >> 2) + 4;
+
+        /* threshold determination */
+        max_range_blk = max_thres_blk = 0;
+        blks = 0;
+
+        for (BLK_V = 0; BLK_V < MBSIZE; BLK_V += BLKSIZE)
+        {
+            for (BLK_H = 0; BLK_H < MBSIZE; BLK_H += BLKSIZE)
+            {
+                ptr = &Rec_Y[(int32)(BLK_V) * width + MB_H + BLK_H];
+                FindMaxMin(ptr, &min_blk, &max_blk, incr);
+
+                thres[blks] = (max_blk + min_blk + 1) >> 1;
+                range[blks] = max_blk - min_blk;
+
+                if (range[blks] >= max_range_blk)
+                {
+                    max_range_blk = range[blks];
+                    max_thres_blk = thres[blks];
+                }
+                blks++;
+            }
+        }
+
+        blks = 0;
+        for (v_blk = 0; v_blk < MBSIZE; v_blk += BLKSIZE)
+        {
+            v0 = ((v_blk - 1) >= 1) ? (v_blk - 1) : 1;
+            for (h_blk = MB_H; h_blk < MB_H + MBSIZE; h_blk += BLKSIZE)
+            {
+                h0 = ((h_blk - 1) >= 1) ? (h_blk - 1) : 1;
+
+                /* threshold rearrangement for flat region adjacent to non-flat region */
+                if (range[blks]<32 && max_range_blk >= 64)
+                    thres[blks] = max_thres_blk;
+
+                /* threshold rearrangement for deblocking
+                (blockiness annoying at DC dominant region) */
+                if (max_range_blk >= 16)
+                {
+                    /* adaptive smoothing */
+                    thr = thres[blks];
+
+                    AdaptiveSmooth_NoMMX(Rec_Y, v0, h0, v_blk, h_blk,
+                                         thr, width, max_diff);
+                }
+                blks++;
+            } /* block level (Luminance) */
+        }
+    } /* macroblock level */
+
+
+    /* Do the rest of the macro-block-lines */
+    for (MB_V = MBSIZE; MB_V < height; MB_V += MBSIZE)
+    {
+        /* First macro-block */
+        max_diff = (QP_store[((((int32)MB_V*width)>>4))>>4] >> 2) + 4;
+        /* threshold determination */
+        max_range_blk = max_thres_blk = 0;
+        blks = 0;
+        for (BLK_V = 0; BLK_V < MBSIZE; BLK_V += BLKSIZE)
+        {
+            for (BLK_H = 0; BLK_H < MBSIZE; BLK_H += BLKSIZE)
+            {
+                ptr = &Rec_Y[(int32)(MB_V + BLK_V) * width + BLK_H];
+                FindMaxMin(ptr, &min_blk, &max_blk, incr);
+                thres[blks] = (max_blk + min_blk + 1) >> 1;
+                range[blks] = max_blk - min_blk;
+
+                if (range[blks] >= max_range_blk)
+                {
+                    max_range_blk = range[blks];
+                    max_thres_blk = thres[blks];
+                }
+                blks++;
+            }
+        }
+
+        blks = 0;
+        for (v_blk = MB_V; v_blk < MB_V + MBSIZE; v_blk += BLKSIZE)
+        {
+            v0 = v_blk - 1;
+            for (h_blk = 0; h_blk < MBSIZE; h_blk += BLKSIZE)
+            {
+                h0 = ((h_blk - 1) >= 1) ? (h_blk - 1) : 1;
+
+                /* threshold rearrangement for flat region adjacent to non-flat region */
+                if (range[blks]<32 && max_range_blk >= 64)
+                    thres[blks] = max_thres_blk;
+
+                /* threshold rearrangement for deblocking
+                (blockiness annoying at DC dominant region) */
+                if (max_range_blk >= 16)
+                {
+                    /* adaptive smoothing */
+                    thr = thres[blks];
+
+                    AdaptiveSmooth_NoMMX(Rec_Y, v0, h0, v_blk, h_blk,
+                                         thr, width, max_diff);
+                }
+                blks++;
+            }
+        } /* block level (Luminance) */
+
+        /* Rest of the macro-blocks */
+        for (MB_H = MBSIZE; MB_H < width; MB_H += MBSIZE)
+        {
+            max_diff = (QP_store[((((int32)MB_V*width)>>4)+MB_H)>>4] >> 2) + 4;
+
+            /* threshold determination */
+            max_range_blk = max_thres_blk = 0;
+            blks = 0;
+
+            mb_indx = (MB_V / 8) * (width / 8) + MB_H / 8;
+            for (BLK_V = 0; BLK_V < MBSIZE; BLK_V += BLKSIZE)
+            {
+                for (BLK_H = 0; BLK_H < MBSIZE; BLK_H += BLKSIZE)
+                {
+                    blk_indx = mb_indx + (BLK_V / 8) * width / 8 + BLK_H / 8;
+                    /* Update based on pp_mod only */
+                    if ((pp_mod[blk_indx]&0x4) != 0)
+                    {
+                        ptr = &Rec_Y[(int32)(MB_V + BLK_V) * width + MB_H + BLK_H];
+                        FindMaxMin(ptr, &min_blk, &max_blk, incr);
+                        thres[blks] = (max_blk + min_blk + 1) >> 1;
+                        range[blks] = max_blk - min_blk;
+
+                        if (range[blks] >= max_range_blk)
+                        {
+                            max_range_blk = range[blks];
+                            max_thres_blk = thres[blks];
+                        }
+                    }
+                    blks++;
+                }
+            }
+
+            blks = 0;
+            for (v_blk = MB_V; v_blk < MB_V + MBSIZE; v_blk += BLKSIZE)
+            {
+                v0 = v_blk - 1;
+                mb_indx = (v_blk / 8) * (width / 8);
+                for (h_blk = MB_H; h_blk < MB_H + MBSIZE; h_blk += BLKSIZE)
+                {
+                    h0 = h_blk - 1;
+                    blk_indx = mb_indx + h_blk / 8;
+                    if ((pp_mod[blk_indx]&0x4) != 0)
+                    {
+                        /* threshold rearrangement for flat region adjacent to non-flat region */
+                        if (range[blks]<32 && max_range_blk >= 64)
+                            thres[blks] = max_thres_blk;
+
+                        /* threshold rearrangement for deblocking
+                        (blockiness annoying at DC dominant region) */
+                        if (max_range_blk >= 16)
+                        {
+                            /* adaptive smoothing */
+                            thr = thres[blks];
+#ifdef NoMMX
+                            AdaptiveSmooth_NoMMX(Rec_Y, v0, h0, v_blk, h_blk,
+                                                 thr, width, max_diff);
+#else
+                            DeringAdaptiveSmoothMMX(&Rec_Y[v0*width+h0],
+                                                    width, thr, max_diff);
+#endif
+                        }
+                    }
+                    blks++;
+                }
+            } /* block level (Luminance) */
+        } /* macroblock level */
+    } /* macroblock level */
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+#endif
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/find_min_max.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/find_min_max.cpp
new file mode 100644
index 0000000..a357ea6
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/find_min_max.cpp
@@ -0,0 +1,176 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+    input_ptr = pointer to the buffer containing values of type UChar
+            in a 2D block of data.
+    min_ptr = pointer to the minimum value of type Int to be found in a
+          square block of size BLKSIZE contained in 2D block of data.
+    max_ptr = pointer to the maximum value of type Int to be found in a
+          square block of size BLKSIZE contained in 2D block of data.
+    incr = value of type Int representing the width of 2D block of data.
+
+ Local Stores/Buffers/Pointers Needed:
+    None
+
+ Global Stores/Buffers/Pointers Needed:
+    None
+
+ Outputs:
+    None
+
+ Pointers and Buffers Modified:
+    min_ptr points to the found minimum value in the square block of
+    size BLKSIZE contained in 2D block of data.
+
+    max_ptr points to the found maximum value in the square block of
+    size BLKSIZE contained in 2D block of data.
+
+ Local Stores Modified:
+    None
+
+ Global Stores Modified:
+    None
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+ This function finds the maximum and the minimum values in a square block of
+ data of size BLKSIZE * BLKSIZE. The data is contained in the buffer which
+ represents a 2D block of data that is larger than BLKSIZE * BLKSIZE.
+ This is illustrated below.
+
+    mem loc x + 00h -> o o o o o o o o o o o o o o o o
+    mem loc x + 10h -> o o o o o X X X X X X X X o o o
+    mem loc x + 20h -> o o o o o X X X X X X X X o o o
+    mem loc x + 30h -> o o o o o X X X X X X X X o o o
+    mem loc x + 40h -> o o o o o X X X X X X X X o o o
+    mem loc x + 50h -> o o o o o X X X X X X X X o o o
+    mem loc x + 60h -> o o o o o X X X X X X X X o o o
+    mem loc x + 70h -> o o o o o X X X X X X X X o o o
+    mem loc x + 80h -> o o o o o X X X X X X X X o o o
+    mem loc x + 90h -> o o o o o o o o o o o o o o o o
+    mem loc x + A0h -> o o o o o o o o o o o o o o o o
+    mem loc x + B0h -> o o o o o o o o o o o o o o o o
+
+For illustration purposes, the diagram assumes that BLKSIZE is equal to 8
+but this is not a requirement. In this diagram, the buffer starts at
+location x but the input pointer, input_ptr, passed into this function
+would be the first row of data to be searched which is at x + 15h. The
+value of incr passed onto this function represents the amount the input_ptr
+needs to be incremented to point to the next row of data.
+
+This function compares each value in a row to the current maximum and
+minimum. After each row, input_ptr is incremented to point to the next row.
+This is repeated until all rows have been processed. When the search is
+complete the location pointed to by min_ptr contains the minimum value
+found and the location pointed to by max_ptr contains the maximum value found.
+
+------------------------------------------------------------------------------
+*/
+
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include    "mp4dec_lib.h"
+#include    "post_proc.h"
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+#ifdef PV_POSTPROC_ON
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+void  FindMaxMin(
+    uint8 *input_ptr,
+    int *min_ptr,
+    int *max_ptr,
+    int incr)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    register    uint    i, j;
+    register    int min, max;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    max = min = *input_ptr;
+    /*  incr = incr - BLKSIZE; */   /*  09/06/2001, already passed in as width - BLKSIZE */
+
+    for (i = BLKSIZE; i > 0; i--)
+    {
+        for (j = BLKSIZE; j > 0; j--)
+        {
+            if (*input_ptr > max)
+            {
+                max = *input_ptr;
+            }
+            else if (*input_ptr < min)
+            {
+                min = *input_ptr;
+            }
+            input_ptr += 1;
+        }
+
+        /* set pointer to the beginning of the next row*/
+        input_ptr += incr;
+    }
+
+    *max_ptr = max;
+    *min_ptr = min;
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+#endif
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/get_pred_adv_b_add.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/get_pred_adv_b_add.cpp
new file mode 100644
index 0000000..e23f23d
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/get_pred_adv_b_add.cpp
@@ -0,0 +1,1190 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+    xpos = x half-pixel of (x,y) coordinates within a VOP; motion
+           compensated coordinates; native type
+    ypos = y half-pixel of (x,y) coordinates within a VOP; motion
+           compensated coordinates; native type
+    comp = pointer to 8-bit compensated prediction values within a VOP;
+        computed by this module (i/o); full-pel resolution
+    c_prev = pointer to previous 8-bit prediction values within a VOP;
+          values range from (0-255); full-pel resolution
+    sh_d = pointer to residual values used to compensate the predicted
+        value; values range from (-512 to 511); full-pel resolution
+    width = width of the VOP in pixels (x axis); full-pel resolution
+    rnd1 = rounding value for case when one dimension uses half-pel
+           resolution
+    rnd2 = rounding value for case when two dimensions uses half-pel
+           resolution
+    CBP = flag indicating whether residual is all zeros
+          (0 -> all zeros, 1 -> not all zeros)
+        outside_flag = flag indicating whether motion vector is outside the
+               VOP (0 -> inside, 1 -> outside)
+
+ Outputs:
+    returns 1
+
+ Local Stores/Buffers/Pointers Needed:
+    None
+
+ Global Stores/Buffers/Pointers Needed:
+    None
+
+ Pointers and Buffers Modified:
+    comp = buffer contains newly computed compensated prediction values
+
+ Local Stores Modified:
+    None
+
+ Global Stores Modified:
+    None
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+ Compute pixel values for a block in the current VOP. The prediction
+ values are generated by averaging pixel values in the previous VOP; the
+ block position in the previous frame is computed from the current block's
+ motion vector. The computed pixel values are then computed by adding the
+ prediction values to the block residual values.
+
+
+------------------------------------------------------------------------------
+*/
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4dec_lib.h"
+#include "motion_comp.h"
+
+#define OSCL_DISABLE_WARNING_CONV_POSSIBLE_LOSS_OF_DATA
+
+int GetPredAdvancedBy0x0(
+    uint8 *prev,        /* i */
+    uint8 *pred_block,      /* i */
+    int width,      /* i */
+    int pred_width_rnd /* i */
+)
+{
+    uint    i;      /* loop variable */
+    int offset, offset2;
+    uint32  pred_word, word1, word2;
+    int tmp;
+
+    /* initialize offset to adjust pixel counter */
+    /*    the next row; full-pel resolution      */
+    offset = width - B_SIZE; /* offset for prev */
+    offset2 = (pred_width_rnd >> 1) - 4; /* offset for pred_block */
+
+    tmp = (uint32)prev & 0x3;
+    pred_block -= offset2; /* preset */
+
+    if (tmp == 0)  /* word-aligned */
+    {
+        for (i = B_SIZE; i > 0; i--)
+        {
+            *((uint32*)(pred_block += offset2)) = *((uint32*)prev);
+            *((uint32*)(pred_block += 4)) = *((uint32*)(prev + 4));
+            prev += width;
+        }
+        return 1;
+    }
+    else if (tmp == 1) /* first position */
+    {
+        prev--; /* word-aligned */
+
+        for (i = B_SIZE; i > 0; i--)
+        {
+            word1 = *((uint32*)prev); /* read 4 bytes, b4 b3 b2 b1 */
+            word2 = *((uint32*)(prev += 4));  /* read 4 bytes, b8 b7 b6 b5 */
+            word1 >>= 8; /* 0 b4 b3 b2 */
+            pred_word = word1 | (word2 << 24);  /* b5 b4 b3 b2 */
+            *((uint32*)(pred_block += offset2)) = pred_word;
+
+            word1 = *((uint32*)(prev += 4)); /* b12 b11 b10 b9 */
+            word2 >>= 8; /* 0 b8 b7 b6 */
+            pred_word = word2 | (word1 << 24); /* b9 b8 b7 b6 */
+            *((uint32*)(pred_block += 4)) = pred_word;
+
+            prev += offset;
+        }
+
+        return 1;
+    }
+    else if (tmp == 2) /* second position */
+    {
+        prev -= 2; /* word1-aligned */
+
+        for (i = B_SIZE; i > 0; i--)
+        {
+            word1 = *((uint32*)prev); /* read 4 bytes, b4 b3 b2 b1 */
+            word2 = *((uint32*)(prev += 4));  /* read 4 bytes, b8 b7 b6 b5 */
+            word1 >>= 16; /* 0 0 b4 b3 */
+            pred_word = word1 | (word2 << 16);  /* b6 b5 b4 b3 */
+            *((uint32*)(pred_block += offset2)) = pred_word;
+
+            word1 = *((uint32*)(prev += 4)); /* b12 b11 b10 b9 */
+            word2 >>= 16; /* 0 0 b8 b7 */
+            pred_word = word2 | (word1 << 16); /* b10 b9 b8 b7 */
+            *((uint32*)(pred_block += 4)) = pred_word;
+
+
+            prev += offset;
+        }
+
+        return 1;
+    }
+    else /* third position */
+    {
+        prev -= 3; /* word1-aligned */
+
+        for (i = B_SIZE; i > 0; i--)
+        {
+            word1 = *((uint32*)prev); /* read 4 bytes, b4 b3 b2 b1 */
+            word2 = *((uint32*)(prev += 4));  /* read 4 bytes, b8 b7 b6 b5 */
+            word1 >>= 24; /* 0 0 0 b4 */
+            pred_word = word1 | (word2 << 8);   /* b7 b6 b5 b4 */
+            *((uint32*)(pred_block += offset2)) = pred_word;
+
+            word1 = *((uint32*)(prev += 4)); /* b12 b11 b10 b9 */
+            word2 >>= 24; /* 0 0 0 b8 */
+            pred_word = word2 | (word1 << 8); /* b11 b10 b9 b8 */
+            *((uint32*)(pred_block += 4)) = pred_word;
+
+            prev += offset;
+        }
+
+        return 1;
+    }
+}
+
+/**************************************************************************/
+int GetPredAdvancedBy0x1(
+    uint8 *prev,        /* i */
+    uint8 *pred_block,      /* i */
+    int width,      /* i */
+    int pred_width_rnd /* i */
+)
+{
+    uint    i;      /* loop variable */
+    int offset, offset2;
+    uint32 word1, word2, word3, word12;
+    int tmp;
+    int rnd1;
+    uint32 mask;
+
+    /* initialize offset to adjust pixel counter */
+    /*    the next row; full-pel resolution      */
+    offset = width - B_SIZE; /* offset for prev */
+    offset2 = (pred_width_rnd >> 1) - 4; /* offset of pred_block */
+
+    rnd1 = pred_width_rnd & 1;
+
+    /* Branch based on pixel location (half-pel or full-pel) for x and y */
+    pred_block -= offset2; /* preset */
+
+    tmp = (uint32)prev & 3;
+    mask = 254;
+    mask |= (mask << 8);
+    mask |= (mask << 16); /* 0xFEFEFEFE */
+
+    if (tmp == 0) /* word-aligned */
+    {
+        if (rnd1 == 1)
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word1 = *((uint32*)prev); /* b4 b3 b2 b1 */
+                word2 = *((uint32*)(prev += 4)); /* b8 b7 b6 b5 */
+                word12 = (word1 >> 8); /* 0 b4 b3 b2 */
+                word12 |= (word2 << 24); /* b5 b4 b3 b2 */
+                word3 = word1 | word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word12 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += offset2)) = word1; /* write 4 pixels */
+
+                word1 = *((uint32*)(prev += 4)); /* b12 b11 b10 b9 */
+                word12 = (word2 >> 8); /* 0 b8 b7 b6 */
+                word12 |= (word1 << 24); /* b9 b8 b7 b6 */
+                word3 = word2 | word12;
+                word2 &= mask;
+                word3 &= (~mask);  /* 0x1010101, check last bit */
+                word12 &= mask;
+                word2 >>= 1;
+                word2 = word2 + (word12 >> 1);
+                word2 += word3;
+                *((uint32*)(pred_block += 4)) = word2; /* write 4 pixels */
+
+                prev += offset;
+            }
+            return 1;
+        }
+        else /* rnd1 == 0 */
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word1 = *((uint32*)prev); /* b4 b3 b2 b1 */
+
+                word2 = *((uint32*)(prev += 4)); /* b8 b7 b6 b5 */
+                word12 = (word1 >> 8); /* 0 b4 b3 b2 */
+                word12 |= (word2 << 24); /* b5 b4 b3 b2 */
+                word3 = word1 & word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word12 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += offset2)) = word1; /* write 4 pixels */
+
+                word1 = *((uint32*)(prev += 4)); /* b12 b11 b10 b9 */
+                word12 = (word2 >> 8); /* 0 b8 b7 b6 */
+                word12 |= (word1 << 24); /* b9 b8 b7 b6 */
+                word3 = word2 & word12;
+                word2 &= mask;
+                word3 &= (~mask);  /* 0x1010101, check last bit */
+                word12 &= mask;
+                word2 >>= 1;
+                word2 = word2 + (word12 >> 1);
+                word2 += word3;
+                *((uint32*)(pred_block += 4)) = word2; /* write 4 pixels */
+
+                prev += offset;
+            }
+            return 1;
+        } /* rnd1 */
+    }
+    else if (tmp == 1)
+    {
+        prev--; /* word-aligned */
+        if (rnd1 == 1)
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word1 = *((uint32*)prev); /* b3 b2 b1 b0 */
+                word2 = *((uint32*)(prev += 4)); /* b7 b6 b5 b4 */
+                word12 = (word1 >> 8); /* 0 b3 b2 b1 */
+                word1 >>= 16; /* 0 0 b3 b2 */
+                word12 |= (word2 << 24); /* b4 b3 b2 b1 */
+                word1 |= (word2 << 16); /* b5 b4 b3 b2 */
+                word3 = word1 | word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word12 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += offset2)) = word1; /* write 4 pixels */
+
+                word1 = *((uint32*)(prev += 4)); /* b11 b10 b9 b8 */
+                word12 = (word2 >> 8); /* 0 b7 b6 b5 */
+                word2 >>= 16; /* 0 0 b7 b6 */
+                word12 |= (word1 << 24); /* b8 b7 b6 b5 */
+                word2 |= (word1 << 16); /* b9 b8 b7 b6 */
+                word3 = word2 | word12; // rnd1 = 1; otherwise word3 = word2&word12
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word2 >>= 1;
+                word2 = word2 + (word12 >> 1);
+                word2 += word3;
+                *((uint32*)(pred_block += 4)) = word2; /* write 4 pixels */
+
+                prev += offset;
+            }
+            return 1;
+        }
+        else /* rnd1 = 0 */
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word1 = *((uint32*)prev); /* b3 b2 b1 b0 */
+
+                word2 = *((uint32*)(prev += 4)); /* b7 b6 b5 b4 */
+                word12 = (word1 >> 8); /* 0 b3 b2 b1 */
+                word1 >>= 16; /* 0 0 b3 b2 */
+                word12 |= (word2 << 24); /* b4 b3 b2 b1 */
+                word1 |= (word2 << 16); /* b5 b4 b3 b2 */
+                word3 = word1 & word12;
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word12 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += offset2)) = word1; /* write 4 pixels */
+
+                word1 = *((uint32*)(prev += 4)); /* b11 b10 b9 b8 */
+                word12 = (word2 >> 8); /* 0 b7 b6 b5 */
+                word2 >>= 16; /* 0 0 b7 b6 */
+                word12 |= (word1 << 24); /* b8 b7 b6 b5 */
+                word2 |= (word1 << 16); /* b9 b8 b7 b6 */
+                word3 = word2 & word12;
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word2 >>= 1;
+                word2 = word2 + (word12 >> 1);
+                word2 += word3;
+                *((uint32*)(pred_block += 4)) = word2; /* write 4 pixels */
+
+                prev += offset;
+            }
+            return 1;
+        } /* rnd1 */
+    }
+    else if (tmp == 2)
+    {
+        prev -= 2; /* word-aligned */
+        if (rnd1 == 1)
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word1 = *((uint32*)prev); /* b2 b1 b0 bN1 */
+                word2 = *((uint32*)(prev += 4)); /* b6 b5 b4 b3 */
+                word12 = (word1 >> 16); /* 0 0 b2 b1 */
+                word1 >>= 24; /* 0 0 0 b2 */
+                word12 |= (word2 << 16); /* b4 b3 b2 b1 */
+                word1 |= (word2 << 8); /* b5 b4 b3 b2 */
+                word3 = word1 | word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word12 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += offset2)) = word1; /* write 4 pixels */
+
+                word1 = *((uint32*)(prev += 4)); /* b10 b9 b8 b7 */
+                word12 = (word2 >> 16); /* 0 0 b6 b5 */
+                word2 >>= 24; /* 0 0 0 b6 */
+                word12 |= (word1 << 16); /* b8 b7 b6 b5 */
+                word2 |= (word1 << 8); /* b9 b8 b7 b6 */
+                word3 = word2 | word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word2 >>= 1;
+                word2 = word2 + (word12 >> 1);
+                word2 += word3;
+                *((uint32*)(pred_block += 4)) = word2; /* write 4 pixels */
+                prev += offset;
+            }
+            return 1;
+        }
+        else /* rnd1 == 0 */
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word1 = *((uint32*)prev); /* b2 b1 b0 bN1 */
+                word2 = *((uint32*)(prev += 4)); /* b6 b5 b4 b3 */
+                word12 = (word1 >> 16); /* 0 0 b2 b1 */
+                word1 >>= 24; /* 0 0 0 b2 */
+                word12 |= (word2 << 16); /* b4 b3 b2 b1 */
+                word1 |= (word2 << 8); /* b5 b4 b3 b2 */
+                word3 = word1 & word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word12 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += offset2)) = word1; /* write 4 pixels */
+
+                word1 = *((uint32*)(prev += 4)); /* b10 b9 b8 b7 */
+                word12 = (word2 >> 16); /* 0 0 b6 b5 */
+                word2 >>= 24; /* 0 0 0 b6 */
+                word12 |= (word1 << 16); /* b8 b7 b6 b5 */
+                word2 |= (word1 << 8); /* b9 b8 b7 b6 */
+                word3 = word2 & word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word2 >>= 1;
+                word2 = word2 + (word12 >> 1);
+                word2 += word3;
+                *((uint32*)(pred_block += 4)) = word2; /* write 4 pixels */
+                prev += offset;
+            }
+            return 1;
+        }
+    }
+    else /* tmp = 3 */
+    {
+        prev -= 3; /* word-aligned */
+        if (rnd1 == 1)
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word1 = *((uint32*)prev); /* b1 b0 bN1 bN2 */
+                word2 = *((uint32*)(prev += 4)); /* b5 b4 b3 b2 */
+                word12 = (word1 >> 24); /* 0 0 0 b1 */
+                word12 |= (word2 << 8); /* b4 b3 b2 b1 */
+                word1 = word2;
+                word3 = word1 | word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word12 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += offset2)) = word1; /* write 4 pixels */
+
+                word1 = *((uint32*)(prev += 4)); /* b9 b8 b7 b6 */
+                word12 = (word2 >> 24); /* 0 0 0 b5 */
+                word12 |= (word1 << 8); /* b8 b7 b6 b5 */
+                word2 = word1; /* b9 b8 b7 b6 */
+                word3 = word2 | word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word2 >>= 1;
+                word2 = word2 + (word12 >> 1);
+                word2 += word3;
+                *((uint32*)(pred_block += 4)) = word2; /* write 4 pixels */
+                prev += offset;
+            }
+            return 1;
+        }
+        else
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word1 = *((uint32*)prev); /* b1 b0 bN1 bN2 */
+                word2 = *((uint32*)(prev += 4)); /* b5 b4 b3 b2 */
+                word12 = (word1 >> 24); /* 0 0 0 b1 */
+                word12 |= (word2 << 8); /* b4 b3 b2 b1 */
+                word1 = word2;
+                word3 = word1 & word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word12 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += offset2)) = word1; /* write 4 pixels */
+
+                word1 = *((uint32*)(prev += 4)); /* b9 b8 b7 b6 */
+                word12 = (word2 >> 24); /* 0 0 0 b5 */
+                word12 |= (word1 << 8); /* b8 b7 b6 b5 */
+                word2 = word1; /* b9 b8 b7 b6 */
+                word3 = word2 & word12; // rnd1 = 1; otherwise word3 = word1&word12
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 &= mask;
+                word2 >>= 1;
+                word2 = word2 + (word12 >> 1);
+                word2 += word3;
+                *((uint32*)(pred_block += 4)) = word2; /* write 4 pixels */
+                prev += offset;
+            }
+            return 1;
+        }
+    }
+}
+
+/**************************************************************************/
+int GetPredAdvancedBy1x0(
+    uint8 *prev,        /* i */
+    uint8 *pred_block,      /* i */
+    int width,      /* i */
+    int pred_width_rnd /* i */
+)
+{
+    uint    i;      /* loop variable */
+    int offset, offset2;
+    uint32  word1, word2, word3, word12, word22;
+    int tmp;
+    int rnd1;
+    uint32 mask;
+
+    /* initialize offset to adjust pixel counter */
+    /*    the next row; full-pel resolution      */
+    offset = width - B_SIZE; /* offset for prev */
+    offset2 = (pred_width_rnd >> 1) - 4; /* offset for pred_block */
+
+    rnd1 = pred_width_rnd & 1;
+
+    /* Branch based on pixel location (half-pel or full-pel) for x and y */
+    pred_block -= offset2; /* preset */
+
+    tmp = (uint32)prev & 3;
+    mask = 254;
+    mask |= (mask << 8);
+    mask |= (mask << 16); /* 0xFEFEFEFE */
+
+    if (tmp == 0) /* word-aligned */
+    {
+        prev -= 4;
+        if (rnd1 == 1)
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word1 = *((uint32*)(prev += 4));
+                word2 = *((uint32*)(prev + width));
+                word3 = word1 | word2; // rnd1 = 1; otherwise word3 = word1&word2
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word2 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word2 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += offset2)) = word1;
+                word1 = *((uint32*)(prev += 4));
+                word2 = *((uint32*)(prev + width));
+                word3 = word1 | word2; // rnd1 = 1; otherwise word3 = word1&word2
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word2 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word2 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += 4)) = word1;
+
+                prev += offset;
+            }
+            return 1;
+        }
+        else   /* rnd1 = 0 */
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word1 = *((uint32*)(prev += 4));
+                word2 = *((uint32*)(prev + width));
+                word3 = word1 & word2;  /* rnd1 = 0; */
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word2 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word2 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += offset2)) = word1;
+                word1 = *((uint32*)(prev += 4));
+                word2 = *((uint32*)(prev + width));
+                word3 = word1 & word2;  /* rnd1 = 0; */
+                word1 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word2 &= mask;
+                word1 >>= 1;
+                word1 = word1 + (word2 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += 4)) = word1;
+
+                prev += offset;
+            }
+            return 1;
+        }
+    }
+    else if (tmp == 1)
+    {
+        prev--; /* word-aligned */
+        if (rnd1 == 1)
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word12 = *((uint32*)prev); /* read b4 b3 b2 b1 */
+                word22 = *((uint32*)(prev + width));
+
+                word1 = *((uint32*)(prev += 4)); /* read b8 b7 b6 b5 */
+                word2 = *((uint32*)(prev + width));
+                word12 >>= 8; /* 0 b4 b3 b2 */
+                word22 >>= 8;
+                word12 = word12 | (word1 << 24); /* b5 b4 b3 b2 */
+                word22 = word22 | (word2 << 24);
+                word3 = word12 | word22;
+                word12 &= mask;
+                word22 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 >>= 1;
+                word12 = word12 + (word22 >> 1);
+                word12 += word3;
+                *((uint32*)(pred_block += offset2)) = word12;
+
+                word12 = *((uint32*)(prev += 4)); /* read b12 b11 b10 b9 */
+                word22 = *((uint32*)(prev + width));
+                word1 >>= 8; /* 0 b8 b7 b6 */
+                word2 >>= 8;
+                word1 = word1 | (word12 << 24); /* b9 b8 b7 b6 */
+                word2 = word2 | (word22 << 24);
+                word3 = word1 | word2;
+                word1 &= mask;
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word1 >>= 1;
+                word1 = word1 + (word2 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += 4)) = word1;
+                prev += offset;
+            }
+            return 1;
+        }
+        else /* rnd1 = 0 */
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word12 = *((uint32*)prev); /* read b4 b3 b2 b1 */
+                word22 = *((uint32*)(prev + width));
+
+                word1 = *((uint32*)(prev += 4)); /* read b8 b7 b6 b5 */
+                word2 = *((uint32*)(prev + width));
+                word12 >>= 8; /* 0 b4 b3 b2 */
+                word22 >>= 8;
+                word12 = word12 | (word1 << 24); /* b5 b4 b3 b2 */
+                word22 = word22 | (word2 << 24);
+                word3 = word12 & word22;
+                word12 &= mask;
+                word22 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 >>= 1;
+                word12 = word12 + (word22 >> 1);
+                word12 += word3;
+                *((uint32*)(pred_block += offset2)) = word12;
+
+                word12 = *((uint32*)(prev += 4)); /* read b12 b11 b10 b9 */
+                word22 = *((uint32*)(prev + width));
+                word1 >>= 8; /* 0 b8 b7 b6 */
+                word2 >>= 8;
+                word1 = word1 | (word12 << 24); /* b9 b8 b7 b6 */
+                word2 = word2 | (word22 << 24);
+                word3 = word1 & word2;
+                word1 &= mask;
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word1 >>= 1;
+                word1 = word1 + (word2 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += 4)) = word1;
+                prev += offset;
+            }
+            return 1;
+        }
+    }
+    else if (tmp == 2)
+    {
+        prev -= 2; /* word-aligned */
+        if (rnd1 == 1)
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word12 = *((uint32*)prev); /* read b4 b3 b2 b1 */
+                word22 = *((uint32*)(prev + width));
+
+                word1 = *((uint32*)(prev += 4)); /* read b8 b7 b6 b5 */
+                word2 = *((uint32*)(prev + width));
+                word12 >>= 16; /* 0 0 b4 b3 */
+                word22 >>= 16;
+                word12 = word12 | (word1 << 16); /* b6 b5 b4 b3 */
+                word22 = word22 | (word2 << 16);
+                word3 = word12 | word22;
+                word12 &= mask;
+                word22 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 >>= 1;
+                word12 = word12 + (word22 >> 1);
+                word12 += word3;
+                *((uint32*)(pred_block += offset2)) = word12;
+
+                word12 = *((uint32*)(prev += 4)); /* read b12 b11 b10 b9 */
+                word22 = *((uint32*)(prev + width));
+                word1 >>= 16; /* 0 0 b8 b7 */
+                word2 >>= 16;
+                word1 = word1 | (word12 << 16); /* b10 b9 b8 b7 */
+                word2 = word2 | (word22 << 16);
+                word3 = word1 | word2;
+                word1 &= mask;
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word1 >>= 1;
+                word1 = word1 + (word2 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += 4)) = word1;
+                prev += offset;
+            }
+            return 1;
+        }
+        else /* rnd1 = 0 */
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word12 = *((uint32*)prev); /* read b4 b3 b2 b1 */
+                word22 = *((uint32*)(prev + width));
+
+                word1 = *((uint32*)(prev += 4)); /* read b8 b7 b6 b5 */
+                word2 = *((uint32*)(prev + width));
+                word12 >>= 16; /* 0 0 b4 b3 */
+                word22 >>= 16;
+                word12 = word12 | (word1 << 16); /* b6 b5 b4 b3 */
+                word22 = word22 | (word2 << 16);
+                word3 = word12 & word22;
+                word12 &= mask;
+                word22 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 >>= 1;
+                word12 = word12 + (word22 >> 1);
+                word12 += word3;
+                *((uint32*)(pred_block += offset2)) = word12;
+
+                word12 = *((uint32*)(prev += 4)); /* read b12 b11 b10 b9 */
+                word22 = *((uint32*)(prev + width));
+                word1 >>= 16; /* 0 0 b8 b7 */
+                word2 >>= 16;
+                word1 = word1 | (word12 << 16); /* b10 b9 b8 b7 */
+                word2 = word2 | (word22 << 16);
+                word3 = word1 & word2;
+                word1 &= mask;
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word1 >>= 1;
+                word1 = word1 + (word2 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += 4)) = word1;
+                prev += offset;
+            }
+
+            return 1;
+        }
+    }
+    else /* tmp == 3 */
+    {
+        prev -= 3; /* word-aligned */
+        if (rnd1 == 1)
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word12 = *((uint32*)prev); /* read b4 b3 b2 b1 */
+                word22 = *((uint32*)(prev + width));
+
+                word1 = *((uint32*)(prev += 4)); /* read b8 b7 b6 b5 */
+                word2 = *((uint32*)(prev + width));
+                word12 >>= 24; /* 0 0 0 b4 */
+                word22 >>= 24;
+                word12 = word12 | (word1 << 8); /* b7 b6 b5 b4 */
+                word22 = word22 | (word2 << 8);
+                word3 = word12 | word22;
+                word12 &= mask;
+                word22 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 >>= 1;
+                word12 = word12 + (word22 >> 1);
+                word12 += word3;
+                *((uint32*)(pred_block += offset2)) = word12;
+
+                word12 = *((uint32*)(prev += 4)); /* read b12 b11 b10 b9 */
+                word22 = *((uint32*)(prev + width));
+                word1 >>= 24; /* 0 0 0 b8 */
+                word2 >>= 24;
+                word1 = word1 | (word12 << 8); /* b11 b10 b9 b8 */
+                word2 = word2 | (word22 << 8);
+                word3 = word1 | word2;
+                word1 &= mask;
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word1 >>= 1;
+                word1 = word1 + (word2 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += 4)) = word1;
+                prev += offset;
+            }
+            return 1;
+        }
+        else /* rnd1 = 0 */
+        {
+            for (i = B_SIZE; i > 0; i--)
+            {
+                word12 = *((uint32*)prev); /* read b4 b3 b2 b1 */
+                word22 = *((uint32*)(prev + width));
+
+                word1 = *((uint32*)(prev += 4)); /* read b8 b7 b6 b5 */
+                word2 = *((uint32*)(prev + width));
+                word12 >>= 24; /* 0 0 0 b4 */
+                word22 >>= 24;
+                word12 = word12 | (word1 << 8); /* b7 b6 b5 b4 */
+                word22 = word22 | (word2 << 8);
+                word3 = word12 & word22;
+                word12 &= mask;
+                word22 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word12 >>= 1;
+                word12 = word12 + (word22 >> 1);
+                word12 += word3;
+                *((uint32*)(pred_block += offset2)) = word12;
+
+                word12 = *((uint32*)(prev += 4)); /* read b12 b11 b10 b9 */
+                word22 = *((uint32*)(prev + width));
+                word1 >>= 24; /* 0 0 0 b8 */
+                word2 >>= 24;
+                word1 = word1 | (word12 << 8); /* b11 b10 b9 b8 */
+                word2 = word2 | (word22 << 8);
+                word3 = word1 & word2;
+                word1 &= mask;
+                word2 &= mask;
+                word3 &= (~mask); /* 0x1010101, check last bit */
+                word1 >>= 1;
+                word1 = word1 + (word2 >> 1);
+                word1 += word3;
+                *((uint32*)(pred_block += 4)) = word1;
+                prev += offset;
+            }
+            return 1;
+        } /* rnd */
+    } /* tmp */
+}
+
+/**********************************************************************************/
+int GetPredAdvancedBy1x1(
+    uint8 *prev,        /* i */
+    uint8 *pred_block,      /* i */
+    int width,      /* i */
+    int pred_width_rnd /* i */
+)
+{
+    uint    i;      /* loop variable */
+    int offset, offset2;
+    uint32  x1, x2, x1m, x2m, y1, y2, y1m, y2m; /* new way */
+    int tmp;
+    int rnd1, rnd2;
+    uint32 mask;
+
+    /* initialize offset to adjust pixel counter */
+    /*    the next row; full-pel resolution      */
+    offset = width - B_SIZE; /* offset for prev */
+    offset2 = (pred_width_rnd >> 1) - 8; /* offset for pred_block */
+
+    rnd1 = pred_width_rnd & 1;
+
+    rnd2 = rnd1 + 1;
+    rnd2 |= (rnd2 << 8);
+    rnd2 |= (rnd2 << 16);
+
+    mask = 0x3F;
+    mask |= (mask << 8);
+    mask |= (mask << 16); /* 0x3f3f3f3f */
+
+    tmp = (uint32)prev & 3;
+
+    pred_block -= 4; /* preset */
+
+    if (tmp == 0) /* word-aligned */
+    {
+        for (i = B_SIZE; i > 0; i--)
+        {
+            x1 = *((uint32*)prev); /* load a3 a2 a1 a0 */
+            x2 = *((uint32*)(prev + width)); /* load b3 b2 b1 b0, another line */
+            y1 = *((uint32*)(prev += 4)); /* a7 a6 a5 a4 */
+            y2 = *((uint32*)(prev + width)); /* b7 b6 b5 b4 */
+
+            x1m = (x1 >> 2) & mask; /* zero out last 2 bits */
+            x2m = (x2 >> 2) & mask;
+            x1 = x1 ^(x1m << 2);
+            x2 = x2 ^(x2m << 2);
+            x1m += x2m;
+            x1 += x2;
+
+            /* x2m, x2 free */
+            y1m = (y1 >> 2) & mask; /* zero out last 2 bits */
+            y2m = (y2 >> 2) & mask;
+            y1 = y1 ^(y1m << 2);
+            y2 = y2 ^(y2m << 2);
+            y1m += y2m;
+            y1 += y2;
+
+            /* y2m, y2 free */
+            /* x2m, x2 free */
+            x2 = *((uint32*)(prev += 4)); /* a11 a10 a9 a8 */
+            y2 = *((uint32*)(prev + width)); /* b11 b10 b9 b8 */
+            x2m = (x2 >> 2) & mask;
+            y2m = (y2 >> 2) & mask;
+            x2 = x2 ^(x2m << 2);
+            y2 = y2 ^(y2m << 2);
+            x2m += y2m;
+            x2 += y2;
+            /* y2m, y2 free */
+
+            /* now operate on x1m, x1, y1m, y1, x2m, x2 */
+            /* x1m = a3+b3, a2+b2, a1+b1, a0+b0 */
+            /* y1m = a7+b7, a6+b6, a5+b5, a4+b4 */
+            /* x2m = a11+b11, a10+b10, a9+b9, a8+b8 */
+            /* x1, y1, x2 */
+
+            y2m = x1m >> 8;
+            y2 = x1 >> 8;
+            y2m |= (y1m << 24);  /* a4+b4, a3+b3, a2+b2, a1+b1 */
+            y2 |= (y1 << 24);
+            x1m += y2m;  /* a3+b3+a4+b4, ....., a0+b0+a1+b1 */
+            x1 += y2;
+            x1 += rnd2;
+            x1 &= (mask << 2);
+            x1m += (x1 >> 2);
+            *((uint32*)(pred_block += 4)) = x1m; /* save x1m */
+
+            y2m = y1m >> 8;
+            y2 = y1 >> 8;
+            y2m |= (x2m << 24); /* a8+b8, a7+b7, a6+b6, a5+b5 */
+            y2 |= (x2 << 24);
+            y1m += y2m;  /* a7+b7+a8+b8, ....., a4+b4+a5+b5 */
+            y1 += y2;
+            y1 += rnd2;
+            y1 &= (mask << 2);
+            y1m += (y1 >> 2);
+            *((uint32*)(pred_block += 4)) = y1m; /* save y1m */
+
+            pred_block += offset2;
+            prev += offset;
+        }
+
+        return 1;
+    }
+    else if (tmp == 1)
+    {
+        prev--; /* to word-aligned */
+        for (i = B_SIZE; i > 0; i--)
+        {
+            x1 = *((uint32*)prev); /* load a3 a2 a1 a0 */
+            x2 = *((uint32*)(prev + width)); /* load b3 b2 b1 b0, another line */
+            y1 = *((uint32*)(prev += 4)); /* a7 a6 a5 a4 */
+            y2 = *((uint32*)(prev + width)); /* b7 b6 b5 b4 */
+
+            x1m = (x1 >> 2) & mask; /* zero out last 2 bits */
+            x2m = (x2 >> 2) & mask;
+            x1 = x1 ^(x1m << 2);
+            x2 = x2 ^(x2m << 2);
+            x1m += x2m;
+            x1 += x2;
+
+            /* x2m, x2 free */
+            y1m = (y1 >> 2) & mask; /* zero out last 2 bits */
+            y2m = (y2 >> 2) & mask;
+            y1 = y1 ^(y1m << 2);
+            y2 = y2 ^(y2m << 2);
+            y1m += y2m;
+            y1 += y2;
+
+            /* y2m, y2 free */
+            /* x2m, x2 free */
+            x2 = *((uint32*)(prev += 4)); /* a11 a10 a9 a8 */
+            y2 = *((uint32*)(prev + width)); /* b11 b10 b9 b8 */
+            x2m = (x2 >> 2) & mask;
+            y2m = (y2 >> 2) & mask;
+            x2 = x2 ^(x2m << 2);
+            y2 = y2 ^(y2m << 2);
+            x2m += y2m;
+            x2 += y2;
+            /* y2m, y2 free */
+
+            /* now operate on x1m, x1, y1m, y1, x2m, x2 */
+            /* x1m = a3+b3, a2+b2, a1+b1, a0+b0 */
+            /* y1m = a7+b7, a6+b6, a5+b5, a4+b4 */
+            /* x2m = a11+b11, a10+b10, a9+b9, a8+b8 */
+            /* x1, y1, x2 */
+
+            x1m >>= 8 ;
+            x1 >>= 8;
+            x1m |= (y1m << 24);  /* a4+b4, a3+b3, a2+b2, a1+b1 */
+            x1 |= (y1 << 24);
+            y2m = (y1m << 16);
+            y2 = (y1 << 16);
+            y2m |= (x1m >> 8); /* a5+b5, a4+b4, a3+b3, a2+b2 */
+            y2 |= (x1 >> 8);
+            x1 += rnd2;
+            x1m += y2m;  /* a4+b4+a5+b5, ....., a1+b1+a2+b2 */
+            x1 += y2;
+            x1 &= (mask << 2);
+            x1m += (x1 >> 2);
+            *((uint32*)(pred_block += 4)) = x1m; /* save x1m */
+
+            y1m >>= 8;
+            y1 >>= 8;
+            y1m |= (x2m << 24); /* a8+b8, a7+b7, a6+b6, a5+b5 */
+            y1 |= (x2 << 24);
+            y2m = (x2m << 16);
+            y2 = (x2 << 16);
+            y2m |= (y1m >> 8); /*  a9+b9, a8+b8, a7+b7, a6+b6,*/
+            y2 |= (y1 >> 8);
+            y1 += rnd2;
+            y1m += y2m;  /* a8+b8+a9+b9, ....., a5+b5+a6+b6 */
+            y1 += y2;
+            y1 &= (mask << 2);
+            y1m += (y1 >> 2);
+            *((uint32*)(pred_block += 4)) = y1m; /* save y1m */
+
+            pred_block += offset2;
+            prev += offset;
+        }
+        return 1;
+    }
+    else if (tmp == 2)
+    {
+        prev -= 2; /* to word-aligned */
+        for (i = B_SIZE; i > 0; i--)
+        {
+            x1 = *((uint32*)prev); /* load a3 a2 a1 a0 */
+            x2 = *((uint32*)(prev + width)); /* load b3 b2 b1 b0, another line */
+            y1 = *((uint32*)(prev += 4)); /* a7 a6 a5 a4 */
+            y2 = *((uint32*)(prev + width)); /* b7 b6 b5 b4 */
+
+            x1m = (x1 >> 2) & mask; /* zero out last 2 bits */
+            x2m = (x2 >> 2) & mask;
+            x1 = x1 ^(x1m << 2);
+            x2 = x2 ^(x2m << 2);
+            x1m += x2m;
+            x1 += x2;
+
+            /* x2m, x2 free */
+            y1m = (y1 >> 2) & mask; /* zero out last 2 bits */
+            y2m = (y2 >> 2) & mask;
+            y1 = y1 ^(y1m << 2);
+            y2 = y2 ^(y2m << 2);
+            y1m += y2m;
+            y1 += y2;
+
+            /* y2m, y2 free */
+            /* x2m, x2 free */
+            x2 = *((uint32*)(prev += 4)); /* a11 a10 a9 a8 */
+            y2 = *((uint32*)(prev + width)); /* b11 b10 b9 b8 */
+            x2m = (x2 >> 2) & mask;
+            y2m = (y2 >> 2) & mask;
+            x2 = x2 ^(x2m << 2);
+            y2 = y2 ^(y2m << 2);
+            x2m += y2m;
+            x2 += y2;
+            /* y2m, y2 free */
+
+            /* now operate on x1m, x1, y1m, y1, x2m, x2 */
+            /* x1m = a3+b3, a2+b2, a1+b1, a0+b0 */
+            /* y1m = a7+b7, a6+b6, a5+b5, a4+b4 */
+            /* x2m = a11+b11, a10+b10, a9+b9, a8+b8 */
+            /* x1, y1, x2 */
+
+            x1m >>= 16 ;
+            x1 >>= 16;
+            x1m |= (y1m << 16);  /* a5+b5, a4+b4, a3+b3, a2+b2 */
+            x1 |= (y1 << 16);
+            y2m = (y1m << 8);
+            y2 = (y1 << 8);
+            y2m |= (x1m >> 8); /* a6+b6, a5+b5, a4+b4, a3+b3 */
+            y2 |= (x1 >> 8);
+            x1 += rnd2;
+            x1m += y2m;  /* a5+b5+a6+b6, ....., a2+b2+a3+b3 */
+            x1 += y2;
+            x1 &= (mask << 2);
+            x1m += (x1 >> 2);
+            *((uint32*)(pred_block += 4)) = x1m; /* save x1m */
+
+            y1m >>= 16;
+            y1 >>= 16;
+            y1m |= (x2m << 16); /* a9+b9, a8+b8, a7+b7, a6+b6 */
+            y1 |= (x2 << 16);
+            y2m = (x2m << 8);
+            y2 = (x2 << 8);
+            y2m |= (y1m >> 8); /*  a10+b10, a9+b9, a8+b8, a7+b7,*/
+            y2 |= (y1 >> 8);
+            y1 += rnd2;
+            y1m += y2m;  /* a9+b9+a10+b10, ....., a6+b6+a7+b7 */
+            y1 += y2;
+            y1 &= (mask << 2);
+            y1m += (y1 >> 2);
+            *((uint32*)(pred_block += 4)) = y1m; /* save y1m */
+
+            pred_block += offset2;
+            prev += offset;
+        }
+        return 1;
+    }
+    else /* tmp == 3 */
+    {
+        prev -= 3; /* to word-aligned */
+        for (i = B_SIZE; i > 0; i--)
+        {
+            x1 = *((uint32*)prev); /* load a3 a2 a1 a0 */
+            x2 = *((uint32*)(prev + width)); /* load b3 b2 b1 b0, another line */
+            y1 = *((uint32*)(prev += 4)); /* a7 a6 a5 a4 */
+            y2 = *((uint32*)(prev + width)); /* b7 b6 b5 b4 */
+
+            x1m = (x1 >> 2) & mask; /* zero out last 2 bits */
+            x2m = (x2 >> 2) & mask;
+            x1 = x1 ^(x1m << 2);
+            x2 = x2 ^(x2m << 2);
+            x1m += x2m;
+            x1 += x2;
+
+            /* x2m, x2 free */
+            y1m = (y1 >> 2) & mask; /* zero out last 2 bits */
+            y2m = (y2 >> 2) & mask;
+            y1 = y1 ^(y1m << 2);
+            y2 = y2 ^(y2m << 2);
+            y1m += y2m;
+            y1 += y2;
+
+            /* y2m, y2 free */
+            /* x2m, x2 free */
+            x2 = *((uint32*)(prev += 4)); /* a11 a10 a9 a8 */
+            y2 = *((uint32*)(prev + width)); /* b11 b10 b9 b8 */
+            x2m = (x2 >> 2) & mask;
+            y2m = (y2 >> 2) & mask;
+            x2 = x2 ^(x2m << 2);
+            y2 = y2 ^(y2m << 2);
+            x2m += y2m;
+            x2 += y2;
+            /* y2m, y2 free */
+
+            /* now operate on x1m, x1, y1m, y1, x2m, x2 */
+            /* x1m = a3+b3, a2+b2, a1+b1, a0+b0 */
+            /* y1m = a7+b7, a6+b6, a5+b5, a4+b4 */
+            /* x2m = a11+b11, a10+b10, a9+b9, a8+b8 */
+            /* x1, y1, x2 */
+
+            x1m >>= 24 ;
+            x1 >>= 24;
+            x1m |= (y1m << 8);  /* a6+b6, a5+b5, a4+b4, a3+b3 */
+            x1 |= (y1 << 8);
+
+            x1m += y1m;  /* a6+b6+a7+b7, ....., a3+b3+a4+b4 */
+            x1 += y1;
+            x1 += rnd2;
+            x1 &= (mask << 2);
+            x1m += (x1 >> 2);
+            *((uint32*)(pred_block += 4)) = x1m; /* save x1m */
+
+            y1m >>= 24;
+            y1 >>= 24;
+            y1m |= (x2m << 8); /* a10+b10, a9+b9, a8+b8, a7+b7 */
+            y1 |= (x2 << 8);
+            y1m += x2m;  /* a10+b10+a11+b11, ....., a7+b7+a8+b8 */
+            y1 += x2;
+            y1 += rnd2;
+            y1 &= (mask << 2);
+            y1m += (y1 >> 2);
+            *((uint32*)(pred_block += 4)) = y1m; /* save y1m */
+
+            pred_block += offset2;
+            prev += offset;
+        }
+        return 1;
+    }
+}
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/get_pred_outside.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/get_pred_outside.cpp
new file mode 100644
index 0000000..9cd9022
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/get_pred_outside.cpp
@@ -0,0 +1,514 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+    xpos = x half-pixel of (x,y) coordinates within a VOP; motion
+           compensated coordinates; native data type
+    ypos = y half-pixel of (x,y) coordinates within a VOP; motion
+           compensated coordinates; native data type
+    comp = pointer to 8-bit compensated prediction values within a VOP;
+           computed by this module (i/o); full-pel resolution; 8-bit data
+    c_prev = pointer to previous 8-bit prediction values within a VOP;
+         values range from (0-255); full-pel resolution; 8-bit data
+    sh_d = pointer to residual values used to compensate the predicted
+           value; values range from (-512 to 511); full-pel resolution;
+           native data type
+    width = width of the VOP in pixels (x axis); full-pel resolution;
+        native data type
+    height = height of the VOP in pixels (y axis); full-pel resolution;
+         native data type
+    rnd1 = rounding value for case when one dimension uses half-pel
+           resolution; native data type
+    rnd2 = rounding value for case when two dimensions uses half-pel
+           resolution; native data type
+
+ Outputs:
+    returns 1
+
+ Local Stores/Buffers/Pointers Needed:
+    None
+
+ Global Stores/Buffers/Pointers Needed:
+    None
+
+ Pointers and Buffers Modified:
+    comp = buffer contains newly computed compensated prediction values
+
+ Local Stores Modified:
+    None
+
+ Global Stores Modified:
+    None
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+ Summary:
+
+ This function performs motion compensated prediction for the case where
+ the motion vector points to a block outside the VOP. The function interpolates
+ the pixels that are outside the VOP using the boundary pixels for the block.
+ Once the values are interpolated, the pixel values are computed for a block
+ in the current VOP. The prediction values are generated by averaging pixel
+ values in the previous VOP; the block position in the previous frame is
+ computed from the current block's motion vector. The computed pixel values
+ are calculated by adding the prediction values to the block residual values.
+
+ Details:
+
+ First, this functions determines which VOP boundary(ies) the motion vector
+ is outside, i.e., left, right, top, bottom. xpos is compared to the left and
+ right boundaries; ypos is compared to the top and bottom boundaries. The number
+ of block pixels inside the the boundary in the x and y directions are stored
+ in endx and endy, respectively. If the entire block is inside the x or y
+ boundary, the respectively end is set to 0.
+
+ After the boundaries are tested, any pixels lying outside a boundary are
+ interpolated from the boundary pixels. For example, if the block is outside the
+ bottom boundary, boundary pixels alone the bottom of the VOP as used to
+ interpolated those pixels lying outside the bottom boundary. The interpolation
+ used is a simple column-wise or row-wise copy of the boundary pixels (inside the
+ block) depending on which boundary the block is outside. In our example, each
+ boundary pixel would be copied column-wise to the pixel beneath it. If the
+ block was outside right boundary, the boundary pixels would be copied row-wise
+ to the pixel to the right of it. If the block was outside both an x and y
+ boundary, the boundary pixels would be copied row-wise for the portion of the
+ block outside the x boundary, and column-wise for the portion of the block
+ outside the y boundary. And so on.
+
+ Once the pixel interpolation is complete, the motion compensated output values
+ (comp[]) are calculed from the motion compensated prediction (pred[])values and
+ the residual values (sh_d[]) of the current frame. The prediction values are
+ generated by averaging pixel values in the previous VOP; the block position in
+ the previous frame is computed from the current block's motion vector. The
+ computed pixel values are calculated by adding the prediction values to the
+ block residual values.
+
+*/
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4dec_lib.h"
+#include "motion_comp.h"
+
+#define PAD_CORNER {    temp = *prev; \
+            temp |= (temp<<8);  \
+            temp |= (temp<<16); \
+            *((uint32*)ptr) = temp; \
+            *((uint32*)(ptr+4)) = temp;  \
+            *((uint32*)(ptr+=16)) = temp;  \
+            *((uint32*)(ptr+4)) = temp;  \
+            *((uint32*)(ptr+=16)) = temp;  \
+            *((uint32*)(ptr+4)) = temp;  \
+            *((uint32*)(ptr+=16)) = temp;  \
+            *((uint32*)(ptr+4)) = temp;  \
+            *((uint32*)(ptr+=16)) = temp;  \
+            *((uint32*)(ptr+4)) = temp;  \
+            *((uint32*)(ptr+=16)) = temp;  \
+            *((uint32*)(ptr+4)) = temp;  \
+            *((uint32*)(ptr+=16)) = temp;  \
+            *((uint32*)(ptr+4)) = temp;  \
+            *((uint32*)(ptr+=16)) = temp;  \
+            *((uint32*)(ptr+4)) = temp;  }
+
+#define PAD_ROW  {  temp = *((uint32*)prev); \
+                    temp2 = *((uint32*)(prev+4)); \
+            *((uint32*)ptr) =  temp;\
+            *((uint32*)(ptr+4)) =  temp2; \
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp2;\
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp2;\
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp2;\
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp2;\
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp2;\
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp2;\
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp2;}
+
+#define PAD_EXTRA_4x8           {   temp = *((uint32*)(prev+8)); \
+                *((uint32*)ptr) =  temp; \
+                *((uint32*)(ptr+=16)) = temp; \
+                *((uint32*)(ptr+=16)) = temp; \
+                *((uint32*)(ptr+=16)) = temp; \
+                *((uint32*)(ptr+=16)) = temp; \
+                *((uint32*)(ptr+=16)) = temp; \
+                *((uint32*)(ptr+=16)) = temp; \
+                *((uint32*)(ptr+=16)) = temp; }
+
+#define PAD_COL { temp = *prev; \
+            temp|=(temp<<8);  temp|=(temp<<16); \
+            *((uint32*)ptr) = temp; \
+            *((uint32*)(ptr+4)) = temp; \
+            temp = *(prev+=16); \
+            temp|=(temp<<8);  temp|=(temp<<16); \
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp; \
+            temp = *(prev+=16); \
+            temp|=(temp<<8);  temp|=(temp<<16); \
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp; \
+            temp = *(prev+=16); \
+            temp|=(temp<<8);  temp|=(temp<<16); \
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp; \
+            temp = *(prev+=16); \
+            temp|=(temp<<8);  temp|=(temp<<16); \
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp; \
+            temp = *(prev+=16); \
+            temp|=(temp<<8);  temp|=(temp<<16); \
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp; \
+            temp = *(prev+=16); \
+            temp|=(temp<<8);  temp|=(temp<<16); \
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp; \
+            temp = *(prev+=16); \
+            temp|=(temp<<8);  temp|=(temp<<16); \
+            *((uint32*)(ptr+=16)) = temp; \
+            *((uint32*)(ptr+4)) = temp;}
+
+/* copy 8x8 block */
+#define COPY_BLOCK  {           *((uint32*)ptr) = *((uint32*)prev); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4));  }
+
+#define COPY_12x8       {       *((uint32*)ptr) = *((uint32*)prev); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+8)) = *((uint32*)(prev+8)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+8)) = *((uint32*)(prev+8)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+8)) = *((uint32*)(prev+8)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+8)) = *((uint32*)(prev+8)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+8)) = *((uint32*)(prev+8)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+8)) = *((uint32*)(prev+8)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+8)) = *((uint32*)(prev+8)); \
+            *((uint32*)(ptr+=16)) = *((uint32*)(prev+=width)); \
+            *((uint32*)(ptr+4)) = *((uint32*)(prev+4)); \
+            *((uint32*)(ptr+8)) = *((uint32*)(prev+8)); }
+
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+int GetPredOutside(
+    int xpos,       /* i */
+    int ypos,       /* i */
+    uint8 *c_prev,      /* i */
+    uint8 *pred_block,      /* i */
+    int width,      /* i */
+    int height,     /* i */
+    int rnd1,       /* i */
+    int pred_width
+)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    uint8   *prev;      /* pointers to adjacent pixels in the    */
+    uint8   pred[256];  /* storage for padded pixel values, 16x16 */
+    uint8   *ptr;
+    int xoffset;
+    uint32 temp, temp2;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* saturate xpos and ypos */
+    if (xpos < -16) xpos = -16;
+    if (xpos > ((width - 1) << 1)) xpos = (width - 1) << 1;
+    if (ypos < -16) ypos = -16;
+    if (ypos > ((height - 1) << 1)) ypos = (height - 1) << 1;
+
+    if (xpos < 0)
+    {
+        if (ypos < 0) /* pad top left of frame */
+        {
+            /* copy the block */
+            ptr = pred + (8 << 4) + 8;
+            prev = c_prev;
+            COPY_BLOCK
+
+            /* pad the corner */
+            ptr = pred;
+            prev = pred + (8 << 4) + 8;
+            PAD_CORNER
+
+            /* pad top */
+            ptr = pred + 8;
+            prev = pred + (8 << 4) + 8;
+            PAD_ROW
+
+            /* pad left */
+            ptr = pred + (8 << 4);
+            prev = pred + (8 << 4) + 8;
+            PAD_COL
+
+
+            ptr = pred + (((ypos >> 1) + 8) << 4) + (xpos >> 1) + 8;
+
+            GetPredAdvBTable[ypos&1][xpos&1](ptr, pred_block, 16, (pred_width << 1) | rnd1);
+
+            return 1;
+        }
+        else if ((ypos >> 1) < (height - B_SIZE)) /* pad left of frame */
+        {
+            /* copy block */
+            ptr = pred + 8;
+            prev = c_prev + (ypos >> 1) * width;
+            COPY_BLOCK
+            /* copy extra line */
+            *((uint32*)(ptr += 16)) = *((uint32*)(prev += width));
+            *((uint32*)(ptr + 4)) = *((uint32*)(prev + 4));
+
+            /* pad left */
+            ptr = pred;
+            prev = pred + 8;
+            PAD_COL
+            /* pad extra line */
+            temp = *(prev += 16);
+            temp |= (temp << 8);
+            temp |= (temp << 16);
+            *((uint32*)(ptr += 16)) = temp;
+            *((uint32*)(ptr + 4)) = temp;
+
+            ptr = pred + 8 + (xpos >> 1);
+
+            GetPredAdvBTable[ypos&1][xpos&1](ptr, pred_block, 16, (pred_width << 1) | rnd1);
+
+            return 1;
+        }
+        else /* pad bottom left of frame */
+        {
+            /* copy the block */
+            ptr = pred + 8; /* point to the center */
+            prev = c_prev + width * (height - 8);
+            COPY_BLOCK
+
+            /* pad the corner */
+            ptr = pred + (8 << 4);
+            prev = ptr - 8;
+            PAD_CORNER
+
+            /* pad bottom */
+            ptr = pred + (8 << 4) + 8;
+            prev = ptr - 16;
+            PAD_ROW
+
+            /* pad left */
+            ptr = pred ;
+            prev = ptr + 8;
+            PAD_COL
+
+            ptr = pred + 8 + (((ypos >> 1) - (height - 8)) << 4) + (xpos >> 1);
+
+            GetPredAdvBTable[ypos&1][xpos&1](ptr, pred_block, 16, (pred_width << 1) | rnd1);
+
+            return 1;
+        }
+    }
+    else if ((xpos >> 1) < (width - B_SIZE))
+    {
+        if (ypos < 0) /* pad top of frame */
+        {
+            xoffset = xpos >> 1;
+            xoffset = xoffset & 0x3; /* word align ptr */
+
+            /* copy block */
+            ptr = pred + (8 << 4);
+            prev = c_prev + (xpos >> 1) - xoffset;
+
+            if (xoffset || (xpos&1)) /* copy extra 4x8 */
+            {
+                COPY_12x8
+            }
+            else
+            {
+                COPY_BLOCK
+            }
+
+            /* pad top */
+            ptr = pred;
+            prev = pred + (8 << 4);
+            PAD_ROW
+            if (xoffset || (xpos&1)) /* pad extra 4x8 */
+            {
+                ptr = pred + 8;
+                PAD_EXTRA_4x8
+            }
+
+            ptr = pred + (((ypos >> 1) + 8) << 4) + xoffset;
+
+            GetPredAdvBTable[ypos&1][xpos&1](ptr, pred_block, 16, (pred_width << 1) | rnd1);
+
+            return 1;
+        }
+        else /* pad bottom of frame */
+        {
+            xoffset = xpos >> 1;
+            xoffset = xoffset & 0x3; /* word align ptr */
+            /* copy block */
+            ptr = pred ;
+            prev = c_prev + width * (height - 8) + (xpos >> 1) - xoffset;
+            if (xoffset  || (xpos&1))
+            {
+                COPY_12x8
+            }
+            else
+            {
+                COPY_BLOCK
+            }
+
+            /* pad bottom */
+            ptr = pred + (8 << 4);
+            prev = ptr - 16;
+            PAD_ROW
+            if (xoffset || (xpos&1))
+            {
+                ptr = pred + (8 << 4) + 8;
+                PAD_EXTRA_4x8
+            }
+
+            ptr = pred + (((ypos >> 1) - (height - 8)) << 4) + xoffset;
+
+            GetPredAdvBTable[ypos&1][xpos&1](ptr, pred_block, 16, (pred_width << 1) | rnd1);
+
+            return 1;
+        }
+    }
+    else
+    {
+        if (ypos < 0) /* pad top right of frame */
+        {
+            /* copy block */
+            ptr = pred + (8 << 4);
+            prev = c_prev + width - 8;
+            COPY_BLOCK
+
+            /* pad top-right */
+            ptr = pred + 8;
+            prev = pred + (8 << 4) + 7;
+            PAD_CORNER
+
+            /* pad top */
+            ptr = pred ;
+            prev = pred + (8 << 4);
+            PAD_ROW;
+
+            /* pad right */
+            ptr = pred + (8 << 4) + 8;
+            prev = ptr - 1;
+            PAD_COL;
+
+            ptr = pred + ((8 + (ypos >> 1)) << 4) + (8 - (width - (xpos >> 1)));
+
+            GetPredAdvBTable[ypos&1][xpos&1](ptr, pred_block, 16, (pred_width << 1) | rnd1);
+
+            return 1;
+        }
+        else if ((ypos >> 1) < (height - B_SIZE)) /* pad right of frame */
+        {
+            /* copy block */
+            ptr = pred;
+            prev = c_prev + (ypos >> 1) * width + width - 8;
+            COPY_BLOCK
+            /* copy extra line */
+            *((uint32*)(ptr += 16)) = *((uint32*)(prev += width));
+            *((uint32*)(ptr + 4)) = *((uint32*)(prev + 4));
+
+            /* pad right */
+            ptr = pred + 8;
+            prev = ptr - 1;
+            PAD_COL;
+            /* pad extra line */
+            temp = *(prev += 16);
+            temp |= (temp << 8);
+            temp |= (temp << 16);
+            *((uint32*)(ptr += 16)) = temp;
+            *((uint32*)(ptr + 4)) = temp;
+
+
+            ptr = pred + 8 - (width - (xpos >> 1));
+
+            GetPredAdvBTable[ypos&1][xpos&1](ptr, pred_block, 16, (pred_width << 1) | rnd1);
+
+            return 1;
+
+        }
+        else /* pad bottom right of frame */
+        {
+            /* copy block */
+            ptr = pred;
+            prev = c_prev + width * (height - 8) + width - 8;
+            COPY_BLOCK
+
+            /* pad bottom-right */
+            ptr = pred + (8 << 4) + 8;
+            prev = ptr - 17;
+            PAD_CORNER
+
+            /* pad right */
+            ptr = pred + 8;
+            prev = ptr - 1;
+            PAD_COL
+
+            /* pad bottom */
+            ptr = pred + (8 << 4);
+            prev = ptr - 16;
+            PAD_ROW
+
+            ptr = pred + 8 - (width - (xpos >> 1)) + ((8 - (height - (ypos >> 1))) << 4);
+
+            GetPredAdvBTable[ypos&1][xpos&1](ptr, pred_block, 16, (pred_width << 1) | rnd1);
+
+            return 1;
+        }
+    }
+}
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/idct.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/idct.cpp
new file mode 100644
index 0000000..2e932a4
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/idct.cpp
@@ -0,0 +1,579 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ MODULE DESCRIPTION
+
+ This file contains the functions that transform an 8r8 image block from
+ dequantized DCT coefficients to spatial domain pirel values by calculating
+ inverse discrete cosine transform (IDCT).
+
+------------------------------------------------------------------------------
+*/
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4dec_lib.h"
+#include "idct.h"
+#include "motion_comp.h"
+#ifndef FAST_IDCT
+
+/*
+------------------------------------------------------------------------------
+ FUNCTION NAME: idct
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS FOR idct
+
+ Inputs:
+    blk = pointer to the buffer containing the dequantized DCT
+          coefficients of type int for an 8r8 image block;
+          values range from (-2048, 2047) which defined as standard.
+
+ Local Stores/Buffers/Pointers Needed:
+    None
+
+ Global Stores/Buffers/Pointers Needed:
+    None
+
+ Outputs:
+    None
+
+ Pointers and Buffers Modified:
+    blk points to the found IDCT values for an 8r8 image block.
+
+ Local Stores Modified:
+    None
+
+ Global Stores Modified:
+    None
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION FOR idct
+
+ This function transforms an 8r8 image block from dequantized DCT coefficients
+ (F(u,v)) to spatial domain pirel values (f(r,y)) by performing the two
+ dimensional inverse discrete cosine transform (IDCT).
+
+         _7_ _7_      C(u) C(v)
+    f(r,y) = \   \  F(u,v)---- ----cos[(2r+1)*u*pi/16]cos[(2y+1)*v*pi/16]
+         /__ /__    2    2
+         u=0 v=0
+
+    where   C(i) = 1/sqrt(2)    if i=0
+        C(i) = 1        otherwise
+
+ 2-D IDCT can be separated as horizontal(row-wise) and vertical(column-wise)
+ 1-D IDCTs. Therefore, 2-D IDCT values are found by the following two steps:
+ 1. Find horizontal 1-D IDCT values for each row from 8r8 dequantized DCT
+    coefficients by row IDCT operation.
+
+          _7_        C(u)
+    g(r,v) =  \   F(u,v) ---- cos[(2r+1)*u*pi/16]
+          /__         2
+          u=0
+
+ 2. Find vertical 1-D IDCT values for each column from the results of 1
+    by column IDCT operation.
+
+              _7_        C(v)
+    f(r,y) =  \   g(r,v) ---- cos[(2y+1)*v*pi/16]
+          /__         2
+          v=0
+
+------------------------------------------------------------------------------
+ REQUIREMENTS FOR idct
+
+ None
+
+------------------------------------------------------------------------------
+*/
+/*  REFERENCES FOR idct */
+/* idct.c, inverse fast discrete cosine transform
+ inverse two dimensional DCT, Chen-Wang algorithm
+ (cf. IEEE ASSP-32, pp. 803-816, Aug. 1984)
+ 32-bit integer arithmetic (8 bit coefficients)
+ 11 mults, 29 adds per DCT
+ sE, 18.8.91
+
+ coefficients ertended to 12 bit for IEEE1180-1990
+ compliance                           sE,  2.1.94
+*/
+
+
+/*----------------------------------------------------------------------------
+; Function Code FOR idct
+----------------------------------------------------------------------------*/
+void idct_intra(
+    int *blk, uint8 *comp, int width
+)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int i;
+    int32   tmpBLK[64];
+    int32   *tmpBLK32 = &tmpBLK[0];
+    int32   r0, r1, r2, r3, r4, r5, r6, r7, r8; /* butterfly nodes */
+    int32   a;
+    int offset = width - 8;
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* two dimensional inverse discrete cosine transform */
+
+
+    /* column (vertical) IDCT */
+    for (i = B_SIZE - 1; i >= 0; i--)
+    {
+        /* initialize butterfly nodes at first stage */
+
+        r1 = blk[B_SIZE * 4 + i] << 11;
+        /* since row IDCT results have net left shift by 3 */
+        /* this left shift by 8 gives net left shift by 11 */
+        /* in order to maintain the same scale as that of  */
+        /* coefficients Wi */
+
+        r2 = blk[B_SIZE * 6 + i];
+        r3 = blk[B_SIZE * 2 + i];
+        r4 = blk[B_SIZE * 1 + i];
+        r5 = blk[B_SIZE * 7 + i];
+        r6 = blk[B_SIZE * 5 + i];
+        r7 = blk[B_SIZE * 3 + i];
+
+        if (!(r1 | r2 | r3 | r4 | r5 | r6 | r7))
+        {
+            /* shortcut */
+            /* execute if values of g(r,1) to g(r,7) in a column*/
+            /* are all zeros */
+
+            /* make output of IDCT >>3 or scaled by 1/8 and */
+            /* with the proper rounding */
+            a = (blk[B_SIZE * 0 + i]) << 3;
+            tmpBLK32[B_SIZE * 0 + i] = a;
+            tmpBLK32[B_SIZE * 1 + i] = a;
+            tmpBLK32[B_SIZE * 2 + i] = a;
+            tmpBLK32[B_SIZE * 3 + i] = a;
+            tmpBLK32[B_SIZE * 4 + i] = a;
+            tmpBLK32[B_SIZE * 5 + i] = a;
+            tmpBLK32[B_SIZE * 6 + i] = a;
+            tmpBLK32[B_SIZE * 7 + i] = a;
+        }
+        else
+        {
+            r0 = (blk[8 * 0 + i] << 11) + 128;
+
+            /* first stage */
+
+            r8 = W7 * (r4 + r5);
+            r4 = (r8 + (W1 - W7) * r4);
+            /* Multiplication with Wi increases the net left */
+            /* shift from 11 to 14,we have to shift back by 3*/
+            r5 = (r8 - (W1 + W7) * r5);
+            r8 = W3 * (r6 + r7);
+            r6 = (r8 - (W3 - W5) * r6);
+            r7 = (r8 - (W3 + W5) * r7);
+
+            /* second stage */
+            r8 = r0 + r1;
+            r0 -= r1;
+
+            r1 = W6 * (r3 + r2);
+            r2 = (r1 - (W2 + W6) * r2);
+            r3 = (r1 + (W2 - W6) * r3);
+
+            r1 = r4 + r6;
+            r4 -= r6;
+            r6 = r5 + r7;
+            r5 -= r7;
+
+            /* third stage */
+            r7 = r8 + r3;
+            r8 -= r3;
+            r3 = r0 + r2;
+            r0 -= r2;
+            r2 = (181 * (r4 + r5) + 128) >> 8;  /* rounding */
+            r4 = (181 * (r4 - r5) + 128) >> 8;
+
+            /* fourth stage */
+            /* net shift of IDCT is >>3 after the following */
+            /* shift operation, it makes output of 2-D IDCT */
+            /* scaled by 1/8, that is scaled twice by       */
+            /* 1/(2*sqrt(2)) for row IDCT and column IDCT.  */
+            /* see detail analysis in design doc.           */
+            tmpBLK32[0 + i] = (r7 + r1) >> 8;
+            tmpBLK32[(1<<3) + i] = (r3 + r2) >> 8;
+            tmpBLK32[(2<<3) + i] = (r0 + r4) >> 8;
+            tmpBLK32[(3<<3) + i] = (r8 + r6) >> 8;
+            tmpBLK32[(4<<3) + i] = (r8 - r6) >> 8;
+            tmpBLK32[(5<<3) + i] = (r0 - r4) >> 8;
+            tmpBLK32[(6<<3) + i] = (r3 - r2) >> 8;
+            tmpBLK32[(7<<3) + i] = (r7 - r1) >> 8;
+        }
+    }
+    /* row (horizontal) IDCT */
+    for (i = 0 ; i < B_SIZE; i++)
+    {
+        /* initialize butterfly nodes at the first stage */
+
+        r1 = ((int32)tmpBLK32[4+(i<<3)]) << 8;
+        /* r1 left shift by 11 is to maintain the same  */
+        /* scale as that of coefficients (W1,...W7) */
+        /* since blk[4] won't multiply with Wi.     */
+        /* see detail diagram in design document.   */
+
+        r2 = tmpBLK32[6+(i<<3)];
+        r3 = tmpBLK32[2+(i<<3)];
+        r4 = tmpBLK32[1+(i<<3)];
+        r5 = tmpBLK32[7+(i<<3)];
+        r6 = tmpBLK32[5+(i<<3)];
+        r7 = tmpBLK32[3+(i<<3)];
+
+        if (!(r1 | r2 | r3 | r4 | r5 | r6 | r7))
+        {
+            /* shortcut */
+            /* execute if values of F(1,v) to F(7,v) in a row*/
+            /* are all zeros */
+
+            /* output of row IDCT scaled by 8 */
+            a = (((int32)tmpBLK32[0+(i<<3)] + 32) >> 6);
+            CLIP_RESULT(a)
+            *comp++ = a;
+            *comp++ = a;
+            *comp++ = a;
+            *comp++ = a;
+            *comp++ = a;
+            *comp++ = a;
+            *comp++ = a;
+            *comp++ = a;
+
+            comp += offset;
+        }
+
+        else
+        {
+            /* for proper rounding in the fourth stage */
+            r0 = (((int32)tmpBLK32[0+(i<<3)]) << 8) + 8192;
+
+            /* first stage */
+
+            r8 = W7 * (r4 + r5) + 4;
+            r4 = (r8 + (W1 - W7) * r4) >> 3;
+            r5 = (r8 - (W1 + W7) * r5) >> 3;
+
+            r8 = W3 * (r6 + r7) + 4;
+            r6 = (r8 - (W3 - W5) * r6) >> 3;
+            r7 = (r8 - (W3 + W5) * r7) >> 3;
+
+            /* second stage */
+            r8 = r0 + r1;
+            r0 -= r1;
+
+            r1 = W6 * (r3 + r2) + 4;
+            r2 = (r1 - (W2 + W6) * r2) >> 3;
+            r3 = (r1 + (W2 - W6) * r3) >> 3;
+
+            r1 = r4 + r6;
+            r4 -= r6;
+            r6 = r5 + r7;
+            r5 -= r7;
+
+            /* third stage */
+            r7 = r8 + r3;
+            r8 -= r3;
+            r3 = r0 + r2;
+            r0 -= r2;
+            r2 = (181 * (r4 + r5) + 128) >> 8;    /* rounding */
+            r4 = (181 * (r4 - r5) + 128) >> 8;
+
+            /* fourth stage */
+            /* net shift of this function is <<3 after the    */
+            /* following shift operation, it makes output of  */
+            /* row IDCT scaled by 8 to retain 3 bits precision*/
+            a = ((r7 + r1) >> 14);
+            CLIP_RESULT(a)
+            *comp++ = a;
+            a = ((r3 + r2) >> 14);
+            CLIP_RESULT(a)
+            *comp++ = a;
+            a = ((r0 + r4) >> 14);
+            CLIP_RESULT(a)
+            *comp++ = a;
+            a = ((r8 + r6) >> 14);
+            CLIP_RESULT(a)
+            *comp++ = a;
+            a = ((r8 - r6) >> 14);
+            CLIP_RESULT(a)
+            *comp++ = a;
+            a = ((r0 - r4) >> 14);
+            CLIP_RESULT(a)
+            *comp++ = a;
+            a = ((r3 - r2) >> 14);
+            CLIP_RESULT(a)
+            *comp++ = a;
+            a = ((r7 - r1) >> 14);
+            CLIP_RESULT(a)
+            *comp++ = a;
+
+            comp += offset;
+        }
+    }
+
+
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+
+void idct(
+    int *blk, uint8 *pred, uint8 *dst, int width)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int i;
+    int32   tmpBLK[64];
+    int32   *tmpBLK32 = &tmpBLK[0];
+    int32   r0, r1, r2, r3, r4, r5, r6, r7, r8; /* butterfly nodes */
+    int32   a;
+    int res;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* two dimensional inverse discrete cosine transform */
+
+
+    /* column (vertical) IDCT */
+    for (i = B_SIZE - 1; i >= 0; i--)
+    {
+        /* initialize butterfly nodes at first stage */
+
+        r1 = blk[B_SIZE * 4 + i] << 11;
+        /* since row IDCT results have net left shift by 3 */
+        /* this left shift by 8 gives net left shift by 11 */
+        /* in order to maintain the same scale as that of  */
+        /* coefficients Wi */
+
+        r2 = blk[B_SIZE * 6 + i];
+        r3 = blk[B_SIZE * 2 + i];
+        r4 = blk[B_SIZE * 1 + i];
+        r5 = blk[B_SIZE * 7 + i];
+        r6 = blk[B_SIZE * 5 + i];
+        r7 = blk[B_SIZE * 3 + i];
+
+        if (!(r1 | r2 | r3 | r4 | r5 | r6 | r7))
+        {
+            /* shortcut */
+            /* execute if values of g(r,1) to g(r,7) in a column*/
+            /* are all zeros */
+
+            /* make output of IDCT >>3 or scaled by 1/8 and */
+            /* with the proper rounding */
+            a = (blk[B_SIZE * 0 + i]) << 3;
+            tmpBLK32[B_SIZE * 0 + i] = a;
+            tmpBLK32[B_SIZE * 1 + i] = a;
+            tmpBLK32[B_SIZE * 2 + i] = a;
+            tmpBLK32[B_SIZE * 3 + i] = a;
+            tmpBLK32[B_SIZE * 4 + i] = a;
+            tmpBLK32[B_SIZE * 5 + i] = a;
+            tmpBLK32[B_SIZE * 6 + i] = a;
+            tmpBLK32[B_SIZE * 7 + i] = a;
+        }
+        else
+        {
+            r0 = (blk[8 * 0 + i] << 11) + 128;
+
+            /* first stage */
+
+            r8 = W7 * (r4 + r5);
+            r4 = (r8 + (W1 - W7) * r4);
+            /* Multiplication with Wi increases the net left */
+            /* shift from 11 to 14,we have to shift back by 3*/
+            r5 = (r8 - (W1 + W7) * r5);
+            r8 = W3 * (r6 + r7);
+            r6 = (r8 - (W3 - W5) * r6);
+            r7 = (r8 - (W3 + W5) * r7);
+
+            /* second stage */
+            r8 = r0 + r1;
+            r0 -= r1;
+
+            r1 = W6 * (r3 + r2);
+            r2 = (r1 - (W2 + W6) * r2);
+            r3 = (r1 + (W2 - W6) * r3);
+
+            r1 = r4 + r6;
+            r4 -= r6;
+            r6 = r5 + r7;
+            r5 -= r7;
+
+            /* third stage */
+            r7 = r8 + r3;
+            r8 -= r3;
+            r3 = r0 + r2;
+            r0 -= r2;
+            r2 = (181 * (r4 + r5) + 128) >> 8;  /* rounding */
+            r4 = (181 * (r4 - r5) + 128) >> 8;
+
+            /* fourth stage */
+            /* net shift of IDCT is >>3 after the following */
+            /* shift operation, it makes output of 2-D IDCT */
+            /* scaled by 1/8, that is scaled twice by       */
+            /* 1/(2*sqrt(2)) for row IDCT and column IDCT.  */
+            /* see detail analysis in design doc.           */
+            tmpBLK32[0 + i] = (r7 + r1) >> 8;
+            tmpBLK32[(1<<3) + i] = (r3 + r2) >> 8;
+            tmpBLK32[(2<<3) + i] = (r0 + r4) >> 8;
+            tmpBLK32[(3<<3) + i] = (r8 + r6) >> 8;
+            tmpBLK32[(4<<3) + i] = (r8 - r6) >> 8;
+            tmpBLK32[(5<<3) + i] = (r0 - r4) >> 8;
+            tmpBLK32[(6<<3) + i] = (r3 - r2) >> 8;
+            tmpBLK32[(7<<3) + i] = (r7 - r1) >> 8;
+        }
+    }
+    /* row (horizontal) IDCT */
+    for (i = B_SIZE - 1; i >= 0; i--)
+    {
+        /* initialize butterfly nodes at the first stage */
+
+        r1 = ((int32)tmpBLK32[4+(i<<3)]) << 8;
+        /* r1 left shift by 11 is to maintain the same  */
+        /* scale as that of coefficients (W1,...W7) */
+        /* since blk[4] won't multiply with Wi.     */
+        /* see detail diagram in design document.   */
+
+        r2 = tmpBLK32[6+(i<<3)];
+        r3 = tmpBLK32[2+(i<<3)];
+        r4 = tmpBLK32[1+(i<<3)];
+        r5 = tmpBLK32[7+(i<<3)];
+        r6 = tmpBLK32[5+(i<<3)];
+        r7 = tmpBLK32[3+(i<<3)];
+
+        if (!(r1 | r2 | r3 | r4 | r5 | r6 | r7))
+        {
+            /* shortcut */
+            /* execute if values of F(1,v) to F(7,v) in a row*/
+            /* are all zeros */
+
+            /* output of row IDCT scaled by 8 */
+            a = (tmpBLK32[0+(i<<3)] + 32) >> 6;
+            blk[0+(i<<3)] = a;
+            blk[1+(i<<3)] = a;
+            blk[2+(i<<3)] = a;
+            blk[3+(i<<3)] = a;
+            blk[4+(i<<3)] = a;
+            blk[5+(i<<3)] = a;
+            blk[6+(i<<3)] = a;
+            blk[7+(i<<3)] = a;
+
+        }
+
+        else
+        {
+            /* for proper rounding in the fourth stage */
+            r0 = (((int32)tmpBLK32[0+(i<<3)]) << 8) + 8192;
+
+            /* first stage */
+
+            r8 = W7 * (r4 + r5) + 4;
+            r4 = (r8 + (W1 - W7) * r4) >> 3;
+            r5 = (r8 - (W1 + W7) * r5) >> 3;
+
+            r8 = W3 * (r6 + r7) + 4;
+            r6 = (r8 - (W3 - W5) * r6) >> 3;
+            r7 = (r8 - (W3 + W5) * r7) >> 3;
+
+            /* second stage */
+            r8 = r0 + r1;
+            r0 -= r1;
+
+            r1 = W6 * (r3 + r2) + 4;
+            r2 = (r1 - (W2 + W6) * r2) >> 3;
+            r3 = (r1 + (W2 - W6) * r3) >> 3;
+
+            r1 = r4 + r6;
+            r4 -= r6;
+            r6 = r5 + r7;
+            r5 -= r7;
+
+            /* third stage */
+            r7 = r8 + r3;
+            r8 -= r3;
+            r3 = r0 + r2;
+            r0 -= r2;
+            r2 = (181 * (r4 + r5) + 128) >> 8;    /* rounding */
+            r4 = (181 * (r4 - r5) + 128) >> 8;
+
+            /* fourth stage */
+            /* net shift of this function is <<3 after the    */
+            /* following shift operation, it makes output of  */
+            /* row IDCT scaled by 8 to retain 3 bits precision*/
+            blk[0+(i<<3)] = (r7 + r1) >> 14;
+            blk[1+(i<<3)] = (r3 + r2) >> 14;
+            blk[2+(i<<3)] = (r0 + r4) >> 14;
+            blk[3+(i<<3)] = (r8 + r6) >> 14;
+            blk[4+(i<<3)] = (r8 - r6) >> 14;
+            blk[5+(i<<3)] = (r0 - r4) >> 14;
+            blk[6+(i<<3)] = (r3 - r2) >> 14;
+            blk[7+(i<<3)] = (r7 - r1) >> 14;
+        }
+        /*  add with prediction ,  08/03/05 */
+        res = (*pred++ + block[0+(i<<3)]);
+        CLIP_RESULT(res);
+        *dst++ = res;
+        res = (*pred++ + block[1+(i<<3)]);
+        CLIP_RESULT(res);
+        *dst++ = res;
+        res = (*pred++ + block[2+(i<<3)]);
+        CLIP_RESULT(res);
+        *dst++ = res;
+        res = (*pred++ + block[3+(i<<3)]);
+        CLIP_RESULT(res);
+        *dst++ = res;
+        res = (*pred++ + block[4+(i<<3)]);
+        CLIP_RESULT(res);
+        *dst++ = res;
+        res = (*pred++ + block[5+(i<<3)]);
+        CLIP_RESULT(res);
+        *dst++ = res;
+        res = (*pred++ + block[6+(i<<3)]);
+        CLIP_RESULT(res);
+        *dst++ = res;
+        res = (*pred++ + block[7+(i<<3)]);
+        CLIP_RESULT(res);
+        *dst++ = res;
+
+        pred += 8;
+        dst += (width - 8);
+    }
+
+
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+
+#endif
+/*----------------------------------------------------------------------------
+; End Function: idct
+----------------------------------------------------------------------------*/
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/idct.h b/media/libstagefright/codecs/m4v_h263/dec/src/idct.h
new file mode 100644
index 0000000..8edb654
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/idct.h
@@ -0,0 +1,118 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#ifndef idct_h
+#define idct_h
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4dec_lib.h"
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here.
+----------------------------------------------------------------------------*/
+#define INTEGER_IDCT
+
+#ifdef FAST_IDCT
+#ifndef INTEGER_IDCT
+#define INTEGER_IDCT
+#endif
+#endif
+
+#ifdef FAST_IDCT
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+    void idctrow0(int16 *blk, uint8 *pred, uint8 *dst, int width);
+    void idctrow1(int16 *blk, uint8 *pred, uint8 *dst, int width);
+    void idctrow2(int16 *blk, uint8 *pred, uint8 *dst, int width);
+    void idctrow3(int16 *blk, uint8 *pred, uint8 *dst, int width);
+    void idctrow4(int16 *blk, uint8 *pred, uint8 *dst, int width);
+    void idctcol0(int16 *blk);
+    void idctcol1(int16 *blk);
+    void idctcol2(int16 *blk);
+    void idctcol3(int16 *blk);
+    void idctcol4(int16 *blk);
+
+    void idctrow0_intra(int16 *blk, PIXEL *comp, int width);
+    void idctrow1_intra(int16 *blk, PIXEL *comp, int width);
+    void idctrow2_intra(int16 *blk, PIXEL *comp, int width);
+    void idctrow3_intra(int16 *blk, PIXEL *comp, int width);
+    void idctrow4_intra(int16 *blk, PIXEL *comp, int width);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+/* this code assumes ">>" to be a two's-complement arithmetic */
+/* right shift: (-2)>>1 == -1 , (-3)>>1 == -2                 */
+
+/* a positive real constant is converted to an integer scaled by 2048 */
+/* or equivalent to left shift by 11 */
+
+#define W1 2841                 /* 2048*sqrt(2)*cos(1*pi/16) */
+#define W2 2676                 /* 2048*sqrt(2)*cos(2*pi/16) */
+#define W3 2408                 /* 2048*sqrt(2)*cos(3*pi/16) */
+#define W5 1609                 /* 2048*sqrt(2)*cos(5*pi/16) */
+#define W6 1108                 /* 2048*sqrt(2)*cos(6*pi/16) */
+#define W7 565                  /* 2048*sqrt(2)*cos(7*pi/16) */
+#define W1mW7 2276
+#define W1pW7 3406
+#define W5mW3 -799
+#define mW3mW5 -4017
+#define mW2mW6 -3784
+#define W2mW6 1568
+
+/* left shift by 11 is to maintain the accuracy of the decimal point */
+/* for the transform coefficients (W1,...W7) */
+
+/*----------------------------------------------------------------------------
+; EXTERNAL VARIABLES REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; SIMPLE TYPEDEF'S
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; ENUMERATED TYPEDEF'S
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; STRUCTURES TYPEDEF'S
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; GLOBAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; END
+----------------------------------------------------------------------------*/
+#endif
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/idct_vca.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/idct_vca.cpp
new file mode 100644
index 0000000..f35ce4f
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/idct_vca.cpp
@@ -0,0 +1,660 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "mp4def.h"
+#include "idct.h"
+#include "motion_comp.h"
+
+#ifdef FAST_IDCT
+
+/****************************************************************
+*       vca_idct.c : created 6/1/99 for several options
+*                     of hard-coded reduced idct function (using nz_coefs)
+******************************************************************/
+
+/*****************************************************/
+//pretested version
+void idctrow0(int16 *, uint8 *, uint8 *, int)
+{
+    return ;
+}
+void idctcol0(int16 *)
+{
+    return ;
+}
+
+void idctrow1(int16 *blk, uint8 *pred, uint8 *dst, int width)
+{
+    /* shortcut */
+    int tmp;
+    int i = 8;
+    uint32 pred_word, dst_word;
+    int res, res2;
+
+    /* preset the offset, such that we can take advantage pre-offset addressing mode   */
+    width -= 4;
+    dst -= width;
+    pred -= 12;
+    blk -= 8;
+
+    while (i--)
+    {
+        tmp = (*(blk += 8) + 32) >> 6;
+        *blk = 0;
+
+        pred_word = *((uint32*)(pred += 12)); /* read 4 bytes from pred */
+        res = tmp + (pred_word & 0xFF);
+        CLIP_RESULT(res);
+        res2 = tmp + ((pred_word >> 8) & 0xFF);
+        CLIP_RESULT(res2);
+        dst_word = (res2 << 8) | res;
+        res = tmp + ((pred_word >> 16) & 0xFF);
+        CLIP_RESULT(res);
+        dst_word |= (res << 16);
+        res = tmp + ((pred_word >> 24) & 0xFF);
+        CLIP_RESULT(res);
+        dst_word |= (res << 24);
+        *((uint32*)(dst += width)) = dst_word; /* save 4 bytes to dst */
+
+        pred_word = *((uint32*)(pred += 4)); /* read 4 bytes from pred */
+        res = tmp + (pred_word & 0xFF);
+        CLIP_RESULT(res);
+        res2 = tmp + ((pred_word >> 8) & 0xFF);
+        CLIP_RESULT(res2);
+        dst_word = (res2 << 8) | res;
+        res = tmp + ((pred_word >> 16) & 0xFF);
+        CLIP_RESULT(res);
+        dst_word |= (res << 16);
+        res = tmp + ((pred_word >> 24) & 0xFF);
+        CLIP_RESULT(res);
+        dst_word |= (res << 24);
+        *((uint32*)(dst += 4)) = dst_word; /* save 4 bytes to dst */
+    }
+    return;
+}
+
+void idctcol1(int16 *blk)
+{ /* shortcut */
+    blk[0] = blk[8] = blk[16] = blk[24] = blk[32] = blk[40] = blk[48] = blk[56] =
+                                              blk[0] << 3;
+    return;
+}
+
+void idctrow2(int16 *blk, uint8 *pred, uint8 *dst, int width)
+{
+    int32 x0, x1, x2, x4, x5;
+    int i = 8;
+    uint32 pred_word, dst_word;
+    int res, res2;
+
+    /* preset the offset, such that we can take advantage pre-offset addressing mode   */
+    width -= 4;
+    dst -= width;
+    pred -= 12;
+    blk -= 8;
+
+    while (i--)
+    {
+        /* shortcut */
+        x4 = blk[9];
+        blk[9] = 0;
+        x0 = ((*(blk += 8)) << 8) + 8192;
+        *blk = 0;  /* for proper rounding in the fourth stage */
+
+        /* first stage */
+        x5 = (W7 * x4 + 4) >> 3;
+        x4 = (W1 * x4 + 4) >> 3;
+
+        /* third stage */
+        x2 = (181 * (x4 + x5) + 128) >> 8;
+        x1 = (181 * (x4 - x5) + 128) >> 8;
+
+        /* fourth stage */
+        pred_word = *((uint32*)(pred += 12)); /* read 4 bytes from pred */
+        res = (x0 + x4) >> 14;
+        ADD_AND_CLIP1(res);
+        res2 = (x0 + x2) >> 14;
+        ADD_AND_CLIP2(res2);
+        dst_word = (res2 << 8) | res;
+        res = (x0 + x1) >> 14;
+        ADD_AND_CLIP3(res);
+        dst_word |= (res << 16);
+        res = (x0 + x5) >> 14;
+        ADD_AND_CLIP4(res);
+        dst_word |= (res << 24);
+        *((uint32*)(dst += width)) = dst_word; /* save 4 bytes to dst */
+
+        pred_word = *((uint32*)(pred += 4)); /* read 4 bytes from pred */
+        res = (x0 - x5) >> 14;
+        ADD_AND_CLIP1(res);
+        res2 = (x0 - x1) >> 14;
+        ADD_AND_CLIP2(res2);
+        dst_word = (res2 << 8) | res;
+        res = (x0 - x2) >> 14;
+        ADD_AND_CLIP3(res);
+        dst_word |= (res << 16);
+        res = (x0 - x4) >> 14;
+        ADD_AND_CLIP4(res);
+        dst_word |= (res << 24);
+        *((uint32*)(dst += 4)) = dst_word; /* save 4 bytes to dst */
+    }
+    return ;
+}
+
+void idctcol2(int16 *blk)
+{
+    int32 x0, x1, x3, x5, x7;//, x8;
+
+    x1 = blk[8];
+    x0 = ((int32)blk[0] << 11) + 128;
+    /* both upper and lower*/
+
+    x7 = W7 * x1;
+    x1 = W1 * x1;
+
+    x3 = x7;
+    x5 = (181 * (x1 - x7) + 128) >> 8;
+    x7 = (181 * (x1 + x7) + 128) >> 8;
+
+    blk[0] = (x0 + x1) >> 8;
+    blk[8] = (x0 + x7) >> 8;
+    blk[16] = (x0 + x5) >> 8;
+    blk[24] = (x0 + x3) >> 8;
+    blk[56] = (x0 - x1) >> 8;
+    blk[48] = (x0 - x7) >> 8;
+    blk[40] = (x0 - x5) >> 8;
+    blk[32] = (x0 - x3) >> 8;
+
+    return ;
+}
+
+void idctrow3(int16 *blk, uint8 *pred, uint8 *dst, int width)
+{
+    int32 x0, x1, x2, x3, x4, x5, x6, x7, x8;
+    int i = 8;
+    uint32 pred_word, dst_word;
+    int res, res2;
+
+    /* preset the offset, such that we can take advantage pre-offset addressing mode   */
+    width -= 4;
+    dst -= width;
+    pred -= 12;
+    blk -= 8;
+
+    while (i--)
+    {
+        x2 = blk[10];
+        blk[10] = 0;
+        x1 = blk[9];
+        blk[9] = 0;
+        x0 = ((*(blk += 8)) << 8) + 8192;
+        *blk = 0;   /* for proper rounding in the fourth stage */
+        /* both upper and lower*/
+        /* both x2orx6 and x0orx4 */
+
+        x4 = x0;
+        x6 = (W6 * x2 + 4) >> 3;
+        x2 = (W2 * x2 + 4) >> 3;
+        x8 = x0 - x2;
+        x0 += x2;
+        x2 = x8;
+        x8 = x4 - x6;
+        x4 += x6;
+        x6 = x8;
+
+        x7 = (W7 * x1 + 4) >> 3;
+        x1 = (W1 * x1 + 4) >> 3;
+        x3 = x7;
+        x5 = (181 * (x1 - x7) + 128) >> 8;
+        x7 = (181 * (x1 + x7) + 128) >> 8;
+
+        pred_word = *((uint32*)(pred += 12)); /* read 4 bytes from pred */
+        res = (x0 + x1) >> 14;
+        ADD_AND_CLIP1(res);
+        res2 = (x4 + x7) >> 14;
+        ADD_AND_CLIP2(res2);
+        dst_word = (res2 << 8) | res;
+        res = (x6 + x5) >> 14;
+        ADD_AND_CLIP3(res);
+        dst_word |= (res << 16);
+        res = (x2 + x3) >> 14;
+        ADD_AND_CLIP4(res);
+        dst_word |= (res << 24);
+        *((uint32*)(dst += width)) = dst_word; /* save 4 bytes to dst */
+
+        pred_word = *((uint32*)(pred += 4)); /* read 4 bytes from pred */
+        res = (x2 - x3) >> 14;
+        ADD_AND_CLIP1(res);
+        res2 = (x6 - x5) >> 14;
+        ADD_AND_CLIP2(res2);
+        dst_word = (res2 << 8) | res;
+        res = (x4 - x7) >> 14;
+        ADD_AND_CLIP3(res);
+        dst_word |= (res << 16);
+        res = (x0 - x1) >> 14;
+        ADD_AND_CLIP4(res);
+        dst_word |= (res << 24);
+        *((uint32*)(dst += 4)) = dst_word; /* save 4 bytes to dst */
+    }
+
+    return ;
+}
+
+void idctcol3(int16 *blk)
+{
+    int32 x0, x1, x2, x3, x4, x5, x6, x7, x8;
+
+    x2 = blk[16];
+    x1 = blk[8];
+    x0 = ((int32)blk[0] << 11) + 128;
+
+    x4 = x0;
+    x6 = W6 * x2;
+    x2 = W2 * x2;
+    x8 = x0 - x2;
+    x0 += x2;
+    x2 = x8;
+    x8 = x4 - x6;
+    x4 += x6;
+    x6 = x8;
+
+    x7 = W7 * x1;
+    x1 = W1 * x1;
+    x3 = x7;
+    x5 = (181 * (x1 - x7) + 128) >> 8;
+    x7 = (181 * (x1 + x7) + 128) >> 8;
+
+    blk[0] = (x0 + x1) >> 8;
+    blk[8] = (x4 + x7) >> 8;
+    blk[16] = (x6 + x5) >> 8;
+    blk[24] = (x2 + x3) >> 8;
+    blk[56] = (x0 - x1) >> 8;
+    blk[48] = (x4 - x7) >> 8;
+    blk[40] = (x6 - x5) >> 8;
+    blk[32] = (x2 - x3) >> 8;
+
+    return;
+}
+
+
+void idctrow4(int16 *blk, uint8 *pred, uint8 *dst, int width)
+{
+    int32 x0, x1, x2, x3, x4, x5, x6, x7, x8;
+    int i = 8;
+    uint32 pred_word, dst_word;
+    int res, res2;
+
+    /* preset the offset, such that we can take advantage pre-offset addressing mode   */
+    width -= 4;
+    dst -= width;
+    pred -= 12;
+    blk -= 8;
+
+    while (i--)
+    {
+        x2 = blk[10];
+        blk[10] = 0;
+        x1 = blk[9];
+        blk[9] = 0;
+        x3 = blk[11];
+        blk[11] = 0;
+        x0 = ((*(blk += 8)) << 8) + 8192;
+        *blk = 0;    /* for proper rounding in the fourth stage */
+
+        x4 = x0;
+        x6 = (W6 * x2 + 4) >> 3;
+        x2 = (W2 * x2 + 4) >> 3;
+        x8 = x0 - x2;
+        x0 += x2;
+        x2 = x8;
+        x8 = x4 - x6;
+        x4 += x6;
+        x6 = x8;
+
+        x7 = (W7 * x1 + 4) >> 3;
+        x1 = (W1 * x1 + 4) >> 3;
+        x5 = (W3 * x3 + 4) >> 3;
+        x3 = (- W5 * x3 + 4) >> 3;
+        x8 = x1 - x5;
+        x1 += x5;
+        x5 = x8;
+        x8 = x7 - x3;
+        x3 += x7;
+        x7 = (181 * (x5 + x8) + 128) >> 8;
+        x5 = (181 * (x5 - x8) + 128) >> 8;
+
+        pred_word = *((uint32*)(pred += 12)); /* read 4 bytes from pred */
+        res = (x0 + x1) >> 14;
+        ADD_AND_CLIP1(res);
+        res2 = (x4 + x7) >> 14;
+        ADD_AND_CLIP2(res2);
+        dst_word = (res2 << 8) | res;
+        res = (x6 + x5) >> 14;
+        ADD_AND_CLIP3(res);
+        dst_word |= (res << 16);
+        res = (x2 + x3) >> 14;
+        ADD_AND_CLIP4(res);
+        dst_word |= (res << 24);
+        *((uint32*)(dst += width)) = dst_word; /* save 4 bytes to dst */
+
+        pred_word = *((uint32*)(pred += 4)); /* read 4 bytes from pred */
+        res = (x2 - x3) >> 14;
+        ADD_AND_CLIP1(res);
+        res2 = (x6 - x5) >> 14;
+        ADD_AND_CLIP2(res2);
+        dst_word = (res2 << 8) | res;
+        res = (x4 - x7) >> 14;
+        ADD_AND_CLIP3(res);
+        dst_word |= (res << 16);
+        res = (x0 - x1) >> 14;
+        ADD_AND_CLIP4(res);
+        dst_word |= (res << 24);
+        *((uint32*)(dst += 4)) = dst_word; /* save 4 bytes to dst */
+    }
+    return ;
+}
+
+void idctcol4(int16 *blk)
+{
+    int32 x0, x1, x2, x3, x4, x5, x6, x7, x8;
+    x2 = blk[16];
+    x1 = blk[8];
+    x3 = blk[24];
+    x0 = ((int32)blk[0] << 11) + 128;
+
+    x4 = x0;
+    x6 = W6 * x2;
+    x2 = W2 * x2;
+    x8 = x0 - x2;
+    x0 += x2;
+    x2 = x8;
+    x8 = x4 - x6;
+    x4 += x6;
+    x6 = x8;
+
+    x7 = W7 * x1;
+    x1 = W1 * x1;
+    x5 = W3 * x3;
+    x3 = -W5 * x3;
+    x8 = x1 - x5;
+    x1 += x5;
+    x5 = x8;
+    x8 = x7 - x3;
+    x3 += x7;
+    x7 = (181 * (x5 + x8) + 128) >> 8;
+    x5 = (181 * (x5 - x8) + 128) >> 8;
+
+
+    blk[0] = (x0 + x1) >> 8;
+    blk[8] = (x4 + x7) >> 8;
+    blk[16] = (x6 + x5) >> 8;
+    blk[24] = (x2 + x3) >> 8;
+    blk[56] = (x0 - x1) >> 8;
+    blk[48] = (x4 - x7) >> 8;
+    blk[40] = (x6 - x5) >> 8;
+    blk[32] = (x2 - x3) >> 8;
+
+    return ;
+}
+
+void idctrow0_intra(int16 *, PIXEL *, int)
+{
+    return ;
+}
+
+void idctrow1_intra(int16 *blk, PIXEL *comp, int width)
+{
+    /* shortcut */
+    int32 tmp;
+    int i = 8;
+    int offset = width;
+    uint32 word;
+
+    comp -= offset;
+    while (i--)
+    {
+        tmp = ((blk[0] + 32) >> 6);
+        blk[0] = 0;
+        CLIP_RESULT(tmp)
+
+        word = (tmp << 8) | tmp;
+        word = (word << 16) | word;
+
+        *((uint32*)(comp += offset)) = word;
+        *((uint32*)(comp + 4)) = word;
+
+
+
+
+        blk += B_SIZE;
+    }
+    return;
+}
+
+void idctrow2_intra(int16 *blk, PIXEL *comp, int width)
+{
+    int32 x0, x1, x2, x4, x5, temp;
+    int i = 8;
+    int offset = width;
+    int32 word;
+
+    comp -= offset;
+    while (i--)
+    {
+        /* shortcut */
+        x4 = blk[1];
+        blk[1] = 0;
+        x0 = ((int32)blk[0] << 8) + 8192;
+        blk[0] = 0;   /* for proper rounding in the fourth stage */
+
+        /* first stage */
+        x5 = (W7 * x4 + 4) >> 3;
+        x4 = (W1 * x4 + 4) >> 3;
+
+        /* third stage */
+        x2 = (181 * (x4 + x5) + 128) >> 8;
+        x1 = (181 * (x4 - x5) + 128) >> 8;
+
+        /* fourth stage */
+        word = ((x0 + x4) >> 14);
+        CLIP_RESULT(word)
+
+        temp = ((x0 + x2) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 8);
+        temp = ((x0 + x1) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 16);
+        temp = ((x0 + x5) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 24);
+        *((int32*)(comp += offset)) = word;
+
+        word = ((x0 - x5) >> 14);
+        CLIP_RESULT(word)
+        temp = ((x0 - x1) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 8);
+        temp = ((x0 - x2) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 16);
+        temp = ((x0 - x4) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 24);
+        *((int32*)(comp + 4)) = word;
+
+        blk += B_SIZE;
+    }
+    return ;
+}
+
+void idctrow3_intra(int16 *blk, PIXEL *comp, int width)
+{
+    int32 x0, x1, x2, x3, x4, x5, x6, x7, x8, temp;
+    int i = 8;
+    int offset = width;
+    int32 word;
+
+    comp -= offset;
+
+    while (i--)
+    {
+        x2 = blk[2];
+        blk[2] = 0;
+        x1 = blk[1];
+        blk[1] = 0;
+        x0 = ((int32)blk[0] << 8) + 8192;
+        blk[0] = 0;/* for proper rounding in the fourth stage */
+        /* both upper and lower*/
+        /* both x2orx6 and x0orx4 */
+
+        x4 = x0;
+        x6 = (W6 * x2 + 4) >> 3;
+        x2 = (W2 * x2 + 4) >> 3;
+        x8 = x0 - x2;
+        x0 += x2;
+        x2 = x8;
+        x8 = x4 - x6;
+        x4 += x6;
+        x6 = x8;
+
+        x7 = (W7 * x1 + 4) >> 3;
+        x1 = (W1 * x1 + 4) >> 3;
+        x3 = x7;
+        x5 = (181 * (x1 - x7) + 128) >> 8;
+        x7 = (181 * (x1 + x7) + 128) >> 8;
+
+        word = ((x0 + x1) >> 14);
+        CLIP_RESULT(word)
+        temp = ((x4 + x7) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 8);
+
+
+        temp = ((x6 + x5) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 16);
+
+        temp = ((x2 + x3) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 24);
+        *((int32*)(comp += offset)) = word;
+
+        word = ((x2 - x3) >> 14);
+        CLIP_RESULT(word)
+
+        temp = ((x6 - x5) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 8);
+
+        temp = ((x4 - x7) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 16);
+
+        temp = ((x0 - x1) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 24);
+        *((int32*)(comp + 4)) = word;
+
+        blk += B_SIZE;
+    }
+    return ;
+}
+
+void idctrow4_intra(int16 *blk, PIXEL *comp, int width)
+{
+    int32 x0, x1, x2, x3, x4, x5, x6, x7, x8, temp;
+    int i = 8;
+    int offset = width;
+    int32 word;
+
+    comp -= offset;
+
+    while (i--)
+    {
+        x2 = blk[2];
+        blk[2] = 0;
+        x1 = blk[1];
+        blk[1] = 0;
+        x3 = blk[3];
+        blk[3] = 0;
+        x0 = ((int32)blk[0] << 8) + 8192;
+        blk[0] = 0;/* for proper rounding in the fourth stage */
+
+        x4 = x0;
+        x6 = (W6 * x2 + 4) >> 3;
+        x2 = (W2 * x2 + 4) >> 3;
+        x8 = x0 - x2;
+        x0 += x2;
+        x2 = x8;
+        x8 = x4 - x6;
+        x4 += x6;
+        x6 = x8;
+
+        x7 = (W7 * x1 + 4) >> 3;
+        x1 = (W1 * x1 + 4) >> 3;
+        x5 = (W3 * x3 + 4) >> 3;
+        x3 = (- W5 * x3 + 4) >> 3;
+        x8 = x1 - x5;
+        x1 += x5;
+        x5 = x8;
+        x8 = x7 - x3;
+        x3 += x7;
+        x7 = (181 * (x5 + x8) + 128) >> 8;
+        x5 = (181 * (x5 - x8) + 128) >> 8;
+
+        word = ((x0 + x1) >> 14);
+        CLIP_RESULT(word)
+
+        temp = ((x4 + x7) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 8);
+
+
+        temp = ((x6 + x5) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 16);
+
+        temp = ((x2 + x3) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 24);
+        *((int32*)(comp += offset)) = word;
+
+        word = ((x2 - x3) >> 14);
+        CLIP_RESULT(word)
+
+        temp = ((x6 - x5) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 8);
+
+        temp = ((x4 - x7) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 16);
+
+        temp = ((x0 - x1) >> 14);
+        CLIP_RESULT(temp)
+        word = word | (temp << 24);
+        *((int32*)(comp + 4)) = word;
+
+        blk += B_SIZE;
+    }
+
+    return ;
+}
+
+#endif
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/max_level.h b/media/libstagefright/codecs/m4v_h263/dec/src/max_level.h
new file mode 100644
index 0000000..2d59c73
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/max_level.h
@@ -0,0 +1,149 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+*     -------------------------------------------------------------------   *
+*                    MPEG-4 Simple Profile Video Decoder                    *
+*     -------------------------------------------------------------------   *
+*
+* This software module was originally developed by
+*
+*   Michael Wollborn (TUH / ACTS-MoMuSyS)
+*
+* in the course of development of the MPEG-4 Video (ISO/IEC 14496-2) standard.
+* This software module is an implementation of a part of one or more MPEG-4
+* Video (ISO/IEC 14496-2) tools as specified by the MPEG-4 Video (ISO/IEC
+* 14496-2) standard.
+*
+* ISO/IEC gives users of the MPEG-4 Video (ISO/IEC 14496-2) standard free
+* license to this software module or modifications thereof for use in hardware
+* or software products claiming conformance to the MPEG-4 Video (ISO/IEC
+* 14496-2) standard.
+*
+* Those intending to use this software module in hardware or software products
+* are advised that its use may infringe existing patents. The original
+* developer of this software module and his/her company, the subsequent
+* editors and their companies, and ISO/IEC have no liability for use of this
+* software module or modifications thereof in an implementation. Copyright is
+* not released for non MPEG-4 Video (ISO/IEC 14496-2) Standard conforming
+* products.
+*
+* ACTS-MoMuSys partners retain full right to use the code for his/her own
+* purpose, assign or donate the code to a third party and to inhibit third
+* parties from using the code for non MPEG-4 Video (ISO/IEC 14496-2) Standard
+* conforming products. This copyright notice must be included in all copies or
+* derivative works.
+*
+* Copyright (c) 1997
+*
+*****************************************************************************
+
+This is a header file for "vlc_decode.c".  The table data actually resides
+in "vlc_tab.c".
+
+
+------------------------------------------------------------------------------
+*/
+
+/*----------------------------------------------------------------------------
+; CONTINUE ONLY IF NOT ALREADY DEFINED
+----------------------------------------------------------------------------*/
+
+#ifndef max_level_H
+#define max_level_H
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4def.h"
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL VARIABLES REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    extern const int intra_max_level[2][NCOEFF_BLOCK];
+
+    extern const int inter_max_level[2][NCOEFF_BLOCK];
+
+    extern const int intra_max_run0[28];
+
+
+    extern const int intra_max_run1[9];
+
+    extern const int inter_max_run0[13];
+
+
+    extern const int inter_max_run1[4];
+
+
+    /*----------------------------------------------------------------------------
+    ; SIMPLE TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; ENUMERATED TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; STRUCTURES TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+
+    /*----------------------------------------------------------------------------
+    ; GLOBAL FUNCTION DEFINITIONS
+    ; Function Prototype declaration
+    ----------------------------------------------------------------------------*/
+
+
+    /*----------------------------------------------------------------------------
+    ; END
+    ----------------------------------------------------------------------------*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/mb_motion_comp.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/mb_motion_comp.cpp
new file mode 100644
index 0000000..fbc7be1a
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/mb_motion_comp.cpp
@@ -0,0 +1,623 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+    video = pointer to structure of type VideoDecData
+
+ Local Stores/Buffers/Pointers Needed:
+    roundtab16 = rounding table
+
+ Global Stores/Buffers/Pointers Needed:
+    None
+
+ Outputs:
+    None
+
+ Pointers and Buffers Modified:
+    video->currVop->yChan contents are the newly calculated luminance
+      data
+    video->currVop->uChan contents are the newly calculated chrominance
+      b data
+    video->currVop->vChan contents are the newly calculated chrominance
+      r data
+    video->pstprcTypCur contents are the updated semaphore propagation
+      values
+
+ Local Stores Modified:
+    None
+
+ Global Stores Modified:
+    None
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+ This function performs high level motion compensation on the luminance and
+ chrominance data. It sets up all the parameters required by the functions
+ that perform luminance and chrominance prediction and it initializes the
+ pointer to the post processing semaphores of a given block. It also checks
+ the motion compensation mode in order to determine which luminance or
+ chrominance prediction functions to call and determines how the post
+ processing semaphores are updated.
+
+*/
+
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4dec_lib.h"
+#include "motion_comp.h"
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+/* 09/29/2000 bring this from mp4def.h */
+// const static int roundtab4[] = {0,1,1,1};
+// const static int roundtab8[] = {0,0,1,1,1,1,1,2};
+/*** 10/30 for TPS */
+// const static int roundtab12[] = {0,0,0,1,1,1,1,1,1,1,2,2};
+/* 10/30 for TPS ***/
+const static int roundtab16[] = {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2};
+
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+
+/** modified 3 August 2005 to do prediction and put the results in
+video->mblock->pred_block, no adding with residue */
+
+void  MBMotionComp(
+    VideoDecData *video,
+    int CBP
+)
+{
+
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    /* Previous Video Object Plane */
+    Vop *prev = video->prevVop;
+
+    /* Current Macroblock (MB) in the VOP */
+    int mbnum = video->mbnum;
+
+    /* Number of MB per data row */
+    int MB_in_width = video->nMBPerRow;
+    int ypos, xpos;
+    PIXEL *c_comp, *c_prev;
+    PIXEL *cu_comp, *cu_prev;
+    PIXEL *cv_comp, *cv_prev;
+    int height, width, pred_width;
+    int imv, mvwidth;
+    int32 offset;
+    uint8 mode;
+    uint8 *pred_block, *pred;
+
+    /* Motion vector (dx,dy) in half-pel resolution */
+    int dx, dy;
+
+    MOT px[4], py[4];
+    int xpred, ypred;
+    int xsum;
+    int round1;
+#ifdef PV_POSTPROC_ON // 2/14/2001      
+    /* Total number of pixels in the VOL */
+    int32 size = (int32) video->nTotalMB << 8;
+    uint8 *pp_dec_y, *pp_dec_u;
+    int ll[4];
+    int tmp = 0;
+    uint8 msk_deblock = 0;
+#endif
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* Set rounding type */
+    /* change from array to single 09/29/2000 */
+    round1 = (int)(1 - video->currVop->roundingType);
+
+    /* width of luminance data in pixels (y axis) */
+    width = video->width;
+
+    /* heigth of luminance data in pixels (x axis) */
+    height = video->height;
+
+    /* number of blocks per row */
+    mvwidth = MB_in_width << 1;
+
+    /* starting y position in current MB; origin of MB */
+    ypos = video->mbnum_row << 4 ;
+    /* starting x position in current MB; origin of MB */
+    xpos = video->mbnum_col << 4 ;
+
+    /* offset to (x,y) position in current luminance MB */
+    /* in pixel resolution                              */
+    /* ypos*width -> row, +x -> column */
+    offset = (int32)ypos * width + xpos;
+
+    /* get mode for current MB */
+    mode = video->headerInfo.Mode[mbnum];
+
+    /* block index */
+    /* imv = (xpos/8) + ((ypos/8) * mvwidth) */
+    imv = (offset >> 6) - (xpos >> 6) + (xpos >> 3);
+    if (mode & INTER_1VMASK)
+    {
+        dx = px[0] = px[1] = px[2] = px[3] = video->motX[imv];
+        dy = py[0] = py[1] = py[2] = py[3] = video->motY[imv];
+        if ((dx & 3) == 0)
+        {
+            dx = dx >> 1;
+        }
+        else
+        {
+            /* x component of MV is or'ed for rounding (?) */
+            dx = (dx >> 1) | 1;
+        }
+
+        /* y component of motion vector; divide by 2 for to */
+        /* convert to full-pel resolution.                  */
+        if ((dy & 3) == 0)
+        {
+            dy = dy >> 1;
+        }
+        else
+        {
+            /* y component of MV is or'ed for rounding (?) */
+            dy = (dy >> 1) | 1;
+        }
+    }
+    else
+    {
+        px[0] = video->motX[imv];
+        px[1] = video->motX[imv+1];
+        px[2] = video->motX[imv+mvwidth];
+        px[3] = video->motX[imv+mvwidth+1];
+        xsum = px[0] + px[1] + px[2] + px[3];
+        dx = PV_SIGN(xsum) * (roundtab16[(PV_ABS(xsum)) & 0xF] +
+                              (((PV_ABS(xsum)) >> 4) << 1));
+        py[0] = video->motY[imv];
+        py[1] = video->motY[imv+1];
+        py[2] = video->motY[imv+mvwidth];
+        py[3] = video->motY[imv+mvwidth+1];
+        xsum = py[0] + py[1] + py[2] + py[3];
+        dy = PV_SIGN(xsum) * (roundtab16[(PV_ABS(xsum)) & 0xF] +
+                              (((PV_ABS(xsum)) >> 4) << 1));
+    }
+
+    /* Pointer to previous luminance frame */
+    c_prev  = prev->yChan;
+
+    pred_block = video->mblock->pred_block;
+
+    /* some blocks have no residue or INTER4V */
+    /*if (mode == MODE_INTER4V)   05/08/15 */
+    /* Motion Compensation for an 8x8 block within a MB */
+    /* (4 MV per MB) */
+
+
+
+    /* Call function that performs luminance prediction */
+    /*      luminance_pred_mode_inter4v(xpos, ypos, px, py, c_prev,
+                    video->mblock->pred_block, width, height,
+                    round1, mvwidth, &xsum, &ysum);*/
+    c_comp = video->currVop->yChan + offset;
+
+
+    xpred = (int)((xpos << 1) + px[0]);
+    ypred = (int)((ypos << 1) + py[0]);
+
+    if ((CBP >> 5)&1)
+    {
+        pred = pred_block;
+        pred_width = 16;
+    }
+    else
+    {
+        pred = c_comp;
+        pred_width = width;
+    }
+
+    /* check whether the MV points outside the frame */
+    if (xpred >= 0 && xpred <= ((width << 1) - (2*B_SIZE)) &&
+            ypred >= 0 && ypred <= ((height << 1) - (2*B_SIZE)))
+    {   /*****************************/
+        /* (x,y) is inside the frame */
+        /*****************************/
+        ;
+        GetPredAdvBTable[ypred&1][xpred&1](c_prev + (xpred >> 1) + ((ypred >> 1)*width),
+                                           pred, width, (pred_width << 1) | round1);
+    }
+    else
+    {   /******************************/
+        /* (x,y) is outside the frame */
+        /******************************/
+        GetPredOutside(xpred, ypred, c_prev,
+                       pred, width, height, round1, pred_width);
+    }
+
+
+    /* Compute prediction values over current luminance MB */
+    /* (blocks 1); add motion vector prior to input;       */
+    /* add 8 to x_pos to advance to next block         */
+    xpred = (int)(((xpos + B_SIZE) << 1) + px[1]);
+    ypred = (int)((ypos << 1) + py[1]);
+
+    if ((CBP >> 4)&1)
+    {
+        pred = pred_block + 8;
+        pred_width = 16;
+    }
+    else
+    {
+        pred = c_comp + 8;
+        pred_width = width;
+    }
+
+    /* check whether the MV points outside the frame */
+    if (xpred >= 0 && xpred <= ((width << 1) - (2*B_SIZE)) &&
+            ypred >= 0 && ypred <= ((height << 1) - (2*B_SIZE)))
+    {   /*****************************/
+        /* (x,y) is inside the frame */
+        /*****************************/
+        GetPredAdvBTable[ypred&1][xpred&1](c_prev + (xpred >> 1) + ((ypred >> 1)*width),
+                                           pred, width, (pred_width << 1) | round1);
+    }
+    else
+    {   /******************************/
+        /* (x,y) is outside the frame */
+        /******************************/
+        GetPredOutside(xpred, ypred, c_prev,
+                       pred, width, height, round1, pred_width);
+    }
+
+
+
+    /* Compute prediction values over current luminance MB */
+    /* (blocks 2); add motion vector prior to input        */
+    /* add 8 to y_pos to advance to block on next row      */
+    xpred = (int)((xpos << 1) + px[2]);
+    ypred = (int)(((ypos + B_SIZE) << 1) + py[2]);
+
+    if ((CBP >> 3)&1)
+    {
+        pred = pred_block + 128;
+        pred_width = 16;
+    }
+    else
+    {
+        pred = c_comp + (width << 3);
+        pred_width = width;
+    }
+
+    /* check whether the MV points outside the frame */
+    if (xpred >= 0 && xpred <= ((width << 1) - (2*B_SIZE)) &&
+            ypred >= 0 && ypred <= ((height << 1) - (2*B_SIZE)))
+    {   /*****************************/
+        /* (x,y) is inside the frame */
+        /*****************************/
+        GetPredAdvBTable[ypred&1][xpred&1](c_prev + (xpred >> 1) + ((ypred >> 1)*width),
+                                           pred, width, (pred_width << 1) | round1);
+    }
+    else
+    {   /******************************/
+        /* (x,y) is outside the frame */
+        /******************************/
+        GetPredOutside(xpred, ypred, c_prev,
+                       pred, width, height, round1, pred_width);
+    }
+
+
+
+    /* Compute prediction values over current luminance MB */
+    /* (blocks 3); add motion vector prior to input;       */
+    /* add 8 to x_pos and y_pos to advance to next block   */
+    /* on next row                         */
+    xpred = (int)(((xpos + B_SIZE) << 1) + px[3]);
+    ypred = (int)(((ypos + B_SIZE) << 1) + py[3]);
+
+    if ((CBP >> 2)&1)
+    {
+        pred = pred_block + 136;
+        pred_width = 16;
+    }
+    else
+    {
+        pred = c_comp + (width << 3) + 8;
+        pred_width = width;
+    }
+
+    /* check whether the MV points outside the frame */
+    if (xpred >= 0 && xpred <= ((width << 1) - (2*B_SIZE)) &&
+            ypred >= 0 && ypred <= ((height << 1) - (2*B_SIZE)))
+    {   /*****************************/
+        /* (x,y) is inside the frame */
+        /*****************************/
+        GetPredAdvBTable[ypred&1][xpred&1](c_prev + (xpred >> 1) + ((ypred >> 1)*width),
+                                           pred, width, (pred_width << 1) | round1);
+    }
+    else
+    {   /******************************/
+        /* (x,y) is outside the frame */
+        /******************************/
+        GetPredOutside(xpred, ypred, c_prev,
+                       pred, width, height, round1, pred_width);
+    }
+    /* Call function to set de-blocking and de-ringing */
+    /*   semaphores for luminance                      */
+
+#ifdef PV_POSTPROC_ON
+    if (video->postFilterType != PV_NO_POST_PROC)
+    {
+        if (mode&INTER_1VMASK)
+        {
+            pp_dec_y = video->pstprcTypCur + imv;
+            ll[0] = 1;
+            ll[1] = mvwidth - 1;
+            ll[2] = 1;
+            ll[3] = -mvwidth - 1;
+            msk_deblock = pp_semaphore_luma(xpred, ypred, pp_dec_y,
+                                            video->pstprcTypPrv, ll, &tmp, px[0], py[0], mvwidth,
+                                            width, height);
+
+            pp_dec_u = video->pstprcTypCur + (size >> 6) +
+                       ((imv + (xpos >> 3)) >> 2);
+
+            pp_semaphore_chroma_inter(xpred, ypred, pp_dec_u,
+                                      video->pstprcTypPrv, dx, dy, mvwidth, height, size,
+                                      tmp, msk_deblock);
+        }
+        else
+        {
+            /* Post-processing mode (MBM_INTER8) */
+            /* deblocking and deringing) */
+            pp_dec_y = video->pstprcTypCur + imv;
+            *pp_dec_y = 4;
+            *(pp_dec_y + 1) = 4;
+            *(pp_dec_y + mvwidth) = 4;
+            *(pp_dec_y + mvwidth + 1) = 4;
+            pp_dec_u = video->pstprcTypCur + (size >> 6) +
+                       ((imv + (xpos >> 3)) >> 2);
+            *pp_dec_u = 4;
+            pp_dec_u[size>>8] = 4;
+        }
+    }
+#endif
+
+
+    /* xpred and ypred calculation for Chrominance is */
+    /* in full-pel resolution.                        */
+
+    /* Chrominance */
+    /* width of chrominance data in pixels (y axis) */
+    width >>= 1;
+
+    /* heigth of chrominance data in pixels (x axis) */
+    height >>= 1;
+
+    /* Pointer to previous chrominance b frame */
+    cu_prev = prev->uChan;
+
+    /* Pointer to previous chrominance r frame */
+    cv_prev = prev->vChan;
+
+    /* x position in prediction data offset by motion vector */
+    /* xpred calculation for Chrominance is in full-pel      */
+    /* resolution.                                           */
+    xpred = xpos + dx;
+
+    /* y position in prediction data offset by motion vector */
+    /* ypred calculation for Chrominance is in full-pel      */
+    /* resolution.                                           */
+    ypred = ypos + dy;
+
+    cu_comp = video->currVop->uChan + (offset >> 2) + (xpos >> 2);
+    cv_comp = video->currVop->vChan + (offset >> 2) + (xpos >> 2);
+
+    /* Call function that performs chrominance prediction */
+    /*      chrominance_pred(xpred, ypred, cu_prev, cv_prev,
+            pred_block, width_uv, height_uv,
+            round1);*/
+    if (xpred >= 0 && xpred <= ((width << 1) - (2*B_SIZE)) && ypred >= 0 &&
+            ypred <= ((height << 1) - (2*B_SIZE)))
+    {
+        /*****************************/
+        /* (x,y) is inside the frame */
+        /*****************************/
+        if ((CBP >> 1)&1)
+        {
+            pred = pred_block + 256;
+            pred_width = 16;
+        }
+        else
+        {
+            pred = cu_comp;
+            pred_width = width;
+        }
+
+        /* Compute prediction for Chrominance b (block[4]) */
+        GetPredAdvBTable[ypred&1][xpred&1](cu_prev + (xpred >> 1) + ((ypred >> 1)*width),
+                                           pred, width, (pred_width << 1) | round1);
+
+        if (CBP&1)
+        {
+            pred = pred_block + 264;
+            pred_width = 16;
+        }
+        else
+        {
+            pred = cv_comp;
+            pred_width = width;
+        }
+        /* Compute prediction for Chrominance r (block[5]) */
+        GetPredAdvBTable[ypred&1][xpred&1](cv_prev + (xpred >> 1) + ((ypred >> 1)*width),
+                                           pred, width, (pred_width << 1) | round1);
+
+        return ;
+    }
+    else
+    {
+        /******************************/
+        /* (x,y) is outside the frame */
+        /******************************/
+        if ((CBP >> 1)&1)
+        {
+            pred = pred_block + 256;
+            pred_width = 16;
+        }
+        else
+        {
+            pred = cu_comp;
+            pred_width = width;
+        }
+
+        /* Compute prediction for Chrominance b (block[4]) */
+        GetPredOutside(xpred, ypred,    cu_prev,
+                       pred, width, height, round1, pred_width);
+
+        if (CBP&1)
+        {
+            pred = pred_block + 264;
+            pred_width = 16;
+        }
+        else
+        {
+            pred = cv_comp;
+            pred_width = width;
+        }
+
+        /* Compute prediction for Chrominance r (block[5]) */
+        GetPredOutside(xpred, ypred,    cv_prev,
+                       pred, width, height, round1, pred_width);
+
+        return ;
+    }
+
+}
+
+/*** special function for skipped macroblock,  Aug 15, 2005 */
+void  SkippedMBMotionComp(
+    VideoDecData *video
+)
+{
+    Vop *prev = video->prevVop;
+    Vop *comp;
+    int ypos, xpos;
+    PIXEL *c_comp, *c_prev;
+    PIXEL *cu_comp, *cu_prev;
+    PIXEL *cv_comp, *cv_prev;
+    int width, width_uv;
+    int32 offset;
+#ifdef PV_POSTPROC_ON // 2/14/2001      
+    int imv;
+    int32 size = (int32) video->nTotalMB << 8;
+    uint8 *pp_dec_y, *pp_dec_u;
+    uint8 *pp_prev1;
+    int mvwidth = video->nMBPerRow << 1;
+#endif
+
+    width = video->width;
+    width_uv  = width >> 1;
+    ypos = video->mbnum_row << 4 ;
+    xpos = video->mbnum_col << 4 ;
+    offset = (int32)ypos * width + xpos;
+
+
+    /* zero motion compensation for previous frame */
+    /*mby*width + mbx;*/
+    c_prev  = prev->yChan + offset;
+    /*by*width_uv + bx;*/
+    cu_prev = prev->uChan + (offset >> 2) + (xpos >> 2);
+    /*by*width_uv + bx;*/
+    cv_prev = prev->vChan + (offset >> 2) + (xpos >> 2);
+
+    comp = video->currVop;
+
+    c_comp  = comp->yChan + offset;
+    cu_comp = comp->uChan + (offset >> 2) + (xpos >> 2);
+    cv_comp = comp->vChan + (offset >> 2) + (xpos >> 2);
+
+
+    /* Copy previous reconstructed frame into the current frame */
+    PutSKIPPED_MB(c_comp,  c_prev, width);
+    PutSKIPPED_B(cu_comp, cu_prev, width_uv);
+    PutSKIPPED_B(cv_comp, cv_prev, width_uv);
+
+    /*  10/24/2000 post_processing semaphore generation */
+#ifdef PV_POSTPROC_ON // 2/14/2001
+    if (video->postFilterType != PV_NO_POST_PROC)
+    {
+        imv = (offset >> 6) - (xpos >> 6) + (xpos >> 3);
+        /* Post-processing mode (copy previous MB) */
+        pp_prev1 = video->pstprcTypPrv + imv;
+        pp_dec_y = video->pstprcTypCur + imv;
+        *pp_dec_y = *pp_prev1;
+        *(pp_dec_y + 1) = *(pp_prev1 + 1);
+        *(pp_dec_y + mvwidth) = *(pp_prev1 + mvwidth);
+        *(pp_dec_y + mvwidth + 1) = *(pp_prev1 + mvwidth + 1);
+
+        /* chrominance */
+        /*4*MB_in_width*MB_in_height*/
+        pp_prev1 = video->pstprcTypPrv + (size >> 6) +
+                   ((imv + (xpos >> 3)) >> 2);
+        pp_dec_u = video->pstprcTypCur + (size >> 6) +
+                   ((imv + (xpos >> 3)) >> 2);
+        *pp_dec_u = *pp_prev1;
+        pp_dec_u[size>>8] = pp_prev1[size>>8];
+    }
+#endif
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+
+    return;
+}
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/mb_utils.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/mb_utils.cpp
new file mode 100644
index 0000000..25a31b7
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/mb_utils.cpp
@@ -0,0 +1,133 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "mp4dec_lib.h"
+
+/* ====================================================================== /
+    Function : PutSKIPPED_MB()
+    Date     : 04/03/2000
+/ ====================================================================== */
+
+void PutSKIPPED_MB(uint8 *comp, uint8 *prev, int width)
+{
+    int32 *temp0, *temp1;
+    int  row;
+    row = MB_SIZE;
+
+
+    while (row)
+    {
+        temp0 = (int32 *)prev;
+        temp1 = (int32 *)comp;
+
+        temp1[0] = temp0[0];
+        temp1[1] = temp0[1];
+        temp1[2] = temp0[2];
+        temp1[3] = temp0[3];
+
+        comp += width;
+        prev += width;
+
+        temp0 = (int32 *)prev;
+        temp1 = (int32 *)comp;
+
+        temp1[0] = temp0[0];
+        temp1[1] = temp0[1];
+        temp1[2] = temp0[2];
+        temp1[3] = temp0[3];
+
+        comp += width;
+        prev += width;
+
+        temp0 = (int32 *)prev;
+        temp1 = (int32 *)comp;
+        temp1[0] = temp0[0];
+        temp1[1] = temp0[1];
+        temp1[2] = temp0[2];
+        temp1[3] = temp0[3];
+
+
+        comp += width;
+        prev += width;
+
+        temp0 = (int32 *)prev;
+        temp1 = (int32 *)comp;
+        temp1[0] = temp0[0];
+        temp1[1] = temp0[1];
+        temp1[2] = temp0[2];
+        temp1[3] = temp0[3];
+
+        comp += width;
+        prev += width;
+        row -= 4;
+    }
+}
+
+
+/* ====================================================================== /
+    Function : PutSKIPPED_B()
+    Date     : 04/03/2000
+/ ====================================================================== */
+
+void PutSKIPPED_B(uint8 *comp, uint8 *prev, int width)
+{
+    int32 *temp0, *temp1;
+    int  row;
+
+    row = B_SIZE;
+    while (row)
+    {
+        temp0 = (int32 *)prev;
+        temp1 = (int32 *)comp;
+
+        temp1[0] = temp0[0];
+        temp1[1] = temp0[1];
+
+        comp += width;
+        prev += width;
+
+        temp0 = (int32 *)prev;
+        temp1 = (int32 *)comp;
+
+        temp1[0] = temp0[0];
+        temp1[1] = temp0[1];
+
+        comp += width;
+        prev += width;
+
+        temp0 = (int32 *)prev;
+        temp1 = (int32 *)comp;
+
+        temp1[0] = temp0[0];
+        temp1[1] = temp0[1];
+
+        comp += width;
+        prev += width;
+
+        temp0 = (int32 *)prev;
+        temp1 = (int32 *)comp;
+
+        temp1[0] = temp0[0];
+        temp1[1] = temp0[1];
+
+        comp += width;
+        prev += width;
+        row -= 4;
+    }
+}
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/mbtype_mode.h b/media/libstagefright/codecs/m4v_h263/dec/src/mbtype_mode.h
new file mode 100644
index 0000000..c45bb5f
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/mbtype_mode.h
@@ -0,0 +1,37 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+const static int MBtype_mode[] =
+{
+    MODE_INTER,
+    MODE_INTER_Q,
+    MODE_INTER4V,
+    MODE_INTRA,
+    MODE_INTRA_Q,
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    MODE_INTER4V_Q,
+#endif
+    MODE_SKIPPED
+};
+#ifdef PV_ANNEX_IJKT_SUPPORT
+const static int16 DQ_tab_Annex_T_10[32] = {0, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3};
+const static int16 DQ_tab_Annex_T_11[32] = {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, -5};
+const static int16 MQ_chroma_QP_table[32] = {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13,
+        14, 14, 14, 14, 14, 15, 15, 15, 15, 15
+                                            };
+#endif
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/motion_comp.h b/media/libstagefright/codecs/m4v_h263/dec/src/motion_comp.h
new file mode 100644
index 0000000..0c12f20
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/motion_comp.h
@@ -0,0 +1,108 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#ifndef motion_comp_h
+#define motion_comp_h
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4dec_lib.h"
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here.
+----------------------------------------------------------------------------*/
+/* CBP Mask defines used in chrominance prediction */
+#define CBP_MASK_CHROMA_BLK4    0x2
+#define CBP_MASK_CHROMA_BLK5    0x1
+
+/* CBP Mask defines used in luminance prediction (MODE_INTER4V) */
+#define CBP_MASK_BLK0_MODE_INTER4V  0x20
+#define CBP_MASK_BLK1_MODE_INTER4V  0x10
+#define CBP_MASK_BLK2_MODE_INTER4V  0x08
+#define CBP_MASK_BLK3_MODE_INTER4V  0x04
+
+/* CBP Mask defines used in luminance prediction (MODE_INTER or MODE_INTER_Q) */
+#define CBP_MASK_MB_MODE_INTER  0x3c
+
+/*----------------------------------------------------------------------------
+; EXTERNAL VARIABLES REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define CLIP_RESULT(x)      if(x & -256){x = 0xFF & (~(x>>31));}
+#define ADD_AND_CLIP1(x)    x += (pred_word&0xFF); CLIP_RESULT(x);
+#define ADD_AND_CLIP2(x)    x += ((pred_word>>8)&0xFF); CLIP_RESULT(x);
+#define ADD_AND_CLIP3(x)    x += ((pred_word>>16)&0xFF); CLIP_RESULT(x);
+#define ADD_AND_CLIP4(x)    x += ((pred_word>>24)&0xFF); CLIP_RESULT(x);
+
+#define ADD_AND_CLIP(x,y)    {  x9 = ~(x>>8); \
+                            if(x9!=-1){ \
+                                x9 = ((uint32)x9)>>24; \
+                                y = x9|(y<<8); \
+                            } \
+                            else \
+                            {    \
+                                y =  x|(y<<8); \
+                            } \
+                            }
+
+
+    static int (*const GetPredAdvBTable[2][2])(uint8*, uint8*, int, int) =
+    {
+        {&GetPredAdvancedBy0x0, &GetPredAdvancedBy0x1},
+        {&GetPredAdvancedBy1x0, &GetPredAdvancedBy1x1}
+    };
+
+    /*----------------------------------------------------------------------------
+    ; SIMPLE TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; ENUMERATED TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; STRUCTURES TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; GLOBAL FUNCTION DEFINITIONS
+    ; Function Prototype declaration
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; END
+    ----------------------------------------------------------------------------*/
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/mp4dec_lib.h b/media/libstagefright/codecs/m4v_h263/dec/src/mp4dec_lib.h
new file mode 100644
index 0000000..9cd4edc
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/mp4dec_lib.h
@@ -0,0 +1,334 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#ifndef _MP4DECLIB_H_
+#define _MP4DECLIB_H_
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4def.h" /* typedef */
+#include "mp4lib_int.h" /* main video structure */
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL VARIABLES REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; SIMPLE TYPEDEF'S
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; ENUMERATED TYPEDEF'S
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; STRUCTURES TYPEDEF'S
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; GLOBAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+    /* defined in pvdec_api.c, these function are not supposed to be    */
+    /* exposed to programmers outside PacketVideo.  08/15/2000.    */
+    uint VideoDecoderErrorDetected(VideoDecData *video);
+
+#ifdef ENABLE_LOG
+    void m4vdec_dprintf(char *format, ...);
+#define mp4dec_log(message) m4vdec_dprintf(message)
+#else
+#define mp4dec_log(message)
+#endif
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in frame_buffer.c */
+    PV_STATUS FillFrameBufferNew(BitstreamDecVideo *stream);
+    PV_STATUS FillFrameBuffer(BitstreamDecVideo *stream, int short_header);
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in dc_ac_pred.c */
+    int cal_dc_scaler(int QP, int type);
+    PV_STATUS PV_DecodePredictedIntraDC(int compnum, BitstreamDecVideo *stream,
+                                        int16 *IntraDC_delta);
+
+    void    doDCACPrediction(VideoDecData *video, int comp, int16 *q_block,
+                             int *direction);
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    void    doDCACPrediction_I(VideoDecData *video, int comp, int16 *q_block);
+#endif
+    /*--------------------------------------------------------------------------*/
+    /* defined in block_idct.c */
+    void MBlockIDCTAdd(VideoDecData *video, int nz_coefs[]);
+
+    void BlockIDCT(uint8 *dst, uint8 *pred, int16 *blk, int width, int nzcoefs,
+                   uint8 *bitmapcol, uint8 bitmaprow);
+
+    void MBlockIDCT(VideoDecData *video);
+    void BlockIDCT_intra(MacroBlock *mblock, PIXEL *c_comp, int comp, int width_offset);
+    /*--------------------------------------------------------------------------*/
+    /* defined in combined_decode.c */
+    PV_STATUS DecodeFrameCombinedMode(VideoDecData *video);
+    PV_STATUS GetMBheader(VideoDecData *video, int16 *QP);
+    PV_STATUS GetMBData(VideoDecData *video);
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in datapart_decode.c */
+    PV_STATUS DecodeFrameDataPartMode(VideoDecData *video);
+    PV_STATUS GetMBheaderDataPart_DQUANT_DC(VideoDecData *video, int16 *QP);
+    PV_STATUS GetMBheaderDataPart_P(VideoDecData *video);
+    PV_STATUS DecodeDataPart_I_VideoPacket(VideoDecData *video, int slice_counter);
+    PV_STATUS DecodeDataPart_P_VideoPacket(VideoDecData *video, int slice_counter);
+    PV_STATUS GetMBData_DataPart(VideoDecData *video);
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in packet_util.c */
+    PV_STATUS PV_ReadVideoPacketHeader(VideoDecData *video, int *next_MB);
+    PV_STATUS RecoverPacketError(BitstreamDecVideo *stream, int marker_length, int32 *nextVop);
+    PV_STATUS RecoverGOBError(BitstreamDecVideo *stream, int marker_length, int32 *vopPos);
+    PV_STATUS PV_GobHeader(VideoDecData *video);
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    PV_STATUS PV_H263SliceHeader(VideoDecData *videoInt, int *next_MB);
+#endif
+    /*--------------------------------------------------------------------------*/
+    /* defined in motion_comp.c */
+    void MBMotionComp(VideoDecData *video, int CBP);
+    void  SkippedMBMotionComp(VideoDecData *video);
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in chrominance_pred.c */
+    void chrominance_pred(
+        int xpred,          /* i */
+        int ypred,          /* i */
+        uint8 *cu_prev,     /* i */
+        uint8 *cv_prev,     /* i */
+        uint8 *pred_block,  /* i */
+        int width_uv,       /* i */
+        int height_uv,      /* i */
+        int round1
+    );
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in luminance_pred_mode_inter.c */
+    void luminance_pred_mode_inter(
+        int xpred,          /* i */
+        int ypred,          /* i */
+        uint8 *c_prev,      /* i */
+        uint8 *pred_block,  /* i */
+        int width,          /* i */
+        int height,         /* i */
+        int round1
+    );
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in luminance_pred_mode_inter4v.c */
+    void luminance_pred_mode_inter4v(
+        int xpos,           /* i */
+        int ypos,           /* i */
+        MOT *px,            /* i */
+        MOT *py,            /* i */
+        uint8 *c_prev,      /* i */
+        uint8 *pred_block,  /* i */
+        int width,          /* i */
+        int height,         /* i */
+        int round1,         /* i */
+        int mvwidth,            /* i */
+        int *xsum_ptr,          /* i/o */
+        int *ysum_ptr           /* i/o */
+    );
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in pp_semaphore_chroma_inter.c */
+#ifdef PV_POSTPROC_ON
+    void pp_semaphore_chroma_inter(
+        int xpred,      /* i */
+        int ypred,      /* i */
+        uint8   *pp_dec_u,  /* i/o */
+        uint8   *pstprcTypPrv,  /* i */
+        int dx,     /* i */
+        int dy,     /* i */
+        int mvwidth,    /* i */
+        int height,     /* i */
+        int32   size,       /* i */
+        int mv_loc,     /* i */
+        uint8   msk_deblock /* i */
+    );
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in pp_semaphore_luma.c */
+    uint8 pp_semaphore_luma(
+        int xpred,      /* i */
+        int ypred,      /* i */
+        uint8   *pp_dec_y,  /* i/o */
+        uint8   *pstprcTypPrv,  /* i */
+        int *ll,        /* i */
+        int *mv_loc,    /* i/o */
+        int dx,     /* i */
+        int dy,     /* i */
+        int mvwidth,    /* i */
+        int width,      /* i */
+        int height      /* i */
+    );
+#endif
+    /*--------------------------------------------------------------------------*/
+    /* defined in get_pred_adv_mb_add.c */
+    int GetPredAdvancedMB(
+        int xpos,
+        int ypos,
+        uint8 *c_prev,
+        uint8 *pred_block,
+        int width,
+        int rnd1
+    );
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in get_pred_adv_b_add.c */
+    int GetPredAdvancedBy0x0(
+        uint8 *c_prev,      /* i */
+        uint8 *pred_block,      /* i */
+        int width,      /* i */
+        int pred_width_rnd /* i */
+    );
+
+    int GetPredAdvancedBy0x1(
+        uint8 *c_prev,      /* i */
+        uint8 *pred_block,      /* i */
+        int width,      /* i */
+        int pred_width_rnd /* i */
+    );
+
+    int GetPredAdvancedBy1x0(
+        uint8 *c_prev,      /* i */
+        uint8 *pred_block,      /* i */
+        int width,      /* i */
+        int pred_width_rnd /* i */
+    );
+
+    int GetPredAdvancedBy1x1(
+        uint8 *c_prev,      /* i */
+        uint8 *pred_block,      /* i */
+        int width,      /* i */
+        int pred_width_rnd /* i */
+    );
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in get_pred_outside.c */
+    int GetPredOutside(
+        int xpos,
+        int ypos,
+        uint8 *c_prev,
+        uint8 *pred_block,
+        int width,
+        int height,
+        int rnd1,
+        int pred_width
+    );
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in find_pmvsErrRes.c */
+    void mv_prediction(VideoDecData *video, int block, MOT *mvx, MOT *mvy);
+
+    /*--------------------------------------------------------------------------*/
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in mb_utils.c */
+    void Copy_MB_into_Vop(uint8 *comp, int yChan[][NCOEFF_BLOCK], int width);
+    void Copy_B_into_Vop(uint8 *comp, int cChan[], int width);
+    void PutSKIPPED_MB(uint8 *comp, uint8 *c_prev, int width);
+    void PutSKIPPED_B(uint8 *comp, uint8 *c_prev, int width);
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in vop.c */
+    PV_STATUS DecodeGOVHeader(BitstreamDecVideo *stream, uint32 *time_base);
+    PV_STATUS DecodeVOLHeader(VideoDecData *video, int layer);
+    PV_STATUS DecodeVOPHeader(VideoDecData *video, Vop *currVop, Bool use_ext_tiemstamp);
+    PV_STATUS DecodeShortHeader(VideoDecData *video, Vop *currVop);
+    PV_STATUS PV_DecodeVop(VideoDecData *video);
+    uint32 CalcVopDisplayTime(Vol *currVol, Vop *currVop, int shortVideoHeader);
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in post_proc.c */
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    void H263_Deblock(uint8 *rec,   int width, int height, int16 *QP_store, uint8 *mode, int chr, int T);
+#endif
+    int  PostProcSemaphore(int16 *q_block);
+    void PostFilter(VideoDecData *video, int filer_type, uint8 *output);
+    void FindMaxMin(uint8 *ptr, int *min, int *max, int incr);
+    void DeringAdaptiveSmoothMMX(uint8 *img, int incr, int thres, int mxdf);
+    void AdaptiveSmooth_NoMMX(uint8 *Rec_Y, int v0, int h0, int v_blk, int h_blk,
+                              int thr, int width, int max_diff);
+    void Deringing_Luma(uint8 *Rec_Y, int width, int height, int16 *QP_store,
+                        int Combined, uint8 *pp_mod);
+    void Deringing_Chroma(uint8 *Rec_C, int width, int height, int16 *QP_store,
+                          int Combined, uint8 *pp_mod);
+    void CombinedHorzVertFilter(uint8 *rec, int width, int height, int16 *QP_store,
+                                int chr, uint8 *pp_mod);
+    void CombinedHorzVertFilter_NoSoftDeblocking(uint8 *rec, int width, int height, int16 *QP_store,
+            int chr, uint8 *pp_mod);
+    void CombinedHorzVertRingFilter(uint8 *rec, int width, int height,
+                                    int16 *QP_store, int chr, uint8 *pp_mod);
+
+    /*--------------------------------------------------------------------------*/
+    /* defined in conceal.c */
+    void ConcealTexture_I(VideoDecData *video, int32 startFirstPartition, int mb_start, int mb_stop,
+                          int slice_counter);
+    void ConcealTexture_P(VideoDecData *video, int mb_start, int mb_stop,
+                          int slice_counter);
+    void ConcealPacket(VideoDecData *video, int mb_start, int mb_stop,
+                       int slice_counter);
+    void CopyVopMB(Vop *curr, uint8 *prev, int mbnum, int width, int height);
+
+    /* define in vlc_dequant.c ,  09/18/2000*/
+#ifdef PV_SUPPORT_MAIN_PROFILE
+    int VlcDequantMpegIntraBlock(void *video, int comp, int switched,
+                                 uint8 *bitmapcol, uint8 *bitmaprow);
+    int VlcDequantMpegInterBlock(void *video, int comp,
+                                 uint8 *bitmapcol, uint8 *bitmaprow);
+#endif
+    int VlcDequantH263IntraBlock(VideoDecData *video, int comp, int switched,
+                                 uint8 *bitmapcol, uint8 *bitmaprow);
+    int VlcDequantH263IntraBlock_SH(VideoDecData *video, int comp,
+                                    uint8 *bitmapcol, uint8 *bitmaprow);
+    int VlcDequantH263InterBlock(VideoDecData *video, int comp,
+                                 uint8 *bitmapcol, uint8 *bitmaprow);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+/*----------------------------------------------------------------------------
+; END
+----------------------------------------------------------------------------*/
+#endif
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/mp4def.h b/media/libstagefright/codecs/m4v_h263/dec/src/mp4def.h
new file mode 100644
index 0000000..3388d89
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/mp4def.h
@@ -0,0 +1,167 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#ifndef _PVDECDEF_H_
+#define _PVDECDEF_H_
+
+#include "mp4dec_api.h"
+
+typedef enum
+{
+    PV_SUCCESS,
+    PV_FAIL,
+    PV_MB_STUFFING,         /* hit Macroblock_Stuffing */
+    PV_END_OF_VOP,          /* hit End_of_Video_Object_Plane */
+    PV_END_OF_MB            /* hit End_of_Macroblock */
+#ifdef PV_TOLERATE_VOL_ERRORS
+    , PV_BAD_VOLHEADER
+#endif
+} PV_STATUS;
+
+typedef uint8 PIXEL;
+typedef int16 MOT;   /*  : "int" type runs faster on RISC machine */
+
+#define TRUE    1
+#define FALSE   0
+
+#define PV_ABS(x)       (((x)<0)? -(x) : (x))
+#define PV_SIGN(x)      (((x)<0)? -1 : 1)
+#define PV_SIGN0(a)     (((a)<0)? -1 : (((a)>0) ? 1 : 0))
+#define PV_MAX(a,b)     ((a)>(b)? (a):(b))
+#define PV_MIN(a,b)     ((a)<(b)? (a):(b))
+#define PV_MEDIAN(A,B,C) ((A) > (B) ? ((A) < (C) ? (A) : (B) > (C) ? (B) : (C)): (B) < (C) ? (B) : (C) > (A) ? (C) : (A))
+/* You don't want to use ((x>UB)?UB:(x<LB)?LB:x) for the clipping */
+/*    because it will use one extra comparison if the compiler is */
+/*    not well-optimized.    04/19/2000.                        */
+#define CLIP_THE_RANGE(x,LB,UB) if (x<LB) x = LB; else if (x>UB) x = UB
+
+#define MODE_INTRA      0x08 //01000
+#define MODE_INTRA_Q    0x09 //01001
+#define MODE_SKIPPED    0x10 //10000
+#define MODE_INTER4V    0x14 //10100
+#define MODE_INTER      0x16 //10110
+#define MODE_INTER_Q    0x17 //10111
+#define MODE_INTER4V_Q  0x15 //10101
+#define INTER_1VMASK    0x2
+#define Q_MASK          0x1
+#define INTRA_MASK      0x8
+#define INTER_MASK      0x4
+
+
+#define I_VOP       0
+#define P_VOP       1
+#define B_VOP       2
+
+#define LUMINANCE_DC_TYPE   1
+#define CHROMINANCE_DC_TYPE 2
+
+#define START_CODE_LENGTH       32
+
+/* 11/30/98 */
+#define NoMarkerFound -1
+#define FoundRM     1   /* Resync Marker */
+#define FoundVSC    2   /* VOP_START_CODE. */
+#define FoundGSC    3   /* GROUP_START_CODE */
+#define FoundEOB    4   /* EOB_CODE */
+
+/* PacketVideo "absolution timestamp" object.   06/13/2000 */
+#define PVTS_START_CODE         0x01C4
+#define PVTS_START_CODE_LENGTH  32
+
+/* session layer and vop layer start codes */
+
+#define VISUAL_OBJECT_SEQUENCE_START_CODE   0x01B0
+#define VISUAL_OBJECT_SEQUENCE_END_CODE     0x01B1
+
+#define VISUAL_OBJECT_START_CODE   0x01B5
+#define VO_START_CODE           0x8
+#define VO_HEADER_LENGTH        32      /* lengtho of VO header: VO_START_CODE +  VO_ID */
+
+#define SOL_START_CODE          0x01BE
+#define SOL_START_CODE_LENGTH   32
+
+#define VOL_START_CODE 0x12
+#define VOL_START_CODE_LENGTH 28
+
+#define VOP_START_CODE 0x1B6
+#define VOP_START_CODE_LENGTH   32
+
+#define GROUP_START_CODE    0x01B3
+#define GROUP_START_CODE_LENGTH  32
+
+#define VOP_ID_CODE_LENGTH      5
+#define VOP_TEMP_REF_CODE_LENGTH    16
+
+#define USER_DATA_START_CODE        0x01B2
+#define USER_DATA_START_CODE_LENGTH 32
+
+#define START_CODE_PREFIX       0x01
+#define START_CODE_PREFIX_LENGTH    24
+
+#define SHORT_VIDEO_START_MARKER         0x20
+#define SHORT_VIDEO_START_MARKER_LENGTH  22
+#define SHORT_VIDEO_END_MARKER            0x3F
+#define GOB_RESYNC_MARKER         0x01
+#define GOB_RESYNC_MARKER_LENGTH  17
+
+/* motion and resync markers used in error resilient mode  */
+
+#define DC_MARKER                      438273
+#define DC_MARKER_LENGTH                19
+
+#define MOTION_MARKER_COMB             126977
+#define MOTION_MARKER_COMB_LENGTH       17
+
+#define MOTION_MARKER_SEP              81921
+#define MOTION_MARKER_SEP_LENGTH        17
+
+#define RESYNC_MARKER           1
+#define RESYNC_MARKER_LENGTH    17
+
+#define SPRITE_NOT_USED     0
+#define STATIC_SPRITE       1
+#define ONLINE_SPRITE       2
+#define GMC_SPRITE      3
+
+/* macroblock and block size */
+#define MB_SIZE 16
+#define NCOEFF_MB (MB_SIZE*MB_SIZE)
+#define B_SIZE 8
+#define NCOEFF_BLOCK (B_SIZE*B_SIZE)
+#define NCOEFF_Y NCOEFF_MB
+#define NCOEFF_U NCOEFF_BLOCK
+#define NCOEFF_V NCOEFF_BLOCK
+#define BLK_PER_MB      4   /* Number of blocks per MB */
+
+/* VLC decoding related definitions */
+#define VLC_ERROR   (-1)
+#define VLC_ESCAPE  7167
+
+
+/* macro utility */
+#define  ZERO_OUT_64BYTES(x)    { *((uint32*)x) = *(((uint32*)(x))+1) =  \
+        *(((uint32*)(x))+2) = *(((uint32*)(x))+3) =  \
+        *(((uint32*)(x))+4) = *(((uint32*)(x))+5) =  \
+        *(((uint32*)(x))+6) = *(((uint32*)(x))+7) =  \
+        *(((uint32*)(x))+8) = *(((uint32*)(x))+9) =  \
+        *(((uint32*)(x))+10) = *(((uint32*)(x))+11) =  \
+        *(((uint32*)(x))+12) = *(((uint32*)(x))+13) =  \
+        *(((uint32*)(x))+14) = *(((uint32*)(x))+15) =  0; }
+
+
+
+#endif /* _PVDECDEF_H_ */
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/mp4lib_int.h b/media/libstagefright/codecs/m4v_h263/dec/src/mp4lib_int.h
new file mode 100644
index 0000000..d6754a7
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/mp4lib_int.h
@@ -0,0 +1,296 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#ifndef _MP4LIB_INT_H_
+#define _MP4LIB_INT_H_
+
+#include "mp4def.h"
+#include "mp4dec_api.h" // extra structure
+
+#undef ENABLE_LOG
+#define BITRATE_AVERAGE_WINDOW 4
+#define FRAMERATE_SCALE ((BITRATE_AVERAGE_WINDOW-1)*10000L)
+#define FAST_IDCT            /* , for fast Variable complexity IDCT */
+//#define PV_DEC_EXTERNAL_IDCT  /*  for separate IDCT (i.e. no direct access to output frame) */
+#define PV_ANNEX_IJKT_SUPPORT
+#define mid_gray 1024
+
+typedef struct tagBitstream
+{
+    /* function that reteive data from outside the library.   04/11/2000 */
+    /*    In frame-based decoding mode, this shall be NULL.   08/29/2000 */
+    uint32 curr_word;
+    uint32 next_word;
+    uint8 *bitstreamBuffer; /* pointer to buffer memory */
+    int32  read_point;          /* starting point in the buffer to be read to cache */
+    int  incnt;             /* bit left in cached */
+    int  incnt_next;
+    uint32 bitcnt;          /* total bit read so-far (from inbfr)*/
+    int32  data_end_pos;        /*should be added ,  06/07/2000 */
+    int searched_frame_boundary;
+} BitstreamDecVideo, *LPBitstreamDecVideo;
+
+/* complexity estimation parameters */
+typedef struct tagComplexity_Est
+{
+    uint8   text_1;             /* texture_complexity_estimation_set_1  */
+    uint8   text_2;             /* texture_complexity_estimation_set_2  */
+    uint8   mc;                 /* motion_compensation_complexity       */
+} Complexity_Est;
+
+
+typedef struct tagVop
+{
+    PIXEL   *yChan;             /* The Y component */
+    PIXEL   *uChan;             /* The U component */
+    PIXEL   *vChan;             /* The V component */
+
+    uint32  timeStamp;          /* Vop TimeStamp in msec */
+
+    /* Actual syntax elements for VOP (standard) */
+    int     predictionType;     /* VOP prediction type */
+    uint    timeInc;            /* VOP time increment (relative to last mtb) */
+    int     vopCoded;
+    int     roundingType;
+    int     intraDCVlcThr;
+    int16       quantizer;          /* VOP quantizer */
+    int     fcodeForward;       /* VOP dynamic range of motion vectors */
+    int     fcodeBackward;      /* VOP dynamic range of motion vectors */
+    int     refSelectCode;      /* enhancement layer reference select code */
+
+    /* H.263 parameters */
+    int     gobNumber;
+    int     gobFrameID;
+    int     temporalRef;        /* temporal reference, roll over at 256 */
+    int     ETR;
+} Vop;
+
+typedef struct tagVol
+{
+    int     volID;                  /* VOL identifier (for tracking) */
+    uint    timeIncrementResolution;/* VOL time increment */
+    int     nbitsTimeIncRes;        /* number of bits for time increment  */
+    uint        timeInc_offset;         /* timeInc offset for multiple VOP in a packet  */
+    uint32  moduloTimeBase;         /* internal decoder clock */
+    int     fixedVopRate;
+    BitstreamDecVideo   *bitstream; /* library bitstream buffer (input buffer) */
+
+    int     complexity_estDisable;  /* VOL disable complexity estimation */
+    int     complexity_estMethod;   /* VOL complexity estimation method */
+    Complexity_Est complexity;      /* complexity estimation flags      */
+
+    /* Error Resilience Flags */
+    int     errorResDisable;        /* VOL disable error resilence mode */
+    /*            (Use Resynch markers) */
+    int     useReverseVLC;          /* VOL reversible VLCs */
+    int     dataPartitioning;       /* VOL data partitioning */
+
+    /* Bit depth  */
+    uint    bitsPerPixel;
+//  int     mid_gray;               /* 2^(bits_per_pixel+2) */
+
+    /* Quantization related parameters */
+    int     quantPrecision;         /* Quantizer precision */
+    uint    quantType;              /* MPEG-4 or H.263 Quantization Type */
+    /* Added loaded quant mat,  05/22/2000 */
+    int     loadIntraQuantMat;      /* Load intra quantization matrix */
+    int     loadNonIntraQuantMat;   /* Load nonintra quantization matrix */
+    int     iqmat[64];              /* Intra quant.matrix */
+    int     niqmat[64];             /* Non-intra quant.matrix */
+
+    /* Parameters used for scalability */
+    int     scalability;            /* VOL scalability (flag) */
+    int     scalType;               /* temporal = 0, spatial = 1, both = 2 */
+
+    int     refVolID;               /* VOL id of reference VOL */
+    int     refSampDir;             /* VOL resol. of ref. VOL */
+    int     horSamp_n;              /* VOL hor. resampling of ref. VOL given by */
+    int     horSamp_m;              /*     sampfac = hor_samp_n/hor_samp_m      */
+    int     verSamp_n;              /* VOL ver. resampling of ref. VOL given by */
+    int     verSamp_m;              /*     sampfac = ver_samp_n/ver_samp_m      */
+    int     enhancementType;        /* VOL type of enhancement layer */
+    /* profile and level */
+    int32   profile_level_id;       /* 8-bit profile and level */ //  6/17/04
+
+} Vol;
+
+
+typedef int16 typeMBStore[6][NCOEFF_BLOCK];
+
+typedef struct tagMacroBlock
+{
+    typeMBStore         block;              /* blocks */         /*  ACDC */
+    uint8   pred_block[384];        /* prediction block,  Aug 3,2005 */
+    uint8   bitmapcol[6][8];
+    uint8   bitmaprow[6];
+    int     no_coeff[6];
+    int     DCScalarLum;                        /* Luminance DC Scalar */
+    int     DCScalarChr;                        /* Chrominance DC Scalar */
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    int direction;
+#endif
+} MacroBlock;
+
+typedef struct tagHeaderInfoDecVideo
+{
+    uint8       *Mode;              /* Modes INTRA/INTER/etc. */
+    uint8       *CBP;               /* MCBPC/CBPY stuff */
+} HeaderInfoDecVideo;
+
+
+/************************************************************/
+/*                  VLC structures                          */
+/************************************************************/
+typedef struct tagTcoef
+{
+    uint last;
+    uint run;
+    int level;
+    uint sign;
+} Tcoef, *LPTcoef;
+
+
+
+typedef struct tagVLCtab
+{
+    int32 val;
+    int32 len;
+} VLCtab, *LPVLCtab;
+
+typedef struct tagVLCshorttab
+{
+    int16 val;
+    int16 len;
+} VLCshorttab, *LPVLCshorttab ; /* for space saving, Antoine Nguyen*/
+
+typedef struct tagVLCtab2
+{
+    uint8 run;
+    uint8 level;
+    uint8 last;
+    uint8 len;
+} VLCtab2, *LPVLCtab2;  /* 10/24/2000 */
+
+/* This type is designed for fast access of DC/AC */
+/*    prediction data.  If the compiler is smart  */
+/*    enough, it will use shifting for indexing.  */
+/*     04/14/2000.                              */
+
+typedef int16 typeDCStore[6];   /*  ACDC */
+typedef int16 typeDCACStore[4][8];
+
+
+
+/* Global structure that can be passed around */
+typedef struct tagVideoDecData
+{
+    BitstreamDecVideo   *bitstream; /* library bitstream buffer (input buffer) */
+    /* Data For Layers (Scalability) */
+    Vol             **vol;                  /* Data stored for each VOL */
+
+    /* Data used for reconstructing frames */
+    Vop             *currVop;               /* Current VOP (frame)  */
+    Vop             *prevVop;               /* Previous VOP (frame) */
+    /* Data used to facilitate multiple layer decoding.   05/04/2000 */
+    Vop             *prevEnhcVop;           /* New change to rid of memcpy().  04/24/2001 */
+    Vop             **vopHeader;            /* one for each layer.   08/29/2000 */
+
+    /* I/O structures */
+    MacroBlock      *mblock;                    /* Macroblock data structure */
+    uint8           *acPredFlag;                /*  */
+
+    /* scratch memory used in data partitioned mode */
+    typeDCStore     *predDC;        /*  The DC coeffs for each MB */
+    typeDCACStore   *predDCAC_row;
+    typeDCACStore   *predDCAC_col;
+
+    int             usePrevQP;              /* running QP decision switch */
+    uint8           *sliceNo;               /* Slice indicator for each MB  */
+    /*     changed this to a 1D   */
+    /*    array for optimization    */
+    MOT             *motX;                  /* Motion vector in X direction */
+    MOT             *motY;                  /* Motion vector in Y direction */
+    HeaderInfoDecVideo  headerInfo;         /* MB Header information */
+    int16           *QPMB;                  /* Quantizer value for each MB */
+
+    uint8           *pstprcTypCur;          /* Postprocessing type for current frame */
+    uint8           *pstprcTypPrv;          /* Postprocessing type for previous frame */
+    /* scratch memory used in all modes */
+    int             mbnum;                      /*  Macroblock number */
+    uint            mbnum_row;
+    int             mbnum_col;
+    /* I added these variables since they are used a lot.   04/13/2000 */
+    int     nMBPerRow, nMBPerCol;   /* number of MBs in each row & column    */
+    int     nTotalMB;
+    /* for short video header */
+    int     nMBinGOB;               /* number of MBs in GOB,  05/22/00 */
+    int     nGOBinVop;              /* number of GOB in Vop   05/22/00 */
+    /* VOL Dimensions */
+    int     width;                  /* Width */
+    int     height;                 /* Height */
+    int     displayWidth;               /* Handle image whose size is not a multiple of 16. */
+    int     displayHeight;              /*   This is the actual size.   08/09/2000        */
+    int32   size;
+    /* Miscellaneous data points to be passed */
+    int             frame_idx;              /* Current frame ID */
+    int             frameRate;              /* Output frame Rate (over 10 seconds) */
+    int32           duration;
+    uint32          currTimestamp;
+    int             currLayer;              /* Current frame layer  */
+    int     shortVideoHeader;       /* shortVideoHeader mode */
+    int     intra_acdcPredDisable;  /* VOL disable INTRA DC prediction */
+    int             numberOfLayers;         /* Number of Layers */
+    /* Frame to be used for concealment     07/07/2001 */
+    uint8           *concealFrame;
+    int             vop_coding_type;
+    /* framerate and bitrate statistics counters.   08/23/2000 */
+    int32           nBitsPerVop[BITRATE_AVERAGE_WINDOW];
+    uint32          prevTimestamp[BITRATE_AVERAGE_WINDOW];
+    int     nBitsForMBID;           /* how many bits required for MB number? */
+    /* total data memory used by the docder library.   08/23/2000 */
+    int32           memoryUsage;
+
+    /* flag to turn on/off error concealment or soft decoding */
+    int errorConcealment;
+
+    /* Application controls */
+    VideoDecControls    *videoDecControls;
+    int                 postFilterType;     /* Postfilter mode  04/25/00 */
+
+
+
+    PV_STATUS(*vlcDecCoeffIntra)(BitstreamDecVideo *stream, Tcoef *pTcoef/*, int intra_luma*/);
+    PV_STATUS(*vlcDecCoeffInter)(BitstreamDecVideo *stream, Tcoef *pTcoef);
+    int                 initialized;
+
+    /* Annex IJKT */
+    int     deblocking;
+    int     slice_structure;
+    int     modified_quant;
+    int     advanced_INTRA;
+    int16 QP_CHR;  /* ANNEX_T */
+} VideoDecData;
+
+/* for fast VLC+Dequant  10/12/2000*/
+typedef int (*VlcDequantBlockFuncP)(void *video, int comp, int switched,
+                                    uint8 *bitmaprow, uint8 *bitmapcol);
+
+//////////////////////////////////////////////////////////////
+//                  Decoder structures                      //
+//////////////////////////////////////////////////////////////
+#endif /* _MP4LIB_INT_H_ */
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/packet_util.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/packet_util.cpp
new file mode 100644
index 0000000..48414d7
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/packet_util.cpp
@@ -0,0 +1,252 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "mp4dec_lib.h"
+#include "vlc_decode.h"
+#include "bitstream.h"
+
+
+/***********************************************************CommentBegin******
+*       04/13/2000 : initial modification to the new PV-Decoder
+*                            Lib format.
+*       04/16/2001 : Removed PV_END_OF_BUFFER case, error resilience
+***********************************************************CommentEnd********/
+PV_STATUS PV_ReadVideoPacketHeader(VideoDecData *video, int *next_MB)
+{
+    PV_STATUS status;
+    Vol *currVol = video->vol[video->currLayer];
+    Vop *currVop = video->currVop;
+    BitstreamDecVideo *stream = video->bitstream;
+    int fcode_forward;
+    int resync_marker_length;
+    int nbits = video->nBitsForMBID;
+    uint32 tmpvar32;
+    uint tmpvar16;
+    int16 quantizer;
+    int nTotalMB = video->nTotalMB;
+
+    fcode_forward = currVop->fcodeForward;
+    resync_marker_length = 17;
+
+    if (currVop->predictionType != I_VOP) resync_marker_length = 16 + fcode_forward;
+
+    status = PV_BitstreamShowBitsByteAlign(stream, resync_marker_length, &tmpvar32);
+    /*  if (status != PV_SUCCESS && status != PV_END_OF_BUFFER) return status; */
+    if (tmpvar32 == RESYNC_MARKER)
+    {
+//      DecNextStartCode(stream);
+        PV_BitstreamByteAlign(stream);
+        BitstreamReadBits32(stream, resync_marker_length);
+
+        *next_MB = (int) BitstreamReadBits16(stream, nbits);
+//      if (*next_MB <= video->mbnum)   /*  needs more investigation */
+//          *next_MB = video->mbnum+1;
+
+        if (*next_MB >= nTotalMB)  /* fix  04/05/01 */
+        {
+            *next_MB = video->mbnum + 1;
+            if (*next_MB >= nTotalMB)    /* this check is needed  */
+                *next_MB = nTotalMB - 1;
+        }
+        quantizer = (int16) BitstreamReadBits16(stream, currVol->quantPrecision);
+        if (quantizer == 0) return PV_FAIL;        /*  04/03/01 */
+
+        currVop->quantizer = quantizer;
+
+        /* if we have HEC, read some redundant VOP header information */
+        /* this part needs improvement  04/05/01 */
+        if (BitstreamRead1Bits(stream))
+        {
+            int time_base = -1;
+
+            /* modulo_time_base (? bits) */
+            do
+            {
+                time_base++;
+                tmpvar16 = BitstreamRead1Bits(stream);
+            }
+            while (tmpvar16 == 1);
+
+            /* marker bit */
+            BitstreamRead1Bits(stream);
+
+            /* vop_time_increment (1-15 bits) */
+            BitstreamReadBits16(stream, currVol->nbitsTimeIncRes);
+
+            /* marker bit */
+            BitstreamRead1Bits(stream);
+
+            /* vop_prediction_type (2 bits) */
+            BitstreamReadBits16(stream, 2);
+
+            /* Added intra_dc_vlc_thr reading  */
+            BitstreamReadBits16(stream, 3);
+
+            /* fcodes */
+            if (currVop->predictionType != I_VOP)
+            {
+                fcode_forward = (int) BitstreamReadBits16(stream, 3);
+
+                if (currVop->predictionType == B_VOP)
+                {
+                    BitstreamReadBits16(stream, 3);
+                }
+            }
+
+        }
+    }
+    else
+    {
+        PV_BitstreamByteAlign(stream);  /*  */
+        status = BitstreamCheckEndBuffer(stream);   /* return end_of_VOP  03/30/01 */
+        if (status != PV_SUCCESS)
+        {
+            return status;
+        }
+        status = BitstreamShowBits32HC(stream, &tmpvar32);   /*  07/07/01 */
+        /* -16 = 0xFFFFFFF0*/
+        if ((tmpvar32 & 0xFFFFFFF0) == VISUAL_OBJECT_SEQUENCE_START_CODE) /* start code mask 00 00 01 */
+
+        {
+            /* we don't have to check for legl stuffing here.   05/08/2000 */
+            return PV_END_OF_VOP;
+        }
+        else
+        {
+            return PV_FAIL;
+        }
+    }
+
+    return PV_SUCCESS;
+}
+
+
+
+/***********************************************************CommentBegin******
+*       3/10/00  : initial modification to the
+*                new PV-Decoder Lib format.
+*       04/17/01 : remove PV_END_OF_BUFFER, error checking
+***********************************************************CommentEnd********/
+PV_STATUS PV_GobHeader(VideoDecData *video)
+{
+    uint32 tmpvar;
+    Vop *currVop = video->currVop;
+    BitstreamDecVideo *stream = video->bitstream;
+    int quantPrecision = 5;
+    int16 quantizer;
+
+    BitstreamShowBits32(stream, GOB_RESYNC_MARKER_LENGTH, &tmpvar);
+
+    if (tmpvar != GOB_RESYNC_MARKER)
+    {
+        PV_BitstreamShowBitsByteAlign(stream, GOB_RESYNC_MARKER_LENGTH, &tmpvar);
+
+        if (tmpvar != GOB_RESYNC_MARKER)
+        {
+            return PV_FAIL;
+        }
+        else
+            PV_BitstreamByteAlign(stream);  /* if bytealigned GOBHEADER search is performed */
+        /* then no more noforcestuffing  */
+    }
+
+    /* we've got a GOB header info here */
+    BitstreamShowBits32(stream, GOB_RESYNC_MARKER_LENGTH + 5, &tmpvar);
+    tmpvar &= 0x1F;
+
+    if (tmpvar == 0)
+    {
+        return PV_END_OF_VOP;
+    }
+
+    if (tmpvar == 31)
+    {
+        PV_BitstreamFlushBits(stream, GOB_RESYNC_MARKER_LENGTH + 5);
+        BitstreamByteAlignNoForceStuffing(stream);
+        return PV_END_OF_VOP;
+    }
+
+    PV_BitstreamFlushBits(stream, GOB_RESYNC_MARKER_LENGTH + 5);
+    currVop->gobNumber = (int) tmpvar;
+    if (currVop->gobNumber >= video->nGOBinVop) return PV_FAIL;
+    currVop->gobFrameID = (int) BitstreamReadBits16(stream, 2);
+    quantizer = (int16) BitstreamReadBits16(stream, quantPrecision);
+    if (quantizer == 0)   return PV_FAIL;         /*  04/03/01 */
+
+    currVop->quantizer = quantizer;
+    return PV_SUCCESS;
+}
+#ifdef PV_ANNEX_IJKT_SUPPORT
+PV_STATUS PV_H263SliceHeader(VideoDecData *video, int *next_MB)
+{
+    PV_STATUS status;
+    uint32 tmpvar;
+    Vop *currVop = video->currVop;
+    BitstreamDecVideo *stream = video->bitstream;
+    int nTotalMB = video->nTotalMB;
+    int16 quantizer;
+
+    PV_BitstreamShowBitsByteAlignNoForceStuffing(stream, 17, &tmpvar);
+    if (tmpvar == RESYNC_MARKER)
+    {
+        BitstreamByteAlignNoForceStuffing(stream);
+        PV_BitstreamFlushBits(stream, 17);
+        if (!BitstreamRead1Bits(stream))
+        {
+            return PV_FAIL;
+        }
+        *next_MB = BitstreamReadBits16(stream, video->nBitsForMBID);
+        if (*next_MB >= nTotalMB)  /* fix  04/05/01 */
+        {
+            *next_MB = video->mbnum + 1;
+            if (*next_MB >= nTotalMB)    /* this check is needed  */
+                *next_MB = nTotalMB - 1;
+        }
+        /* we will not parse sebp2 for large pictures 3GPP */
+        quantizer = (int16) BitstreamReadBits16(stream, 5);
+        if (quantizer == 0) return PV_FAIL;
+
+        currVop->quantizer = quantizer;
+        if (!BitstreamRead1Bits(stream))
+        {
+            return PV_FAIL;
+        }
+        currVop->gobFrameID = (int) BitstreamReadBits16(stream, 2);
+    }
+    else
+    {
+        status = BitstreamCheckEndBuffer(stream);   /* return end_of_VOP  03/30/01 */
+        if (status != PV_SUCCESS)
+        {
+            return status;
+        }
+        PV_BitstreamShowBitsByteAlign(stream, SHORT_VIDEO_START_MARKER_LENGTH, &tmpvar);
+
+        if (tmpvar == SHORT_VIDEO_START_MARKER)
+        {
+            /* we don't have to check for legal stuffing here.   05/08/2000 */
+            return PV_END_OF_VOP;
+        }
+        else
+        {
+            return PV_FAIL;
+        }
+    }
+    return PV_SUCCESS;
+}
+#endif
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/post_filter.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/post_filter.cpp
new file mode 100644
index 0000000..b36050c
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/post_filter.cpp
@@ -0,0 +1,585 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+
+#include    "mp4dec_lib.h"
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+#include    "motion_comp.h"
+#include "mbtype_mode.h"
+const static int STRENGTH_tab[] = {0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12};
+#endif
+
+#ifdef PV_POSTPROC_ON
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+void PostFilter(
+    VideoDecData *video,
+    int filter_type,
+    uint8 *output)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    uint8 *pp_mod;
+    int16 *QP_store;
+    int combined_with_deblock_filter;
+    int nTotalMB = video->nTotalMB;
+    int width, height;
+    int32 size;
+    int softDeblocking;
+    uint8 *decodedFrame = video->videoDecControls->outputFrame;
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    width = video->width;
+    height = video->height;
+    size = (int32)width * height;
+
+    oscl_memcpy(output, decodedFrame, size);
+    oscl_memcpy(output + size, decodedFrame + size, (size >> 2));
+    oscl_memcpy(output + size + (size >> 2), decodedFrame + size + (size >> 2), (size >> 2));
+
+    if (filter_type == 0)
+        return;
+
+    /* The softDecoding cutoff corresponds to ~93000 bps for QCIF 15fps clip  */
+    if (PVGetDecBitrate(video->videoDecControls) > (100*video->frameRate*(size >> 12)))  // MC_sofDeblock
+        softDeblocking = FALSE;
+    else
+        softDeblocking = TRUE;
+
+    combined_with_deblock_filter = filter_type & PV_DEBLOCK;
+    QP_store = video->QPMB;
+
+    /* Luma */
+    pp_mod = video->pstprcTypCur;
+
+    if ((filter_type & PV_DEBLOCK) && (filter_type & PV_DERING))
+    {
+        CombinedHorzVertRingFilter(output, width, height, QP_store, 0, pp_mod);
+    }
+    else
+    {
+        if (filter_type & PV_DEBLOCK)
+        {
+            if (softDeblocking)
+            {
+                CombinedHorzVertFilter(output, width, height,
+                                       QP_store, 0, pp_mod);
+            }
+            else
+            {
+                CombinedHorzVertFilter_NoSoftDeblocking(output, width, height,
+                                                        QP_store, 0, pp_mod);
+            }
+        }
+        if (filter_type & PV_DERING)
+        {
+            Deringing_Luma(output, width, height, QP_store,
+                           combined_with_deblock_filter, pp_mod);
+
+        }
+    }
+
+    /* Chroma */
+
+    pp_mod += (nTotalMB << 2);
+    output += size;
+
+    if ((filter_type & PV_DEBLOCK) && (filter_type & PV_DERING))
+    {
+        CombinedHorzVertRingFilter(output, (int)(width >> 1), (int)(height >> 1), QP_store, (int) 1, pp_mod);
+    }
+    else
+    {
+        if (filter_type & PV_DEBLOCK)
+        {
+            if (softDeblocking)
+            {
+                CombinedHorzVertFilter(output, (int)(width >> 1),
+                                       (int)(height >> 1), QP_store, (int) 1, pp_mod);
+            }
+            else
+            {
+                CombinedHorzVertFilter_NoSoftDeblocking(output, (int)(width >> 1),
+                                                        (int)(height >> 1), QP_store, (int) 1, pp_mod);
+            }
+        }
+        if (filter_type & PV_DERING)
+        {
+            Deringing_Chroma(output, (int)(width >> 1),
+                             (int)(height >> 1), QP_store,
+                             combined_with_deblock_filter, pp_mod);
+        }
+    }
+
+    pp_mod += nTotalMB;
+    output += (size >> 2);
+
+    if ((filter_type & PV_DEBLOCK) && (filter_type & PV_DERING))
+    {
+        CombinedHorzVertRingFilter(output, (int)(width >> 1), (int)(height >> 1), QP_store, (int) 1, pp_mod);
+    }
+    else
+    {
+        if (filter_type & PV_DEBLOCK)
+        {
+            if (softDeblocking)
+            {
+                CombinedHorzVertFilter(output, (int)(width >> 1),
+                                       (int)(height >> 1), QP_store, (int) 1, pp_mod);
+            }
+            else
+            {
+                CombinedHorzVertFilter_NoSoftDeblocking(output, (int)(width >> 1),
+                                                        (int)(height >> 1), QP_store, (int) 1, pp_mod);
+            }
+        }
+        if (filter_type & PV_DERING)
+        {
+            Deringing_Chroma(output, (int)(width >> 1),
+                             (int)(height >> 1), QP_store,
+                             combined_with_deblock_filter, pp_mod);
+        }
+    }
+
+    /*  swap current pp_mod to prev_frame pp_mod */
+    pp_mod = video->pstprcTypCur;
+    video->pstprcTypCur = video->pstprcTypPrv;
+    video->pstprcTypPrv = pp_mod;
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+#endif
+
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+void H263_Deblock(uint8 *rec,
+                  int width,
+                  int height,
+                  int16 *QP_store,
+                  uint8 *mode,
+                  int chr, int annex_T)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int i, j, k;
+    uint8 *rec_y;
+    int tmpvar;
+    int mbnum, strength, A_D, d1_2, d1, d2, A, B, C, D, b_size;
+    int d, offset, nMBPerRow, nMBPerCol, width2 = (width << 1);
+    /* MAKE SURE I-VOP INTRA MACROBLOCKS ARE SET TO NON-SKIPPED MODE*/
+    mbnum = 0;
+
+    if (chr)
+    {
+        nMBPerRow = width >> 3;
+        nMBPerCol = height >> 3;
+        b_size = 8;
+    }
+    else
+    {
+        nMBPerRow = width >> 4;
+        nMBPerCol = height >> 4;
+        b_size = 16;
+    }
+
+
+    /********************************* VERTICAL FILTERING ****************************/
+    /* vertical filtering of mid sections no need to check neighboring QP's etc */
+    if (!chr)
+    {
+        rec_y = rec + (width << 3);
+        for (i = 0; i < (height >> 4); i++)
+        {
+            for (j = 0; j < (width >> 4); j++)
+            {
+                if (mode[mbnum] != MODE_SKIPPED)
+                {
+                    k = 16;
+                    strength = STRENGTH_tab[QP_store[mbnum]];
+                    while (k--)
+                    {
+                        A =  *(rec_y - width2);
+                        D = *(rec_y + width);
+                        A_D = A - D;
+                        C = *rec_y;
+                        B = *(rec_y - width);
+                        d = (((C - B) << 2) + A_D);
+
+                        if (d < 0)
+                        {
+                            d1 = -(-d >> 3);
+                            if (d1 < -(strength << 1))
+                            {
+                                d1 = 0;
+                            }
+                            else if (d1 < -strength)
+                            {
+                                d1 = -d1 - (strength << 1);
+                            }
+                            d1_2 = -d1 >> 1;
+                        }
+                        else
+                        {
+                            d1 = d >> 3;
+                            if (d1 > (strength << 1))
+                            {
+                                d1 = 0;
+                            }
+                            else if (d1 > strength)
+                            {
+                                d1 = (strength << 1) - d1;
+                            }
+                            d1_2 = d1 >> 1;
+                        }
+
+                        if (A_D < 0)
+                        {
+                            d2 = -(-A_D >> 2);
+                            if (d2 < -d1_2)
+                            {
+                                d2 = -d1_2;
+                            }
+                        }
+                        else
+                        {
+                            d2 = A_D >> 2;
+                            if (d2 > d1_2)
+                            {
+                                d2 = d1_2;
+                            }
+                        }
+
+                        *(rec_y - width2) = A - d2;
+                        tmpvar = B + d1;
+                        CLIP_RESULT(tmpvar)
+                        *(rec_y - width) = tmpvar;
+                        tmpvar = C - d1;
+                        CLIP_RESULT(tmpvar)
+                        *rec_y = tmpvar;
+                        *(rec_y + width) = D + d2;
+                        rec_y++;
+                    }
+                }
+                else
+                {
+                    rec_y += b_size;
+                }
+                mbnum++;
+            }
+            rec_y += (15 * width);
+
+        }
+    }
+
+    /* VERTICAL boundary blocks */
+
+
+    rec_y = rec + width * b_size;
+
+    mbnum = nMBPerRow;
+    for (i = 0; i < nMBPerCol - 1; i++)
+    {
+        for (j = 0; j < nMBPerRow; j++)
+        {
+            if (mode[mbnum] != MODE_SKIPPED || mode[mbnum - nMBPerRow] != MODE_SKIPPED)
+            {
+                k = b_size;
+                if (mode[mbnum] != MODE_SKIPPED)
+                {
+                    strength = STRENGTH_tab[(annex_T ?  MQ_chroma_QP_table[QP_store[mbnum]] : QP_store[mbnum])];
+                }
+                else
+                {
+                    strength = STRENGTH_tab[(annex_T ?  MQ_chroma_QP_table[QP_store[mbnum - nMBPerRow]] : QP_store[mbnum - nMBPerRow])];
+                }
+
+                while (k--)
+                {
+                    A =  *(rec_y - width2);
+                    D =  *(rec_y + width);
+                    A_D = A - D;
+                    C = *rec_y;
+                    B = *(rec_y - width);
+                    d = (((C - B) << 2) + A_D);
+
+                    if (d < 0)
+                    {
+                        d1 = -(-d >> 3);
+                        if (d1 < -(strength << 1))
+                        {
+                            d1 = 0;
+                        }
+                        else if (d1 < -strength)
+                        {
+                            d1 = -d1 - (strength << 1);
+                        }
+                        d1_2 = -d1 >> 1;
+                    }
+                    else
+                    {
+                        d1 = d >> 3;
+                        if (d1 > (strength << 1))
+                        {
+                            d1 = 0;
+                        }
+                        else if (d1 > strength)
+                        {
+                            d1 = (strength << 1) - d1;
+                        }
+                        d1_2 = d1 >> 1;
+                    }
+
+                    if (A_D < 0)
+                    {
+                        d2 = -(-A_D >> 2);
+                        if (d2 < -d1_2)
+                        {
+                            d2 = -d1_2;
+                        }
+                    }
+                    else
+                    {
+                        d2 = A_D >> 2;
+                        if (d2 > d1_2)
+                        {
+                            d2 = d1_2;
+                        }
+                    }
+
+                    *(rec_y - width2) = A - d2;
+                    tmpvar = B + d1;
+                    CLIP_RESULT(tmpvar)
+                    *(rec_y - width) = tmpvar;
+                    tmpvar = C - d1;
+                    CLIP_RESULT(tmpvar)
+                    *rec_y = tmpvar;
+                    *(rec_y + width) = D + d2;
+                    rec_y++;
+                }
+            }
+            else
+            {
+                rec_y += b_size;
+            }
+            mbnum++;
+        }
+        rec_y += ((b_size - 1) * width);
+
+    }
+
+
+    /***************************HORIZONTAL FILTERING ********************************************/
+    mbnum = 0;
+    /* HORIZONTAL INNER */
+    if (!chr)
+    {
+        rec_y = rec + 8;
+        offset = width * b_size - b_size;
+
+        for (i = 0; i < nMBPerCol; i++)
+        {
+            for (j = 0; j < nMBPerRow; j++)
+            {
+                if (mode[mbnum] != MODE_SKIPPED)
+                {
+                    k = 16;
+                    strength = STRENGTH_tab[QP_store[mbnum]];
+                    while (k--)
+                    {
+                        A =  *(rec_y - 2);
+                        D =  *(rec_y + 1);
+                        A_D = A - D;
+                        C = *rec_y;
+                        B = *(rec_y - 1);
+                        d = (((C - B) << 2) + A_D);
+
+                        if (d < 0)
+                        {
+                            d1 = -(-d >> 3);
+                            if (d1 < -(strength << 1))
+                            {
+                                d1 = 0;
+                            }
+                            else if (d1 < -strength)
+                            {
+                                d1 = -d1 - (strength << 1);
+                            }
+                            d1_2 = -d1 >> 1;
+                        }
+                        else
+                        {
+                            d1 = d >> 3;
+                            if (d1 > (strength << 1))
+                            {
+                                d1 = 0;
+                            }
+                            else if (d1 > strength)
+                            {
+                                d1 = (strength << 1) - d1;
+                            }
+                            d1_2 = d1 >> 1;
+                        }
+
+                        if (A_D < 0)
+                        {
+                            d2 = -(-A_D >> 2);
+                            if (d2 < -d1_2)
+                            {
+                                d2 = -d1_2;
+                            }
+                        }
+                        else
+                        {
+                            d2 = A_D >> 2;
+                            if (d2 > d1_2)
+                            {
+                                d2 = d1_2;
+                            }
+                        }
+
+                        *(rec_y - 2) = A - d2;
+                        tmpvar = B + d1;
+                        CLIP_RESULT(tmpvar)
+                        *(rec_y - 1) = tmpvar;
+                        tmpvar = C - d1;
+                        CLIP_RESULT(tmpvar)
+                        *rec_y = tmpvar;
+                        *(rec_y + 1) = D + d2;
+                        rec_y += width;
+                    }
+                    rec_y -= offset;
+                }
+                else
+                {
+                    rec_y += b_size;
+                }
+                mbnum++;
+            }
+            rec_y += (15 * width);
+
+        }
+    }
+
+
+
+    /* HORIZONTAL EDGE */
+    rec_y = rec + b_size;
+    offset = width * b_size - b_size;
+    mbnum = 1;
+    for (i = 0; i < nMBPerCol; i++)
+    {
+        for (j = 0; j < nMBPerRow - 1; j++)
+        {
+            if (mode[mbnum] != MODE_SKIPPED || mode[mbnum-1] != MODE_SKIPPED)
+            {
+                k = b_size;
+                if (mode[mbnum] != MODE_SKIPPED)
+                {
+                    strength = STRENGTH_tab[(annex_T ?  MQ_chroma_QP_table[QP_store[mbnum]] : QP_store[mbnum])];
+                }
+                else
+                {
+                    strength = STRENGTH_tab[(annex_T ?  MQ_chroma_QP_table[QP_store[mbnum - 1]] : QP_store[mbnum - 1])];
+                }
+
+                while (k--)
+                {
+                    A =  *(rec_y - 2);
+                    D =  *(rec_y + 1);
+                    A_D = A - D;
+                    C = *rec_y;
+                    B = *(rec_y - 1);
+                    d = (((C - B) << 2) + A_D);
+
+                    if (d < 0)
+                    {
+                        d1 = -(-d >> 3);
+                        if (d1 < -(strength << 1))
+                        {
+                            d1 = 0;
+                        }
+                        else if (d1 < -strength)
+                        {
+                            d1 = -d1 - (strength << 1);
+                        }
+                        d1_2 = -d1 >> 1;
+                    }
+                    else
+                    {
+                        d1 = d >> 3;
+                        if (d1 > (strength << 1))
+                        {
+                            d1 = 0;
+                        }
+                        else if (d1 > strength)
+                        {
+                            d1 = (strength << 1) - d1;
+                        }
+                        d1_2 = d1 >> 1;
+                    }
+
+                    if (A_D < 0)
+                    {
+                        d2 = -(-A_D >> 2);
+                        if (d2 < -d1_2)
+                        {
+                            d2 = -d1_2;
+                        }
+                    }
+                    else
+                    {
+                        d2 = A_D >> 2;
+                        if (d2 > d1_2)
+                        {
+                            d2 = d1_2;
+                        }
+                    }
+
+                    *(rec_y - 2) = A - d2;
+                    tmpvar = B + d1;
+                    CLIP_RESULT(tmpvar)
+                    *(rec_y - 1) = tmpvar;
+                    tmpvar = C - d1;
+                    CLIP_RESULT(tmpvar)
+                    *rec_y = tmpvar;
+                    *(rec_y + 1) = D + d2;
+                    rec_y += width;
+                }
+                rec_y -= offset;
+            }
+            else
+            {
+                rec_y += b_size;
+            }
+            mbnum++;
+        }
+        rec_y += ((width * (b_size - 1)) + b_size);
+        mbnum++;
+    }
+
+    return;
+}
+#endif
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/post_proc.h b/media/libstagefright/codecs/m4v_h263/dec/src/post_proc.h
new file mode 100644
index 0000000..091fdaf
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/post_proc.h
@@ -0,0 +1,75 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#ifndef post_proc_H
+#define post_proc_H
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include    "mp4dec_lib.h"
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here.
+----------------------------------------------------------------------------*/
+#define UPDATE_PV_MAXPV_MIN(p,max,min) if ((p) > max) max=(p); else if ((p) < min) min = (p);
+
+#define     INDEX(x,thr)    (((x)>=thr)?1:0)
+#define     BLKSIZE     8
+#define     MBSIZE      16
+#define     DERING_THR  16
+
+/* version for fast Deblock filtering*/
+#define     KTh     4  /*threshold for soft filtering*/
+#define     KThH    4  /*threshold for hard filtering */
+
+#define     NoMMX
+
+/*----------------------------------------------------------------------------
+; EXTERNAL VARIABLES REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; SIMPLE TYPEDEF'S
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; ENUMERATED TYPEDEF'S
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; STRUCTURES TYPEDEF'S
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; GLOBAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; END
+----------------------------------------------------------------------------*/
+#endif
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/post_proc_semaphore.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/post_proc_semaphore.cpp
new file mode 100644
index 0000000..3abc6be
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/post_proc_semaphore.cpp
@@ -0,0 +1,247 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+    q_block = pointer to buffer of inverse quantized DCT coefficients of type
+              int for intra-VOP mode or buffer of residual data of type int
+              for inter-VOP mode
+
+ Local Stores/Buffers/Pointers Needed:
+    None
+
+ Global Stores/Buffers/Pointers Needed:
+    None
+
+ Outputs:
+    postmode = post processing semaphore with the vertical deblocking,
+               horizontal deblocking, and deringing bits set up accordingly
+
+ Pointers and Buffers Modified:
+    None
+
+ Local Stores Modified:
+    None
+
+ Global Stores Modified:
+    None
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+ This function sets up the postmode semaphore based on the contents of the
+ buffer pointed to by q_block. The function starts out with the assumption
+ that all entries of q_block, except for the first entry (q_block[0]), are
+ zero. This case can induce horizontal and vertical blocking artifacts,
+ therefore, both horizontal and vertical deblocking bits are enabled.
+
+ The following conditions are tested when setting up the horizontal/vertical
+ deblocking and deringing bits:
+ 1. When only the elements of the top row of the B_SIZE x B_SIZE block
+    (q_block[n], n = 0,..., B_SIZE-1) are non-zero, vertical blocking artifacts
+    may result, therefore, only the vertical deblocking bit is enabled.
+    Otherwise, the vertical deblocking bit is disabled.
+ 2. When only the elements of the far left column of the B_SIZE x B_SIZE block
+    (q_block[n*B_SIZE], n = 0, ..., B_SIZE-1) are non-zero, horizontal blocking
+    artifacts may result, therefore, only the horizontal deblocking bit is
+    enabled. Otherwise, the horizontal deblocking bit is disabled.
+ 3. If any non-zero elements exist in positions other than q_block[0],
+    q_block[1], or q_block[B_SIZE], the deringing bit is enabled. Otherwise,
+    it is disabled.
+
+ The 3 least significant bits of postmode defines vertical or horizontal
+ deblocking and deringing.
+
+ The valid values are shown below:
+ -------------------------------------------------------
+ |           Type                 | Enabled | Disabled |
+ -------------------------------------------------------
+ | Vertical Deblocking (Bit #0)   |    1    |     0    |
+ -------------------------------------------------------
+ | Horizontal Deblocking (Bit #1) |    1    |     0    |
+ -------------------------------------------------------
+ | Deringing (Bit #2)             |    1    |     0    |
+ -------------------------------------------------------
+
+*/
+
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include    "mp4dec_lib.h"
+#include    "mp4def.h"
+#include    "post_proc.h"
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+#ifdef PV_POSTPROC_ON
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+int PostProcSemaphore(
+    int16 *q_block)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    int i, j;
+
+    /* Set default value to vertical and horizontal deblocking enabled */
+    /* Initial assumption is that only q_block[0] element is non-zero, */
+    /* therefore, vertical and horizontal deblocking bits are set to 1 */
+    int postmode = 0x3;
+
+    /*----------------------------------------------------------------------------
+    ; Function body here
+    ----------------------------------------------------------------------------*/
+    /* Vertical deblocking bit is enabled when only the entire top row of   */
+    /* the B_SIZE x B_SIZE block, i.e., q_block[n], n = 0,..., B_SIZE-1,    */
+    /* are non-zero. Since initial assumption is that all elements, except  */
+    /* q_block[0], is zero, we need to check the remaining elements in the  */
+    /* top row to  determine if all or some are non-zero.                   */
+    if (q_block[1] != 0)
+    {
+        /* At this point, q_block[0] and q_block[1] are non-zero, while */
+        /* q_block[n], n = 2,..., B_SIZE-1, are zero. Therefore, we     */
+        /* need to disable vertical deblocking                          */
+        postmode &= 0xE;
+    }
+
+    for (i = 2; i < B_SIZE; i++)
+    {
+        if (q_block[i])
+        {
+            /* Check if q_block[n], n = 2,..., B_SIZE-1, are non-zero.*/
+            /* If any of them turn out to be non-zero, we need to     */
+            /* disable vertical deblocking.                           */
+            postmode &= 0xE;
+
+            /* Deringing is enabled if any nonzero elements exist in */
+            /* positions other than q_block[0], q_block[1] or        */
+            /* q_block[B_SIZE].                                      */
+            postmode |= 0x4;
+
+            break;
+        }
+    }
+
+    /* Horizontal deblocking bit is enabled when only the entire far */
+    /* left column, i.e., q_block[n*B_SIZE], n = 0, ..., B_SIZE-1,   */
+    /* are non-zero. Since initial assumption is that all elements,  */
+    /* except q_block[0], is zero, we need to check the remaining    */
+    /* elements in the far left column to determine if all or some   */
+    /* are non-zero.                                                 */
+    if (q_block[B_SIZE])
+    {
+        /* At this point, only q_block[0] and q_block[B_SIZE] are non-zero, */
+        /* while q_block[n*B_SIZE], n = 2, 3,..., B_SIZE-1, are zero.       */
+        /* Therefore, we need to disable horizontal deblocking.             */
+        postmode &= 0xD;
+    }
+
+    for (i = 16; i < NCOEFF_BLOCK; i += B_SIZE)
+    {
+        if (q_block[i])
+        {
+            /* Check if q_block[n], n = 2*B_SIZE,...,(B_SIZE-1)*B_SIZE,  */
+            /* are non-zero. If any of them turn out to be non-zero,     */
+            /* we need to disable horizontal deblocking.                 */
+            postmode &= 0xD;
+
+            /* Deringing is enabled if any nonzero elements exist in */
+            /* positions other than q_block[0], q_block[1] or        */
+            /* q_block[B_SIZE].                                      */
+            postmode |= 0x4;
+
+            break;
+        }
+    }
+
+    /* At this point, only the first row and far left column elements */
+    /* have been tested. If deringing bit is still not set at this    */
+    /* point, check the rest of q_block to determine if the elements  */
+    /* are non-zero. If all elements, besides q_block[0], q_block[1], */
+    /* or q_block[B_SIZE] are non-zero, deringing bit must be set     */
+    if ((postmode & 0x4) == 0)
+    {
+        for (i = 1; i < B_SIZE; i++)
+        {
+            for (j = 1; j < B_SIZE; j++)
+            {
+                if (q_block[(i<<3)+j])
+                {
+                    /* At this point, q_block[0] and another q_block */
+                    /* element are non-zero, therefore, we need to   */
+                    /* disable vertical and horizontal deblocking    */
+                    postmode &= 0xC;
+
+                    /* Deringing is enabled if any nonzero elements exist in */
+                    /* positions other than q_block[0], q_block[1] or        */
+                    /* q_block[B_SIZE].                                      */
+                    postmode |= 0x4;
+
+                    /* Set outer FOR loop count to B_SIZE to get out of */
+                    /* outer FOR loop                                   */
+                    i = B_SIZE;
+
+                    /* Get out of inner FOR loop */
+                    break;
+                }
+            }
+        }
+    }
+
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return (postmode);
+}
+
+#endif
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/pp_semaphore_chroma_inter.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/pp_semaphore_chroma_inter.cpp
new file mode 100644
index 0000000..7c20222
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/pp_semaphore_chroma_inter.cpp
@@ -0,0 +1,262 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+    xpred = x-axis coordinate of the block used for prediction (int)
+    ypred = y-axis coordinate of the block used for prediction (int)
+    pp_dec_u = pointer to the post processing semaphore for chrominance
+               (uint8)
+    pstprcTypPrv = pointer the previous frame's post processing type
+                   (uint8)
+    dx = horizontal component of the motion vector (int)
+    dy = vertical component of the motion vector (int)
+    mvwidth = number of blocks per row in the luminance VOP (int)
+    height = luminance VOP height in pixels (int)
+    size = total number of pixel in the current luminance VOP (int)
+    mv_loc = flag indicating location of the motion compensated
+         (x,y) position with respect to the luminance MB (int);
+         0 -> inside MB, 1 -> outside MB
+    msk_deblock = flag indicating whether to perform deblocking
+              (msk_deblock = 0) or not (msk_deblock = 1) (uint8)
+
+ Local Stores/Buffers/Pointers Needed:
+    None
+
+ Global Stores/Buffers/Pointers Needed:
+    None
+
+ Outputs:
+    None
+
+ Pointers and Buffers Modified:
+    pp_dec_u contents are the updated semaphore propagation data
+
+ Local Stores Modified:
+    None
+
+ Global Stores Modified:
+    None
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+ This functions performs post processing semaphore propagation processing
+ after chrominance prediction in interframe processing mode.
+
+*/
+
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include    "mp4dec_api.h"
+#include    "mp4def.h"
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+#ifdef PV_POSTPROC_ON
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+    /*----------------------------------------------------------------------------
+    ; FUNCTION CODE
+    ----------------------------------------------------------------------------*/
+    void pp_semaphore_chroma_inter(
+        int xpred,      /* i */
+        int ypred,      /* i */
+        uint8   *pp_dec_u,  /* i/o */
+        uint8   *pstprcTypPrv,  /* i */
+        int dx,     /* i */
+        int dy,     /* i */
+        int mvwidth,    /* i */
+        int height,     /* i */
+        int32   size,       /* i */
+        int mv_loc,     /* i */
+        uint8   msk_deblock /* i */
+    )
+    {
+        /*----------------------------------------------------------------------------
+        ; Define all local variables
+        ----------------------------------------------------------------------------*/
+        int mmvy, mmvx, nmvy, nmvx;
+        uint8 *pp_prev1, *pp_prev2, *pp_prev3, *pp_prev4;
+
+        /*----------------------------------------------------------------------------
+        ; Function body here
+        ----------------------------------------------------------------------------*/
+
+        /* 09/28/2000, modify semaphore propagation to */
+        /* accommodate smart indexing */
+        mmvx = xpred >> 4;  /* block x coor */
+        nmvx = mmvx;
+
+        mmvy = ypred >> 4;  /* block y coor */
+        nmvy = mmvy;
+
+        /* Check if MV is outside the frame */
+        if (mv_loc == 1)
+        {
+            /* Perform boundary check */
+            if (nmvx < 0)
+            {
+                nmvx = 0;
+            }
+            else if (nmvx > mvwidth - 1)
+            {
+                nmvx = mvwidth - 1;
+            }
+
+            if (nmvy < 0)
+            {
+                nmvy = 0;
+            }
+            else if (nmvy > (height >> 4) - 1)
+            {
+                nmvy = (height >> 4) - 1;
+            }
+        }
+
+        /* Calculate pointer to first chrominance b semaphores in       */
+        /* pstprcTypPrv, i.e., first chrominance b semaphore is in      */
+        /* (pstprcTypPrv + (size>>6)).                  */
+        /* Since total number of chrominance blocks per row in a VOP    */
+        /* is half of the total number of luminance blocks per row in a */
+        /* VOP, we use (mvwidth >> 1) when calculating the row offset.  */
+        pp_prev1 = pstprcTypPrv + (size >> 6) + nmvx + nmvy * (mvwidth >> 1) ;
+
+        /* Check if MV is a multiple of 16 */
+        /*  1/5/01, make sure it doesn't go out of bound */
+        if (((dy&0xF) != 0) && (mmvy + 1 < (height >> 4) - 1))
+        {   /* dy is not a multiple of 16 */
+
+            /* pp_prev3 is the block below pp_prev1 block */
+            pp_prev3 = pp_prev1 + (mvwidth >> 1);
+        }
+        else
+        {   /* dy is a multiple of 16 */
+            pp_prev3 = pp_prev1;
+        }
+
+        /*  1/5/01, make sure it doesn't go out of bound */
+        if (((dx&0xF) != 0) && (mmvx + 1 < (mvwidth >> 1) - 1))
+        {   /* dx is not a multiple of 16 */
+
+            /* pp_prev2 is the block to the right of pp_prev1 block */
+            pp_prev2 = pp_prev1 + 1;
+
+            /* pp_prev4 is the block to the right of the block */
+            /* below pp_prev1 block                */
+            pp_prev4 = pp_prev3 + 1;
+        }
+        else
+        {   /* dx is a multiple of 16 */
+
+            pp_prev2 = pp_prev1;
+            pp_prev4 = pp_prev3;
+        }
+
+        /* Advance offset to location of first Chrominance R semaphore in */
+        /* pstprcTypPrv. Since the number of pixels in a Chrominance VOP  */
+        /* is (number of pixels in Luminance VOP/4), and there are 64     */
+        /* pixels in an 8x8 Chrominance block, the offset can be      */
+        /* calculated as:                         */
+        /*  mv_loc = (number of pixels in Luminance VOP/(4*64))   */
+        /*         = size/256 = size>>8               */
+        mv_loc = (size >> 8);
+
+        /*  11/3/00, change the propagation for deblocking */
+        if (msk_deblock == 0)
+        {
+
+            /* Deblocking semaphore propagation for Chrominance */
+            /* b semaphores                     */
+            *(pp_dec_u) = 0;
+
+            /* Advance offset to point to Chrominance r semaphores */
+            pp_dec_u += mv_loc;
+
+            /* Deblocking semaphore propagation for Chrominance */
+            /* r semaphores                     */
+            *(pp_dec_u) = 0;
+        }
+        else
+        {
+            /* Deringing semaphore propagation for Chrominance B block */
+            if ((*(pp_dec_u)&4) == 0)
+            {
+                *(pp_dec_u) |= ((*(pp_prev1) | *(pp_prev2) |
+                                 *(pp_prev3) | *(pp_prev4)) & 0x4);
+            }
+
+            /* Advance offset to point to Chrominance r semaphores */
+            pp_dec_u += mv_loc;
+            pp_prev1 += mv_loc;
+            pp_prev2 += mv_loc;
+            pp_prev3 += mv_loc;
+            pp_prev4 += mv_loc;
+
+            /* Deringing semaphore propagation for Chrominance R */
+            if ((*(pp_dec_u)&4) == 0)
+            {
+                *(pp_dec_u) |= ((*(pp_prev1) | *(pp_prev2) |
+                                 *(pp_prev3) | *(pp_prev4)) & 0x4);
+            }
+        }
+
+        /*----------------------------------------------------------------------------
+        ; Return nothing or data or data pointer
+        ----------------------------------------------------------------------------*/
+        return;
+    }
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/pp_semaphore_luma.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/pp_semaphore_luma.cpp
new file mode 100644
index 0000000..b3a1ebd
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/pp_semaphore_luma.cpp
@@ -0,0 +1,378 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+------------------------------------------------------------------------------
+ INPUT AND OUTPUT DEFINITIONS
+
+ Inputs:
+    xpred = x-axis coordinate of the MB used for prediction (int)
+    ypred = y-axis coordinate of the MB used for prediction (int)
+    pp_dec_y = pointer to the post processing semaphore for current
+           luminance frame (uint8)
+    pstprcTypPrv = pointer the previous frame's post processing type
+                   (uint8)
+    ll = pointer to the buffer (int)
+    mv_loc = flag indicating location of the motion compensated
+         (x,y) position with respect to the luminance MB (int);
+         0 -> inside MB, 1 -> outside MB
+    dx = horizontal component of the motion vector (int)
+    dy = vertical component of the motion vector (int)
+    mvwidth = number of blocks per row (int)
+    width = luminance VOP width in pixels (int)
+    height = luminance VOP height in pixels (int)
+
+ Local Stores/Buffers/Pointers Needed:
+    None
+
+ Global Stores/Buffers/Pointers Needed:
+    None
+
+ Outputs:
+    msk_deblock = flag that indicates whether deblocking is to be
+              performed (msk_deblock = 0) or not (msk_deblock =
+              1) (uint8)
+
+ Pointers and Buffers Modified:
+    pp_dec_y contents are the updated semapohore propagation data
+
+ Local Stores Modified:
+    None
+
+ Global Stores Modified:
+    None
+
+------------------------------------------------------------------------------
+ FUNCTION DESCRIPTION
+
+ This functions performs post processing semaphore propagation processing
+ after luminance prediction.
+
+*/
+
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include    "mp4dec_api.h"
+#include    "mp4def.h"
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+#ifdef PV_POSTPROC_ON
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+    /*----------------------------------------------------------------------------
+    ; FUNCTION CODE
+    ----------------------------------------------------------------------------*/
+    uint8 pp_semaphore_luma(
+        int xpred,      /* i */
+        int ypred,      /* i */
+        uint8   *pp_dec_y,  /* i/o */
+        uint8   *pstprcTypPrv,  /* i */
+        int *ll,        /* i */
+        int *mv_loc,    /* i/o */
+        int dx,     /* i */
+        int dy,     /* i */
+        int mvwidth,    /* i */
+        int width,      /* i */
+        int height      /* i */
+    )
+    {
+        /*----------------------------------------------------------------------------
+        ; Define all local variables
+        ----------------------------------------------------------------------------*/
+        int kk, mmvy, mmvx, nmvx, nmvy;
+        uint8   *pp_prev1, *pp_prev2, *pp_prev3, *pp_prev4;
+        uint8   msk_deblock = 0;        /*  11/3/00 */
+
+        /*----------------------------------------------------------------------------
+        ; Function body here
+        ----------------------------------------------------------------------------*/
+        /* Interframe Processing - 1 MV per MB */
+
+        /* check whether the MV points outside the frame */
+        if (xpred >= 0 && xpred <= ((width << 1) - (2*MB_SIZE)) && ypred >= 0 &&
+                ypred <= ((height << 1) - (2*MB_SIZE)))
+        {   /*****************************/
+            /* (x,y) is inside the frame */
+            /*****************************/
+
+            /*  10/24/2000 post_processing semaphore */
+            /* generation */
+
+            /*  10/23/2000 no boundary checking*/
+            *mv_loc = 0;
+
+            /* Calculate block x coordinate. Divide by 16 is for  */
+            /* converting half-pixel resolution to block          */
+            mmvx = xpred >> 4;
+
+            /* Calculate block y coordinate. Divide by 16 is for */
+            /* converting half-pixel resolution to block         */
+            mmvy = ypred >> 4;
+
+            /* Find post processing semaphore location for block */
+            /* used for prediction, i.e.,                */
+            /* pp_prev1 = &pstprcTypPrv[mmvy*mvwidth][mmvx]      */
+            pp_prev1 = pstprcTypPrv + mmvx + mmvy * mvwidth;
+
+            /* Check if MV is a multiple of 16 */
+            if ((dx&0xF) != 0)
+            {   /* dx is not a multiple of 16 */
+
+                /* pp_prev2 is the block to the right of */
+                /* pp_prev1 block            */
+                pp_prev2 = pp_prev1 + 1;
+
+                if ((dy&0xF) != 0)
+                {   /* dy is not a multiple of 16 */
+
+                    /* pp_prev3 is the block below */
+                    /* pp_prev1 block          */
+                    pp_prev3 = pp_prev1 + mvwidth;
+                }
+                else
+                {   /* dy is a multiple of 16 */
+
+                    pp_prev3 = pp_prev1;
+                }
+
+                /* pp_prev4 is the block to the right of */
+                /* pp_prev3 block.           */
+                pp_prev4 = pp_prev3 + 1;
+            }
+            else
+            {   /* dx is a multiple of 16 */
+
+                pp_prev2 = pp_prev1;
+
+                if ((dy&0xF) != 0)
+                {   /* dy is not a multiple of 16 */
+
+                    /* pp_prev3 is the block below */
+                    /* pp_prev1 block.         */
+                    pp_prev3 = pp_prev1 + mvwidth;
+                }
+                else
+                {   /* dy is a multiple of 16 */
+
+                    pp_prev3 = pp_prev1;
+                    msk_deblock = 0x3;
+                }
+
+                pp_prev4 = pp_prev3;
+            }
+
+            /* Perform post processing semaphore propagation for each */
+            /* of the 4 blocks in a MB.               */
+            for (kk = 0; kk < 4; kk++)
+            {
+                /* Deringing semaphore propagation */
+                if ((*(pp_dec_y) & 4) == 0)
+                {
+                    *(pp_dec_y) |= ((*(pp_prev1) | *(pp_prev2) |
+                                     *(pp_prev3) | *(pp_prev4)) & 0x4);
+                }
+                /* Deblocking semaphore propagation */
+                /*  11/3/00, change the propagation for deblocking */
+                if (msk_deblock == 0)
+                {
+                    *(pp_dec_y) = 0;
+                }
+
+                pp_dec_y += ll[kk];
+                pp_prev1 += ll[kk];
+                pp_prev2 += ll[kk];
+                pp_prev3 += ll[kk];
+                pp_prev4 += ll[kk];
+            }
+
+        }
+        else
+        {   /******************************/
+            /* (x,y) is outside the frame */
+            /******************************/
+
+            /*  10/24/2000 post_processing semaphore */
+            /* generation */
+
+            /*  10/23/2000 boundary checking*/
+            *mv_loc = 1;
+
+            /* Perform post processing semaphore propagation for each */
+            /* of the 4 blocks in a MB.               */
+            for (kk = 0; kk < 4; kk++)
+            {
+                /* Calculate block x coordinate and round (?).  */
+                /* Divide by 16 is for converting half-pixel    */
+                /* resolution to block.             */
+                mmvx = (xpred + ((kk & 1) << 3)) >> 4;
+                nmvx = mmvx;
+
+                /* Calculate block y coordinate and round (?).  */
+                /* Divide by 16 is for converting half-pixel    */
+                /* resolution to block.             */
+                mmvy = (ypred + ((kk & 2) << 2)) >> 4;
+                nmvy = mmvy;
+
+                /* Perform boundary checking */
+                if (nmvx < 0)
+                {
+                    nmvx = 0;
+                }
+                else if (nmvx > mvwidth - 1)
+                {
+                    nmvx = mvwidth - 1;
+                }
+
+                if (nmvy < 0)
+                {
+                    nmvy = 0;
+                }
+                else if (nmvy > (height >> 3) - 1)
+                {
+                    nmvy = (height >> 3) - 1;
+                }
+
+                /* Find post processing semaphore location for block */
+                /* used for prediction, i.e.,                */
+                /* pp_prev1 = &pstprcTypPrv[nmvy*mvwidth][nmvx]      */
+                pp_prev1 = pstprcTypPrv + nmvx + nmvy * mvwidth;
+
+                /* Check if x component of MV is a multiple of 16    */
+                /* and check if block x coordinate is out of bounds  */
+                if (((dx&0xF) != 0) && (mmvx + 1 < mvwidth - 1))
+                {   /* dx is not a multiple of 16 and the block */
+                    /* x coordinate is within the bounds        */
+
+                    /* pp_prev2 is the block to the right of */
+                    /* pp_prev1 block            */
+                    pp_prev2 = pp_prev1 + 1;
+
+                    /* Check if y component of MV is a multiple */
+                    /* of 16 and check if block y coordinate is */
+                    /* out of bounds                */
+                    if (((dy&0xF) != 0) && (mmvy + 1 < (height >> 3) - 1))
+                    {   /* dy is not a multiple of 16 and */
+                        /* the block y coordinate is      */
+                        /* within the bounds              */
+
+                        /* pp_prev3 is the block below */
+                        /* pp_prev1 block          */
+                        pp_prev3 = pp_prev1 + mvwidth;
+
+                        /* all prediction are from different blocks */
+                        msk_deblock = 0x3;
+                    }
+                    else
+                    {   /* dy is a multiple of 16 or the block */
+                        /* y coordinate is out of bounds       */
+
+                        pp_prev3 = pp_prev1;
+                    }
+
+                    /* pp_prev4 is the block to the right of */
+                    /* pp_prev3 block.           */
+                    pp_prev4 = pp_prev3 + 1;
+                }
+                else
+                {   /* dx is a multiple of 16 or the block x */
+                    /* coordinate is out of bounds           */
+
+                    pp_prev2 = pp_prev1;
+
+                    /* Check if y component of MV is a multiple */
+                    /* of 16 and check if block y coordinate is */
+                    /* out of bounds                */
+                    if (((dy&0xF) != 0) && (mmvy + 1 < (height >> 3) - 1))
+                    {   /* dy is not a multiple of 16 and */
+                        /* the block y coordinate is      */
+                        /* within the bounds              */
+
+                        /* pp_prev3 is the block below */
+                        /* pp_prev1 block.         */
+                        pp_prev3 = pp_prev1 + mvwidth;
+                    }
+                    else
+                    {   /* dy is a multiple of 16 or the block */
+                        /* y coordinate is out of bounds       */
+
+                        pp_prev3 = pp_prev1;
+                    }
+
+                    pp_prev4 = pp_prev3;
+                }
+
+                /* Deringing semaphore propagation */
+                if ((*(pp_dec_y)&4) == 0)
+                {
+                    *(pp_dec_y) |= ((*(pp_prev1) |
+                                     *(pp_prev2) | *(pp_prev3) |
+                                     *(pp_prev4)) & 0x4);
+                }
+                /* Deblocking semaphore propagation */
+                /*  11/3/00, change the propaga= */
+                /* tion for deblocking */
+                if (msk_deblock == 0)
+                {
+                    *(pp_dec_y) = 0;
+                }
+
+                pp_dec_y += ll[kk];
+            }
+        }
+
+        /*----------------------------------------------------------------------------
+        ; Return nothing or data or data pointer
+        ----------------------------------------------------------------------------*/
+        return (msk_deblock);
+    }
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/pvdec_api.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/pvdec_api.cpp
new file mode 100644
index 0000000..0c354d9
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/pvdec_api.cpp
@@ -0,0 +1,1696 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "mp4dec_lib.h"
+#include "vlc_decode.h"
+#include "bitstream.h"
+
+#define OSCL_DISABLE_WARNING_CONDITIONAL_IS_CONSTANT
+
+#ifdef DEC_INTERNAL_MEMORY_OPT
+#define QCIF_MBS 99
+#define QCIF_BS (4*QCIF_MBS)
+#define QCIF_MB_ROWS 11
+extern uint8                IMEM_sliceNo[QCIF_MBS];
+extern uint8                IMEM_acPredFlag[QCIF_MBS];
+extern uint8                IMEM_headerInfo_Mode[QCIF_MBS];
+extern uint8                IMEM_headerInfo_CBP[QCIF_MBS];
+extern int                  IMEM_headerInfo_QPMB[QCIF_MBS];
+extern MacroBlock           IMEM_mblock;
+extern MOT                  IMEM_motX[QCIF_BS];
+extern MOT                  IMEM_motY[QCIF_BS];
+extern BitstreamDecVideo    IMEM_BitstreamDecVideo[4];
+extern typeDCStore          IMEM_predDC[QCIF_MBS];
+extern typeDCACStore        IMEM_predDCAC_col[QCIF_MB_ROWS+1];
+
+extern VideoDecData         IMEM_VideoDecData[1];
+extern Vop                  IMEM_currVop[1];
+extern Vop                  IMEM_prevVop[1];
+extern PIXEL                IMEM_currVop_yChan[QCIF_MBS*128*3];
+extern PIXEL                IMEM_prevVop_yChan[QCIF_MBS*128*3];
+extern uint8                IMEM_pstprcTypCur[6*QCIF_MBS];
+extern uint8                IMEM_pstprcTypPrv[6*QCIF_MBS];
+
+
+extern Vop                  IMEM_vopHEADER[2];
+extern Vol                  IMEM_VOL[2];
+extern Vop                  IMEM_vopHeader[2][1];
+extern Vol                  IMEM_vol[2][1];
+
+#endif
+
+/* ======================================================================== */
+/*  Function : PVInitVideoDecoder()                                         */
+/*  Date     : 04/11/2000, 08/29/2000                                       */
+/*  Purpose  : Initialization of the MPEG-4 video decoder library.          */
+/*             The return type is Bool instead of PV_STATUS because         */
+/*             we don't want to expose PV_STATUS to (outside) programmers   */
+/*             that use our decoder library SDK.                            */
+/*  In/out   :                                                              */
+/*  Return   : PV_TRUE if successed, PV_FALSE if failed.                    */
+/*  Modified :                                                              */
+/* ======================================================================== */
+OSCL_EXPORT_REF Bool PVInitVideoDecoder(VideoDecControls *decCtrl, uint8 *volbuf[],
+                                        int32 *volbuf_size, int nLayers, int width, int height, MP4DecodingMode mode)
+{
+    VideoDecData *video = (VideoDecData *) decCtrl->videoDecoderData;
+    Bool status = PV_TRUE;
+    int idx;
+    BitstreamDecVideo *stream;
+
+
+    oscl_memset(decCtrl, 0, sizeof(VideoDecControls)); /* fix a size bug.   03/28/2001 */
+    decCtrl->nLayers = nLayers;
+    for (idx = 0; idx < nLayers; idx++)
+    {
+        decCtrl->volbuf[idx] = volbuf[idx];
+        decCtrl->volbuf_size[idx] = volbuf_size[idx];
+    }
+
+    /* memory allocation & initialization */
+#ifdef DEC_INTERNAL_MEMORY_OPT
+    video = IMEM_VideoDecData;
+#else
+    video = (VideoDecData *) oscl_malloc(sizeof(VideoDecData));
+#endif
+    if (video != NULL)
+    {
+        oscl_memset(video, 0, sizeof(VideoDecData));
+        video->memoryUsage = sizeof(VideoDecData);
+        video->numberOfLayers = nLayers;
+#ifdef DEC_INTERNAL_MEMORY_OPT
+        video->vol = (Vol **) IMEM_VOL;
+#else
+        video->vol = (Vol **) oscl_malloc(nLayers * sizeof(Vol *));
+#endif
+        if (video->vol == NULL) status = PV_FALSE;
+        video->memoryUsage += nLayers * sizeof(Vol *);
+
+
+        /* we need to setup this pointer for the application to */
+        /*    pass it around.                                   */
+        decCtrl->videoDecoderData = (void *) video;
+        video->videoDecControls = decCtrl;  /* yes. we have a cyclic */
+        /* references here :)    */
+
+        /* Allocating Vop space, this has to change when we add */
+        /*    spatial scalability to the decoder                */
+#ifdef DEC_INTERNAL_MEMORY_OPT
+        video->currVop = IMEM_currVop;
+        if (video->currVop == NULL) status = PV_FALSE;
+        else oscl_memset(video->currVop, 0, sizeof(Vop));
+        video->prevVop = IMEM_prevVop;
+        if (video->prevVop == NULL) status = PV_FALSE;
+        else oscl_memset(video->prevVop, 0, sizeof(Vop));
+        video->memoryUsage += (sizeof(Vop) * 2);
+        video->vopHeader = (Vop **) IMEM_vopHEADER;
+#else
+
+        video->currVop = (Vop *) oscl_malloc(sizeof(Vop));
+        if (video->currVop == NULL) status = PV_FALSE;
+        else oscl_memset(video->currVop, 0, sizeof(Vop));
+        video->prevVop = (Vop *) oscl_malloc(sizeof(Vop));
+        if (video->prevVop == NULL) status = PV_FALSE;
+        else oscl_memset(video->prevVop, 0, sizeof(Vop));
+        video->memoryUsage += (sizeof(Vop) * 2);
+
+        video->vopHeader = (Vop **) oscl_malloc(sizeof(Vop *) * nLayers);
+#endif
+        if (video->vopHeader == NULL) status = PV_FALSE;
+        else oscl_memset(video->vopHeader, 0, sizeof(Vop *)*nLayers);
+        video->memoryUsage += (sizeof(Vop *) * nLayers);
+
+        video->initialized = PV_FALSE;
+        /* Decode the header to get all information to allocate data */
+        if (status == PV_TRUE)
+        {
+            /* initialize decoded frame counter.   04/24/2001 */
+            video->frame_idx = -1;
+
+
+            for (idx = 0; idx < nLayers; idx++)
+            {
+
+#ifdef DEC_INTERNAL_MEMORY_OPT
+                video->vopHeader[idx] = IMEM_vopHeader[idx];
+#else
+                video->vopHeader[idx] = (Vop *) oscl_malloc(sizeof(Vop));
+#endif
+                if (video->vopHeader[idx] == NULL)
+                {
+                    status = PV_FALSE;
+                    break;
+                }
+                else
+                {
+                    oscl_memset(video->vopHeader[idx], 0, sizeof(Vop));
+                    video->vopHeader[idx]->timeStamp = 0;
+                    video->memoryUsage += (sizeof(Vop));
+                }
+#ifdef DEC_INTERNAL_MEMORY_OPT
+                video->vol[idx] = IMEM_vol[idx];
+                video->memoryUsage += sizeof(Vol);
+                oscl_memset(video->vol[idx], 0, sizeof(Vol));
+                if (video->vol[idx] == NULL) status = PV_FALSE;
+                stream = IMEM_BitstreamDecVideo;
+#else
+                video->vol[idx] = (Vol *) oscl_malloc(sizeof(Vol));
+                if (video->vol[idx] == NULL)
+                {
+                    status = PV_FALSE;
+                    break;
+                }
+                else
+                {
+                    video->memoryUsage += sizeof(Vol);
+                    oscl_memset(video->vol[idx], 0, sizeof(Vol));
+                }
+
+                stream = (BitstreamDecVideo *) oscl_malloc(sizeof(BitstreamDecVideo));
+#endif
+                video->memoryUsage += sizeof(BitstreamDecVideo);
+                if (stream == NULL)
+                {
+                    status = PV_FALSE;
+                    break;
+                }
+                else
+                {
+                    int32 buffer_size;
+                    if ((buffer_size = BitstreamOpen(stream, idx)) < 0)
+                    {
+                        mp4dec_log("InitVideoDecoder(): Can't allocate bitstream buffer.\n");
+                        status = PV_FALSE;
+                        break;
+                    }
+                    video->memoryUsage += buffer_size;
+                    video->vol[idx]->bitstream = stream;
+                    video->vol[idx]->volID = idx;
+                    video->vol[idx]->timeInc_offset = 0;  /*  11/12/01 */
+                    video->vlcDecCoeffIntra = &VlcDecTCOEFShortHeader;
+                    video->vlcDecCoeffInter = &VlcDecTCOEFShortHeader;
+                    if (mode == MPEG4_MODE)
+                    {
+                        /* Set up VOL header bitstream for frame-based decoding.  08/30/2000 */
+                        BitstreamReset(stream, decCtrl->volbuf[idx], decCtrl->volbuf_size[idx]);
+
+                        switch (DecodeVOLHeader(video, idx))
+                        {
+                            case PV_SUCCESS :
+                                if (status == PV_TRUE)
+                                    status = PV_TRUE;   /*  we want to make sure that if first layer is bad, second layer is good return PV_FAIL */
+                                else
+                                    status = PV_FALSE;
+                                break;
+#ifdef PV_TOLERATE_VOL_ERRORS
+                            case PV_BAD_VOLHEADER:
+                                status = PV_TRUE;
+                                break;
+#endif
+                            default :
+                                status = PV_FALSE;
+                                break;
+                        }
+
+                    }
+                    else
+                    {
+                        video->shortVideoHeader = PV_TRUE;
+                    }
+
+                    if (video->shortVideoHeader == PV_TRUE)
+                    {
+                        mode = H263_MODE;
+                        /* Set max width and height.  In H.263 mode, we use    */
+                        /*  volbuf_size[0] to pass in width and volbuf_size[1] */
+                        /*  to pass in height.                    04/23/2001 */
+                        video->prevVop->temporalRef = 0; /*  11/12/01 */
+                        /* Compute some convenience variables:   04/23/2001 */
+                        video->vol[idx]->quantType = 0;
+                        video->vol[idx]->quantPrecision = 5;
+                        video->vol[idx]->errorResDisable = 1;
+                        video->vol[idx]->dataPartitioning = 0;
+                        video->vol[idx]->useReverseVLC = 0;
+                        video->intra_acdcPredDisable = 1;
+                        video->vol[idx]->scalability = 0;
+                        video->size = (int32)width * height;
+
+                        video->displayWidth = video->width = width;
+                        video->displayHeight = video->height = height;
+#ifdef PV_ANNEX_IJKT_SUPPORT
+                        video->modified_quant = 0;
+                        video->advanced_INTRA = 0;
+                        video->deblocking = 0;
+                        video->slice_structure = 0;
+#endif
+                    }
+
+                }
+            }
+
+        }
+        if (status != PV_FALSE)
+        {
+            status = PVAllocVideoData(decCtrl, width, height, nLayers);
+            video->initialized = PV_TRUE;
+        }
+    }
+    else
+    {
+        status = PV_FALSE;
+    }
+
+    if (status == PV_FALSE) PVCleanUpVideoDecoder(decCtrl);
+
+    return status;
+}
+
+Bool PVAllocVideoData(VideoDecControls *decCtrl, int width, int height, int nLayers)
+{
+    VideoDecData *video = (VideoDecData *) decCtrl->videoDecoderData;
+    Bool status = PV_TRUE;
+    int nTotalMB;
+    int nMBPerRow;
+    int32 size;
+
+    if (video->shortVideoHeader == PV_TRUE)
+    {
+        video->displayWidth = video->width = width;
+        video->displayHeight = video->height = height;
+
+        video->nMBPerRow =
+            video->nMBinGOB  = video->width / MB_SIZE;
+        video->nMBPerCol =
+            video->nGOBinVop = video->height / MB_SIZE;
+        video->nTotalMB =
+            video->nMBPerRow * video->nMBPerCol;
+    }
+
+    size = (int32)sizeof(PIXEL) * video->width * video->height;
+#ifdef PV_MEMORY_POOL
+    decCtrl->size = size;
+#else
+#ifdef DEC_INTERNAL_MEMORY_OPT
+    video->currVop->yChan = IMEM_currVop_yChan; /* Allocate memory for all VOP OKA 3/2/1*/
+    if (video->currVop->yChan == NULL) status = PV_FALSE;
+    video->currVop->uChan = video->currVop->yChan + size;
+    video->currVop->vChan = video->currVop->uChan + (size >> 2);
+
+    video->prevVop->yChan = IMEM_prevVop_yChan; /* Allocate memory for all VOP OKA 3/2/1*/
+    if (video->prevVop->yChan == NULL) status = PV_FALSE;
+    video->prevVop->uChan = video->prevVop->yChan + size;
+    video->prevVop->vChan = video->prevVop->uChan + (size >> 2);
+#else
+    video->currVop->yChan = (PIXEL *) oscl_malloc(size * 3 / 2); /* Allocate memory for all VOP OKA 3/2/1*/
+    if (video->currVop->yChan == NULL) status = PV_FALSE;
+
+    video->currVop->uChan = video->currVop->yChan + size;
+    video->currVop->vChan = video->currVop->uChan + (size >> 2);
+    video->prevVop->yChan = (PIXEL *) oscl_malloc(size * 3 / 2); /* Allocate memory for all VOP OKA 3/2/1*/
+    if (video->prevVop->yChan == NULL) status = PV_FALSE;
+
+    video->prevVop->uChan = video->prevVop->yChan + size;
+    video->prevVop->vChan = video->prevVop->uChan + (size >> 2);
+#endif
+    video->memoryUsage += (size * 3);
+#endif   // MEMORY_POOL
+    /* Note that baseVop, enhcVop is only used to hold enhancement */
+    /*    layer header information.                  05/04/2000  */
+    if (nLayers > 1)
+    {
+        video->prevEnhcVop = (Vop *) oscl_malloc(sizeof(Vop));
+        video->memoryUsage += (sizeof(Vop));
+        if (video->prevEnhcVop == NULL)
+        {
+            status = PV_FALSE;
+        }
+        else
+        {
+            oscl_memset(video->prevEnhcVop, 0, sizeof(Vop));
+#ifndef PV_MEMORY_POOL
+            video->prevEnhcVop->yChan = (PIXEL *) oscl_malloc(size * 3 / 2); /* Allocate memory for all VOP OKA 3/2/1*/
+            if (video->prevEnhcVop->yChan == NULL) status = PV_FALSE;
+            video->prevEnhcVop->uChan = video->prevEnhcVop->yChan + size;
+            video->prevEnhcVop->vChan = video->prevEnhcVop->uChan + (size >> 2);
+            video->memoryUsage += (3 * size / 2);
+#endif
+        }
+    }
+
+    /* Allocating space for slices, AC prediction flag, and */
+    /*    AC/DC prediction storage */
+    nTotalMB = video->nTotalMB;
+    nMBPerRow = video->nMBPerRow;
+
+#ifdef DEC_INTERNAL_MEMORY_OPT
+    video->sliceNo = (uint8 *)(IMEM_sliceNo);
+    if (video->sliceNo == NULL) status = PV_FALSE;
+    video->memoryUsage += nTotalMB;
+    video->acPredFlag = (uint8 *)(IMEM_acPredFlag);
+    if (video->acPredFlag == NULL) status = PV_FALSE;
+    video->memoryUsage += (nTotalMB);
+    video->predDC = (typeDCStore *)(IMEM_predDC);
+    if (video->predDC == NULL) status = PV_FALSE;
+    video->memoryUsage += (nTotalMB * sizeof(typeDCStore));
+    video->predDCAC_col = (typeDCACStore *)(IMEM_predDCAC_col);
+    if (video->predDCAC_col == NULL) status = PV_FALSE;
+    video->memoryUsage += ((nMBPerRow + 1) * sizeof(typeDCACStore));
+    video->predDCAC_row = video->predDCAC_col + 1;
+    video->headerInfo.Mode = (uint8 *)(IMEM_headerInfo_Mode);
+    if (video->headerInfo.Mode == NULL) status = PV_FALSE;
+    video->memoryUsage += nTotalMB;
+    video->headerInfo.CBP = (uint8 *)(IMEM_headerInfo_CBP);
+    if (video->headerInfo.CBP == NULL) status = PV_FALSE;
+    video->memoryUsage += nTotalMB;
+    video->QPMB = (int *)(IMEM_headerInfo_QPMB);
+    if (video->QPMB == NULL) status = PV_FALSE;
+    video->memoryUsage += (nTotalMB * sizeof(int));
+    video->mblock = &IMEM_mblock;
+    if (video->mblock == NULL) status = PV_FALSE;
+    oscl_memset(video->mblock->block, 0, sizeof(int16)*6*NCOEFF_BLOCK); //  Aug 23,2005
+
+    video->memoryUsage += sizeof(MacroBlock);
+    video->motX = (MOT *)(IMEM_motX);
+    if (video->motX == NULL) status = PV_FALSE;
+    video->motY = (MOT *)(IMEM_motY);
+    if (video->motY == NULL) status = PV_FALSE;
+    video->memoryUsage += (sizeof(MOT) * 8 * nTotalMB);
+#else
+    video->sliceNo = (uint8 *) oscl_malloc(nTotalMB);
+    if (video->sliceNo == NULL) status = PV_FALSE;
+    video->memoryUsage += nTotalMB;
+
+    video->acPredFlag = (uint8 *) oscl_malloc(nTotalMB * sizeof(uint8));
+    if (video->acPredFlag == NULL) status = PV_FALSE;
+    video->memoryUsage += (nTotalMB);
+
+    video->predDC = (typeDCStore *) oscl_malloc(nTotalMB * sizeof(typeDCStore));
+    if (video->predDC == NULL) status = PV_FALSE;
+    video->memoryUsage += (nTotalMB * sizeof(typeDCStore));
+
+    video->predDCAC_col = (typeDCACStore *) oscl_malloc((nMBPerRow + 1) * sizeof(typeDCACStore));
+    if (video->predDCAC_col == NULL) status = PV_FALSE;
+    video->memoryUsage += ((nMBPerRow + 1) * sizeof(typeDCACStore));
+
+    /* element zero will be used for storing vertical (col) AC coefficients */
+    /*  the rest will be used for storing horizontal (row) AC coefficients  */
+    video->predDCAC_row = video->predDCAC_col + 1;        /*  ACDC */
+
+    /* Allocating HeaderInfo structure & Quantizer array */
+    video->headerInfo.Mode = (uint8 *) oscl_malloc(nTotalMB);
+    if (video->headerInfo.Mode == NULL) status = PV_FALSE;
+    video->memoryUsage += nTotalMB;
+    video->headerInfo.CBP = (uint8 *) oscl_malloc(nTotalMB);
+    if (video->headerInfo.CBP == NULL) status = PV_FALSE;
+    video->memoryUsage += nTotalMB;
+    video->QPMB = (int16 *) oscl_malloc(nTotalMB * sizeof(int16));
+    if (video->QPMB == NULL) status = PV_FALSE;
+    video->memoryUsage += (nTotalMB * sizeof(int));
+
+    /* Allocating macroblock space */
+    video->mblock = (MacroBlock *) oscl_malloc(sizeof(MacroBlock));
+    if (video->mblock == NULL)
+    {
+        status = PV_FALSE;
+    }
+    else
+    {
+        oscl_memset(video->mblock->block, 0, sizeof(int16)*6*NCOEFF_BLOCK); //  Aug 23,2005
+
+        video->memoryUsage += sizeof(MacroBlock);
+    }
+    /* Allocating motion vector space */
+    video->motX = (MOT *) oscl_malloc(sizeof(MOT) * 4 * nTotalMB);
+    if (video->motX == NULL) status = PV_FALSE;
+    video->motY = (MOT *) oscl_malloc(sizeof(MOT) * 4 * nTotalMB);
+    if (video->motY == NULL) status = PV_FALSE;
+    video->memoryUsage += (sizeof(MOT) * 8 * nTotalMB);
+#endif
+
+#ifdef PV_POSTPROC_ON
+    /* Allocating space for post-processing Mode */
+#ifdef DEC_INTERNAL_MEMORY_OPT
+    video->pstprcTypCur = IMEM_pstprcTypCur;
+    video->memoryUsage += (nTotalMB * 6);
+    if (video->pstprcTypCur == NULL)
+    {
+        status = PV_FALSE;
+    }
+    else
+    {
+        oscl_memset(video->pstprcTypCur, 0, 4*nTotalMB + 2*nTotalMB);
+    }
+
+    video->pstprcTypPrv = IMEM_pstprcTypPrv;
+    video->memoryUsage += (nTotalMB * 6);
+    if (video->pstprcTypPrv == NULL)
+    {
+        status = PV_FALSE;
+    }
+    else
+    {
+        oscl_memset(video->pstprcTypPrv, 0, nTotalMB*6);
+    }
+
+#else
+    video->pstprcTypCur = (uint8 *) oscl_malloc(nTotalMB * 6);
+    video->memoryUsage += (nTotalMB * 6);
+    if (video->pstprcTypCur == NULL)
+    {
+        status = PV_FALSE;
+    }
+    else
+    {
+        oscl_memset(video->pstprcTypCur, 0, 4*nTotalMB + 2*nTotalMB);
+    }
+
+    video->pstprcTypPrv = (uint8 *) oscl_malloc(nTotalMB * 6);
+    video->memoryUsage += (nTotalMB * 6);
+    if (video->pstprcTypPrv == NULL)
+    {
+        status = PV_FALSE;
+    }
+    else
+    {
+        oscl_memset(video->pstprcTypPrv, 0, nTotalMB*6);
+    }
+
+#endif
+
+#endif
+
+    /* initialize the decoder library */
+    video->prevVop->predictionType = I_VOP;
+    video->prevVop->timeStamp = 0;
+#ifndef PV_MEMORY_POOL
+    oscl_memset(video->prevVop->yChan, 16, sizeof(uint8)*size);     /*  10/31/01 */
+    oscl_memset(video->prevVop->uChan, 128, sizeof(uint8)*size / 2);
+
+    oscl_memset(video->currVop->yChan, 0, sizeof(uint8)*size*3 / 2);
+    if (nLayers > 1)
+    {
+        oscl_memset(video->prevEnhcVop->yChan, 0, sizeof(uint8)*size*3 / 2);
+        video->prevEnhcVop->timeStamp = 0;
+    }
+    video->concealFrame = video->prevVop->yChan;               /*  07/07/2001 */
+    decCtrl->outputFrame = video->prevVop->yChan;              /*  06/19/2002 */
+#endif
+
+    /* always start from base layer */
+    video->currLayer = 0;
+    return status;
+}
+
+/* ======================================================================== */
+/*  Function : PVResetVideoDecoder()                                        */
+/*  Date     : 01/14/2002                                                   */
+/*  Purpose  : Reset video timestamps                                       */
+/*  In/out   :                                                              */
+/*  Return   : PV_TRUE if successed, PV_FALSE if failed.                    */
+/*  Modified :                                                              */
+/* ======================================================================== */
+Bool PVResetVideoDecoder(VideoDecControls *decCtrl)
+{
+    VideoDecData *video = (VideoDecData *) decCtrl->videoDecoderData;
+    int idx;
+
+    for (idx = 0; idx < decCtrl->nLayers; idx++)
+    {
+        video->vopHeader[idx]->timeStamp = 0;
+    }
+    video->prevVop->timeStamp = 0;
+    if (decCtrl->nLayers > 1)
+        video->prevEnhcVop->timeStamp = 0;
+
+    oscl_memset(video->mblock->block, 0, sizeof(int16)*6*NCOEFF_BLOCK); //  Aug 23,2005
+
+    return PV_TRUE;
+}
+
+
+/* ======================================================================== */
+/*  Function : PVCleanUpVideoDecoder()                                      */
+/*  Date     : 04/11/2000, 08/29/2000                                       */
+/*  Purpose  : Cleanup of the MPEG-4 video decoder library.                 */
+/*  In/out   :                                                              */
+/*  Return   : PV_TRUE if successed, PV_FALSE if failed.                    */
+/*  Modified :                                                              */
+/* ======================================================================== */
+OSCL_EXPORT_REF Bool PVCleanUpVideoDecoder(VideoDecControls *decCtrl)
+{
+    int idx;
+    VideoDecData *video = (VideoDecData *) decCtrl->videoDecoderData;
+#ifdef DEC_INTERNAL_MEMORY_OPT
+    if (video)
+    {
+#ifdef PV_POSTPROC_ON
+        video->pstprcTypCur = NULL;
+        video->pstprcTypPrv = NULL;
+#endif
+
+        video->acPredFlag       = NULL;
+        video->sliceNo          = NULL;
+        video->motX             = NULL;
+        video->motY             = NULL;
+        video->mblock           = NULL;
+        video->QPMB             = NULL;
+        video->predDC           = NULL;
+        video->predDCAC_row     = NULL;
+        video->predDCAC_col     = NULL;
+        video->headerInfo.Mode  = NULL;
+        video->headerInfo.CBP   = NULL;
+        if (video->numberOfLayers > 1)
+        {
+            if (video->prevEnhcVop)
+            {
+                video->prevEnhcVop->uChan = NULL;
+                video->prevEnhcVop->vChan = NULL;
+                if (video->prevEnhcVop->yChan) oscl_free(video->prevEnhcVop->yChan);
+                oscl_free(video->prevEnhcVop);
+            }
+        }
+        if (video->currVop)
+        {
+            video->currVop->uChan = NULL;
+            video->currVop->vChan = NULL;
+            if (video->currVop->yChan)
+                video->currVop->yChan = NULL;
+            video->currVop = NULL;
+        }
+        if (video->prevVop)
+        {
+            video->prevVop->uChan = NULL;
+            video->prevVop->vChan = NULL;
+            if (video->prevVop->yChan)
+                video->prevVop->yChan = NULL;
+            video->prevVop = NULL;
+        }
+
+        if (video->vol)
+        {
+            for (idx = 0; idx < video->numberOfLayers; idx++)
+            {
+                if (video->vol[idx])
+                {
+                    BitstreamClose(video->vol[idx]->bitstream);
+                    video->vol[idx]->bitstream = NULL;
+                    video->vol[idx] = NULL;
+                }
+                video->vopHeader[idx] = NULL;
+
+            }
+            video->vol = NULL;
+            video->vopHeader = NULL;
+        }
+
+        video = NULL;
+        decCtrl->videoDecoderData = NULL;
+    }
+
+#else
+
+    if (video)
+    {
+#ifdef PV_POSTPROC_ON
+        if (video->pstprcTypCur) oscl_free(video->pstprcTypCur);
+        if (video->pstprcTypPrv) oscl_free(video->pstprcTypPrv);
+#endif
+        if (video->predDC) oscl_free(video->predDC);
+        video->predDCAC_row = NULL;
+        if (video->predDCAC_col) oscl_free(video->predDCAC_col);
+        if (video->motX) oscl_free(video->motX);
+        if (video->motY) oscl_free(video->motY);
+        if (video->mblock) oscl_free(video->mblock);
+        if (video->QPMB) oscl_free(video->QPMB);
+        if (video->headerInfo.Mode) oscl_free(video->headerInfo.Mode);
+        if (video->headerInfo.CBP) oscl_free(video->headerInfo.CBP);
+        if (video->sliceNo) oscl_free(video->sliceNo);
+        if (video->acPredFlag) oscl_free(video->acPredFlag);
+
+        if (video->numberOfLayers > 1)
+        {
+            if (video->prevEnhcVop)
+            {
+                video->prevEnhcVop->uChan = NULL;
+                video->prevEnhcVop->vChan = NULL;
+                if (video->prevEnhcVop->yChan) oscl_free(video->prevEnhcVop->yChan);
+                oscl_free(video->prevEnhcVop);
+            }
+        }
+        if (video->currVop)
+        {
+
+#ifndef PV_MEMORY_POOL
+            video->currVop->uChan = NULL;
+            video->currVop->vChan = NULL;
+            if (video->currVop->yChan)
+                oscl_free(video->currVop->yChan);
+#endif
+            oscl_free(video->currVop);
+        }
+        if (video->prevVop)
+        {
+#ifndef PV_MEMORY_POOL
+            video->prevVop->uChan = NULL;
+            video->prevVop->vChan = NULL;
+            if (video->prevVop->yChan)
+                oscl_free(video->prevVop->yChan);
+#endif
+            oscl_free(video->prevVop);
+        }
+
+        if (video->vol)
+        {
+            for (idx = 0; idx < video->numberOfLayers; idx++)
+            {
+                if (video->vol[idx])
+                {
+                    if (video->vol[idx]->bitstream)
+                    {
+                        BitstreamClose(video->vol[idx]->bitstream);
+                        oscl_free(video->vol[idx]->bitstream);
+                    }
+                    oscl_free(video->vol[idx]);
+                }
+
+            }
+            oscl_free(video->vol);
+        }
+
+        for (idx = 0; idx < video->numberOfLayers; idx++)
+        {
+            if (video->vopHeader[idx]) oscl_free(video->vopHeader[idx]);
+        }
+
+        if (video->vopHeader) oscl_free(video->vopHeader);
+
+        oscl_free(video);
+        decCtrl->videoDecoderData = NULL;
+    }
+#endif
+    return PV_TRUE;
+}
+/* ======================================================================== */
+/*  Function : PVGetVideoDimensions()                                       */
+/*  Date     : 040505                                                       */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : the display_width and display_height of                      */
+/*          the frame in the current layer.                                 */
+/*  Note     : This is not a macro or inline function because we do         */
+/*              not want to expose our internal data structure.             */
+/*  Modified :                                                              */
+/* ======================================================================== */
+OSCL_EXPORT_REF void PVGetVideoDimensions(VideoDecControls *decCtrl, int32 *display_width, int32 *display_height)
+{
+    VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData;
+    *display_width = video->displayWidth;
+    *display_height = video->displayHeight;
+}
+
+/* ======================================================================== */
+/*  Function : PVGetVideoTimeStamp()                                        */
+/*  Date     : 04/27/2000, 08/29/2000                                       */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : current time stamp in millisecond.                           */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+uint32 PVGetVideoTimeStamp(VideoDecControls *decCtrl)
+{
+    VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData;
+    return video->currTimestamp;
+}
+
+
+/* ======================================================================== */
+/*  Function : PVSetPostProcType()                                          */
+/*  Date     : 07/07/2000                                                   */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : Set post-processing filter type.                             */
+/*  Note     :                                                              */
+/*  Modified : . 08/29/2000 changes the name for consistency.               */
+/* ======================================================================== */
+OSCL_EXPORT_REF void PVSetPostProcType(VideoDecControls *decCtrl, int mode)
+{
+    VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData;
+    video->postFilterType = mode;
+}
+
+
+/* ======================================================================== */
+/*  Function : PVGetDecBitrate()                                            */
+/*  Date     : 08/23/2000                                                   */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : This function returns the average bits per second.           */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+int PVGetDecBitrate(VideoDecControls *decCtrl)
+{
+    VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData;
+    int     idx;
+    int32   sum = 0;
+
+    for (idx = 0; idx < BITRATE_AVERAGE_WINDOW; idx++)
+    {
+        sum += video->nBitsPerVop[idx];
+    }
+    sum = (sum * video->frameRate) / (10 * BITRATE_AVERAGE_WINDOW);
+    return (int) sum;
+}
+
+
+/* ======================================================================== */
+/*  Function : PVGetDecFramerate()                                          */
+/*  Date     : 08/23/2000                                                   */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : This function returns the average frame per 10 second.       */
+/*  Note     : The fps can be calculated by PVGetDecFramerate()/10          */
+/*  Modified :                                                              */
+/* ======================================================================== */
+int PVGetDecFramerate(VideoDecControls *decCtrl)
+{
+    VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData;
+
+    return video->frameRate;
+}
+
+/* ======================================================================== */
+/*  Function : PVGetOutputFrame()                                           */
+/*  Date     : 05/07/2001                                                   */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : This function returns the pointer to the output frame        */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+uint8 *PVGetDecOutputFrame(VideoDecControls *decCtrl)
+{
+    return decCtrl->outputFrame;
+}
+
+/* ======================================================================== */
+/*  Function : PVGetLayerID()                                               */
+/*  Date     : 07/09/2001                                                   */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : This function returns decoded frame layer id (BASE/ENHANCE)  */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+int PVGetLayerID(VideoDecControls *decCtrl)
+{
+    VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData;
+    return video->currLayer;
+}
+/* ======================================================================== */
+/*  Function : PVGetDecMemoryUsage()                                        */
+/*  Date     : 08/23/2000                                                   */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : This function returns the amount of memory used.             */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+int32 PVGetDecMemoryUsage(VideoDecControls *decCtrl)
+{
+    VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData;
+    return video->memoryUsage;
+}
+
+
+/* ======================================================================== */
+/*  Function : PVGetDecBitstreamMode()                                      */
+/*  Date     : 08/23/2000                                                   */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : This function returns the decoding mode of the baselayer     */
+/*              bitstream.                                                  */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+OSCL_EXPORT_REF MP4DecodingMode PVGetDecBitstreamMode(VideoDecControls *decCtrl)
+{
+    VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData;
+    if (video->shortVideoHeader)
+    {
+        return H263_MODE;
+    }
+    else
+    {
+        return MPEG4_MODE;
+    }
+}
+
+
+/* ======================================================================== */
+/*  Function : PVExtractVolHeader()                                         */
+/*  Date     : 08/29/2000                                                   */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : Extract vol header of the bitstream from buffer[].           */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+Bool PVExtractVolHeader(uint8 *video_buffer, uint8 *vol_header, int32 *vol_header_size)
+{
+    int idx = -1;
+    uint8 start_code_prefix[] = { 0x00, 0x00, 0x01 };
+    uint8 h263_prefix[] = { 0x00, 0x00, 0x80 };
+
+    if (oscl_memcmp(h263_prefix, video_buffer, 3) == 0) /* we have short header stream */
+    {
+        oscl_memcpy(vol_header, video_buffer, 32);
+        *vol_header_size = 32;
+        return TRUE;
+    }
+    else
+    {
+        if (oscl_memcmp(start_code_prefix, video_buffer, 3) ||
+                (video_buffer[3] != 0xb0 && video_buffer[3] >= 0x20)) return FALSE;
+
+        do
+        {
+            idx++;
+            while (oscl_memcmp(start_code_prefix, video_buffer + idx, 3))
+            {
+                idx++;
+                if (idx + 3 >= *vol_header_size) goto quit;
+            }
+        }
+        while (video_buffer[idx+3] != 0xb3 && video_buffer[idx+3] != 0xb6);
+
+        oscl_memcpy(vol_header, video_buffer, idx);
+        *vol_header_size = idx;
+        return TRUE;
+    }
+
+quit:
+    oscl_memcpy(vol_header, video_buffer, *vol_header_size);
+    return FALSE;
+}
+
+
+/* ======================================================================== */
+/*  Function : PVLocateFrameHeader()                                        */
+/*  Date     : 04/8/2005                                                    */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : Return the offset to the first SC in the buffer              */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+int32 PVLocateFrameHeader(uint8 *ptr, int32 size)
+{
+    int count = 0;
+    int32 i = size;
+
+    if (size < 1)
+    {
+        return 0;
+    }
+    while (i--)
+    {
+        if ((count > 1) && (*ptr == 0x01))
+        {
+            i += 2;
+            break;
+        }
+
+        if (*ptr++)
+            count = 0;
+        else
+            count++;
+    }
+    return (size - (i + 1));
+}
+
+
+/* ======================================================================== */
+/*  Function : PVLocateH263FrameHeader()                                    */
+/*  Date     : 04/8/2005                                                    */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : Return the offset to the first SC in the buffer              */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+int32 PVLocateH263FrameHeader(uint8 *ptr, int32 size)
+{
+    int count = 0;
+    int32 i = size;
+
+    if (size < 1)
+    {
+        return 0;
+    }
+
+    while (i--)
+    {
+        if ((count > 1) && ((*ptr & 0xFC) == 0x80))
+        {
+            i += 2;
+            break;
+        }
+
+        if (*ptr++)
+            count = 0;
+        else
+            count++;
+    }
+    return (size - (i + 1));
+}
+
+
+/* ======================================================================== */
+/*  Function : PVDecodeVideoFrame()                                         */
+/*  Date     : 08/29/2000                                                   */
+/*  Purpose  : Decode one video frame and return a YUV-12 image.            */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Note     :                                                              */
+/*  Modified : 04/17/2001 removed PV_EOS, PV_END_OF_BUFFER              */
+/*           : 08/22/2002 break up into 2 functions PVDecodeVopHeader and */
+/*                          PVDecodeVopBody                                 */
+/* ======================================================================== */
+OSCL_EXPORT_REF Bool PVDecodeVideoFrame(VideoDecControls *decCtrl, uint8 *buffer[],
+                                        uint32 timestamp[], int32 buffer_size[], uint use_ext_timestamp[], uint8 *currYUV)
+{
+    PV_STATUS status = PV_FAIL;
+    VopHeaderInfo header_info;
+
+    status = (PV_STATUS)PVDecodeVopHeader(decCtrl, buffer, timestamp, buffer_size, &header_info, use_ext_timestamp, currYUV);
+    if (status != PV_TRUE)
+        return PV_FALSE;
+
+    if (PVDecodeVopBody(decCtrl, buffer_size) != PV_TRUE)
+    {
+        return PV_FALSE;
+    }
+
+    return PV_TRUE;
+}
+
+/* ======================================================================== */
+/*  Function : PVDecodeVopHeader()                                          */
+/*  Date     : 08/22/2002                                                   */
+/*  Purpose  : Determine target layer and decode vop header, modified from  */
+/*              original PVDecodeVideoFrame.                                */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+Bool PVDecodeVopHeader(VideoDecControls *decCtrl, uint8 *buffer[],
+                       uint32 timestamp[], int32 buffer_size[], VopHeaderInfo *header_info, uint use_ext_timestamp [], uint8 *currYUV)
+{
+    VideoDecData *video = (VideoDecData *) decCtrl->videoDecoderData;
+    Vol *currVol;
+    Vop *currVop = video->currVop;
+    Vop **vopHeader = video->vopHeader;
+    BitstreamDecVideo *stream;
+
+    int target_layer;
+
+#ifdef PV_SUPPORT_TEMPORAL_SCALABILITY
+    PV_STATUS status = PV_FAIL;
+    int idx;
+    int32 display_time;
+
+    /* decide which frame to decode next */
+    if (decCtrl->nLayers > 1)
+    {
+        display_time = target_layer = -1;
+        for (idx = 0; idx < decCtrl->nLayers; idx++)
+        {
+            /* do we have data for this layer? */
+            if (buffer_size[idx] <= 0)
+            {
+                timestamp[idx] = -1;
+                continue;
+            }
+
+            /* did the application provide a timestamp for this vop? */
+            if (timestamp[idx] < 0)
+            {
+                if (vopHeader[idx]->timeStamp < 0)
+                {
+                    /* decode the timestamp in the bitstream */
+                    video->currLayer = idx;
+                    stream = video->vol[idx]->bitstream;
+                    BitstreamReset(stream, buffer[idx], buffer_size[idx]);
+
+                    while ((status = DecodeVOPHeader(video, vopHeader[idx], FALSE)) != PV_SUCCESS)
+                    {
+                        /* Try to find a VOP header in the buffer.   08/30/2000. */
+                        if (PVSearchNextM4VFrame(stream) != PV_SUCCESS)
+                        {
+                            /* if we don't have data for enhancement layer, */
+                            /*    don't just stop.   09/07/2000.          */
+                            buffer_size[idx] = 0;
+                            break;
+                        }
+                    }
+                    if (status == PV_SUCCESS)
+                    {
+                        vopHeader[idx]->timeStamp =
+                            timestamp[idx] = CalcVopDisplayTime(video->vol[idx], vopHeader[idx], video->shortVideoHeader);
+                        if (idx == 0) vopHeader[idx]->refSelectCode = 1;
+                    }
+                }
+                else
+                {
+                    /* We've decoded this vop header in the previous run already. */
+                    timestamp[idx] = vopHeader[idx]->timeStamp;
+                }
+            }
+
+            /* Use timestamps to select the next VOP to be decoded */
+            if (timestamp[idx] >= 0 && (display_time < 0 || display_time > timestamp[idx]))
+            {
+                display_time = timestamp[idx];
+                target_layer = idx;
+            }
+            else if (display_time == timestamp[idx])
+            {
+                /* we have to handle either SNR or spatial scalability here. */
+            }
+        }
+        if (target_layer < 0) return PV_FALSE;
+
+        /* set up for decoding the target layer */
+        video->currLayer = target_layer;
+        currVol = video->vol[target_layer];
+        video->bitstream = stream = currVol->bitstream;
+
+        /* We need to decode the vop header if external timestamp   */
+        /*    is provided.    10/04/2000                            */
+        if (vopHeader[target_layer]->timeStamp < 0)
+        {
+            stream = video->vol[target_layer]->bitstream;
+            BitstreamReset(stream, buffer[target_layer], buffer_size[target_layer]);
+
+            while (DecodeVOPHeader(video, vopHeader[target_layer], TRUE) != PV_SUCCESS)
+            {
+                /* Try to find a VOP header in the buffer.   08/30/2000. */
+                if (PVSearchNextM4VFrame(stream) != PV_SUCCESS)
+                {
+                    /* if we don't have data for enhancement layer, */
+                    /*    don't just stop.   09/07/2000.          */
+                    buffer_size[target_layer] = 0;
+                    break;
+                }
+            }
+            video->vol[target_layer]->timeInc_offset = vopHeader[target_layer]->timeInc;
+            video->vol[target_layer]->moduloTimeBase = timestamp[target_layer];
+            vopHeader[target_layer]->timeStamp = timestamp[target_layer];
+            if (target_layer == 0) vopHeader[target_layer]->refSelectCode = 1;
+        }
+    }
+    else /* base layer only decoding */
+    {
+#endif
+        video->currLayer = target_layer = 0;
+        currVol = video->vol[0];
+        video->bitstream = stream = currVol->bitstream;
+        if (buffer_size[0] <= 0) return PV_FALSE;
+        BitstreamReset(stream, buffer[0], buffer_size[0]);
+
+        if (video->shortVideoHeader)
+        {
+            while (DecodeShortHeader(video, vopHeader[0]) != PV_SUCCESS)
+            {
+                if (PVSearchNextH263Frame(stream) != PV_SUCCESS)
+                {
+                    /* There is no vop header in the buffer,    */
+                    /*   clean bitstream buffer.     2/5/2001   */
+                    buffer_size[0] = 0;
+                    if (video->initialized == PV_FALSE)
+                    {
+                        video->displayWidth = video->width = 0;
+                        video->displayHeight = video->height = 0;
+                    }
+                    return PV_FALSE;
+                }
+            }
+
+            if (use_ext_timestamp[0])
+            {
+                /* MTB for H263 is absolute TR */
+                /* following line is equivalent to  round((timestamp[0]*30)/1001);   11/13/2001 */
+                video->vol[0]->moduloTimeBase = 30 * ((timestamp[0] + 17) / 1001) + (30 * ((timestamp[0] + 17) % 1001) / 1001);
+                vopHeader[0]->timeStamp = timestamp[0];
+            }
+            else
+                vopHeader[0]->timeStamp = CalcVopDisplayTime(currVol, vopHeader[0], video->shortVideoHeader);
+        }
+        else
+        {
+            while (DecodeVOPHeader(video, vopHeader[0], FALSE) != PV_SUCCESS)
+            {
+                /* Try to find a VOP header in the buffer.   08/30/2000. */
+                if (PVSearchNextM4VFrame(stream) != PV_SUCCESS)
+                {
+                    /* There is no vop header in the buffer,    */
+                    /*   clean bitstream buffer.     2/5/2001   */
+                    buffer_size[0] = 0;
+                    return PV_FALSE;
+                }
+            }
+
+            if (use_ext_timestamp[0])
+            {
+                video->vol[0]->timeInc_offset = vopHeader[0]->timeInc;
+                video->vol[0]->moduloTimeBase = timestamp[0];  /*  11/12/2001 */
+                vopHeader[0]->timeStamp = timestamp[0];
+            }
+            else
+            {
+                vopHeader[0]->timeStamp = CalcVopDisplayTime(currVol, vopHeader[0], video->shortVideoHeader);
+            }
+        }
+
+        /* set up some base-layer only parameters */
+        vopHeader[0]->refSelectCode = 1;
+#ifdef PV_SUPPORT_TEMPORAL_SCALABILITY
+    }
+#endif
+    timestamp[target_layer] = video->currTimestamp = vopHeader[target_layer]->timeStamp;
+#ifdef PV_MEMORY_POOL
+    vopHeader[target_layer]->yChan = (PIXEL *)currYUV;
+    vopHeader[target_layer]->uChan = (PIXEL *)currYUV + decCtrl->size;
+    vopHeader[target_layer]->vChan = (PIXEL *)(vopHeader[target_layer]->uChan) + (decCtrl->size >> 2);
+#else
+    vopHeader[target_layer]->yChan = currVop->yChan;
+    vopHeader[target_layer]->uChan = currVop->uChan;
+    vopHeader[target_layer]->vChan = currVop->vChan;
+#endif
+    oscl_memcpy(currVop, vopHeader[target_layer], sizeof(Vop));
+
+#ifdef PV_SUPPORT_TEMPORAL_SCALABILITY
+    vopHeader[target_layer]->timeStamp = -1;
+#endif
+    /* put header info into the structure */
+    header_info->currLayer = target_layer;
+    header_info->timestamp = video->currTimestamp;
+    header_info->frameType = (MP4FrameType)currVop->predictionType;
+    header_info->refSelCode = vopHeader[target_layer]->refSelectCode;
+    header_info->quantizer = currVop->quantizer;
+    /***************************************/
+
+    return PV_TRUE;
+}
+
+
+/* ======================================================================== */
+/*  Function : PVDecodeVopBody()                                            */
+/*  Date     : 08/22/2002                                                   */
+/*  Purpose  : Decode vop body after the header is decoded, modified from   */
+/*              original PVDecodeVideoFrame.                                */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+Bool PVDecodeVopBody(VideoDecControls *decCtrl, int32 buffer_size[])
+{
+    PV_STATUS status = PV_FAIL;
+    VideoDecData *video = (VideoDecData *) decCtrl->videoDecoderData;
+    int target_layer = video->currLayer;
+    Vol *currVol = video->vol[target_layer];
+    Vop *currVop = video->currVop;
+    Vop *prevVop = video->prevVop;
+    Vop *tempVopPtr;
+    int bytes_consumed = 0; /* Record how many bits we used in the buffer.   04/24/2001 */
+
+    int idx;
+
+    if (currVop->vopCoded == 0)                  /*  07/03/2001 */
+    {
+        PV_BitstreamByteAlign(currVol->bitstream);
+        /* We should always clear up bitstream buffer.   10/10/2000 */
+        bytes_consumed = (getPointer(currVol->bitstream) + 7) >> 3;
+
+        if (bytes_consumed > currVol->bitstream->data_end_pos)
+        {
+            bytes_consumed = currVol->bitstream->data_end_pos;
+        }
+
+        if (bytes_consumed < buffer_size[target_layer])
+        {
+            /* If we only consume part of the bits in the buffer, take those */
+            /*  out.     04/24/2001 */
+            /*          oscl_memcpy(buffer[target_layer], buffer[target_layer]+bytes_consumed,
+                            (buffer_size[target_layer]-=bytes_consumed)); */
+            buffer_size[target_layer] -= bytes_consumed;
+        }
+        else
+        {
+            buffer_size[target_layer] = 0;
+        }
+#ifdef PV_MEMORY_POOL
+
+        if (target_layer)
+        {
+            if (video->prevEnhcVop->timeStamp > video->prevVop->timeStamp)
+            {
+                video->prevVop = video->prevEnhcVop;
+            }
+        }
+
+        oscl_memcpy(currVop->yChan, video->prevVop->yChan, (decCtrl->size*3) / 2);
+
+        video->prevVop = prevVop;
+
+        video->concealFrame = currVop->yChan;       /*  07/07/2001 */
+
+        video->vop_coding_type = currVop->predictionType; /*  07/09/01 */
+
+        decCtrl->outputFrame = currVop->yChan;
+
+        /* Swap VOP pointers.  No enhc. frame oscl_memcpy() anymore!   04/24/2001 */
+        if (target_layer)
+        {
+            tempVopPtr = video->prevEnhcVop;
+            video->prevEnhcVop = video->currVop;
+            video->currVop = tempVopPtr;
+        }
+        else
+        {
+            tempVopPtr = video->prevVop;
+            video->prevVop = video->currVop;
+            video->currVop = tempVopPtr;
+        }
+#else
+        if (target_layer)       /* this is necessary to avoid flashback problems   06/21/2002*/
+        {
+            video->prevEnhcVop->timeStamp = currVop->timeStamp;
+        }
+        else
+        {
+            video->prevVop->timeStamp = currVop->timeStamp;
+        }
+#endif
+        video->vop_coding_type = currVop->predictionType; /*  07/09/01 */
+        /* the following is necessary to avoid displaying an notCoded I-VOP at the beginning of a session
+        or after random positioning  07/03/02*/
+        if (currVop->predictionType == I_VOP)
+        {
+            video->vop_coding_type = P_VOP;
+        }
+
+
+        return PV_TRUE;
+    }
+    /* ======================================================= */
+    /*  Decode vop body (if there is no error in the header!)  */
+    /* ======================================================= */
+
+    /* first, we need to select a reference frame */
+    if (decCtrl->nLayers > 1)
+    {
+        if (currVop->predictionType == I_VOP)
+        {
+            /* do nothing here */
+        }
+        else if (currVop->predictionType == P_VOP)
+        {
+            switch (currVop->refSelectCode)
+            {
+                case 0 : /* most recently decoded enhancement vop */
+                    /* Setup video->prevVop before we call PV_DecodeVop().   04/24/2001 */
+                    if (video->prevEnhcVop->timeStamp >= video->prevVop->timeStamp)
+                        video->prevVop = video->prevEnhcVop;
+                    break;
+
+                case 1 : /* most recently displayed base-layer vop */
+                    if (target_layer)
+                    {
+                        if (video->prevEnhcVop->timeStamp > video->prevVop->timeStamp)
+                            video->prevVop = video->prevEnhcVop;
+                    }
+                    break;
+
+                case 2 : /* next base-layer vop in display order */
+                    break;
+
+                case 3 : /* temporally coincident base-layer vop (no MV's) */
+                    break;
+            }
+        }
+        else /* we have a B-Vop */
+        {
+            mp4dec_log("DecodeVideoFrame(): B-VOP not supported.\n");
+        }
+    }
+
+    /* This is for the calculation of the frame rate and bitrate. */
+    idx = ++video->frame_idx % BITRATE_AVERAGE_WINDOW;
+
+    /* Calculate bitrate for this layer.   08/23/2000 */
+    status = PV_DecodeVop(video);
+    video->nBitsPerVop[idx] = getPointer(currVol->bitstream);
+    video->prevTimestamp[idx] = currVop->timeStamp;
+
+    /* restore video->prevVop after PV_DecodeVop().   04/24/2001 */
+//  if (currVop->refSelectCode == 0) video->prevVop = prevVop;
+    video->prevVop = prevVop;
+
+    /* Estimate the frame rate.   08/23/2000 */
+    video->duration = video->prevTimestamp[idx];
+    video->duration -= video->prevTimestamp[(++idx)%BITRATE_AVERAGE_WINDOW];
+    if (video->duration > 0)
+    { /* Only update framerate when the timestamp is right */
+        video->frameRate = (int)(FRAMERATE_SCALE) / video->duration;
+    }
+
+    /* We should always clear up bitstream buffer.   10/10/2000 */
+    bytes_consumed = (getPointer(currVol->bitstream) + 7) >> 3; /*  11/4/03 */
+
+    if (bytes_consumed > currVol->bitstream->data_end_pos)
+    {
+        bytes_consumed = currVol->bitstream->data_end_pos;
+    }
+
+    if (bytes_consumed < buffer_size[target_layer])
+    {
+        /* If we only consume part of the bits in the buffer, take those */
+        /*  out.     04/24/2001 */
+        /*      oscl_memcpy(buffer[target_layer], buffer[target_layer]+bytes_consumed,
+                    (buffer_size[target_layer]-=bytes_consumed)); */
+        buffer_size[target_layer] -= bytes_consumed;
+    }
+    else
+    {
+        buffer_size[target_layer] = 0;
+    }
+    switch (status)
+    {
+        case PV_FAIL :
+            return PV_FALSE;        /* this will take care of concealment if we lose whole frame  */
+
+        case PV_END_OF_VOP :
+            /* we may want to differenciate PV_END_OF_VOP and PV_SUCCESS */
+            /*    in the future.     05/10/2000                      */
+
+        case PV_SUCCESS :
+            /* Nohting is wrong :). */
+
+
+            video->concealFrame = video->currVop->yChan;       /*  07/07/2001 */
+
+            video->vop_coding_type = video->currVop->predictionType; /*  07/09/01 */
+
+            decCtrl->outputFrame = video->currVop->yChan;
+
+            /* Swap VOP pointers.  No enhc. frame oscl_memcpy() anymore!   04/24/2001 */
+            if (target_layer)
+            {
+                tempVopPtr = video->prevEnhcVop;
+                video->prevEnhcVop = video->currVop;
+                video->currVop = tempVopPtr;
+            }
+            else
+            {
+                tempVopPtr = video->prevVop;
+                video->prevVop = video->currVop;
+                video->currVop = tempVopPtr;
+            }
+            break;
+
+        default :
+            /* This will never happen */
+            break;
+    }
+
+    return PV_TRUE;
+}
+
+#ifdef PV_MEMORY_POOL
+OSCL_EXPORT_REF void PVSetReferenceYUV(VideoDecControls *decCtrl, uint8 *YUV)
+{
+    VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData;
+    video->prevVop->yChan = (PIXEL *)YUV;
+    video->prevVop->uChan = (PIXEL *)YUV + video->size;
+    video->prevVop->vChan = (PIXEL *)video->prevVop->uChan + (decCtrl->size >> 2);
+    oscl_memset(video->prevVop->yChan, 16, sizeof(uint8)*decCtrl->size);     /*  10/31/01 */
+    oscl_memset(video->prevVop->uChan, 128, sizeof(uint8)*decCtrl->size / 2);
+    video->concealFrame = video->prevVop->yChan;               /*  07/07/2001 */
+    decCtrl->outputFrame = video->prevVop->yChan;              /*  06/19/2002 */
+}
+#endif
+
+
+/* ======================================================================== */
+/*  Function : VideoDecoderErrorDetected()                                  */
+/*  Date     : 06/20/2000                                                   */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : This function will be called everytime an error int the      */
+/*              bitstream is detected.                                      */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+uint VideoDecoderErrorDetected(VideoDecData *)
+{
+    /* This is only used for trapping bitstream error for debuging */
+    return 0;
+}
+
+#ifdef ENABLE_LOG
+#include <stdio.h>
+#include <stdarg.h>
+/* ======================================================================== */
+/*  Function : m4vdec_dprintf()                                             */
+/*  Date     : 08/15/2000                                                   */
+/*  Purpose  : This is a function that logs messages in the mpeg4 video     */
+/*             decoder.  We can call the standard PacketVideo PVMessage     */
+/*             from inside this function if necessary.                      */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Note     : To turn on the logging, LOG_MP4DEC_MESSAGE must be defined   */
+/*              when compiling this file (only this file).                  */
+/*  Modified :                                                              */
+/* ======================================================================== */
+void m4vdec_dprintf(char *format, ...)
+{
+    FILE *log_fp;
+    va_list args;
+    va_start(args, format);
+
+    /* open the log file */
+    log_fp = fopen("\\mp4dec_log.txt", "a+");
+    if (log_fp == NULL) return;
+    /* output the message */
+    vfprintf(log_fp, format, args);
+    fclose(log_fp);
+
+    va_end(args);
+}
+#endif
+
+
+/* ======================================================================== */
+/*  Function : IsIntraFrame()                                               */
+/*  Date     : 05/29/2000                                                   */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : The most recently decoded frame is an Intra frame.           */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+Bool IsIntraFrame(VideoDecControls *decCtrl)
+{
+    VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData;
+    return (video->vop_coding_type == I_VOP);
+}
+
+/* ======================================================================== */
+/*  Function : PVDecPostProcess()                                           */
+/*  Date     : 01/09/2002                                                   */
+/*  Purpose  : PostProcess one video frame and return a YUV-12 image.       */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+void PVDecPostProcess(VideoDecControls *decCtrl, uint8 *outputYUV)
+{
+    uint8 *outputBuffer;
+#ifdef PV_POSTPROC_ON
+    VideoDecData *video = (VideoDecData *) decCtrl->videoDecoderData;
+    int32 tmpvar;
+    if (outputYUV)
+    {
+        outputBuffer = outputYUV;
+    }
+    else
+    {
+        if (video->postFilterType)
+        {
+            outputBuffer = video->currVop->yChan;
+        }
+        else
+        {
+            outputBuffer = decCtrl->outputFrame;
+        }
+    }
+
+    if (video->postFilterType)
+    {
+        /* Post-processing,  */
+        PostFilter(video, video->postFilterType, outputBuffer);
+    }
+    else
+    {
+        if (outputYUV)
+        {
+            /* Copy decoded frame to the output buffer. */
+            tmpvar = (int32)video->width * video->height;
+            oscl_memcpy(outputBuffer, decCtrl->outputFrame, tmpvar*3 / 2);           /*  3/3/01 */
+        }
+    }
+#else
+    outputBuffer = decCtrl->outputFrame;
+    outputYUV;
+#endif
+    decCtrl->outputFrame = outputBuffer;
+    return;
+}
+
+
+/* ======================================================================== */
+/*  Function : PVDecSetReference(VideoDecControls *decCtrl, uint8 *refYUV,  */
+/*                              int32 timestamp)                            */
+/*  Date     : 07/22/2003                                                   */
+/*  Purpose  : Get YUV reference frame from external source.                */
+/*  In/out   : YUV 4-2-0 frame containing new reference frame in the same   */
+/*   : dimension as original, i.e., doesn't have to be multiple of 16 !!!.  */
+/*  Return   :                                                              */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+Bool PVDecSetReference(VideoDecControls *decCtrl, uint8 *refYUV, uint32 timestamp)
+{
+    VideoDecData *video = (VideoDecData *) decCtrl->videoDecoderData;
+    Vop *prevVop = video->prevVop;
+    int width = video->width;
+    uint8 *dstPtr, *orgPtr, *dstPtr2, *orgPtr2;
+    int32 size = (int32)width * video->height;
+
+
+    /* set new parameters */
+    prevVop->timeStamp = timestamp;
+    prevVop->predictionType = I_VOP;
+
+    dstPtr = prevVop->yChan;
+    orgPtr = refYUV;
+    oscl_memcpy(dstPtr, orgPtr, size);
+    dstPtr = prevVop->uChan;
+    dstPtr2 = prevVop->vChan;
+    orgPtr = refYUV + size;
+    orgPtr2 = orgPtr + (size >> 2);
+    oscl_memcpy(dstPtr, orgPtr, (size >> 2));
+    oscl_memcpy(dstPtr2, orgPtr2, (size >> 2));
+
+    video->concealFrame = video->prevVop->yChan;
+    video->vop_coding_type = I_VOP;
+    decCtrl->outputFrame = video->prevVop->yChan;
+
+    return PV_TRUE;
+}
+
+/* ======================================================================== */
+/*  Function : PVDecSetEnhReference(VideoDecControls *decCtrl, uint8 *refYUV,   */
+/*                              int32 timestamp)                            */
+/*  Date     : 07/23/2003                                                   */
+/*  Purpose  : Get YUV enhance reference frame from external source.        */
+/*  In/out   : YUV 4-2-0 frame containing new reference frame in the same   */
+/*   : dimension as original, i.e., doesn't have to be multiple of 16 !!!.  */
+/*  Return   :                                                              */
+/*  Note     :                                                              */
+/*  Modified :                                                              */
+/* ======================================================================== */
+Bool PVDecSetEnhReference(VideoDecControls *decCtrl, uint8 *refYUV, uint32 timestamp)
+{
+    VideoDecData *video = (VideoDecData *) decCtrl->videoDecoderData;
+    Vop *prevEnhcVop = video->prevEnhcVop;
+    uint8 *dstPtr, *orgPtr, *dstPtr2, *orgPtr2;
+    int32 size = (int32) video->width * video->height;
+
+    if (video->numberOfLayers <= 1)
+        return PV_FALSE;
+
+
+    /* set new parameters */
+    prevEnhcVop->timeStamp = timestamp;
+    prevEnhcVop->predictionType = I_VOP;
+
+    dstPtr = prevEnhcVop->yChan;
+    orgPtr = refYUV;
+    oscl_memcpy(dstPtr, orgPtr, size);
+    dstPtr = prevEnhcVop->uChan;
+    dstPtr2 = prevEnhcVop->vChan;
+    orgPtr = refYUV + size;
+    orgPtr2 = orgPtr + (size >> 2);
+    oscl_memcpy(dstPtr, orgPtr, (size >> 2));
+    oscl_memcpy(dstPtr2, orgPtr2, (size >> 2));
+    video->concealFrame = video->prevEnhcVop->yChan;
+    video->vop_coding_type = I_VOP;
+    decCtrl->outputFrame = video->prevEnhcVop->yChan;
+
+    return PV_TRUE;
+}
+
+
+/* ======================================================================== */
+/*  Function : PVGetVolInfo()                                               */
+/*  Date     : 08/06/2003                                                   */
+/*  Purpose  : Get the vol info(only base-layer).                           */
+/*  In/out   :                                                              */
+/*  Return   :                                                              */
+/*  Note     :                                                              */
+/*  Modified : 06/24/2004                                                   */
+/* ======================================================================== */
+Bool PVGetVolInfo(VideoDecControls *decCtrl, VolInfo *pVolInfo)
+{
+    Vol *currVol;
+
+    if (pVolInfo == NULL || decCtrl == NULL || decCtrl->videoDecoderData == NULL ||
+            ((VideoDecData *)decCtrl->videoDecoderData)->vol[0] == NULL) return PV_FALSE;
+
+    currVol = ((VideoDecData *)(decCtrl->videoDecoderData))->vol[0];
+
+    // get the VOL info
+    pVolInfo->shortVideoHeader = (int32)((VideoDecData *)(decCtrl->videoDecoderData))->shortVideoHeader;
+    pVolInfo->dataPartitioning = (int32)currVol->dataPartitioning;
+    pVolInfo->errorResDisable  = (int32)currVol->errorResDisable;
+    pVolInfo->useReverseVLC    = (int32)currVol->useReverseVLC;
+    pVolInfo->scalability      = (int32)currVol->scalability;
+    pVolInfo->nbitsTimeIncRes  = (int32)currVol->nbitsTimeIncRes;
+    pVolInfo->profile_level_id = (int32)currVol->profile_level_id;
+
+    return PV_TRUE;
+}
+
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/scaling.h b/media/libstagefright/codecs/m4v_h263/dec/src/scaling.h
new file mode 100644
index 0000000..26abbae
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/scaling.h
@@ -0,0 +1,52 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    extern const int32 scale[63];
+
+#define PV_GET_ROW(a,b) ((a) / (b))
+
+    /*----------------------------------------------------------------------------
+    ; SIMPLE TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; ENUMERATED TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; STRUCTURES TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; GLOBAL FUNCTION DEFINITIONS
+    ; Function Prototype declaration
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; END
+    ----------------------------------------------------------------------------*/
+#ifdef __cplusplus
+}
+#endif
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/scaling_tab.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/scaling_tab.cpp
new file mode 100644
index 0000000..a1f95aa
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/scaling_tab.cpp
@@ -0,0 +1,88 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+
+#include    "mp4dec_api.h"
+#include    "mp4def.h"
+#include    "scaling.h"
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+
+/* this scaling can be used for dividing values up to 3292             07/10/01 */
+const int32 scale[63] = {0, 262145, 131073, 87382, 65537, 52430, 43692, 37450, 32769, 29128,
+                         26215, 23832, 21846, 20166, 18726, 17477, 16385, 15421, 14565, 13798,
+                         13108, 12484, 11917, 11399, 10924, 10487, 10083, 9710, 9363, 9040,
+                         8739, 8457, 8193, 7945, 7711, 7491, 7283, 7086, 6900, 6723, 6555, 6395,
+                         6243, 6097, 5959, 5826, 5700, 5579, 5462, 5351, 5244, 5141, 5042, 4947, 4856,
+                         4767, 4682, 4600, 4521, 4444, 4370, 4298, 4229
+                        };
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; Define all local variables
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; Function body here
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; Return nothing or data or data pointer
+----------------------------------------------------------------------------*/
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/vlc_dec_tab.h b/media/libstagefright/codecs/m4v_h263/dec/src/vlc_dec_tab.h
new file mode 100644
index 0000000..404cc8b
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/vlc_dec_tab.h
@@ -0,0 +1,215 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+*     -------------------------------------------------------------------   *
+*                    MPEG-4 Simple Profile Video Decoder                    *
+*     -------------------------------------------------------------------   *
+*
+* This software module was originally developed by
+*
+*   Paulo Nunes (IST / ACTS-MoMuSyS)
+*
+* and edited by
+*
+*   Robert Danielsen (Telenor / ACTS-MoMuSyS)
+*
+* in the course of development of the MPEG-4 Video (ISO/IEC 14496-2) standard.
+* This software module is an implementation of a part of one or more MPEG-4
+* Video (ISO/IEC 14496-2) tools as specified by the MPEG-4 Video (ISO/IEC
+* 14496-2) standard.
+*
+* ISO/IEC gives users of the MPEG-4 Video (ISO/IEC 14496-2) standard free
+* license to this software module or modifications thereof for use in hardware
+* or software products claiming conformance to the MPEG-4 Video (ISO/IEC
+* 14496-2) standard.
+*
+* Those intending to use this software module in hardware or software products
+* are advised that its use may infringe existing patents. The original
+* developer of this software module and his/her company, the subsequent
+* editors and their companies, and ISO/IEC have no liability for use of this
+* software module or modifications thereof in an implementation. Copyright is
+* not released for non MPEG-4 Video (ISO/IEC 14496-2) Standard conforming
+* products.
+*
+* ACTS-MoMuSys partners retain full right to use the code for his/her own
+* purpose, assign or donate the code to a third party and to inhibit third
+* parties from using the code for non MPEG-4 Video (ISO/IEC 14496-2) Standard
+* conforming products. This copyright notice must be included in all copies or
+* derivative works.
+*
+* Copyright (c) 1996
+*
+*****************************************************************************
+***********************************************************HeaderBegin*******
+*
+* File: vlc_dec_tab.h
+*
+* Author:   Paulo Nunes (IST) - Paulo.Nunes@it.ist.utl.pt
+* Created:  1-Mar-96
+*
+* Description: This file contains the VLC tables for module which deals
+*       with VLC decoding.
+*
+* Notes:    This file was created based on tmndecode
+*       Written by Karl Olav Lillevold <kol@nta.no>,
+*       1995 Telenor R&D.
+*       Donated to the Momusys-project as background code by
+*       Telenor.
+*
+*       based on mpeg2decode, (C) 1994, MPEG Software Simulation Group
+*       and mpeg2play, (C) 1994 Stefan Eckart
+*                         <stefan@lis.e-technik.tu-muenchen.de>
+*
+*
+* Modified:  9-May-96 Paulo Nunes: Reformatted. New headers.
+*       14-May-96 Paulo Nunes: Changed TMNMVtabs according to VM2.1.
+*   04.11.96 Robert Danielsen: Added three new tables for coding
+*           of Intra luminance coefficients (VM 4.0)
+*      01.05.97 Luis Ducla-Soares: added VM7.0 Reversible VLC tables (RVLC).
+*      13.05.97 Minhua Zhou: added VlC tables for CBPYtab2 CBPYtab3,
+*   revised  CBPYtab
+*
+***********************************************************HeaderEnd*********
+
+This module is a header file for "vlc_decode.c".  The table data actually
+resides in "vlc_tab.c".
+
+
+------------------------------------------------------------------------------
+*/
+
+/*----------------------------------------------------------------------------
+; CONTINUE ONLY IF NOT ALREADY DEFINED
+----------------------------------------------------------------------------*/
+#ifndef vlc_dec_tab_H
+#define vlc_dec_tab_H
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "mp4def.h"
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here.
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; EXTERNAL VARIABLES REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    extern const VLCshorttab PV_TMNMVtab0[];
+
+    extern const VLCshorttab PV_TMNMVtab1[];
+
+    extern const VLCshorttab PV_TMNMVtab2[];
+
+    extern const VLCshorttab PV_MCBPCtab[];
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    extern const VLCshorttab PV_MCBPCtab1[];
+#endif
+    extern const VLCshorttab PV_MCBPCtabintra[];
+
+    /* Table for separate mode MCBPC, for coding DQUANT-flag and CBPC */
+
+    extern const VLCshorttab MCBPCtab_sep[32];
+
+    extern const VLCshorttab PV_CBPYtab[48];
+
+    extern const VLCshorttab CBPYtab2[16];
+
+    extern const VLCshorttab CBPYtab3[64];
+
+    extern const VLCtab2 PV_DCT3Dtab0[];
+
+
+    extern const VLCtab2 PV_DCT3Dtab1[];
+
+
+    extern const VLCtab2 PV_DCT3Dtab2[];
+
+    /* New tables for Intra luminance blocks */
+
+    extern const VLCtab2 PV_DCT3Dtab3[];
+
+    extern const VLCtab2 PV_DCT3Dtab4[];
+
+    extern const VLCtab2 PV_DCT3Dtab5[];
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    /* Annex I tables */
+    extern const VLCtab2 PV_DCT3Dtab6[];
+
+    extern const VLCtab2 PV_DCT3Dtab7[];
+
+    extern const VLCtab2 PV_DCT3Dtab8[];
+#endif
+    /* RVLC tables */
+    extern const int ptrRvlcTab[];
+
+    extern const VLCtab2 RvlcDCTtabIntra[];
+
+    extern const VLCtab2 RvlcDCTtabInter[];
+
+    /*----------------------------------------------------------------------------
+    ; SIMPLE TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+
+    /*----------------------------------------------------------------------------
+    ; ENUMERATED TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; STRUCTURES TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; GLOBAL FUNCTION DEFINITIONS
+    ; Function Prototype declaration
+    ----------------------------------------------------------------------------*/
+
+
+    /*----------------------------------------------------------------------------
+    ; END
+    ----------------------------------------------------------------------------*/
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+
+
+
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/vlc_decode.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/vlc_decode.cpp
new file mode 100644
index 0000000..f7192b1
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/vlc_decode.cpp
@@ -0,0 +1,1636 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+*     -------------------------------------------------------------------       *
+*                    MPEG-4 Simple Profile Video Decoder                        *
+*     -------------------------------------------------------------------       *
+*
+* This software module was originally developed by
+*
+*   Paulo Nunes (IST / ACTS-MoMuSyS)
+*   Robert Danielsen (Telenor / ACTS-MoMuSyS)
+*
+* in the course of development of the MPEG-4 Video (ISO/IEC 14496-2) standard.
+* This software module is an implementation of a part of one or more MPEG-4
+* Video (ISO/IEC 14496-2) tools as specified by the MPEG-4 Video (ISO/IEC
+* 14496-2) standard.
+*
+* ISO/IEC gives users of the MPEG-4 Video (ISO/IEC 14496-2) standard free
+* license to this software module or modifications thereof for use in hardware
+* or software products claiming conformance to the MPEG-4 Video (ISO/IEC
+* 14496-2) standard.
+*
+* Those intending to use this software module in hardware or software products
+* are advised that its use may infringe existing patents. The original
+* developer of this software module and his/her company, the subsequent
+* editors and their companies, and ISO/IEC have no liability for use of this
+* software module or modifications thereof in an implementation. Copyright is
+* not released for non MPEG-4 Video (ISO/IEC 14496-2) Standard conforming
+* products.
+*
+* ACTS-MoMuSys partners retain full right to use the code for his/her own
+* purpose, assign or donate the code to a third party and to inhibit third
+* parties from using the code for non MPEG-4 Video (ISO/IEC 14496-2) Standard
+* conforming products. This copyright notice must be included in all copies or
+* derivative works.
+*
+* Copyright (c) 1996
+*
+*****************************************************************************/
+
+/***********************************************************HeaderBegin*******
+*
+* File: vlc_dec.c
+*
+* Author:   Paulo Nunes (IST) - Paulo.Nunes@lx.it.pt
+* Created:  1-Mar-96
+*
+* Description: This file contains the VLC functions needed to decode a
+*       bitstream.
+*
+* Notes:
+*       The functions contained in this file were adapted from
+*       tmndecode
+*       Written by Karl Olav Lillevold <kol@nta.no>,
+*       1995 Telenor R&D.
+*       Donated to the Momusys-project as background code by
+*       Telenor.
+*
+*       based on mpeg2decode, (C) 1994, MPEG Software Simulation Group
+*       and mpeg2play, (C) 1994 Stefan Eckart
+*                   <stefan@lis.e-technik.tu-muenchen.de>
+*
+*
+* Modified: 9-May-96 Paulo Nunes: Reformatted. New headers.
+*              17-Jan-97 Jan De Lameillieure (HHI) : corrected in
+*              01.05.97 Luis Ducla-Soares: added RvlcDecTCOEF() to allow decoding
+*                                          of Reversible VLCs.
+*       09.03.98 Paulo Nunes: Cleaning.
+*
+***********************************************************HeaderEnd*********/
+
+#include "mp4dec_lib.h"
+#include "vlc_dec_tab.h"
+#include "vlc_decode.h"
+#include "bitstream.h"
+#include "max_level.h"
+
+
+/* ====================================================================== /
+    Function : DecodeUserData()
+    Date     : 04/10/2000
+    History  :
+    Modified : 04/16/2001 : removed status checking of PV_BitstreamFlushBits
+
+        This is simply a realization of the user_data() function
+        in the ISO/IEC 14496-2 manual.
+/ ====================================================================== */
+PV_STATUS DecodeUserData(BitstreamDecVideo *stream)
+{
+    PV_STATUS status;
+    uint32 code;
+
+    BitstreamReadBits32HC(stream);
+    BitstreamShowBits32(stream, 24, &code);
+
+    while (code != 1)
+    {
+        /* Discard user data for now.   04/05/2000 */
+        BitstreamReadBits16(stream, 8);
+        BitstreamShowBits32(stream, 24, &code);
+        status = BitstreamCheckEndBuffer(stream);
+        if (status == PV_END_OF_VOP) return status;    /*  03/19/2002 */
+    }
+    return PV_SUCCESS;
+}
+
+
+
+/***********************************************************CommentBegin******
+*
+*       3/10/00  : initial modification to the
+*                new PV-Decoder Lib format.
+*       3/29/00  : added return code check to some functions and
+*                optimize the code.
+*
+***********************************************************CommentEnd********/
+PV_STATUS PV_GetMBvectors(VideoDecData *video, uint mode)
+{
+    PV_STATUS status;
+    BitstreamDecVideo *stream = video->bitstream;
+    int  f_code_f = video->currVop->fcodeForward;
+    int  vlc_code_mag;
+
+
+    MOT *mot_x = video->motX;
+    MOT *mot_y = video->motY;
+
+    int k, offset;
+    int x_pos = video->mbnum_col;
+    int y_pos = video->mbnum_row;
+    int doubleWidth = video->nMBPerRow << 1;
+    int pos = (x_pos + y_pos * doubleWidth) << 1;
+    MOT mvx = 0, mvy = 0;
+
+
+    if (f_code_f == 1)
+    {
+#ifdef PV_ANNEX_IJKT_SUPPORT
+        if (mode == MODE_INTER4V || mode == MODE_INTER4V_Q)
+#else
+        if (mode == MODE_INTER4V)
+#endif
+        {
+            for (k = 0; k < 4; k++)
+            {
+                offset = (k & 1) + (k >> 1) * doubleWidth;
+                mv_prediction(video, k, &mvx, &mvy);
+                /* decode component x */
+                status = PV_VlcDecMV(stream, &vlc_code_mag);
+                if (status != PV_SUCCESS)
+                {
+                    return status;
+                }
+
+                mvx += (MOT)vlc_code_mag;
+                mvx = (MOT)(((mvx + 32) & 0x3F) - 32);
+
+
+                status = PV_VlcDecMV(stream, &vlc_code_mag);
+                if (status != PV_SUCCESS)
+                {
+                    return status;
+                }
+
+                mvy += (MOT)vlc_code_mag;
+                mvy = (MOT)(((mvy + 32) & 0x3F) - 32);
+
+                mot_x[pos+offset] = (MOT) mvx;
+                mot_y[pos+offset] = (MOT) mvy;
+            }
+        }
+        else
+        {
+            mv_prediction(video, 0, &mvx, &mvy);
+            /* For PVOPs, field  appears only in MODE_INTER & MODE_INTER_Q */
+            status = PV_VlcDecMV(stream, &vlc_code_mag);
+            if (status != PV_SUCCESS)
+            {
+                return status;
+            }
+
+            mvx += (MOT)vlc_code_mag;
+            mvx = (MOT)(((mvx + 32) & 0x3F) - 32);
+
+
+            status = PV_VlcDecMV(stream, &vlc_code_mag);
+            if (status != PV_SUCCESS)
+            {
+                return status;
+            }
+
+
+            mvy += (MOT)vlc_code_mag;
+            mvy = (MOT)(((mvy + 32) & 0x3F) - 32);
+
+
+            mot_x[pos] = mot_x[pos+1] = (MOT) mvx;
+            mot_y[pos] = mot_y[pos+1] = (MOT) mvy;
+            pos += doubleWidth;
+            mot_x[pos] = mot_x[pos+1] = (MOT) mvx;
+            mot_y[pos] = mot_y[pos+1] = (MOT) mvy;
+        }
+    }
+    else
+    {
+#ifdef PV_ANNEX_IJKT_SUPPORT
+        if (mode == MODE_INTER4V || mode == MODE_INTER4V_Q)
+#else
+        if (mode == MODE_INTER4V)
+#endif
+        {
+            for (k = 0; k < 4; k++)
+            {
+                offset = (k & 1) + (k >> 1) * doubleWidth;
+                mv_prediction(video, k, &mvx, &mvy);
+                status = PV_DecodeMBVec(stream, &mvx, &mvy, f_code_f);
+                mot_x[pos+offset] = (MOT) mvx;
+                mot_y[pos+offset] = (MOT) mvy;
+                if (status != PV_SUCCESS)
+                {
+                    return status;
+                }
+            }
+        }
+        else
+        {
+            mv_prediction(video, 0, &mvx, &mvy);
+            /* For PVOPs, field  appears only in MODE_INTER & MODE_INTER_Q */
+            status = PV_DecodeMBVec(stream, &mvx, &mvy, f_code_f);
+            mot_x[pos] = mot_x[pos+1] = (MOT) mvx;
+            mot_y[pos] = mot_y[pos+1] = (MOT) mvy;
+            pos += doubleWidth;
+            mot_x[pos] = mot_x[pos+1] = (MOT) mvx;
+            mot_y[pos] = mot_y[pos+1] = (MOT) mvy;
+            if (status != PV_SUCCESS)
+            {
+                return status;
+            }
+        }
+    }
+    return PV_SUCCESS;
+}
+
+
+/***********************************************************CommentBegin******
+*       3/10/00  : initial modification to the
+*                new PV-Decoder Lib format.
+*       3/29/00  : added return code check to some functions
+*       5/10/00  : check whether the decoded vector is legal.
+*       4/17/01  : use MOT type
+***********************************************************CommentEnd********/
+PV_STATUS PV_DecodeMBVec(BitstreamDecVideo *stream, MOT *mv_x, MOT *mv_y, int f_code_f)
+{
+    PV_STATUS status;
+    int  vlc_code_magx, vlc_code_magy;
+    int  residualx = 0, residualy = 0;
+
+    /* decode component x */
+    status = PV_VlcDecMV(stream, &vlc_code_magx);
+    if (status != PV_SUCCESS)
+    {
+        return status;
+    }
+
+    if (vlc_code_magx)
+    {
+        residualx = (int) BitstreamReadBits16_INLINE(stream, (int)(f_code_f - 1));
+    }
+
+
+    /* decode component y */
+    status = PV_VlcDecMV(stream, &vlc_code_magy);
+    if (status != PV_SUCCESS)
+    {
+        return status;
+    }
+
+    if (vlc_code_magy)
+    {
+        residualy = (int) BitstreamReadBits16_INLINE(stream, (int)(f_code_f - 1));
+    }
+
+
+    if (PV_DeScaleMVD(f_code_f, residualx, vlc_code_magx, mv_x) != PV_SUCCESS)
+    {
+        return PV_FAIL;
+    }
+
+    if (PV_DeScaleMVD(f_code_f, residualy, vlc_code_magy, mv_y) != PV_SUCCESS)
+    {
+        return PV_FAIL;
+    }
+
+    return PV_SUCCESS;
+}
+
+
+/***********************************************************CommentBegin******
+*       3/31/2000 : initial modification to the new PV-Decoder Lib format.
+*       5/10/2000 : check to see if the decoded vector falls within
+*                           the legal fcode range.
+*
+***********************************************************CommentEnd********/
+PV_STATUS PV_DeScaleMVD(
+    int  f_code,       /* <-- MV range in 1/2 units: 1=32,2=64,...,7=2048     */
+    int  residual,     /* <-- part of the MV Diff. FLC coded                  */
+    int  vlc_code_mag, /* <-- part of the MV Diff. VLC coded                  */
+    MOT  *vector       /* --> Obtained MV component in 1/2 units              */
+)
+{
+    int   half_range = (1 << (f_code + 4));
+    int   mask = (half_range << 1) - 1;
+    int   diff_vector;
+
+
+    if (vlc_code_mag == 0)
+    {
+        diff_vector = vlc_code_mag;
+    }
+    else
+    {
+        diff_vector = ((PV_ABS(vlc_code_mag) - 1) << (f_code - 1)) + residual + 1;
+        if (vlc_code_mag < 0)
+        {
+            diff_vector = -diff_vector;
+        }
+    }
+
+    *vector += (MOT)(diff_vector);
+
+    *vector = (MOT)((*vector + half_range) & mask) - half_range;
+
+    return PV_SUCCESS;
+}
+
+
+
+void mv_prediction(
+    VideoDecData *video,
+    int block,
+    MOT *mvx,
+    MOT *mvy
+)
+{
+    /*----------------------------------------------------------------------------
+    ; Define all local variables
+    ----------------------------------------------------------------------------*/
+    MOT *motxdata = video->motX;
+    MOT *motydata = video->motY;
+    int mbnum_col = video->mbnum_col;
+    int mbnum_row = video->mbnum_row;
+    uint8 *slice_nb = video->sliceNo;
+    int nMBPerRow = video->nMBPerRow;
+    int nMVPerRow = nMBPerRow << 1;
+    int mbnum = video->mbnum;
+    int p1x = 0, p2x = 0, p3x = 0;
+    int p1y = 0, p2y = 0, p3y = 0;
+    int rule1 = 0, rule2 = 0, rule3 = 0;
+    int     indx;
+
+    indx = ((mbnum_col << 1) + (block & 1)) + ((mbnum_row << 1)  + (block >> 1)) * nMVPerRow - 1; /* left block */
+
+    if (block & 1)           /* block 1, 3 */
+    {
+        p1x = motxdata[indx];
+        p1y = motydata[indx];
+        rule1 = 1;
+    }
+    else                    /* block 0, 2 */
+    {
+        if (mbnum_col > 0 && slice_nb[mbnum] == slice_nb[mbnum-1])
+        {
+            p1x = motxdata[indx];
+            p1y = motydata[indx];
+            rule1 = 1;
+        }
+    }
+
+    indx = indx + 1 - nMVPerRow; /* upper_block */
+    if (block >> 1)
+    {
+        indx -= (block & 1);
+        p2x = motxdata[indx];
+        p2y = motydata[indx];
+        p3x = motxdata[indx + 1];
+        p3y = motydata[indx + 1];
+        rule2 = rule3 = 1;
+    }
+    else
+    {                           /* block 0,1 */
+        if (mbnum_row)
+        {
+            if (slice_nb[mbnum] == slice_nb[mbnum-nMBPerRow])
+            {
+                p2x = motxdata[indx];
+                p2y = motydata[indx];
+                rule2 = 1;
+            }
+            if (mbnum_col < nMBPerRow - 1 && slice_nb[mbnum] == slice_nb[mbnum-nMBPerRow+1])
+            {
+                indx = indx + 2 - (block & 1);
+                p3x = motxdata[indx];
+                p3y = motydata[indx];
+                rule3 = 1;
+            }
+        }
+    }
+
+    if (rule1 + rule2 + rule3 > 1)
+    {
+        *mvx = (MOT)PV_MEDIAN(p1x, p2x, p3x);
+        *mvy = (MOT)PV_MEDIAN(p1y, p2y, p3y);
+    }
+    else if (rule1 + rule2 + rule3 == 1)
+    {
+        /* two of three are zero */
+        *mvx = (MOT)(p1x + p2x + p3x);
+        *mvy = (MOT)(p1y + p2y + p3y);
+    }
+    else
+    {
+        /* all MBs are outside the VOP */
+        *mvx = *mvy = 0;
+    }
+    /*----------------------------------------------------------------------------
+    ; Return nothing or data or data pointer
+    ----------------------------------------------------------------------------*/
+    return;
+}
+
+/***********************************************************CommentBegin******
+*
+*       3/30/2000 : initial modification to the new PV-Decoder Lib format.
+*       4/16/2001 : removed checking of status for PV_BitstreamFlushBits
+***********************************************************CommentEnd********/
+
+PV_STATUS PV_VlcDecMV(BitstreamDecVideo *stream, int *mv)
+{
+    PV_STATUS status = PV_SUCCESS;
+    uint code;
+
+    BitstreamShow13Bits(stream, &code);
+
+    if (code >> 12)
+    {
+        *mv = 0; /* Vector difference = 0 */
+        PV_BitstreamFlushBits(stream, 1);
+        return PV_SUCCESS;
+    }
+
+    if (code >= 512)
+    {
+        code = (code >> 8) - 2;
+        PV_BitstreamFlushBits(stream, PV_TMNMVtab0[code].len + 1);
+        *mv = PV_TMNMVtab0[code].val;
+        return status;
+    }
+
+    if (code >= 128)
+    {
+        code = (code >> 2) - 32;
+        PV_BitstreamFlushBits(stream, PV_TMNMVtab1[code].len + 1);
+        *mv = PV_TMNMVtab1[code].val;
+        return status;
+    }
+
+    if (code < 4)
+    {
+        *mv = -1;
+        return PV_FAIL;
+    }
+
+    code -= 4;
+
+    PV_BitstreamFlushBits(stream, PV_TMNMVtab2[code].len + 1);
+
+    *mv = PV_TMNMVtab2[code].val;
+    return status;
+}
+
+
+/***********************************************************CommentBegin******
+*       3/30/2000 : initial modification to the new PV-Decoder Lib
+*                           format and the change of error-handling method.
+*       4/16/01   : removed status checking of PV_BitstreamFlushBits
+***********************************************************CommentEnd********/
+
+int PV_VlcDecMCBPC_com_intra(BitstreamDecVideo *stream)
+{
+    uint code;
+
+    BitstreamShowBits16(stream, 9, &code);
+
+
+    if (code < 8)
+    {
+        return VLC_CODE_ERROR;
+    }
+
+    code >>= 3;
+
+    if (code >= 32)
+    {
+        PV_BitstreamFlushBits(stream, 1);
+        return 3;
+    }
+
+    PV_BitstreamFlushBits(stream, PV_MCBPCtabintra[code].len);
+
+    return PV_MCBPCtabintra[code].val;
+}
+
+
+/***********************************************************CommentBegin******
+*
+*       3/30/2000 : initial modification to the new PV-Decoder Lib
+*                           format and the change of error-handling method.
+*       4/16/2001 : removed checking of return status of PV_BitstreamFlushBits
+***********************************************************CommentEnd********/
+
+int PV_VlcDecMCBPC_com_inter(BitstreamDecVideo *stream)
+{
+    uint code;
+
+    BitstreamShowBits16(stream, 9, &code);
+
+    if (code == 0)
+    {
+        return VLC_CODE_ERROR;
+    }
+    else if (code >= 256)
+    {
+        PV_BitstreamFlushBits(stream, 1);
+        return 0;
+    }
+
+    PV_BitstreamFlushBits(stream, PV_MCBPCtab[code].len);
+    return PV_MCBPCtab[code].val;
+}
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+int PV_VlcDecMCBPC_com_inter_H263(BitstreamDecVideo *stream)
+{
+    uint code;
+
+    BitstreamShow13Bits(stream, &code);
+
+    if (code == 0)
+    {
+        return VLC_CODE_ERROR;
+    }
+    else if (code >= 4096)
+    {
+        PV_BitstreamFlushBits(stream, 1);
+        return 0;
+    }
+    if (code >= 16)
+    {
+        PV_BitstreamFlushBits(stream, PV_MCBPCtab[code >> 4].len);
+        return PV_MCBPCtab[code >> 4].val;
+    }
+    else
+    {
+        PV_BitstreamFlushBits(stream, PV_MCBPCtab1[code - 8].len);
+        return PV_MCBPCtab1[code - 8].val;
+    }
+}
+#endif
+/***********************************************************CommentBegin******
+*       3/30/2000 : initial modification to the new PV-Decoder Lib
+*                           format and the change of error-handling method.
+*       4/16/2001 : removed status checking for PV_BitstreamFlushBits
+***********************************************************CommentEnd********/
+
+int PV_VlcDecCBPY(BitstreamDecVideo *stream, int intra)
+{
+    int CBPY = 0;
+    uint code;
+
+    BitstreamShowBits16(stream, 6, &code);
+
+
+    if (code < 2)
+    {
+        return -1;
+    }
+    else if (code >= 48)
+    {
+        PV_BitstreamFlushBits(stream, 2);
+        CBPY = 15;
+    }
+    else
+    {
+        PV_BitstreamFlushBits(stream, PV_CBPYtab[code].len);
+        CBPY = PV_CBPYtab[code].val;
+    }
+
+    if (intra == 0) CBPY = 15 - CBPY;
+    CBPY = CBPY & 15;
+    return CBPY;
+}
+
+
+/***********************************************************CommentBegin******
+*       3/31/2000 : initial modification to the new PV-Decoder Lib format.
+*
+*       8/23/2000 : optimize the function by removing unnecessary BitstreamShowBits()
+*                       function calls.
+*
+*       9/6/2000 : change the API to check for end-of-buffer for proper
+*                           termination of decoding process.
+***********************************************************CommentEnd********/
+PV_STATUS PV_VlcDecIntraDCPredSize(BitstreamDecVideo *stream, int compnum, uint *DC_size)
+{
+    PV_STATUS status = PV_FAIL;      /*  07/09/01 */
+    uint  code;
+
+    *DC_size = 0;
+    if (compnum < 4)  /* luminance block */
+    {
+
+        BitstreamShowBits16(stream, 11, &code);
+
+        if (code == 1)
+        {
+            *DC_size = 12;
+            PV_BitstreamFlushBits(stream, 11);
+            return PV_SUCCESS;
+        }
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 11;
+            PV_BitstreamFlushBits(stream, 10);
+            return PV_SUCCESS;
+        }
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 10;
+            PV_BitstreamFlushBits(stream, 9);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 9;
+            PV_BitstreamFlushBits(stream, 8);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 8;
+            PV_BitstreamFlushBits(stream, 7);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 7;
+            PV_BitstreamFlushBits(stream, 6);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 6;
+            PV_BitstreamFlushBits(stream, 5);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 5;
+            PV_BitstreamFlushBits(stream, 4);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 4;
+            PV_BitstreamFlushBits(stream, 3);
+            return PV_SUCCESS;
+        }
+        else if (code == 2)
+        {
+            *DC_size = 3;
+            PV_BitstreamFlushBits(stream, 3);
+            return PV_SUCCESS;
+        }
+        else if (code == 3)
+        {
+            *DC_size = 0;
+            PV_BitstreamFlushBits(stream, 3);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 2)
+        {
+            *DC_size = 2;
+            PV_BitstreamFlushBits(stream, 2);
+            return PV_SUCCESS;
+        }
+        else if (code == 3)
+        {
+            *DC_size = 1;
+            PV_BitstreamFlushBits(stream, 2);
+            return PV_SUCCESS;
+        }
+    }
+    else /* chrominance block */
+    {
+
+        BitstreamShow13Bits(stream, &code);
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 12;
+            PV_BitstreamFlushBits(stream, 12);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 11;
+            PV_BitstreamFlushBits(stream, 11);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 10;
+            PV_BitstreamFlushBits(stream, 10);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 9;
+            PV_BitstreamFlushBits(stream, 9);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 8;
+            PV_BitstreamFlushBits(stream, 8);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 7;
+            PV_BitstreamFlushBits(stream, 7);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 6;
+            PV_BitstreamFlushBits(stream, 6);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 5;
+            PV_BitstreamFlushBits(stream, 5);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 4;
+            PV_BitstreamFlushBits(stream, 4);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        if (code == 1)
+        {
+            *DC_size = 3;
+            PV_BitstreamFlushBits(stream, 3);
+            return PV_SUCCESS;
+        }
+
+        code >>= 1;
+        {
+            *DC_size = (int)(3 - code);
+            PV_BitstreamFlushBits(stream, 2);
+            return PV_SUCCESS;
+        }
+    }
+
+    return status;
+}
+
+/***********************************************************CommentBegin******
+*
+*
+*       3/30/2000 : initial modification to the new PV-Decoder Lib
+*                           format and the change of error-handling method.
+*
+***********************************************************CommentEnd********/
+
+
+
+PV_STATUS VlcDecTCOEFIntra(BitstreamDecVideo *stream, Tcoef *pTcoef)
+{
+    uint code;
+    const VLCtab2 *tab;
+
+    BitstreamShow13Bits(stream, &code);
+
+    /* 10/17/2000, perform a little bit better on ARM by putting the whole function in VlcDecTCOEFFIntra */
+    /*  if(GetTcoeffIntra(code,pTcoef,&tab,stream)!=PV_SUCCESS) return status;*/
+    if (code >= 1024)
+    {
+        tab = &PV_DCT3Dtab3[(code >> 6) - 16];
+    }
+    else
+    {
+        if (code >= 256)
+        {
+            tab = &PV_DCT3Dtab4[(code >> 3) - 32];
+        }
+        else
+        {
+            if (code >= 16)
+            {
+                tab = &PV_DCT3Dtab5[(code>>1) - 8];
+            }
+            else
+            {
+                return PV_FAIL;
+            }
+        }
+    }
+
+    PV_BitstreamFlushBits(stream, tab->len + 1);
+    pTcoef->sign = (code >> (12 - tab->len)) & 1;
+    pTcoef->run = (uint) tab->run; //(tab->val >> 8) & 255;
+    pTcoef->level = (int) tab->level; //tab->val & 255;
+    pTcoef->last = (uint) tab->last; //(tab->val >> 16) & 1;
+
+
+    /* the following is modified for 3-mode escape -- boon */
+    if (tab->level != 0xFF)
+    {
+        return PV_SUCCESS;
+    }
+
+    //if (((tab->run<<8)|(tab->level)|(tab->last<<16)) == VLC_ESCAPE_CODE)
+
+    if (!pTcoef->sign)
+    {
+        /* first escape mode. level is offset */
+        BitstreamShow13Bits(stream, &code);
+
+        /* 10/17/2000, perform a little bit better on ARM by putting the whole function in VlcDecTCOEFFIntra */
+        /*          if(GetTcoeffIntra(code,pTcoef,&tab,stream)!=PV_SUCCESS) return status;*/
+        if (code >= 1024)
+        {
+            tab = &PV_DCT3Dtab3[(code >> 6) - 16];
+        }
+        else
+        {
+            if (code >= 256)
+            {
+                tab = &PV_DCT3Dtab4[(code >> 3) - 32];
+            }
+            else
+            {
+                if (code >= 16)
+                {
+                    tab = &PV_DCT3Dtab5[(code>>1) - 8];
+                }
+                else
+                {
+                    return PV_FAIL;
+                }
+            }
+        }
+
+        PV_BitstreamFlushBits(stream, tab->len + 1);
+
+        /* sign bit */
+        pTcoef->sign = (code >> (12 - tab->len)) & 1;
+        pTcoef->run = (uint)tab->run; //(tab->val >> 8) & 255;
+        pTcoef->level = (int)tab->level; //tab->val & 255;
+        pTcoef->last = (uint)tab->last; //(tab->val >> 16) & 1;
+
+
+        /* need to add back the max level */
+        if ((pTcoef->last == 0 && pTcoef->run > 14) || (pTcoef->last == 1 && pTcoef->run > 20))
+        {
+            return PV_FAIL;
+        }
+        pTcoef->level = pTcoef->level + intra_max_level[pTcoef->last][pTcoef->run];
+
+
+    }
+    else
+    {
+        uint run_offset;
+        run_offset = BitstreamRead1Bits_INLINE(stream);
+
+        if (!run_offset)
+        {
+            /* second escape mode. run is offset */
+            BitstreamShow13Bits(stream, &code);
+
+            /* 10/17/2000, perform a little bit better on ARM by putting the whole function in VlcDecTCOEFFIntra */
+            /*              if(GetTcoeffIntra(code,pTcoef,&tab,stream)!=PV_SUCCESS) return status;*/
+            if (code >= 1024)
+            {
+                tab = &PV_DCT3Dtab3[(code >> 6) - 16];
+            }
+            else
+            {
+                if (code >= 256)
+                {
+                    tab = &PV_DCT3Dtab4[(code >> 3) - 32];
+                }
+                else
+                {
+                    if (code >= 16)
+                    {
+                        tab = &PV_DCT3Dtab5[(code>>1) - 8];
+                    }
+                    else
+                    {
+                        return PV_FAIL;
+                    }
+                }
+            }
+
+            PV_BitstreamFlushBits(stream, tab->len + 1);
+            /* sign bit */
+            pTcoef->sign = (code >> (12 - tab->len)) & 1;
+            pTcoef->run = (uint)tab->run; //(tab->val >> 8) & 255;
+            pTcoef->level = (int)tab->level; //tab->val & 255;
+            pTcoef->last = (uint)tab->last; //(tab->val >> 16) & 1;
+
+
+
+            /* need to add back the max run */
+            if (pTcoef->last)
+            {
+                if (pTcoef->level > 8)
+                {
+                    return PV_FAIL;
+                }
+                pTcoef->run = pTcoef->run + intra_max_run1[pTcoef->level] + 1;
+            }
+            else
+            {
+                if (pTcoef->level > 27)
+                {
+                    return PV_FAIL;
+                }
+                pTcoef->run = pTcoef->run + intra_max_run0[pTcoef->level] + 1;
+            }
+
+
+        }
+        else
+        {
+
+            code = BitstreamReadBits16_INLINE(stream, 8);
+            pTcoef->last = code >> 7;
+            pTcoef->run = (code >> 1) & 0x3F;
+            pTcoef->level = (int)(BitstreamReadBits16_INLINE(stream, 13) >> 1);
+
+            if (pTcoef->level >= 2048)
+            {
+                pTcoef->sign = 1;
+                pTcoef->level = 4096 - pTcoef->level;
+            }
+            else
+            {
+                pTcoef->sign = 0;
+            }
+        } /* flc */
+    }
+
+    return PV_SUCCESS;
+
+} /* VlcDecTCOEFIntra */
+
+PV_STATUS VlcDecTCOEFInter(BitstreamDecVideo *stream, Tcoef *pTcoef)
+{
+    uint code;
+    const VLCtab2 *tab;
+
+    BitstreamShow13Bits(stream, &code);
+
+    /* 10/17/2000, perform a little bit better on ARM by putting the whole function in VlcDecTCOEFFInter */
+    /*  if(GetTcoeffInter(code,pTcoef,&tab,stream)!=PV_SUCCESS) return status;*/
+    if (code >= 1024)
+    {
+        tab = &PV_DCT3Dtab0[(code >> 6) - 16];
+    }
+    else
+    {
+        if (code >= 256)
+        {
+            tab = &PV_DCT3Dtab1[(code >> 3) - 32];
+        }
+        else
+        {
+            if (code >= 16)
+            {
+                tab = &PV_DCT3Dtab2[(code>>1) - 8];
+            }
+            else
+            {
+                return PV_FAIL;
+            }
+        }
+    }
+    PV_BitstreamFlushBits(stream, tab->len + 1);
+    pTcoef->sign = (code >> (12 - tab->len)) & 1;
+    pTcoef->run = (uint)tab->run;     //(tab->val >> 4) & 255;
+    pTcoef->level = (int)tab->level; //tab->val & 15;
+    pTcoef->last = (uint)tab->last;   //(tab->val >> 12) & 1;
+
+    /* the following is modified for 3-mode escape -- boon */
+    if (tab->run != 0xBF)
+    {
+        return PV_SUCCESS;
+    }
+    //if (((tab->run<<4)|(tab->level)|(tab->last<<12)) == VLC_ESCAPE_CODE)
+
+
+    if (!pTcoef->sign)
+    {
+        /* first escape mode. level is offset */
+        BitstreamShow13Bits(stream, &code);
+
+        /* 10/17/2000, perform a little bit better on ARM by putting the whole function in VlcDecTCOEFFInter */
+        /*          if(GetTcoeffInter(code,pTcoef,&tab,stream)!=PV_SUCCESS) return status;*/
+        if (code >= 1024)
+        {
+            tab = &PV_DCT3Dtab0[(code >> 6) - 16];
+        }
+        else
+        {
+            if (code >= 256)
+            {
+                tab = &PV_DCT3Dtab1[(code >> 3) - 32];
+            }
+            else
+            {
+                if (code >= 16)
+                {
+                    tab = &PV_DCT3Dtab2[(code>>1) - 8];
+                }
+                else
+                {
+                    return PV_FAIL;
+                }
+            }
+        }
+        PV_BitstreamFlushBits(stream, tab->len + 1);
+        pTcoef->sign = (code >> (12 - tab->len)) & 1;
+        pTcoef->run = (uint)tab->run;     //(tab->val >> 4) & 255;
+        pTcoef->level = (int)tab->level; //tab->val & 15;
+        pTcoef->last = (uint)tab->last;   //(tab->val >> 12) & 1;
+
+        /* need to add back the max level */
+        if ((pTcoef->last == 0 && pTcoef->run > 26) || (pTcoef->last == 1 && pTcoef->run > 40))
+        {
+            return PV_FAIL;
+        }
+        pTcoef->level = pTcoef->level + inter_max_level[pTcoef->last][pTcoef->run];
+    }
+    else
+    {
+        uint run_offset;
+        run_offset = BitstreamRead1Bits_INLINE(stream);
+
+        if (!run_offset)
+        {
+            /* second escape mode. run is offset */
+            BitstreamShow13Bits(stream, &code);
+
+            /* 10/17/2000, perform a little bit better on ARM by putting the whole function in VlcDecTCOEFFInter */
+            /*if(GetTcoeffInter(code,pTcoef,&tab,stream)!=PV_SUCCESS) return status;*/
+            if (code >= 1024)
+            {
+                tab = &PV_DCT3Dtab0[(code >> 6) - 16];
+            }
+            else
+            {
+                if (code >= 256)
+                {
+                    tab = &PV_DCT3Dtab1[(code >> 3) - 32];
+                }
+                else
+                {
+                    if (code >= 16)
+                    {
+                        tab = &PV_DCT3Dtab2[(code>>1) - 8];
+                    }
+                    else
+                    {
+                        return PV_FAIL;
+                    }
+                }
+            }
+            PV_BitstreamFlushBits(stream, tab->len + 1);
+            pTcoef->sign = (code >> (12 - tab->len)) & 1;
+            pTcoef->run = (uint)tab->run;     //(tab->val >> 4) & 255;
+            pTcoef->level = (int)tab->level; //tab->val & 15;
+            pTcoef->last = (uint)tab->last;   //(tab->val >> 12) & 1;
+
+            /* need to add back the max run */
+            if (pTcoef->last)
+            {
+                if (pTcoef->level > 3)
+                {
+                    return PV_FAIL;
+                }
+                pTcoef->run = pTcoef->run + inter_max_run1[pTcoef->level] + 1;
+            }
+            else
+            {
+                if (pTcoef->level > 12)
+                {
+                    return PV_FAIL;
+                }
+                pTcoef->run = pTcoef->run + inter_max_run0[pTcoef->level] + 1;
+            }
+        }
+        else
+        {
+
+            code = BitstreamReadBits16_INLINE(stream, 8);
+            pTcoef->last = code >> 7;
+            pTcoef->run = (code >> 1) & 0x3F;
+            pTcoef->level = (int)(BitstreamReadBits16_INLINE(stream, 13) >> 1);
+
+
+
+            if (pTcoef->level >= 2048)
+            {
+                pTcoef->sign = 1;
+                pTcoef->level = 4096 - pTcoef->level;
+            }
+            else
+            {
+                pTcoef->sign = 0;
+            }
+        } /* flc */
+    }
+
+    return PV_SUCCESS;
+
+} /* VlcDecTCOEFInter */
+
+/*=======================================================
+    Function:   VlcDecTCOEFShortHeader()
+    Date    :   04/27/99
+    Purpose :   New function used in decoding of video planes
+                with short header
+    Modified:   05/23/2000
+                for new decoder structure.
+=========================================================*/
+PV_STATUS VlcDecTCOEFShortHeader(BitstreamDecVideo *stream, Tcoef *pTcoef/*, int intra*/)
+{
+    uint code;
+    const VLCtab2 *tab;
+
+    BitstreamShow13Bits(stream, &code);
+
+    /*intra = 0;*/
+
+    if (code >= 1024) tab = &PV_DCT3Dtab0[(code >> 6) - 16];
+    else
+    {
+        if (code >= 256) tab = &PV_DCT3Dtab1[(code >> 3) - 32];
+        else
+        {
+            if (code >= 16) tab = &PV_DCT3Dtab2[(code>>1) - 8];
+            else return PV_FAIL;
+        }
+    }
+
+    PV_BitstreamFlushBits(stream, tab->len + 1);
+    pTcoef->sign = (code >> (12 - tab->len)) & 1;
+    pTcoef->run = (uint)tab->run;//(tab->val >> 4) & 255;
+    pTcoef->level = (int)tab->level;//tab->val & 15;
+    pTcoef->last = (uint)tab->last;//(tab->val >> 12) & 1;
+
+    /* the following is modified for 3-mode escape -- boon */
+    if (((tab->run << 4) | (tab->level) | (tab->last << 12)) != VLC_ESCAPE_CODE)    /* ESCAPE */
+    {
+        return PV_SUCCESS;
+    }
+
+
+    /* escape mode 4 - H.263 type */
+    pTcoef->last = pTcoef->sign; /* Last */
+    pTcoef->run = BitstreamReadBits16_INLINE(stream, 6); /* Run */
+    pTcoef->level = (int) BitstreamReadBits16_INLINE(stream, 8); /* Level */
+
+    if (pTcoef->level == 0 || pTcoef->level == 128)
+    {
+        return PV_FAIL;
+    }
+
+    if (pTcoef->level > 128)
+    {
+        pTcoef->sign = 1;
+        pTcoef->level = 256 - pTcoef->level;
+    }
+    else
+    {
+        pTcoef->sign = 0;
+    }
+
+
+
+    return PV_SUCCESS;
+
+}   /* VlcDecTCOEFShortHeader */
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+PV_STATUS VlcDecTCOEFShortHeader_AnnexI(BitstreamDecVideo *stream, Tcoef *pTcoef/*, int intra*/)
+{
+    uint code;
+    const VLCtab2 *tab;
+
+    BitstreamShow13Bits(stream, &code);
+
+    /*intra = 0;*/
+
+    if (code >= 1024) tab = &PV_DCT3Dtab6[(code >> 6) - 16];
+    else
+    {
+        if (code >= 256) tab = &PV_DCT3Dtab7[(code >> 3) - 32];
+        else
+        {
+            if (code >= 16) tab = &PV_DCT3Dtab8[(code>>1) - 8];
+            else return PV_FAIL;
+        }
+    }
+
+    PV_BitstreamFlushBits(stream, tab->len + 1);
+    pTcoef->sign = (code >> (12 - tab->len)) & 1;
+    pTcoef->run = (uint)tab->run;//(tab->val >> 4) & 255;
+    pTcoef->level = (int)tab->level;//tab->val & 15;
+    pTcoef->last = (uint)tab->last;//(tab->val >> 12) & 1;
+
+    /* the following is modified for 3-mode escape -- boon */
+    if (((tab->run << 6) | (tab->level) | (tab->last << 12)) != VLC_ESCAPE_CODE)    /* ESCAPE */
+    {
+        return PV_SUCCESS;
+    }
+    /* escape mode 4 - H.263 type */
+    pTcoef->last = pTcoef->sign; /* Last */
+    pTcoef->run = BitstreamReadBits16(stream, 6); /* Run */
+    pTcoef->level = (int) BitstreamReadBits16(stream, 8); /* Level */
+
+    if (pTcoef->level == 0 || pTcoef->level == 128)
+    {
+        return PV_FAIL;
+    }
+
+
+    if (pTcoef->level > 128)
+    {
+        pTcoef->sign = 1;
+        pTcoef->level = 256 - pTcoef->level;
+    }
+    else pTcoef->sign = 0;
+
+
+
+    return PV_SUCCESS;
+
+}   /* VlcDecTCOEFShortHeader_AnnexI */
+
+PV_STATUS VlcDecTCOEFShortHeader_AnnexT(BitstreamDecVideo *stream, Tcoef *pTcoef/*, int intra*/)
+{
+    uint code;
+    const VLCtab2 *tab;
+
+    BitstreamShow13Bits(stream, &code);
+
+    /*intra = 0;*/
+
+    if (code >= 1024) tab = &PV_DCT3Dtab0[(code >> 6) - 16];
+    else
+    {
+        if (code >= 256) tab = &PV_DCT3Dtab1[(code >> 3) - 32];
+        else
+        {
+            if (code >= 16) tab = &PV_DCT3Dtab2[(code>>1) - 8];
+            else return PV_FAIL;
+        }
+    }
+
+    PV_BitstreamFlushBits(stream, tab->len + 1);
+    pTcoef->sign = (code >> (12 - tab->len)) & 1;
+    pTcoef->run = (uint)tab->run;//(tab->val >> 4) & 255;
+    pTcoef->level = (int)tab->level;//tab->val & 15;
+    pTcoef->last = (uint)tab->last;//(tab->val >> 12) & 1;
+
+    /* the following is modified for 3-mode escape --  */
+    if (((tab->run << 4) | (tab->level) | (tab->last << 12)) != VLC_ESCAPE_CODE)    /* ESCAPE */
+    {
+        return PV_SUCCESS;
+    }
+    /* escape mode 4 - H.263 type */
+    pTcoef->last = pTcoef->sign; /* Last */
+    pTcoef->run = BitstreamReadBits16(stream, 6); /* Run */
+    pTcoef->level = (int) BitstreamReadBits16(stream, 8); /* Level */
+
+    if (pTcoef->level == 0)
+    {
+        return PV_FAIL;
+    }
+
+    if (pTcoef->level >= 128)
+    {
+        pTcoef->sign = 1;
+        pTcoef->level = 256 - pTcoef->level;
+    }
+    else
+    {
+        pTcoef->sign = 0;
+    }
+
+    if (pTcoef->level == 128)
+    {
+        code = BitstreamReadBits16(stream, 11);        /* ANNEX_T */
+
+        code = (code >> 6 & 0x1F) | (code << 5 & 0x7ff);
+        if (code > 1024)
+        {
+            pTcoef->sign = 1;
+            pTcoef->level = (2048 - code);
+        }
+        else
+        {
+            pTcoef->sign = 0;
+            pTcoef->level = code;
+        }
+    }
+
+    return PV_SUCCESS;
+
+}   /* VlcDecTCOEFShortHeader */
+
+
+PV_STATUS VlcDecTCOEFShortHeader_AnnexIT(BitstreamDecVideo *stream, Tcoef *pTcoef/*, int intra*/)
+{
+    uint code;
+    const VLCtab2 *tab;
+
+    BitstreamShow13Bits(stream, &code);
+
+    /*intra = 0;*/
+
+    if (code >= 1024) tab = &PV_DCT3Dtab6[(code >> 6) - 16];
+    else
+    {
+        if (code >= 256) tab = &PV_DCT3Dtab7[(code >> 3) - 32];
+        else
+        {
+            if (code >= 16) tab = &PV_DCT3Dtab8[(code>>1) - 8];
+            else return PV_FAIL;
+        }
+    }
+
+    PV_BitstreamFlushBits(stream, tab->len + 1);
+    pTcoef->sign = (code >> (12 - tab->len)) & 1;
+    pTcoef->run = (uint)tab->run;//(tab->val >> 4) & 255;
+    pTcoef->level = (int)tab->level;//tab->val & 15;
+    pTcoef->last = (uint)tab->last;//(tab->val >> 12) & 1;
+
+    /* the following is modified for 3-mode escape --  */
+    if (((tab->run << 6) | (tab->level) | (tab->last << 12)) != VLC_ESCAPE_CODE)    /* ESCAPE */
+    {
+        return PV_SUCCESS;
+    }
+    /* escape mode 4 - H.263 type */
+    pTcoef->last = pTcoef->sign; /* Last */
+    pTcoef->run = BitstreamReadBits16(stream, 6); /* Run */
+    pTcoef->level = (int) BitstreamReadBits16(stream, 8); /* Level */
+
+    if (pTcoef->level == 0)
+    {
+        return PV_FAIL;
+    }
+
+    if (pTcoef->level >= 128)
+    {
+        pTcoef->sign = 1;
+        pTcoef->level = 256 - pTcoef->level;
+    }
+    else
+    {
+        pTcoef->sign = 0;
+    }
+
+    if (pTcoef->level == 128)
+    {
+        code = BitstreamReadBits16(stream, 11);        /* ANNEX_T */
+
+        code = (code >> 6 & 0x1F) | (code << 5 & 0x7ff);
+        if (code > 1024)
+        {
+            pTcoef->sign = 1;
+            pTcoef->level = (2048 - code);
+        }
+        else
+        {
+            pTcoef->sign = 0;
+            pTcoef->level = code;
+        }
+    }
+
+
+    return PV_SUCCESS;
+
+}   /* VlcDecTCOEFShortHeader_AnnexI */
+#endif
+/***********************************************************CommentBegin******
+*       3/30/2000 : initial modification to the new PV-Decoder Lib
+*                           format and the change of error-handling method.
+*                           The coefficient is now returned thru a pre-
+*                           initialized parameters for speedup.
+*
+***********************************************************CommentEnd********/
+
+
+PV_STATUS RvlcDecTCOEFInter(BitstreamDecVideo *stream, Tcoef *pTcoef)
+{
+    uint code, mask;
+    const VLCtab2 *tab2;
+    int count, len, num[2] = {0, 0} /*  01/30/01 */;
+
+    mask = 0x4000;      /* mask  100000000000000   */
+    BitstreamShow15Bits(stream, &code);   /*  03/07/01 */
+
+    len = 1;
+
+    //  09/20/99 Escape mode
+    /// Bitstream Exchange
+    if (code < 2048)
+    {
+        PV_BitstreamFlushBits(stream, 5);
+        pTcoef->last = BitstreamRead1Bits_INLINE(stream);
+        pTcoef->run = BitstreamReadBits16_INLINE(stream, 6);
+        //  09/20/99 New marker bit
+        PV_BitstreamFlushBits(stream, 1);
+        //  09/20/99 The length for LEVEL used to be 7 in the old version
+        pTcoef->level = (int)(BitstreamReadBits16_INLINE(stream, 12) >> 1);
+        //  09/20/99 Another new marker bit
+//      PV_BitstreamFlushBitsCheck(stream, 1);
+        pTcoef->sign = BitstreamReadBits16_INLINE(stream, 5) & 0x1;  /* fix   3/13/01  */
+        return PV_SUCCESS;
+    }
+
+    if (code & mask)
+    {
+        count = 1;
+        while (mask && count > 0)       /* fix  3/28/01  */
+        {
+            mask = mask >> 1;
+            if (code & mask)
+                count--;
+            else
+                num[0]++; /* number of zeros in the middle */
+            len++;
+        }
+    }
+    else
+    {
+        count = 2;
+        while (mask && count > 0)           /* fix  3/28/01  */
+        {
+            mask = mask >> 1;
+            if (!(code & mask))
+                count--;
+            else
+                num[count-1]++; /* number of ones in the middle */
+            len++;
+        }
+    }
+
+    code = code & 0x7fff;
+    code = code >> (15 - (len + 1));
+
+    /*  1/30/01, add fast decoding algorithm here */
+    /* code is in two forms : 0xxxx0xxx00 or 0xxx0xxx01
+                         num[1] and num[0] x
+                        or  : 1xxxxx10 or 1xxxxx11
+                                num[0]  x      */
+
+    /* len+1 is the length of the above */
+
+    if (num[1] > 10 || num[0] > 11) /* invalid RVLC code */
+        return PV_FAIL;
+
+    if (code&(1 << len))
+        tab2 = RvlcDCTtabInter + 146 + (num[0] << 1) + (code & 1);
+    else
+        tab2 = RvlcDCTtabInter + ptrRvlcTab[num[1]] + (num[0] << 1) + (code & 1);
+
+    PV_BitstreamFlushBits(stream, (int) tab2->len);
+    pTcoef->run = (uint)tab2->run;//(tab->val >> 8) & 255;
+    pTcoef->level = (int)tab2->level;//tab->val & 255;
+    pTcoef->last = (uint)tab2->last;//(tab->val >> 16) & 1;
+
+    pTcoef->sign = BitstreamRead1Bits_INLINE(stream);
+    return PV_SUCCESS;
+}               /* RvlcDecTCOEFInter */
+
+PV_STATUS RvlcDecTCOEFIntra(BitstreamDecVideo *stream, Tcoef *pTcoef)
+{
+    uint code, mask;
+    const VLCtab2 *tab2;
+    int count, len, num[2] = {0, 0} /*  01/30/01 */;
+
+    mask = 0x4000;      /* mask  100000000000000   */
+    BitstreamShow15Bits(stream, &code);
+
+    len = 1;
+
+    //  09/20/99 Escape mode
+    /// Bitstream Exchange
+    if (code < 2048)
+    {
+        PV_BitstreamFlushBits(stream, 5);
+        pTcoef->last = BitstreamRead1Bits_INLINE(stream);
+        pTcoef->run = BitstreamReadBits16_INLINE(stream, 6);
+        //  09/20/99 New marker bit
+        PV_BitstreamFlushBits(stream, 1);
+        //  09/20/99 The length for LEVEL used to be 7 in the old version
+        pTcoef->level = (int)(BitstreamReadBits16_INLINE(stream, 12) >> 1);
+        //  09/20/99 Another new marker bit
+//      PV_BitstreamFlushBitsCheck(stream, 1);
+        pTcoef->sign = BitstreamReadBits16_INLINE(stream, 5) & 0x1; /* fix   03/13/01 */
+        return PV_SUCCESS;
+    }
+
+    if (code & mask)
+    {
+        count = 1;
+        while (mask && count > 0)                          /* fix  03/28/01 */
+        {
+            mask = mask >> 1;
+            if (code & mask)
+                count--;
+            else
+                num[0]++; /* number of zeros in the middle */
+            len++;
+        }
+    }
+    else
+    {
+        count = 2;
+        while (mask && count > 0)              /* fix  03/28/01 */
+        {
+            mask = mask >> 1;
+            if (!(code & mask))
+                count--;
+            else
+                num[count-1]++; /* number of ones in the middle */
+            len++;
+        }
+    }
+
+    code = code & 0x7fff;
+    code = code >> (15 - (len + 1));
+
+    /*  1/30/01, add fast decoding algorithm here */
+    /* code is in two forms : 0xxxx0xxx00 or 0xxx0xxx01
+                         num[1] and num[0] x
+                        or  : 1xxxxx10 or 1xxxxx11
+                                num[0]  x      */
+
+    /* len+1 is the length of the above */
+
+    if (num[1] > 10 || num[0] > 11) /* invalid RVLC code */
+        return PV_FAIL;
+
+    if (code & (1 << len))
+        tab2 = RvlcDCTtabIntra + 146 + (num[0] << 1) + (code & 1);
+    else
+        tab2 = RvlcDCTtabIntra + ptrRvlcTab[num[1]] + (num[0] << 1) + (code & 1);
+
+    PV_BitstreamFlushBits(stream, (int) tab2->len);
+    pTcoef->run = (uint)tab2->run;//(tab->val >> 8) & 255;
+    pTcoef->level = (int)tab2->level;//tab->val & 255;
+    pTcoef->last = (uint)tab2->last;//(tab->val >> 16) & 1;
+
+    pTcoef->sign = BitstreamRead1Bits_INLINE(stream);
+    return PV_SUCCESS;
+}               /* RvlcDecTCOEFIntra */
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/vlc_decode.h b/media/libstagefright/codecs/m4v_h263/dec/src/vlc_decode.h
new file mode 100644
index 0000000..a804606
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/vlc_decode.h
@@ -0,0 +1,122 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+/*
+-------------------------------------------------------------------
+                    MPEG-4 Simple Profile Video Decoder
+-------------------------------------------------------------------
+*
+* This software module was originally developed by
+*
+*   Paulo Nunes (IST / ACTS-MoMuSyS)
+*
+* in the course of development of the MPEG-4 Video (ISO/IEC 14496-2) standard.
+* This software module is an implementation of a part of one or more MPEG-4
+* Video (ISO/IEC 14496-2) tools as specified by the MPEG-4 Video (ISO/IEC
+* 14496-2) standard.
+*
+* ISO/IEC gives users of the MPEG-4 Video (ISO/IEC 14496-2) standard free
+* license to this software module or modifications thereof for use in hardware
+* or software products claiming conformance to the MPEG-4 Video (ISO/IEC
+* 14496-2) standard.
+*
+* Those intending to use this software module in hardware or software products
+* are advised that its use may infringe existing patents. The original
+* developer of this software module and his/her company, the subsequent
+* editors and their companies, and ISO/IEC have no liability for use of this
+* software module or modifications thereof in an implementation. Copyright is
+* not released for non MPEG-4 Video (ISO/IEC 14496-2) Standard conforming
+* products.
+*
+* ACTS-MoMuSys partners retain full right to use the code for his/her own
+* purpose, assign or donate the code to a third party and to inhibit third
+* parties from using the code for non MPEG-4 Video (ISO/IEC 14496-2) Standard
+* conforming products. This copyright notice must be included in all copies or
+* derivative works.
+*
+* Copyright (c) 1996
+*
+*****************************************************************************/
+
+/***********************************************************HeaderBegin*******
+*
+* File: vlc_dec.h
+*
+* Author:   Paulo Nunes (IST) - Paulo.Nunes@lx.it.pt
+* Created:
+*
+* Description: This is the header file for the "vlcdec" module.
+*
+* Notes:
+*
+* Modified: 9-May-96 Paulo Nunes: Reformatted. New headers.
+*
+* ================= PacketVideo Modification ================================
+*
+*       3/30/00  : initial modification to the
+*                new PV-Decoder Lib format.
+*
+***********************************************************CommentEnd********/
+
+
+#ifndef _VLCDECODE_H_
+#define _VLCDECODE_H_
+
+#include "mp4lib_int.h"
+
+#define VLC_ERROR_DETECTED(x) ((x) < 0)
+#define VLC_IO_ERROR    -1
+#define VLC_CODE_ERROR  -2
+#define VLC_MB_STUFFING -4
+#define VLC_NO_LAST_BIT -5
+
+#define VLC_ESCAPE_CODE  7167
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+    PV_STATUS DecodeUserData(BitstreamDecVideo *stream);
+    PV_STATUS PV_GetMBvectors(VideoDecData *, uint mode);
+    PV_STATUS PV_DecodeMBVec(BitstreamDecVideo *stream, MOT *mv_x, MOT *mv_y, int f_code_f);
+    PV_STATUS PV_DeScaleMVD(int f_code, int residual, int vlc_code_mag,  MOT *vector);
+
+    PV_STATUS PV_VlcDecMV(BitstreamDecVideo *stream, int *mv);
+    int PV_VlcDecMCBPC_com_intra(BitstreamDecVideo *stream);
+    int PV_VlcDecMCBPC_com_inter(BitstreamDecVideo *stream);
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    int PV_VlcDecMCBPC_com_inter_H263(BitstreamDecVideo *stream);
+    PV_STATUS VlcDecTCOEFShortHeader_AnnexI(BitstreamDecVideo *stream, Tcoef *pTcoef);
+    PV_STATUS VlcDecTCOEFShortHeader_AnnexT(BitstreamDecVideo *stream, Tcoef *pTcoef); /* ANNEX_T */
+    PV_STATUS VlcDecTCOEFShortHeader_AnnexIT(BitstreamDecVideo *stream, Tcoef *pTcoef);
+#endif
+    int PV_VlcDecCBPY(BitstreamDecVideo *stream, int intra);
+
+    PV_STATUS VlcDecTCOEFIntra(BitstreamDecVideo *stream, Tcoef *pTcoef);
+    PV_STATUS VlcDecTCOEFInter(BitstreamDecVideo *stream, Tcoef *pTcoef);
+    PV_STATUS VlcDecTCOEFShortHeader(BitstreamDecVideo *stream, Tcoef *pTcoef);
+    PV_STATUS RvlcDecTCOEFIntra(BitstreamDecVideo *stream, Tcoef *pTcoef);
+    PV_STATUS RvlcDecTCOEFInter(BitstreamDecVideo *stream, Tcoef *pTcoef);
+    PV_STATUS PV_VlcDecIntraDCPredSize(BitstreamDecVideo *stream, int compnum, uint *DC_size);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus  */
+
+#endif
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/vlc_dequant.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/vlc_dequant.cpp
new file mode 100644
index 0000000..db13a48
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/vlc_dequant.cpp
@@ -0,0 +1,1152 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "mp4dec_lib.h"
+#include "vlc_decode.h"
+#include "zigzag.h"
+
+
+typedef PV_STATUS(*VlcDecFuncP)(BitstreamDecVideo *stream, Tcoef *pTcoef);
+static const uint8 AC_rowcol[64] = {    0, 0, 0, 0, 0, 0, 0, 0,
+                                        0, 1, 1, 1, 1, 1, 1, 1,
+                                        0, 1, 1, 1, 1, 1, 1, 1,
+                                        0, 1, 1, 1, 1, 1, 1, 1,
+                                        0, 1, 1, 1, 1, 1, 1, 1,
+                                        0, 1, 1, 1, 1, 1, 1, 1,
+                                        0, 1, 1, 1, 1, 1, 1, 1,
+                                        0, 1, 1, 1, 1, 1, 1, 1,
+                                   };
+static const uint8 mask[8] = /*  for fast bitmap */
+    {128, 64, 32, 16, 8, 4, 2, 1};
+
+
+
+/***********************************************************CommentBegin******
+*
+* -- VlcDequantMpegBlock -- Decodes the DCT coefficients of one 8x8 block and perform
+            dequantization using Mpeg mode.
+    Date:       08/08/2000
+
+    Modified:      3/21/01
+                Added pre IDCT clipping, new ACDC prediction structure, ACDC prediction clipping,
+                16-bit int case, removed multiple zigzaging
+******************************************************************************/
+
+#ifdef PV_SUPPORT_MAIN_PROFILE
+int VlcDequantMpegIntraBlock(void *vid, int comp, int switched,
+                             uint8 *bitmapcol, uint8 *bitmaprow)
+{
+    VideoDecData *video = (VideoDecData*) vid;
+    Vol *currVol = video->vol[video->currLayer];
+    BitstreamDecVideo *stream = video->bitstream;
+    int16 *datablock = video->mblock->block[comp]; /* 10/20/2000, assume it has been reset of all-zero !!!*/
+    int mbnum = video->mbnum;
+    uint CBP = video->headerInfo.CBP[mbnum];
+    int QP = video->QPMB[mbnum];
+    typeDCStore *DC = video->predDC + mbnum;
+    int x_pos = video->mbnum_col;
+    typeDCACStore *DCAC_row = video->predDCAC_row + x_pos;
+    typeDCACStore *DCAC_col = video->predDCAC_col;
+    uint ACpred_flag = (uint) video->acPredFlag[mbnum];
+
+    /*** VLC *****/
+    int i, j, k;
+    Tcoef run_level;
+    int last, return_status;
+    VlcDecFuncP vlcDecCoeff;
+    int direction;
+    const int *inv_zigzag;
+    /*** Quantizer ****/
+    int dc_scaler;
+    int sum;
+    int *qmat;
+    int32 temp;
+
+    const int B_Xtab[6] = {0, 1, 0, 1, 2, 3};
+    const int B_Ytab[6] = {0, 0, 1, 1, 2, 3};
+
+    int16 *dcac_row, *dcac_col;
+
+    dcac_row = (*DCAC_row)[B_Xtab[comp]];
+    dcac_col = (*DCAC_col)[B_Ytab[comp]];
+
+
+    i = 1 - switched;
+
+#ifdef FAST_IDCT
+    *((uint32*)bitmapcol) = *((uint32*)(bitmapcol + 4)) = 0;
+    *bitmaprow = 0;
+#endif
+
+
+    /* select which Huffman table to be used */
+    vlcDecCoeff = video->vlcDecCoeffIntra;
+
+    dc_scaler = (comp < 4) ? video->mblock->DCScalarLum : video->mblock->DCScalarChr;
+
+    /* enter the zero run decoding loop */
+    sum = 0;
+    qmat = currVol->iqmat;
+
+    /* perform only VLC decoding */
+    /* We cannot do DCACrecon before VLC decoding.  10/17/2000 */
+    doDCACPrediction(video, comp, datablock, &direction);
+    if (!ACpred_flag) direction = 0;
+    inv_zigzag = zigzag_inv + (ACpred_flag << 6) + (direction << 6);
+    if (CBP & (1 << (5 - comp)))
+    {
+        do
+        {
+            return_status = (*vlcDecCoeff)(stream, &run_level);
+            if (return_status != PV_SUCCESS)
+            {
+                last = 1;/*  11/1/2000 let it slips undetected, just like
+                         in original version */
+                i = VLC_ERROR;
+                ACpred_flag = 0;    /* no of coefficients should not get reset   03/07/2002 */
+                break;
+            }
+
+            i += run_level.run;
+            last = run_level.last;
+            if (i >= 64)
+            {
+                /*  i = NCOEFF_BLOCK; */    /*  11/1/00 */
+                ACpred_flag = 0;    /* no of coefficients should not get reset   03/07/2002 */
+                i = VLC_NO_LAST_BIT;
+                last = 1;
+                break;
+            }
+
+            k = inv_zigzag[i];
+
+            if (run_level.sign == 1)
+            {
+                datablock[k] -= run_level.level;
+            }
+            else
+            {
+                datablock[k] += run_level.level;
+            }
+
+            if (AC_rowcol[k])
+            {
+                temp = (int32)datablock[k] * qmat[k] * QP;
+                temp = (temp + (0x7 & (temp >> 31))) >> 3;
+                if (temp > 2047) temp = 2047;
+                else if (temp < -2048) temp = -2048;
+                datablock[k] = (int) temp;
+
+#ifdef FAST_IDCT
+                bitmapcol[k&0x7] |= mask[k>>3];
+#endif
+                sum ^= temp;
+            }
+
+            i++;
+        }
+        while (!last);
+
+    }
+    else
+    {
+        i = 1;       /*  04/26/01  needed for switched case */
+    }
+    ///// NEED TO DEQUANT THOSE PREDICTED AC COEFF
+    /* dequantize the rest of AC predicted coeff that haven't been dequant */
+    if (ACpred_flag)
+    {
+
+        i = NCOEFF_BLOCK; /* otherwise, FAST IDCT won't work correctly,  10/18/2000 */
+
+        if (!direction) /* check vertical */
+        {
+            dcac_row[0]  = datablock[1];
+            dcac_row[1]  = datablock[2];
+            dcac_row[2]  = datablock[3];
+            dcac_row[3]  = datablock[4];
+            dcac_row[4]  = datablock[5];
+            dcac_row[5]  = datablock[6];
+            dcac_row[6]  = datablock[7];
+
+            for (j = 0, k = 8; k < 64; k += 8, j++)
+            {
+                if (dcac_col[j] = datablock[k])
+                {     /* ACDC clipping  03/26/01 */
+                    if (datablock[k] > 2047) dcac_col[j] = 2047;
+                    else if (datablock[k] < -2048) dcac_col[j] = -2048;
+
+                    temp = (int32)dcac_col[j] * qmat[k] * QP;
+                    temp = (temp + (0x7 & (temp >> 31))) >> 3;  /*  03/26/01*/
+                    if (temp > 2047) temp = 2047;
+                    else if (temp < -2048) temp = -2048;
+                    datablock[k] = (int)temp;
+                    sum ^= temp; /*  7/5/01 */
+#ifdef FAST_IDCT
+                    bitmapcol[0] |= mask[k>>3];
+#endif
+
+                }
+            }
+            for (k = 1; k < 8; k++)
+            {
+                if (datablock[k])
+                {
+                    temp = (int32)datablock[k] * qmat[k] * QP;
+                    temp = (temp + (0x7 & (temp >> 31))) >> 3;  /*  03/26/01*/
+                    if (temp > 2047) temp = 2047;
+                    else if (temp < -2048) temp = -2048;
+                    datablock[k] = (int)temp;
+                    sum ^= temp; /*  7/5/01 */
+#ifdef FAST_IDCT
+                    bitmapcol[k] |= 128;
+#endif
+
+                }
+            }
+
+        }
+        else
+        {
+
+            dcac_col[0]  = datablock[8];
+            dcac_col[1]  = datablock[16];
+            dcac_col[2]  = datablock[24];
+            dcac_col[3]  = datablock[32];
+            dcac_col[4]  = datablock[40];
+            dcac_col[5]  = datablock[48];
+            dcac_col[6]  = datablock[56];
+
+
+            for (j = 0, k = 1; k < 8; k++, j++)
+            {
+                if (dcac_row[j] = datablock[k])
+                {     /* ACDC clipping  03/26/01 */
+                    if (datablock[k] > 2047) dcac_row[j] = 2047;
+                    else if (datablock[k] < -2048) dcac_row[j] = -2048;
+
+                    temp = (int32)dcac_row[j] * qmat[k] * QP;
+                    temp = (temp + (0x7 & (temp >> 31))) >> 3;  /*  03/26/01 */
+                    if (temp > 2047) temp = 2047;
+                    else if (temp < -2048) temp = -2048;
+                    datablock[k] = (int)temp;
+                    sum ^= temp;
+#ifdef FAST_IDCT
+                    bitmapcol[k] |= 128;
+#endif
+
+                }
+            }
+
+            for (k = 8; k < 64; k += 8)
+            {
+                if (datablock[k])
+                {
+                    temp = (int32)datablock[k] * qmat[k] * QP;
+                    temp = (temp + (0x7 & (temp >> 31))) >> 3;  /*  03/26/01 */
+                    if (temp > 2047) temp = 2047;
+                    else if (temp < -2048) temp = -2048;
+                    datablock[k] = (int)temp;
+                    sum ^= temp;
+#ifdef FAST_IDCT
+                    bitmapcol[0] |= mask[k>>3];
+#endif
+                }
+            }
+
+        }
+    }
+    else
+    {
+
+        /* Store the qcoeff-values needed later for prediction */
+
+        dcac_row[0] = datablock[1];                /*  ACDC, no need for clipping */
+        dcac_row[1] = datablock[2];
+        dcac_row[2] = datablock[3];
+        dcac_row[3] = datablock[4];
+        dcac_row[4] = datablock[5];
+        dcac_row[5] = datablock[6];
+        dcac_row[6] = datablock[7];
+
+        dcac_col[0] = datablock[8];
+        dcac_col[1] = datablock[16];
+        dcac_col[2] = datablock[24];
+        dcac_col[3] = datablock[32];
+        dcac_col[4] = datablock[40];
+        dcac_col[5] = datablock[48];
+        dcac_col[6] = datablock[56];
+
+        for (k = 1; k < 8; k++)
+        {
+            if (datablock[k])
+            {
+                temp = (int32)datablock[k] * qmat[k] * QP;
+                temp = (temp + (0x7 & (temp >> 31))) >> 3;  /*  03/26/01*/
+                if (temp > 2047) temp = 2047;
+                else if (temp < -2048) temp = -2048;
+                datablock[k] = (int)temp;
+                sum ^= temp; /*  7/5/01 */
+#ifdef FAST_IDCT
+                bitmapcol[k] |= 128;
+#endif
+
+            }
+        }
+        for (k = 8; k < 64; k += 8)
+        {
+            if (datablock[k])
+            {
+                temp = (int32)datablock[k] * qmat[k] * QP;
+                temp = (temp + (0x7 & (temp >> 31))) >> 3;  /*  03/26/01 */
+                if (temp > 2047) temp = 2047;
+                else if (temp < -2048) temp = -2048;
+                datablock[k] = (int)temp;
+                sum ^= temp;
+#ifdef FAST_IDCT
+                bitmapcol[0] |= mask[k>>3];
+#endif
+            }
+        }
+
+    }
+
+
+
+    if (datablock[0])
+    {
+        temp = (int32)datablock[0] * dc_scaler;
+        if (temp > 2047) temp = 2047;            /*  03/14/01 */
+        else if (temp < -2048)  temp = -2048;
+        datablock[0] = (int)temp;
+        sum ^= temp;
+#ifdef FAST_IDCT
+        bitmapcol[0] |= 128;
+#endif
+    }
+
+    if ((sum & 1) == 0)
+    {
+        datablock[63] = datablock[63] ^ 0x1;
+#ifdef FAST_IDCT   /*  7/5/01, need to update bitmap */
+        if (datablock[63])
+            bitmapcol[7] |= 1;
+#endif
+        i = (-64 & i) | NCOEFF_BLOCK;   /*  if i > -1 then i is set to NCOEFF_BLOCK */
+    }
+
+
+#ifdef FAST_IDCT
+    if (i > 10)
+    {
+        for (k = 1; k < 4; k++)
+        {
+            if (bitmapcol[k] != 0)
+            {
+                (*bitmaprow) |= mask[k];
+            }
+        }
+    }
+#endif
+
+    /* Store the qcoeff-values needed later for prediction */
+    (*DC)[comp] = datablock[0];
+    return i;
+
+}
+
+
+/***********************************************************CommentBegin******
+*
+* -- VlcDequantMpegInterBlock -- Decodes the DCT coefficients of one 8x8 block and perform
+            dequantization using Mpeg mode for INTER block.
+    Date:       08/08/2000
+    Modified:              3/21/01
+                clean up, added clipping, 16-bit int case, new ACDC prediction
+******************************************************************************/
+
+
+int VlcDequantMpegInterBlock(void *vid, int comp,
+                             uint8 *bitmapcol, uint8 *bitmaprow)
+{
+    VideoDecData *video = (VideoDecData*) vid;
+    BitstreamDecVideo *stream = video->bitstream;
+    Vol *currVol = video->vol[video->currLayer];
+    int16 *datablock = video->mblock->block[comp]; /* 10/20/2000, assume it has been reset of all-zero !!!*/
+    int mbnum = video->mbnum;
+    int QP = video->QPMB[mbnum];
+    /*** VLC *****/
+    int i, k;
+    Tcoef run_level;
+    int last, return_status;
+    VlcDecFuncP vlcDecCoeff;
+
+    /*** Quantizer ****/
+    int sum;
+    int *qmat;
+
+    int32 temp;
+
+    i = 0 ;
+
+#ifdef FAST_IDCT
+    *((uint32*)bitmapcol) = *((uint32*)(bitmapcol + 4)) = 0;
+    *bitmaprow = 0;
+#endif
+
+    /* select which Huffman table to be used */
+    vlcDecCoeff = video->vlcDecCoeffInter;
+
+    /* enter the zero run decoding loop */
+    sum = 0;
+    qmat = currVol->niqmat;
+    do
+    {
+        return_status = (*vlcDecCoeff)(stream, &run_level);
+        if (return_status != PV_SUCCESS)
+        {
+            last = 1;/*  11/1/2000 let it slips undetected, just like
+                     in original version */
+            i = VLC_ERROR;
+            sum = 1;    /* no of coefficients should not get reset   03/07/2002 */
+            break;
+        }
+
+        i += run_level.run;
+        last = run_level.last;
+        if (i >= 64)
+        {
+            /*  i = NCOEFF_BLOCK; */    /*  11/1/00 */
+            //return VLC_NO_LAST_BIT;
+            i = VLC_NO_LAST_BIT;
+            last = 1;
+            sum = 1;    /* no of coefficients should not get reset   03/07/2002 */
+            break;
+        }
+
+        k = zigzag_inv[i];
+
+        if (run_level.sign == 1)
+        {
+            temp = (-(int32)(2 * run_level.level + 1) * qmat[k] * QP + 15) >> 4; /*  03/23/01 */
+            if (temp < -2048) temp = - 2048;
+        }
+        else
+        {
+            temp = ((int32)(2 * run_level.level + 1) * qmat[k] * QP) >> 4; /*  03/23/01 */
+            if (temp > 2047) temp = 2047;
+        }
+
+        datablock[k] = (int)temp;
+
+#ifdef FAST_IDCT
+        bitmapcol[k&0x7] |= mask[k>>3];
+#endif
+        sum ^= temp;
+
+        i++;
+    }
+    while (!last);
+
+    if ((sum & 1) == 0)
+    {
+        datablock[63] = datablock[63] ^ 0x1;
+#ifdef FAST_IDCT   /*  7/5/01, need to update bitmap */
+        if (datablock[63])
+            bitmapcol[7] |= 1;
+#endif
+        i = NCOEFF_BLOCK;
+    }
+
+
+#ifdef FAST_IDCT
+    if (i > 10)
+    {
+        for (k = 1; k < 4; k++)               /*  07/19/01 */
+        {
+            if (bitmapcol[k] != 0)
+            {
+                (*bitmaprow) |= mask[k];
+            }
+        }
+    }
+#endif
+
+    return i;
+}
+#endif
+/***********************************************************CommentBegin******
+*
+* -- VlcDequantIntraH263Block -- Decodes the DCT coefficients of one 8x8 block and perform
+            dequantization in H.263 mode for INTRA block.
+    Date:       08/08/2000
+    Modified:               3/21/01
+                clean up, added clipping, 16-bit int case, removed multiple zigzaging
+******************************************************************************/
+
+
+int VlcDequantH263IntraBlock(VideoDecData *video, int comp, int switched,
+                             uint8 *bitmapcol, uint8 *bitmaprow)
+{
+    BitstreamDecVideo *stream = video->bitstream;
+    int16 *datablock = video->mblock->block[comp]; /* 10/20/2000, assume it has been reset of all-zero !!!*/
+    int32 temp;
+    int mbnum = video->mbnum;
+    uint CBP = video->headerInfo.CBP[mbnum];
+    int QP = video->QPMB[mbnum];
+    typeDCStore *DC = video->predDC + mbnum;
+    int x_pos = video->mbnum_col;
+    typeDCACStore *DCAC_row = video->predDCAC_row + x_pos;
+    typeDCACStore *DCAC_col = video->predDCAC_col;
+    uint ACpred_flag = (uint) video->acPredFlag[mbnum];
+
+    /*** VLC *****/
+    int i, j, k;
+    Tcoef run_level;
+    int last, return_status;
+    VlcDecFuncP vlcDecCoeff;
+    int direction;
+    const int *inv_zigzag;
+
+    /*** Quantizer ****/
+    int dc_scaler;
+    int sgn_coeff;
+
+
+
+    const int B_Xtab[6] = {0, 1, 0, 1, 2, 3};
+    const int B_Ytab[6] = {0, 0, 1, 1, 2, 3};
+
+    int16 *dcac_row, *dcac_col;
+
+    dcac_row = (*DCAC_row)[B_Xtab[comp]];
+    dcac_col = (*DCAC_col)[B_Ytab[comp]];
+
+#ifdef FAST_IDCT
+    *((uint32*)bitmapcol) = *((uint32*)(bitmapcol + 4)) = 0;
+    *bitmaprow = 0;
+#endif
+    /* select which Huffman table to be used */
+    vlcDecCoeff = video->vlcDecCoeffIntra;
+
+    dc_scaler = (comp < 4) ? video->mblock->DCScalarLum : video->mblock->DCScalarChr;
+
+    /* perform only VLC decoding */
+    doDCACPrediction(video, comp, datablock, &direction);
+    if (!ACpred_flag) direction = 0;
+
+    inv_zigzag = zigzag_inv + (ACpred_flag << 6) + (direction << 6);  /*  04/17/01 */
+
+    i = 1;
+    if (CBP & (1 << (5 - comp)))
+    {
+        i = 1 - switched;
+        do
+        {
+            return_status = (*vlcDecCoeff)(stream, &run_level);
+            if (return_status != PV_SUCCESS)
+            {
+                last = 1;/* 11/1/2000 let it slips undetected, just like
+                         in original version */
+                i = VLC_ERROR;
+                ACpred_flag = 0;   /* no of coefficients should not get reset   03/07/2002 */
+                break;
+            }
+
+            i += run_level.run;
+            last = run_level.last;
+            if (i >= 64)
+            {
+                ACpred_flag = 0;    /* no of coefficients should not get reset   03/07/2002 */
+                i = VLC_NO_LAST_BIT;
+                last = 1;
+                break;
+            }
+
+            k = inv_zigzag[i];
+
+            if (run_level.sign == 1)
+            {
+                datablock[k] -= run_level.level;
+                sgn_coeff = -1;
+            }
+            else
+            {
+                datablock[k] += run_level.level;
+                sgn_coeff = 1;
+            }
+
+
+            if (AC_rowcol[k])   /*  10/25/2000 */
+            {
+                temp = (int32)QP * (2 * datablock[k] + sgn_coeff) - sgn_coeff + (QP & 1) * sgn_coeff;
+                if (temp > 2047) temp = 2047;            /*  03/14/01 */
+                else if (temp < -2048)  temp = -2048;
+                datablock[k] = (int16) temp;
+
+#ifdef FAST_IDCT
+                bitmapcol[k&0x7] |= mask[k>>3];
+#endif
+            }
+
+            i++;
+        }
+        while (!last);
+
+    }
+
+    ///// NEED TO DEQUANT THOSE PREDICTED AC COEFF
+    /* dequantize the rest of AC predicted coeff that haven't been dequant */
+    if (ACpred_flag)
+    {
+
+        i = NCOEFF_BLOCK; /* otherwise, FAST IDCT won't work correctly,  10/18/2000 */
+
+        if (!direction) /* check vertical */
+        {
+
+            dcac_row[0]  = datablock[1];
+            dcac_row[1]  = datablock[2];
+            dcac_row[2]  = datablock[3];
+            dcac_row[3]  = datablock[4];
+            dcac_row[4]  = datablock[5];
+            dcac_row[5]  = datablock[6];
+            dcac_row[6]  = datablock[7];
+
+            for (j = 0, k = 8; k < 64; k += 8, j++)
+            {
+                dcac_col[j] = datablock[k];
+                if (dcac_col[j])
+                {
+                    if (datablock[k] > 0)
+                    {
+                        if (datablock[k] > 2047) dcac_col[j] = 2047;
+                        sgn_coeff = 1;
+                    }
+                    else
+                    {
+                        if (datablock[k] < -2048) dcac_col[j] = -2048;
+                        sgn_coeff = -1;
+                    }
+                    temp = (int32)QP * (2 * datablock[k] + sgn_coeff) - sgn_coeff + (QP & 1) * sgn_coeff;
+                    if (temp > 2047) temp = 2047;            /*  03/14/01 */
+                    else if (temp < -2048)  temp = -2048;
+                    datablock[k] = (int16) temp;
+#ifdef FAST_IDCT
+                    bitmapcol[0] |= mask[k>>3];
+#endif
+
+                }
+            }
+
+            for (k = 1; k < 8; k++)
+            {
+                if (datablock[k])
+                {
+                    sgn_coeff = (datablock[k] > 0) ? 1 : -1;
+                    temp = (int32)QP * (2 * datablock[k] + sgn_coeff) - sgn_coeff + (QP & 1) * sgn_coeff;
+                    if (temp > 2047) temp = 2047;            /*  03/14/01 */
+                    else if (temp < -2048)  temp = -2048;
+                    datablock[k] = (int16) temp;
+#ifdef FAST_IDCT
+                    bitmapcol[k] |= 128;
+#endif
+
+                }
+            }
+        }
+        else
+        {
+
+            dcac_col[0]  = datablock[8];
+            dcac_col[1]  = datablock[16];
+            dcac_col[2]  = datablock[24];
+            dcac_col[3]  = datablock[32];
+            dcac_col[4]  = datablock[40];
+            dcac_col[5]  = datablock[48];
+            dcac_col[6]  = datablock[56];
+
+
+            for (j = 0, k = 1; k < 8; k++, j++)
+            {
+                dcac_row[j] = datablock[k];
+                if (dcac_row[j])
+                {
+                    if (datablock[k] > 0)
+                    {
+                        if (datablock[k] > 2047) dcac_row[j] = 2047;
+                        sgn_coeff = 1;
+                    }
+                    else
+                    {
+                        if (datablock[k] < -2048) dcac_row[j] = -2048;
+                        sgn_coeff = -1;
+                    }
+
+                    temp = (int32)QP * (2 * datablock[k] + sgn_coeff) - sgn_coeff + (QP & 1) * sgn_coeff;
+                    if (temp > 2047) temp = 2047;            /*  03/14/01 */
+                    else if (temp < -2048)  temp = -2048;
+                    datablock[k] = (int) temp;
+#ifdef FAST_IDCT
+                    bitmapcol[k] |= 128;
+#endif
+
+                }
+            }
+            for (k = 8; k < 64; k += 8)
+            {
+                if (datablock[k])
+                {
+                    sgn_coeff = (datablock[k] > 0) ? 1 : -1;
+                    temp = (int32)QP * (2 * datablock[k] + sgn_coeff) - sgn_coeff + (QP & 1) * sgn_coeff;
+                    if (temp > 2047) temp = 2047;            /*  03/14/01 */
+                    else if (temp < -2048)  temp = -2048;
+                    datablock[k] = (int16) temp;
+#ifdef FAST_IDCT
+                    bitmapcol[0] |= mask[k>>3];
+#endif
+                }
+            }
+
+        }
+    }
+    else
+    {
+        dcac_row[0]  = datablock[1];
+        dcac_row[1]  = datablock[2];
+        dcac_row[2]  = datablock[3];
+        dcac_row[3]  = datablock[4];
+        dcac_row[4]  = datablock[5];
+        dcac_row[5]  = datablock[6];
+        dcac_row[6]  = datablock[7];
+
+        dcac_col[0]  = datablock[8];
+        dcac_col[1]  = datablock[16];
+        dcac_col[2]  = datablock[24];
+        dcac_col[3]  = datablock[32];
+        dcac_col[4]  = datablock[40];
+        dcac_col[5]  = datablock[48];
+        dcac_col[6]  = datablock[56];
+
+        for (k = 1; k < 8; k++)
+        {
+            if (datablock[k])
+            {
+                sgn_coeff = (datablock[k] > 0) ? 1 : -1;
+                temp = (int32)QP * (2 * datablock[k] + sgn_coeff) - sgn_coeff + (QP & 1) * sgn_coeff;
+                if (temp > 2047) temp = 2047;            /*  03/14/01 */
+                else if (temp < -2048)  temp = -2048;
+                datablock[k] = (int16) temp;
+#ifdef FAST_IDCT
+                bitmapcol[k] |= 128;
+#endif
+            }
+        }
+        for (k = 8; k < 64; k += 8)
+        {
+            if (datablock[k])
+            {
+                sgn_coeff = (datablock[k] > 0) ? 1 : -1;
+                temp = (int32)QP * (2 * datablock[k] + sgn_coeff) - sgn_coeff + (QP & 1) * sgn_coeff;
+                if (temp > 2047) temp = 2047;            /*  03/14/01 */
+                else if (temp < -2048)  temp = -2048;
+                datablock[k] = (int16) temp;
+#ifdef FAST_IDCT
+                bitmapcol[0] |= mask[k>>3];
+#endif
+            }
+        }
+    }
+    if (datablock[0])
+    {
+#ifdef FAST_IDCT
+        bitmapcol[0] |= 128;
+#endif
+
+        temp = (int32)datablock[0] * dc_scaler;
+        if (temp > 2047) temp = 2047;            /*  03/14/01 */
+        else if (temp < -2048)  temp = -2048;
+        datablock[0] = (int16)temp;
+    }
+
+
+#ifdef FAST_IDCT
+    if (i > 10)
+    {
+        for (k = 1; k < 4; k++)  /* if i > 10 then k = 0 does not matter  */
+        {
+            if (bitmapcol[k] != 0)
+            {
+                (*bitmaprow) |= mask[k]; /* (1<<(7-i)); */
+            }
+        }
+    }
+#endif
+
+    /* Store the qcoeff-values needed later for prediction */
+    (*DC)[comp] = datablock[0];
+    return i;
+}
+
+int VlcDequantH263IntraBlock_SH(VideoDecData *video, int comp, uint8 *bitmapcol, uint8 *bitmaprow)
+{
+    BitstreamDecVideo *stream = video->bitstream;
+    int16 *datablock = video->mblock->block[comp]; /*, 10/20/2000, assume it has been reset of all-zero !!!*/
+    int32 temp;
+    int mbnum = video->mbnum;
+    uint CBP = video->headerInfo.CBP[mbnum];
+    int16 QP = video->QPMB[mbnum];
+    typeDCStore *DC = video->predDC + mbnum;
+    int x_pos = video->mbnum_col;
+    typeDCACStore *DCAC_row = video->predDCAC_row + x_pos;
+    typeDCACStore *DCAC_col = video->predDCAC_col;
+    uint ACpred_flag = (uint) video->acPredFlag[mbnum];
+
+    /*** VLC *****/
+    int i, k;
+    Tcoef run_level;
+    int last, return_status;
+    VlcDecFuncP vlcDecCoeff;
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    int direction;
+    const int *inv_zigzag;
+#endif
+    /*** Quantizer ****/
+
+
+
+    const int B_Xtab[6] = {0, 1, 0, 1, 2, 3};
+    const int B_Ytab[6] = {0, 0, 1, 1, 2, 3};
+
+    int16 *dcac_row, *dcac_col;
+
+    dcac_row = (*DCAC_row)[B_Xtab[comp]];
+    dcac_col = (*DCAC_col)[B_Ytab[comp]];
+    i = 1;
+
+#ifdef FAST_IDCT
+    *((uint32*)bitmapcol) = *((uint32*)(bitmapcol + 4)) = 0;
+    *bitmaprow = 0;
+#endif
+
+    /* select which Huffman table to be used */
+    vlcDecCoeff = video->vlcDecCoeffIntra;
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    if (comp > 3)        /* ANNEX_T */
+    {
+        QP = video->QP_CHR;
+    }
+    if (!video->advanced_INTRA)
+    {
+#endif
+
+        if ((CBP & (1 << (5 - comp))) == 0)
+        {
+#ifdef FAST_IDCT
+            bitmapcol[0] = 128;
+            bitmapcol[1] = bitmapcol[2] = bitmapcol[3] = bitmapcol[4] = bitmapcol[5] = bitmapcol[6] = bitmapcol[7] = 0;
+#endif
+            datablock[0] <<= 3;  /* no need to clip */
+            return 1;//ncoeffs;
+        }
+        else
+        {
+            /* enter the zero run decoding loop */
+            do
+            {
+                return_status = (*vlcDecCoeff)(stream, &run_level);
+                if (return_status != PV_SUCCESS)
+                {
+                    last = 1;/*  11/1/2000 let it slips undetected, just like
+                             in original version */
+                    i = VLC_ERROR;
+                    break;
+                }
+
+                i += run_level.run;
+                last = run_level.last;
+                if (i >= 64)
+                {
+                    /*  i = NCOEFF_BLOCK; */    /*  11/1/00 */
+                    i = VLC_NO_LAST_BIT;
+                    last = 1;
+                    break;
+                }
+                k = zigzag_inv[i];
+
+                if (run_level.sign == 0)
+                {
+                    temp = (int32)QP * (2 * run_level.level + 1) - 1 + (QP & 1);
+                    if (temp > 2047) temp = 2047;
+                }
+                else
+                {
+                    temp = -(int32)QP * (2 * run_level.level + 1) + 1 - (QP & 1);
+                    if (temp < -2048) temp = -2048;
+                }
+
+
+                datablock[k] = (int16) temp;
+
+#ifdef FAST_IDCT
+                bitmapcol[k&0x7] |= mask[k>>3];
+#endif
+                i++;
+            }
+            while (!last);
+
+        }
+        /* no ACDC prediction when ACDC disable  */
+        if (datablock[0])
+        {
+#ifdef FAST_IDCT
+            bitmapcol[0] |= 128;
+#endif
+            datablock[0] <<= 3;        /* no need to clip  09/18/2001 */
+        }
+#ifdef PV_ANNEX_IJKT_SUPPORT
+    }
+    else  /* advanced_INTRA mode */
+    {
+        i = 1;
+        doDCACPrediction_I(video, comp, datablock);
+        /* perform only VLC decoding */
+        if (!ACpred_flag)
+        {
+            direction = 0;
+        }
+        else
+        {
+            direction = video->mblock->direction;
+        }
+
+        inv_zigzag = zigzag_inv + (ACpred_flag << 6) + (direction << 6);  /*  04/17/01 */
+
+        if (CBP & (1 << (5 - comp)))
+        {
+            i = 0;
+            do
+            {
+                return_status = (*vlcDecCoeff)(stream, &run_level);
+                if (return_status != PV_SUCCESS)
+                {
+                    last = 1;/*  11/1/2000 let it slips undetected, just like
+                                 in original version */
+                    i = VLC_ERROR;
+                    ACpred_flag = 0;   /* no of coefficients should not get reset   03/07/2002 */
+                    break;
+                }
+
+                i += run_level.run;
+                last = run_level.last;
+                if (i >= 64)
+                {
+                    /*                  i = NCOEFF_BLOCK; */    /*  11/1/00 */
+                    ACpred_flag = 0;    /* no of coefficients should not get reset   03/07/2002 */
+                    i = VLC_NO_LAST_BIT;
+                    last = 1;
+                    break;
+                }
+
+                k = inv_zigzag[i];
+
+                if (run_level.sign == 0)
+                {
+                    datablock[k] += (int16)QP * 2 * run_level.level;
+                    if (datablock[k] > 2047) datablock[k] = 2047;
+                }
+                else
+                {
+                    datablock[k] -= (int16)QP * 2 * run_level.level;
+                    if (datablock[k] < -2048) datablock[k] = -2048;
+                }
+#ifdef FAST_IDCT
+                bitmapcol[k&0x7] |= mask[k>>3];
+#endif
+
+                i++;
+            }
+            while (!last);
+
+        }
+        ///// NEED TO DEQUANT THOSE PREDICTED AC COEFF
+        /* dequantize the rest of AC predicted coeff that haven't been dequant */
+
+        if (ACpred_flag)
+        {
+            i = NCOEFF_BLOCK;
+            for (k = 1; k < 8; k++)
+            {
+                if (datablock[k])
+                {
+                    bitmapcol[k] |= 128;
+                }
+
+                if (datablock[k<<3])
+                {
+                    bitmapcol[0] |= mask[k];
+                }
+            }
+        }
+
+        dcac_row[0]  = datablock[1];
+        dcac_row[1]  = datablock[2];
+        dcac_row[2]  = datablock[3];
+        dcac_row[3]  = datablock[4];
+        dcac_row[4]  = datablock[5];
+        dcac_row[5]  = datablock[6];
+        dcac_row[6]  = datablock[7];
+
+        dcac_col[0]  = datablock[8];
+        dcac_col[1]  = datablock[16];
+        dcac_col[2]  = datablock[24];
+        dcac_col[3]  = datablock[32];
+        dcac_col[4]  = datablock[40];
+        dcac_col[5]  = datablock[48];
+        dcac_col[6]  = datablock[56];
+
+        if (datablock[0])
+        {
+#ifdef FAST_IDCT
+            bitmapcol[0] |= 128;
+#endif
+
+            datablock[0] |= 1;
+            if (datablock[0] < 0)
+            {
+                datablock[0] = 0;
+            }
+        }
+    }
+#endif
+
+#ifdef FAST_IDCT
+    if (i > 10)
+    {
+        for (k = 1; k < 4; k++)  /* if i > 10 then k = 0 does not matter  */
+        {
+            if (bitmapcol[k] != 0)
+            {
+                (*bitmaprow) |= mask[k]; /* (1<<(7-i)); */
+            }
+        }
+    }
+#endif
+
+    /* Store the qcoeff-values needed later for prediction */
+    (*DC)[comp] = datablock[0];
+    return i;
+}
+
+/***********************************************************CommentBegin******
+*
+* -- VlcDequantInterH263Block -- Decodes the DCT coefficients of one 8x8 block and perform
+            dequantization in H.263 mode for INTER block.
+    Date:       08/08/2000
+    Modified:             3/21/01
+                clean up, added clipping, 16-bit int case
+******************************************************************************/
+
+
+int VlcDequantH263InterBlock(VideoDecData *video, int comp,
+                             uint8 *bitmapcol, uint8 *bitmaprow)
+{
+    BitstreamDecVideo *stream = video->bitstream;
+    int16 *datablock = video->mblock->block[comp]; /* 10/20/2000, assume it has been reset of all-zero !!!*/
+    int32 temp;
+    int mbnum = video->mbnum;
+    int QP = video->QPMB[mbnum];
+
+    /*** VLC *****/
+    int i, k;
+    Tcoef run_level;
+    int last, return_status;
+    VlcDecFuncP vlcDecCoeff;
+
+    /*** Quantizer ****/
+
+
+    i = 0;
+
+#ifdef FAST_IDCT
+    *((uint32*)bitmapcol) = *((uint32*)(bitmapcol + 4)) = 0;
+    *bitmaprow = 0;
+#endif
+
+    /* select which Huffman table to be used */
+    vlcDecCoeff = video->vlcDecCoeffInter;
+
+    /* enter the zero run decoding loop */
+    do
+    {
+        return_status = (*vlcDecCoeff)(stream, &run_level);
+        if (return_status != PV_SUCCESS)
+        {
+
+
+            last = 1;/*  11/1/2000 let it slips undetected, just like
+                     in original version */
+            i = -1;
+            break;
+        }
+
+        i += run_level.run;
+        last = run_level.last;
+        if (i >= 64)
+        {
+            i = -1;
+            last = 1;
+            break;
+        }
+
+        if (run_level.sign == 0)
+        {
+            temp = (int32)QP * (2 * run_level.level + 1) - 1 + (QP & 1);
+            if (temp > 2047) temp = 2047;
+
+        }
+        else
+        {
+            temp = -(int32)QP * (2 * run_level.level + 1) + 1 - (QP & 1);
+            if (temp < -2048) temp = -2048;
+        }
+
+        k = zigzag_inv[i];
+        datablock[k] = (int16)temp;
+#ifdef FAST_IDCT
+        bitmapcol[k&0x7] |= mask[k>>3];
+#endif
+        i++;
+    }
+    while (!last);
+
+#ifdef FAST_IDCT
+    if (i > 10)         /*  07/19/01 */
+    {
+        for (k = 1; k < 4; k++)       /*  if (i > 10 ) k = 0 does not matter */
+        {
+            if (bitmapcol[k] != 0)
+            {
+                (*bitmaprow) |= mask[k]; /* (1<<(7-i)); */
+            }
+        }
+    }
+#endif
+    return i;
+}
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/vlc_tab.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/vlc_tab.cpp
new file mode 100644
index 0000000..704992f
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/vlc_tab.cpp
@@ -0,0 +1,835 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include    "mp4dec_api.h"
+#include    "mp4def.h"
+#include    "mp4lib_int.h"
+#include    "vlc_dec_tab.h"
+#include    "max_level.h"
+
+
+const int intra_max_level[2][NCOEFF_BLOCK] =
+{
+    {27, 10,  5,  4,  3,  3,  3,  3,
+        2,  2,  1,  1,  1,  1,  1,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,
+    },
+
+    {8,  3,  2,  2,  2,  2,  2,  1,
+     1,  1,  1,  1,  1,  1,  1,  1,
+     1,  1,  1,  1,  1,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0
+    }
+};
+
+
+const int inter_max_level[2][NCOEFF_BLOCK] =
+{
+    {12,  6,  4,  3,  3,  3,  3,  2,
+        2,  2,  2,  1,  1,  1,  1,  1,
+        1,  1,  1,  1,  1,  1,  1,  1,
+        1,  1,  1,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0},
+
+    {3,  2,  1,  1,  1,  1,  1,  1,
+     1,  1,  1,  1,  1,  1,  1,  1,
+     1,  1,  1,  1,  1,  1,  1,  1,
+     1,  1,  1,  1,  1,  1,  1,  1,
+     1,  1,  1,  1,  1,  1,  1,  1,
+     1,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0}
+};
+
+
+const int intra_max_run0[28] = { 999, 14,  9,  7,  3,  2,  1,
+                                 1,  1,  1,  1,  0,  0,  0,
+                                 0,  0,  0,  0,  0,  0,  0,
+                                 0,  0,  0,  0,  0,  0,  0
+                               };
+
+
+const int intra_max_run1[9] = { 999, 20,  6,
+                                1,  0,  0,
+                                0,  0,  0
+                              };
+
+const int inter_max_run0[13] = { 999,
+                                 26, 10,  6,  2,  1,  1,
+                                 0,  0,  0,  0,  0,  0
+                               };
+
+
+const int inter_max_run1[4] = { 999, 40,  1,  0 };
+
+const VLCshorttab PV_TMNMVtab0[] =
+{
+    {3, 4}, { -3, 4}, {2, 3}, {2, 3}, { -2, 3}, { -2, 3}, {1, 2}, {1, 2}, {1, 2}, {1, 2},
+    { -1, 2}, { -1, 2}, { -1, 2}, { -1, 2}
+};
+
+const VLCshorttab PV_TMNMVtab1[] =
+{
+    {12, 10}, { -12, 10}, {11, 10}, { -11, 10}, {10, 9}, {10, 9}, { -10, 9}, { -10, 9},
+    {9, 9}, {9, 9}, { -9, 9}, { -9, 9}, {8, 9}, {8, 9}, { -8, 9}, { -8, 9}, {7, 7}, {7, 7},
+    {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, { -7, 7}, { -7, 7}, { -7, 7}, { -7, 7},
+    { -7, 7}, { -7, 7}, { -7, 7}, { -7, 7}, {6, 7}, {6, 7}, {6, 7}, {6, 7}, {6, 7}, {6, 7},
+    {6, 7}, {6, 7}, { -6, 7}, { -6, 7}, { -6, 7}, { -6, 7}, { -6, 7}, { -6, 7}, { -6, 7},
+    { -6, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, { -5, 7},
+    { -5, 7}, { -5, 7}, { -5, 7}, { -5, 7}, { -5, 7}, { -5, 7}, { -5, 7}, {4, 6}, {4, 6}, {4, 6},
+    {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6},
+    {4, 6}, {4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6},
+    { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}
+};
+
+const VLCshorttab PV_TMNMVtab2[] =
+{
+    {32, 12}, { -32, 12}, {31, 12}, { -31, 12}, {30, 11}, {30, 11}, { -30, 11}, { -30, 11},
+    {29, 11}, {29, 11}, { -29, 11}, { -29, 11}, {28, 11}, {28, 11}, { -28, 11}, { -28, 11},
+    {27, 11}, {27, 11}, { -27, 11}, { -27, 11}, {26, 11}, {26, 11}, { -26, 11}, { -26, 11},
+    {25, 11}, {25, 11}, { -25, 11}, { -25, 11}, {24, 10}, {24, 10}, {24, 10}, {24, 10},
+    { -24, 10}, { -24, 10}, { -24, 10}, { -24, 10}, {23, 10}, {23, 10}, {23, 10}, {23, 10},
+    { -23, 10}, { -23, 10}, { -23, 10}, { -23, 10}, {22, 10}, {22, 10}, {22, 10}, {22, 10},
+    { -22, 10}, { -22, 10}, { -22, 10}, { -22, 10}, {21, 10}, {21, 10}, {21, 10}, {21, 10},
+    { -21, 10}, { -21, 10}, { -21, 10}, { -21, 10}, {20, 10}, {20, 10}, {20, 10}, {20, 10},
+    { -20, 10}, { -20, 10}, { -20, 10}, { -20, 10}, {19, 10}, {19, 10}, {19, 10}, {19, 10},
+    { -19, 10}, { -19, 10}, { -19, 10}, { -19, 10}, {18, 10}, {18, 10}, {18, 10}, {18, 10},
+    { -18, 10}, { -18, 10}, { -18, 10}, { -18, 10}, {17, 10}, {17, 10}, {17, 10}, {17, 10},
+    { -17, 10}, { -17, 10}, { -17, 10}, { -17, 10}, {16, 10}, {16, 10}, {16, 10}, {16, 10},
+    { -16, 10}, { -16, 10}, { -16, 10}, { -16, 10}, {15, 10}, {15, 10}, {15, 10}, {15, 10},
+    { -15, 10}, { -15, 10}, { -15, 10}, { -15, 10}, {14, 10}, {14, 10}, {14, 10}, {14, 10},
+    { -14, 10}, { -14, 10}, { -14, 10}, { -14, 10}, {13, 10}, {13, 10}, {13, 10}, {13, 10},
+    { -13, 10}, { -13, 10}, { -13, 10}, { -13, 10}
+};
+
+const VLCshorttab PV_MCBPCtab[] =
+{
+    {VLC_ERROR, 0},
+    {255, 9}, {52, 9}, {36, 9}, {20, 9}, {49, 9}, {35, 8}, {35, 8}, {19, 8}, {19, 8},
+    {50, 8}, {50, 8}, {51, 7}, {51, 7}, {51, 7}, {51, 7}, {34, 7}, {34, 7}, {34, 7},
+    {34, 7}, {18, 7}, {18, 7}, {18, 7}, {18, 7}, {33, 7}, {33, 7}, {33, 7}, {33, 7},
+    {17, 7}, {17, 7}, {17, 7}, {17, 7}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6},
+    {4, 6}, {4, 6}, {4, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6},
+    {48, 6}, {48, 6}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5},
+    {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5},
+    {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
+    {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
+    {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
+    {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
+    {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
+    {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
+    {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
+    {16, 4}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
+    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
+    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
+    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
+    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
+    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
+    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
+    {2, 3}, {2, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
+    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
+    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
+    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
+    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
+    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
+    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
+    {1, 3}, {1, 3}, {1, 3}
+};
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+const VLCshorttab PV_MCBPCtab1[] =
+{
+    {5, 11}, {5, 11},  {5, 11}, {5, 11}, {21, 13}, {21, 13}, {37, 13}, {53, 13},
+};
+#endif
+const VLCshorttab PV_MCBPCtabintra[] =
+{
+    {VLC_ERROR, 0},
+    {20, 6}, {36, 6}, {52, 6}, {4, 4}, {4, 4}, {4, 4},
+    {4, 4}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3},
+    {19, 3}, {19, 3}, {19, 3}, {35, 3}, {35, 3}, {35, 3},
+    {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {51, 3},
+    {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3},
+    {51, 3}
+};
+
+
+
+const VLCshorttab PV_CBPYtab[48] =
+{
+    {VLC_ERROR, 0}, {VLC_ERROR, 0}, {6, 6}, {9, 6}, {8, 5}, {8, 5}, {4, 5}, {4, 5},
+    {2, 5}, {2, 5}, {1, 5}, {1, 5}, {0, 4}, {0, 4}, {0, 4}, {0, 4},
+    {12, 4}, {12, 4}, {12, 4}, {12, 4}, {10, 4}, {10, 4}, {10, 4}, {10, 4},
+    {14, 4}, {14, 4}, {14, 4}, {14, 4}, {5, 4}, {5, 4}, {5, 4}, {5, 4},
+    {13, 4}, {13, 4}, {13, 4}, {13, 4}, {3, 4}, {3, 4}, {3, 4}, {3, 4},
+    {11, 4}, {11, 4}, {11, 4}, {11, 4}, {7, 4}, {7, 4}, {7, 4}, {7, 4}
+};
+
+
+
+const VLCtab2 PV_DCT3Dtab0[] =
+{
+    {0x8, 1, 1, 7}, {0x7, 1, 1, 7}, {0x6, 1, 1, 7}, {0x5, 1, 1, 7}, {0xc, 1, 0, 7}, {0xb, 1, 0, 7},
+    {0xa, 1, 0, 7}, {0x0, 4, 0, 7}, {0x4, 1, 1, 6}, {0x4, 1, 1, 6}, {0x3, 1, 1, 6}, {0x3, 1, 1, 6},
+    {0x2, 1, 1, 6}, {0x2, 1, 1, 6}, {0x1, 1, 1, 6}, {0x1, 1, 1, 6}, {0x9, 1, 0, 6}, {0x9, 1, 0, 6},
+    {0x8, 1, 0, 6}, {0x8, 1, 0, 6}, {0x7, 1, 0, 6}, {0x7, 1, 0, 6}, {0x6, 1, 0, 6}, {0x6, 1, 0, 6},
+    {0x1, 2, 0, 6}, {0x1, 2, 0, 6}, {0x0, 3, 0, 6}, {0x0, 3, 0, 6}, {0x5, 1, 0, 5}, {0x5, 1, 0, 5},
+    {0x5, 1, 0, 5}, {0x5, 1, 0, 5}, {0x4, 1, 0, 5}, {0x4, 1, 0, 5}, {0x4, 1, 0, 5}, {0x4, 1, 0, 5},
+    {0x3, 1, 0, 5}, {0x3, 1, 0, 5}, {0x3, 1, 0, 5}, {0x3, 1, 0, 5}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
+    {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3},
+    {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3},
+    {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3},
+    {0x2, 1, 0, 4}, {0x2, 1, 0, 4}, {0x2, 1, 0, 4}, {0x2, 1, 0, 4}, {0x2, 1, 0, 4}, {0x2, 1, 0, 4},
+    {0x2, 1, 0, 4}, {0x2, 1, 0, 4}, {0x0, 2, 0, 4}, {0x0, 2, 0, 4}, {0x0, 2, 0, 4}, {0x0, 2, 0, 4},
+    {0x0, 2, 0, 4}, {0x0, 2, 0, 4}, {0x0, 2, 0, 4}, {0x0, 2, 0, 4}
+};
+
+
+const VLCtab2 PV_DCT3Dtab1[] =
+{
+    {0x0, 9, 0, 10}, {0x0, 8, 0, 10}, {0x18, 1, 1, 9}, {0x18, 1, 1, 9}, {0x17, 1, 1, 9}, {0x17, 1, 1, 9},
+    {0x16, 1, 1, 9}, {0x16, 1, 1, 9}, {0x15, 1, 1, 9}, {0x15, 1, 1, 9}, {0x14, 1, 1, 9}, {0x14, 1, 1, 9},
+    {0x13, 1, 1, 9}, {0x13, 1, 1, 9}, {0x12, 1, 1, 9}, {0x12, 1, 1, 9}, {0x11, 1, 1, 9}, {0x11, 1, 1, 9},
+    {0x0, 2, 1, 9}, {0x0, 2, 1, 9}, {0x16, 1, 0, 9}, {0x16, 1, 0, 9}, {0x15, 1, 0, 9}, {0x15, 1, 0, 9},
+    {0x14, 1, 0, 9}, {0x14, 1, 0, 9}, {0x13, 1, 0, 9}, {0x13, 1, 0, 9}, {0x12, 1, 0, 9}, {0x12, 1, 0, 9},
+    {0x11, 1, 0, 9}, {0x11, 1, 0, 9}, {0x10, 1, 0, 9}, {0x10, 1, 0, 9}, {0xf, 1, 0, 9}, {0xf, 1, 0, 9},
+    {0x4, 2, 0, 9}, {0x4, 2, 0, 9}, {0x3, 2, 0, 9}, {0x3, 2, 0, 9}, {0x0, 7, 0, 9}, {0x0, 7, 0, 9},
+    {0x0, 6, 0, 9}, {0x0, 6, 0, 9}, {0x10, 1, 1, 8}, {0x10, 1, 1, 8}, {0x10, 1, 1, 8}, {0x10, 1, 1, 8},
+    {0xf, 1, 1, 8}, {0xf, 1, 1, 8}, {0xf, 1, 1, 8}, {0xf, 1, 1, 8}, {0xe, 1, 1, 8}, {0xe, 1, 1, 8},
+    {0xe, 1, 1, 8}, {0xe, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8},
+    {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xb, 1, 1, 8}, {0xb, 1, 1, 8},
+    {0xb, 1, 1, 8}, {0xb, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8},
+    {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0xe, 1, 0, 8}, {0xe, 1, 0, 8},
+    {0xe, 1, 0, 8}, {0xe, 1, 0, 8}, {0xd, 1, 0, 8}, {0xd, 1, 0, 8}, {0xd, 1, 0, 8}, {0xd, 1, 0, 8},
+    {0x2, 2, 0, 8}, {0x2, 2, 0, 8}, {0x2, 2, 0, 8}, {0x2, 2, 0, 8}, {0x1, 3, 0, 8}, {0x1, 3, 0, 8},
+    {0x1, 3, 0, 8}, {0x1, 3, 0, 8}, {0x0, 5, 0, 8}, {0x0, 5, 0, 8}, {0x0, 5, 0, 8}, {0x0, 5, 0, 8}
+};
+
+
+const VLCtab2 PV_DCT3Dtab2[] =
+{
+    {0x1, 2, 1, 11}, {0x1, 2, 1, 11}, {0x0, 3, 1, 11}, {0x0, 3, 1, 11}, {0x0, 0xb, 0, 11}, {0x0, 0xb, 0, 11},
+    {0x0, 0xa, 0, 11}, {0x0, 0xa, 0, 11}, {0x1c, 1, 1, 10}, {0x1c, 1, 1, 10}, {0x1c, 1, 1, 10}, {0x1c, 1, 1, 10},
+    {0x1b, 1, 1, 10}, {0x1b, 1, 1, 10}, {0x1b, 1, 1, 10}, {0x1b, 1, 1, 10}, {0x1a, 1, 1, 10}, {0x1a, 1, 1, 10},
+    {0x1a, 1, 1, 10}, {0x1a, 1, 1, 10}, {0x19, 1, 1, 10}, {0x19, 1, 1, 10}, {0x19, 1, 1, 10}, {0x19, 1, 1, 10},
+    {0x9, 2, 0, 10}, {0x9, 2, 0, 10}, {0x9, 2, 0, 10}, {0x9, 2, 0, 10}, {0x8, 2, 0, 10}, {0x8, 2, 0, 10},
+    {0x8, 2, 0, 10}, {0x8, 2, 0, 10}, {0x7, 2, 0, 10}, {0x7, 2, 0, 10}, {0x7, 2, 0, 10}, {0x7, 2, 0, 10},
+    {0x6, 2, 0, 10}, {0x6, 2, 0, 10}, {0x6, 2, 0, 10}, {0x6, 2, 0, 10}, {0x5, 2, 0, 10}, {0x5, 2, 0, 10},
+    {0x5, 2, 0, 10}, {0x5, 2, 0, 10}, {0x3, 3, 0, 10}, {0x3, 3, 0, 10}, {0x3, 3, 0, 10}, {0x3, 3, 0, 10},
+    {0x2, 3, 0, 10}, {0x2, 3, 0, 10}, {0x2, 3, 0, 10}, {0x2, 3, 0, 10}, {0x1, 4, 0, 10}, {0x1, 4, 0, 10},
+    {0x1, 4, 0, 10}, {0x1, 4, 0, 10}, {0x0, 0xc, 0, 11}, {0x0, 0xc, 0, 11}, {0x1, 5, 0, 11}, {0x1, 5, 0, 11},
+    {0x17, 1, 0, 11}, {0x17, 1, 0, 11}, {0x18, 1, 0, 11}, {0x18, 1, 0, 11}, {0x1d, 1, 1, 11}, {0x1d, 1, 1, 11},
+    {0x1e, 1, 1, 11}, {0x1e, 1, 1, 11}, {0x1f, 1, 1, 11}, {0x1f, 1, 1, 11}, {0x20, 1, 1, 11}, {0x20, 1, 1, 11},
+    {0x1, 6, 0, 12}, {0x2, 4, 0, 12}, {0x4, 3, 0, 12}, {0x5, 3, 0, 12}, {0x6, 3, 0, 12}, {0xa, 2, 0, 12},
+    {0x19, 1, 0, 12}, {0x1a, 1, 0, 12}, {0x21, 1, 1, 12}, {0x22, 1, 1, 12}, {0x23, 1, 1, 12}, {0x24, 1, 1, 12},
+    {0x25, 1, 1, 12}, {0x26, 1, 1, 12}, {0x27, 1, 1, 12}, {0x28, 1, 1, 12}, {0xbf, 0xf, 1, 7},
+    {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7},
+    {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7},
+    {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7},
+    {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7},
+    {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7},
+    {0xbf, 0xf, 1, 7}
+};
+
+/* New tables for Intra luminance blocks */
+
+const VLCtab2 PV_DCT3Dtab3[] =
+{
+    {0x4, 1, 1, 7}, {0x3, 1, 1, 7}, {0x6, 1, 0, 7}, {0x5, 1, 1, 7},
+    {0x7, 1, 0, 7}, {0x2, 2, 0, 7}, {0x1, 3, 0, 7}, {0x0, 9, 0, 7},
+    {0x0, 2, 1, 6}, {0x0, 2, 1, 6}, {0x5, 1, 0, 6}, {0x5, 1, 0, 6},
+    {0x2, 1, 1, 6}, {0x2, 1, 1, 6}, {0x1, 1, 1, 6}, {0x1, 1, 1, 6},
+    {0x4, 1, 0, 6}, {0x4, 1, 0, 6}, {0x3, 1, 0, 6}, {0x3, 1, 0, 6},
+    {0x0, 8, 0, 6}, {0x0, 8, 0, 6}, {0x0, 7, 0, 6}, {0x0, 7, 0, 6},
+    {0x1, 2, 0, 6}, {0x1, 2, 0, 6}, {0x0, 6, 0, 6}, {0x0, 6, 0, 6},
+    {0x2, 1, 0, 5}, {0x2, 1, 0, 5}, {0x2, 1, 0, 5}, {0x2, 1, 0, 5},
+    {0x0, 5, 0, 5}, {0x0, 5, 0, 5}, {0x0, 5, 0, 5}, {0x0, 5, 0, 5},
+    {0x0, 4, 0, 5}, {0x0, 4, 0, 5}, {0x0, 4, 0, 5}, {0x0, 4, 0, 5},
+    {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
+    {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
+    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
+    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
+    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
+    {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4},
+    {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4},
+    {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4},
+    {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}
+};
+
+const VLCtab2 PV_DCT3Dtab4[] =
+{
+    {0x0, 0x12, 0, 10}, {0x0, 0x11, 0, 10}, {0xe, 1, 1, 9}, {0xe, 1, 1, 9},
+    {0xd, 1, 1, 9}, {0xd, 1, 1, 9}, {0xc, 1, 1, 9}, {0xc, 1, 1, 9},
+    {0xb, 1, 1, 9}, {0xb, 1, 1, 9}, {0xa, 1, 1, 9}, {0xa, 1, 1, 9},
+    {0x1, 2, 1, 9}, {0x1, 2, 1, 9}, {0x0, 4, 1, 9}, {0x0, 4, 1, 9},
+    {0xc, 1, 0, 9}, {0xc, 1, 0, 9}, {0xb, 1, 0, 9}, {0xb, 1, 0, 9},
+    {0x7, 2, 0, 9}, {0x7, 2, 0, 9}, {0x6, 2, 0, 9}, {0x6, 2, 0, 9},
+    {0x5, 2, 0, 9}, {0x5, 2, 0, 9}, {0x3, 3, 0, 9}, {0x3, 3, 0, 9},
+    {0x2, 3, 0, 9}, {0x2, 3, 0, 9}, {0x1, 6, 0, 9}, {0x1, 6, 0, 9},
+    {0x1, 5, 0, 9}, {0x1, 5, 0, 9}, {0x0, 0x10, 0, 9}, {0x0, 0x10, 0, 9},
+    {0x4, 2, 0, 9}, {0x4, 2, 0, 9}, {0x0, 0xf, 0, 9}, {0x0, 0xf, 0, 9},
+    {0x0, 0xe, 0, 9}, {0x0, 0xe, 0, 9}, {0x0, 0xd, 0, 9}, {0x0, 0xd, 0, 9},
+    {0x8, 1, 1, 8}, {0x8, 1, 1, 8}, {0x8, 1, 1, 8}, {0x8, 1, 1, 8},
+    {0x7, 1, 1, 8}, {0x7, 1, 1, 8}, {0x7, 1, 1, 8}, {0x7, 1, 1, 8},
+    {0x6, 1, 1, 8}, {0x6, 1, 1, 8}, {0x6, 1, 1, 8}, {0x6, 1, 1, 8},
+    {0x0, 3, 1, 8}, {0x0, 3, 1, 8}, {0x0, 3, 1, 8}, {0x0, 3, 1, 8},
+    {0xa, 1, 0, 8}, {0xa, 1, 0, 8}, {0xa, 1, 0, 8}, {0xa, 1, 0, 8},
+    {0x9, 1, 0, 8}, {0x9, 1, 0, 8}, {0x9, 1, 0, 8}, {0x9, 1, 0, 8},
+    {0x8, 1, 0, 8}, {0x8, 1, 0, 8}, {0x8, 1, 0, 8}, {0x8, 1, 0, 8},
+    {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8},
+    {0x3, 2, 0, 8}, {0x3, 2, 0, 8}, {0x3, 2, 0, 8}, {0x3, 2, 0, 8},
+    {0x1, 4, 0, 8}, {0x1, 4, 0, 8}, {0x1, 4, 0, 8}, {0x1, 4, 0, 8},
+    {0x0, 0xc, 0, 8}, {0x0, 0xc, 0, 8}, {0x0, 0xc, 0, 8}, {0x0, 0xc, 0, 8},
+    {0x0, 0xb, 0, 8}, {0x0, 0xb, 0, 8}, {0x0, 0xb, 0, 8}, {0x0, 0xb, 0, 8},
+    {0x0, 0xa, 0, 8}, {0x0, 0xa, 0, 8}, {0x0, 0xa, 0, 8}, {0x0, 0xa, 0, 8}
+};
+
+const VLCtab2 PV_DCT3Dtab5[] =
+{
+    {0x0, 7, 1, 11}, {0x0, 7, 1, 11}, {0x0, 6, 1, 11}, {0x0, 6, 1, 11},
+    {0x0, 0x16, 0, 11}, {0x0, 0x16, 0, 11}, {0x0, 0x15, 0, 11}, {0x0, 0x15, 0, 11},
+    {0x2, 2, 1, 10}, {0x2, 2, 1, 10}, {0x2, 2, 1, 10}, {0x2, 2, 1, 10},
+    {0x1, 3, 1, 10}, {0x1, 3, 1, 10}, {0x1, 3, 1, 10}, {0x1, 3, 1, 10},
+    {0x0, 5, 1, 10}, {0x0, 5, 1, 10}, {0x0, 5, 1, 10}, {0x0, 5, 1, 10},
+    {0xd, 1, 0, 10}, {0xd, 1, 0, 10}, {0xd, 1, 0, 10}, {0xd, 1, 0, 10},
+    {0x5, 3, 0, 10}, {0x5, 3, 0, 10}, {0x5, 3, 0, 10}, {0x5, 3, 0, 10},
+    {0x8, 2, 0, 10}, {0x8, 2, 0, 10}, {0x8, 2, 0, 10}, {0x8, 2, 0, 10},
+    {0x4, 3, 0, 10}, {0x4, 3, 0, 10}, {0x4, 3, 0, 10}, {0x4, 3, 0, 10},
+    {0x3, 4, 0, 10}, {0x3, 4, 0, 10}, {0x3, 4, 0, 10}, {0x3, 4, 0, 10},
+    {0x2, 4, 0, 10}, {0x2, 4, 0, 10}, {0x2, 4, 0, 10}, {0x2, 4, 0, 10},
+    {0x1, 7, 0, 10}, {0x1, 7, 0, 10}, {0x1, 7, 0, 10}, {0x1, 7, 0, 10},
+    {0x0, 0x14, 0, 10}, {0x0, 0x14, 0, 10}, {0x0, 0x14, 0, 10}, {0x0, 0x14, 0, 10},
+    {0x0, 0x13, 0, 10}, {0x0, 0x13, 0, 10}, {0x0, 0x13, 0, 10}, {0x0, 0x13, 0, 10},
+    {0x0, 0x17, 0, 11}, {0x0, 0x17, 0, 11}, {0x0, 0x18, 0, 11}, {0x0, 0x18, 0, 11},
+    {0x1, 8, 0, 11}, {0x1, 8, 0, 11}, {0x9, 2, 0, 11}, {0x9, 2, 0, 11},
+    {0x3, 2, 1, 11}, {0x3, 2, 1, 11}, {0x4, 2, 1, 11}, {0x4, 2, 1, 11},
+    {0xf, 1, 1, 11}, {0xf, 1, 1, 11}, {0x10, 1, 1, 11}, {0x10, 1, 1, 11},
+    {0, 0x19, 0, 12}, {0, 0x1a, 0, 12}, {0, 0x1b, 0, 12}, {1, 9, 0, 12},
+    {0x6, 3, 0, 12}, {0x1, 0xa, 0, 12}, {0x2, 5, 0, 12}, {0x7, 3, 0, 12},
+    {0xe, 1, 0, 12}, {0x0, 8, 1, 12}, {0x5, 2, 1, 12}, {0x6, 2, 1, 12},
+    {0x11, 1, 1, 12}, {0x12, 1, 1, 12}, {0x13, 1, 1, 12}, {0x14, 1, 1, 12},
+    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
+    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
+    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
+    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
+    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
+    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
+    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
+    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}
+};
+
+#ifdef PV_ANNEX_IJKT_SUPPORT
+const VLCtab2 PV_DCT3Dtab6[] =
+{
+    {0x0, 3, 1, 7}, {0x4, 1, 1, 7}, {0x6, 1, 1, 7}, {0x5, 1, 1, 7}, {0x1, 3, 0, 7}, {0x2, 2, 0, 7},
+    {0x0, 9, 0, 7}, {0x5, 1, 0, 7}, {0x0, 2, 1, 6}, {0x0, 2, 1, 6}, {0x3, 1, 1, 6}, {0x3, 1, 1, 6},
+    {0x2, 1, 1, 6}, {0x2, 1, 1, 6}, {0x1, 1, 1, 6}, {0x1, 1, 1, 6}, {0x0, 6, 0, 6}, {0x0, 6, 0, 6},
+    {0x0, 7, 0, 6}, {0x0, 7, 0, 6}, {0x0, 8, 0, 6}, {0x0, 8, 0, 6}, {0x4, 1, 0, 6}, {0x4, 1, 0, 6},
+    {0x1, 2, 0, 6}, {0x1, 2, 0, 6}, {0x3, 1, 0, 6}, {0x3, 1, 0, 6}, {0x2, 1, 0, 5}, {0x2, 1, 0, 5},
+    {0x2, 1, 0, 5}, {0x2, 1, 0, 5}, {0x0, 4, 0, 5}, {0x0, 4, 0, 5}, {0x0, 4, 0, 5}, {0x0, 4, 0, 5},
+    {0x0, 5, 0, 5}, {0x0, 5, 0, 5}, {0x0, 5, 0, 5}, {0x0, 5, 0, 5}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
+    {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
+    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
+    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
+    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
+    {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4},
+    {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4},
+    {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}
+};
+
+const VLCtab2 PV_DCT3Dtab7[] =
+{
+    {0xb, 1, 0, 10}, {0xa, 1, 0, 10}, {0x0, 5, 1, 9}, {0x0, 5, 1, 9}, {0x0, 6, 1, 9}, {0x0, 6, 1, 9},
+    {0x1, 2, 1, 9}, {0x1, 2, 1, 9}, {0x2, 2, 1, 9}, {0x2, 2, 1, 9}, {0xf, 1, 1, 9}, {0xf, 1, 1, 9},
+    {0x10, 1, 1, 9}, {0x10, 1, 1, 9}, {0x12, 1, 1, 9}, {0x12, 1, 1, 9}, {0x11, 1, 1, 9}, {0x11, 1, 1, 9},
+    {0xe, 1, 1, 9}, {0xe, 1, 1, 9}, {0x0, 13, 0, 9}, {0x0, 13, 0, 9}, {0x0, 14, 0, 9}, {0x0, 14, 0, 9},
+    {0x0, 15, 0, 9}, {0x0, 15, 0, 9}, {0x0, 16, 0, 9}, {0x0, 16, 0, 9}, {0x0, 17, 0, 9}, {0x0, 17, 0, 9},
+    {0x0, 18, 0, 9}, {0x0, 18, 0, 9}, {0x0, 11, 0, 9}, {0x0, 11, 0, 9}, {0x0, 12, 0, 9}, {0x0, 12, 0, 9},
+    {0x5, 2, 0, 9}, {0x5, 2, 0, 9}, {0x4, 2, 0, 9}, {0x4, 2, 0, 9}, {0x9, 1, 0, 9}, {0x9, 1, 0, 9},
+    {0x8, 1, 0, 9}, {0x8, 1, 0, 9}, {0x0, 4, 1, 8}, {0x0, 4, 1, 8}, {0x0, 4, 1, 8}, {0x0, 4, 1, 8},
+    {0x7, 1, 1, 8}, {0x7, 1, 1, 8}, {0x7, 1, 1, 8}, {0x7, 1, 1, 8}, {0x8, 1, 1, 8}, {0x8, 1, 1, 8},
+    {0x8, 1, 1, 8}, {0x8, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8},
+    {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xb, 1, 1, 8}, {0xb, 1, 1, 8},
+    {0xb, 1, 1, 8}, {0xb, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8},
+    {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x0, 10, 0, 8}, {0x0, 10, 0, 8},
+    {0x0, 10, 0, 8}, {0x0, 10, 0, 8}, {0x6, 1, 0, 8}, {0x6, 1, 0, 8}, {0x6, 1, 0, 8}, {0x6, 1, 0, 8},
+    {0x3, 2, 0, 8}, {0x3, 2, 0, 8}, {0x3, 2, 0, 8}, {0x3, 2, 0, 8}, {0x1, 4, 0, 8}, {0x1, 4, 0, 8},
+    {0x1, 4, 0, 8}, {0x1, 4, 0, 8}, {0x7, 1, 0, 8}, {0x7, 1, 0, 8}, {0x7, 1, 0, 8}, {0x7, 1, 0, 8}
+};
+
+
+const VLCtab2 PV_DCT3Dtab8[] =
+{
+    {0x13, 0x1, 1, 11}, {0x13, 0x1, 1, 11}, {0x14, 0x1, 1, 11}, {0x14, 0x1, 1, 11}, {0x9, 0x2, 0, 11}, {0x9, 0x2, 0, 11},
+    {0x4, 0x3, 0, 11}, {0x4, 0x3, 0, 11}, {0x0, 0x7, 1, 10}, {0x0, 0x7, 1, 10}, {0x0, 0x7, 1, 10}, {0x0, 0x7, 1, 10},
+    {0x1, 0x3, 1, 10}, {0x1, 0x3, 1, 10}, {0x1, 0x3, 1, 10}, {0x1, 0x3, 1, 10}, {0x3, 0x2, 1, 10}, {0x3, 0x2, 1, 10},
+    {0x3, 0x2, 1, 10}, {0x3, 0x2, 1, 10}, {0x4, 0x2, 1, 10}, {0x4, 0x2, 1, 10}, {0x4, 0x2, 1, 10}, {0x4, 0x2, 1, 10},
+    {0xc, 0x1, 0, 10}, {0xc, 0x1, 0, 10}, {0xc, 0x1, 0, 10}, {0xc, 0x1, 0, 10}, {0x2, 0x4, 0, 10}, {0x2, 0x4, 0, 10},
+    {0x2, 0x4, 0, 10}, {0x2, 0x4, 0, 10}, {0x8, 0x2, 0, 10}, {0x8, 0x2, 0, 10}, {0x8, 0x2, 0, 10}, {0x8, 0x2, 0, 10},
+    {0x7, 0x2, 0, 10}, {0x7, 0x2, 0, 10}, {0x7, 0x2, 0, 10}, {0x7, 0x2, 0, 10}, {0x6, 0x2, 0, 10}, {0x6, 0x2, 0, 10},
+    {0x6, 0x2, 0, 10}, {0x6, 0x2, 0, 10}, {0x3, 0x3, 0, 10}, {0x3, 0x3, 0, 10}, {0x3, 0x3, 0, 10}, {0x3, 0x3, 0, 10},
+    {0x2, 0x3, 0, 10}, {0x2, 0x3, 0, 10}, {0x2, 0x3, 0, 10}, {0x2, 0x3, 0, 10}, {0x1, 0x5, 0, 10}, {0x1, 0x5, 0, 10},
+    {0x1, 0x5, 0, 10}, {0x1, 0x5, 0, 10}, {0xd, 0x1, 0, 11}, {0xd, 0x1, 0, 11}, {0x1, 0x6, 0, 11}, {0x1, 0x6, 0, 11},
+    {0x0, 0x14, 0, 11}, {0x0, 0x14, 0, 11}, {0x0, 0x13, 0, 11}, {0x0, 0x13, 0, 11}, {0x2, 0x3, 1, 11}, {0x2, 0x3, 1, 11},
+    {0x1, 0x4, 1, 11}, {0x1, 0x4, 1, 11}, {0x0, 0x9, 1, 11}, {0x0, 0x9, 1, 11}, {0x0, 0x8, 1, 11}, {0x0, 0x8, 1, 11},
+    {0x1, 0x7, 0, 12}, {0x3, 0x4, 0, 12}, {0x5, 0x3, 0, 12}, {0x0, 0x19, 0, 12}, {0x0, 0x18, 0, 12}, {0x0, 0x17, 0, 12},
+    {0x0, 0x16, 0, 12}, {0x0, 0x15, 0, 12}, {0x15, 0x1, 1, 12}, {0x16, 0x1, 1, 12}, {0x17, 0x1, 1, 12}, {0x7, 0x2, 1, 12},
+    {0x6, 0x2, 1, 12}, {0x5, 0x2, 1, 12}, {0x3, 0x3, 1, 12}, {0x0, 0xa, 1, 12}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7},
+    {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7},
+    {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7},
+    {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7},
+    {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7},
+    {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}
+};
+#endif
+/* RVLC tables */
+const int ptrRvlcTab[11] = {0, 24, 46, 66, 84, 100, 114, 126, 134, 140, 144};
+
+const VLCtab2 RvlcDCTtabIntra[170] = /* 00xxxx00 or 00xxxx01 */
+{
+    {27, 255, 0, 5},    /* 0000 is escape code */
+    {1, 1, 0, 4},
+    {2, 1, 0, 5},
+    {3, 1, 0, 5},
+    {4, 1, 0, 6},
+    {5, 1, 0, 6},
+    {6, 1, 0, 7},
+    {7, 1, 0, 7},
+    {8, 1, 0, 8},
+    {9, 1, 0, 8},
+    {10, 1, 0, 9},
+    {5, 2, 0, 9},
+    {11, 1, 0, 10},
+    {12, 1, 0, 10},
+    {13, 1, 0, 11},
+    {9, 2, 0, 11},
+    {10, 2, 0, 12},
+    {4, 4, 0, 12},
+    {14, 1, 0, 13},
+    {15, 1, 0, 13},
+    {16, 1, 0, 14},
+    {17, 1, 0, 14},
+    {0, 27, 0, 15},
+    {3, 9, 0, 15},
+    /* 010xxxx00 or 010xxxx01 */
+    {1, 2, 0, 5},
+    {0, 4, 0, 5},
+    {0, 5, 0, 6},
+    {0, 6, 0, 6},
+    {2, 2, 0, 7},
+    {1, 3, 0, 7},
+    {3, 2, 0, 8},
+    {4, 2, 0, 8},
+    {2, 3, 0, 9},
+    {3, 3, 0, 9},
+    {6, 2, 0, 10},
+    {7, 2, 0, 10},
+    {5, 3, 0, 11},
+    {6, 3, 0, 11},
+    {5, 4, 0, 12},
+    {6, 4, 0, 12},
+    {11, 2, 0, 13},
+    {8, 3, 0, 13},
+    {18, 1, 0, 14},
+    {8, 4, 0, 14},
+    {6, 5, 0, 15},
+    {7, 5, 0, 15},
+    /* 0110xxxx00 or 0110xxxx01 */
+    {3, 1, 1, 6},
+    {4, 1, 1, 6},
+    {0, 7, 0, 7},
+    {7, 1, 1, 7},
+    {1, 4, 0, 8},
+    {1, 5, 0, 8},
+    {1, 6, 0, 9},
+    {0, 10, 0, 9},
+    {8, 2, 0, 10},
+    {4, 3, 0, 10},
+    {7, 3, 0, 11},
+    {3, 4, 0, 11},
+    {3, 5, 0, 12},
+    {4, 5, 0, 12},
+    {9, 3, 0, 13},
+    {7, 4, 0, 13},
+    {5, 5, 0, 14},
+    {4, 6, 0, 14},
+    {9, 4, 0, 15},
+    {12, 2, 0, 15},
+    /* 01110xxxx00 or 01110xxxx01 */
+    {8, 1, 1, 7},
+    {9, 1, 1, 7},
+    {0, 8, 0, 8},
+    {0, 9, 0, 8},
+    {0, 11, 0, 9},
+    {1, 2, 1, 9},
+    {2, 4, 0, 10},
+    {1, 7, 0, 10},
+    {2, 5, 0, 11},
+    {2, 6, 0, 11},
+    {1, 10, 0, 12},
+    {0, 18, 0, 12},
+    {3, 6, 0, 13},
+    {2, 7, 0, 13},
+    {5, 6, 0, 14},
+    {3, 7, 0, 14},
+    {19, 1, 0, 15},
+    {1, 5, 1, 15},
+    /* 011110xxxx00 or 011110xxxx01 */
+    {0, 2, 1, 8},
+    {12, 1, 1, 8},
+    {15, 1, 1, 9},
+    {16, 1, 1, 9},
+    {0, 12, 0, 10},
+    {0, 13, 0, 10},
+    {1, 8, 0, 11},
+    {1, 9, 0, 11},
+    {0, 19, 0, 12},
+    {0, 22, 0, 12},
+    {2, 8, 0, 13},
+    {2, 9, 0, 13},
+    {3, 8, 0, 14},
+    {2, 10, 0, 14},
+    {2, 3, 1, 15},
+    {13, 2, 1, 15},
+    /* 0111110xxxx00 or 0111110xxxx01 */
+    {17, 1, 1, 9},
+    {18, 1, 1, 9},
+    {0, 14, 0, 10},
+    {21, 1, 1, 10},
+    {0, 15, 0, 11},
+    {0, 16, 0, 11},
+    {1, 3, 1, 12},
+    {3, 2, 1, 12},
+    {1, 11, 0, 13},
+    {0, 20, 0, 13},
+    {2, 11, 0, 14},
+    {1, 12, 0, 14},
+    {41, 1, 1, 15},
+    {42, 1, 1, 15},
+    /* 01111110xxxx00 or 01111110xxxx01 */
+    {22, 1, 1, 10},
+    {23, 1, 1, 10},
+    {0, 17, 0, 11},
+    {0, 3, 1, 11},
+    {4, 2, 1, 12},
+    {29, 1, 1, 12},
+    {0, 21, 0, 13},
+    {0, 23, 0, 13},
+    {1, 13, 0, 14},
+    {0, 24, 0, 14},
+    {43, 1, 1, 15},
+    {44, 1, 1, 15},
+    /* 011111110xxxx00 or 011111110xxxx01 */
+    {2, 2, 1, 11},
+    {26, 1, 1, 11},
+    {30, 1, 1, 12},
+    {31, 1, 1, 12},
+    {0, 4, 1, 13},
+    {5, 2, 1, 13},
+    {0, 25, 0, 14},
+    {0, 26, 0, 14},
+    /* 0111111110xxxx00 or 0111111110xxxx01 */
+    {32, 1, 1, 12},
+    {33, 1, 1, 12},
+    {6, 2, 1, 13},
+    {7, 2, 1, 13},
+    {0, 5, 1, 14},
+    {1, 4, 1, 14},
+    /* 01111111110xxxx00 or 01111111110xxxx01 */
+    {8, 2, 1, 13},
+    {9, 2, 1, 13},
+    {10, 2, 1, 14},
+    {11, 2, 1, 14},
+    /* 011111111110xxxx00 or 011111111110xxxx01 */
+    {12, 2, 1, 14},
+    {38, 1, 1, 14},
+    /* 1xxxx10 or 1xxxx11 from 11 zeros to 0 zeros*/
+    {0, 1, 0, 3},
+    {0, 2, 0, 3},
+    {0, 3, 0, 4},
+    {0, 1, 1, 4},
+    {1, 1, 1, 5},
+    {2, 1, 1, 5},
+    {5, 1, 1, 6},
+    {6, 1, 1, 6},
+    {10, 1, 1, 7},
+    {11, 1, 1, 7},
+    {13, 1, 1, 8},
+    {14, 1, 1, 8},
+    {19, 1, 1, 9},
+    {20, 1, 1, 9},
+    {24, 1, 1, 10},
+    {25, 1, 1, 10},
+    {27, 1, 1, 11},
+    {28, 1, 1, 11},
+    {34, 1, 1, 12},
+    {35, 1, 1, 12},
+    {36, 1, 1, 13},
+    {37, 1, 1, 13},
+    {39, 1, 1, 14},
+    {40, 1, 1, 14}
+};
+
+const VLCtab2 RvlcDCTtabInter[170] = /* 00xxxx00 or 00xxxx01 */
+{
+    {27, 255, 0, 5},    /* 0000 is escape code */
+    {0, 2, 0, 4},
+    {0, 3, 0, 5},
+    {3, 1, 0, 5},
+    {1, 2, 0, 6},
+    {6, 1, 0, 6},
+    {0, 4, 0, 7},
+    {2, 2, 0, 7},
+    {0, 5, 0, 8},
+    {0, 6, 0, 8},
+    {0, 7, 0, 9},
+    {1, 4, 0, 9},
+    {0, 8, 0, 10},
+    {0, 9, 0, 10},
+    {0, 10, 0, 11},
+    {0, 11, 0, 11},
+    {0, 12, 0, 12},
+    {1, 7, 0, 12},
+    {0, 13, 0, 13},
+    {0, 14, 0, 13},
+    {0, 17, 0, 14},
+    {0, 18, 0, 14},
+    {0, 19, 0, 15},
+    {3, 7, 0, 15},
+    /* 010xxxx00 or 010xxxx01 */
+    {4, 1, 0, 5},
+    {5, 1, 0, 5},
+    {7, 1, 0, 6},
+    {8, 1, 0, 6},
+    {9, 1, 0, 7},
+    {10, 1, 0, 7},
+    {1, 3, 0, 8},
+    {3, 2, 0, 8},
+    {2, 3, 0, 9},
+    {5, 2, 0, 9},
+    {1, 5, 0, 10},
+    {3, 3, 0, 10},
+    {1, 6, 0, 11},
+    {2, 4, 0, 11},
+    {2, 5, 0, 12},
+    {3, 4, 0, 12},
+    {0, 15, 0, 13},
+    {0, 16, 0, 13},
+    {1, 9, 0, 14},
+    {1, 10, 0, 14},
+    {4, 5, 0, 15},
+    {7, 4, 0, 15},
+    /* 0110xxxx00 or 0110xxxx01 */
+    {3, 1, 1, 6},
+    {4, 1, 1, 6},
+    {11, 1, 0, 7},
+    {7, 1, 1, 7},
+    {4, 2, 0, 8},
+    {12, 1, 0, 8},
+    {15, 1, 0, 9},
+    {16, 1, 0, 9},
+    {6, 2, 0, 10},
+    {7, 2, 0, 10},
+    {4, 3, 0, 11},
+    {5, 3, 0, 11},
+    {6, 3, 0, 12},
+    {7, 3, 0, 12},
+    {1, 8, 0, 13},
+    {3, 5, 0, 13},
+    {2, 6, 0, 14},
+    {2, 7, 0, 14},
+    {17, 2, 0, 15},
+    {37, 1, 0, 15},
+    /* 01110xxxx00 or 01110xxxx01 */
+    {8, 1, 1, 7},
+    {9, 1, 1, 7},
+    {13, 1, 0, 8},
+    {14, 1, 0, 8},
+    {17, 1, 0, 9},
+    {1, 2, 1, 9},
+    {8, 2, 0, 10},
+    {9, 2, 0, 10},
+    {10, 2, 0, 11},
+    {21, 1, 0, 11},
+    {11, 2, 0, 12},
+    {27, 1, 0, 12},
+    {4, 4, 0, 13},
+    {5, 4, 0, 13},
+    {3, 6, 0, 14},
+    {6, 4, 0, 14},
+    {38, 1, 0, 15},
+    {1, 5, 1, 15},
+    /* 011110xxxx00 or 011110xxxx01 */
+    {0, 2, 1, 8},
+    {12, 1, 1, 8},
+    {15, 1, 1, 9},
+    {16, 1, 1, 9},
+    {18, 1, 0, 10},
+    {19, 1, 0, 10},
+    {22, 1, 0, 11},
+    {23, 1, 0, 11},
+    {28, 1, 0, 12},
+    {29, 1, 0, 12},
+    {8, 3, 0, 13},
+    {12, 2, 0, 13},
+    {9, 3, 0, 14},
+    {13, 2, 0, 14},
+    {2, 3, 1, 15},
+    {13, 2, 1, 15},
+    /* 0111110xxxx00 or 0111110xxxx01 */
+    {17, 1, 1, 9},
+    {18, 1, 1, 9},
+    {20, 1, 0, 10},
+    {21, 1, 1, 10},
+    {24, 1, 0, 11},
+    {25, 1, 0, 11},
+    {1, 3, 1, 12},
+    {3, 2, 1, 12},
+    {30, 1, 0, 13},
+    {31, 1, 0, 13},
+    {14, 2, 0, 14},
+    {15, 2, 0, 14},
+    {41, 1, 1, 15},
+    {42, 1, 1, 15},
+    /* 01111110xxxx00 or 01111110xxxx01 */
+    {22, 1, 1, 10},
+    {23, 1, 1, 10},
+    {26, 1, 0, 11},
+    {0, 3, 1, 11},
+    {4, 2, 1, 12},
+    {29, 1, 1, 12},
+    {32, 1, 0, 13},
+    {33, 1, 0, 13},
+    {16, 2, 0, 14},
+    {34, 1, 0, 14},
+    {43, 1, 1, 15},
+    {44, 1, 1, 15},
+    /* 011111110xxxx00 or 011111110xxxx01 */
+    {2, 2, 1, 11},
+    {26, 1, 1, 11},
+    {30, 1, 1, 12},
+    {31, 1, 1, 12},
+    {0, 4, 1, 13},
+    {5, 2, 1, 13},
+    {35, 1, 0, 14},
+    {36, 1, 0, 14},
+    /* 0111111110xxxx00 or 0111111110xxxx01 */
+    {32, 1, 1, 12},
+    {33, 1, 1, 12},
+    {6, 2, 1, 13},
+    {7, 2, 1, 13},
+    {0, 5, 1, 14},
+    {1, 4, 1, 14},
+    /* 01111111110xxxx00 or 01111111110xxxx01 */
+    {8, 2, 1, 13},
+    {9, 2, 1, 13},
+    {10, 2, 1, 14},
+    {11, 2, 1, 14},
+    /* 011111111110xxxx00 or 011111111110xxxx01 */
+    {12, 2, 1, 14},
+    {38, 1, 1, 14},
+    /* 1xxxx10 or 1xxxx11 from 11 zeros to 0 zeros*/
+    {0, 1, 0, 3},
+    {1, 1, 0, 3},
+    {2, 1, 0, 4},
+    {0, 1, 1, 4},
+    {1, 1, 1, 5},
+    {2, 1, 1, 5},
+    {5, 1, 1, 6},
+    {6, 1, 1, 6},
+    {10, 1, 1, 7},
+    {11, 1, 1, 7},
+    {13, 1, 1, 8},
+    {14, 1, 1, 8},
+    {19, 1, 1, 9},
+    {20, 1, 1, 9},
+    {24, 1, 1, 10},
+    {25, 1, 1, 10},
+    {27, 1, 1, 11},
+    {28, 1, 1, 11},
+    {34, 1, 1, 12},
+    {35, 1, 1, 12},
+    {36, 1, 1, 13},
+    {37, 1, 1, 13},
+    {39, 1, 1, 14},
+    {40, 1, 1, 14}
+};
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; Define all local variables
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; Function body here
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; Return nothing or data or data pointer
+----------------------------------------------------------------------------*/
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/vop.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/vop.cpp
new file mode 100644
index 0000000..74fe478
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/vop.cpp
@@ -0,0 +1,1643 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+#include "mp4dec_lib.h"
+#include "bitstream.h"
+#include "vlc_decode.h"
+#include "zigzag.h"
+
+#define OSCL_DISABLE_WARNING_CONV_POSSIBLE_LOSS_OF_DATA
+
+#ifdef PV_SUPPORT_MAIN_PROFILE
+/* INTRA */
+const static int mpeg_iqmat_def[NCOEFF_BLOCK] =
+{
+    8, 17, 18, 19, 21, 23, 25, 27,
+    17, 18, 19, 21, 23, 25, 27, 28,
+    20, 21, 22, 23, 24, 26, 28, 30,
+    21, 22, 23, 24, 26, 28, 30, 32,
+    22, 23, 24, 26, 28, 30, 32, 35,
+    23, 24, 26, 28, 30, 32, 35, 38,
+    25, 26, 28, 30, 32, 35, 38, 41,
+    27, 28, 30, 32, 35, 38, 41, 45
+};
+
+/* INTER */
+const static int mpeg_nqmat_def[64]  =
+{
+    16, 17, 18, 19, 20, 21, 22, 23,
+    17, 18, 19, 20, 21, 22, 23, 24,
+    18, 19, 20, 21, 22, 23, 24, 25,
+    19, 20, 21, 22, 23, 24, 26, 27,
+    20, 21, 22, 23, 25, 26, 27, 28,
+    21, 22, 23, 24, 26, 27, 28, 30,
+    22, 23, 24, 26, 27, 28, 30, 31,
+    23, 24, 25, 27, 28, 30, 31, 33
+};
+#endif
+
+/* ======================================================================== */
+/*  Function : CalcNumBits()                                                */
+/*  Purpose  :                                                              */
+/*  In/out   :                                                              */
+/*  Return   : Calculate the minimum number of bits required to             */
+/*              represent x.                                                */
+/*  Note     : This is an equivalent implementation of                      */
+/*                      (long)ceil(log((double)x)/log(2.0))                 */
+/*  Modified :                                                              */
+/* ======================================================================== */
+int CalcNumBits(uint x)
+{
+    int i = 1;
+    while (x >>= 1) i++;
+    return i;
+}
+
+
+
+/***********************************************************CommentBegin******
+*
+* -- DecodeVolHeader -- Decode the header of a VOL
+*
+*   04/10/2000 : initial modification to the new PV-Decoder Lib format.
+*   10/12/2001 : reject non compliant bitstreams
+*
+***********************************************************CommentEnd********/
+PV_STATUS DecodeVOLHeader(VideoDecData *video, int layer)
+{
+    PV_STATUS status;
+    Vol *currVol;
+    BitstreamDecVideo *stream;
+    uint32 tmpvar, vol_shape;
+    uint32 startCode;
+#ifdef PV_SUPPORT_MAIN_PROFILE
+    int *qmat, i, j;
+#endif
+    int version_id = 1;
+#ifdef PV_TOLERATE_VOL_ERRORS
+    uint32 profile = 0x01;
+#endif
+    /*  There's a "currLayer" variable inside videoDecData.          */
+    /*   However, we don't maintain it until we decode frame data.  04/05/2000 */
+    currVol = video->vol[layer];
+    stream  = currVol->bitstream;
+    currVol->moduloTimeBase = 0;
+
+    /* Determine which start code for the decoder to begin with */
+    status = BitstreamShowBits32HC(stream, &startCode);
+
+    if (startCode == VISUAL_OBJECT_SEQUENCE_START_CODE)
+    {   /*  Bitstream Exhchange Fix 9/99 */
+        /* Bitstream Exchange requires we allow start with Video Object Sequence */
+        /* visual_object_sequence_start_code            */
+        (void) BitstreamReadBits32HC(stream);
+        tmpvar = (uint32) BitstreamReadBits16(stream,  8); /* profile */
+#ifndef PV_TOLERATE_VOL_ERRORS
+        if (layer)                                                      /*    */
+        {
+            /* support SSPL0-2  */
+            if (tmpvar != 0x10 && tmpvar != 0x11 && tmpvar != 0x12 &&
+                    tmpvar != 0xA1 && tmpvar != 0xA2  && tmpvar != 0xA3/* Core SP@L1-L3 */)
+                return PV_FAIL;
+        }
+        else
+        {
+            /* support SPL0-3 & SSPL0-2   */
+            if (tmpvar != 0x01 && tmpvar != 0x02 && tmpvar != 0x03 && tmpvar != 0x08 &&
+                    tmpvar != 0x10 && tmpvar != 0x11 && tmpvar != 0x12 &&
+                    tmpvar != 0x21 && tmpvar != 0x22 &&  /* Core Profile Levels */
+                    tmpvar != 0xA1 && tmpvar != 0xA2 && tmpvar != 0xA3 &&
+                    tmpvar != 0xF0 && tmpvar != 0xF1 && /* Advanced Simple Profile Levels*/
+                    tmpvar != 0xF2 && tmpvar != 0xF3 &&
+                    tmpvar != 0xF4 && tmpvar != 0xF5)
+                return PV_FAIL;
+        }
+#else
+        profile = tmpvar;
+#endif
+
+        // save the profile and level for the query
+        currVol->profile_level_id = (uint)tmpvar; //  6/10/04
+
+
+
+        status = BitstreamShowBits32HC(stream, &tmpvar);
+        if (tmpvar == USER_DATA_START_CODE)
+        {
+            /* Something has to be done with user data  11/11/99 */
+            status = DecodeUserData(stream);
+            if (status != PV_SUCCESS) return PV_FAIL;
+        }
+        /* visual_object_start_code                     */
+        BitstreamShowBits32HC(stream, &tmpvar);
+        if (tmpvar != VISUAL_OBJECT_START_CODE)
+        {
+            do
+            {
+                /* Search for VOL_HEADER */
+                status = PVSearchNextM4VFrame(stream); /* search 0x00 0x00 0x01 */
+                if (status != PV_SUCCESS) return PV_FAIL; /* breaks the loop */
+                BitstreamShowBits32(stream, VOL_START_CODE_LENGTH, &tmpvar);
+                PV_BitstreamFlushBits(stream, 8);
+            }
+            while (tmpvar != VOL_START_CODE);
+            goto decode_vol;
+        }
+        else
+        {
+            BitstreamReadBits32HC(stream);
+        }
+
+        /*  is_visual_object_identifier            */
+        tmpvar = (uint32) BitstreamRead1Bits(stream);
+        if (tmpvar)
+        {
+            /* visual_object_verid                            */
+            tmpvar = (uint32) BitstreamReadBits16(stream, 4);
+            /* visual_object_priority                         */
+            tmpvar = (uint32) BitstreamReadBits16(stream, 3);
+        }
+        /* visual_object_type                                 */
+        BitstreamShowBits32(stream, 4, &tmpvar);
+        if (tmpvar == 1)
+        { /* video_signal_type */
+            PV_BitstreamFlushBits(stream, 4);
+            tmpvar = (uint32) BitstreamRead1Bits(stream);
+            if (tmpvar == 1)
+            {
+                /* video_format */
+                tmpvar = (uint32) BitstreamReadBits16(stream, 3);
+                /* video_range  */
+                tmpvar = (uint32) BitstreamRead1Bits(stream);
+                /* color_description */
+                tmpvar = (uint32) BitstreamRead1Bits(stream);
+                if (tmpvar == 1)
+                {
+                    /* color_primaries */
+                    tmpvar = (uint32) BitstreamReadBits16(stream, 8);
+                    /* transfer_characteristics */
+                    tmpvar = (uint32) BitstreamReadBits16(stream, 8);
+                    /* matrix_coefficients */
+                    tmpvar = (uint32) BitstreamReadBits16(stream, 8);
+                }
+            }
+        }
+        else
+        {
+            do
+            {
+                /* Search for VOL_HEADER */
+                status = PVSearchNextM4VFrame(stream); /* search 0x00 0x00 0x01 */
+                if (status != PV_SUCCESS) return PV_FAIL; /* breaks the loop */
+                BitstreamShowBits32(stream, VOL_START_CODE_LENGTH, &tmpvar);
+                PV_BitstreamFlushBits(stream, 8);
+            }
+            while (tmpvar != VOL_START_CODE);
+            goto decode_vol;
+        }
+
+        /* next_start_code() */
+        status = PV_BitstreamByteAlign(stream);                            /*  10/12/01 */
+        status = BitstreamShowBits32HC(stream, &tmpvar);
+
+        if (tmpvar == USER_DATA_START_CODE)
+        {
+            /* Something has to be done to deal with user data (parse it)  11/11/99 */
+            status = DecodeUserData(stream);
+            if (status != PV_SUCCESS) return PV_FAIL;
+        }
+        status = BitstreamShowBits32(stream, 27, &tmpvar);   /*  10/12/01 */
+    }
+    else
+    {
+        /*      tmpvar = 0;   */                                             /*  10/12/01 */
+        status = BitstreamShowBits32(stream, 27, &tmpvar);     /* uncomment this line if you want
+                                                                     to start decoding with a
+                                                                     video_object_start_code */
+    }
+
+    if (tmpvar == VO_START_CODE)
+    {
+        /*****
+        *
+        *   Read the VOL header entries from the bitstream
+        *
+        *****/
+        /* video_object_start_code                         */
+        tmpvar = BitstreamReadBits32(stream, 27);
+        tmpvar = (uint32) BitstreamReadBits16(stream, 5);
+
+
+        /* video_object_layer_start_code                   */
+        BitstreamShowBits32(stream, VOL_START_CODE_LENGTH, &tmpvar);
+        if (tmpvar != VOL_START_CODE)
+        {
+            status = BitstreamCheckEndBuffer(stream);
+            if (status == PV_END_OF_VOP)
+            {
+                video->shortVideoHeader = TRUE;
+                return PV_SUCCESS;
+            }
+            else
+            {
+                do
+                {
+                    /* Search for VOL_HEADER */
+                    status = PVSearchNextM4VFrame(stream);/* search 0x00 0x00 0x01 */
+                    if (status != PV_SUCCESS) return PV_FAIL; /* breaks the loop */
+                    BitstreamShowBits32(stream, VOL_START_CODE_LENGTH, &tmpvar);
+                    PV_BitstreamFlushBits(stream, 8); /* advance the byte ptr */
+                }
+                while (tmpvar != VOL_START_CODE);
+            }
+        }
+        else
+        {
+            PV_BitstreamFlushBits(stream, 8);
+        }
+
+decode_vol:
+        PV_BitstreamFlushBits(stream, VOL_START_CODE_LENGTH - 8);
+        video->shortVideoHeader = 0;
+
+        /* vol_id (4 bits) */
+        currVol->volID = (int) BitstreamReadBits16(stream, 4);
+
+        /* RandomAccessible flag */
+        tmpvar = (uint32) BitstreamRead1Bits(stream);
+
+        /* object type */
+        tmpvar = (uint32) BitstreamReadBits16(stream, 8);                /*  */
+
+#ifdef PV_TOLERATE_VOL_ERRORS
+        if (tmpvar == 0)
+        {
+            if (layer)                                                      /*    */
+            {
+                /* support SSPL0-2  */
+                if (profile != 0x10 && profile != 0x11 && profile != 0x12)
+                    return PV_FAIL;
+                tmpvar = 0x02;
+            }
+            else
+            {
+                /* support SPL0-3 & SSPL0-2   */
+                if (profile != 0x01 && profile != 0x02 && profile != 0x03 && profile != 0x08 &&
+                        profile != 0x10 && profile != 0x11 && profile != 0x12)
+                    return PV_FAIL;
+                tmpvar = 0x01;
+            }
+            profile |= 0x0100;
+        }
+#endif
+
+        if (layer)
+        {
+            if (tmpvar != 0x02) return PV_FAIL;
+        }
+        else
+        {
+            if (tmpvar != 0x01) return PV_FAIL;
+        }
+
+        /* version id specified? */
+        tmpvar = (uint32) BitstreamRead1Bits(stream);
+        if (tmpvar == 1)
+        {
+            /* version ID */
+            version_id = (uint32) BitstreamReadBits16(stream, 4);
+            /* priority */
+            tmpvar = (uint32) BitstreamReadBits16(stream, 3);
+
+        }
+
+        /* aspect ratio info */
+        tmpvar = (uint32) BitstreamReadBits16(stream, 4);
+        if (tmpvar == 0) return PV_FAIL;
+        if (tmpvar == 0xf /* extended_par */)
+        {
+            /* width */
+            tmpvar = (uint32) BitstreamReadBits16(stream, 8);
+            /* height */
+            tmpvar = (uint32) BitstreamReadBits16(stream, 8);
+        }
+
+
+        /* control parameters present? */
+        tmpvar = (uint32) BitstreamRead1Bits(stream);
+
+        /*  Get the parameters (skipped) */
+        /*  03/10/99 */
+        if (tmpvar)
+        {
+            /* chroma_format                    */
+            tmpvar = BitstreamReadBits16(stream, 2);
+            if (tmpvar != 1) return PV_FAIL;
+            /* low_delay  */
+            tmpvar = BitstreamRead1Bits(stream);
+
+            /* vbv_parameters present? */
+            tmpvar = (uint32) BitstreamRead1Bits(stream);
+            if (tmpvar)
+            {
+                /* first_half_bit_rate    */
+                BitstreamReadBits16(stream, 15);
+                if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+                /* latter_half_bit_rate   */
+                BitstreamReadBits16(stream, 15);
+                if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+                /* first_half_vbv_buffer_size   */
+                BitstreamReadBits16(stream, 15);
+                if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+                /* latter_half_vbv_buffer_size   */
+                BitstreamReadBits16(stream,  3);
+                /* first_half_vbv_occupancy     */
+                BitstreamReadBits16(stream, 11);
+                if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+                /* latter_half_vbv_occupancy  */
+                BitstreamReadBits16(stream, 15);
+                if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+            }
+        }
+
+        /* video_object_layer_shape (2 bits), only 00 (rect) is supported for now */
+        vol_shape = (uint32) BitstreamReadBits16(stream, 2);
+        if (vol_shape) return PV_FAIL;
+
+        /* marker bit,  03/10/99 */
+        if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+
+        /* vop_time_increment_resolution   */
+        currVol->timeIncrementResolution = BitstreamReadBits16(stream, 16);
+        if (currVol->timeIncrementResolution == 0) return PV_FAIL;
+
+        /* . since nbitsTimeIncRes will be used over and over again, */
+        /*    we should put it in Vol structure.  04/12/2000.          */
+        currVol->nbitsTimeIncRes = CalcNumBits((uint)currVol->timeIncrementResolution - 1);
+
+        if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+
+        /* fixed_vop_rate */
+        currVol->fixedVopRate = (int) BitstreamRead1Bits(stream);
+        if (currVol->fixedVopRate)
+        {
+            /* fixed_vop_time_increment */
+            tmpvar = BitstreamReadBits16(stream, currVol->nbitsTimeIncRes);
+        }
+
+        /* marker bit */
+        if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+
+        /* video_object_layer_width (13 bits) */
+        video->displayWidth = video->width = (int) BitstreamReadBits16(stream, 13);
+
+        /* round up to a multiple of MB_SIZE.   08/09/2000 */
+        video->width = (video->width + 15) & -16;
+//      video->displayWidth += (video->displayWidth & 0x1);  /* displayed image should be even size */
+
+        /* marker bit */
+        if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+
+        /* video_object_layer_height (13 bits) */
+        video->displayHeight = video->height = (int) BitstreamReadBits16(stream, 13);
+
+        /* round up to a multiple of MB_SIZE.   08/09/2000 */
+        video->height = (video->height + 15) & -16;
+//      video->displayHeight += (video->displayHeight & 0x1); /* displayed image should be even size */
+        if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+
+        /*  03/10/99 */
+        /* interlaced */
+        tmpvar = (uint32) BitstreamRead1Bits(stream);
+        if (tmpvar != 0)
+        {
+            mp4dec_log("DecodeVOLHeader(): Interlaced video is not supported.\n");
+            return PV_FAIL;
+        }
+
+        /* obmc_disable */
+        tmpvar = (uint32) BitstreamRead1Bits(stream);
+        if (tmpvar == 0) return PV_FAIL;
+
+        if (version_id == 1)
+        {
+            /*  sprite_enable (1 bits) */
+            tmpvar = (uint32) BitstreamRead1Bits(stream);
+            if (tmpvar)
+            {
+                mp4dec_log("DecodeVOLHeader(): Sprite is not supported.\n");
+                return PV_FAIL;
+            }
+        }
+        else
+        {
+            /* For version 2, vol_sprite_usage has two bits. */
+            /* sprite_enable */
+            tmpvar = (uint32) BitstreamReadBits16(stream, 2);
+            if (tmpvar)
+            {
+                mp4dec_log("DecodeVOLHeader(): Sprite is not supported.\n");
+                return PV_FAIL;
+            }
+        }
+
+        /* not_8_bit */
+        if (BitstreamRead1Bits(stream))
+        {
+            /* quant_precision */
+            currVol->quantPrecision = BitstreamReadBits16(stream, 4);
+            /* bits_per_pixel  */
+            currVol->bitsPerPixel = BitstreamReadBits16(stream, 4);
+            mp4dec_log("DecodeVOLHeader(): not an 8-bit stream.\n");    // For the time being we do not support != 8 bits
+
+            return PV_FAIL;
+        }
+        else
+        {
+            currVol->quantPrecision = 5;
+            currVol->bitsPerPixel = 8;
+        }
+
+        /* quant_type (1 bit) */
+        currVol->quantType = BitstreamRead1Bits(stream);
+        if (currVol->quantType)
+        {
+#ifdef PV_SUPPORT_MAIN_PROFILE
+            /* load quantization matrices.   5/22/2000 */
+            /* load_intra_quant_mat (1 bit) */
+            qmat = currVol->iqmat;
+            currVol->loadIntraQuantMat = BitstreamRead1Bits(stream);
+            if (currVol->loadIntraQuantMat)
+            {
+                /* intra_quant_mat (8*64 bits) */
+                i = 0;
+                do
+                {
+                    qmat[*(zigzag_inv+i)] = (int) BitstreamReadBits16(stream, 8);
+                }
+                while ((qmat[*(zigzag_inv+i)] != 0) && (++i < 64));
+
+                for (j = i; j < 64; j++)
+                    qmat[*(zigzag_inv+j)] = qmat[*(zigzag_inv+i-1)];
+            }
+            else
+            {
+                oscl_memcpy(qmat, mpeg_iqmat_def, 64*sizeof(int));
+            }
+
+            qmat[0] = 0;             /* necessary for switched && MPEG quant  07/09/01 */
+
+            /* load_nonintra_quant_mat (1 bit) */
+            qmat = currVol->niqmat;
+            currVol->loadNonIntraQuantMat = BitstreamRead1Bits(stream);
+            if (currVol->loadNonIntraQuantMat)
+            {
+                /* nonintra_quant_mat (8*64 bits) */
+                i = 0;
+                do
+                {
+                    qmat[*(zigzag_inv+i)] = (int) BitstreamReadBits16(stream, 8);
+                }
+                while ((qmat[*(zigzag_inv+i)] != 0) && (++i < 64));
+
+                for (j = i; j < 64; j++)
+                    qmat[*(zigzag_inv+j)] = qmat[*(zigzag_inv+i-1)];
+            }
+            else
+            {
+                oscl_memcpy(qmat, mpeg_nqmat_def, 64*sizeof(int));
+            }
+#else
+            return PV_FAIL;
+#endif
+        }
+
+        if (version_id != 1)
+        {
+            /* quarter_sample enabled */
+            tmpvar = BitstreamRead1Bits(stream);
+            if (tmpvar) return PV_FAIL;
+        }
+
+        /* complexity_estimation_disable */
+        currVol->complexity_estDisable = BitstreamRead1Bits(stream);
+        if (currVol->complexity_estDisable == 0)
+        {
+            currVol->complexity_estMethod = BitstreamReadBits16(stream, 2);
+
+            if (currVol->complexity_estMethod < 2)
+            {
+                /* shape_complexity_estimation_disable */
+                tmpvar = BitstreamRead1Bits(stream);
+                if (tmpvar == 0)
+                {
+                    mp4dec_log("DecodeVOLHeader(): Shape Complexity estimation is not supported.\n");
+                    return PV_FAIL;
+                }
+                /* texture_complexity_estimation_set_1_disable */
+                tmpvar = BitstreamRead1Bits(stream);
+                if (tmpvar == 0)
+                {
+                    currVol->complexity.text_1 = BitstreamReadBits16(stream, 4);
+                }
+                /* marker bit */
+                if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+                /* texture_complexity_estimation_set_2_disable */
+                tmpvar = BitstreamRead1Bits(stream);
+                if (tmpvar == 0)
+                {
+                    currVol->complexity.text_2 = BitstreamReadBits16(stream, 4);
+                }
+                /* motion_compensation_complexity_disable */
+                tmpvar = BitstreamRead1Bits(stream);
+                if (tmpvar == 0)
+                {
+                    currVol->complexity.mc = BitstreamReadBits16(stream, 6);
+                }
+                /* marker bit */
+                if (!BitstreamRead1Bits(stream)) return PV_FAIL;
+
+                if (currVol->complexity_estMethod == 1)
+                {   /* version2_complexity_estimation_disable */
+                    tmpvar = BitstreamRead1Bits(stream);
+                    if (tmpvar == 0)
+                    {
+                        mp4dec_log("DecodeVOLHeader(): sadct, quarter pel not supported.\n");
+                        return PV_FAIL;
+                    }
+                }
+            }
+        }
+
+        /*  03/10/99 */
+        /* resync_marker_disable */
+        currVol->errorResDisable = (int) BitstreamRead1Bits(stream);
+        /* data_partititioned    */
+        currVol->dataPartitioning = (int) BitstreamRead1Bits(stream);
+
+        video->vlcDecCoeffIntra = &VlcDecTCOEFIntra;
+        video->vlcDecCoeffInter = &VlcDecTCOEFInter;
+
+        if (currVol->dataPartitioning)
+        {
+            if (layer) return PV_FAIL;                              /*  */
+            /* reversible_vlc */
+            currVol->useReverseVLC = (int)BitstreamRead1Bits(stream);
+            if (currVol->useReverseVLC)
+            {
+                video->vlcDecCoeffIntra = &RvlcDecTCOEFIntra;
+                video->vlcDecCoeffInter = &RvlcDecTCOEFInter;
+            }
+            currVol->errorResDisable = 0;
+        }
+        else
+        {
+            currVol->useReverseVLC = 0;
+        }
+
+        if (version_id != 1)
+        {
+            /* newpred_enable */
+            tmpvar = BitstreamRead1Bits(stream);
+            if (tmpvar) return PV_FAIL;
+
+            /* reduced_resolution_vop */
+            tmpvar = BitstreamRead1Bits(stream);
+            if (tmpvar) return PV_FAIL;
+
+        }
+
+        /* Intra AC/DC prediction is always true */
+        video->intra_acdcPredDisable = 0;
+        /* scalability */
+        currVol->scalability = (int) BitstreamRead1Bits(stream);
+
+        if (currVol->scalability)
+        {
+            if (layer == 0)  return PV_FAIL;                     /*  */
+            /* hierarchy_type: 1 : temporal, 0 : spatial */
+            /*  03/10/99 */
+            currVol->scalType = (int) BitstreamRead1Bits(stream);              /*  */
+            if (!currVol->scalType) return PV_FAIL;
+
+            /* ref_layer_id (4 bits) */
+            currVol->refVolID = (int) BitstreamReadBits16(stream, 4);
+            if (layer)                                                      /*  */
+            {
+                if (currVol->refVolID != video->vol[0]->volID) return PV_FAIL;
+            }
+            /* ref_layer_sampling_direc (1 bits)              */
+            /*   1 : ref. layer has higher resolution         */
+            /*   0 : ref. layer has equal or lower resolution */
+            currVol->refSampDir = (int) BitstreamRead1Bits(stream);
+            if (currVol->refSampDir) return PV_FAIL;
+
+            /* hor_sampling_factor_n (5 bits) */
+            currVol->horSamp_n = (int) BitstreamReadBits16(stream, 5);
+
+            /* hor_sampling_factor_m (5 bits) */
+            currVol->horSamp_m = (int) BitstreamReadBits16(stream, 5);
+
+            if (currVol->horSamp_m == 0) return PV_FAIL;
+            if (currVol->horSamp_n != currVol->horSamp_m) return PV_FAIL;
+
+            /* ver_sampling_factor_n (5 bits) */
+            currVol->verSamp_n = (int) BitstreamReadBits16(stream, 5);
+
+            /* ver_sampling_factor_m (5 bits) */
+            currVol->verSamp_m = (int) BitstreamReadBits16(stream, 5);
+
+            if (currVol->verSamp_m == 0) return PV_FAIL;
+            if (currVol->verSamp_n != currVol->verSamp_m) return PV_FAIL;
+
+
+            /* enhancement_type: 1 : partial region, 0 : full region */
+            /* 04/10/2000: we only support full region enhancement layer. */
+            if (BitstreamRead1Bits(stream)) return PV_FAIL;
+        }
+
+        PV_BitstreamByteAlign(stream);
+
+        status = BitstreamShowBits32HC(stream, &tmpvar);
+
+        /* if we hit the end of buffer, tmpvar == 0.   08/30/2000 */
+        if (tmpvar == USER_DATA_START_CODE)
+        {
+            status = DecodeUserData(stream);
+            /* you should not check for status here  03/19/2002 */
+            status = PV_SUCCESS;
+        }
+
+        /* Compute some convenience variables:   04/13/2000 */
+        video->nMBPerRow = video->width / MB_SIZE;
+        video->nMBPerCol = video->height / MB_SIZE;
+        video->nTotalMB = video->nMBPerRow * video->nMBPerCol;
+        video->nBitsForMBID = CalcNumBits((uint)video->nTotalMB - 1);
+#ifdef PV_ANNEX_IJKT_SUPPORT
+        video->modified_quant = 0;
+        video->advanced_INTRA = 0;
+        video->deblocking = 0;
+        video->slice_structure = 0;
+#endif
+    }
+    else
+    {
+        /* SHORT_HEADER */
+        status = BitstreamShowBits32(stream, SHORT_VIDEO_START_MARKER_LENGTH, &tmpvar);
+
+        if (tmpvar == SHORT_VIDEO_START_MARKER)
+        {
+            video->shortVideoHeader = TRUE;
+        }
+        else
+        {
+            do
+            {
+                /* Search for VOL_HEADER */
+                status = PVSearchNextM4VFrame(stream); /* search 0x00 0x00 0x01 */
+                if (status != PV_SUCCESS) return PV_FAIL; /* breaks the loop */
+                BitstreamShowBits32(stream, VOL_START_CODE_LENGTH, &tmpvar);
+                PV_BitstreamFlushBits(stream, 8);
+            }
+            while (tmpvar != VOL_START_CODE);
+            goto decode_vol;
+        }
+    }
+#ifdef PV_TOLERATE_VOL_ERRORS
+    if (profile > 0xFF || profile == 0)
+    {
+        return PV_BAD_VOLHEADER;
+    }
+#endif
+
+    return status;
+}
+
+
+/***********************************************************CommentBegin******
+*
+* -- DecodeGOV -- Decodes the Group of VOPs from bitstream
+*
+*   04/20/2000  initial modification to the new PV-Decoder Lib format.
+*
+***********************************************************CommentEnd********/
+PV_STATUS DecodeGOVHeader(BitstreamDecVideo *stream, uint32 *time_base)
+{
+    uint32 tmpvar, time_s;
+    int closed_gov, broken_link;
+
+    /* group_start_code (32 bits) */
+//   tmpvar = BitstreamReadBits32(stream, 32);
+
+    /* hours */
+    tmpvar = (uint32) BitstreamReadBits16(stream, 5);
+    time_s = tmpvar * 3600;
+
+    /* minutes */
+    tmpvar = (uint32) BitstreamReadBits16(stream, 6);
+    time_s += tmpvar * 60;
+
+    /* marker bit */
+    tmpvar = (uint32) BitstreamRead1Bits(stream);
+
+    /* seconds */
+    tmpvar = (uint32) BitstreamReadBits16(stream, 6);
+    time_s += tmpvar;
+
+    /* We have to check the timestamp here.  If the sync timestamp is */
+    /*    earlier than the previous timestamp or longer than 60 sec.  */
+    /*    after the previous timestamp, assume the GOV header is      */
+    /*    corrupted.                                 05/12/2000     */
+    *time_base = time_s;   /*  02/27/2002 */
+//  *time_base = *time_base/1000;
+//  tmpvar = time_s - *time_base;
+//  if (tmpvar <= 60) *time_base = time_s;
+//  else return PV_FAIL;
+
+    tmpvar = (uint32) BitstreamRead1Bits(stream);
+    closed_gov = tmpvar;
+    tmpvar = (uint32) BitstreamRead1Bits(stream);
+    broken_link = tmpvar;
+
+    if ((closed_gov == 0) && (broken_link == 1))
+    {
+        return PV_SUCCESS;        /*  03/15/2002  you can also return PV_FAIL */
+    }
+
+    PV_BitstreamByteAlign(stream);
+
+    BitstreamShowBits32HC(stream, &tmpvar);
+
+    while (tmpvar == USER_DATA_START_CODE)       /*  03/15/2002 */
+    {
+        DecodeUserData(stream);
+        BitstreamShowBits32HC(stream, &tmpvar);
+    }
+
+    return PV_SUCCESS;
+}
+
+/***********************************************************CommentBegin******
+*
+* -- DecodeVopHeader -- Decodes the VOPheader information from the bitstream
+*
+*   04/12/2000  Initial port to the new PV decoder library format.
+*   05/10/2000  Error resilient decoding of vop header.
+*
+***********************************************************CommentEnd********/
+PV_STATUS DecodeVOPHeader(VideoDecData *video, Vop *currVop, Bool use_ext_timestamp)
+{
+    PV_STATUS status = PV_SUCCESS;
+    Vol *currVol = video->vol[video->currLayer];
+    BitstreamDecVideo *stream = currVol->bitstream;
+    uint32 tmpvar;
+    int time_base;
+
+    /*****
+    *   Read the VOP header from the bitstream (No shortVideoHeader Mode here!)
+    *****/
+    BitstreamShowBits32HC(stream, &tmpvar);
+
+    /* check if we have a GOV header here.   08/30/2000 */
+    if (tmpvar == GROUP_START_CODE)
+    {
+        tmpvar = BitstreamReadBits32HC(stream);
+//      rewindBitstream(stream, START_CODE_LENGTH); /* for backward compatibility */
+        status = DecodeGOVHeader(stream, &tmpvar);
+        if (status != PV_SUCCESS)
+        {
+            return status;
+        }
+//      use_ext_timestamp = TRUE;   /*  02/08/2002 */
+        /* We should have a VOP header following the GOV header.  03/15/2001 */
+        BitstreamShowBits32HC(stream, &tmpvar);
+    }
+#ifdef PV_SUPPORT_TEMPORAL_SCALABILITY
+    currVop->timeStamp = -1;
+#endif
+    if (tmpvar == VOP_START_CODE)
+    {
+        tmpvar = BitstreamReadBits32HC(stream);
+    }
+    else
+    {
+        PV_BitstreamFlushBits(stream, 8); // advance by a byte
+        status = PV_FAIL;
+        goto return_point;
+    }
+
+
+
+    /* vop_prediction_type (2 bits) */
+    currVop->predictionType = (int) BitstreamReadBits16(stream, 2);
+
+    /* modulo_time_base (? bits) */
+    time_base = -1;
+    do
+    {
+        time_base++;
+        tmpvar = (uint32) BitstreamRead1Bits(stream);
+    }
+    while (tmpvar == 1);
+
+
+
+    if (!use_ext_timestamp)
+    {
+        currVol->moduloTimeBase += 1000 * time_base; /* milliseconds based MTB  11/12/01 */
+    }
+
+    /* marker_bit (1 bit) */
+    if (!BitstreamRead1Bits(stream))
+    {
+        status = PV_FAIL;
+        goto return_point;
+    }
+
+    /* vop_time_increment (1-15 bits) in Nov_Compliant (1-16 bits) */
+    /*    we always assumes fixed vop rate here */
+    currVop->timeInc = BitstreamReadBits16(stream, currVol->nbitsTimeIncRes);
+
+
+    /* marker_bit (1 bit) */
+    if (!BitstreamRead1Bits(stream))
+    {
+        status = PV_FAIL;
+        goto return_point;
+    }
+
+    /* vop_coded */
+    currVop->vopCoded = (int) BitstreamRead1Bits(stream);
+
+
+    if (currVop->vopCoded == 0)
+    {
+        status = PV_SUCCESS;
+        goto return_point;
+    }
+
+
+    /* read vop_rounding_type */
+    if (currVop->predictionType == P_VOP)
+    {
+        currVop->roundingType = (int) BitstreamRead1Bits(stream);
+    }
+    else
+    {
+        currVop->roundingType = 0;
+    }
+
+    if (currVol->complexity_estDisable == 0)
+    {
+        if (currVol->complexity_estMethod < 2)   /*   OCT 2002 */
+        {
+            if ((currVol->complexity.text_1 >> 3) & 0x1)    /* intra        */
+                BitstreamReadBits16(stream, 8);
+            if (currVol->complexity.text_1 & 0x1)           /* not_coded    */
+                BitstreamReadBits16(stream, 8);
+            if ((currVol->complexity.text_2 >> 3) & 0x1)    /* dct_coefs    */
+                BitstreamReadBits16(stream, 8);
+            if ((currVol->complexity.text_2 >> 2) & 0x1)    /* dct_lines    */
+                BitstreamReadBits16(stream, 8);
+            if ((currVol->complexity.text_2 >> 1) & 0x1)    /* vlc_symbols  */
+                BitstreamReadBits16(stream, 8);
+            if (currVol->complexity.text_2 & 0x1)           /* vlc_bits     */
+                BitstreamReadBits16(stream, 4);
+
+            if (currVop->predictionType != I_VOP)
+            {
+                if ((currVol->complexity.text_1 >> 2) & 0x1)    /* inter    */
+                    BitstreamReadBits16(stream, 8);
+                if ((currVol->complexity.text_1 >> 1) & 0x1)    /* inter_4v */
+                    BitstreamReadBits16(stream, 8);
+                if ((currVol->complexity.mc >> 5) & 0x1)        /* apm      */
+                    BitstreamReadBits16(stream, 8);
+                if ((currVol->complexity.mc >> 4) & 0x1)        /* npm      */
+                    BitstreamReadBits16(stream, 8);
+                /* interpolate_mc_q */
+                if ((currVol->complexity.mc >> 2) & 0x1)        /* forw_back_mc_q */
+                    BitstreamReadBits16(stream, 8);
+                if ((currVol->complexity.mc >> 1) & 0x1)        /* halfpel2 */
+                    BitstreamReadBits16(stream, 8);
+                if (currVol->complexity.mc & 0x1)               /* halfpel4 */
+                    BitstreamReadBits16(stream, 8);
+            }
+            if (currVop->predictionType == B_VOP)
+            {
+                if ((currVol->complexity.mc >> 3) & 0x1)        /* interpolate_mc_q */
+                    BitstreamReadBits16(stream, 8);
+            }
+        }
+    }
+
+    /* read intra_dc_vlc_thr */
+    currVop->intraDCVlcThr = (int) BitstreamReadBits16(stream, 3);
+
+    /* read vop_quant (currVol->quantPrecision bits) */
+    currVop->quantizer = (int16) BitstreamReadBits16(stream, currVol->quantPrecision);
+    if (currVop->quantizer == 0)
+    {
+        currVop->quantizer = video->prevVop->quantizer;
+        status = PV_FAIL;
+        goto return_point;
+    }
+
+
+    /* read vop_fcode_forward */
+    if (currVop->predictionType != I_VOP)
+    {
+        tmpvar = (uint32) BitstreamReadBits16(stream, 3);
+        if (tmpvar < 1)
+        {
+            currVop->fcodeForward = 1;
+            status = PV_FAIL;
+            goto return_point;
+        }
+        currVop->fcodeForward = tmpvar;
+    }
+    else
+    {
+        currVop->fcodeForward = 0;
+    }
+
+    /* read vop_fcode_backward */
+    if (currVop->predictionType == B_VOP)
+    {
+        tmpvar = (uint32) BitstreamReadBits16(stream, 3);
+        if (tmpvar < 1)
+        {
+            currVop->fcodeBackward = 1;
+            status = PV_FAIL;
+            goto return_point;
+        }
+        currVop->fcodeBackward = tmpvar;
+    }
+    else
+    {
+        currVop->fcodeBackward = 0;
+    }
+
+    if (currVol->scalability)
+    {
+        currVop->refSelectCode = (int) BitstreamReadBits16(stream, 2);
+    }
+
+return_point:
+    return status;
+}
+
+
+/***********************************************************CommentBegin******
+*
+* -- VideoPlaneWithShortHeader -- Decodes the short_video_header information from the bitstream
+* Modified :
+             04/23/2001.  Remove the codes related to the
+                 "first pass" decoding.  We use a different function
+                 to set up the decoder now.
+***********************************************************CommentEnd********/
+PV_STATUS DecodeShortHeader(VideoDecData *video, Vop *currVop)
+{
+    PV_STATUS status = PV_SUCCESS;
+    Vol *currVol = video->vol[0];
+    BitstreamDecVideo *stream = currVol->bitstream;
+    uint32 tmpvar;
+    int32 size;
+
+    int extended_PTYPE = FALSE;
+    int UFEP = 0, custom_PFMT = 0, custom_PCF = 0;
+
+    status = BitstreamShowBits32(stream, SHORT_VIDEO_START_MARKER_LENGTH, &tmpvar);
+
+    if (tmpvar !=  SHORT_VIDEO_START_MARKER)
+    {
+        status = PV_FAIL;
+        goto return_point;
+    }
+
+
+    PV_BitstreamFlushBits(stream, SHORT_VIDEO_START_MARKER_LENGTH);
+
+    /* Temporal reference. Using vop_time_increment_resolution = 30000 */
+    tmpvar = (uint32) BitstreamReadBits16(stream, 8);
+    currVop->temporalRef = (int) tmpvar;
+
+
+    currVop->timeInc = 0xff & (256 + currVop->temporalRef - video->prevVop->temporalRef);
+    currVol->moduloTimeBase += currVop->timeInc; /* mseconds   11/12/01 */
+    /* Marker Bit */
+    if (!BitstreamRead1Bits(stream))
+    {
+        mp4dec_log("DecodeShortHeader(): Market bit wrong.\n");
+        status = PV_FAIL;
+        goto return_point;
+    }
+
+    /* Zero Bit */
+    if (BitstreamRead1Bits(stream))
+    {
+        mp4dec_log("DecodeShortHeader(): Zero bit wrong.\n");
+        status = PV_FAIL;
+        goto return_point;
+    }
+
+    /*split_screen_indicator*/
+    if (BitstreamRead1Bits(stream))
+    {
+        mp4dec_log("DecodeShortHeader(): Split Screen not supported.\n");
+        VideoDecoderErrorDetected(video);
+    }
+
+    /*document_freeze_camera*/
+    if (BitstreamRead1Bits(stream))
+    {
+        mp4dec_log("DecodeShortHeader(): Freeze Camera not supported.\n");
+        VideoDecoderErrorDetected(video);
+    }
+
+    /*freeze_picture_release*/
+    if (BitstreamRead1Bits(stream))
+    {
+        mp4dec_log("DecodeShortHeader(): Freeze Release not supported.\n");
+        VideoDecoderErrorDetected(video);
+    }
+    /* source format */
+    switch (BitstreamReadBits16(stream, 3))
+    {
+        case 1:
+            if (video->size < 128*96)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            video->displayWidth = video->width =  128;
+            video->displayHeight = video->height  = 96;
+            break;
+
+        case 2:
+            if (video->size < 176*144)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            video->displayWidth = video->width  = 176;
+            video->displayHeight = video->height  = 144;
+            break;
+
+        case 3:
+            if (video->size < 352*288)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            video->displayWidth = video->width = 352;
+            video->displayHeight = video->height = 288;
+            break;
+
+        case 4:
+            if (video->size < 704*576)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            video->displayWidth = video->width = 704;
+            video->displayHeight = video->height = 576;
+            break;
+
+        case 5:
+            if (video->size < 1408*1152)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            video->displayWidth = video->width = 1408;
+            video->displayHeight = video->height = 1152;
+            break;
+
+        case 7:
+            extended_PTYPE = TRUE;
+            break;
+
+        default:
+            /* Msg("H.263 source format not legal\n"); */
+            status = PV_FAIL;
+            goto return_point;
+    }
+
+
+    currVop->roundingType = 0;
+
+    if (extended_PTYPE == FALSE)
+    {
+        currVop->predictionType = (int) BitstreamRead1Bits(stream);
+
+        /* four_reserved_zero_bits */
+        if (BitstreamReadBits16(stream, 4))
+        {
+            mp4dec_log("DecodeShortHeader(): Reserved bits wrong.\n");
+            status = PV_FAIL;
+            goto return_point;
+        }
+    }
+    else
+    {
+        UFEP = BitstreamReadBits16(stream, 3);
+        if (UFEP == 1)
+        {
+            /* source format */
+            switch (BitstreamReadBits16(stream, 3))
+            {
+                case 1:
+                    if (video->size < 128*96)
+                    {
+                        status = PV_FAIL;
+                        goto return_point;
+                    }
+                    video->displayWidth = video->width =  128;
+                    video->displayHeight = video->height  = 96;
+                    break;
+
+                case 2:
+                    if (video->size < 176*144)
+                    {
+                        status = PV_FAIL;
+                        goto return_point;
+                    }
+                    video->displayWidth = video->width  = 176;
+                    video->displayHeight = video->height  = 144;
+                    break;
+
+                case 3:
+                    if (video->size < 352*288)
+                    {
+                        status = PV_FAIL;
+                        goto return_point;
+                    }
+                    video->displayWidth = video->width = 352;
+                    video->displayHeight = video->height = 288;
+                    break;
+
+                case 4:
+                    if (video->size < 704*576)
+                    {
+                        status = PV_FAIL;
+                        goto return_point;
+                    }
+                    video->displayWidth = video->width = 704;
+                    video->displayHeight = video->height = 576;
+                    break;
+
+                case 5:
+                    if (video->size < 1408*1152)
+                    {
+                        status = PV_FAIL;
+                        goto return_point;
+                    }
+                    video->displayWidth = video->width = 1408;
+                    video->displayHeight = video->height = 1152;
+                    break;
+
+                case 6:
+                    custom_PFMT = TRUE;
+                    break;
+
+                default:
+                    /* Msg("H.263 source format not legal\n"); */
+                    status = PV_FAIL;
+                    goto return_point;
+            }
+
+            custom_PCF = BitstreamRead1Bits(stream);
+            /* unrestricted MV */
+            if (BitstreamRead1Bits(stream))
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            /* SAC */
+            if (BitstreamRead1Bits(stream))
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+
+            /* AP */
+            if (BitstreamRead1Bits(stream))
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+
+            video->advanced_INTRA = BitstreamRead1Bits(stream);
+
+            video->deblocking = BitstreamRead1Bits(stream);
+
+            video->slice_structure = BitstreamRead1Bits(stream);
+
+            /* RPS, ISD, AIV */
+            if (BitstreamReadBits16(stream, 3))
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            video->modified_quant = BitstreamRead1Bits(stream);
+
+            /* Marker Bit and reserved*/
+            if (BitstreamReadBits16(stream, 4) != 8)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+        }
+#ifndef PV_ANNEX_IJKT_SUPPORT
+        if (video->advanced_INTRA | video->deblocking | video->modified_quant | video->modified_quant)
+        {
+            status = PV_FAIL;
+            goto return_point;
+        }
+#endif
+
+        if (UFEP == 0 || UFEP == 1)
+        {
+            tmpvar = BitstreamReadBits16(stream, 3);
+            if (tmpvar > 1)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            currVop->predictionType = tmpvar;
+            /* RPR */
+            if (BitstreamRead1Bits(stream))
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+
+            /* RRU */
+            if (BitstreamRead1Bits(stream))
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            currVop->roundingType = (int) BitstreamRead1Bits(stream);
+            if (BitstreamReadBits16(stream, 3) != 1)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+        }
+        else
+        {
+            status = PV_FAIL;
+            goto return_point;
+        }
+        /* CPM */
+        if (BitstreamRead1Bits(stream))
+        {
+            status = PV_FAIL;
+            goto return_point;
+        }
+        /* CPFMT */
+        if (custom_PFMT == 1 && UFEP == 1)
+        {
+            /* aspect ratio */
+            tmpvar = BitstreamReadBits16(stream, 4);
+            if (tmpvar == 0)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            /* Extended PAR */
+            if (tmpvar == 0xF)
+            {
+                /* Read par_width and par_height but do nothing */
+                /* par_width */
+                tmpvar = BitstreamReadBits16(stream, 8);
+
+                /* par_height */
+                tmpvar = BitstreamReadBits16(stream, 8);
+            }
+            tmpvar = BitstreamReadBits16(stream, 9);
+
+            video->displayWidth = (tmpvar + 1) << 2;
+            video->width = (video->displayWidth + 15) & -16;
+            /* marker bit */
+            if (!BitstreamRead1Bits(stream))
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            tmpvar = BitstreamReadBits16(stream, 9);
+            if (tmpvar == 0)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+            video->displayHeight = tmpvar << 2;
+            video->height = (video->displayHeight + 15) & -16;
+
+            if (video->height * video->width > video->size)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+
+            video->nTotalMB = video->width / MB_SIZE * video->height / MB_SIZE;
+
+            if (video->nTotalMB <= 48)
+            {
+                video->nBitsForMBID = 6;
+            }
+            else if (video->nTotalMB <= 99)
+            {
+                video->nBitsForMBID = 7;
+            }
+            else if (video->nTotalMB <= 396)
+            {
+                video->nBitsForMBID = 9;
+            }
+            else if (video->nTotalMB <= 1584)
+            {
+                video->nBitsForMBID = 11;
+            }
+            else if (video->nTotalMB <= 6336)
+            {
+                video->nBitsForMBID = 13 ;
+            }
+            else if (video->nTotalMB <= 9216)
+            {
+                video->nBitsForMBID = 14 ;
+            }
+            else
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+        }
+        if (UFEP == 1 && custom_PCF == 1)
+        {
+            BitstreamRead1Bits(stream);
+
+            tmpvar = BitstreamReadBits16(stream, 7);
+            if (tmpvar == 0)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+        }
+
+        if (custom_PCF == 1)
+        {
+            currVop->ETR = BitstreamReadBits16(stream, 2);
+        }
+
+        if (UFEP == 1 && video->slice_structure == 1)
+        {
+            /* SSS */
+            tmpvar = BitstreamReadBits16(stream, 2);
+            if (tmpvar != 0)
+            {
+                status = PV_FAIL;
+                goto return_point;
+            }
+        }
+    }
+
+    /* Recalculate number of macroblocks per row & col since */
+    /*  the frame size can change.           04/23/2001.   */
+    video->nMBinGOB = video->nMBPerRow = video->width / MB_SIZE;
+    video->nGOBinVop = video->nMBPerCol = video->height / MB_SIZE;
+    video->nTotalMB = video->nMBPerRow * video->nMBPerCol;
+    if (custom_PFMT == 0  || UFEP == 0)
+    {
+        video->nBitsForMBID = CalcNumBits((uint)video->nTotalMB - 1); /* otherwise calculate above */
+    }
+    size = (int32)video->width * video->height;
+    if (video->currVop->predictionType == P_VOP && size > video->videoDecControls->size)
+    {
+        status = PV_FAIL;
+        goto return_point;
+    }
+    video->videoDecControls->size = size;
+    video->currVop->uChan = video->currVop->yChan + size;
+    video->currVop->vChan = video->currVop->uChan + (size >> 2);
+    video->prevVop->uChan = video->prevVop->yChan + size;
+    video->prevVop->vChan = video->prevVop->uChan + (size >> 2);
+
+
+    currVop->quantizer = (int16) BitstreamReadBits16(stream, 5);
+
+    if (currVop->quantizer == 0)                          /*  04/03/01 */
+    {
+        currVop->quantizer = video->prevVop->quantizer;
+        status = PV_FAIL;
+        goto return_point;
+    }
+
+
+    /* Zero bit */
+    if (extended_PTYPE == FALSE)
+    {
+        if (BitstreamRead1Bits(stream))
+        {
+            mp4dec_log("DecodeShortHeader(): Zero bit wrong.\n");
+            status = PV_FAIL;
+            goto return_point;
+        }
+    }
+    /* pei */
+    tmpvar = (uint32) BitstreamRead1Bits(stream);
+
+    while (tmpvar)
+    {
+        tmpvar = (uint32) BitstreamReadBits16(stream, 8); /* "PSPARE" */
+        tmpvar = (uint32) BitstreamRead1Bits(stream); /* "PEI" */
+    }
+
+    if (video->slice_structure)  /* ANNEX_K */
+    {
+        if (!BitstreamRead1Bits(stream))  /* SEPB1 */
+        {
+            status = PV_FAIL;
+            goto return_point;
+        }
+
+        //  if (currVol->nBitsForMBID //
+        if (BitstreamReadBits16(stream, video->nBitsForMBID))
+        {
+            status = PV_FAIL;             /* no ASO, RS support for Annex K */
+            goto return_point;
+        }
+
+        if (!BitstreamRead1Bits(stream))  /*SEPB3 */
+        {
+            status = PV_FAIL;
+            goto return_point;
+        }
+
+    }
+    /* Setting of other VOP-header parameters */
+    currVop->gobNumber = 0;
+    currVop->vopCoded = 1;
+
+    currVop->intraDCVlcThr = 0;
+    currVop->gobFrameID = 0; /* initial value,  05/22/00 */
+    currVol->errorResDisable = 0;
+    /*PutVopInterlaced(0,curr_vop); no implemented yet */
+    if (currVop->predictionType != I_VOP)
+        currVop->fcodeForward = 1;
+    else
+        currVop->fcodeForward = 0;
+
+return_point:
+
+    return status;
+}
+/***********************************************************CommentBegin******
+*
+* -- PV_DecodeVop -- Decodes the VOP information from the bitstream
+*
+*   04/12/2000
+*                   Initial port to the new PV decoder library format.
+*                   This function is different from the one in MoMuSys MPEG-4
+*                   visual decoder.  We handle combined mode with or withput
+*                   error resilience and H.263 mode through the sam path now.
+*
+*   05/04/2000
+*                   Added temporal scalability to the decoder.
+*
+***********************************************************CommentEnd********/
+PV_STATUS PV_DecodeVop(VideoDecData *video)
+{
+    Vol *currVol = video->vol[video->currLayer];
+    PV_STATUS status;
+    uint32 tmpvar;
+
+    /*****
+    *   Do scalable or non-scalable decoding of the current VOP
+    *****/
+
+    if (!currVol->scalability)
+    {
+        if (currVol->dataPartitioning)
+        {
+            /* Data partitioning mode comes here */
+            status = DecodeFrameDataPartMode(video);
+        }
+        else
+        {
+            /* Combined mode with or without error resilience */
+            /*    and short video header comes here.          */
+            status = DecodeFrameCombinedMode(video);
+        }
+    }
+    else
+    {
+#ifdef DO_NOT_FOLLOW_STANDARD
+        /* according to the standard, only combined mode is allowed */
+        /*    in the enhancement layer.          06/01/2000.        */
+        if (currVol->dataPartitioning)
+        {
+            /* Data partitioning mode comes here */
+            status = DecodeFrameDataPartMode(video);
+        }
+        else
+        {
+            /* Combined mode with or without error resilience */
+            /*    and short video header comes here.          */
+            status = DecodeFrameCombinedMode(video);
+        }
+#else
+        status = DecodeFrameCombinedMode(video);
+#endif
+    }
+
+    /* This part is for consuming Visual_object_sequence_end_code and EOS Code */   /*  10/15/01 */
+    if (!video->shortVideoHeader)
+    {
+        /* at this point bitstream is expected to be byte aligned */
+        BitstreamByteAlignNoForceStuffing(currVol->bitstream);
+
+        status = BitstreamShowBits32HC(currVol->bitstream, &tmpvar);  /*  07/07/01 */
+        if (tmpvar == VISUAL_OBJECT_SEQUENCE_END_CODE)/* VOS_END_CODE */
+        {
+            PV_BitstreamFlushBits(currVol->bitstream, 16);
+            PV_BitstreamFlushBits(currVol->bitstream, 16);
+        }
+
+    }
+    else
+    {
+#ifdef PV_ANNEX_IJKT_SUPPORT
+        if (video->deblocking)
+        {
+            H263_Deblock(video->currVop->yChan, video->width, video->height, video->QPMB, video->headerInfo.Mode, 0, 0);
+            H263_Deblock(video->currVop->uChan, video->width >> 1, video->height >> 1, video->QPMB, video->headerInfo.Mode, 1, video->modified_quant);
+            H263_Deblock(video->currVop->vChan, video->width >> 1, video->height >> 1, video->QPMB, video->headerInfo.Mode, 1, video->modified_quant);
+        }
+#endif
+        /* Read EOS code for shortheader bitstreams    */
+        status = BitstreamShowBits32(currVol->bitstream, 22, &tmpvar);
+        if (tmpvar == SHORT_VIDEO_END_MARKER)
+        {
+            PV_BitstreamFlushBits(currVol->bitstream, 22);
+        }
+        else
+        {
+            status = PV_BitstreamShowBitsByteAlign(currVol->bitstream, 22, &tmpvar);
+            if (tmpvar == SHORT_VIDEO_END_MARKER)
+            {
+                PV_BitstreamByteAlign(currVol->bitstream);
+                PV_BitstreamFlushBits(currVol->bitstream, 22);
+            }
+        }
+    }
+    return status;
+}
+
+
+/***********************************************************CommentBegin******
+*
+* -- CalcVopDisplayTime -- calculate absolute time when VOP is to be displayed
+*
+*   04/12/2000 Initial port to the new PV decoder library format.
+*
+***********************************************************CommentEnd********/
+uint32 CalcVopDisplayTime(Vol *currVol, Vop *currVop, int shortVideoHeader)
+{
+    uint32 display_time;
+
+
+    /*****
+    *   Calculate the time when the VOP is to be displayed next
+    *****/
+
+    if (!shortVideoHeader)
+    {
+        display_time = (uint32)(currVol->moduloTimeBase + (((int32)currVop->timeInc - (int32)currVol->timeInc_offset) * 1000) / ((int32)currVol->timeIncrementResolution));  /*  11/12/2001 */
+        if (currVop->timeStamp >= display_time)
+        {
+            display_time += 1000;  /* this case is valid if GOVHeader timestamp is ignored */
+        }
+    }
+    else
+    {
+        display_time = (uint32)(currVol->moduloTimeBase * 33 + (currVol->moduloTimeBase * 11) / 30); /*  11/12/2001 */
+    }
+
+    return(display_time);
+}
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/zigzag.h b/media/libstagefright/codecs/m4v_h263/dec/src/zigzag.h
new file mode 100644
index 0000000..4690a18
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/zigzag.h
@@ -0,0 +1,72 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+
+#ifndef zigzag_H
+#define zigzag_H
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; EXTERNAL VARIABLES REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    extern const int zigzag_inv[3*NCOEFF_BLOCK];
+    /*----------------------------------------------------------------------------
+    ; SIMPLE TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; ENUMERATED TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; STRUCTURES TYPEDEF'S
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; GLOBAL FUNCTION DEFINITIONS
+    ; Function Prototype declaration
+    ----------------------------------------------------------------------------*/
+
+    /*----------------------------------------------------------------------------
+    ; END
+    ----------------------------------------------------------------------------*/
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/zigzag_tab.cpp b/media/libstagefright/codecs/m4v_h263/dec/src/zigzag_tab.cpp
new file mode 100644
index 0000000..33dbb14
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/dec/src/zigzag_tab.cpp
@@ -0,0 +1,110 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+
+#include    "mp4dec_api.h"
+#include    "mp4def.h"
+#include    "zigzag.h"
+/*----------------------------------------------------------------------------
+; MACROS
+; Define module specific macros here
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; DEFINES
+; Include all pre-processor statements here. Include conditional
+; compile variables also.
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+; LOCAL FUNCTION DEFINITIONS
+; Function Prototype declaration
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; LOCAL STORE/BUFFER/POINTER DEFINITIONS
+; Variable declaration - defined here and used outside this module
+----------------------------------------------------------------------------*/
+const int zigzag_inv[3*NCOEFF_BLOCK] =
+{
+    0,  1,  8, 16,  9,  2,  3, 10,
+    17, 24, 32, 25, 18, 11,  4,  5,
+    12, 19, 26, 33, 40, 48, 41, 34,
+    27, 20, 13,  6,  7, 14, 21, 28,
+    35, 42, 49, 56, 57, 50, 43, 36,
+    29, 22, 15, 23, 30, 37, 44, 51,
+    58, 59, 52, 45, 38, 31, 39, 46,
+    53, 60, 61, 54, 47, 55, 62, 63,
+//};
+
+    /* Vertical inverse zigzag */
+//const static Int zigzag_v_inv[NCOEFF_BLOCK] = {
+    0, 8, 16, 24, 1, 9, 2, 10,
+    17, 25, 32, 40, 48, 56, 57, 49,
+    41, 33, 26, 18, 3, 11, 4, 12,
+    19, 27, 34, 42, 50, 58, 35, 43,
+    51, 59, 20, 28, 5, 13, 6, 14,
+    21, 29, 36, 44, 52, 60, 37, 45,
+    53, 61, 22, 30, 7, 15, 23, 31,
+    38, 46, 54, 62, 39, 47, 55, 63,
+//};
+    /* Horizontal inverse zigzag*/
+//const static Int zizag_h_inv[NCOEFF_BLOCK] = {
+    0, 1, 2, 3, 8, 9, 16, 17,
+    10, 11, 4, 5, 6, 7, 15, 14,
+    13, 12, 19, 18, 24, 25, 32, 33,
+    26, 27, 20, 21, 22, 23, 28, 29,
+    30, 31, 34, 35, 40, 41, 48, 49,
+    42, 43, 36, 37, 38, 39, 44, 45,
+    46, 47, 50, 51, 56, 57, 58, 59,
+    52, 53, 54, 55, 60, 61, 62, 63
+};
+
+/*----------------------------------------------------------------------------
+; EXTERNAL FUNCTION REFERENCES
+; Declare functions defined elsewhere and referenced in this module
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
+; Declare variables used in this module but defined elsewhere
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; FUNCTION CODE
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; Define all local variables
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; Function body here
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+; Return nothing or data or data pointer
+----------------------------------------------------------------------------*/
+
+
diff --git a/media/libstagefright/codecs/m4v_h263/patent_disclaimer.txt b/media/libstagefright/codecs/m4v_h263/patent_disclaimer.txt
new file mode 100644
index 0000000..b4bf11d
--- /dev/null
+++ b/media/libstagefright/codecs/m4v_h263/patent_disclaimer.txt
@@ -0,0 +1,9 @@
+
+THIS IS NOT A GRANT OF PATENT RIGHTS.
+
+Google makes no representation or warranty that the codecs for which
+source code is made available hereunder are unencumbered by
+third-party patents.  Those intending to use this source code in
+hardware or software products are advised that implementations of
+these codecs, including in open source software or shareware, may
+require patent licenses from the relevant patent holders.
diff --git a/media/libstagefright/include/M4vH263Decoder.h b/media/libstagefright/include/M4vH263Decoder.h
new file mode 100644
index 0000000..880ec7c
--- /dev/null
+++ b/media/libstagefright/include/M4vH263Decoder.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef M4V_H263_DECODER_H_
+
+#define M4V_H263_DECODER_H_
+
+#include <media/stagefright/MediaBuffer.h>
+#include <media/stagefright/MediaSource.h>
+
+struct tagvideoDecControls;
+
+namespace android {
+
+struct M4vH263Decoder : public MediaSource,
+                        public MediaBufferObserver {
+    M4vH263Decoder(const sp<MediaSource> &source);
+
+    virtual status_t start(MetaData *params);
+    virtual status_t stop();
+
+    virtual sp<MetaData> getFormat();
+
+    virtual status_t read(
+            MediaBuffer **buffer, const ReadOptions *options);
+
+    virtual void signalBufferReturned(MediaBuffer *buffer);
+
+protected:
+    virtual ~M4vH263Decoder();
+
+private:
+    sp<MediaSource> mSource;
+    bool mStarted;
+    int32_t mWidth, mHeight;
+
+    sp<MetaData> mFormat;
+
+    tagvideoDecControls *mHandle;
+    MediaBuffer *mFrames[2];
+    MediaBuffer *mInputBuffer;
+
+    int64_t mNumSamplesOutput;
+
+    void releaseFrames();
+
+    M4vH263Decoder(const M4vH263Decoder &);
+    M4vH263Decoder &operator=(const M4vH263Decoder &);
+};
+
+}  // namespace android
+
+#endif  // M4V_H263_DECODER_H_
diff --git a/media/libstagefright/include/MP3Extractor.h b/media/libstagefright/include/MP3Extractor.h
index 074973b..b5a6b3c 100644
--- a/media/libstagefright/include/MP3Extractor.h
+++ b/media/libstagefright/include/MP3Extractor.h
@@ -42,6 +42,8 @@
     off_t mFirstFramePos;
     sp<MetaData> mMeta;
     uint32_t mFixedHeader;
+    int32_t mByteNumber; // total number of bytes in this MP3
+    char mTableOfContents[99]; // TOC entries in XING header
 
     MP3Extractor(const MP3Extractor &);
     MP3Extractor &operator=(const MP3Extractor &);
diff --git a/opengl/java/android/opengl/GLSurfaceView.java b/opengl/java/android/opengl/GLSurfaceView.java
index 185398b..471625e 100644
--- a/opengl/java/android/opengl/GLSurfaceView.java
+++ b/opengl/java/android/opengl/GLSurfaceView.java
@@ -1066,6 +1066,8 @@
                 GL10 gl = null;
                 boolean createEglSurface = false;
                 boolean sizeChanged = false;
+                boolean wantRenderNotification = false;
+                boolean doRenderNotification = false;
                 int w = 0;
                 int h = 0;
                 Runnable event = null;
@@ -1111,6 +1113,13 @@
                                 sGLThreadManager.notifyAll();
                             }
 
+                            if (doRenderNotification) {
+                                wantRenderNotification = false;
+                                doRenderNotification = false;
+                                mRenderComplete = true;
+                                sGLThreadManager.notifyAll();
+                            }
+
                             // Ready to draw?
                             if ((!mPaused) && mHasSurface
                                 && (mWidth > 0) && (mHeight > 0)
@@ -1130,6 +1139,8 @@
                                         sizeChanged = true;
                                         w = mWidth;
                                         h = mHeight;
+                                        wantRenderNotification = true;
+
                                         if (DRAW_TWICE_AFTER_SIZE_CHANGED) {
                                             // We keep mRequestRender true so that we draw twice after the size changes.
                                             // (Once because of mSizeChanged, the second time because of mRequestRender.)
@@ -1187,6 +1198,10 @@
                             Log.i("GLThread", "egl surface lost tid=" + getId());
                         }
                     }
+
+                    if (wantRenderNotification) {
+                        doRenderNotification = true;
+                    }
                 }
             } finally {
                 /*
@@ -1269,7 +1284,20 @@
                 mHeight = h;
                 mSizeChanged = true;
                 mRequestRender = true;
+                mRenderComplete = false;
                 sGLThreadManager.notifyAll();
+
+                // Wait for thread to react to resize and render a frame
+                while (! mExited && !mPaused && !mRenderComplete ) {
+                    if (LOG_SURFACE) {
+                        Log.i("Main thread", "onWindowResize waiting for render complete.");
+                    }
+                    try {
+                        sGLThreadManager.wait();
+                    } catch (InterruptedException ex) {
+                        Thread.currentThread().interrupt();
+                    }
+                }
             }
         }
 
@@ -1315,6 +1343,7 @@
         private int mHeight;
         private int mRenderMode;
         private boolean mRequestRender;
+        private boolean mRenderComplete;
         private ArrayList<Runnable> mEventQueue = new ArrayList<Runnable>();
         // End of member variables protected by the sGLThreadManager monitor.
 
@@ -1376,14 +1405,10 @@
         }
 
         /*
-<<<<<<< HEAD
-         * Tries to acquire the right to use an EGL
-         * surface. Does not block.
-=======
          * Tries once to acquire the right to use an EGL
          * surface. Does not block. Requires that we are already
          * in the sGLThreadManager monitor when this is called.
->>>>>>> dc49acb0
+         *
          * @return true if the right to use an EGL surface was acquired.
          */
         public boolean tryAcquireEglSurfaceLocked(GLThread thread) {
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 2981599..0f5330b 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -667,8 +667,8 @@
             }
             if (usedNetworkType != networkType) {
                 Integer currentPid = new Integer(pid);
-                reassessPidDns(pid, true);
                 mNetRequestersPids[usedNetworkType].remove(currentPid);
+                reassessPidDns(pid, true);
                 if (mNetRequestersPids[usedNetworkType].size() != 0) {
                     if (DBG) Log.d(TAG, "not tearing down special network - " +
                            "others still using it");
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index e11c312..d740ce1 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -2137,6 +2137,24 @@
         }
     }
 
+    /**
+     * Crash the runtime (causing a complete restart of the Android framework).
+     * Requires REBOOT permission.  Mostly for testing.  Should not return.
+     */
+    public void crash(final String message)
+    {
+        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.REBOOT, null);
+        Thread t = new Thread("PowerManagerService.crash()") {
+            public void run() { throw new RuntimeException(message); }
+        };
+        try {
+            t.start();
+            t.join();
+        } catch (InterruptedException e) {
+            Log.wtf(TAG, e);
+        }
+    }
+
     private void goToSleepLocked(long time, int reason) {
 
         if (mLastEventTime <= time) {
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index e61cb94..9270a82 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -2020,7 +2020,7 @@
         // to hold off on removing the window until the animation is done.
         // If the display is frozen, just remove immediately, since the
         // animation wouldn't be seen.
-        if (win.mSurface != null && !mDisplayFrozen) {
+        if (win.mSurface != null && !mDisplayFrozen && mPolicy.isScreenOn()) {
             // If we are not currently running the exit animation, we
             // need to see about starting one.
             if (wasVisible=win.isWinVisibleLw()) {
@@ -2336,7 +2336,8 @@
                     win.mEnterAnimationPending = true;
                 }
                 if (displayed && win.mSurface != null && !win.mDrawPending
-                        && !win.mCommitDrawPending && !mDisplayFrozen) {
+                        && !win.mCommitDrawPending && !mDisplayFrozen
+                        && mPolicy.isScreenOn()) {
                     applyEnterAnimationLocked(win);
                 }
                 if (displayed && (win.mAttrs.flags
@@ -2376,6 +2377,18 @@
                     mInputMethodWindow = win;
                     imMayMove = true;
                 }
+                if (win.mAttrs.type == TYPE_BASE_APPLICATION
+                        && win.mAppToken != null
+                        && win.mAppToken.startingWindow != null) {
+                    // Special handling of starting window over the base
+                    // window of the app: propagate lock screen flags to it,
+                    // to provide the correct semantics while starting.
+                    final int mask =
+                        WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
+                        | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD;
+                    WindowManager.LayoutParams sa = win.mAppToken.startingWindow.mAttrs;
+                    sa.flags = (sa.flags&~mask) | (win.mAttrs.flags&mask);
+                }
             } else {
                 win.mEnterAnimationPending = false;
                 if (win.mSurface != null) {
@@ -2576,7 +2589,7 @@
         // frozen, there is no reason to animate and it can cause strange
         // artifacts when we unfreeze the display if some different animation
         // is running.
-        if (!mDisplayFrozen) {
+        if (!mDisplayFrozen && mPolicy.isScreenOn()) {
             int anim = mPolicy.selectAnimationLw(win, transit);
             int attr = -1;
             Animation a = null;
@@ -2659,7 +2672,7 @@
         // frozen, there is no reason to animate and it can cause strange
         // artifacts when we unfreeze the display if some different animation
         // is running.
-        if (!mDisplayFrozen) {
+        if (!mDisplayFrozen && mPolicy.isScreenOn()) {
             Animation a;
             if (lp != null && (lp.flags & FLAG_COMPATIBLE_WINDOW) != 0) {
                 a = new FadeInOutAnimation(enter);
@@ -3250,7 +3263,7 @@
             // If the display is frozen, we won't do anything until the
             // actual window is displayed so there is no reason to put in
             // the starting window.
-            if (mDisplayFrozen) {
+            if (mDisplayFrozen || !mPolicy.isScreenOn()) {
                 return;
             }
 
@@ -7479,7 +7492,7 @@
         // This must be called while inside a transaction.  Returns true if
         // there is more animation to run.
         boolean stepAnimationLocked(long currentTime, int dw, int dh) {
-            if (!mDisplayFrozen) {
+            if (!mDisplayFrozen && mPolicy.isScreenOn()) {
                 // We will run animations as long as the display isn't frozen.
 
                 if (!mDrawPending && !mCommitDrawPending && mAnimation != null) {
@@ -8409,7 +8422,7 @@
 
         // This must be called while inside a transaction.
         boolean stepAnimationLocked(long currentTime, int dw, int dh) {
-            if (!mDisplayFrozen) {
+            if (!mDisplayFrozen && mPolicy.isScreenOn()) {
                 // We will run animations as long as the display isn't frozen.
 
                 if (animation == sDummyAnimation) {
@@ -8498,7 +8511,8 @@
             final int N = allAppWindows.size();
             for (int i=0; i<N; i++) {
                 WindowState win = allAppWindows.get(i);
-                if (win == startingWindow || win.mAppFreezing) {
+                if (win == startingWindow || win.mAppFreezing
+                        || win.mViewVisibility != View.VISIBLE) {
                     continue;
                 }
                 if (DEBUG_VISIBILITY) {
@@ -9379,6 +9393,7 @@
         try {
             boolean restart;
             boolean forceHiding = false;
+            boolean wallpaperForceHidingChanged = false;
 
             do {
                 final int transactionSequence = ++mTransactionSequence;
@@ -9399,13 +9414,16 @@
                     }
                 }
 
+                if (DEBUG_APP_TRANSITIONS) Log.v(TAG, "*** ANIM STEP: seq="
+                        + transactionSequence + " tokensAnimating="
+                        + tokensAnimating);
+                        
                 animating = tokensAnimating;
                 restart = false;
 
                 boolean tokenMayBeDrawn = false;
                 boolean wallpaperMayChange = false;
                 boolean focusMayChange = false;
-                boolean wallpaperForceHidingChanged = false;
 
                 mPolicy.beginAnimationLw(dw, dh);
 
@@ -9718,6 +9736,14 @@
                             mLastEnterAnimParams = null;
                         }
 
+                        // If all closing windows are obscured, then there is
+                        // no need to do an animation.  This is the case, for
+                        // example, when this transition is being done behind
+                        // the lock screen.
+                        if (!mPolicy.allowAppAnimationsLw()) {
+                            animLp = null;
+                        }
+                        
                         NN = mOpeningApps.size();
                         for (i=0; i<NN; i++) {
                             AppWindowToken wtoken = mOpeningApps.get(i);
@@ -9790,7 +9816,7 @@
 
                 int adjResult = 0;
 
-                if (wallpaperForceHidingChanged) {
+                if (wallpaperForceHidingChanged && !restart && !mAppTransitionReady) {
                     // At this point, there was a window with a wallpaper that
                     // was force hiding other windows behind it, but now it
                     // is going away.  This may be simple -- just animate
@@ -9798,10 +9824,28 @@
                     // hard -- the wallpaper now needs to be shown behind
                     // something that was hidden.
                     WindowState oldWallpaper = mWallpaperTarget;
+                    if (mLowerWallpaperTarget != null
+                            && mLowerWallpaperTarget.mAppToken != null) {
+                        if (DEBUG_WALLPAPER) Log.v(TAG,
+                                "wallpaperForceHiding changed with lower="
+                                + mLowerWallpaperTarget);
+                        if (DEBUG_WALLPAPER) Log.v(TAG,
+                                "hidden=" + mLowerWallpaperTarget.mAppToken.hidden +
+                                " hiddenRequested=" + mLowerWallpaperTarget.mAppToken.hiddenRequested);
+                        if (mLowerWallpaperTarget.mAppToken.hidden) {
+                            // The lower target has become hidden before we
+                            // actually started the animation...  let's completely
+                            // re-evaluate everything.
+                            mLowerWallpaperTarget = mUpperWallpaperTarget = null;
+                            restart = true;
+                        }
+                    }
                     adjResult = adjustWallpaperWindowsLocked();
                     wallpaperMayChange = false;
-                    if (false) Log.v(TAG, "****** OLD: " + oldWallpaper
-                            + " NEW: " + mWallpaperTarget);
+                    wallpaperForceHidingChanged = false;
+                    if (DEBUG_WALLPAPER) Log.v(TAG, "****** OLD: " + oldWallpaper
+                            + " NEW: " + mWallpaperTarget
+                            + " LOWER: " + mLowerWallpaperTarget);
                     if (mLowerWallpaperTarget == null) {
                         // Whoops, we don't need a special wallpaper animation.
                         // Clear them out.
@@ -9856,6 +9900,9 @@
                     performLayoutLockedInner();
                 }
 
+                if (DEBUG_APP_TRANSITIONS) Log.v(TAG, "*** ANIM STEP: restart="
+                        + restart);
+                
             } while (restart);
 
             // THIRD LOOP: Update the surfaces of all windows.
@@ -10245,7 +10292,8 @@
             }
 
             if (mDimAnimator != null && mDimAnimator.mDimShown) {
-                animating |= mDimAnimator.updateSurface(dimming, currentTime, mDisplayFrozen);
+                animating |= mDimAnimator.updateSurface(dimming, currentTime,
+                        mDisplayFrozen || !mPolicy.isScreenOn());
             }
 
             if (!blurring && mBlurShown) {
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 266f213..bf436b6 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -71,7 +71,9 @@
 import android.net.Uri;
 import android.os.Binder;
 import android.os.Bundle;
+import android.os.Build;
 import android.os.Debug;
+import android.os.DropBoxManager;
 import android.os.Environment;
 import android.os.FileUtils;
 import android.os.Handler;
@@ -1208,10 +1210,6 @@
             if (MONITOR_CPU_USAGE) {
                 ServiceManager.addService("cpuinfo", new CpuBinder(m));
             }
-            ServiceManager.addService("activity.broadcasts", new BroadcastsBinder(m));
-            ServiceManager.addService("activity.services", new ServicesBinder(m));
-            ServiceManager.addService("activity.senders", new SendersBinder(m));
-            ServiceManager.addService("activity.providers", new ProvidersBinder(m));
             ServiceManager.addService("permission", new PermissionController(m));
 
             ApplicationInfo info =
@@ -1319,54 +1317,6 @@
         }
     }
 
-    static class BroadcastsBinder extends Binder {
-        ActivityManagerService mActivityManagerService;
-        BroadcastsBinder(ActivityManagerService activityManagerService) {
-            mActivityManagerService = activityManagerService;
-        }
-
-        @Override
-        protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-            mActivityManagerService.dumpBroadcasts(pw);
-        }
-    }
-
-    static class ServicesBinder extends Binder {
-        ActivityManagerService mActivityManagerService;
-        ServicesBinder(ActivityManagerService activityManagerService) {
-            mActivityManagerService = activityManagerService;
-        }
-
-        @Override
-        protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-            mActivityManagerService.dumpServices(pw);
-        }
-    }
-
-    static class SendersBinder extends Binder {
-        ActivityManagerService mActivityManagerService;
-        SendersBinder(ActivityManagerService activityManagerService) {
-            mActivityManagerService = activityManagerService;
-        }
-
-        @Override
-        protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-            mActivityManagerService.dumpSenders(pw);
-        }
-    }
-
-    static class ProvidersBinder extends Binder {
-        ActivityManagerService mActivityManagerService;
-        ProvidersBinder(ActivityManagerService activityManagerService) {
-            mActivityManagerService = activityManagerService;
-        }
-
-        @Override
-        protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-            mActivityManagerService.dumpProviders(pw);
-        }
-    }
-
     static class MemBinder extends Binder {
         ActivityManagerService mActivityManagerService;
         MemBinder(ActivityManagerService activityManagerService) {
@@ -8580,11 +8530,10 @@
     }
 
     private boolean makeAppCrashingLocked(ProcessRecord app,
-            String tag, String shortMsg, String longMsg, String stackTrace) {
+            String shortMsg, String longMsg, String stackTrace) {
         app.crashing = true;
         app.crashingReport = generateProcessError(app,
-                ActivityManager.ProcessErrorStateInfo.CRASHED, tag, shortMsg, longMsg,
-                stackTrace);
+                ActivityManager.ProcessErrorStateInfo.CRASHED, null, shortMsg, longMsg, stackTrace);
         startAppProblemLocked(app);
         app.stopFreezingAllLocked();
         return handleAppCrashLocked(app);
@@ -8658,10 +8607,11 @@
     }
 
     private void makeAppNotRespondingLocked(ProcessRecord app,
-            String tag, String shortMsg, String longMsg) {
+            String activity, String shortMsg, String longMsg) {
         app.notResponding = true;
         app.notRespondingReport = generateProcessError(app,
-                ActivityManager.ProcessErrorStateInfo.NOT_RESPONDING, tag, shortMsg, longMsg, null);
+                ActivityManager.ProcessErrorStateInfo.NOT_RESPONDING,
+                activity, shortMsg, longMsg, null);
         startAppProblemLocked(app);
         app.stopFreezingAllLocked();
     }
@@ -8672,7 +8622,7 @@
      * @param app The ProcessRecord in which the error occurred.
      * @param condition Crashing, Application Not Responding, etc.  Values are defined in 
      *                      ActivityManager.AppErrorStateInfo
-     * @param tag The tag that was passed into handleApplicationError().  Typically the classname.
+     * @param activity The activity associated with the crash, if known.
      * @param shortMsg Short message describing the crash.
      * @param longMsg Long message describing the crash.
      * @param stackTrace Full crash stack trace, may be null.
@@ -8680,14 +8630,14 @@
      * @return Returns a fully-formed AppErrorStateInfo record.
      */
     private ActivityManager.ProcessErrorStateInfo generateProcessError(ProcessRecord app, 
-            int condition, String tag, String shortMsg, String longMsg, String stackTrace) {
+            int condition, String activity, String shortMsg, String longMsg, String stackTrace) {
         ActivityManager.ProcessErrorStateInfo report = new ActivityManager.ProcessErrorStateInfo();
 
         report.condition = condition;
         report.processName = app.processName;
         report.pid = app.pid;
         report.uid = app.info.uid;
-        report.tag = tag;
+        report.tag = activity;
         report.shortMsg = shortMsg;
         report.longMsg = longMsg;
         report.stackTrace = stackTrace;
@@ -8804,10 +8754,126 @@
         }
     }
 
-    public void handleApplicationError(IBinder app, String tag,
+    /**
+     * Used by {@link com.android.internal.os.RuntimeInit} to report when an application crashes.
+     * The application process will exit immediately after this call returns.
+     * @param app object of the crashing app, null for the system server
+     * @param crashInfo describing the exception
+     */
+    public void handleApplicationCrash(IBinder app, ApplicationErrorReport.CrashInfo crashInfo) {
+        ProcessRecord r = findAppProcess(app);
+
+        EventLog.writeEvent(EventLogTags.AM_CRASH, Binder.getCallingPid(),
+                app == null ? "system" : (r == null ? "unknown" : r.processName),
+                crashInfo.exceptionClassName,
+                crashInfo.exceptionMessage,
+                crashInfo.throwFileName,
+                crashInfo.throwLineNumber);
+
+        addExceptionToDropBox("crash", r, null, crashInfo);
+
+        crashApplication(r, crashInfo);
+    }
+
+    /**
+     * Used by {@link Log} via {@link com.android.internal.os.RuntimeInit} to report serious errors.
+     * @param app object of the crashing app, null for the system server
+     * @param tag reported by the caller
+     * @param crashInfo describing the context of the error
+     * @return true if the process should exit immediately (WTF is fatal)
+     */
+    public boolean handleApplicationWtf(IBinder app, String tag,
             ApplicationErrorReport.CrashInfo crashInfo) {
-        AppErrorResult result = new AppErrorResult();
-        ProcessRecord r = null;
+        ProcessRecord r = findAppProcess(app);
+
+        EventLog.writeEvent(EventLogTags.AM_WTF, Binder.getCallingPid(),
+                app == null ? "system" : (r == null ? "unknown" : r.processName),
+                tag, crashInfo.exceptionMessage);
+
+        addExceptionToDropBox("wtf", r, tag, crashInfo);
+
+        if (Settings.Gservices.getInt(mContext.getContentResolver(),
+                Settings.Gservices.WTF_IS_FATAL, 0) != 0) {
+            crashApplication(r, crashInfo);
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * @param app object of some object (as stored in {@link com.android.internal.os.RuntimeInit})
+     * @return the corresponding {@link ProcessRecord} object, or null if none could be found
+     */
+    private ProcessRecord findAppProcess(IBinder app) {
+        if (app == null) {
+            return null;
+        }
+
+        synchronized (this) {
+            for (SparseArray<ProcessRecord> apps : mProcessNames.getMap().values()) {
+                final int NA = apps.size();
+                for (int ia=0; ia<NA; ia++) {
+                    ProcessRecord p = apps.valueAt(ia);
+                    if (p.thread != null && p.thread.asBinder() == app) {
+                        return p;
+                    }
+                }
+            }
+
+            Log.w(TAG, "Can't find mystery application: " + app);
+            return null;
+        }
+    }
+
+    /**
+     * Write a description of an exception (from a crash or WTF report) to the drop box.
+     * @param eventType to include in the drop box tag ("crash", "wtf", etc.)
+     * @param r the process which crashed, null for the system server
+     * @param tag supplied by the application (in the case of WTF), or null
+     * @param crashInfo describing the exception
+     */
+    private void addExceptionToDropBox(String eventType, ProcessRecord r, String tag,
+            ApplicationErrorReport.CrashInfo crashInfo) {
+        String dropboxTag, processName;
+        if (r == null) {
+            dropboxTag = "system_server_" + eventType;
+        } else if ((r.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
+            dropboxTag = "system_app_" + eventType;
+        } else {
+            dropboxTag = "data_app_" + eventType;
+        }
+
+        DropBoxManager dbox = (DropBoxManager) mContext.getSystemService(Context.DROPBOX_SERVICE);
+        if (dbox != null && dbox.isTagEnabled(dropboxTag)) {
+            StringBuilder sb = new StringBuilder(1024);
+            sb.append("Build: ").append(Build.FINGERPRINT).append("\n");
+            if (r == null) {
+                sb.append("Process: system_server\n");
+            } else {
+                sb.append("Package: ").append(r.info.packageName).append("\n");
+                if (!r.processName.equals(r.info.packageName)) {
+                    sb.append("Process: ").append(r.processName).append("\n");
+                }
+            }
+            if (tag != null) {
+                sb.append("Tag: ").append(tag).append("\n");
+            }
+            if (crashInfo != null && crashInfo.stackTrace != null) {
+                sb.append("\n").append(crashInfo.stackTrace);
+            }
+            dbox.addText(dropboxTag, sb.toString());
+        }
+    }
+
+    /**
+     * Bring up the "unexpected error" dialog box for a crashing app.
+     * Deal with edge cases (intercepts from instrumented applications,
+     * ActivityController, error intent receivers, that sort of thing).
+     * @param r the application crashing
+     * @param crashInfo describing the failure
+     */
+    private void crashApplication(ProcessRecord r, ApplicationErrorReport.CrashInfo crashInfo) {
         long timeMillis = System.currentTimeMillis();
         String shortMsg = crashInfo.exceptionClassName;
         String longMsg = crashInfo.exceptionMessage;
@@ -8818,20 +8884,8 @@
             longMsg = shortMsg;
         }
 
+        AppErrorResult result = new AppErrorResult();
         synchronized (this) {
-            if (app != null) {
-                for (SparseArray<ProcessRecord> apps : mProcessNames.getMap().values()) {
-                    final int NA = apps.size();
-                    for (int ia=0; ia<NA; ia++) {
-                        ProcessRecord p = apps.valueAt(ia);
-                        if (p.thread != null && p.thread.asBinder() == app) {
-                            r = p;
-                            break;
-                        }
-                    }
-                }
-            }
-
             if (r != null) {
                 // The application has crashed. Send the SIGQUIT to the process so
                 // that it can dump its state.
@@ -8844,7 +8898,7 @@
                 try {
                     String name = r != null ? r.processName : null;
                     int pid = r != null ? r.pid : Binder.getCallingPid();
-                    if (!mController.appCrashed(name, pid, tag,
+                    if (!mController.appCrashed(name, pid,
                             shortMsg, longMsg, timeMillis, crashInfo.stackTrace)) {
                         Log.w(TAG, "Force-killing crashed app " + name
                                 + " at watcher's request");
@@ -8872,15 +8926,9 @@
                 return;
             }
 
-            if (r != null) {
-                if (!makeAppCrashingLocked(r, tag, shortMsg, longMsg, stackTrace)) {
-                    return;
-                }
-            } else {
-                Log.w(TAG, "Some application object " + app + " tag " + tag
-                        + " has crashed, but I don't know who it is.");
-                Log.w(TAG, "ShortMsg:" + shortMsg);
-                Log.w(TAG, "LongMsg:" + longMsg);
+            // If we can't identify the process or it's already exceeded its crash quota,
+            // quit right away without showing a crash dialog.
+            if (r == null || !makeAppCrashingLocked(r, shortMsg, longMsg, stackTrace)) {
                 Binder.restoreCallingIdentity(origId);
                 return;
             }
@@ -9051,69 +9099,190 @@
 
     @Override
     protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        synchronized (this) {
-            if (checkCallingPermission(android.Manifest.permission.DUMP)
-                    != PackageManager.PERMISSION_GRANTED) {
-                pw.println("Permission Denial: can't dump ActivityManager from from pid="
-                        + Binder.getCallingPid()
-                        + ", uid=" + Binder.getCallingUid()
-                        + " without permission "
-                        + android.Manifest.permission.DUMP);
+        if (checkCallingPermission(android.Manifest.permission.DUMP)
+                != PackageManager.PERMISSION_GRANTED) {
+            pw.println("Permission Denial: can't dump ActivityManager from from pid="
+                    + Binder.getCallingPid()
+                    + ", uid=" + Binder.getCallingUid()
+                    + " without permission "
+                    + android.Manifest.permission.DUMP);
+            return;
+        }
+        
+        boolean dumpAll = false;
+        
+        int opti = 0;
+        while (opti < args.length) {
+            String opt = args[opti];
+            if (opt == null || opt.length() <= 0 || opt.charAt(0) != '-') {
+                break;
+            }
+            opti++;
+            if ("-a".equals(opt)) {
+                dumpAll = true;
+            } else if ("-h".equals(opt)) {
+                pw.println("Activity manager dump options:");
+                pw.println("  [-a] [h- [cmd] ...");
+                pw.println("  cmd may be one of:");
+                pw.println("    activities: activity stack state");
+                pw.println("    broadcasts: broadcast state");
+                pw.println("    intents: pending intent state");
+                pw.println("    processes: process state");
+                pw.println("    providers: content provider state");
+                pw.println("    services: service state");
+                pw.println("    service [name]: service client-side state");
                 return;
+            } else {
+                pw.println("Unknown argument: " + opt + "; use -h for help");
             }
-            if (args.length != 0 && "service".equals(args[0])) {
-                dumpService(fd, pw, args);
-                return;
-            }
-            pw.println("Activities in Current Activity Manager State:");
-            dumpHistoryList(pw, mHistory, "  ", "Hist", true);
-            pw.println(" ");
-            pw.println("  Running activities (most recent first):");
-            dumpHistoryList(pw, mLRUActivities, "  ", "Run", false);
-            if (mWaitingVisibleActivities.size() > 0) {
-                pw.println(" ");
-                pw.println("  Activities waiting for another to become visible:");
-                dumpHistoryList(pw, mWaitingVisibleActivities, "  ", "Wait", false);
-            }
-            if (mStoppingActivities.size() > 0) {
-                pw.println(" ");
-                pw.println("  Activities waiting to stop:");
-                dumpHistoryList(pw, mStoppingActivities, "  ", "Stop", false);
-            }
-            if (mFinishingActivities.size() > 0) {
-                pw.println(" ");
-                pw.println("  Activities waiting to finish:");
-                dumpHistoryList(pw, mFinishingActivities, "  ", "Fin", false);
-            }
-
-            pw.println(" ");
-            pw.println("  mPausingActivity: " + mPausingActivity);
-            pw.println("  mResumedActivity: " + mResumedActivity);
-            pw.println("  mFocusedActivity: " + mFocusedActivity);
-            pw.println("  mLastPausedActivity: " + mLastPausedActivity);
-
-            if (mRecentTasks.size() > 0) {
-                pw.println(" ");
-                pw.println("Recent tasks in Current Activity Manager State:");
-
-                final int N = mRecentTasks.size();
-                for (int i=0; i<N; i++) {
-                    TaskRecord tr = mRecentTasks.get(i);
-                    pw.print("  * Recent #"); pw.print(i); pw.print(": ");
-                            pw.println(tr);
-                    mRecentTasks.get(i).dump(pw, "    ");
+        }
+        
+        // Is the caller requesting to dump a particular piece of data?
+        if (opti < args.length) {
+            String cmd = args[opti];
+            opti++;
+            if ("activities".equals(cmd) || "a".equals(cmd)) {
+                synchronized (this) {
+                    dumpActivitiesLocked(fd, pw, args, opti, true, true);
                 }
+                return;
+            } else if ("broadcasts".equals(cmd) || "b".equals(cmd)) {
+                synchronized (this) {
+                    dumpBroadcastsLocked(fd, pw, args, opti, true);
+                }
+                return;
+            } else if ("intents".equals(cmd) || "i".equals(cmd)) {
+                synchronized (this) {
+                    dumpPendingIntentsLocked(fd, pw, args, opti, true);
+                }
+                return;
+            } else if ("processes".equals(cmd) || "p".equals(cmd)) {
+                synchronized (this) {
+                    dumpProcessesLocked(fd, pw, args, opti, true);
+                }
+                return;
+            } else if ("providers".equals(cmd) || "prov".equals(cmd)) {
+                synchronized (this) {
+                    dumpProvidersLocked(fd, pw, args, opti, true);
+                }
+                return;
+            } else if ("service".equals(cmd)) {
+                dumpService(fd, pw, args, opti, true);
+                return;
+            } else if ("services".equals(cmd) || "s".equals(cmd)) {
+                synchronized (this) {
+                    dumpServicesLocked(fd, pw, args, opti, true);
+                }
+                return;
             }
-            
+        }
+        
+        // No piece of data specified, dump everything.
+        synchronized (this) {
+            boolean needSep;
+            if (dumpAll) {
+                pw.println("Providers in Current Activity Manager State:");
+            }
+            needSep = dumpProvidersLocked(fd, pw, args, opti, dumpAll);
+            if (needSep) {
+                pw.println(" ");
+            }
+            if (dumpAll) {
+                pw.println("-------------------------------------------------------------------------------");
+                pw.println("Broadcasts in Current Activity Manager State:");
+            }
+            needSep = dumpBroadcastsLocked(fd, pw, args, opti, dumpAll);
+            if (needSep) {
+                pw.println(" ");
+            }
+            if (dumpAll) {
+                pw.println("-------------------------------------------------------------------------------");
+                pw.println("Services in Current Activity Manager State:");
+            }
+            needSep = dumpServicesLocked(fd, pw, args, opti, dumpAll);
+            if (needSep) {
+                pw.println(" ");
+            }
+            if (dumpAll) {
+                pw.println("-------------------------------------------------------------------------------");
+                pw.println("PendingIntents in Current Activity Manager State:");
+            }
+            needSep = dumpPendingIntentsLocked(fd, pw, args, opti, dumpAll);
+            if (needSep) {
+                pw.println(" ");
+            }
+            if (dumpAll) {
+                pw.println("-------------------------------------------------------------------------------");
+                pw.println("Activities in Current Activity Manager State:");
+            }
+            needSep = dumpActivitiesLocked(fd, pw, args, opti, dumpAll, !dumpAll);
+            if (needSep) {
+                pw.println(" ");
+            }
+            if (dumpAll) {
+                pw.println("-------------------------------------------------------------------------------");
+                pw.println("Processes in Current Activity Manager State:");
+            }
+            dumpProcessesLocked(fd, pw, args, opti, dumpAll);
+        }
+    }
+    
+    boolean dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, String[] args,
+            int opti, boolean dumpAll, boolean needHeader) {
+        if (needHeader) {
+            pw.println("  Activity stack:");
+        }
+        dumpHistoryList(pw, mHistory, "  ", "Hist", true);
+        pw.println(" ");
+        pw.println("  Running activities (most recent first):");
+        dumpHistoryList(pw, mLRUActivities, "  ", "Run", false);
+        if (mWaitingVisibleActivities.size() > 0) {
             pw.println(" ");
-            pw.println("  mCurTask: " + mCurTask);
-            
+            pw.println("  Activities waiting for another to become visible:");
+            dumpHistoryList(pw, mWaitingVisibleActivities, "  ", "Wait", false);
+        }
+        if (mStoppingActivities.size() > 0) {
             pw.println(" ");
-            pw.println("Processes in Current Activity Manager State:");
+            pw.println("  Activities waiting to stop:");
+            dumpHistoryList(pw, mStoppingActivities, "  ", "Stop", false);
+        }
+        if (mFinishingActivities.size() > 0) {
+            pw.println(" ");
+            pw.println("  Activities waiting to finish:");
+            dumpHistoryList(pw, mFinishingActivities, "  ", "Fin", false);
+        }
 
-            boolean needSep = false;
-            int numPers = 0;
+        pw.println(" ");
+        pw.println("  mPausingActivity: " + mPausingActivity);
+        pw.println("  mResumedActivity: " + mResumedActivity);
+        pw.println("  mFocusedActivity: " + mFocusedActivity);
+        pw.println("  mLastPausedActivity: " + mLastPausedActivity);
 
+        if (dumpAll && mRecentTasks.size() > 0) {
+            pw.println(" ");
+            pw.println("Recent tasks in Current Activity Manager State:");
+
+            final int N = mRecentTasks.size();
+            for (int i=0; i<N; i++) {
+                TaskRecord tr = mRecentTasks.get(i);
+                pw.print("  * Recent #"); pw.print(i); pw.print(": ");
+                        pw.println(tr);
+                mRecentTasks.get(i).dump(pw, "    ");
+            }
+        }
+        
+        pw.println(" ");
+        pw.println("  mCurTask: " + mCurTask);
+        
+        return true;
+    }
+        
+    boolean dumpProcessesLocked(FileDescriptor fd, PrintWriter pw, String[] args,
+            int opti, boolean dumpAll) {
+        boolean needSep = false;
+        int numPers = 0;
+
+        if (dumpAll) {
             for (SparseArray<ProcessRecord> procs : mProcessNames.getMap().values()) {
                 final int NA = procs.size();
                 for (int ia=0; ia<NA; ia++) {
@@ -9131,142 +9300,151 @@
                     }
                 }
             }
-            
-            if (mLruProcesses.size() > 0) {
+        }
+        
+        if (mLruProcesses.size() > 0) {
+            if (needSep) pw.println(" ");
+            needSep = true;
+            pw.println("  Running processes (most recent first):");
+            dumpProcessList(pw, this, mLruProcesses, "    ",
+                    "App ", "PERS", true);
+            needSep = true;
+        }
+
+        synchronized (mPidsSelfLocked) {
+            if (mPidsSelfLocked.size() > 0) {
                 if (needSep) pw.println(" ");
                 needSep = true;
-                pw.println("  Running processes (most recent first):");
-                dumpProcessList(pw, this, mLruProcesses, "    ",
-                        "App ", "PERS", true);
-                needSep = true;
-            }
-
-            synchronized (mPidsSelfLocked) {
-                if (mPidsSelfLocked.size() > 0) {
-                    if (needSep) pw.println(" ");
-                    needSep = true;
-                    pw.println("  PID mappings:");
-                    for (int i=0; i<mPidsSelfLocked.size(); i++) {
-                        pw.print("    PID #"); pw.print(mPidsSelfLocked.keyAt(i));
-                            pw.print(": "); pw.println(mPidsSelfLocked.valueAt(i));
-                    }
+                pw.println("  PID mappings:");
+                for (int i=0; i<mPidsSelfLocked.size(); i++) {
+                    pw.print("    PID #"); pw.print(mPidsSelfLocked.keyAt(i));
+                        pw.print(": "); pw.println(mPidsSelfLocked.valueAt(i));
                 }
             }
-            
-            if (mForegroundProcesses.size() > 0) {
-                if (needSep) pw.println(" ");
-                needSep = true;
-                pw.println("  Foreground Processes:");
-                for (int i=0; i<mForegroundProcesses.size(); i++) {
-                    pw.print("    PID #"); pw.print(mForegroundProcesses.keyAt(i));
-                            pw.print(": "); pw.println(mForegroundProcesses.valueAt(i));
-                }
+        }
+        
+        if (mForegroundProcesses.size() > 0) {
+            if (needSep) pw.println(" ");
+            needSep = true;
+            pw.println("  Foreground Processes:");
+            for (int i=0; i<mForegroundProcesses.size(); i++) {
+                pw.print("    PID #"); pw.print(mForegroundProcesses.keyAt(i));
+                        pw.print(": "); pw.println(mForegroundProcesses.valueAt(i));
             }
-            
-            if (mPersistentStartingProcesses.size() > 0) {
-                if (needSep) pw.println(" ");
-                needSep = true;
-                pw.println("  Persisent processes that are starting:");
-                dumpProcessList(pw, this, mPersistentStartingProcesses, "    ",
-                        "Starting Norm", "Restarting PERS", false);
-            }
+        }
+        
+        if (mPersistentStartingProcesses.size() > 0) {
+            if (needSep) pw.println(" ");
+            needSep = true;
+            pw.println("  Persisent processes that are starting:");
+            dumpProcessList(pw, this, mPersistentStartingProcesses, "    ",
+                    "Starting Norm", "Restarting PERS", false);
+        }
 
-            if (mStartingProcesses.size() > 0) {
-                if (needSep) pw.println(" ");
-                needSep = true;
-                pw.println("  Processes that are starting:");
-                dumpProcessList(pw, this, mStartingProcesses, "    ",
-                        "Starting Norm", "Starting PERS", false);
-            }
+        if (mStartingProcesses.size() > 0) {
+            if (needSep) pw.println(" ");
+            needSep = true;
+            pw.println("  Processes that are starting:");
+            dumpProcessList(pw, this, mStartingProcesses, "    ",
+                    "Starting Norm", "Starting PERS", false);
+        }
 
-            if (mRemovedProcesses.size() > 0) {
-                if (needSep) pw.println(" ");
-                needSep = true;
-                pw.println("  Processes that are being removed:");
-                dumpProcessList(pw, this, mRemovedProcesses, "    ",
-                        "Removed Norm", "Removed PERS", false);
-            }
-            
-            if (mProcessesOnHold.size() > 0) {
-                if (needSep) pw.println(" ");
-                needSep = true;
-                pw.println("  Processes that are on old until the system is ready:");
-                dumpProcessList(pw, this, mProcessesOnHold, "    ",
-                        "OnHold Norm", "OnHold PERS", false);
-            }
+        if (mRemovedProcesses.size() > 0) {
+            if (needSep) pw.println(" ");
+            needSep = true;
+            pw.println("  Processes that are being removed:");
+            dumpProcessList(pw, this, mRemovedProcesses, "    ",
+                    "Removed Norm", "Removed PERS", false);
+        }
+        
+        if (mProcessesOnHold.size() > 0) {
+            if (needSep) pw.println(" ");
+            needSep = true;
+            pw.println("  Processes that are on old until the system is ready:");
+            dumpProcessList(pw, this, mProcessesOnHold, "    ",
+                    "OnHold Norm", "OnHold PERS", false);
+        }
 
-            if (mProcessesToGc.size() > 0) {
-                if (needSep) pw.println(" ");
-                needSep = true;
-                pw.println("  Processes that are waiting to GC:");
-                long now = SystemClock.uptimeMillis();
-                for (int i=0; i<mProcessesToGc.size(); i++) {
-                    ProcessRecord proc = mProcessesToGc.get(i);
-                    pw.print("    Process "); pw.println(proc);
-                    pw.print("      lowMem="); pw.print(proc.reportLowMemory);
-                            pw.print(", last gced=");
-                            pw.print(now-proc.lastRequestedGc);
-                            pw.print(" ms ago, last lowMem=");
-                            pw.print(now-proc.lastLowMemory);
+        if (mProcessesToGc.size() > 0) {
+            if (needSep) pw.println(" ");
+            needSep = true;
+            pw.println("  Processes that are waiting to GC:");
+            long now = SystemClock.uptimeMillis();
+            for (int i=0; i<mProcessesToGc.size(); i++) {
+                ProcessRecord proc = mProcessesToGc.get(i);
+                pw.print("    Process "); pw.println(proc);
+                pw.print("      lowMem="); pw.print(proc.reportLowMemory);
+                        pw.print(", last gced=");
+                        pw.print(now-proc.lastRequestedGc);
+                        pw.print(" ms ago, last lowMem=");
+                        pw.print(now-proc.lastLowMemory);
+                        pw.println(" ms ago");
+                
+            }
+        }
+        
+        if (mProcessCrashTimes.getMap().size() > 0) {
+            if (needSep) pw.println(" ");
+            needSep = true;
+            pw.println("  Time since processes crashed:");
+            long now = SystemClock.uptimeMillis();
+            for (Map.Entry<String, SparseArray<Long>> procs
+                    : mProcessCrashTimes.getMap().entrySet()) {
+                SparseArray<Long> uids = procs.getValue();
+                final int N = uids.size();
+                for (int i=0; i<N; i++) {
+                    pw.print("    Process "); pw.print(procs.getKey());
+                            pw.print(" uid "); pw.print(uids.keyAt(i));
+                            pw.print(": last crashed ");
+                            pw.print((now-uids.valueAt(i)));
                             pw.println(" ms ago");
-                    
                 }
             }
-            
-            if (mProcessCrashTimes.getMap().size() > 0) {
-                if (needSep) pw.println(" ");
-                needSep = true;
-                pw.println("  Time since processes crashed:");
-                long now = SystemClock.uptimeMillis();
-                for (Map.Entry<String, SparseArray<Long>> procs
-                        : mProcessCrashTimes.getMap().entrySet()) {
-                    SparseArray<Long> uids = procs.getValue();
-                    final int N = uids.size();
-                    for (int i=0; i<N; i++) {
-                        pw.print("    Process "); pw.print(procs.getKey());
-                                pw.print(" uid "); pw.print(uids.keyAt(i));
-                                pw.print(": last crashed ");
-                                pw.print((now-uids.valueAt(i)));
-                                pw.println(" ms ago");
-                    }
-                }
-            }
+        }
 
-            if (mBadProcesses.getMap().size() > 0) {
-                if (needSep) pw.println(" ");
-                needSep = true;
-                pw.println("  Bad processes:");
-                for (Map.Entry<String, SparseArray<Long>> procs
-                        : mBadProcesses.getMap().entrySet()) {
-                    SparseArray<Long> uids = procs.getValue();
-                    final int N = uids.size();
-                    for (int i=0; i<N; i++) {
-                        pw.print("    Bad process "); pw.print(procs.getKey());
-                                pw.print(" uid "); pw.print(uids.keyAt(i));
-                                pw.print(": crashed at time ");
-                                pw.println(uids.valueAt(i));
-                    }
+        if (mBadProcesses.getMap().size() > 0) {
+            if (needSep) pw.println(" ");
+            needSep = true;
+            pw.println("  Bad processes:");
+            for (Map.Entry<String, SparseArray<Long>> procs
+                    : mBadProcesses.getMap().entrySet()) {
+                SparseArray<Long> uids = procs.getValue();
+                final int N = uids.size();
+                for (int i=0; i<N; i++) {
+                    pw.print("    Bad process "); pw.print(procs.getKey());
+                            pw.print(" uid "); pw.print(uids.keyAt(i));
+                            pw.print(": crashed at time ");
+                            pw.println(uids.valueAt(i));
                 }
             }
+        }
 
-            pw.println(" ");
+        pw.println(" ");
+        pw.println("  mHomeProcess: " + mHomeProcess);
+        pw.println("  mConfiguration: " + mConfiguration);
+        pw.println("  mSleeping=" + mSleeping + " mShuttingDown=" + mShuttingDown);
+        if (mDebugApp != null || mOrigDebugApp != null || mDebugTransient
+                || mOrigWaitForDebugger) {
+            pw.println("  mDebugApp=" + mDebugApp + "/orig=" + mOrigDebugApp
+                    + " mDebugTransient=" + mDebugTransient
+                    + " mOrigWaitForDebugger=" + mOrigWaitForDebugger);
+        }
+        if (mAlwaysFinishActivities || mController != null) {
+            pw.println("  mAlwaysFinishActivities=" + mAlwaysFinishActivities
+                    + " mController=" + mController);
+        }
+        if (dumpAll) {
             pw.println("  Total persistent processes: " + numPers);
-            pw.println("  mHomeProcess: " + mHomeProcess);
-            pw.println("  mConfiguration: " + mConfiguration);
             pw.println("  mStartRunning=" + mStartRunning
                     + " mSystemReady=" + mSystemReady
                     + " mBooting=" + mBooting
                     + " mBooted=" + mBooted
                     + " mFactoryTest=" + mFactoryTest);
-            pw.println("  mSleeping=" + mSleeping + " mShuttingDown=" + mShuttingDown);
             pw.println("  mGoingToSleep=" + mGoingToSleep);
             pw.println("  mLaunchingActivity=" + mLaunchingActivity);
-            pw.println("  mDebugApp=" + mDebugApp + "/orig=" + mOrigDebugApp
-                    + " mDebugTransient=" + mDebugTransient
-                    + " mOrigWaitForDebugger=" + mOrigWaitForDebugger);
-            pw.println("  mAlwaysFinishActivities=" + mAlwaysFinishActivities
-                    + " mController=" + mController);
         }
+        
+        return true;
     }
 
     /**
@@ -9277,20 +9455,22 @@
      *  - the first arg isn't the flattened component name of an existing service:
      *    dump all services whose component contains the first arg as a substring
      */
-    protected void dumpService(FileDescriptor fd, PrintWriter pw, String[] args) {
+    protected void dumpService(FileDescriptor fd, PrintWriter pw, String[] args,
+            int opti, boolean dumpAll) {
         String[] newArgs;
         String componentNameString;
         ServiceRecord r;
-        if (args.length == 1) {
+        if (opti <= args.length) {
             componentNameString = null;
             newArgs = EMPTY_STRING_ARRAY;
             r = null;
         } else {
-            componentNameString = args[1];
+            componentNameString = args[opti];
+            opti++;
             ComponentName componentName = ComponentName.unflattenFromString(componentNameString);
             r = componentName != null ? mServices.get(componentName) : null;
-            newArgs = new String[args.length - 2];
-            if (args.length > 2) System.arraycopy(args, 2, newArgs, 0, args.length - 2);
+            newArgs = new String[args.length - opti];
+            if (args.length > 2) System.arraycopy(args, opti, newArgs, 0, args.length - opti);
         }
 
         if (r != null) {
@@ -9324,19 +9504,11 @@
         }
     }
 
-    void dumpBroadcasts(PrintWriter pw) {
-        synchronized (this) {
-            if (checkCallingPermission(android.Manifest.permission.DUMP)
-                    != PackageManager.PERMISSION_GRANTED) {
-                pw.println("Permission Denial: can't dump ActivityManager from from pid="
-                        + Binder.getCallingPid()
-                        + ", uid=" + Binder.getCallingUid()
-                        + " without permission "
-                        + android.Manifest.permission.DUMP);
-                return;
-            }
-            pw.println("Broadcasts in Current Activity Manager State:");
-
+    boolean dumpBroadcastsLocked(FileDescriptor fd, PrintWriter pw, String[] args,
+            int opti, boolean dumpAll) {
+        boolean needSep = false;
+        
+        if (dumpAll) {
             if (mRegisteredReceivers.size() > 0) {
                 pw.println(" ");
                 pw.println("  Registered Receivers:");
@@ -9347,38 +9519,42 @@
                     r.dump(pw, "    ");
                 }
             }
-
+    
             pw.println(" ");
             pw.println("Receiver Resolver Table:");
             mReceiverResolver.dump(pw, "  ");
-            
-            if (mParallelBroadcasts.size() > 0 || mOrderedBroadcasts.size() > 0
-                    || mPendingBroadcast != null) {
-                if (mParallelBroadcasts.size() > 0) {
-                    pw.println(" ");
-                    pw.println("  Active broadcasts:");
-                }
-                for (int i=mParallelBroadcasts.size()-1; i>=0; i--) {
-                    pw.println("  Broadcast #" + i + ":");
-                    mParallelBroadcasts.get(i).dump(pw, "    ");
-                }
-                if (mOrderedBroadcasts.size() > 0) {
-                    pw.println(" ");
-                    pw.println("  Active serialized broadcasts:");
-                }
-                for (int i=mOrderedBroadcasts.size()-1; i>=0; i--) {
-                    pw.println("  Serialized Broadcast #" + i + ":");
-                    mOrderedBroadcasts.get(i).dump(pw, "    ");
-                }
+            needSep = true;
+        }
+        
+        if (mParallelBroadcasts.size() > 0 || mOrderedBroadcasts.size() > 0
+                || mPendingBroadcast != null) {
+            if (mParallelBroadcasts.size() > 0) {
                 pw.println(" ");
-                pw.println("  Pending broadcast:");
-                if (mPendingBroadcast != null) {
-                    mPendingBroadcast.dump(pw, "    ");
-                } else {
-                    pw.println("    (null)");
-                }
+                pw.println("  Active broadcasts:");
             }
+            for (int i=mParallelBroadcasts.size()-1; i>=0; i--) {
+                pw.println("  Broadcast #" + i + ":");
+                mParallelBroadcasts.get(i).dump(pw, "    ");
+            }
+            if (mOrderedBroadcasts.size() > 0) {
+                pw.println(" ");
+                pw.println("  Active serialized broadcasts:");
+            }
+            for (int i=mOrderedBroadcasts.size()-1; i>=0; i--) {
+                pw.println("  Serialized Broadcast #" + i + ":");
+                mOrderedBroadcasts.get(i).dump(pw, "    ");
+            }
+            pw.println(" ");
+            pw.println("  Pending broadcast:");
+            if (mPendingBroadcast != null) {
+                mPendingBroadcast.dump(pw, "    ");
+            } else {
+                pw.println("    (null)");
+            }
+            needSep = true;
+        }
 
+        if (dumpAll) {
             pw.println(" ");
             pw.println("  Historical broadcasts:");
             for (int i=0; i<MAX_BROADCAST_HISTORY; i++) {
@@ -9389,54 +9565,50 @@
                 pw.println("  Historical Broadcast #" + i + ":");
                 r.dump(pw, "    ");
             }
-            
+            needSep = true;
+        }
+        
+        if (mStickyBroadcasts != null) {
             pw.println(" ");
-            pw.println("  mBroadcastsScheduled=" + mBroadcastsScheduled);
-            if (mStickyBroadcasts != null) {
-                pw.println(" ");
-                pw.println("  Sticky broadcasts:");
-                StringBuilder sb = new StringBuilder(128);
-                for (Map.Entry<String, ArrayList<Intent>> ent
-                        : mStickyBroadcasts.entrySet()) {
-                    pw.print("  * Sticky action "); pw.print(ent.getKey());
-                            pw.println(":");
-                    ArrayList<Intent> intents = ent.getValue();
-                    final int N = intents.size();
-                    for (int i=0; i<N; i++) {
-                        sb.setLength(0);
-                        sb.append("    Intent: ");
-                        intents.get(i).toShortString(sb, true, false);
-                        pw.println(sb.toString());
-                        Bundle bundle = intents.get(i).getExtras();
-                        if (bundle != null) {
-                            pw.print("      ");
-                            pw.println(bundle.toString());
-                        }
+            pw.println("  Sticky broadcasts:");
+            StringBuilder sb = new StringBuilder(128);
+            for (Map.Entry<String, ArrayList<Intent>> ent
+                    : mStickyBroadcasts.entrySet()) {
+                pw.print("  * Sticky action "); pw.print(ent.getKey());
+                        pw.println(":");
+                ArrayList<Intent> intents = ent.getValue();
+                final int N = intents.size();
+                for (int i=0; i<N; i++) {
+                    sb.setLength(0);
+                    sb.append("    Intent: ");
+                    intents.get(i).toShortString(sb, true, false);
+                    pw.println(sb.toString());
+                    Bundle bundle = intents.get(i).getExtras();
+                    if (bundle != null) {
+                        pw.print("      ");
+                        pw.println(bundle.toString());
                     }
                 }
             }
-            
+            needSep = true;
+        }
+        
+        if (dumpAll) {
             pw.println(" ");
+            pw.println("  mBroadcastsScheduled=" + mBroadcastsScheduled);
             pw.println("  mHandler:");
             mHandler.dump(new PrintWriterPrinter(pw), "    ");
+            needSep = true;
         }
+        
+        return needSep;
     }
 
-    void dumpServices(PrintWriter pw) {
-        synchronized (this) {
-            if (checkCallingPermission(android.Manifest.permission.DUMP)
-                    != PackageManager.PERMISSION_GRANTED) {
-                pw.println("Permission Denial: can't dump ActivityManager from from pid="
-                        + Binder.getCallingPid()
-                        + ", uid=" + Binder.getCallingUid()
-                        + " without permission "
-                        + android.Manifest.permission.DUMP);
-                return;
-            }
-            pw.println("Services in Current Activity Manager State:");
+    boolean dumpServicesLocked(FileDescriptor fd, PrintWriter pw, String[] args,
+            int opti, boolean dumpAll) {
+        boolean needSep = false;
 
-            boolean needSep = false;
-
+        if (dumpAll) {
             if (mServices.size() > 0) {
                 pw.println("  Active services:");
                 Iterator<ServiceRecord> it = mServices.values().iterator();
@@ -9447,40 +9619,42 @@
                 }
                 needSep = true;
             }
+        }
 
-            if (mPendingServices.size() > 0) {
-                if (needSep) pw.println(" ");
-                pw.println("  Pending services:");
-                for (int i=0; i<mPendingServices.size(); i++) {
-                    ServiceRecord r = mPendingServices.get(i);
-                    pw.print("  * Pending "); pw.println(r);
-                    r.dump(pw, "    ");
-                }
-                needSep = true;
+        if (mPendingServices.size() > 0) {
+            if (needSep) pw.println(" ");
+            pw.println("  Pending services:");
+            for (int i=0; i<mPendingServices.size(); i++) {
+                ServiceRecord r = mPendingServices.get(i);
+                pw.print("  * Pending "); pw.println(r);
+                r.dump(pw, "    ");
             }
+            needSep = true;
+        }
 
-            if (mRestartingServices.size() > 0) {
-                if (needSep) pw.println(" ");
-                pw.println("  Restarting services:");
-                for (int i=0; i<mRestartingServices.size(); i++) {
-                    ServiceRecord r = mRestartingServices.get(i);
-                    pw.print("  * Restarting "); pw.println(r);
-                    r.dump(pw, "    ");
-                }
-                needSep = true;
+        if (mRestartingServices.size() > 0) {
+            if (needSep) pw.println(" ");
+            pw.println("  Restarting services:");
+            for (int i=0; i<mRestartingServices.size(); i++) {
+                ServiceRecord r = mRestartingServices.get(i);
+                pw.print("  * Restarting "); pw.println(r);
+                r.dump(pw, "    ");
             }
+            needSep = true;
+        }
 
-            if (mStoppingServices.size() > 0) {
-                if (needSep) pw.println(" ");
-                pw.println("  Stopping services:");
-                for (int i=0; i<mStoppingServices.size(); i++) {
-                    ServiceRecord r = mStoppingServices.get(i);
-                    pw.print("  * Stopping "); pw.println(r);
-                    r.dump(pw, "    ");
-                }
-                needSep = true;
+        if (mStoppingServices.size() > 0) {
+            if (needSep) pw.println(" ");
+            pw.println("  Stopping services:");
+            for (int i=0; i<mStoppingServices.size(); i++) {
+                ServiceRecord r = mStoppingServices.get(i);
+                pw.print("  * Stopping "); pw.println(r);
+                r.dump(pw, "    ");
             }
+            needSep = true;
+        }
 
+        if (dumpAll) {
             if (mServiceConnections.size() > 0) {
                 if (needSep) pw.println(" ");
                 pw.println("  Connection bindings to services:");
@@ -9491,26 +9665,18 @@
                     pw.print("  * "); pw.println(r);
                     r.dump(pw, "    ");
                 }
+                needSep = true;
             }
         }
+        
+        return needSep;
     }
 
-    void dumpProviders(PrintWriter pw) {
-        synchronized (this) {
-            if (checkCallingPermission(android.Manifest.permission.DUMP)
-                    != PackageManager.PERMISSION_GRANTED) {
-                pw.println("Permission Denial: can't dump ActivityManager from from pid="
-                        + Binder.getCallingPid()
-                        + ", uid=" + Binder.getCallingUid()
-                        + " without permission "
-                        + android.Manifest.permission.DUMP);
-                return;
-            }
+    boolean dumpProvidersLocked(FileDescriptor fd, PrintWriter pw, String[] args,
+            int opti, boolean dumpAll) {
+        boolean needSep = false;
 
-            pw.println("Content Providers in Current Activity Manager State:");
-
-            boolean needSep = false;
-
+        if (dumpAll) {
             if (mProvidersByClass.size() > 0) {
                 if (needSep) pw.println(" ");
                 pw.println("  Published content providers (by class):");
@@ -9523,7 +9689,7 @@
                 }
                 needSep = true;
             }
-
+    
             if (mProvidersByName.size() > 0) {
                 pw.println(" ");
                 pw.println("  Authority to provider mappings:");
@@ -9536,55 +9702,50 @@
                 }
                 needSep = true;
             }
-
-            if (mLaunchingProviders.size() > 0) {
-                if (needSep) pw.println(" ");
-                pw.println("  Launching content providers:");
-                for (int i=mLaunchingProviders.size()-1; i>=0; i--) {
-                    pw.print("  Launching #"); pw.print(i); pw.print(": ");
-                            pw.println(mLaunchingProviders.get(i));
-                }
-                needSep = true;
-            }
-
-            if (mGrantedUriPermissions.size() > 0) {
-                pw.println();
-                pw.println("Granted Uri Permissions:");
-                for (int i=0; i<mGrantedUriPermissions.size(); i++) {
-                    int uid = mGrantedUriPermissions.keyAt(i);
-                    HashMap<Uri, UriPermission> perms
-                            = mGrantedUriPermissions.valueAt(i);
-                    pw.print("  * UID "); pw.print(uid);
-                            pw.println(" holds:");
-                    for (UriPermission perm : perms.values()) {
-                        pw.print("    "); pw.println(perm);
-                        perm.dump(pw, "      ");
-                    }
-                }
-            }
         }
+
+        if (mLaunchingProviders.size() > 0) {
+            if (needSep) pw.println(" ");
+            pw.println("  Launching content providers:");
+            for (int i=mLaunchingProviders.size()-1; i>=0; i--) {
+                pw.print("  Launching #"); pw.print(i); pw.print(": ");
+                        pw.println(mLaunchingProviders.get(i));
+            }
+            needSep = true;
+        }
+
+        if (mGrantedUriPermissions.size() > 0) {
+            pw.println();
+            pw.println("Granted Uri Permissions:");
+            for (int i=0; i<mGrantedUriPermissions.size(); i++) {
+                int uid = mGrantedUriPermissions.keyAt(i);
+                HashMap<Uri, UriPermission> perms
+                        = mGrantedUriPermissions.valueAt(i);
+                pw.print("  * UID "); pw.print(uid);
+                        pw.println(" holds:");
+                for (UriPermission perm : perms.values()) {
+                    pw.print("    "); pw.println(perm);
+                    perm.dump(pw, "      ");
+                }
+            }
+            needSep = true;
+        }
+        
+        return needSep;
     }
 
-    void dumpSenders(PrintWriter pw) {
-        synchronized (this) {
-            if (checkCallingPermission(android.Manifest.permission.DUMP)
-                    != PackageManager.PERMISSION_GRANTED) {
-                pw.println("Permission Denial: can't dump ActivityManager from from pid="
-                        + Binder.getCallingPid()
-                        + ", uid=" + Binder.getCallingUid()
-                        + " without permission "
-                        + android.Manifest.permission.DUMP);
-                return;
-            }
-
-            pw.println("Pending Intents in Current Activity Manager State:");
-
+    boolean dumpPendingIntentsLocked(FileDescriptor fd, PrintWriter pw, String[] args,
+            int opti, boolean dumpAll) {
+        boolean needSep = false;
+        
+        if (dumpAll) {
             if (this.mIntentSenderRecords.size() > 0) {
                 Iterator<WeakReference<PendingIntentRecord>> it
                         = mIntentSenderRecords.values().iterator();
                 while (it.hasNext()) {
                     WeakReference<PendingIntentRecord> ref = it.next();
                     PendingIntentRecord rec = ref != null ? ref.get(): null;
+                    needSep = true;
                     if (rec != null) {
                         pw.print("  * "); pw.println(rec);
                         rec.dump(pw, "    ");
@@ -9594,6 +9755,8 @@
                 }
             }
         }
+        
+        return needSep;
     }
 
     private static final void dumpHistoryList(PrintWriter pw, List list,
diff --git a/services/java/com/android/server/am/EventLogTags.logtags b/services/java/com/android/server/am/EventLogTags.logtags
index 7e4ea35..952555b 100644
--- a/services/java/com/android/server/am/EventLogTags.logtags
+++ b/services/java/com/android/server/am/EventLogTags.logtags
@@ -79,4 +79,7 @@
 # The activity manager gave up on a new process taking too long to start
 30037 am_process_start_timeout (PID|1|5),(UID|1|5),(Process Name|3)
 
-
+# Unhandled exception
+30039 am_crash (PID|1|5),(Process Name|3),(Exception|3),(Message|3),(File|3),(Line|1|5)
+# Log.wtf() called
+30040 am_wtf (PID|1|5),(Process Name|3),(Tag|3),(Message|3)
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
index aee45bff..ed93aea 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
@@ -167,7 +167,8 @@
         // not yet been handled and also do not correspond to the two
         // kinds that are processed below.
         if ((SmsEnvelope.TELESERVICE_WMT != teleService) &&
-                (SmsEnvelope.TELESERVICE_WEMT != teleService)) {
+                (SmsEnvelope.TELESERVICE_WEMT != teleService) &&
+                (SmsEnvelope.MESSAGE_TYPE_BROADCAST != sms.getMessageType())) {
             return Intents.RESULT_SMS_UNSUPPORTED;
         }
 
diff --git a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
index 3e491d1..403b7a1 100755
--- a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
+++ b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
@@ -458,11 +458,22 @@
      *  {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#TELESERVICE_VMN},
      *  {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#TELESERVICE_WAP}
     */
-    public int getTeleService() {
+    /* package */ int getTeleService() {
         return mEnvelope.teleService;
     }
 
     /**
+     * Returns the message type of the message.
+     * @return the message type:
+     *  {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#MESSAGE_TYPE_POINT_TO_POINT},
+     *  {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#MESSAGE_TYPE_BROADCAST},
+     *  {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#MESSAGE_TYPE_ACKNOWLEDGE},
+    */
+    /* package */ int getMessageType() {
+        return mEnvelope.messageType;
+    }
+
+    /**
      * Decodes pdu to an empty SMS object.
      * In the CDMA case the pdu is just an internal byte stream representation
      * of the SMS Java-object.
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index 494d0e0..fb7aa3d 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -748,7 +748,6 @@
     }
 
     private void notifyDefaultData(String reason) {
-        setupDnsProperties();
         setState(State.CONNECTED);
         phone.notifyDataConnection(reason);
         startNetStatPoll();
@@ -757,42 +756,6 @@
         mReregisterOnReconnectFailure = false;
     }
 
-    private void setupDnsProperties() {
-        int mypid = android.os.Process.myPid();
-        String[] servers = getDnsServers(null);
-        String propName;
-        String propVal;
-        int count;
-
-        count = 0;
-        for (int i = 0; i < servers.length; i++) {
-            String serverAddr = servers[i];
-            if (!TextUtils.equals(serverAddr, "0.0.0.0")) {
-                SystemProperties.set("net.dns" + (i+1) + "." + mypid, serverAddr);
-                count++;
-            }
-        }
-        for (int i = count+1; i <= 4; i++) {
-            propName = "net.dns" + i + "." + mypid;
-            propVal = SystemProperties.get(propName);
-            if (propVal.length() != 0) {
-                SystemProperties.set(propName, "");
-            }
-        }
-        /*
-         * Bump the property that tells the name resolver library
-         * to reread the DNS server list from the properties.
-         */
-        propVal = SystemProperties.get("net.dnschange");
-        if (propVal.length() != 0) {
-            try {
-                int n = Integer.parseInt(propVal);
-                SystemProperties.set("net.dnschange", "" + (n+1));
-            } catch (NumberFormatException e) {
-            }
-        }
-    }
-
     /**
      * This is a kludge to deal with the fact that
      * the PDP state change notification doesn't always work
diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/StkService.java b/telephony/java/com/android/internal/telephony/gsm/stk/StkService.java
index 9268037..29ed95c 100644
--- a/telephony/java/com/android/internal/telephony/gsm/stk/StkService.java
+++ b/telephony/java/com/android/internal/telephony/gsm/stk/StkService.java
@@ -467,8 +467,7 @@
             sInstance = new StkService(ci, sr, context, fh, sc);
             StkLog.d(sInstance, "NEW sInstance");
         } else if ((sr != null) && (mSimRecords != sr)) {
-            StkLog.d(sInstance, String.format(
-                    "Reinitialize the Service with SIMRecords sr=0x%x.", sr));
+            StkLog.d(sInstance, "Reinitialize the Service with SIMRecords");
             mSimRecords = sr;
 
             // re-Register for SIM ready event.
diff --git a/tests/AndroidTests/src/com/android/unit_tests/SimplePullParserTest.java b/tests/AndroidTests/src/com/android/unit_tests/SimplePullParserTest.java
deleted file mode 100644
index 9758298..0000000
--- a/tests/AndroidTests/src/com/android/unit_tests/SimplePullParserTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.unit_tests;
-
-import com.google.android.util.SimplePullParser;
-import junit.framework.TestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-public class SimplePullParserTest extends TestCase {
-    @SmallTest
-    public void testTwoLevels() throws Exception {
-        String xml = ""
-                + "<top a='1' b='hello'>\n"
-                + "  <next c='2' d='there'/>\n"
-                + "  <next c='3' d='bye'/>\n"
-                + "</top>";
-        SimplePullParser parser = new SimplePullParser(xml);
-        int depth0 = parser.getDepth();
-        assertEquals(0, depth0);
-        assertEquals("top", parser.nextTag(depth0));
-        assertEquals(1, parser.getIntAttribute(null, "a"));
-        assertEquals("hello", parser.getStringAttribute(null, "b"));
-
-        int depth1 = parser.getDepth();
-        assertEquals(1, depth1);
-        assertEquals("next", parser.nextTag(depth1));
-        assertEquals(2, parser.getIntAttribute(null, "c"));
-        assertEquals("there", parser.getStringAttribute(null, "d"));
-        assertEquals("next", parser.nextTag(depth1));
-        assertEquals(3, parser.getIntAttribute(null, "c"));
-        assertEquals("bye", parser.getStringAttribute(null, "d"));
-        assertNull(parser.nextTag(depth1));
-
-        assertNull(parser.nextTag(depth0));
-    }
-
-    @SmallTest
-    public void testAttributes() throws Exception {
-        String xml = "<top a='1' b='hello'/>";
-        SimplePullParser parser = new SimplePullParser(xml);
-        int depth = parser.getDepth();
-        parser.nextTag(depth);
-
-        assertEquals(2, parser.numAttributes());
-        assertEquals("a", parser.getAttributeName(0));
-        assertEquals("b", parser.getAttributeName(1));
-
-        assertEquals(1, parser.getIntAttribute(null, "a"));
-        assertEquals(5, parser.getIntAttribute(null, "c", 5));
-        assertEquals("hello", parser.getStringAttribute(null, "b"));
-        assertEquals("not", parser.getStringAttribute(null, "d", "not"));
-    }
-
-    @SmallTest
-    public void testRecovery() throws Exception {
-        String xml = ""
-                + "<top a='1' b='hello'>\n"
-                + "  <middle c='2' d='there'>\n"
-                + "    <inner/>\n"
-                + "    <inner2/>\n"
-                + "    <inner3/>\n"
-                + "  </middle>\n"
-                + "  <middle2/>\n"
-                + "</top>";
-        SimplePullParser parser = new SimplePullParser(xml);
-        assertEquals(0, parser.getDepth());
-        assertEquals("top", parser.nextTag(0));
-        assertEquals(1, parser.getDepth());
-        assertEquals("middle", parser.nextTag(1));
-        assertEquals(2, parser.getDepth());
-        assertEquals("inner", parser.nextTag(2));
-        // Now skip some elements.
-        assertEquals("middle2", parser.nextTag(1));
-    }
-
-    @SmallTest
-    public void testCdata() throws Exception {
-        StringBuilder cdataBuilder;
-        String xml = ""
-                + "<top>"
-                + "<![CDATA[data0]]>"
-                + "<next0/>"
-                + "<![CDATA[data1]]>"
-                + "<next1/>"
-                + "<![CDATA[data2]]>"
-                + "<next2/>"
-                + "<![CDATA[data3]]>"
-                + "<next3/>"
-                + "<![CDATA[data4]]>"
-                + "<next4/>"
-                + "<![CDATA[data5]]>"
-                + "</top>";
-        SimplePullParser parser = new SimplePullParser(xml);
-        assertEquals("top", parser.nextTag(0));
-
-        // We can ignore cdata by not passing a cdata builder.
-        assertEquals("next0", parser.nextTag(1));
-
-        // We can get the most recent cdata by passing an empty cdata builder.
-        cdataBuilder = new StringBuilder();
-        assertSame(SimplePullParser.TEXT_TAG, parser.nextTagOrText(1, cdataBuilder));
-        assertEquals("data1", cdataBuilder.toString());
-        assertEquals("next1", parser.nextTag(1));
-
-        // We can join multiple cdatas by reusing a builder.
-        cdataBuilder = new StringBuilder();
-        assertSame(SimplePullParser.TEXT_TAG, parser.nextTagOrText(1, cdataBuilder));
-        assertEquals("next2", parser.nextTag(1));
-        assertSame(SimplePullParser.TEXT_TAG, parser.nextTagOrText(1, cdataBuilder));
-        assertEquals("data2data3", cdataBuilder.toString());
-        assertEquals("next3", parser.nextTag(1));
-
-        // We can read all of the remaining cdata while ignoring any elements.
-        cdataBuilder = new StringBuilder();
-        parser.readRemainingText(1, cdataBuilder);
-        assertEquals("data4data5", cdataBuilder.toString());
-    }
-}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/TimeTest.java b/tests/AndroidTests/src/com/android/unit_tests/TimeTest.java
index 110caa4..3b33a99 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/TimeTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/TimeTest.java
@@ -20,6 +20,7 @@
 import android.test.suitebuilder.annotation.Suppress;
 import android.text.format.Time;
 import android.util.Log;
+import android.util.TimeFormatException;
 
 import junit.framework.TestCase;
 
@@ -354,6 +355,86 @@
     }
 
     @SmallTest
+    public void testParse33390() throws Exception {
+        Time t = new Time(Time.TIMEZONE_UTC);
+
+        t.parse3339("1980-05-23");
+        if (!t.allDay || t.year != 1980 || t.month != 05 || t.monthDay != 23) {
+            fail("Did not parse all-day date correctly");
+        }
+
+        t.parse3339("1980-05-23T09:50:50");
+        if (t.allDay || t.year != 1980 || t.month != 05 || t.monthDay != 23 ||
+                t.hour != 9 || t.minute != 50 || t.second != 50 ||
+                t.gmtoff != 0) {
+            fail("Did not parse timezone-offset-less date correctly");
+        }
+
+        t.parse3339("1980-05-23T09:50:50Z");
+        if (t.allDay || t.year != 1980 || t.month != 05 || t.monthDay != 23 ||
+                t.hour != 9 || t.minute != 50 || t.second != 50 ||
+                t.gmtoff != 0) {
+            fail("Did not parse UTC date correctly");
+        }
+
+        t.parse3339("1980-05-23T09:50:50.0Z");
+        if (t.allDay || t.year != 1980 || t.month != 05 || t.monthDay != 23 ||
+                t.hour != 9 || t.minute != 50 || t.second != 50 ||
+                t.gmtoff != 0) {
+            fail("Did not parse UTC date correctly");
+        }
+
+        t.parse3339("1980-05-23T09:50:50.12Z");
+        if (t.allDay || t.year != 1980 || t.month != 05 || t.monthDay != 23 ||
+                t.hour != 9 || t.minute != 50 || t.second != 50 ||
+                t.gmtoff != 0) {
+            fail("Did not parse UTC date correctly");
+        }
+
+        t.parse3339("1980-05-23T09:50:50.123Z");
+        if (t.allDay || t.year != 1980 || t.month != 05 || t.monthDay != 23 ||
+                t.hour != 9 || t.minute != 50 || t.second != 50 ||
+                t.gmtoff != 0) {
+            fail("Did not parse UTC date correctly");
+        }
+
+        t.parse3339("1980-05-23T09:50:50-06:00");
+        if (t.allDay || t.year != 1980 || t.month != 05 || t.monthDay != 23 ||
+                t.hour != 9 || t.minute != 50 || t.second != 50 ||
+                t.gmtoff != -6*3600) {
+            fail("Did not parse timezone-offset date correctly");
+        }
+
+        t.parse3339("1980-05-23T09:50:50.123-06:00");
+        if (t.allDay || t.year != 1980 || t.month != 05 || t.monthDay != 23 ||
+                t.hour != 9 || t.minute != 50 || t.second != 50 ||
+                t.gmtoff != -6*3600) {
+            fail("Did not parse timezone-offset date correctly");
+        }
+
+        try {
+            t.parse3339("1980");
+            fail("Did not throw error on truncated input length");
+        } catch (TimeFormatException e) {
+            // Successful
+        }
+
+        try {
+            t.parse3339("1980-05-23T09:50:50.123+");
+            fail("Did not throw error on truncated timezone offset");
+        } catch (TimeFormatException e1) {
+            // Successful
+        }
+
+        try {
+            t.parse3339("1980-05-23T09:50:50.123+05:0");
+            fail("Did not throw error on truncated timezone offset");
+        } catch (TimeFormatException e1) {
+            // Successful
+        }
+    }
+
+    @SmallTest
     public void testSet0() throws Exception {
         Time t = new Time(Time.TIMEZONE_UTC);
         t.set(1000L);
diff --git a/tests/FrameworkTest/tests/src/com/android/frameworktest/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java b/tests/FrameworkTest/tests/src/com/android/frameworktest/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
index cc8fa6e..d11a39ba 100644
--- a/tests/FrameworkTest/tests/src/com/android/frameworktest/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
+++ b/tests/FrameworkTest/tests/src/com/android/frameworktest/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
@@ -16,6 +16,7 @@
 
 package com.android.frameworktest.gridview.touch;
 
+import android.content.Context;
 import android.test.ActivityInstrumentationTestCase;
 import android.test.suitebuilder.annotation.LargeTest;
 import android.test.suitebuilder.annotation.MediumTest;
@@ -30,6 +31,7 @@
 public class GridTouchVerticalSpacingStackFromBottomTest extends ActivityInstrumentationTestCase<GridVerticalSpacingStackFromBottom> {
     private GridVerticalSpacingStackFromBottom mActivity;
     private GridView mGridView;
+    private ViewConfiguration mViewConfig;
 
     public GridTouchVerticalSpacingStackFromBottomTest() {
         super("com.android.frameworktest", GridVerticalSpacingStackFromBottom.class);
@@ -41,6 +43,8 @@
 
         mActivity = getActivity();
         mGridView = getActivity().getGridView();
+        final Context context = mActivity.getApplicationContext();
+        mViewConfig = ViewConfiguration.get(context);
     }
 
     @MediumTest
@@ -83,7 +87,7 @@
         int lastTop = lastChild.getTop();
         
         TouchUtils.dragViewBy(this, firstChild, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0,
-                ViewConfiguration.getTouchSlop() + 1 + 10);
+                mViewConfig.getScaledTouchSlop() + 1 + 10);
         
         View newLastChild = mGridView.getChildAt(mGridView.getChildCount() - 1);
         
@@ -107,7 +111,7 @@
                 (int) (mActivity.getWindowManager().getDefaultDisplay().getHeight() * 0.75f));
         
         assertEquals("View scrolled to wrong position", firstTop
-                + (distance - ViewConfiguration.getTouchSlop() - 1), firstChild.getTop());
+                + (distance - mViewConfig.getScaledTouchSlop() - 1), firstChild.getTop());
     } 
     
     @LargeTest
diff --git a/tests/framework-tests/src/com/android/internal/os/LoggingPrintStreamTest.java b/tests/framework-tests/src/com/android/internal/os/LoggingPrintStreamTest.java
index 8e3a034..4d016d1 100644
--- a/tests/framework-tests/src/com/android/internal/os/LoggingPrintStreamTest.java
+++ b/tests/framework-tests/src/com/android/internal/os/LoggingPrintStreamTest.java
@@ -18,12 +18,12 @@
 
 import junit.framework.TestCase;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.io.StringWriter;
 import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 
 public class LoggingPrintStreamTest extends TestCase {
 
@@ -121,6 +121,58 @@
         assertEquals(Arrays.asList("Foo", "4", "a"), out.lines);
     }
 
+    public void testMultiByteCharactersSpanningBuffers() throws Exception {
+        // assume 3*1000 bytes won't fit in LoggingPrintStream's internal buffer
+        StringBuilder builder = new StringBuilder();
+        for (int i = 0; i < 1000; i++) {
+            builder.append("\u20AC"); // a Euro character; 3 bytes in UTF-8
+        }
+        String expected = builder.toString();
+
+        out.write(expected.getBytes("UTF-8"));
+        out.flush();
+        assertEquals(Arrays.asList(expected), out.lines);
+    }
+
+    public void testWriteOneByteAtATimeMultibyteCharacters() throws Exception {
+        String expected = " \u20AC  \u20AC   \u20AC    \u20AC     ";
+        for (byte b : expected.getBytes()) {
+            out.write(b);
+        }
+        out.flush();
+        assertEquals(Arrays.asList(expected), out.lines);
+    }
+
+    public void testWriteByteArrayAtATimeMultibyteCharacters() throws Exception {
+        String expected = " \u20AC  \u20AC   \u20AC    \u20AC     ";
+        out.write(expected.getBytes());
+        out.flush();
+        assertEquals(Arrays.asList(expected), out.lines);
+    }
+
+    public void testWriteWithOffsetsMultibyteCharacters() throws Exception {
+        String expected = " \u20AC  \u20AC   \u20AC    \u20AC     ";
+        byte[] bytes = expected.getBytes();
+        int i = 0;
+        while (i < bytes.length - 5) {
+            out.write(bytes, i, 5);
+            i += 5;
+        }
+        out.write(bytes, i, bytes.length - i);
+        out.flush();
+        assertEquals(Arrays.asList(expected), out.lines);
+    }
+
+    public void testWriteFlushesOnNewlines() throws Exception {
+        String a = " \u20AC  \u20AC ";
+        String b = "  \u20AC    \u20AC  ";
+        String c = "   ";
+        String toWrite = a + "\n" + b + "\n" + c;
+        out.write(toWrite.getBytes());
+        out.flush();
+        assertEquals(Arrays.asList(a, b, c), out.lines);
+    }
+
     static class TestPrintStream extends LoggingPrintStream {
 
         final List<String> lines = new ArrayList<String>();
@@ -129,5 +181,4 @@
             lines.add(line);
         }
     }
-
 }
