videoeditor preview code on honeycomb

Change-Id: I9c3c9cb921ea697ab16732973d26ef9035cda2ee
diff --git a/libvideoeditor/lvpp/DummyAudioSource.cpp b/libvideoeditor/lvpp/DummyAudioSource.cpp
new file mode 100755
index 0000000..04f8dc9
--- /dev/null
+++ b/libvideoeditor/lvpp/DummyAudioSource.cpp
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2011 NXP Software
+ * Copyright (C) 2011 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 1
+#define LOG_TAG "DummyAudioSource"
+#include "utils/Log.h"
+
+#include <media/stagefright/MediaErrors.h>
+#include <media/stagefright/MediaDebug.h>
+#include <media/stagefright/MediaDefs.h>
+#include <media/stagefright/MediaBuffer.h>
+#include <media/stagefright/MediaBufferGroup.h>
+#include <media/stagefright/MetaData.h>
+
+
+#include "DummyAudioSource.h"
+
+
+
+/* Android includes*/
+#include <utils/Log.h>
+#include <memory.h>
+
+
+/*---------------------*/
+/*  DEBUG LEVEL SETUP  */
+/*---------------------*/
+#define LOG1 LOGE    /*ERRORS Logging*/
+#define LOG2 LOGV    /*WARNING Logging*/
+#define LOG3 //LOGV    /*COMMENTS Logging*/
+
+/*---------------------*/
+/*  CONSTANTS          */
+/*---------------------*/
+
+
+namespace android {
+
+
+/*---------------------*/
+/*  SEEK SOURCE        */
+/*---------------------*/
+
+//static
+sp<DummyAudioSource> DummyAudioSource::Create(int32_t samplingRate,
+                                              int32_t channelCount,
+                                              int64_t frameDurationUs,
+                                              int64_t audioDurationUs) {
+    LOG2("DummyAudioSource::Create ");
+    sp<DummyAudioSource> aSource = new DummyAudioSource (samplingRate,
+                                                         channelCount,
+                                                         frameDurationUs,
+                                                         audioDurationUs);
+    return aSource;
+}
+
+
+DummyAudioSource::DummyAudioSource (int32_t samplingRate,
+                                    int32_t channelCount,
+                                    int64_t frameDurationUs,
+                                    int64_t audioDurationUs):
+    mSamplingRate(samplingRate),
+    mChannelCount(channelCount),
+    mFrameDurationUs(frameDurationUs),
+    mAudioDurationUs(audioDurationUs),
+    mTimeStampUs(0) ,
+    mNumberOfSamplePerFrame(0),
+    mBufferGroup(NULL){
+    LOG2("DummyAudioSource::DummyAudioSource constructor START");
+    /* Do nothing here? */
+    LOG2("DummyAudioSource::DummyAudioSource");
+    LOG2("DummyAudioSource:: mSamplingRate = %d",samplingRate);
+    LOG2("DummyAudioSource:: mChannelCount = %d",channelCount);
+    LOG2("DummyAudioSource:: frameDurationUs = %lld",frameDurationUs);
+    LOG2("DummyAudioSource:: mAudioDurationUs = %lld",mAudioDurationUs);
+
+    LOG2("DummyAudioSource::DummyAudioSource constructor END");
+}
+
+
+DummyAudioSource::~DummyAudioSource () {
+    /* Do nothing here? */
+    LOG2("DummyAudioSource::~DummyAudioSource");
+}
+
+
+
+status_t DummyAudioSource::start(MetaData *params) {
+    status_t err = OK;
+    LOG2("DummyAudioSource::start START");
+
+    mTimeStampUs = 0;
+    mNumberOfSamplePerFrame = (int32_t) ((1L * mSamplingRate * mFrameDurationUs)/1000000);
+    mNumberOfSamplePerFrame = mNumberOfSamplePerFrame  * mChannelCount;
+
+    mBufferGroup = new MediaBufferGroup;
+    mBufferGroup->add_buffer(
+            new MediaBuffer(mNumberOfSamplePerFrame * sizeof(int16_t)));
+
+    LOG2("DummyAudioSource:: mNumberOfSamplePerFrame = %d",mNumberOfSamplePerFrame);
+    LOG2("DummyAudioSource::start END");
+
+    return err;
+}
+
+
+status_t DummyAudioSource::stop() {
+    status_t err = OK;
+
+    LOG2("DummyAudioSource::stop START");
+
+    delete mBufferGroup;
+    mBufferGroup = NULL;
+
+
+    LOG2("DummyAudioSource::stop END");
+
+    return err;
+}
+
+
+sp<MetaData> DummyAudioSource::getFormat() {
+    LOG2("DummyAudioSource::getFormat");
+
+    sp<MetaData> meta = new MetaData;
+
+    meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_RAW);
+    meta->setInt32(kKeyChannelCount, mChannelCount);
+    meta->setInt32(kKeySampleRate, mSamplingRate);
+    meta->setInt64(kKeyDuration, mFrameDurationUs);
+
+     meta->setCString(kKeyDecoderComponent, "DummyAudioSource");
+
+    return meta;
+}
+
+status_t DummyAudioSource::read( MediaBuffer **out, const MediaSource::ReadOptions *options) {
+    status_t err            = OK;
+    //LOG2("DummyAudioSource::read START");
+    MediaBuffer *buffer;
+    int32_t byteCount;
+    int64_t seekTimeUs;
+    ReadOptions::SeekMode mode;
+
+    if (options && options->getSeekTo(&seekTimeUs, &mode)) {
+        CHECK(seekTimeUs >= 0);
+        mTimeStampUs = seekTimeUs;
+     }
+
+    if (mTimeStampUs >= mAudioDurationUs) {
+        *out = NULL;
+        return ERROR_END_OF_STREAM;
+    }
+
+    err = mBufferGroup->acquire_buffer(&buffer);
+    if (err != OK) {
+        return err;
+    }
+
+    uint8_t *inputPtr =
+    ( uint8_t *)buffer->data() + buffer->range_offset();
+
+    //TODO: replace with memset
+    for (byteCount = 0; byteCount < (mNumberOfSamplePerFrame << 1); byteCount++) {
+        inputPtr[byteCount] = 0;
+    }
+
+    buffer->set_range(buffer->range_offset(), (mNumberOfSamplePerFrame << 1));
+
+    buffer->meta_data()->setInt64(kKeyTime, mTimeStampUs);
+    LOG2("DummyAudioSource::read  Buffer_offset  = %d,"
+            "Buffer_Size = %d, mTimeStampUs = %lld",
+             buffer->range_offset(),buffer->size(),mTimeStampUs);
+    mTimeStampUs = mTimeStampUs + mFrameDurationUs;
+    *out = buffer;
+    return err;
+}
+
+}// namespace android