Added some comments

Added a quick intro section at the top of the class.  Also noted
the proposed new name for the class.

Change-Id: I3f79663527544aa4e910db0e5a1374b54d16ba2f
diff --git a/include/gui/ISurfaceTexture.h b/include/gui/ISurfaceTexture.h
index ae7c5c2..58345a0 100644
--- a/include/gui/ISurfaceTexture.h
+++ b/include/gui/ISurfaceTexture.h
@@ -34,6 +34,22 @@
 
 class SurfaceTextureClient;
 
+/*
+ * This class defines an interface that is implemented by classes that
+ * produce buffers of graphics data.  For example, a class that decodes
+ * video for playback might use this to provide frames.  This is
+ * typically done indirectly, through SurfaceTextureClient.
+ *
+ * The underlying mechanism is a BufferQueue.  In normal operation, the
+ * producer calls dequeueBuffer() to get an empty buffer, fills it with
+ * data, then calls queueBuffer() to make it available to the consumer.
+ *
+ * The BnSurfaceTexture and BpSurfaceTexture classes provide the Binder
+ * IPC implementation.
+ *
+ * TODO: rename to IGraphicBufferProducer (IBufferProducer?
+ * IBufferQueueProducer?)
+ */
 class ISurfaceTexture : public IInterface
 {
 public:
diff --git a/include/gui/Surface.h b/include/gui/Surface.h
index 2288fe7..f3455b5 100644
--- a/include/gui/Surface.h
+++ b/include/gui/Surface.h
@@ -106,6 +106,13 @@
     
 // ---------------------------------------------------------------------------
 
+/*
+ * This is a small wrapper around SurfaceTextureClient that provides some
+ * helper classes for Binder interaction.
+ *
+ * TODO: rename to SurfaceJniHelper.  May want to move SurfaceInfo and
+ * the associated lock() / unlockAndPost() calls to STC.
+ */
 class Surface : public SurfaceTextureClient
 {
 public:
diff --git a/include/gui/SurfaceTexture.h b/include/gui/SurfaceTexture.h
index ae5d57a..50efb73 100644
--- a/include/gui/SurfaceTexture.h
+++ b/include/gui/SurfaceTexture.h
@@ -42,6 +42,21 @@
 
 class String8;
 
+/*
+ * SurfaceTexture consumes buffers of graphics data from a BufferQueue,
+ * and makes them available to OpenGL as a texture.
+ *
+ * A typical usage pattern is to set up the SurfaceTexture with the
+ * desired options, and call updateTexImage() when a new frame is desired.
+ * If a new frame is available, the texture will be updated.  If not,
+ * the previous contents are retained.
+ *
+ * By default, the texture is attached to the GL_TEXTURE_EXTERNAL_OES
+ * texture target, in the EGL context of the first thread that calls
+ * updateTexImage().
+ *
+ * TODO: rename to GLConsumer (OpenGLConsumer?)
+ */
 class SurfaceTexture : public ConsumerBase {
 public:
     typedef ConsumerBase::FrameAvailableListener FrameAvailableListener;
diff --git a/include/gui/SurfaceTextureClient.h b/include/gui/SurfaceTextureClient.h
index 56d861a..a582975 100644
--- a/include/gui/SurfaceTextureClient.h
+++ b/include/gui/SurfaceTextureClient.h
@@ -34,6 +34,21 @@
 
 class Surface;
 
+/*
+ * An implementation of ANativeWindow that also behaves as the producer
+ * side of a BufferQueue.
+ *
+ * This is typically used by programs that want to render frames through
+ * some means (maybe OpenGL, a software renderer, or a hardware decoder)
+ * and have the frames they create forwarded to SurfaceFlinger for
+ * compositing.  For example, a video decoder could render a frame and call
+ * eglSwapBuffers(), which invokes ANativeWindow callbacks defined by
+ * SurfaceTextureClient.  STC then acts as the BufferQueue producer,
+ * providing the new frame to a consumer such as SurfaceTexture.
+ *
+ * TODO: rename to Surface.  The existing Surface class wraps STC with
+ * some Binder goodies, which most users of Surface class don't care about.
+ */
 class SurfaceTextureClient
     : public ANativeObjectBase<ANativeWindow, SurfaceTextureClient, RefBase>
 {