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