diff --git a/modules/camera/Stream.cpp b/modules/camera/Stream.cpp
index 08ae159..0834aee 100644
--- a/modules/camera/Stream.cpp
+++ b/modules/camera/Stream.cpp
@@ -41,7 +41,9 @@
     mFormat(s->format),
     mUsage(0),
     mMaxBuffers(0),
-    mRegistered(false)
+    mRegistered(false),
+    mBuffers(0),
+    mNumBuffers(0)
 {
     // NULL (default) pthread mutex attributes
     pthread_mutex_init(&mMutex, NULL);
@@ -49,7 +51,9 @@
 
 Stream::~Stream()
 {
-    // TODO: unregister buffers from hw
+    pthread_mutex_lock(&mMutex);
+    unregisterBuffers_L();
+    pthread_mutex_unlock(&mMutex);
 }
 
 void Stream::setUsage(uint32_t usage)
@@ -57,8 +61,7 @@
     pthread_mutex_lock(&mMutex);
     if (usage != mUsage) {
         mUsage = usage;
-        mRegistered = false;
-        // TODO: unregister buffers from hw
+        unregisterBuffers_L();
     }
     pthread_mutex_unlock(&mMutex);
 }
@@ -68,8 +71,7 @@
     pthread_mutex_lock(&mMutex);
     if (max_buffers != mMaxBuffers) {
         mMaxBuffers = max_buffers;
-        mRegistered = false;
-        // TODO: unregister buffers from hw
+        unregisterBuffers_L();
     }
     pthread_mutex_unlock(&mMutex);
 }
@@ -89,6 +91,11 @@
     return mType & (CAMERA3_STREAM_OUTPUT | CAMERA3_STREAM_BIDIRECTIONAL);
 }
 
+bool Stream::isRegistered()
+{
+    return mRegistered;
+}
+
 bool Stream::isValidReuseStream(int id, camera3_stream_t *s)
 {
     if (id != mId) {
@@ -126,4 +133,41 @@
     return true;
 }
 
+int Stream::registerBuffers(const camera3_stream_buffer_set_t *buf_set)
+{
+    CAMTRACE_CALL();
+
+    if (buf_set->stream != mStream) {
+        ALOGE("%s:%d: Buffer set for invalid stream. Got %p expect %p",
+                __func__, mId, buf_set->stream, mStream);
+        return -EINVAL;
+    }
+
+    pthread_mutex_lock(&mMutex);
+
+    mNumBuffers = buf_set->num_buffers;
+    mBuffers = new buffer_handle_t*[mNumBuffers];
+
+    for (unsigned int i = 0; i < mNumBuffers; i++) {
+        ALOGV("%s:%d: Registering buffer %p", __func__, mId,
+                buf_set->buffers[i]);
+        mBuffers[i] = buf_set->buffers[i];
+        // TODO: register buffers with hw, handle error cases
+    }
+    mRegistered = true;
+
+    pthread_mutex_unlock(&mMutex);
+
+    return 0;
+}
+
+// This must only be called with mMutex held
+void Stream::unregisterBuffers_L()
+{
+    mRegistered = false;
+    mNumBuffers = 0;
+    delete [] mBuffers;
+    // TODO: unregister buffers from hw
+}
+
 } // namespace default_camera_hal
