Merge "Add the new Stagefright ANativeWindow OMX codec API."
diff --git a/camera/CameraParameters.cpp b/camera/CameraParameters.cpp
index d0ed7df..362d9ee 100644
--- a/camera/CameraParameters.cpp
+++ b/camera/CameraParameters.cpp
@@ -73,8 +73,6 @@
const char CameraParameters::KEY_SMOOTH_ZOOM_SUPPORTED[] = "smooth-zoom-supported";
const char CameraParameters::KEY_FOCUS_DISTANCES[] = "focus-distances";
const char CameraParameters::KEY_VIDEO_FRAME_FORMAT[] = "video-frame-format";
-const char CameraParameters::KEY_METERING_MODE[] = "metering-mode";
-const char CameraParameters::KEY_SUPPORTED_METERING_MODES[] = "metering-mode-values";
const char CameraParameters::TRUE[] = "true";
const char CameraParameters::FOCUS_DISTANCE_INFINITY[] = "Infinity";
@@ -146,11 +144,6 @@
const char CameraParameters::FOCUS_MODE_EDOF[] = "edof";
const char CameraParameters::FOCUS_MODE_CONTINUOUS[] = "continuous";
-// Values for metering mode settings.
-const char CameraParameters::METERING_MODE_CENTER_WEIGHTED[] = "center-weighted";
-const char CameraParameters::METERING_MODE_FRAME_AVERAGE[] = "frame-average";
-const char CameraParameters::METERING_MODE_SPOT[] = "spot";
-
CameraParameters::CameraParameters()
: mMap()
{
diff --git a/cmds/stagefright/record.cpp b/cmds/stagefright/record.cpp
index 5a87f4c..c424281 100644
--- a/cmds/stagefright/record.cpp
+++ b/cmds/stagefright/record.cpp
@@ -32,9 +32,15 @@
using namespace android;
+static const int32_t kFramerate = 24; // fps
+static const int32_t kIFramesIntervalSec = 1;
+static const int32_t kVideoBitRate = 512 * 1024;
+static const int32_t kAudioBitRate = 12200;
+static const int32_t kColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
+static const int64_t kDurationUs = 10000000LL; // 10 seconds
+
#if 1
class DummySource : public MediaSource {
- static const int32_t kFramerate = 24; // fps
public:
DummySource(int width, int height)
@@ -176,6 +182,12 @@
enc_meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_AVC);
enc_meta->setInt32(kKeyWidth, width);
enc_meta->setInt32(kKeyHeight, height);
+ enc_meta->setInt32(kKeySampleRate, kFramerate);
+ enc_meta->setInt32(kKeyBitRate, kVideoBitRate);
+ enc_meta->setInt32(kKeyStride, width);
+ enc_meta->setInt32(kKeySliceHeight, height);
+ enc_meta->setInt32(kKeyIFramesInterval, kIFramesIntervalSec);
+ enc_meta->setInt32(kKeyColorFormat, kColorFormat);
sp<MediaSource> encoder =
OMXCodec::Create(
@@ -184,8 +196,10 @@
#if 1
sp<MPEG4Writer> writer = new MPEG4Writer("/sdcard/output.mp4");
writer->addSource(encoder);
+ writer->setMaxFileDuration(kDurationUs);
writer->start();
while (!writer->reachedEOS()) {
+ fprintf(stderr, ".");
usleep(100000);
}
writer->stop();
@@ -194,6 +208,8 @@
MediaBuffer *buffer;
while (encoder->read(&buffer) == OK) {
+ printf(".");
+ fflush(stdout);
int32_t isSync;
if (!buffer->meta_data()->findInt32(kKeyIsSyncFrame, &isSync)) {
isSync = false;
@@ -209,6 +225,7 @@
encoder->stop();
#endif
+ printf("$\n");
client.disconnect();
#endif
@@ -267,6 +284,7 @@
encMeta->setInt32(kKeySampleRate, kSampleRate);
encMeta->setInt32(kKeyChannelCount, kNumChannels);
encMeta->setInt32(kKeyMaxInputSize, 8192);
+ encMeta->setInt32(kKeyBitRate, kAudioBitRate);
sp<MediaSource> encoder =
OMXCodec::Create(client.interface(), encMeta, true, audioSource);
diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h
index a5c7874..7c5371a 100644
--- a/include/camera/CameraParameters.h
+++ b/include/camera/CameraParameters.h
@@ -286,13 +286,6 @@
// Example value: "yuv420sp" or PIXEL_FORMAT_XXX constants. Read only.
static const char KEY_VIDEO_FRAME_FORMAT[];
- // Metering mode. This affects how camera determines exposure.
- // Example value: "spot" or METERING_MODE_XXX constants. Read/write.
- static const char KEY_METERING_MODE[];
- // Supported metering modes.
- // Example value: "center-weighted,frame-average,spot". Read only.
- static const char KEY_SUPPORTED_METERING_MODES[];
-
// Value for KEY_ZOOM_SUPPORTED or KEY_SMOOTH_ZOOM_SUPPORTED.
static const char TRUE[];
@@ -394,16 +387,6 @@
// focus, applications should change the focus mode to other modes.
static const char FOCUS_MODE_CONTINUOUS[];
- // The camera determines the exposure by giving more weight to the
- // central part of the scene.
- static const char METERING_MODE_CENTER_WEIGHTED[];
- // The camera determines the exposure by averaging the entire scene,
- // giving no weighting to any particular area.
- static const char METERING_MODE_FRAME_AVERAGE[];
- // The camera determines the exposure by a very small area of the scene,
- // typically the center.
- static const char METERING_MODE_SPOT[];
-
private:
DefaultKeyedVector<String8,String8> mMap;
};
diff --git a/include/media/IMediaRecorder.h b/include/media/IMediaRecorder.h
index 54b197c..28be7c1 100644
--- a/include/media/IMediaRecorder.h
+++ b/include/media/IMediaRecorder.h
@@ -40,6 +40,7 @@
virtual status_t setAudioEncoder(int ae) = 0;
virtual status_t setOutputFile(const char* path) = 0;
virtual status_t setOutputFile(int fd, int64_t offset, int64_t length) = 0;
+ virtual status_t setOutputFileAuxiliary(int fd) = 0;
virtual status_t setVideoSize(int width, int height) = 0;
virtual status_t setVideoFrameRate(int frames_per_second) = 0;
virtual status_t setParameters(const String8& params) = 0;
diff --git a/include/media/MediaRecorderBase.h b/include/media/MediaRecorderBase.h
index e5edd29..c42346e 100644
--- a/include/media/MediaRecorderBase.h
+++ b/include/media/MediaRecorderBase.h
@@ -40,6 +40,7 @@
virtual status_t setPreviewSurface(const sp<Surface>& surface) = 0;
virtual status_t setOutputFile(const char *path) = 0;
virtual status_t setOutputFile(int fd, int64_t offset, int64_t length) = 0;
+ virtual status_t setOutputFileAuxiliary(int fd) {return INVALID_OPERATION;}
virtual status_t setParameters(const String8& params) = 0;
virtual status_t setListener(const sp<IMediaRecorderClient>& listener) = 0;
virtual status_t prepare() = 0;
diff --git a/include/media/mediarecorder.h b/include/media/mediarecorder.h
index 291b18a..a600f6b 100644
--- a/include/media/mediarecorder.h
+++ b/include/media/mediarecorder.h
@@ -170,6 +170,7 @@
status_t setAudioEncoder(int ae);
status_t setOutputFile(const char* path);
status_t setOutputFile(int fd, int64_t offset, int64_t length);
+ status_t setOutputFileAuxiliary(int fd);
status_t setVideoSize(int width, int height);
status_t setVideoFrameRate(int frames_per_second);
status_t setParameters(const String8& params);
@@ -196,6 +197,7 @@
bool mIsAudioEncoderSet;
bool mIsVideoEncoderSet;
bool mIsOutputFileSet;
+ bool mIsAuxiliaryOutputFileSet;
Mutex mLock;
Mutex mNotifyLock;
};
diff --git a/include/media/stagefright/AudioSource.h b/include/media/stagefright/AudioSource.h
index 2597e9e..1af4254 100644
--- a/include/media/stagefright/AudioSource.h
+++ b/include/media/stagefright/AudioSource.h
@@ -49,7 +49,17 @@
virtual ~AudioSource();
private:
- enum { kMaxBufferSize = 2048 };
+ enum {
+ kMaxBufferSize = 2048,
+
+ // After the initial mute, we raise the volume linearly
+ // over kAutoRampDurationUs.
+ kAutoRampDurationUs = 300000,
+
+ // This is the initial mute duration to suppress
+ // the video recording signal tone
+ kAutoRampStartUs = 700000,
+ };
AudioRecord *mRecord;
status_t mInitCheck;
@@ -67,6 +77,12 @@
void trackMaxAmplitude(int16_t *data, int nSamples);
+ // This is used to raise the volume from mute to the
+ // actual level linearly.
+ void rampVolume(
+ int32_t startFrame, int32_t rampDurationFrames,
+ uint8_t *data, size_t bytes);
+
AudioSource(const AudioSource &);
AudioSource &operator=(const AudioSource &);
};
diff --git a/include/media/stagefright/MediaSourceSplitter.h b/include/media/stagefright/MediaSourceSplitter.h
new file mode 100644
index 0000000..568f4c2
--- /dev/null
+++ b/include/media/stagefright/MediaSourceSplitter.h
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2010 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.
+ */
+
+// This class provides a way to split a single media source into multiple sources.
+// The constructor takes in the real mediaSource and createClient() can then be
+// used to create multiple sources served from this real mediaSource.
+//
+// Usage:
+// - Create MediaSourceSplitter by passing in a real mediaSource from which
+// multiple duplicate channels are needed.
+// - Create a client using createClient() and use it as any other mediaSource.
+//
+// Note that multiple clients can be created using createClient() and
+// started/stopped in any order. MediaSourceSplitter stops the real source only
+// when all clients have been stopped.
+//
+// If a new client is created/started after some existing clients have already
+// started, the new client will start getting its read frames from the current
+// time.
+
+#ifndef MEDIA_SOURCE_SPLITTER_H_
+
+#define MEDIA_SOURCE_SPLITTER_H_
+
+#include <media/stagefright/MediaSource.h>
+#include <utils/threads.h>
+#include <utils/Vector.h>
+#include <utils/RefBase.h>
+
+namespace android {
+
+class MediaBuffer;
+class MetaData;
+
+class MediaSourceSplitter : public RefBase {
+public:
+ // Constructor
+ // mediaSource: The real mediaSource. The class keeps a reference to it to
+ // implement the various clients.
+ MediaSourceSplitter(sp<MediaSource> mediaSource);
+
+ ~MediaSourceSplitter();
+
+ // Creates a new client of base type MediaSource. Multiple clients can be
+ // created which get their data through the same real mediaSource. These
+ // clients can then be used like any other MediaSource, all of which provide
+ // data from the same real source.
+ sp<MediaSource> createClient();
+
+private:
+ // Total number of clients created through createClient().
+ int32_t mNumberOfClients;
+
+ // reference to the real MediaSource passed to the constructor.
+ sp<MediaSource> mSource;
+
+ // Stores pointer to the MediaBuffer read from the real MediaSource.
+ // All clients use this to implement the read() call.
+ MediaBuffer *mLastReadMediaBuffer;
+
+ // Status code for read from the real MediaSource. All clients return
+ // this for their read().
+ status_t mLastReadStatus;
+
+ // Boolean telling whether the real MediaSource has started.
+ bool mSourceStarted;
+
+ // List of booleans, one for each client, storing whether the corresponding
+ // client's start() has been called.
+ Vector<bool> mClientsStarted;
+
+ // Stores the number of clients which are currently started.
+ int32_t mNumberOfClientsStarted;
+
+ // Since different clients call read() asynchronously, we need to keep track
+ // of what data is currently read into the mLastReadMediaBuffer.
+ // mCurrentReadBit stores the bit for the current read buffer. This bit
+ // flips each time a new buffer is read from the source.
+ // mClientsDesiredReadBit stores the bit for the next desired read buffer
+ // for each client. This bit flips each time read() is completed for this
+ // client.
+ bool mCurrentReadBit;
+ Vector<bool> mClientsDesiredReadBit;
+
+ // Number of clients whose current read has been completed.
+ int32_t mNumberOfCurrentReads;
+
+ // Boolean telling whether the last read has been completed for all clients.
+ // The variable is reset to false each time buffer is read from the real
+ // source.
+ bool mLastReadCompleted;
+
+ // A global mutex for access to critical sections.
+ Mutex mLock;
+
+ // Condition variable for waiting on read from source to complete.
+ Condition mReadFromSourceCondition;
+
+ // Condition variable for waiting on all client's last read to complete.
+ Condition mAllReadsCompleteCondition;
+
+ // Functions used by Client to implement the MediaSource interface.
+
+ // If the real source has not been started yet by any client, starts it.
+ status_t start(int clientId, MetaData *params);
+
+ // Stops the real source after all clients have called stop().
+ status_t stop(int clientId);
+
+ // returns the real source's getFormat().
+ sp<MetaData> getFormat(int clientId);
+
+ // If the client's desired buffer has already been read into
+ // mLastReadMediaBuffer, points the buffer to that. Otherwise if it is the
+ // master client, reads the buffer from source or else waits for the master
+ // client to read the buffer and uses that.
+ status_t read(int clientId,
+ MediaBuffer **buffer, const MediaSource::ReadOptions *options = NULL);
+
+ // Not implemented right now.
+ status_t pause(int clientId);
+
+ // Function which reads a buffer from the real source into
+ // mLastReadMediaBuffer
+ void readFromSource_lock(const MediaSource::ReadOptions *options);
+
+ // Waits until read from the real source has been completed.
+ // _lock means that the function should be called when the thread has already
+ // obtained the lock for the mutex mLock.
+ void waitForReadFromSource_lock(int32_t clientId);
+
+ // Waits until all clients have read the current buffer in
+ // mLastReadCompleted.
+ void waitForAllClientsLastRead_lock(int32_t clientId);
+
+ // Each client calls this after it completes its read(). Once all clients
+ // have called this for the current buffer, the function calls
+ // mAllReadsCompleteCondition.broadcast() to signal the waiting clients.
+ void signalReadComplete_lock(bool readAborted);
+
+ // Make these constructors private.
+ MediaSourceSplitter();
+ MediaSourceSplitter(const MediaSourceSplitter &);
+ MediaSourceSplitter &operator=(const MediaSourceSplitter &);
+
+ // This class implements the MediaSource interface. Each client stores a
+ // reference to the parent MediaSourceSplitter and uses it to complete the
+ // various calls.
+ class Client : public MediaSource {
+ public:
+ // Constructor stores reference to the parent MediaSourceSplitter and it
+ // client id.
+ Client(sp<MediaSourceSplitter> splitter, int32_t clientId);
+
+ // MediaSource interface
+ virtual status_t start(MetaData *params = NULL);
+
+ virtual status_t stop();
+
+ virtual sp<MetaData> getFormat();
+
+ virtual status_t read(
+ MediaBuffer **buffer, const ReadOptions *options = NULL);
+
+ virtual status_t pause();
+
+ private:
+ // Refernce to the parent MediaSourceSplitter
+ sp<MediaSourceSplitter> mSplitter;
+
+ // Id of this client.
+ int32_t mClientId;
+ };
+
+ friend class Client;
+};
+
+} // namespace android
+
+#endif // MEDIA_SOURCE_SPLITTER_H_
diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h
index 010ded1..875bc5b 100644
--- a/include/media/stagefright/OMXCodec.h
+++ b/include/media/stagefright/OMXCodec.h
@@ -102,6 +102,7 @@
kInputBufferSizesAreBogus = 512,
kSupportsMultipleFramesPerInputBuffer = 1024,
kAvoidMemcopyInputRecordingFrames = 2048,
+ kRequiresLargerEncoderOutputBuffer = 4096,
};
struct BufferInfo {
diff --git a/include/media/stagefright/VideoSourceDownSampler.h b/include/media/stagefright/VideoSourceDownSampler.h
new file mode 100644
index 0000000..439918c
--- /dev/null
+++ b/include/media/stagefright/VideoSourceDownSampler.h
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2010 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.
+ */
+
+// VideoSourceDownSampler implements the MediaSource interface,
+// downsampling frames provided from a real video source.
+
+#ifndef VIDEO_SOURCE_DOWN_SAMPLER_H_
+
+#define VIDEO_SOURCE_DOWN_SAMPLER_H_
+
+#include <media/stagefright/MediaSource.h>
+#include <utils/RefBase.h>
+
+namespace android {
+
+class IMemory;
+class MediaBuffer;
+class MetaData;
+
+class VideoSourceDownSampler : public MediaSource {
+public:
+ virtual ~VideoSourceDownSampler();
+
+ // Constructor:
+ // videoSource: The real video source which provides the original frames.
+ // width, height: The desired width, height. These should be less than or equal
+ // to those of the real video source. We then downsample the original frames to
+ // this size.
+ VideoSourceDownSampler(const sp<MediaSource> &videoSource,
+ int32_t width, int32_t height);
+
+ // MediaSource interface
+ virtual status_t start(MetaData *params = NULL);
+
+ virtual status_t stop();
+
+ virtual sp<MetaData> getFormat();
+
+ virtual status_t read(
+ MediaBuffer **buffer, const ReadOptions *options = NULL);
+
+ virtual status_t pause();
+
+private:
+ // Reference to the real video source.
+ sp<MediaSource> mRealVideoSource;
+
+ // Size of frames to be provided by this source.
+ int32_t mWidth;
+ int32_t mHeight;
+
+ // Size of frames provided by the real source.
+ int32_t mRealSourceWidth;
+ int32_t mRealSourceHeight;
+
+ // Down sampling paramters.
+ int32_t mDownSampleOffsetX;
+ int32_t mDownSampleOffsetY;
+ int32_t mDownSampleSkipX;
+ int32_t mDownSampleSkipY;
+
+ // True if we need to crop the still video image to get the video frame.
+ bool mNeedDownSampling;
+
+ // Meta data. This is a copy of the real source except for the width and
+ // height parameters.
+ sp<MetaData> mMeta;
+
+ // Computes the offset, skip parameters for downsampling the original frame
+ // to the desired size.
+ void computeDownSamplingParameters();
+
+ // Downsamples the frame in sourceBuffer to size (mWidth x mHeight). A new
+ // buffer is created which stores the downsampled image.
+ void downSampleYUVImage(const MediaBuffer &sourceBuffer, MediaBuffer **buffer) const;
+
+ // Disallow these.
+ VideoSourceDownSampler(const VideoSourceDownSampler &);
+ VideoSourceDownSampler &operator=(const VideoSourceDownSampler &);
+};
+
+} // namespace android
+
+#endif // VIDEO_SOURCE_DOWN_SAMPLER_H_
diff --git a/include/media/stagefright/foundation/ALooper.h b/include/media/stagefright/foundation/ALooper.h
index 153ead9..70e0c5e 100644
--- a/include/media/stagefright/foundation/ALooper.h
+++ b/include/media/stagefright/foundation/ALooper.h
@@ -19,6 +19,7 @@
#define A_LOOPER_H_
#include <media/stagefright/foundation/ABase.h>
+#include <media/stagefright/foundation/AString.h>
#include <utils/Errors.h>
#include <utils/KeyedVector.h>
#include <utils/List.h>
@@ -36,6 +37,9 @@
ALooper();
+ // Takes effect in a subsequent call to start().
+ void setName(const char *name);
+
handler_id registerHandler(const sp<AHandler> &handler);
void unregisterHandler(handler_id handlerID);
@@ -63,6 +67,8 @@
Mutex mLock;
Condition mQueueChangedCondition;
+ AString mName;
+
List<Event> mEventQueue;
struct LooperThread;
diff --git a/include/private/surfaceflinger/SharedBufferStack.h b/include/private/surfaceflinger/SharedBufferStack.h
index d016dfa..d689667 100644
--- a/include/private/surfaceflinger/SharedBufferStack.h
+++ b/include/private/surfaceflinger/SharedBufferStack.h
@@ -151,7 +151,6 @@
~SharedBufferBase();
status_t getStatus() const;
int32_t getIdentity() const;
- size_t getFrontBuffer() const;
String8 dump(char const* prefix) const;
protected:
@@ -226,6 +225,11 @@
inline ssize_t operator()();
};
+ struct DequeueUpdate : public UpdateBase {
+ inline DequeueUpdate(SharedBufferBase* sbb);
+ inline ssize_t operator()();
+ };
+
struct UndoDequeueUpdate : public UpdateBase {
inline UndoDequeueUpdate(SharedBufferBase* sbb);
inline ssize_t operator()();
diff --git a/media/libeffects/lvm/lib/Bass/lib/LVDBE.h b/media/libeffects/lvm/lib/Bass/lib/LVDBE.h
old mode 100755
new mode 100644
index 48731df..228977d
--- a/media/libeffects/lvm/lib/Bass/lib/LVDBE.h
+++ b/media/libeffects/lvm/lib/Bass/lib/LVDBE.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1081 $
- $Date: 2010-07-05 11:48:44 +0200 (Mon, 05 Jul 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Header file for the application layer interface of Dynamic Bass Enhancement */
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Coeffs.h b/media/libeffects/lvm/lib/Bass/src/LVDBE_Coeffs.h
old mode 100755
new mode 100644
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Control.c b/media/libeffects/lvm/lib/Bass/src/LVDBE_Control.c
old mode 100755
new mode 100644
index 4a9dc72..ab2a832
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Control.c
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Control.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: beq06068 $
- $Revision: 1401 $
- $Date: 2010-08-03 09:52:22 +0200 (Tue, 03 Aug 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c b/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c
old mode 100755
new mode 100644
index 95c421d..3b3c07c
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: beq06068 $
- $Revision: 1399 $
- $Date: 2010-08-03 08:16:00 +0200 (Tue, 03 Aug 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Private.h b/media/libeffects/lvm/lib/Bass/src/LVDBE_Private.h
old mode 100755
new mode 100644
index df32873..495b38f
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Private.h
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Private.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: beq06068 $
- $Revision: 1399 $
- $Date: 2010-08-03 08:16:00 +0200 (Tue, 03 Aug 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Header file for the private layer interface of Dynamic Bass Enhancement module */
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Process.c b/media/libeffects/lvm/lib/Bass/src/LVDBE_Process.c
old mode 100755
new mode 100644
index 04032c0..69d79d2
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Process.c
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Process.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: beq06068 $
- $Revision: 1400 $
- $Date: 2010-08-03 09:22:37 +0200 (Tue, 03 Aug 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c b/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c
old mode 100755
new mode 100644
index da8ca5a..f5d229e
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c
@@ -14,13 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1009 $
- $Date: 2010-06-28 14:14:15 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
/************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.h b/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.h
old mode 100755
new mode 100644
index 4cb6d21..476e6a0
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.h
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1009 $
- $Date: 2010-06-28 14:14:15 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
diff --git a/media/libeffects/lvm/lib/Bundle/lib/LVM.h b/media/libeffects/lvm/lib/Bundle/lib/LVM.h
old mode 100755
new mode 100644
index d472182..1ff2a2c
--- a/media/libeffects/lvm/lib/Bundle/lib/LVM.h
+++ b/media/libeffects/lvm/lib/Bundle/lib/LVM.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/*****************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1002 $
- $Date: 2010-06-28 13:40:09 +0200 (Mon, 28 Jun 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Header file for the application layer interface of Concert Sound, Bass Enhancement, */
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_API_Specials.c b/media/libeffects/lvm/lib/Bundle/src/LVM_API_Specials.c
old mode 100755
new mode 100644
index 2f6fa4c..07b7f0e
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_API_Specials.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_API_Specials.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1002 $
- $Date: 2010-06-28 13:40:09 +0200 (Mon, 28 Jun 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Buffers.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Buffers.c
old mode 100755
new mode 100644
index 7273400..6cbee7d
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Buffers.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Buffers.c
@@ -16,14 +16,6 @@
*/
-/****************************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1316 $
- $Date: 2010-07-23 11:53:24 +0200 (Fri, 23 Jul 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Coeffs.h b/media/libeffects/lvm/lib/Bundle/src/LVM_Coeffs.h
old mode 100755
new mode 100644
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Control.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Control.c
old mode 100755
new mode 100644
index cec7501..72564d4
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Control.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Control.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1331 $
- $Date: 2010-07-27 12:26:23 +0200 (Tue, 27 Jul 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
@@ -201,7 +193,6 @@
* the copy to NewParams then one frame may have mixed parameters, some old and some new.
*/
pInstance->ControlPending = LVM_TRUE;
- pInstance->NoSmoothVolume = LVM_FALSE;
return(LVM_SUCCESS);
}
@@ -830,6 +821,7 @@
/*
* Update the parameters and clear the flag
*/
+ pInstance->NoSmoothVolume = LVM_FALSE;
pInstance->Params = LocalParams;
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Init.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Init.c
old mode 100755
new mode 100644
index 323a2a3..20370b7
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Init.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Init.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1316 $
- $Date: 2010-07-23 11:53:24 +0200 (Fri, 23 Jul 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Private.h b/media/libeffects/lvm/lib/Bundle/src/LVM_Private.h
old mode 100755
new mode 100644
index f70e473..2d1cf42
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Private.h
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Private.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1082 $
- $Date: 2010-07-05 12:44:39 +0200 (Mon, 05 Jul 2010) $
-
-***********************************************************************************/
-
/************************************************************************************/
/* */
/* Header file for the private layer interface of concert sound bundle */
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Process.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Process.c
old mode 100755
new mode 100644
index bad9450..794271b
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Process.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Process.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1002 $
- $Date: 2010-06-28 13:40:09 +0200 (Mon, 28 Jun 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.c
old mode 100755
new mode 100644
index cb33541..e14f909
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1002 $
- $Date: 2010-06-28 13:40:09 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.h b/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.h
old mode 100755
new mode 100644
index 574f641..a7601ff
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.h
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1002 $
- $Date: 2010-06-28 13:40:09 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
#ifndef __LVM_TABLES_H__
#define __LVM_TABLES_H__
diff --git a/media/libeffects/lvm/lib/Common/lib/AGC.h b/media/libeffects/lvm/lib/Common/lib/AGC.h
old mode 100755
new mode 100644
index 980a8e3..2080d64
--- a/media/libeffects/lvm/lib/Common/lib/AGC.h
+++ b/media/libeffects/lvm/lib/Common/lib/AGC.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef __AGC_H__
#define __AGC_H__
diff --git a/media/libeffects/lvm/lib/Common/lib/BIQUAD.h b/media/libeffects/lvm/lib/Common/lib/BIQUAD.h
old mode 100755
new mode 100644
index 08e5a6f..7ac7fbd
--- a/media/libeffects/lvm/lib/Common/lib/BIQUAD.h
+++ b/media/libeffects/lvm/lib/Common/lib/BIQUAD.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 722 $
- $Date: 2010-06-10 15:12:34 +0200 (Thu, 10 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef _BIQUAD_H_
#define _BIQUAD_H_
diff --git a/media/libeffects/lvm/lib/Common/lib/CompLim.h b/media/libeffects/lvm/lib/Common/lib/CompLim.h
old mode 100755
new mode 100644
index df9b583..4cb8aa2
--- a/media/libeffects/lvm/lib/Common/lib/CompLim.h
+++ b/media/libeffects/lvm/lib/Common/lib/CompLim.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: nxp27078 $
- $Revision: 672 $
- $Date: 2010-06-08 19:39:38 +0200 (Tue, 08 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef _COMP_LIM_H
#define _COMP_LIM_H
diff --git a/media/libeffects/lvm/lib/Common/lib/Filter.h b/media/libeffects/lvm/lib/Common/lib/Filter.h
old mode 100755
new mode 100644
index 93ccbcb..229701a
--- a/media/libeffects/lvm/lib/Common/lib/Filter.h
+++ b/media/libeffects/lvm/lib/Common/lib/Filter.h
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 771 $*/
-/* $Date: 2010-06-14 10:41:36 +0200 (Mon, 14 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#ifndef _FILTER_H_
#define _FILTER_H_
diff --git a/media/libeffects/lvm/lib/Common/lib/InstAlloc.h b/media/libeffects/lvm/lib/Common/lib/InstAlloc.h
old mode 100755
new mode 100644
index 31409bf..c6954f2
--- a/media/libeffects/lvm/lib/Common/lib/InstAlloc.h
+++ b/media/libeffects/lvm/lib/Common/lib/InstAlloc.h
@@ -15,13 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#ifndef __INSTALLOC_H__
#define __INSTALLOC_H__
diff --git a/media/libeffects/lvm/lib/Common/lib/LVM_Common.h b/media/libeffects/lvm/lib/Common/lib/LVM_Common.h
old mode 100755
new mode 100644
index f0f893d..ceccd7b
--- a/media/libeffects/lvm/lib/Common/lib/LVM_Common.h
+++ b/media/libeffects/lvm/lib/Common/lib/LVM_Common.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/*****************************************************************************************
-
- $Author: nxp27078 $
- $Revision: 672 $
- $Date: 2010-06-08 19:39:38 +0200 (Tue, 08 Jun 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Header file for the common definitions used within the bundle and its algorithms. */
diff --git a/media/libeffects/lvm/lib/Common/lib/LVM_Macros.h b/media/libeffects/lvm/lib/Common/lib/LVM_Macros.h
old mode 100755
new mode 100644
index 8bd363d..97d13a5
--- a/media/libeffects/lvm/lib/Common/lib/LVM_Macros.h
+++ b/media/libeffects/lvm/lib/Common/lib/LVM_Macros.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef _LVM_MACROS_H_
#define _LVM_MACROS_H_
diff --git a/media/libeffects/lvm/lib/Common/lib/LVM_Timer.h b/media/libeffects/lvm/lib/Common/lib/LVM_Timer.h
old mode 100755
new mode 100644
index 22a16d6..81e288c
--- a/media/libeffects/lvm/lib/Common/lib/LVM_Timer.h
+++ b/media/libeffects/lvm/lib/Common/lib/LVM_Timer.h
@@ -17,14 +17,7 @@
#ifndef __LVM_TIMER_H__
#define __LVM_TIMER_H__
-/************************************************************************/
-/* */
-/* Project:: My Project */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
+
#include "LVM_Types.h"
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/lib/LVM_Types.h b/media/libeffects/lvm/lib/Common/lib/LVM_Types.h
old mode 100755
new mode 100644
index e4649ba..81655dd
--- a/media/libeffects/lvm/lib/Common/lib/LVM_Types.h
+++ b/media/libeffects/lvm/lib/Common/lib/LVM_Types.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Header file defining the standard LifeVibes types for use in the application layer */
diff --git a/media/libeffects/lvm/lib/Common/lib/Mixer.h b/media/libeffects/lvm/lib/Common/lib/Mixer.h
old mode 100755
new mode 100644
index d741980..89deb0d
--- a/media/libeffects/lvm/lib/Common/lib/Mixer.h
+++ b/media/libeffects/lvm/lib/Common/lib/Mixer.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef __MIXER_H__
#define __MIXER_H__
diff --git a/media/libeffects/lvm/lib/Common/lib/ScalarArithmetic.h b/media/libeffects/lvm/lib/Common/lib/ScalarArithmetic.h
old mode 100755
new mode 100644
index c66e201..3d62704
--- a/media/libeffects/lvm/lib/Common/lib/ScalarArithmetic.h
+++ b/media/libeffects/lvm/lib/Common/lib/ScalarArithmetic.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#ifndef __SCALARARITHMETIC_H__
#define __SCALARARITHMETIC_H__
diff --git a/media/libeffects/lvm/lib/Common/lib/VectorArithmetic.h b/media/libeffects/lvm/lib/Common/lib/VectorArithmetic.h
old mode 100755
new mode 100644
index 290a996..2b791bd
--- a/media/libeffects/lvm/lib/Common/lib/VectorArithmetic.h
+++ b/media/libeffects/lvm/lib/Common/lib/VectorArithmetic.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 853 $
- $Date: 2010-06-16 15:10:28 +0200 (Wed, 16 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef _VECTOR_ARITHMETIC_H_
#define _VECTOR_ARITHMETIC_H_
diff --git a/media/libeffects/lvm/lib/Common/src/AGC_MIX_VOL_2St1Mon_D32_WRA.c b/media/libeffects/lvm/lib/Common/src/AGC_MIX_VOL_2St1Mon_D32_WRA.c
old mode 100755
new mode 100644
index 40e0dbf..920b515
--- a/media/libeffects/lvm/lib/Common/src/AGC_MIX_VOL_2St1Mon_D32_WRA.c
+++ b/media/libeffects/lvm/lib/Common/src/AGC_MIX_VOL_2St1Mon_D32_WRA.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1070 $
- $Date: 2010-07-02 11:22:18 +0200 (Fri, 02 Jul 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Common/src/Abs_32.c b/media/libeffects/lvm/lib/Common/src/Abs_32.c
old mode 100755
new mode 100644
index 635315d..9128b82
--- a/media/libeffects/lvm/lib/Common/src/Abs_32.c
+++ b/media/libeffects/lvm/lib/Common/src/Abs_32.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/*######################################################################################*/
/* Include files */
/*######################################################################################*/
diff --git a/media/libeffects/lvm/lib/Common/src/Add2_Sat_16x16.c b/media/libeffects/lvm/lib/Common/src/Add2_Sat_16x16.c
old mode 100755
new mode 100644
index 18026c5..6978fe7
--- a/media/libeffects/lvm/lib/Common/src/Add2_Sat_16x16.c
+++ b/media/libeffects/lvm/lib/Common/src/Add2_Sat_16x16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/Add2_Sat_32x32.c b/media/libeffects/lvm/lib/Common/src/Add2_Sat_32x32.c
old mode 100755
new mode 100644
index 96fc7e6..69d357e
--- a/media/libeffects/lvm/lib/Common/src/Add2_Sat_32x32.c
+++ b/media/libeffects/lvm/lib/Common/src/Add2_Sat_32x32.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16C14_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16C14_TRC_WRA_01.c
old mode 100755
new mode 100644
index 76d8e42..f4c5757
--- a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16C14_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16C14_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BP_1I_D16F16Css_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16Css_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16Css_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index 9338eb2..88914ad
--- a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16Css_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16Css_TRC_WRA_01_Init.c
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
/*-------------------------------------------------------------------------*/
#include "BIQUAD.h"
#include "BP_1I_D16F16Css_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16Css_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16Css_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index 2a0d7d5..980539c
--- a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16Css_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F16Css_TRC_WRA_01_Private.h
@@ -16,14 +16,6 @@
*/
#ifndef _BP_1I_D16F16CSS_TRC_WRA_01_PRIVATE_H_
#define _BP_1I_D16F16CSS_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
diff --git a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32C30_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32C30_TRC_WRA_01.c
old mode 100755
new mode 100644
index f52d3db..ba1a42f
--- a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32C30_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32C30_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BP_1I_D16F32Cll_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index c560085..e833218
--- a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Init.c
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
/*-------------------------------------------------------------------------*/
#include "BIQUAD.h"
#include "BP_1I_D16F32Cll_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index 76777f6..9cca627
--- a/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Private.h
@@ -16,14 +16,6 @@
*/
#ifndef _BP_1I_D16F32CLL_TRC_WRA_01_PRIVATE_H_
#define _BP_1I_D16F32CLL_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
diff --git a/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32C30_TRC_WRA_02.c b/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32C30_TRC_WRA_02.c
old mode 100755
new mode 100644
index 2b3555f..b09c1aa
--- a/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32C30_TRC_WRA_02.c
+++ b/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32C30_TRC_WRA_02.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BP_1I_D32F32Cll_TRC_WRA_02_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Init.c b/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Init.c
old mode 100755
new mode 100644
index f3f4571..9367912
--- a/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Init.c
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
/*-------------------------------------------------------------------------*/
#include "BIQUAD.h"
#include "BP_1I_D32F32Cll_TRC_WRA_02_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Private.h b/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Private.h
old mode 100755
new mode 100644
index 8884537..5cc1ce2
--- a/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Private.h
@@ -16,14 +16,6 @@
*/
#ifndef _BP_1I_D32F32CLL_TRC_WRA_02_PRIVATE_H_
#define _BP_1I_D32F32CLL_TRC_WRA_02_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16C15_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16C15_TRC_WRA_01.c
old mode 100755
new mode 100644
index 00e3b52..f2f8c6b
--- a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16C15_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16C15_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BQ_1I_D16F16Css_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index 3fedc45..baf0c1a
--- a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Init.c
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
/*-------------------------------------------------------------------------*/
#include "BIQUAD.h"
#include "BQ_1I_D16F16Css_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index 18dacd3..909c699
--- a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Private.h
@@ -16,14 +16,6 @@
*/
#ifndef _BQ_1I_D16F16CSS_TRC_WRA_01_PRIVATE_H_
#define _BQ_1I_D16F16CSS_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32C14_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32C14_TRC_WRA_01.c
old mode 100755
new mode 100644
index cdff1d9..92f6caf
--- a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32C14_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32C14_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BQ_1I_D16F32Css_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32Css_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32Css_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index bc88847..aea10f0
--- a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32Css_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32Css_TRC_WRA_01_Private.h
@@ -16,14 +16,6 @@
*/
#ifndef _BQ_1I_D16F32CSS_TRC_WRA_01_PRIVATE_H_
#define _BQ_1I_D16F32CSS_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32Css_TRC_WRA_01_init.c b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32Css_TRC_WRA_01_init.c
old mode 100755
new mode 100644
index 520c969..1d6be4e
--- a/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32Css_TRC_WRA_01_init.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32Css_TRC_WRA_01_init.c
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
/*-------------------------------------------------------------------------*/
#include "BIQUAD.h"
#include "BQ_1I_D16F32Css_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C14_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C14_TRC_WRA_01.c
old mode 100755
new mode 100644
index c267a90..972e704
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C14_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C14_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BQ_2I_D16F16Css_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C15_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C15_TRC_WRA_01.c
old mode 100755
new mode 100644
index ded2bb3..e056373
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C15_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C15_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BQ_2I_D16F16Css_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index b0cd1b9..0a8ac35
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Init.c
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
/*-------------------------------------------------------------------------*/
#include "BIQUAD.h"
#include "BQ_2I_D16F16Css_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index bcb0093..7d42ced
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Private.h
@@ -18,15 +18,6 @@
#ifndef _BQ_2I_D16F16CSS_TRC_WRA_01_PRIVATE_H_
#define _BQ_2I_D16F16CSS_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
typedef struct _Filter_State_
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C13_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C13_TRC_WRA_01.c
old mode 100755
new mode 100644
index ae743f2..4a0cce4
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C13_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C13_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BQ_2I_D16F32Css_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C14_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C14_TRC_WRA_01.c
old mode 100755
new mode 100644
index a0ca2cc..052e2a0
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C14_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C14_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BQ_2I_D16F32Css_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C15_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C15_TRC_WRA_01.c
old mode 100755
new mode 100644
index f1ab815..8c741e1
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C15_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C15_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BQ_2I_D16F32Css_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32Css_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32Css_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index 3cbb58b..4f0cf67
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32Css_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32Css_TRC_WRA_01_Private.h
@@ -18,15 +18,6 @@
#ifndef _BQ_2I_D16F32CSS_TRC_WRA_01_PRIVATE_H_
#define _BQ_2I_D16F32CSS_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
typedef struct _Filter_State_
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32Css_TRC_WRA_01_init.c b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32Css_TRC_WRA_01_init.c
old mode 100755
new mode 100644
index 0c6b33e..4591ee0
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32Css_TRC_WRA_01_init.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32Css_TRC_WRA_01_init.c
@@ -15,12 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#include "BIQUAD.h"
#include "BQ_2I_D16F32Css_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32C30_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32C30_TRC_WRA_01.c
old mode 100755
new mode 100644
index 51278cf..fd8212e4
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32C30_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32C30_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "BQ_2I_D32F32Cll_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index 7c460d3..1709f71
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Init.c
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
/*-------------------------------------------------------------------------*/
#include "BIQUAD.h"
#include "BQ_2I_D32F32Cll_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index fb4f2dd..747af6a
--- a/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Private.h
@@ -19,15 +19,6 @@
#define _BQ_2I_D32F32CLL_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
typedef struct _Filter_State_
diff --git a/media/libeffects/lvm/lib/Common/src/CompLim_private.h b/media/libeffects/lvm/lib/Common/src/CompLim_private.h
old mode 100755
new mode 100644
index 07a8833..06a21c3
--- a/media/libeffects/lvm/lib/Common/src/CompLim_private.h
+++ b/media/libeffects/lvm/lib/Common/src/CompLim_private.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef _COMP_LIM_PRIVATE_
#define _COMP_LIM_PRIVATE_
diff --git a/media/libeffects/lvm/lib/Common/src/Copy_16.c b/media/libeffects/lvm/lib/Common/src/Copy_16.c
old mode 100755
new mode 100644
index 6ee1ff6..20404ad
--- a/media/libeffects/lvm/lib/Common/src/Copy_16.c
+++ b/media/libeffects/lvm/lib/Common/src/Copy_16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/Core_MixHard_2St_D32C31_SAT.c b/media/libeffects/lvm/lib/Common/src/Core_MixHard_2St_D32C31_SAT.c
old mode 100755
new mode 100644
index adac24f..bf69e35
--- a/media/libeffects/lvm/lib/Common/src/Core_MixHard_2St_D32C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/Core_MixHard_2St_D32C31_SAT.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/Core_MixInSoft_D32C31_SAT.c b/media/libeffects/lvm/lib/Common/src/Core_MixInSoft_D32C31_SAT.c
old mode 100755
new mode 100644
index d557f6e..3471f05
--- a/media/libeffects/lvm/lib/Common/src/Core_MixInSoft_D32C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/Core_MixInSoft_D32C31_SAT.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/Core_MixSoft_1St_D32C31_WRA.c b/media/libeffects/lvm/lib/Common/src/Core_MixSoft_1St_D32C31_WRA.c
old mode 100755
new mode 100644
index 7b4e66d..709c304
--- a/media/libeffects/lvm/lib/Common/src/Core_MixSoft_1St_D32C31_WRA.c
+++ b/media/libeffects/lvm/lib/Common/src/Core_MixSoft_1St_D32C31_WRA.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01.c
old mode 100755
new mode 100644
index 187fe68..49fa184
--- a/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "DC_2I_D16_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index 292641b..468a88d
--- a/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01_Init.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "DC_2I_D16_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index 2514a77..89a4e68
--- a/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01_Private.h
@@ -20,15 +20,6 @@
#define DC_D16_STEP 0x200;
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use.*/
diff --git a/media/libeffects/lvm/lib/Common/src/DelayAllPass_Sat_32x16To32.c b/media/libeffects/lvm/lib/Common/src/DelayAllPass_Sat_32x16To32.c
old mode 100755
new mode 100644
index cda72ac..2e20d79
--- a/media/libeffects/lvm/lib/Common/src/DelayAllPass_Sat_32x16To32.c
+++ b/media/libeffects/lvm/lib/Common/src/DelayAllPass_Sat_32x16To32.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/DelayMix_16x16.c b/media/libeffects/lvm/lib/Common/src/DelayMix_16x16.c
old mode 100755
new mode 100644
index ee41701..7e3182d
--- a/media/libeffects/lvm/lib/Common/src/DelayMix_16x16.c
+++ b/media/libeffects/lvm/lib/Common/src/DelayMix_16x16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/DelayWrite_32.c b/media/libeffects/lvm/lib/Common/src/DelayWrite_32.c
old mode 100755
new mode 100644
index 0ae4c42..809cddc
--- a/media/libeffects/lvm/lib/Common/src/DelayWrite_32.c
+++ b/media/libeffects/lvm/lib/Common/src/DelayWrite_32.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16C15_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16C15_TRC_WRA_01.c
old mode 100755
new mode 100644
index 831a115..de77361
--- a/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16C15_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16C15_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "FO_1I_D16F16Css_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16Css_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16Css_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index 4675084..96252cc
--- a/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16Css_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16Css_TRC_WRA_01_Init.c
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
/*-------------------------------------------------------------------------*/
#include "BIQUAD.h"
#include "FO_1I_D16F16Css_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16Css_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16Css_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index e1a818c..516ca83
--- a/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16Css_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/FO_1I_D16F16Css_TRC_WRA_01_Private.h
@@ -18,15 +18,6 @@
#ifndef _FO_1I_D16F16CSS_TRC_WRA_01_PRIVATE_H_
#define _FO_1I_D16F16CSS_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $ */
-/* */
-/************************************************************************/
-
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
typedef struct _Filter_State_
diff --git a/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32C31_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32C31_TRC_WRA_01.c
old mode 100755
new mode 100644
index 9bdc5b4..0f1d5bc
--- a/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32C31_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32C31_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "FO_1I_D32F32Cll_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index eea0b64..136e4f6
--- a/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Init.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "FO_1I_D32F32Cll_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index 9329150..94ad48c
--- a/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Private.h
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#ifndef _FO_1I_D32F32CLL_TRC_WRA_01_PRIVATE_H_
#define _FO_1I_D32F32CLL_TRC_WRA_01_PRIVATE_H_
diff --git a/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32C15_LShx_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32C15_LShx_TRC_WRA_01.c
old mode 100755
new mode 100644
index 4b219a2..8388050
--- a/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32C15_LShx_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32C15_LShx_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "FO_2I_D16F32Css_LShx_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index 7f212f5..a19c32c
--- a/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Init.c
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
/*-------------------------------------------------------------------------*/
#include "BIQUAD.h"
#include "FO_2I_D16F32Css_LShx_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index 6a4564a..4640743
--- a/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Private.h
@@ -18,15 +18,6 @@
#ifndef _FO_2I_D16F32CSS_LSHX_TRC_WRA_01_PRIVATE_H_
#define _FO_2I_D16F32CSS_LSHX_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
typedef struct _Filter_State_
diff --git a/media/libeffects/lvm/lib/Common/src/Filters.h b/media/libeffects/lvm/lib/Common/src/Filters.h
old mode 100755
new mode 100644
index a274f32..4d32df1
--- a/media/libeffects/lvm/lib/Common/src/Filters.h
+++ b/media/libeffects/lvm/lib/Common/src/Filters.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1001 $
- $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
#ifndef FILTERS_H
#define FILTERS_H
diff --git a/media/libeffects/lvm/lib/Common/src/From2iToMS_16x16.c b/media/libeffects/lvm/lib/Common/src/From2iToMS_16x16.c
old mode 100755
new mode 100644
index fb00768..7975e8b
--- a/media/libeffects/lvm/lib/Common/src/From2iToMS_16x16.c
+++ b/media/libeffects/lvm/lib/Common/src/From2iToMS_16x16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/From2iToMono_16.c b/media/libeffects/lvm/lib/Common/src/From2iToMono_16.c
old mode 100755
new mode 100644
index 0ebb4ae..b758ee7
--- a/media/libeffects/lvm/lib/Common/src/From2iToMono_16.c
+++ b/media/libeffects/lvm/lib/Common/src/From2iToMono_16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/From2iToMono_32.c b/media/libeffects/lvm/lib/Common/src/From2iToMono_32.c
old mode 100755
new mode 100644
index 5181368..8bb292f
--- a/media/libeffects/lvm/lib/Common/src/From2iToMono_32.c
+++ b/media/libeffects/lvm/lib/Common/src/From2iToMono_32.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/InstAlloc.c b/media/libeffects/lvm/lib/Common/src/InstAlloc.c
old mode 100755
new mode 100644
index ff900e0..481df84
--- a/media/libeffects/lvm/lib/Common/src/InstAlloc.c
+++ b/media/libeffects/lvm/lib/Common/src/InstAlloc.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "InstAlloc.h"
/****************************************************************************************
diff --git a/media/libeffects/lvm/lib/Common/src/Int16LShiftToInt32_16x32.c b/media/libeffects/lvm/lib/Common/src/Int16LShiftToInt32_16x32.c
old mode 100755
new mode 100644
index e6be756..9f09e4d
--- a/media/libeffects/lvm/lib/Common/src/Int16LShiftToInt32_16x32.c
+++ b/media/libeffects/lvm/lib/Common/src/Int16LShiftToInt32_16x32.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/Int32RShiftToInt16_Sat_32x16.c b/media/libeffects/lvm/lib/Common/src/Int32RShiftToInt16_Sat_32x16.c
old mode 100755
new mode 100644
index b21eef5..8c9980d
--- a/media/libeffects/lvm/lib/Common/src/Int32RShiftToInt16_Sat_32x16.c
+++ b/media/libeffects/lvm/lib/Common/src/Int32RShiftToInt16_Sat_32x16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/JoinTo2i_32x32.c b/media/libeffects/lvm/lib/Common/src/JoinTo2i_32x32.c
old mode 100755
new mode 100644
index e04f1c3..9b938bd
--- a/media/libeffects/lvm/lib/Common/src/JoinTo2i_32x32.c
+++ b/media/libeffects/lvm/lib/Common/src/JoinTo2i_32x32.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_1St_2i_D16C31_SAT.c b/media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_1St_2i_D16C31_SAT.c
old mode 100755
new mode 100644
index c1d2b2c..3d39b93
--- a/media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_1St_2i_D16C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_1St_2i_D16C31_SAT.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_2St_D16C31_SAT.c b/media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_2St_D16C31_SAT.c
old mode 100755
new mode 100644
index 2bb212c..2daf74a
--- a/media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_2St_D16C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_2St_D16C31_SAT.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Core_MixInSoft_D16C31_SAT.c b/media/libeffects/lvm/lib/Common/src/LVC_Core_MixInSoft_D16C31_SAT.c
old mode 100755
new mode 100644
index 0408f42..caa0951
--- a/media/libeffects/lvm/lib/Common/src/LVC_Core_MixInSoft_D16C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Core_MixInSoft_D16C31_SAT.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_2i_D16C31_WRA.c b/media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_2i_D16C31_WRA.c
old mode 100755
new mode 100644
index 2847d47..09ec427
--- a/media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_2i_D16C31_WRA.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_2i_D16C31_WRA.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_D16C31_WRA.c b/media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_D16C31_WRA.c
old mode 100755
new mode 100644
index 78f0122..f1a9ca3
--- a/media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_D16C31_WRA.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_D16C31_WRA.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_MixInSoft_D16C31_SAT.c b/media/libeffects/lvm/lib/Common/src/LVC_MixInSoft_D16C31_SAT.c
old mode 100755
new mode 100644
index 52be129..0052dd7
--- a/media/libeffects/lvm/lib/Common/src/LVC_MixInSoft_D16C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_MixInSoft_D16C31_SAT.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_2i_D16C31_SAT.c b/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_2i_D16C31_SAT.c
old mode 100755
new mode 100644
index d832e06..f443c8f
--- a/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_2i_D16C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_2i_D16C31_SAT.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_D16C31_SAT.c b/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_D16C31_SAT.c
old mode 100755
new mode 100644
index cfb1239..c8dcad7
--- a/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_D16C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_D16C31_SAT.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_2St_D16C31_SAT.c b/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_2St_D16C31_SAT.c
old mode 100755
new mode 100644
index 6184736..7240705
--- a/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_2St_D16C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_MixSoft_2St_D16C31_SAT.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer.h b/media/libeffects/lvm/lib/Common/src/LVC_Mixer.h
old mode 100755
new mode 100644
index 3b32e21..980c783
--- a/media/libeffects/lvm/lib/Common/src/LVC_Mixer.h
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Mixer.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef __LVC_MIXER_H__
#define __LVC_MIXER_H__
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetCurrent.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetCurrent.c
old mode 100755
new mode 100644
index 09658ba..b5ae264
--- a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetCurrent.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetCurrent.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 839 $*/
-/* $Date: 2010-06-16 14:15:52 +0200 (Wed, 16 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "LVC_Mixer_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetTarget.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetTarget.c
old mode 100755
new mode 100644
index ed2cf94..dc2f8e9
--- a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetTarget.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetTarget.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 839 $*/
-/* $Date: 2010-06-16 14:15:52 +0200 (Wed, 16 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "LVC_Mixer_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_Init.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_Init.c
old mode 100755
new mode 100644
index c61e468..449e7b1
--- a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_Init.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "LVC_Mixer_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_Private.h b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_Private.h
old mode 100755
new mode 100644
index d61d670..294e05c
--- a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_Private.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef __LVC_MIXER_PRIVATE_H__
#define __LVC_MIXER_PRIVATE_H__
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTarget.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTarget.c
old mode 100755
new mode 100644
index 4d3fe0c..5efa501
--- a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTarget.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTarget.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "LVC_Mixer_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTimeConstant.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTimeConstant.c
old mode 100755
new mode 100644
index df0fd37..4c1c8b2
--- a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTimeConstant.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTimeConstant.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "LVC_Mixer_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_VarSlope_SetTimeConstant.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_VarSlope_SetTimeConstant.c
old mode 100755
new mode 100644
index 420af9a..8d5304e
--- a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_VarSlope_SetTimeConstant.c
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_VarSlope_SetTimeConstant.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "LVC_Mixer_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_FO_HPF.c b/media/libeffects/lvm/lib/Common/src/LVM_FO_HPF.c
old mode 100755
new mode 100644
index 37c199e..6d8fe46
--- a/media/libeffects/lvm/lib/Common/src/LVM_FO_HPF.c
+++ b/media/libeffects/lvm/lib/Common/src/LVM_FO_HPF.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: nxp27078 $*/
-/* $Revision: 762 $*/
-/* $Date: 2010-06-11 14:50:33 +0200 (vr, 11 jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "ScalarArithmetic.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_FO_LPF.c b/media/libeffects/lvm/lib/Common/src/LVM_FO_LPF.c
old mode 100755
new mode 100644
index 6c73d59..86ec951
--- a/media/libeffects/lvm/lib/Common/src/LVM_FO_LPF.c
+++ b/media/libeffects/lvm/lib/Common/src/LVM_FO_LPF.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: nxp27078 $*/
-/* $Revision: 762 $*/
-/* $Date: 2010-06-11 14:50:33 +0200 (vr, 11 jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "ScalarArithmetic.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_GetOmega.c b/media/libeffects/lvm/lib/Common/src/LVM_GetOmega.c
old mode 100755
new mode 100644
index 1cc10db..f3b9b3c
--- a/media/libeffects/lvm/lib/Common/src/LVM_GetOmega.c
+++ b/media/libeffects/lvm/lib/Common/src/LVM_GetOmega.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: nxp27078 $*/
-/* $Revision: 762 $*/
-/* $Date: 2010-06-11 14:50:33 +0200 (vr, 11 jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "Filter.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Mixer_FilterCoeffs.h b/media/libeffects/lvm/lib/Common/src/LVM_Mixer_FilterCoeffs.h
old mode 100755
new mode 100644
index 00235e0..6846d49
--- a/media/libeffects/lvm/lib/Common/src/LVM_Mixer_FilterCoeffs.h
+++ b/media/libeffects/lvm/lib/Common/src/LVM_Mixer_FilterCoeffs.h
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/************************************************************************************/
/* */
/* Mixer library tables */
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Mixer_TimeConstant.c b/media/libeffects/lvm/lib/Common/src/LVM_Mixer_TimeConstant.c
old mode 100755
new mode 100644
index db6975a..809d904
--- a/media/libeffects/lvm/lib/Common/src/LVM_Mixer_TimeConstant.c
+++ b/media/libeffects/lvm/lib/Common/src/LVM_Mixer_TimeConstant.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "Mixer.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Polynomial.c b/media/libeffects/lvm/lib/Common/src/LVM_Polynomial.c
old mode 100755
new mode 100644
index b8cf4b4..a6d7db2
--- a/media/libeffects/lvm/lib/Common/src/LVM_Polynomial.c
+++ b/media/libeffects/lvm/lib/Common/src/LVM_Polynomial.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "ScalarArithmetic.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Power10.c b/media/libeffects/lvm/lib/Common/src/LVM_Power10.c
old mode 100755
new mode 100644
index 9a3f632..6ca1077
--- a/media/libeffects/lvm/lib/Common/src/LVM_Power10.c
+++ b/media/libeffects/lvm/lib/Common/src/LVM_Power10.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "LVM_Types.h"
#include "LVM_Macros.h"
#include "ScalarArithmetic.h"
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Timer.c b/media/libeffects/lvm/lib/Common/src/LVM_Timer.c
old mode 100755
new mode 100644
index d49aadc..5995f54
--- a/media/libeffects/lvm/lib/Common/src/LVM_Timer.c
+++ b/media/libeffects/lvm/lib/Common/src/LVM_Timer.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: My Project */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/****************************************************************************************/
/* INCLUDE FILES */
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Timer_Init.c b/media/libeffects/lvm/lib/Common/src/LVM_Timer_Init.c
old mode 100755
new mode 100644
index e473038..a935cfe
--- a/media/libeffects/lvm/lib/Common/src/LVM_Timer_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/LVM_Timer_Init.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: My Project */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/****************************************************************************************/
/* INCLUDE FILES */
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Timer_Private.h b/media/libeffects/lvm/lib/Common/src/LVM_Timer_Private.h
old mode 100755
new mode 100644
index 04d5af6..480944f
--- a/media/libeffects/lvm/lib/Common/src/LVM_Timer_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/LVM_Timer_Private.h
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: My Project */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#ifndef LVM_TIMER_PRIVATE_H
#define LVM_TIMER_PRIVATE_H
diff --git a/media/libeffects/lvm/lib/Common/src/LoadConst_16.c b/media/libeffects/lvm/lib/Common/src/LoadConst_16.c
old mode 100755
new mode 100644
index bc2735f..f88ca0e
--- a/media/libeffects/lvm/lib/Common/src/LoadConst_16.c
+++ b/media/libeffects/lvm/lib/Common/src/LoadConst_16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LoadConst_32.c b/media/libeffects/lvm/lib/Common/src/LoadConst_32.c
old mode 100755
new mode 100644
index 19d5d4e..2f1e591
--- a/media/libeffects/lvm/lib/Common/src/LoadConst_32.c
+++ b/media/libeffects/lvm/lib/Common/src/LoadConst_32.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/MSTo2i_Sat_16x16.c b/media/libeffects/lvm/lib/Common/src/MSTo2i_Sat_16x16.c
old mode 100755
new mode 100644
index 1949f3c..26297e7
--- a/media/libeffects/lvm/lib/Common/src/MSTo2i_Sat_16x16.c
+++ b/media/libeffects/lvm/lib/Common/src/MSTo2i_Sat_16x16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/Mac3s_Sat_16x16.c b/media/libeffects/lvm/lib/Common/src/Mac3s_Sat_16x16.c
old mode 100755
new mode 100644
diff --git a/media/libeffects/lvm/lib/Common/src/Mac3s_Sat_32x16.c b/media/libeffects/lvm/lib/Common/src/Mac3s_Sat_32x16.c
old mode 100755
new mode 100644
index 746a273..f28f366
--- a/media/libeffects/lvm/lib/Common/src/Mac3s_Sat_32x16.c
+++ b/media/libeffects/lvm/lib/Common/src/Mac3s_Sat_32x16.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/MixInSoft_D32C31_SAT.c b/media/libeffects/lvm/lib/Common/src/MixInSoft_D32C31_SAT.c
old mode 100755
new mode 100644
index 36de6c1..73c26ed
--- a/media/libeffects/lvm/lib/Common/src/MixInSoft_D32C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/MixInSoft_D32C31_SAT.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/MixSoft_1St_D32C31_WRA.c b/media/libeffects/lvm/lib/Common/src/MixSoft_1St_D32C31_WRA.c
old mode 100755
new mode 100644
index 5cf1a29..ca88b04
--- a/media/libeffects/lvm/lib/Common/src/MixSoft_1St_D32C31_WRA.c
+++ b/media/libeffects/lvm/lib/Common/src/MixSoft_1St_D32C31_WRA.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/MixSoft_2St_D32C31_SAT.c b/media/libeffects/lvm/lib/Common/src/MixSoft_2St_D32C31_SAT.c
old mode 100755
new mode 100644
index 83f95ac..2e0a099
--- a/media/libeffects/lvm/lib/Common/src/MixSoft_2St_D32C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/MixSoft_2St_D32C31_SAT.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: nxp007753 $*/
-/* $Revision: 1316 $*/
-/* $Date: 2010-07-23 11:53:24 +0200 (Fri, 23 Jul 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/Mixer_private.h b/media/libeffects/lvm/lib/Common/src/Mixer_private.h
old mode 100755
new mode 100644
index d012548..607073c
--- a/media/libeffects/lvm/lib/Common/src/Mixer_private.h
+++ b/media/libeffects/lvm/lib/Common/src/Mixer_private.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef __MIXER_PRIVATE_H__
#define __MIXER_PRIVATE_H__
diff --git a/media/libeffects/lvm/lib/Common/src/MonoTo2I_16.c b/media/libeffects/lvm/lib/Common/src/MonoTo2I_16.c
old mode 100755
new mode 100644
index b053e55..ead798d
--- a/media/libeffects/lvm/lib/Common/src/MonoTo2I_16.c
+++ b/media/libeffects/lvm/lib/Common/src/MonoTo2I_16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/MonoTo2I_32.c b/media/libeffects/lvm/lib/Common/src/MonoTo2I_32.c
old mode 100755
new mode 100644
index e8164bb..c09ec0f
--- a/media/libeffects/lvm/lib/Common/src/MonoTo2I_32.c
+++ b/media/libeffects/lvm/lib/Common/src/MonoTo2I_32.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/Mult3s_32x16.c b/media/libeffects/lvm/lib/Common/src/Mult3s_32x16.c
old mode 100755
new mode 100644
index ee83524..a5dc50f
--- a/media/libeffects/lvm/lib/Common/src/Mult3s_32x16.c
+++ b/media/libeffects/lvm/lib/Common/src/Mult3s_32x16.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/NonLinComp_D16.c b/media/libeffects/lvm/lib/Common/src/NonLinComp_D16.c
old mode 100755
new mode 100644
index 1428777..73343cd
--- a/media/libeffects/lvm/lib/Common/src/NonLinComp_D16.c
+++ b/media/libeffects/lvm/lib/Common/src/NonLinComp_D16.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
/****************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C14G11_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C14G11_TRC_WRA_01.c
old mode 100755
new mode 100644
index 06cfe88..c8c1527
--- a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C14G11_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C14G11_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "PK_2I_D32F32CssGss_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C30G11_TRC_WRA_01.c b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C30G11_TRC_WRA_01.c
old mode 100755
new mode 100644
index 5b78f62..67a570b
--- a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C30G11_TRC_WRA_01.c
+++ b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C30G11_TRC_WRA_01.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "PK_2I_D32F32CllGss_TRC_WRA_01_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index e7bcd0c..1d6142c
--- a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Init.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "PK_2I_D32F32CllGss_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index 741f504..c5f9c7c
--- a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Private.h
@@ -18,15 +18,6 @@
#ifndef _PK_2I_D32F32CLLGSS_TRC_WRA_01_PRIVATE_H_
#define _PK_2I_D32F32CLLGSS_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
typedef struct _Filter_State_
diff --git a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Init.c b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Init.c
old mode 100755
new mode 100644
index f02305e..b9f64e6
--- a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Init.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
#include "BIQUAD.h"
#include "PK_2I_D32F32CssGss_TRC_WRA_01_Private.h"
diff --git a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Private.h b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Private.h
old mode 100755
new mode 100644
index ca31669..e2050e0
--- a/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Private.h
@@ -18,15 +18,6 @@
#ifndef _PK_2I_D32F32CSSGSS_TRC_WRA_01_PRIVATE_H_
#define _PK_2I_D32F32CSSGSS_TRC_WRA_01_PRIVATE_H_
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/* The internal state variables are implemented in a (for the user) hidden structure */
/* In this (private) file, the internal structure is declared fro private use. */
diff --git a/media/libeffects/lvm/lib/Common/src/Shift_Sat_v16xv16.c b/media/libeffects/lvm/lib/Common/src/Shift_Sat_v16xv16.c
old mode 100755
new mode 100644
index e449a7f..8363270
--- a/media/libeffects/lvm/lib/Common/src/Shift_Sat_v16xv16.c
+++ b/media/libeffects/lvm/lib/Common/src/Shift_Sat_v16xv16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/Shift_Sat_v32xv32.c b/media/libeffects/lvm/lib/Common/src/Shift_Sat_v32xv32.c
old mode 100755
new mode 100644
index 0ab98ea..fbd132e
--- a/media/libeffects/lvm/lib/Common/src/Shift_Sat_v32xv32.c
+++ b/media/libeffects/lvm/lib/Common/src/Shift_Sat_v32xv32.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1000 $*/
-/* $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/dB_to_Lin32.c b/media/libeffects/lvm/lib/Common/src/dB_to_Lin32.c
old mode 100755
new mode 100644
diff --git a/media/libeffects/lvm/lib/Common/src/mult3s_16x16.c b/media/libeffects/lvm/lib/Common/src/mult3s_16x16.c
old mode 100755
new mode 100644
index b500979..4092560
--- a/media/libeffects/lvm/lib/Common/src/mult3s_16x16.c
+++ b/media/libeffects/lvm/lib/Common/src/mult3s_16x16.c
@@ -16,14 +16,6 @@
*/
/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1000 $
- $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
-/**********************************************************************************
INCLUDE FILES
***********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h b/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h
old mode 100755
new mode 100644
index 7ba583f..db6aabe
--- a/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h
+++ b/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1005 $
- $Date: 2010-06-28 13:58:28 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
/****************************************************************************************/
/* */
/* Header file for the application layer interface of the N-Band equaliser. */
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_CalcCoef.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_CalcCoef.c
old mode 100755
new mode 100644
index 4881049..fddedb9
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_CalcCoef.c
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_CalcCoef.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1005 $
- $Date: 2010-06-28 13:58:28 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
/****************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Coeffs.h b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Coeffs.h
old mode 100755
new mode 100644
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Control.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Control.c
old mode 100755
new mode 100644
index dac2449..10e7d74
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Control.c
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Control.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1316 $
- $Date: 2010-07-23 11:53:24 +0200 (Fri, 23 Jul 2010) $
-
-***********************************************************************************/
-
/****************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c
old mode 100755
new mode 100644
index a29fe05..e83e515
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1005 $
- $Date: 2010-06-28 13:58:28 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
/****************************************************************************************/
/* */
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Private.h b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Private.h
old mode 100755
new mode 100644
index 0ae84af..9df980c
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Private.h
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Private.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1005 $
- $Date: 2010-06-28 13:58:28 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
#ifndef __LVEQNB_PRIVATE_H__
#define __LVEQNB_PRIVATE_H__
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Process.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Process.c
old mode 100755
new mode 100644
index e29e881..ac3c740
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Process.c
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Process.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/**********************************************************************************
-
- $Author: beq07716 $
- $Revision: 1005 $
- $Date: 2010-06-28 13:58:28 +0200 (Mon, 28 Jun 2010) $
-
-***********************************************************************************/
-
/****************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c
old mode 100755
new mode 100644
index 33c07da..8e2e0e8
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1005 $
- $Date: 2010-06-28 13:58:28 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
diff --git a/media/libeffects/lvm/lib/Reverb/lib/LVREV.h b/media/libeffects/lvm/lib/Reverb/lib/LVREV.h
old mode 100755
new mode 100644
index 4c32db0..28e3369
--- a/media/libeffects/lvm/lib/Reverb/lib/LVREV.h
+++ b/media/libeffects/lvm/lib/Reverb/lib/LVREV.h
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq03888 $*/
-/* $Revision: 1204 $*/
-/* $Date: 2010-07-14 08:55:43 +0200 (Wed, 14 Jul 2010) $*/
-/* */
-/************************************************************************/
-
/****************************************************************************************/
/* */
/* Header file for the application layer interface of the LVREV module */
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.c
old mode 100755
new mode 100644
index 0026652..6a8b39b
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.c
@@ -17,15 +17,6 @@
/****************************************************************************************/
/* */
-/* Project:: */
-/* $Author: nxp007753 $ */
-/* $Revision: 1316 $ */
-/* $Date: 2010-07-23 11:53:24 +0200 (Fri, 23 Jul 2010) $ */
-/* */
-/****************************************************************************************/
-
-/****************************************************************************************/
-/* */
/* Includes */
/* */
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.c
old mode 100755
new mode 100644
index b02b1a7..6bb1e88
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.c
@@ -17,15 +17,6 @@
/****************************************************************************************/
/* */
-/* Project:: */
-/* $Author: nxp007753 $ */
-/* $Revision: 1316 $ */
-/* $Date: 2010-07-23 11:53:24 +0200 (Fri, 23 Jul 2010) $ */
-/* */
-/****************************************************************************************/
-
-/****************************************************************************************/
-/* */
/* Includes */
/* */
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_GetControlParameters.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_GetControlParameters.c
old mode 100755
new mode 100644
index ebf145e..7cee26d
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_GetControlParameters.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_GetControlParameters.c
@@ -17,15 +17,6 @@
/****************************************************************************************/
/* */
-/* Project:: */
-/* $Author: nxp27078 $*/
-/* $Revision: 762 $*/
-/* $Date: 2010-06-11 14:50:33 +0200 (Fri, 11 Jun 2010) $*/
-/* */
-/****************************************************************************************/
-
-/****************************************************************************************/
-/* */
/* Includes */
/* */
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.c
old mode 100755
new mode 100644
index ca1c84d..c2b266a
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.c
@@ -17,15 +17,6 @@
/****************************************************************************************/
/* */
-/* Project:: */
-/* $Author: nxp007753 $ */
-/* $Revision: 1316 $ */
-/* $Date: 2010-07-23 11:53:24 +0200 (Fri, 23 Jul 2010) $ */
-/* */
-/****************************************************************************************/
-
-/****************************************************************************************/
-/* */
/* Includes */
/* */
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_GetMemoryTable.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_GetMemoryTable.c
old mode 100755
new mode 100644
index e16a3d3..2012432
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_GetMemoryTable.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_GetMemoryTable.c
@@ -17,15 +17,6 @@
/****************************************************************************************/
/* */
-/* Project:: */
-/* $Author: beq07716 $*/
-/* $Revision: 1007 $*/
-/* $Date: 2010-06-28 14:06:36 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/****************************************************************************************/
-
-/****************************************************************************************/
-/* */
/* Includes */
/* */
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h b/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h
old mode 100755
new mode 100644
index 896b051..fbfa437
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************/
-/* */
-/* Project:: */
-/* $Author: nxp007753 $ */
-/* $Revision: 1316 $ */
-/* $Date: 2010-07-23 11:53:24 +0200 (Fri, 23 Jul 2010) $ */
-/* */
-/****************************************************************************************/
-
#ifndef __LVREV_PRIVATE_H__
#define __LVREV_PRIVATE_H__
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_Process.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_Process.c
old mode 100755
new mode 100644
index 822ac8f..81521ba
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_Process.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_Process.c
@@ -17,15 +17,6 @@
/****************************************************************************************/
/* */
-/* Project:: */
-/* $Author: nxp007753 $ */
-/* $Revision: 1316 $ */
-/* $Date: 2010-07-23 11:53:24 +0200 (Fri, 23 Jul 2010) $ */
-/* */
-/****************************************************************************************/
-
-/****************************************************************************************/
-/* */
/* Includes */
/* */
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.c
old mode 100755
new mode 100644
index 124fd3b..f5895a7
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.c
@@ -17,15 +17,6 @@
/****************************************************************************************/
/* */
-/* Project:: */
-/* $Author: nxp007753 $ */
-/* $Revision: 1316 $ */
-/* $Date: 2010-07-23 11:53:24 +0200 (Fri, 23 Jul 2010) $ */
-/* */
-/****************************************************************************************/
-
-/****************************************************************************************/
-/* */
/* Includes */
/* */
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c
old mode 100755
new mode 100644
index 9249a31..5a6d43d
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c
@@ -17,15 +17,6 @@
/****************************************************************************************/
/* */
-/* Project:: */
-/* $Author: beq07716 $ */
-/* $Revision: 1011 $ */
-/* $Date: 2010-06-28 15:07:08 +0200 (Mon, 28 Jun 2010) $ */
-/* */
-/****************************************************************************************/
-
-/****************************************************************************************/
-/* */
/* Includes */
/* */
/****************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.h b/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.h
old mode 100755
new mode 100644
index 98471be..5f993bd
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.h
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.h
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************/
-/* */
-/* Project:: */
-/* $Author: beq07716 $ */
-/* $Revision: 773 $ */
-/* $Date: 2010-06-14 10:43:54 +0200 (Mon, 14 Jun 2010) $ */
-/* */
-/****************************************************************************************/
-
#ifndef _LVREV_TABLES_H_
#define _LVREV_TABLES_H_
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/lib/LVPSA.h b/media/libeffects/lvm/lib/SpectrumAnalyzer/lib/LVPSA.h
old mode 100755
new mode 100644
index b9903b2..a675cb2
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/lib/LVPSA.h
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/lib/LVPSA.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: PSA_01_ARMC_01 */
-/* $Author: beq07716 $*/
-/* $Revision: 1006 $*/
-/* $Date: 2010-06-28 14:01:47 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#ifndef _LVPSA_H_
#define _LVPSA_H_
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Control.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Control.c
old mode 100755
new mode 100644
index 1be8ff0..cd5f69c
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Control.c
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Control.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: PSA_01_ARMC_01 */
-/* $Author: beq07716 $*/
-/* $Revision: 1006 $*/
-/* $Date: 2010-06-28 14:01:47 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#include "LVPSA.h"
#include "LVPSA_Private.h"
#include "VectorArithmetic.h"
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Init.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Init.c
old mode 100755
new mode 100644
index ab45678..27a4bc3
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Init.c
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Init.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: PSA_01_ARMC_01 */
-/* $Author: beq07716 $*/
-/* $Revision: 1006 $*/
-/* $Date: 2010-06-28 14:01:47 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#include "LVPSA.h"
#include "LVPSA_Private.h"
#include "InstAlloc.h"
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Memory.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Memory.c
old mode 100755
new mode 100644
index 059cb4e..0984b10
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Memory.c
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Memory.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: PSA_01_ARMC_01 */
-/* $Author: beq07716 $*/
-/* $Revision: 1006 $*/
-/* $Date: 2010-06-28 14:01:47 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#include "LVPSA.h"
#include "LVPSA_Private.h"
#include "InstAlloc.h"
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h
old mode 100755
new mode 100644
index eb9fa8f..1d8bedd
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: PSA_01_ARMC_01 */
-/* $Author: beq07716 $*/
-/* $Revision: 1006 $*/
-/* $Date: 2010-06-28 14:01:47 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#ifndef _LVPSA_PRIVATE_H_
#define _LVPSA_PRIVATE_H_
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Process.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Process.c
old mode 100755
new mode 100644
index d88a751..9e29f68
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Process.c
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Process.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: PSA_01_ARMC_01 */
-/* $Author: beq07716 $*/
-/* $Revision: 1006 $*/
-/* $Date: 2010-06-28 14:01:47 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#include "LVPSA.h"
#include "LVPSA_Private.h"
#include "LVM_Macros.h"
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD.h b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD.h
old mode 100755
new mode 100644
index 641357e..836bfd7
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD.h
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: PSA_01_ARMC_01 */
-/* $Author: beq07716 $*/
-/* $Revision: 1006 $*/
-/* $Date: 2010-06-28 14:01:47 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#ifndef _LVPSA_QPD_H_
#define _LVPSA_QPD_H_
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Init.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Init.c
old mode 100755
new mode 100644
index 37abe40..50e0a80
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Init.c
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Init.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: PSA_01_ARMC_01 */
-/* $Author: beq07716 $*/
-/* $Revision: 1006 $*/
-/* $Date: 2010-06-28 14:01:47 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#include "LVPSA_QPD.h"
/************************************************************************************/
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Process.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Process.c
old mode 100755
new mode 100644
index 7087475..67197c1
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Process.c
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Process.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: PSA_01_ARMC_01 */
-/* $Author: beq07716 $*/
-/* $Revision: 1006 $*/
-/* $Date: 2010-06-28 14:01:47 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
#include "LVPSA_QPD.h"
#include "LVPSA_Private.h"
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c
old mode 100755
new mode 100644
index f4a35c5..21a5d8d
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c
@@ -15,15 +15,6 @@
* limitations under the License.
*/
-/************************************************************************/
-/* */
-/* Project:: PSA_01_ARMC_01 */
-/* $Author: beq07716 $*/
-/* $Revision: 1006 $*/
-/* $Date: 2010-06-28 14:01:47 +0200 (Mon, 28 Jun 2010) $*/
-/* */
-/************************************************************************/
-
/************************************************************************************/
/* */
diff --git a/media/libeffects/lvm/lib/StereoWidening/lib/LVCS.h b/media/libeffects/lvm/lib/StereoWidening/lib/LVCS.h
old mode 100755
new mode 100644
index 1ab45cc..0d62274
--- a/media/libeffects/lvm/lib/StereoWidening/lib/LVCS.h
+++ b/media/libeffects/lvm/lib/StereoWidening/lib/LVCS.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/****************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1001 $
- $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $
-
-*****************************************************************************************/
-
/****************************************************************************************/
/* */
/* Header file for the application layer interface of Concert Sound and Concert */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.c
old mode 100755
new mode 100644
index b1d9408..3e48c7e
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq06068 $
- $Revision: 1307 $
- $Date: 2010-07-22 17:41:25 +0200 (Thu, 22 Jul 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.h
old mode 100755
new mode 100644
index 79dff41..d1ef70a
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1001 $
- $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
#ifndef __LVCS_BYPASSMIX_H__
#define __LVCS_BYPASSMIX_H__
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.c
old mode 100755
new mode 100644
index 668b151..a3ba42b
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1331 $
- $Date: 2010-07-27 12:26:23 +0200 (Tue, 27 Jul 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
/* Includes */
@@ -127,6 +119,8 @@
pInstance->VolCorrect = pLVCS_VolCorrectTable[Offset];
+ pInstance->CompressGain = pInstance->VolCorrect.CompMin;
+
LVC_Mixer_Init(&pInstance->BypassMix.Mixer_Instance.MixerStream[0],0,0);
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c
old mode 100755
new mode 100644
index d8023d6..25b0d86
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1331 $
- $Date: 2010-07-27 12:26:23 +0200 (Tue, 27 Jul 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.h
old mode 100755
new mode 100644
index 10b02cc..cf96f5b
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1001 $
- $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
#ifndef __LVCS_EQUALISER_H__
#define __LVCS_EQUALISER_H__
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Headphone_Coeffs.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Headphone_Coeffs.h
old mode 100755
new mode 100644
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.c
old mode 100755
new mode 100644
index 82a8db2..1904e46
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1331 $
- $Date: 2010-07-27 12:26:23 +0200 (Tue, 27 Jul 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h
old mode 100755
new mode 100644
index a977690..f3adb8d
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq06068 $
- $Revision: 1307 $
- $Date: 2010-07-22 17:41:25 +0200 (Thu, 22 Jul 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
/* Header file for the private layer interface of concert sound. */
@@ -65,6 +57,7 @@
#define LVCS_REVERBSWITCH 0x0002 /* Reverberation enable control */
#define LVCS_EQUALISERSWITCH 0x0004 /* Equaliser enable control */
#define LVCS_BYPASSMIXSWITCH 0x0008 /* Bypass mixer enable control */
+#define LVCS_COMPGAINFRAME 64 /* Compressor gain update interval */
/* Memory */
#define LVCS_SCRATCHBUFFERS 6 /* Number of buffers required for inplace processing */
@@ -120,6 +113,7 @@
LVCS_OutputDevice_en OutputDevice; /* Selected output device type */
LVCS_VolCorrect_t VolCorrect; /* Volume correction settings */
LVM_INT16 TransitionGain; /* Transition gain */
+ LVM_INT16 CompressGain; /* Last used compressor gain*/
/* Sub-block configurations */
LVCS_StereoEnhancer_t StereoEnhancer; /* Stereo enhancer configuration */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Process.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Process.c
old mode 100755
new mode 100644
index 999b8bb..5d99461
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Process.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Process.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1001 $
- $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
@@ -213,10 +205,80 @@
- (((LVM_INT32)pInstance->VolCorrect.CompMin * (Current1)) >> 15)
+ (((LVM_INT32)pInstance->VolCorrect.CompFull * (Current1)) >> 15) );
- NonLinComp_D16(Gain, /* Compressor gain setting */
- pOutData,
- pOutData,
- (LVM_INT32)(2*NumSamples));
+ if(NumSamples < LVCS_COMPGAINFRAME)
+ {
+ NonLinComp_D16(Gain, /* Compressor gain setting */
+ pOutData,
+ pOutData,
+ (LVM_INT32)(2*NumSamples));
+ }
+ else
+ {
+ LVM_INT16 GainStep;
+ LVM_INT16 FinalGain;
+ LVM_INT16 SampleToProcess = NumSamples;
+ LVM_INT16 *pOutPtr;
+
+ /* Large changes in Gain can cause clicks in output
+ Split data into small blocks and use interpolated gain values */
+
+ GainStep = (LVM_INT16)(((Gain-pInstance->CompressGain) * LVCS_COMPGAINFRAME)/NumSamples);
+
+ if((GainStep ==0)&&(pInstance->CompressGain < Gain))
+ {
+ GainStep=1;
+ }
+ else
+ {
+ if((GainStep ==0)&&(pInstance->CompressGain > Gain))
+ {
+ GainStep=-1;
+ }
+ }
+
+ FinalGain = Gain;
+ Gain = pInstance->CompressGain;
+ pOutPtr = pOutData;
+
+ while(SampleToProcess > 0)
+ {
+ Gain = (LVM_INT16)(Gain + GainStep);
+ if((GainStep > 0)&& (FinalGain <= Gain))
+ {
+ Gain = FinalGain;
+ GainStep =0;
+ }
+
+ if((GainStep < 0)&& (FinalGain > Gain))
+ {
+ Gain = FinalGain;
+ GainStep =0;
+ }
+
+ if(SampleToProcess > LVCS_COMPGAINFRAME)
+ {
+ NonLinComp_D16(Gain, /* Compressor gain setting */
+ pOutPtr,
+ pOutPtr,
+ (LVM_INT32)(2*LVCS_COMPGAINFRAME));
+ pOutPtr +=(2*LVCS_COMPGAINFRAME);
+ SampleToProcess = (LVM_INT16)(SampleToProcess-LVCS_COMPGAINFRAME);
+ }
+ else
+ {
+ NonLinComp_D16(Gain, /* Compressor gain setting */
+ pOutPtr,
+ pOutPtr,
+ (LVM_INT32)(2*SampleToProcess));
+
+ SampleToProcess = 0;
+ }
+
+ }
+ }
+
+ /* Store gain value*/
+ pInstance->CompressGain = Gain;
}
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c
old mode 100755
new mode 100644
index 861bde6..ee257b8
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1315 $
- $Date: 2010-07-23 11:52:08 +0200 (Fri, 23 Jul 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.h
old mode 100755
new mode 100644
index 1164bce..6e026ff
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1001 $
- $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
#ifndef __LVCS_REVERBGENERATOR_H__
#define __LVCS_REVERBGENERATOR_H__
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c
old mode 100755
new mode 100644
index 83748e6..b9b8b05
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: nxp007753 $
- $Revision: 1331 $
- $Date: 2010-07-27 12:26:23 +0200 (Tue, 27 Jul 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
/* Includes */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.h
old mode 100755
new mode 100644
index c3f6296..15bc407
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.h
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1001 $
- $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
#ifndef __LVCS_STEREOENHANCER_H__
#define __LVCS_STEREOENHANCER_H__
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c
old mode 100755
new mode 100644
index ad4eb1e..974de21
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c
@@ -15,14 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: beq07716 $
- $Revision: 1001 $
- $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $
-
-*************************************************************************************/
-
/************************************************************************************/
/* */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.h
old mode 100755
new mode 100644
index 72d6855..3f6c4c8
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.h
@@ -15,13 +15,6 @@
* limitations under the License.
*/
-/************************************************************************************
-
- $Author: nxp27078 $
- $Revision: 672 $
- $Date: 2010-06-08 19:39:38 +0200 (Tue, 08 Jun 2010) $
-
-*************************************************************************************/
#ifndef __LVCS_TABLES_H__
#define __LVCS_TABLES_H__
diff --git a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
index d856eb4..7297811 100644
--- a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
+++ b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
@@ -26,9 +26,6 @@
#include <new>
#include <EffectBundle.h>
-#define LVM_MAX_SESSIONS 32
-#define MAX_NUM_BANDS 5
-#define MAX_CALL_SIZE 256
// effect_interface_t interface implementation for bass boost
extern "C" const struct effect_interface_s gLvmEffectInterface;
@@ -77,8 +74,8 @@
EFFECT_API_VERSION,
(EFFECT_FLAG_TYPE_INSERT | EFFECT_FLAG_INSERT_LAST | EFFECT_FLAG_DEVICE_IND
| EFFECT_FLAG_VOLUME_CTRL),
- 0, // TODO
- 1,
+ BASS_BOOST_CUP_LOAD_ARM9E,
+ BUNDLE_MEM_USAGE,
"Dynamic Bass Boost",
"NXP Software Ltd.",
};
@@ -90,8 +87,8 @@
EFFECT_API_VERSION,
(EFFECT_FLAG_TYPE_INSERT | EFFECT_FLAG_INSERT_LAST | EFFECT_FLAG_DEVICE_IND
| EFFECT_FLAG_VOLUME_CTRL),
- 0, // TODO
- 1,
+ VIRTUALIZER_CUP_LOAD_ARM9E,
+ BUNDLE_MEM_USAGE,
"Virtualizer",
"NXP Software Ltd.",
};
@@ -102,8 +99,8 @@
{0xce772f20, 0x847d, 0x11df, 0xbb17, {0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b}}, // uuid Eq NXP
EFFECT_API_VERSION,
(EFFECT_FLAG_TYPE_INSERT | EFFECT_FLAG_INSERT_LAST | EFFECT_FLAG_VOLUME_CTRL),
- 0, // TODO
- 1,
+ EQUALIZER_CUP_LOAD_ARM9E,
+ BUNDLE_MEM_USAGE,
"Equalizer",
"NXP Software Ltd.",
};
@@ -114,8 +111,8 @@
{0x119341a0, 0x8469, 0x11df, 0x81f9, { 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b }}, //uuid VOL NXP
EFFECT_API_VERSION,
(EFFECT_FLAG_TYPE_INSERT | EFFECT_FLAG_INSERT_LAST | EFFECT_FLAG_VOLUME_CTRL),
- 0, // TODO
- 1,
+ VOLUME_CUP_LOAD_ARM9E,
+ BUNDLE_MEM_USAGE,
"Volume",
"NXP Software Ltd.",
};
@@ -258,18 +255,27 @@
pContext->pBundledContext->NumberEffectsEnabled = 0;
pContext->pBundledContext->NumberEffectsCalled = 0;
pContext->pBundledContext->frameCount = 0;
+ pContext->pBundledContext->firstVolume = LVM_TRUE;
#ifdef LVM_PCM
- pContext->pBundledContext->PcmInPtr = NULL;
- pContext->pBundledContext->PcmOutPtr = NULL;
- pContext->pBundledContext->PcmInPtr = fopen("/data/tmp/bundle_pcm_in.pcm", "w");
- pContext->pBundledContext->PcmOutPtr = fopen("/data/tmp/bundle_pcm_out.pcm", "w");
-
- if((pContext->pBundledContext->PcmInPtr == NULL)||
- (pContext->pBundledContext->PcmOutPtr == NULL)){
+ char fileName[256];
+ snprintf(fileName, 256, "/data/tmp/bundle_%p_pcm_in.pcm", pContext->pBundledContext);
+ pContext->pBundledContext->PcmInPtr = fopen(fileName, "w");
+ if (pContext->pBundledContext->PcmInPtr == NULL) {
+ LOGV("cannot open %s", fileName);
return -EINVAL;
}
+
+ snprintf(fileName, 256, "/data/tmp/bundle_%p_pcm_out.pcm", pContext->pBundledContext);
+ pContext->pBundledContext->PcmOutPtr = fopen(fileName, "w");
+ if (pContext->pBundledContext->PcmOutPtr == NULL) {
+ LOGV("cannot open %s", fileName);
+ fclose(pContext->pBundledContext->PcmInPtr);
+ pContext->pBundledContext->PcmInPtr = NULL;
+ return -EINVAL;
+ }
+
#endif
/* Saved strength is used to return the exact strength that was used in the set to the get
@@ -377,8 +383,14 @@
(GlobalSessionMemory[pContext->pBundledContext->SessionNo].bVirtualizerInstantiated==LVM_FALSE))
{
#ifdef LVM_PCM
- fclose(pContext->pBundledContext->PcmInPtr);
- fclose(pContext->pBundledContext->PcmOutPtr);
+ if (pContext->pBundledContext->PcmInPtr != NULL) {
+ fclose(pContext->pBundledContext->PcmInPtr);
+ pContext->pBundledContext->PcmInPtr = NULL;
+ }
+ if (pContext->pBundledContext->PcmOutPtr != NULL) {
+ fclose(pContext->pBundledContext->PcmOutPtr);
+ pContext->pBundledContext->PcmOutPtr = NULL;
+ }
#endif
LvmSessionsActive--;
@@ -503,8 +515,8 @@
MemTab.Region[i].pBaseAddress = malloc(MemTab.Region[i].Size);
if (MemTab.Region[i].pBaseAddress == LVM_NULL){
- LOGV("\tLVM_ERROR :LvmBundle_init CreateInstance Failed to allocate %ld bytes for region %u\n",
- MemTab.Region[i].Size, i );
+ LOGV("\tLVM_ERROR :LvmBundle_init CreateInstance Failed to allocate %ld bytes "
+ "for region %u\n", MemTab.Region[i].Size, i );
bMallocFailure = LVM_TRUE;
}else{
LOGV("\tLvmBundle_init CreateInstance allocated %ld bytes for region %u at %p\n",
@@ -519,8 +531,8 @@
if(bMallocFailure == LVM_TRUE){
for (int i=0; i<LVM_NR_MEMORY_REGIONS; i++){
if (MemTab.Region[i].pBaseAddress == LVM_NULL){
- LOGV("\tLVM_ERROR :LvmBundle_init CreateInstance Failed to allocate %ld bytes for region %u - +"
- "Not freeing\n", MemTab.Region[i].Size, i );
+ LOGV("\tLVM_ERROR :LvmBundle_init CreateInstance Failed to allocate %ld bytes "
+ "for region %u Not freeing\n", MemTab.Region[i].Size, i );
}else{
LOGV("\tLVM_ERROR :LvmBundle_init CreateInstance Failed: but allocated %ld bytes "
"for region %u at %p- free\n",
@@ -561,7 +573,7 @@
params.VirtualizerOperatingMode = LVM_MODE_OFF;
params.VirtualizerType = LVM_CONCERTSOUND;
params.VirtualizerReverbLevel = 100;
- params.CS_EffectLevel = LVM_CS_EFFECT_HIGH;
+ params.CS_EffectLevel = LVM_CS_EFFECT_NONE;
/* N-Band Equaliser parameters */
params.EQNB_OperatingMode = LVM_EQNB_OFF;
@@ -597,6 +609,10 @@
params.PSA_Enable = LVM_PSA_OFF;
params.PSA_PeakDecayRate = LVM_PSA_SPEED_MEDIUM;
+ /* TE Control parameters */
+ params.TE_OperatingMode = LVM_TE_OFF;
+ params.TE_EffectLevel = 0;
+
/* Activate the initial settings */
LvmStatus = LVM_SetControlParameters(pContext->pBundledContext->hInstance,
¶ms);
@@ -691,6 +707,8 @@
fflush(pContext->pBundledContext->PcmInPtr);
#endif
+ //LOGV("Calling LVM_Process");
+
/* Process the samples */
LvmStatus = LVM_Process(pContext->pBundledContext->hInstance, /* Instance handle */
pIn, /* Input buffer */
@@ -1056,7 +1074,7 @@
//LOGV("\tVirtualizerGetStrength Succesfully returned from LVM_GetControlParameters\n");
//LOGV("\tVirtualizerGetStrength() (0-100) -> %d\n", ActiveParams.VirtualizerReverbLevel*10);
- return ActiveParams.VirtualizerReverbLevel*10;
+ return pContext->pBundledContext->VirtStrengthSaved;
} /* end getStrength */
//----------------------------------------------------------------------------
@@ -1085,15 +1103,15 @@
//LOGV("\tVirtualizerSetStrength Succesfully returned from LVM_GetControlParameters\n");
/* Virtualizer parameters */
- ActiveParams.VirtualizerReverbLevel = (LVM_INT16)(strength/10);
+ ActiveParams.CS_EffectLevel = (int)((strength*32767)/1000);
//LOGV("\tVirtualizerSetStrength() (0-1000) -> %d\n", strength );
- //LOGV("\tVirtualizerSetStrength() (0- 100) -> %d\n", ActiveParams.VirtualizerReverbLevel );
+ //LOGV("\tVirtualizerSetStrength() (0- 100) -> %d\n", ActiveParams.CS_EffectLevel );
/* Activate the initial settings */
LvmStatus = LVM_SetControlParameters(pContext->pBundledContext->hInstance, &ActiveParams);
LVM_ERROR_CHECK(LvmStatus, "LVM_SetControlParameters", "VirtualizerSetStrength")
- //LOGV("\tVirtualizerSetStrength Succesfully called LVM_SetControlParameters\n");
+ //LOGV("\tVirtualizerSetStrength Succesfully called LVM_SetControlParameters\n\n");
} /* end setStrength */
//----------------------------------------------------------------------------
@@ -1142,7 +1160,7 @@
// Outputs:
//
//---------------------------------------------------------------------------
-void EqualizerSetBandLevel(EffectContext *pContext, int band, int Gain){
+void EqualizerSetBandLevel(EffectContext *pContext, int band, short Gain){
int gainRounded;
if(Gain > 0){
gainRounded = (int)((Gain+50)/100);
@@ -1160,7 +1178,7 @@
LvmStatus = LVM_GetControlParameters(pContext->pBundledContext->hInstance, &ActiveParams);
LVM_ERROR_CHECK(LvmStatus, "LVM_GetControlParameters", "EqualizerSetBandLevel")
//LOGV("\tEqualizerSetBandLevel Succesfully returned from LVM_GetControlParameters\n");
- //LOGV("\tEqualizerSetBandLevel just Got -> %d\n", ActiveParams.pEQNB_BandDefinition[band].Gain);
+ //LOGV("\tEqualizerSetBandLevel just Got -> %d\n",ActiveParams.pEQNB_BandDefinition[band].Gain);
/* Set local EQ parameters */
BandDef = ActiveParams.pEQNB_BandDefinition;
@@ -1169,7 +1187,7 @@
/* Activate the initial settings */
LvmStatus = LVM_SetControlParameters(pContext->pBundledContext->hInstance, &ActiveParams);
LVM_ERROR_CHECK(LvmStatus, "LVM_SetControlParameters", "EqualizerSetBandLevel")
- //LOGV("\tEqualizerSetBandLevel just Set -> %d\n", ActiveParams.pEQNB_BandDefinition[band].Gain);
+ //LOGV("\tEqualizerSetBandLevel just Set -> %d\n",ActiveParams.pEQNB_BandDefinition[band].Gain);
pContext->pBundledContext->CurPreset = PRESET_CUSTOM;
return;
@@ -1389,7 +1407,13 @@
LVM_ERROR_CHECK(LvmStatus, "LVM_GetControlParameters", "VolumeSetVolumeLevel")
if(LvmStatus != LVM_SUCCESS) return -EINVAL;
- //LOGV("\tVolumeSetVolumeLevel just set (-96dB -> 0dB) -> %d\n", ActiveParams.VC_EffectLevel );
+ //LOGV("\tVolumeSetVolumeLevel just set (-96dB -> 0dB) -> %d\n",ActiveParams.VC_EffectLevel );
+ if(pContext->pBundledContext->firstVolume == LVM_TRUE){
+ LvmStatus = LVM_SetVolumeNoSmoothing(pContext->pBundledContext->hInstance, &ActiveParams);
+ LVM_ERROR_CHECK(LvmStatus, "LVM_SetVolumeNoSmoothing", "LvmBundle_process")
+ LOGV("\tLVM_VOLUME: Disabling Smoothing for first volume change to remove spikes/clicks");
+ pContext->pBundledContext->firstVolume = LVM_FALSE;
+ }
return 0;
} /* end setVolumeLevel */
@@ -1524,7 +1548,8 @@
pContext->pBundledContext->positionSaved = position;
Balance = VolumeConvertStereoPosition(pContext->pBundledContext->positionSaved);
- //LOGV("\tVolumeSetStereoPosition start pContext->pBundledContext->positionSaved = %d", pContext->pBundledContext->positionSaved);
+ //LOGV("\tVolumeSetStereoPosition start pContext->pBundledContext->positionSaved = %d",
+ //pContext->pBundledContext->positionSaved);
if(pContext->pBundledContext->bStereoPositionEnabled == LVM_TRUE){
@@ -1559,7 +1584,8 @@
//LOGV("\tVolumeSetStereoPosition Position attempting to set, but not enabled %d %d\n",
//position, Balance);
}
- //LOGV("\tVolumeSetStereoPosition end pContext->pBundledContext->positionSaved = %d\n", pContext->pBundledContext->positionSaved);
+ //LOGV("\tVolumeSetStereoPosition end pContext->pBundledContext->positionSaved = %d\n",
+ //pContext->pBundledContext->positionSaved);
return 0;
} /* end VolumeSetStereoPosition */
@@ -1583,7 +1609,8 @@
LVM_ReturnStatus_en LvmStatus = LVM_SUCCESS; /* Function call status */
LVM_INT16 balance;
- //LOGV("\tVolumeGetStereoPosition start pContext->pBundledContext->positionSaved = %d", pContext->pBundledContext->positionSaved);
+ //LOGV("\tVolumeGetStereoPosition start pContext->pBundledContext->positionSaved = %d",
+ //pContext->pBundledContext->positionSaved);
LvmStatus = LVM_GetControlParameters(pContext->pBundledContext->hInstance, &ActiveParams);
LVM_ERROR_CHECK(LvmStatus, "LVM_GetControlParameters", "VolumeGetStereoPosition")
@@ -1600,7 +1627,8 @@
}
}
*position = (LVM_INT16)pContext->pBundledContext->positionSaved; // Convert dB to millibels
- //LOGV("\tVolumeGetStereoPosition end returning pContext->pBundledContext->positionSaved = %d\n", pContext->pBundledContext->positionSaved);
+ //LOGV("\tVolumeGetStereoPosition end returning pContext->pBundledContext->positionSaved =%d\n",
+ //pContext->pBundledContext->positionSaved);
return 0;
} /* end VolumeGetStereoPosition */
@@ -1686,14 +1714,14 @@
switch (param){
case BASSBOOST_PARAM_STRENGTH_SUPPORTED:
if (*pValueSize != sizeof(uint32_t)){
- LOGV("\tLVM_ERROR : BassBoost_getParameter() invalid pValueSize %d", *pValueSize);
+ LOGV("\tLVM_ERROR : BassBoost_getParameter() invalid pValueSize1 %d", *pValueSize);
return -EINVAL;
}
*pValueSize = sizeof(uint32_t);
break;
case BASSBOOST_PARAM_STRENGTH:
if (*pValueSize != sizeof(int16_t)){
- LOGV("\tLVM_ERROR : BassBoost_getParameter() invalid pValueSize %d", *pValueSize);
+ LOGV("\tLVM_ERROR : BassBoost_getParameter() invalid pValueSize2 %d", *pValueSize);
return -EINVAL;
}
*pValueSize = sizeof(int16_t);
@@ -1809,10 +1837,9 @@
}
*pValueSize = sizeof(uint32_t);
break;
-
case VIRTUALIZER_PARAM_STRENGTH:
if (*pValueSize != sizeof(int16_t)){
- LOGV("\tLVM_ERROR : Virtualizer_getParameter() invalid pValueSize %d",*pValueSize);
+ LOGV("\tLVM_ERROR : Virtualizer_getParameter() invalid pValueSize2 %d",*pValueSize);
return -EINVAL;
}
*pValueSize = sizeof(int16_t);
@@ -1941,10 +1968,9 @@
}
*pValueSize = 2 * sizeof(int16_t);
break;
-
case EQ_PARAM_BAND_FREQ_RANGE:
if (*pValueSize < 2 * sizeof(int32_t)) {
- LOGV("\tLVM_ERROR : Equalizer_getParameter() invalid pValueSize 2 %d", *pValueSize);
+ LOGV("\tLVM_ERROR : Equalizer_getParameter() invalid pValueSize 3 %d", *pValueSize);
return -EINVAL;
}
*pValueSize = 2 * sizeof(int32_t);
@@ -1952,7 +1978,7 @@
case EQ_PARAM_CENTER_FREQ:
if (*pValueSize < sizeof(int32_t)) {
- LOGV("\tLVM_ERROR : Equalizer_getParameter() invalid pValueSize 1 %d", *pValueSize);
+ LOGV("\tLVM_ERROR : Equalizer_getParameter() invalid pValueSize 5 %d", *pValueSize);
return -EINVAL;
}
*pValueSize = sizeof(int32_t);
@@ -1984,7 +2010,7 @@
*(int16_t *)pValue = -1500;
*((int16_t *)pValue + 1) = 1500;
//LOGV("\tEqualizer_getParameter() EQ_PARAM_LEVEL_RANGE min %d, max %d",
- // *(int32_t *)pValue, *((int32_t *)pValue + 1));
+ // *(int16_t *)pValue, *((int16_t *)pValue + 1));
break;
case EQ_PARAM_BAND_LEVEL:
@@ -2024,7 +2050,7 @@
param2 = *pParamTemp;
*(uint16_t *)pValue = (uint16_t)EqualizerGetBand(pContext, param2);
//LOGV("\tEqualizer_getParameter() EQ_PARAM_GET_BAND frequency %d, band %d",
- // param2, *(int32_t *)pValue);
+ // param2, *(uint16_t *)pValue);
break;
case EQ_PARAM_CUR_PRESET:
@@ -2068,7 +2094,7 @@
break;
}
- //LOGV("\tEqualizer_getParameter end");
+ //GV("\tEqualizer_getParameter end\n");
return status;
} /* end Equalizer_getParameter */
@@ -2137,7 +2163,7 @@
}
} break;
default:
- LOGV("\tLVM_ERROR : setParameter() invalid param %d", param);
+ LOGV("\tLVM_ERROR : Equalizer_setParameter() invalid param %d", param);
status = -EINVAL;
break;
}
@@ -2177,7 +2203,7 @@
int32_t param = *pParamTemp++;;
char *name;
- LOGV("\tVolume_getParameter start");
+ //LOGV("\tVolume_getParameter start");
switch (param){
case VOLUME_PARAM_LEVEL:
@@ -2207,20 +2233,20 @@
switch (param){
case VOLUME_PARAM_LEVEL:
status = VolumeGetVolumeLevel(pContext, (int16_t *)(pValue));
- LOGV("\tVolume_getParameter() VOLUME_PARAM_LEVEL Value is %d",
- *(int16_t *)pValue);
+ //LOGV("\tVolume_getParameter() VOLUME_PARAM_LEVEL Value is %d",
+ // *(int16_t *)pValue);
break;
case VOLUME_PARAM_MAXLEVEL:
*(int16_t *)pValue = 0;
- LOGV("\tVolume_getParameter() VOLUME_PARAM_MAXLEVEL Value is %d",
- *(int16_t *)pValue);
+ //LOGV("\tVolume_getParameter() VOLUME_PARAM_MAXLEVEL Value is %d",
+ // *(int16_t *)pValue);
break;
case VOLUME_PARAM_STEREOPOSITION:
VolumeGetStereoPosition(pContext, (int16_t *)pValue);
- LOGV("\tVolume_getParameter() VOLUME_PARAM_STEREOPOSITION Value is %d",
- *(int16_t *)pValue);
+ //LOGV("\tVolume_getParameter() VOLUME_PARAM_STEREOPOSITION Value is %d",
+ // *(int16_t *)pValue);
break;
case VOLUME_PARAM_MUTE:
@@ -2231,8 +2257,8 @@
case VOLUME_PARAM_ENABLESTEREOPOSITION:
*(int32_t *)pValue = pContext->pBundledContext->bStereoPositionEnabled;
- LOGV("\tVolume_getParameter() VOLUME_PARAM_ENABLESTEREOPOSITION Value is %d",
- *(uint32_t *)pValue);
+ //LOGV("\tVolume_getParameter() VOLUME_PARAM_ENABLESTEREOPOSITION Value is %d",
+ // *(uint32_t *)pValue);
break;
default:
@@ -2270,38 +2296,38 @@
int32_t *pParamTemp = (int32_t *)pParam;
int32_t param = *pParamTemp++;
- LOGV("\tVolume_setParameter start");
+ //LOGV("\tVolume_setParameter start");
switch (param){
case VOLUME_PARAM_LEVEL:
level = *(int16_t *)pValue;
- LOGV("\tVolume_setParameter() VOLUME_PARAM_LEVEL value is %d", level);
- LOGV("\tVolume_setParameter() Calling pVolume->setVolumeLevel");
+ //LOGV("\tVolume_setParameter() VOLUME_PARAM_LEVEL value is %d", level);
+ //LOGV("\tVolume_setParameter() Calling pVolume->setVolumeLevel");
status = VolumeSetVolumeLevel(pContext, (int16_t)level);
- LOGV("\tVolume_setParameter() Called pVolume->setVolumeLevel");
+ //LOGV("\tVolume_setParameter() Called pVolume->setVolumeLevel");
break;
case VOLUME_PARAM_MUTE:
mute = *(uint32_t *)pValue;
- LOGV("\tVolume_setParameter() Calling pVolume->setMute, mute is %d", mute);
- LOGV("\tVolume_setParameter() Calling pVolume->setMute");
+ //LOGV("\tVolume_setParameter() Calling pVolume->setMute, mute is %d", mute);
+ //LOGV("\tVolume_setParameter() Calling pVolume->setMute");
status = VolumeSetMute(pContext, mute);
- LOGV("\tVolume_setParameter() Called pVolume->setMute");
+ //LOGV("\tVolume_setParameter() Called pVolume->setMute");
break;
case VOLUME_PARAM_ENABLESTEREOPOSITION:
positionEnabled = *(uint32_t *)pValue;
status = VolumeEnableStereoPosition(pContext, positionEnabled);
status = VolumeSetStereoPosition(pContext, pContext->pBundledContext->positionSaved);
- LOGV("\tVolume_setParameter() VOLUME_PARAM_ENABLESTEREOPOSITION called");
+ //LOGV("\tVolume_setParameter() VOLUME_PARAM_ENABLESTEREOPOSITION called");
break;
case VOLUME_PARAM_STEREOPOSITION:
position = *(int16_t *)pValue;
- LOGV("\tVolume_setParameter() VOLUME_PARAM_STEREOPOSITION value is %d", position);
- LOGV("\tVolume_setParameter() Calling pVolume->VolumeSetStereoPosition");
+ //LOGV("\tVolume_setParameter() VOLUME_PARAM_STEREOPOSITION value is %d", position);
+ //LOGV("\tVolume_setParameter() Calling pVolume->VolumeSetStereoPosition");
status = VolumeSetStereoPosition(pContext, (int16_t)position);
- LOGV("\tVolume_setParameter() Called pVolume->VolumeSetStereoPosition");
+ //LOGV("\tVolume_setParameter() Called pVolume->VolumeSetStereoPosition");
break;
default:
@@ -2375,8 +2401,8 @@
LVM_INT16 *in = (LVM_INT16 *)inBuffer->raw;
LVM_INT16 *out = (LVM_INT16 *)outBuffer->raw;
- //LOGV("\tEffect_process Start : Enabled = %d Called = %d",
- //pContext->pBundledContext->NumberEffectsEnabled,pContext->pBundledContext->NumberEffectsCalled);
+//LOGV("\tEffect_process Start : Enabled = %d Called = %d",
+//pContext->pBundledContext->NumberEffectsEnabled,pContext->pBundledContext->NumberEffectsCalled);
// LOGV("\tEffect_process Start : Samples left %d %d %d",
// pContext->pBundledContext->SamplesToExitCountBb,
// pContext->pBundledContext->SamplesToExitCountVirt,
@@ -2552,8 +2578,7 @@
android::EqualizerSetPreset(pContext, 0);
}
if(pContext->EffectType == LVM_VOLUME){
- //LOGV("\tEffect_command cmdCode Case: "
- // "EFFECT_CMD_INIT start");
+ //LOGV("\tEffect_command cmdCode Case: EFFECT_CMD_INIT for LVM_VOLUME");
*(int *) pReplyData = android::VolumeSetVolumeLevel(pContext, 0);
}
break;
@@ -2676,8 +2701,7 @@
// sizeof(int32_t)));
}
if(pContext->EffectType == LVM_VOLUME){
- //LOGV("\tVolume_command cmdCode Case: "
- // "EFFECT_CMD_GET_PARAM start");
+ //LOGV("\tVolume_command cmdCode Case: EFFECT_CMD_GET_PARAM start");
if (pCmdData == NULL ||
cmdSize < (int)(sizeof(effect_param_t) + sizeof(int32_t)) ||
pReplyData == NULL ||
@@ -2745,10 +2769,10 @@
p->data + p->psize);
}
if(pContext->EffectType == LVM_VIRTUALIZER){
- //LOGV("\tVirtualizer_command EFFECT_CMD_SET_PARAM param %d, *replySize %d, value %d",
- // *(int32_t *)((char *)pCmdData + sizeof(effect_param_t)),
- // *replySize,
- // *(int16_t *)((char *)pCmdData + sizeof(effect_param_t) + sizeof(int32_t)));
+ //LOGV("\tVirtualizer_command EFFECT_CMD_SET_PARAM param %d, *replySize %d, value %d",
+ // *(int32_t *)((char *)pCmdData + sizeof(effect_param_t)),
+ // *replySize,
+ // *(int16_t *)((char *)pCmdData + sizeof(effect_param_t) + sizeof(int32_t)));
if (pCmdData == NULL||
cmdSize != (int)(sizeof(effect_param_t) + sizeof(int32_t) +sizeof(int16_t))||
@@ -2778,12 +2802,12 @@
p->data + p->psize);
}
if(pContext->EffectType == LVM_EQUALIZER){
- //LOGV("\tEqualizer_command cmdCode Case: "
- // "EFFECT_CMD_SET_PARAM start");
- //LOGV("\tEqualizer_command EFFECT_CMD_SET_PARAM param %d, *replySize %d, value %d ",
- // *(int32_t *)((char *)pCmdData + sizeof(effect_param_t)),
- // *replySize,
- // *(int16_t *)((char *)pCmdData + sizeof(effect_param_t) + sizeof(int32_t)));
+ //LOGV("\tEqualizer_command cmdCode Case: "
+ // "EFFECT_CMD_SET_PARAM start");
+ //LOGV("\tEqualizer_command EFFECT_CMD_SET_PARAM param %d, *replySize %d, value %d ",
+ // *(int32_t *)((char *)pCmdData + sizeof(effect_param_t)),
+ // *replySize,
+ // *(int16_t *)((char *)pCmdData + sizeof(effect_param_t) + sizeof(int32_t)));
if (pCmdData == NULL || cmdSize < (int)(sizeof(effect_param_t) + sizeof(int32_t)) ||
pReplyData == NULL || *replySize != sizeof(int32_t)) {
@@ -2798,12 +2822,11 @@
p->data + p->psize);
}
if(pContext->EffectType == LVM_VOLUME){
- //LOGV("\tVolume_command cmdCode Case: "
- // "EFFECT_CMD_SET_PARAM start");
+ //LOGV("\tVolume_command cmdCode Case: EFFECT_CMD_SET_PARAM start");
//LOGV("\tVolume_command EFFECT_CMD_SET_PARAM param %d, *replySize %d, value %d ",
// *(int32_t *)((char *)pCmdData + sizeof(effect_param_t)),
// *replySize,
- // *(int16_t *)((char *)pCmdData + sizeof(effect_param_t) + sizeof(int32_t)));
+ // *(int16_t *)((char *)pCmdData + sizeof(effect_param_t) +sizeof(int32_t)));
if ( pCmdData == NULL||
cmdSize < (int)(sizeof(effect_param_t) + sizeof(int32_t))||
@@ -2836,7 +2859,7 @@
return -EINVAL;
}
pContext->pBundledContext->bBassEnabled = LVM_TRUE;
- //LOGV("\tEffect_command cmdCode Case: EFFECT_CMD_ENABLE LVM_BASS_BOOST enabled");
+ //LOGV("\tEffect_command cmdCode Case:EFFECT_CMD_ENABLE LVM_BASS_BOOSTenabled");
break;
case LVM_EQUALIZER:
if(pContext->pBundledContext->bEqualizerEnabled == LVM_TRUE){
@@ -2845,7 +2868,7 @@
return -EINVAL;
}
pContext->pBundledContext->bEqualizerEnabled = LVM_TRUE;
- //LOGV("\tEffect_command cmdCode Case: EFFECT_CMD_ENABLE LVM_EQUALIZER enabled");
+ //LOGV("\tEffect_command cmdCode Case:EFFECT_CMD_ENABLE LVM_EQUALIZER enabled");
break;
case LVM_VIRTUALIZER:
if(pContext->pBundledContext->bVirtualizerEnabled == LVM_TRUE){
@@ -2854,7 +2877,7 @@
return -EINVAL;
}
pContext->pBundledContext->bVirtualizerEnabled = LVM_TRUE;
- //LOGV("\tEffect_command cmdCode Case:EFFECT_CMD_ENABLE LVM_VIRTUALIZER enabled");
+ //LOGV("\tEffect_command cmdCode :EFFECT_CMD_ENABLE LVM_VIRTUALIZER enabled");
break;
case LVM_VOLUME:
if(pContext->pBundledContext->bVolumeEnabled == LVM_TRUE){
@@ -2863,7 +2886,7 @@
return -EINVAL;
}
pContext->pBundledContext->bVolumeEnabled = LVM_TRUE;
- //LOGV("\tEffect_command cmdCode Case: EFFECT_CMD_ENABLE LVM_VOLUME enabled");
+ LOGV("\tEffect_command cmdCode Case: EFFECT_CMD_ENABLE LVM_VOLUME enabled");
break;
default:
LOGV("\tLVM_ERROR : Effect_command cmdCode Case: "
@@ -3036,8 +3059,11 @@
dB = (dB +8)>>4;
dB = (dB <-96) ? -96 : dB ;
- //LOGV("\tSession: %d, VOLUME is %d dB (%d), effect is %d",
- //pContext->pBundledContext->SessionNo, (int32_t)dB, vol<<7, pContext->EffectType);
+ LOGV("\tEFFECT_CMD_SET_VOLUME Session: %d, SessionID: %d VOLUME is %d dB (%d), "
+ "effect is %d",
+ pContext->pBundledContext->SessionNo, pContext->pBundledContext->SessionId,
+ (int32_t)dB, vol<<7, pContext->EffectType);
+
memcpy(pReplyData, vol_ret, sizeof(int32_t)*2);
android::VolumeSetVolumeLevel(pContext, (int16_t)(dB*100));
break;
diff --git a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.h b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.h
index 1bee974..35e1114 100644
--- a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.h
+++ b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.h
@@ -26,9 +26,15 @@
extern "C" {
#endif
-#define FIVEBAND_NUMBANDS 5
-#define MAX_NUM_BANDS 5
-#define MAX_CALL_SIZE 256
+#define FIVEBAND_NUMBANDS 5
+#define MAX_NUM_BANDS 5
+#define MAX_CALL_SIZE 256
+#define LVM_MAX_SESSIONS 32
+#define BASS_BOOST_CUP_LOAD_ARM9E 150 // Expressed in 0.1 MIPS
+#define VIRTUALIZER_CUP_LOAD_ARM9E 120 // Expressed in 0.1 MIPS
+#define EQUALIZER_CUP_LOAD_ARM9E 220 // Expressed in 0.1 MIPS
+#define VOLUME_CUP_LOAD_ARM9E 0 // Expressed in 0.1 MIPS
+#define BUNDLE_MEM_USAGE 25 // Expressed in kB
//#define LVM_PCM
#ifndef OPENSL_ES_H_
@@ -67,6 +73,7 @@
bool bVirtualizerTempDisabled; /* Flag for effect to be re-enabled */
int NumberEffectsEnabled; /* Effects in this session */
int NumberEffectsCalled; /* Effects called so far */
+ bool firstVolume; /* No smoothing on first Vol change */
// Saved parameters for each effect */
// Bass Boost
int BassStrengthSaved; /* Conversion between Get/Set */
diff --git a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
index 03f1409..10c3e92 100755
--- a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
+++ b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
@@ -27,13 +27,6 @@
#include <EffectReverb.h>
#include <LVREV.h>
-#define MAX_NUM_BANDS 5
-#define MAX_CALL_SIZE 256
-#define LVREV_MAX_T60 7000
-#define LVREV_MAX_REVERB_LEVEL 2000
-
-//#define LVM_PCM
-
// effect_interface_t interface implementation for reverb
extern "C" const struct effect_interface_s gReverbInterface;
@@ -86,8 +79,8 @@
{ 0x4a387fc0, 0x8ab3, 0x11df, 0x8bad, { 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b } },
EFFECT_API_VERSION,
EFFECT_FLAG_TYPE_AUXILIARY,
- 0, // TODO
- 1,
+ LVREV_CUP_LOAD_ARM9E,
+ LVREV_MEM_USAGE,
"Auxiliary Environmental Reverb",
"NXP Software Ltd.",
};
@@ -98,8 +91,8 @@
{0xc7a511a0, 0xa3bb, 0x11df, 0x860e, {0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b}},
EFFECT_API_VERSION,
EFFECT_FLAG_TYPE_INSERT | EFFECT_FLAG_INSERT_FIRST,
- 0, // TODO
- 1,
+ LVREV_CUP_LOAD_ARM9E,
+ LVREV_MEM_USAGE,
"Insert Environmental Reverb",
"NXP Software Ltd.",
};
@@ -110,8 +103,8 @@
{0xf29a1400, 0xa3bb, 0x11df, 0x8ddc, {0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b}},
EFFECT_API_VERSION,
EFFECT_FLAG_TYPE_AUXILIARY,
- 0, // TODO
- 1,
+ LVREV_CUP_LOAD_ARM9E,
+ LVREV_MEM_USAGE,
"Auxiliary Preset Reverb",
"NXP Software Ltd.",
};
@@ -122,8 +115,8 @@
{0x172cdf00, 0xa3bc, 0x11df, 0xa72f, {0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b}},
EFFECT_API_VERSION,
EFFECT_FLAG_TYPE_INSERT | EFFECT_FLAG_INSERT_FIRST,
- 0, // TODO
- 1,
+ LVREV_CUP_LOAD_ARM9E,
+ LVREV_MEM_USAGE,
"Insert Preset Reverb",
"NXP Software Ltd.",
};
@@ -153,6 +146,8 @@
FILE *PcmOutPtr;
#endif
LVM_Fs_en SampleRate;
+ LVM_INT32 *InFrames32;
+ LVM_INT32 *OutFrames32;
bool auxiliary;
bool preset;
uint16_t curPreset;
@@ -267,6 +262,11 @@
}
#endif
+
+ // Allocate memory for reverb process (*2 is for STEREO)
+ pContext->InFrames32 = (LVM_INT32 *)malloc(LVREV_MAX_FRAME_SIZE * sizeof(LVM_INT32) * 2);
+ pContext->OutFrames32 = (LVM_INT32 *)malloc(LVREV_MAX_FRAME_SIZE * sizeof(LVM_INT32) * 2);
+
LOGV("\tEffectCreate %p, size %d", pContext, sizeof(ReverbContext));
LOGV("\tEffectCreate end\n");
return 0;
@@ -285,6 +285,8 @@
fclose(pContext->PcmInPtr);
fclose(pContext->PcmOutPtr);
#endif
+ free(pContext->InFrames32);
+ free(pContext->OutFrames32);
Reverb_free(pContext);
delete pContext;
return 0;
@@ -389,9 +391,6 @@
LVM_INT16 samplesPerFrame = 0;
LVREV_ReturnStatus_en LvmStatus = LVREV_SUCCESS; /* Function call status */
-
- LVM_INT32 *InFrames32;
- LVM_INT32 *OutFrames32;
LVM_INT16 *OutFrames16;
@@ -405,12 +404,11 @@
return -EINVAL;
}
- InFrames32 = (LVM_INT32 *)malloc(frameCount * sizeof(LVM_INT32) * 2);
- OutFrames32 = (LVM_INT32 *)malloc(frameCount * sizeof(LVM_INT32) * 2);
- OutFrames16 = (LVM_INT16 *)OutFrames32;
+
+ OutFrames16 = (LVM_INT16 *)pContext->OutFrames32;
// Check for NULL pointers
- if((InFrames32 == NULL)||(OutFrames32 == NULL)){
+ if((pContext->InFrames32 == NULL)||(pContext->OutFrames32 == NULL)){
LOGV("\tLVREV_ERROR : process failed to allocate memory for temporary buffers ");
return -EINVAL;
}
@@ -425,13 +423,13 @@
}
// Convert to Input 32 bits
for(int i=0; i<frameCount*samplesPerFrame; i++){
- InFrames32[i] = (LVM_INT32)pIn[i]<<8;
+ pContext->InFrames32[i] = (LVM_INT32)pIn[i]<<8;
}
// If the input was MONO, convert to STEREO
if(pContext->config.inputCfg.channels == CHANNEL_MONO){
//LOGV("\tConverting Output from MONO to STEREO");
- MonoTo2I_32(InFrames32, InFrames32, frameCount);
+ MonoTo2I_32(pContext->InFrames32, pContext->InFrames32, frameCount);
}
//LOGV("\tProcess, frames: %d, InFormat: %d(MONO=%d), OutFormat: %d(STEREO=%d)",
@@ -439,18 +437,18 @@
//pContext->config.outputCfg.channels, CHANNEL_STEREO);
if (pContext->preset && pContext->curPreset == REVERB_PRESET_NONE) {
- memset(OutFrames32, 0, frameCount * sizeof(LVM_INT32) * 2);
+ memset(pContext->OutFrames32, 0, frameCount * sizeof(LVM_INT32) * 2);
} else {
/* Process the samples */
LvmStatus = LVREV_Process(pContext->hInstance, /* Instance handle */
- InFrames32, /* Input buffer */
- OutFrames32, /* Output buffer */
+ pContext->InFrames32, /* Input buffer */
+ pContext->OutFrames32, /* Output buffer */
frameCount); /* Number of samples to read */
}
if (!pContext->auxiliary) {
for (int i=0; i<frameCount*2; i++){
- OutFrames32[i] += InFrames32[i];
+ pContext->OutFrames32[i] += pContext->InFrames32[i];
}
}
@@ -459,7 +457,7 @@
// Convert to 16 bits
for(int i=0; i<frameCount*2; i++){ // Always stereo
- OutFrames16[i] = clamp16(OutFrames32[i]>>8);
+ OutFrames16[i] = clamp16(pContext->OutFrames32[i]>>8);
}
#ifdef LVM_PCM
@@ -478,9 +476,6 @@
memcpy(pOut, OutFrames16, frameCount*sizeof(LVM_INT16)*2); // 2 is for stereo output
}
- free(InFrames32);
- free(OutFrames32);
-
return 0;
} /* end process */
@@ -689,8 +684,8 @@
MemTab.Region[i].pBaseAddress = malloc(MemTab.Region[i].Size);
if (MemTab.Region[i].pBaseAddress == LVM_NULL){
- LOGV("\tLVREV_ERROR :Reverb_init CreateInstance Failed to allocate %ld bytes for region %u\n",
- MemTab.Region[i].Size, i );
+ LOGV("\tLVREV_ERROR :Reverb_init CreateInstance Failed to allocate %ld "
+ "bytes for region %u\n", MemTab.Region[i].Size, i );
bMallocFailure = LVM_TRUE;
}else{
LOGV("\tReverb_init CreateInstance allocate %ld bytes for region %u at %p\n",
@@ -705,11 +700,12 @@
if(bMallocFailure == LVM_TRUE){
for (int i=0; i<LVM_NR_MEMORY_REGIONS; i++){
if (MemTab.Region[i].pBaseAddress == LVM_NULL){
- LOGV("\tLVM_ERROR :Reverb_init CreateInstance Failed to allocate %ld bytes for region %u"
- " - Not freeing\n", MemTab.Region[i].Size, i );
+ LOGV("\tLVM_ERROR :Reverb_init CreateInstance Failed to allocate %ld bytes "
+ "for region %u - Not freeing\n", MemTab.Region[i].Size, i );
}else{
- LOGV("\tLVM_ERROR :Reverb_init CreateInstance Failed: but allocated %ld bytes for region %u "
- "at %p- free\n", MemTab.Region[i].Size, i, MemTab.Region[i].pBaseAddress);
+ LOGV("\tLVM_ERROR :Reverb_init CreateInstance Failed: but allocated %ld bytes "
+ "for region %u at %p- free\n",
+ MemTab.Region[i].Size, i, MemTab.Region[i].pBaseAddress);
free(MemTab.Region[i].pBaseAddress);
}
}
@@ -753,7 +749,7 @@
pContext->SavedHfLevel = 0;
pContext->bEnabled = LVM_FALSE;
pContext->SavedDecayTime = params.T60;
- pContext->SavedDecayHfRatio = params.Damping*10;
+ pContext->SavedDecayHfRatio = params.Damping*20;
pContext->SavedDensity = params.RoomSize*10;
pContext->SavedDiffusion = params.Density*10;
pContext->SavedReverbLevel = -6000;
@@ -1195,7 +1191,7 @@
//LOGV("\tReverbSetDecayHfRatio Succesfully returned from LVM_GetControlParameters\n");
//LOGV("\tReverbSetDecayHfRatio() just Got -> %d\n", ActiveParams.Damping);
- ActiveParams.Damping = (LVM_INT16)(ratio/10);
+ ActiveParams.Damping = (LVM_INT16)(ratio/20);
/* Activate the initial settings */
LvmStatus = LVREV_SetControlParameters(pContext->hInstance, &ActiveParams);
@@ -1230,7 +1226,7 @@
//LOGV("\tReverbGetDecayHfRatio Succesfully returned from LVM_GetControlParameters\n");
//LOGV("\tReverbGetDecayHfRatio() just Got -> %d\n", ActiveParams.Damping);
- if(ActiveParams.Damping != (LVM_INT16)(pContext->SavedDecayHfRatio / 10)){
+ if(ActiveParams.Damping != (LVM_INT16)(pContext->SavedDecayHfRatio / 20)){
LOGV("\tLVM_ERROR : ReverbGetDecayHfRatio() has wrong level -> %d %d\n",
ActiveParams.Damping, pContext->SavedDecayHfRatio);
}
diff --git a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.h b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.h
old mode 100755
new mode 100644
index 1ab423f..093992b
--- a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.h
+++ b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.h
@@ -24,6 +24,14 @@
extern "C" {
#endif
+#define MAX_NUM_BANDS 5
+#define MAX_CALL_SIZE 256
+#define LVREV_MAX_T60 7000
+#define LVREV_MAX_REVERB_LEVEL 2000
+#define LVREV_MAX_FRAME_SIZE 2560
+#define LVREV_CUP_LOAD_ARM9E 470 // Expressed in 0.1 MIPS
+#define LVREV_MEM_USAGE 71+(LVREV_MAX_FRAME_SIZE>>7) // Expressed in kB
+//#define LVM_PCM
typedef struct _LPFPair_t
{
diff --git a/media/libmedia/IMediaRecorder.cpp b/media/libmedia/IMediaRecorder.cpp
index f55a01e..59cd1b7 100644
--- a/media/libmedia/IMediaRecorder.cpp
+++ b/media/libmedia/IMediaRecorder.cpp
@@ -43,6 +43,7 @@
SET_AUDIO_ENCODER,
SET_OUTPUT_FILE_PATH,
SET_OUTPUT_FILE_FD,
+ SET_OUTPUT_FILE_AUXILIARY_FD,
SET_VIDEO_SIZE,
SET_VIDEO_FRAMERATE,
SET_PARAMETERS,
@@ -159,6 +160,15 @@
return reply.readInt32();
}
+ status_t setOutputFileAuxiliary(int fd) {
+ LOGV("setOutputFileAuxiliary(%d)", fd);
+ Parcel data, reply;
+ data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor());
+ data.writeFileDescriptor(fd);
+ remote()->transact(SET_OUTPUT_FILE_AUXILIARY_FD, data, &reply);
+ return reply.readInt32();
+ }
+
status_t setVideoSize(int width, int height)
{
LOGV("setVideoSize(%dx%d)", width, height);
@@ -377,6 +387,13 @@
::close(fd);
return NO_ERROR;
} break;
+ case SET_OUTPUT_FILE_AUXILIARY_FD: {
+ LOGV("SET_OUTPUT_FILE_AUXILIARY_FD");
+ CHECK_INTERFACE(IMediaRecorder, data, reply);
+ int fd = dup(data.readFileDescriptor());
+ reply->writeInt32(setOutputFileAuxiliary(fd));
+ return NO_ERROR;
+ } break;
case SET_VIDEO_SIZE: {
LOGV("SET_VIDEO_SIZE");
CHECK_INTERFACE(IMediaRecorder, data, reply);
diff --git a/media/libmedia/fixedfft.cpp b/media/libmedia/fixedfft.cpp
index 9cf05ba..2b495e6 100644
--- a/media/libmedia/fixedfft.cpp
+++ b/media/libmedia/fixedfft.cpp
@@ -26,7 +26,7 @@
#include <stdio.h>
#include <stdint.h>
-#ifdef __ARM_ARCH__
+#ifdef __arm__
#include <machine/cpu-features.h>
#endif
diff --git a/media/libmedia/mediarecorder.cpp b/media/libmedia/mediarecorder.cpp
index 7f25359..51d91fe 100644
--- a/media/libmedia/mediarecorder.cpp
+++ b/media/libmedia/mediarecorder.cpp
@@ -308,6 +308,32 @@
return ret;
}
+status_t MediaRecorder::setOutputFileAuxiliary(int fd)
+{
+ LOGV("setOutputFileAuxiliary(%d)", fd);
+ if(mMediaRecorder == NULL) {
+ LOGE("media recorder is not initialized yet");
+ return INVALID_OPERATION;
+ }
+ if (mIsAuxiliaryOutputFileSet) {
+ LOGE("output file has already been set");
+ return INVALID_OPERATION;
+ }
+ if (!(mCurrentState & MEDIA_RECORDER_DATASOURCE_CONFIGURED)) {
+ LOGE("setOutputFile called in an invalid state(%d)", mCurrentState);
+ return INVALID_OPERATION;
+ }
+
+ status_t ret = mMediaRecorder->setOutputFileAuxiliary(fd);
+ if (OK != ret) {
+ LOGV("setOutputFileAuxiliary failed: %d", ret);
+ mCurrentState = MEDIA_RECORDER_ERROR;
+ return ret;
+ }
+ mIsAuxiliaryOutputFileSet = true;
+ return ret;
+}
+
status_t MediaRecorder::setVideoSize(int width, int height)
{
LOGV("setVideoSize(%d, %d)", width, height);
@@ -571,6 +597,7 @@
mIsAudioEncoderSet = false;
mIsVideoEncoderSet = false;
mIsOutputFileSet = false;
+ mIsAuxiliaryOutputFileSet = false;
}
// Release should be OK in any state
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index d9b0c69..ffe1983 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -737,8 +737,8 @@
if (!strncasecmp(url, "rtsp://", 7)) {
char value[PROPERTY_VALUE_MAX];
- if (!property_get("media.stagefright.enable-rtsp", value, NULL)
- || (strcmp(value, "1") && strcasecmp(value, "true"))) {
+ if (property_get("media.stagefright.enable-rtsp", value, NULL)
+ && (strcmp(value, "1") && strcasecmp(value, "true"))) {
// For now, we're going to use PV for rtsp-based playback
// by default until we can clear up a few more issues.
return PV_PLAYER;
diff --git a/media/libmediaplayerservice/MediaRecorderClient.cpp b/media/libmediaplayerservice/MediaRecorderClient.cpp
index 7e05043..be6a8be 100644
--- a/media/libmediaplayerservice/MediaRecorderClient.cpp
+++ b/media/libmediaplayerservice/MediaRecorderClient.cpp
@@ -164,6 +164,17 @@
return mRecorder->setOutputFile(fd, offset, length);
}
+status_t MediaRecorderClient::setOutputFileAuxiliary(int fd)
+{
+ LOGV("setOutputFileAuxiliary(%d)", fd);
+ Mutex::Autolock lock(mLock);
+ if (mRecorder == NULL) {
+ LOGE("recorder is not initialized");
+ return NO_INIT;
+ }
+ return mRecorder->setOutputFileAuxiliary(fd);
+}
+
status_t MediaRecorderClient::setVideoSize(int width, int height)
{
LOGV("setVideoSize(%dx%d)", width, height);
@@ -295,8 +306,8 @@
mPid = pid;
char value[PROPERTY_VALUE_MAX];
- if (property_get("media.stagefright.enable-record", value, NULL)
- && (!strcmp(value, "1") || !strcasecmp(value, "true"))) {
+ if (!property_get("media.stagefright.enable-record", value, NULL)
+ || !strcmp(value, "1") || !strcasecmp(value, "true")) {
mRecorder = new StagefrightRecorder;
} else
#ifndef NO_OPENCORE
diff --git a/media/libmediaplayerservice/MediaRecorderClient.h b/media/libmediaplayerservice/MediaRecorderClient.h
index 6c17217..fded98e 100644
--- a/media/libmediaplayerservice/MediaRecorderClient.h
+++ b/media/libmediaplayerservice/MediaRecorderClient.h
@@ -37,6 +37,7 @@
virtual status_t setAudioEncoder(int ae);
virtual status_t setOutputFile(const char* path);
virtual status_t setOutputFile(int fd, int64_t offset, int64_t length);
+ virtual status_t setOutputFileAuxiliary(int fd);
virtual status_t setVideoSize(int width, int height);
virtual status_t setVideoFrameRate(int frames_per_second);
virtual status_t setParameters(const String8& params);
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp
index a24e56c..bbbf45c 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.cpp
+++ b/media/libmediaplayerservice/StagefrightRecorder.cpp
@@ -25,6 +25,7 @@
#include <media/stagefright/AMRWriter.h>
#include <media/stagefright/CameraSource.h>
#include <media/stagefright/CameraSourceTimeLapse.h>
+#include <media/stagefright/MediaSourceSplitter.h>
#include <media/stagefright/MPEG4Writer.h>
#include <media/stagefright/MediaDebug.h>
#include <media/stagefright/MediaDefs.h>
@@ -46,8 +47,8 @@
namespace android {
StagefrightRecorder::StagefrightRecorder()
- : mWriter(NULL),
- mOutputFd(-1) {
+ : mWriter(NULL), mWriterAux(NULL),
+ mOutputFd(-1), mOutputFdAux(-1) {
LOGV("Constructor");
reset();
@@ -235,6 +236,24 @@
return OK;
}
+status_t StagefrightRecorder::setOutputFileAuxiliary(int fd) {
+ LOGV("setOutputFileAuxiliary: %d", fd);
+
+ if (fd < 0) {
+ LOGE("Invalid file descriptor: %d", fd);
+ return -EBADF;
+ }
+
+ mCaptureAuxVideo = true;
+
+ if (mOutputFdAux >= 0) {
+ ::close(mOutputFdAux);
+ }
+ mOutputFdAux = dup(fd);
+
+ return OK;
+}
+
// Attempt to parse an int64 literal optionally surrounded by whitespace,
// returns true on success, false otherwise.
static bool safe_strtoi64(const char *s, int64_t *val) {
@@ -842,7 +861,14 @@
if (mAudioSource != AUDIO_SOURCE_LIST_END) {
source = createAudioSource();
} else {
- status_t err = setupVideoEncoder(&source);
+
+ sp<CameraSource> cameraSource;
+ status_t err = setupCameraSource(&cameraSource);
+ if (err != OK) {
+ return err;
+ }
+
+ err = setupVideoEncoder(cameraSource, mVideoBitRate, &source);
if (err != OK) {
return err;
}
@@ -906,7 +932,7 @@
}
}
-status_t StagefrightRecorder::setupCameraSource() {
+status_t StagefrightRecorder::setupCamera() {
if (!mCaptureTimeLapse) {
// Dont clip for time lapse capture as encoder will have enough
// time to encode because of slow capture rate of time lapse.
@@ -989,20 +1015,27 @@
}
}
-status_t StagefrightRecorder::setupVideoEncoder(sp<MediaSource> *source) {
- source->clear();
-
- status_t err = setupCameraSource();
+status_t StagefrightRecorder::setupCameraSource(sp<CameraSource> *cameraSource) {
+ status_t err = setupCamera();
if (err != OK) return err;
- sp<CameraSource> cameraSource = (mCaptureTimeLapse) ?
+ *cameraSource = (mCaptureTimeLapse) ?
CameraSourceTimeLapse::CreateFromCamera(mCamera, mUseStillCameraForTimeLapse,
mTimeBetweenTimeLapseFrameCaptureUs, mVideoWidth, mVideoHeight, mFrameRate):
CameraSource::CreateFromCamera(mCamera);
- CHECK(cameraSource != NULL);
+ CHECK(*cameraSource != NULL);
+
+ return OK;
+}
+
+status_t StagefrightRecorder::setupVideoEncoder(
+ sp<MediaSource> cameraSource,
+ int32_t videoBitRate,
+ sp<MediaSource> *source) {
+ source->clear();
sp<MetaData> enc_meta = new MetaData;
- enc_meta->setInt32(kKeyBitRate, mVideoBitRate);
+ enc_meta->setInt32(kKeyBitRate, videoBitRate);
enc_meta->setInt32(kKeySampleRate, mFrameRate);
switch (mVideoEncoder) {
@@ -1087,51 +1120,128 @@
return OK;
}
-status_t StagefrightRecorder::startMPEG4Recording() {
- int32_t totalBitRate = 0;
+status_t StagefrightRecorder::setupMPEG4Recording(
+ bool useSplitCameraSource,
+ int outputFd, int32_t audioBitRate, int32_t videoBitRate,
+ int32_t *totalBitRate,
+ sp<MediaWriter> *mediaWriter) {
+ mediaWriter->clear();
+ *totalBitRate = 0;
status_t err = OK;
- sp<MediaWriter> writer = new MPEG4Writer(dup(mOutputFd));
+ sp<MediaWriter> writer = new MPEG4Writer(dup(outputFd));
// Add audio source first if it exists
if (!mCaptureTimeLapse && (mAudioSource != AUDIO_SOURCE_LIST_END)) {
err = setupAudioEncoder(writer);
if (err != OK) return err;
- totalBitRate += mAudioBitRate;
+ *totalBitRate += audioBitRate;
}
if (mVideoSource == VIDEO_SOURCE_DEFAULT
|| mVideoSource == VIDEO_SOURCE_CAMERA) {
+
+ sp<MediaSource> cameraMediaSource;
+ if (useSplitCameraSource) {
+ LOGV("Using Split camera source");
+ cameraMediaSource = mCameraSourceSplitter->createClient();
+ } else {
+ sp<CameraSource> cameraSource;
+ err = setupCameraSource(&cameraSource);
+ cameraMediaSource = cameraSource;
+ }
+ if (err != OK) {
+ return err;
+ }
+
sp<MediaSource> encoder;
- err = setupVideoEncoder(&encoder);
- if (err != OK) return err;
+ err = setupVideoEncoder(cameraMediaSource, videoBitRate, &encoder);
+ if (err != OK) {
+ return err;
+ }
+
writer->addSource(encoder);
- totalBitRate += mVideoBitRate;
+ *totalBitRate += videoBitRate;
}
if (mInterleaveDurationUs > 0) {
reinterpret_cast<MPEG4Writer *>(writer.get())->
setInterleaveDuration(mInterleaveDurationUs);
}
-
if (mMaxFileDurationUs != 0) {
writer->setMaxFileDuration(mMaxFileDurationUs);
}
if (mMaxFileSizeBytes != 0) {
writer->setMaxFileSize(mMaxFileSizeBytes);
}
- sp<MetaData> meta = new MetaData;
- meta->setInt64(kKeyTime, systemTime() / 1000);
- meta->setInt32(kKeyFileType, mOutputFormat);
- meta->setInt32(kKeyBitRate, totalBitRate);
- meta->setInt32(kKey64BitFileOffset, mUse64BitFileOffset);
+
+ writer->setListener(mListener);
+ *mediaWriter = writer;
+ return OK;
+}
+
+void StagefrightRecorder::setupMPEG4MetaData(int64_t startTimeUs, int32_t totalBitRate,
+ sp<MetaData> *meta) {
+ (*meta)->setInt64(kKeyTime, startTimeUs);
+ (*meta)->setInt32(kKeyFileType, mOutputFormat);
+ (*meta)->setInt32(kKeyBitRate, totalBitRate);
+ (*meta)->setInt32(kKey64BitFileOffset, mUse64BitFileOffset);
if (mMovieTimeScale > 0) {
- meta->setInt32(kKeyTimeScale, mMovieTimeScale);
+ (*meta)->setInt32(kKeyTimeScale, mMovieTimeScale);
}
if (mTrackEveryTimeDurationUs > 0) {
- meta->setInt64(kKeyTrackTimeStatus, mTrackEveryTimeDurationUs);
+ (*meta)->setInt64(kKeyTrackTimeStatus, mTrackEveryTimeDurationUs);
}
- writer->setListener(mListener);
- mWriter = writer;
- return mWriter->start(meta.get());
+}
+
+status_t StagefrightRecorder::startMPEG4Recording() {
+ if (mCaptureAuxVideo) {
+ LOGV("Creating MediaSourceSplitter");
+ sp<CameraSource> cameraSource;
+ status_t err = setupCameraSource(&cameraSource);
+ if (err != OK) {
+ return err;
+ }
+ mCameraSourceSplitter = new MediaSourceSplitter(cameraSource);
+ } else {
+ mCameraSourceSplitter = NULL;
+ }
+
+ int32_t totalBitRate;
+ status_t err = setupMPEG4Recording(mCaptureAuxVideo,
+ mOutputFd, mAudioBitRate, mVideoBitRate, &totalBitRate, &mWriter);
+ if (err != OK) {
+ return err;
+ }
+
+ int64_t startTimeUs = systemTime() / 1000;
+ sp<MetaData> meta = new MetaData;
+ setupMPEG4MetaData(startTimeUs, totalBitRate, &meta);
+
+ err = mWriter->start(meta.get());
+ if (err != OK) {
+ return err;
+ }
+
+ if (mCaptureAuxVideo) {
+ CHECK(mOutputFdAux >= 0);
+ if (mWriterAux != NULL) {
+ LOGE("Auxiliary File writer is not avaialble");
+ return UNKNOWN_ERROR;
+ }
+
+ int32_t totalBitrateAux;
+ err = setupMPEG4Recording(mCaptureAuxVideo,
+ mOutputFdAux, mAudioBitRateAux, mVideoBitRateAux, &totalBitrateAux, &mWriterAux);
+ if (err != OK) {
+ return err;
+ }
+
+ sp<MetaData> metaAux = new MetaData;
+ setupMPEG4MetaData(startTimeUs, totalBitrateAux, &metaAux);
+
+ return mWriterAux->start(metaAux.get());
+ }
+
+ return OK;
}
status_t StagefrightRecorder::pause() {
@@ -1140,12 +1250,28 @@
return UNKNOWN_ERROR;
}
mWriter->pause();
+
+ if (mCaptureAuxVideo) {
+ if (mWriterAux == NULL) {
+ return UNKNOWN_ERROR;
+ }
+ mWriterAux->pause();
+ }
+
return OK;
}
status_t StagefrightRecorder::stop() {
LOGV("stop");
status_t err = OK;
+
+ if (mCaptureAuxVideo) {
+ if (mWriterAux != NULL) {
+ mWriterAux->stop();
+ mWriterAux.clear();
+ }
+ }
+
if (mWriter != NULL) {
err = mWriter->stop();
mWriter.clear();
@@ -1169,6 +1295,13 @@
mOutputFd = -1;
}
+ if (mCaptureAuxVideo) {
+ if (mOutputFdAux >= 0) {
+ ::close(mOutputFdAux);
+ mOutputFdAux = -1;
+ }
+ }
+
return err;
}
@@ -1195,9 +1328,11 @@
mVideoHeight = 144;
mFrameRate = 20;
mVideoBitRate = 192000;
+ mVideoBitRateAux = 20000000;
mSampleRate = 8000;
mAudioChannels = 1;
mAudioBitRate = 12200;
+ mAudioBitRateAux = 12200;
mInterleaveDurationUs = 0;
mIFramesIntervalSec = 1;
mAudioSourceNode = 0;
@@ -1214,9 +1349,12 @@
mCaptureTimeLapse = false;
mUseStillCameraForTimeLapse = true;
mTimeBetweenTimeLapseFrameCaptureUs = -1;
+ mCaptureAuxVideo = false;
+ mCameraSourceSplitter = NULL;
mEncoderProfiles = MediaProfiles::getInstance();
mOutputFd = -1;
+ mOutputFdAux = -1;
mFlags = 0;
return OK;
@@ -1254,6 +1392,8 @@
snprintf(buffer, SIZE, " Recorder: %p\n", this);
snprintf(buffer, SIZE, " Output file (fd %d):\n", mOutputFd);
result.append(buffer);
+ snprintf(buffer, SIZE, " Output file Auxiliary (fd %d):\n", mOutputFdAux);
+ result.append(buffer);
snprintf(buffer, SIZE, " File format: %d\n", mOutputFormat);
result.append(buffer);
snprintf(buffer, SIZE, " Max file size (bytes): %lld\n", mMaxFileSizeBytes);
@@ -1274,6 +1414,8 @@
result.append(buffer);
snprintf(buffer, SIZE, " Bit rate (bps): %d\n", mAudioBitRate);
result.append(buffer);
+ snprintf(buffer, SIZE, " Bit rate auxiliary (bps): %d\n", mAudioBitRateAux);
+ result.append(buffer);
snprintf(buffer, SIZE, " Sampling rate (hz): %d\n", mSampleRate);
result.append(buffer);
snprintf(buffer, SIZE, " Number of channels: %d\n", mAudioChannels);
@@ -1302,6 +1444,8 @@
result.append(buffer);
snprintf(buffer, SIZE, " Bit rate (bps): %d\n", mVideoBitRate);
result.append(buffer);
+ snprintf(buffer, SIZE, " Bit rate Auxiliary (bps): %d\n", mVideoBitRateAux);
+ result.append(buffer);
::write(fd, result.string(), result.size());
return OK;
}
diff --git a/media/libmediaplayerservice/StagefrightRecorder.h b/media/libmediaplayerservice/StagefrightRecorder.h
index 628e19b..d75a540 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.h
+++ b/media/libmediaplayerservice/StagefrightRecorder.h
@@ -24,8 +24,11 @@
namespace android {
class Camera;
+class CameraSource;
+class MediaSourceSplitter;
struct MediaSource;
struct MediaWriter;
+class MetaData;
struct AudioSource;
class MediaProfiles;
@@ -45,6 +48,7 @@
virtual status_t setPreviewSurface(const sp<Surface>& surface);
virtual status_t setOutputFile(const char *path);
virtual status_t setOutputFile(int fd, int64_t offset, int64_t length);
+ virtual status_t setOutputFileAuxiliary(int fd);
virtual status_t setParameters(const String8& params);
virtual status_t setListener(const sp<IMediaRecorderClient>& listener);
virtual status_t prepare();
@@ -65,7 +69,7 @@
sp<Camera> mCamera;
sp<Surface> mPreviewSurface;
sp<IMediaRecorderClient> mListener;
- sp<MediaWriter> mWriter;
+ sp<MediaWriter> mWriter, mWriterAux;
sp<AudioSource> mAudioSourceNode;
audio_source mAudioSource;
@@ -76,8 +80,8 @@
bool mUse64BitFileOffset;
int32_t mVideoWidth, mVideoHeight;
int32_t mFrameRate;
- int32_t mVideoBitRate;
- int32_t mAudioBitRate;
+ int32_t mVideoBitRate, mVideoBitRateAux;
+ int32_t mAudioBitRate, mAudioBitRateAux;
int32_t mAudioChannels;
int32_t mSampleRate;
int32_t mInterleaveDurationUs;
@@ -95,21 +99,34 @@
bool mCaptureTimeLapse;
bool mUseStillCameraForTimeLapse;
int64_t mTimeBetweenTimeLapseFrameCaptureUs;
+ bool mCaptureAuxVideo;
+ sp<MediaSourceSplitter> mCameraSourceSplitter;
String8 mParams;
- int mOutputFd;
+ int mOutputFd, mOutputFdAux;
int32_t mFlags;
MediaProfiles *mEncoderProfiles;
+ status_t setupMPEG4Recording(
+ bool useAuxiliaryCameraSource,
+ int outputFd, int32_t audioBitRate, int32_t videoBitRate,
+ int32_t *totalBitRate,
+ sp<MediaWriter> *mediaWriter);
+ void setupMPEG4MetaData(int64_t startTimeUs, int32_t totalBitRate,
+ sp<MetaData> *meta);
status_t startMPEG4Recording();
status_t startAMRRecording();
status_t startAACRecording();
status_t startRTPRecording();
sp<MediaSource> createAudioSource();
- status_t setupCameraSource();
+ status_t setupCamera();
+ status_t setupCameraSource(sp<CameraSource> *cameraSource);
status_t setupAudioEncoder(const sp<MediaWriter>& writer);
- status_t setupVideoEncoder(sp<MediaSource> *source);
+ status_t setupVideoEncoder(
+ sp<MediaSource> cameraSource,
+ int32_t videoBitRate,
+ sp<MediaSource> *source);
// Encoding parameter handling utilities
status_t setParameter(const String8 &key, const String8 &value);
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index b5a6327..0d11b33 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -10,7 +10,8 @@
AudioSource.cpp \
AwesomePlayer.cpp \
CameraSource.cpp \
- CameraSourceTimeLapse.cpp \
+ CameraSourceTimeLapse.cpp \
+ VideoSourceDownSampler.cpp \
DataSource.cpp \
ESDS.cpp \
FileSource.cpp \
@@ -24,6 +25,7 @@
MediaDefs.cpp \
MediaExtractor.cpp \
MediaSource.cpp \
+ MediaSourceSplitter.cpp \
MetaData.cpp \
NuCachedSource2.cpp \
NuHTTPDataSource.cpp \
diff --git a/media/libstagefright/AudioSource.cpp b/media/libstagefright/AudioSource.cpp
index c8dfede..4c729e4 100644
--- a/media/libstagefright/AudioSource.cpp
+++ b/media/libstagefright/AudioSource.cpp
@@ -40,6 +40,7 @@
mGroup(NULL) {
LOGV("sampleRate: %d, channels: %d", sampleRate, channels);
+ CHECK(channels == 1 || channels == 2);
uint32_t flags = AudioRecord::RECORD_AGC_ENABLE |
AudioRecord::RECORD_NS_ENABLE |
AudioRecord::RECORD_IIR_ENABLE;
@@ -158,6 +159,38 @@
}
+void AudioSource::rampVolume(
+ int32_t startFrame, int32_t rampDurationFrames,
+ uint8_t *data, size_t bytes) {
+
+ const int32_t kShift = 14;
+ int32_t fixedMultiplier = (startFrame << kShift) / rampDurationFrames;
+ const int32_t nChannels = mRecord->channelCount();
+ int32_t stopFrame = startFrame + bytes / sizeof(int16_t);
+ int16_t *frame = (int16_t *) data;
+ if (stopFrame > rampDurationFrames) {
+ stopFrame = rampDurationFrames;
+ }
+
+ while (startFrame < stopFrame) {
+ if (nChannels == 1) { // mono
+ frame[0] = (frame[0] * fixedMultiplier) >> kShift;
+ ++frame;
+ ++startFrame;
+ } else { // stereo
+ frame[0] = (frame[0] * fixedMultiplier) >> kShift;
+ frame[1] = (frame[1] * fixedMultiplier) >> kShift;
+ frame += 2;
+ startFrame += 2;
+ }
+
+ // Update the multiplier every 4 frames
+ if ((startFrame & 3) == 0) {
+ fixedMultiplier = (startFrame << kShift) / rampDurationFrames;
+ }
+ }
+}
+
status_t AudioSource::read(
MediaBuffer **out, const ReadOptions *options) {
*out = NULL;
@@ -242,6 +275,19 @@
continue;
}
+ if (mPrevSampleTimeUs - mStartTimeUs < kAutoRampStartUs) {
+ // Mute the initial video recording signal
+ memset((uint8_t *) buffer->data(), 0, n);
+ } else if (mPrevSampleTimeUs - mStartTimeUs < kAutoRampStartUs + kAutoRampDurationUs) {
+ int32_t autoRampDurationFrames =
+ (kAutoRampDurationUs * sampleRate + 500000LL) / 1000000LL;
+
+ int32_t autoRampStartFrames =
+ (kAutoRampStartUs * sampleRate + 500000LL) / 1000000LL;
+
+ int32_t nFrames = numFramesRecorded - autoRampStartFrames;
+ rampVolume(nFrames, autoRampDurationFrames, (uint8_t *) buffer->data(), n);
+ }
if (mTrackMaxAmplitude) {
trackMaxAmplitude((int16_t *) buffer->data(), n >> 1);
}
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 1ccfa03..183874c 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -199,7 +199,6 @@
mExtractorFlags(0),
mLastVideoBuffer(NULL),
mVideoBuffer(NULL),
- mRTSPTimeOffset(0),
mSuspensionState(NULL) {
CHECK_EQ(mClient.connect(), OK);
@@ -275,9 +274,13 @@
status_t AwesomePlayer::setDataSource(
int fd, int64_t offset, int64_t length) {
#if 0
+ // return setDataSource("httplive://qthttp.apple.com.edgesuite.net/1009qpeijrfn/sl.m3u8");
+ return setDataSource("httplive://qthttp.apple.com.edgesuite.net/1009qpeijrfn/0440.m3u8");
+ // return setDataSource("httplive://qthttp.apple.com.edgesuite.net/1009qpeijrfn/0640.m3u8");
+ // return setDataSource("httplive://qthttp.apple.com.edgesuite.net/1009qpeijrfn/1240_vod.m3u8");
// return setDataSource("httplive://iphoned5.akamai.com.edgesuite.net/mhbarron/nasatv/nasatv_96.m3u8");
// return setDataSource("httplive://iphoned5.akamai.com.edgesuite.net/mhbarron/nasatv/nasatv_1500.m3u8");
- return setDataSource("httplive://iphone.video.hsn.com/iPhone_high.m3u8");
+ // return setDataSource("httplive://iphone.video.hsn.com/iPhone_high.m3u8");
// return setDataSource("httplive://iphoned5.akamai.com.edgesuite.net/mhbarron/iphonewebcast/webcast090209_all/webcast090209_all.m3u8");
// return setDataSource("httplive://qthttp.akamai.com.edgesuite.net/iphone_demo/Video_Content/usat/tt_062209_iphone/hi/prog_index.m3u8");
// return setDataSource("httplive://qthttp.akamai.com.edgesuite.net/iphone_demo/Video_Content/usat/tt_googmaps/hi/prog_index.m3u8");
@@ -759,7 +762,10 @@
}
status_t AwesomePlayer::getPosition(int64_t *positionUs) {
- if (mSeeking) {
+ if (mRTSPController != NULL) {
+ *positionUs = mRTSPController->getNormalPlayTimeUs();
+ }
+ else if (mSeeking) {
*positionUs = mSeekTimeUs;
} else if (mVideoSource != NULL) {
Mutex::Autolock autoLock(mMiscStateLock);
@@ -770,10 +776,6 @@
*positionUs = 0;
}
- if (mRTSPController != NULL) {
- *positionUs += mRTSPTimeOffset;
- }
-
return OK;
}
@@ -790,13 +792,10 @@
status_t AwesomePlayer::seekTo_l(int64_t timeUs) {
if (mRTSPController != NULL) {
- pause_l();
mRTSPController->seek(timeUs);
- play_l();
notifyListener_l(MEDIA_SEEK_COMPLETE);
mSeekNotificationSent = true;
- mRTSPTimeOffset = timeUs;
return OK;
}
@@ -1268,6 +1267,7 @@
} else if (!strncmp("rtsp://gtalk/", mUri.string(), 13)) {
if (mLooper == NULL) {
mLooper = new ALooper;
+ mLooper->setName("gtalk rtp");
mLooper->start(
false /* runOnCallingThread */,
false /* canCallJava */,
@@ -1379,6 +1379,7 @@
} else if (!strncasecmp("rtsp://", mUri.string(), 7)) {
if (mLooper == NULL) {
mLooper = new ALooper;
+ mLooper->setName("rtsp");
mLooper->start();
}
mRTSPController = new ARTSPController(mLooper);
diff --git a/media/libstagefright/MPEG4Writer.cpp b/media/libstagefright/MPEG4Writer.cpp
index e36d9fe..a15b84e 100644
--- a/media/libstagefright/MPEG4Writer.cpp
+++ b/media/libstagefright/MPEG4Writer.cpp
@@ -1569,9 +1569,9 @@
// The idea here is to avoid having two or more samples with the
// same timestamp in the output file.
if (mTimeScale >= 1000000LL) {
- timestampUs += 1;
+ timestampUs = lastTimestampUs + 1;
} else {
- timestampUs += (1000000LL + (mTimeScale >> 1)) / mTimeScale;
+ timestampUs = lastTimestampUs + (1000000LL + (mTimeScale >> 1)) / mTimeScale;
}
#endif
}
diff --git a/media/libstagefright/MediaSourceSplitter.cpp b/media/libstagefright/MediaSourceSplitter.cpp
new file mode 100644
index 0000000..abc7012
--- /dev/null
+++ b/media/libstagefright/MediaSourceSplitter.cpp
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2010 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 "MediaSourceSplitter"
+#include <utils/Log.h>
+
+#include <media/stagefright/MediaSourceSplitter.h>
+#include <media/stagefright/MediaDebug.h>
+#include <media/stagefright/MediaBuffer.h>
+#include <media/stagefright/MetaData.h>
+
+namespace android {
+
+MediaSourceSplitter::MediaSourceSplitter(sp<MediaSource> mediaSource) {
+ mNumberOfClients = 0;
+ mSource = mediaSource;
+ mSourceStarted = false;
+
+ mNumberOfClientsStarted = 0;
+ mNumberOfCurrentReads = 0;
+ mCurrentReadBit = 0;
+ mLastReadCompleted = true;
+}
+
+MediaSourceSplitter::~MediaSourceSplitter() {
+}
+
+sp<MediaSource> MediaSourceSplitter::createClient() {
+ Mutex::Autolock autoLock(mLock);
+
+ sp<MediaSource> client = new Client(this, mNumberOfClients++);
+ mClientsStarted.push(false);
+ mClientsDesiredReadBit.push(0);
+ return client;
+}
+
+status_t MediaSourceSplitter::start(int clientId, MetaData *params) {
+ Mutex::Autolock autoLock(mLock);
+
+ LOGV("start client (%d)", clientId);
+ if (mClientsStarted[clientId]) {
+ return OK;
+ }
+
+ mNumberOfClientsStarted++;
+
+ if (!mSourceStarted) {
+ LOGV("Starting real source from client (%d)", clientId);
+ status_t err = mSource->start(params);
+
+ if (err == OK) {
+ mSourceStarted = true;
+ mClientsStarted.editItemAt(clientId) = true;
+ mClientsDesiredReadBit.editItemAt(clientId) = !mCurrentReadBit;
+ }
+
+ return err;
+ } else {
+ mClientsStarted.editItemAt(clientId) = true;
+ if (mLastReadCompleted) {
+ // Last read was completed. So join in the threads for the next read.
+ mClientsDesiredReadBit.editItemAt(clientId) = !mCurrentReadBit;
+ } else {
+ // Last read is ongoing. So join in the threads for the current read.
+ mClientsDesiredReadBit.editItemAt(clientId) = mCurrentReadBit;
+ }
+ return OK;
+ }
+}
+
+status_t MediaSourceSplitter::stop(int clientId) {
+ Mutex::Autolock autoLock(mLock);
+
+ LOGV("stop client (%d)", clientId);
+ CHECK(clientId >= 0 && clientId < mNumberOfClients);
+ CHECK(mClientsStarted[clientId]);
+
+ if (--mNumberOfClientsStarted == 0) {
+ LOGV("Stopping real source from client (%d)", clientId);
+ status_t err = mSource->stop();
+ mSourceStarted = false;
+ mClientsStarted.editItemAt(clientId) = false;
+ return err;
+ } else {
+ mClientsStarted.editItemAt(clientId) = false;
+ if (!mLastReadCompleted && (mClientsDesiredReadBit[clientId] == mCurrentReadBit)) {
+ // !mLastReadCompleted implies that buffer has been read from source, but all
+ // clients haven't read it.
+ // mClientsDesiredReadBit[clientId] == mCurrentReadBit implies that this
+ // client would have wanted to read from this buffer. (i.e. it has not yet
+ // called read() for the current read buffer.)
+ // Since other threads may be waiting for all the clients' reads to complete,
+ // signal that this read has been aborted.
+ signalReadComplete_lock(true);
+ }
+ return OK;
+ }
+}
+
+sp<MetaData> MediaSourceSplitter::getFormat(int clientId) {
+ Mutex::Autolock autoLock(mLock);
+
+ LOGV("getFormat client (%d)", clientId);
+ return mSource->getFormat();
+}
+
+status_t MediaSourceSplitter::read(int clientId,
+ MediaBuffer **buffer, const MediaSource::ReadOptions *options) {
+ Mutex::Autolock autoLock(mLock);
+
+ CHECK(clientId >= 0 && clientId < mNumberOfClients);
+
+ LOGV("read client (%d)", clientId);
+ *buffer = NULL;
+
+ if (!mClientsStarted[clientId]) {
+ return OK;
+ }
+
+ if (mCurrentReadBit != mClientsDesiredReadBit[clientId]) {
+ // Desired buffer has not been read from source yet.
+
+ // If the current client is the special client with clientId = 0
+ // then read from source, else wait until the client 0 has finished
+ // reading from source.
+ if (clientId == 0) {
+ // Wait for all client's last read to complete first so as to not
+ // corrupt the buffer at mLastReadMediaBuffer.
+ waitForAllClientsLastRead_lock(clientId);
+
+ readFromSource_lock(options);
+ *buffer = mLastReadMediaBuffer;
+ } else {
+ waitForReadFromSource_lock(clientId);
+
+ *buffer = mLastReadMediaBuffer;
+ (*buffer)->add_ref();
+ }
+ CHECK(mCurrentReadBit == mClientsDesiredReadBit[clientId]);
+ } else {
+ // Desired buffer has already been read from source. Use the cached data.
+ CHECK(clientId != 0);
+
+ *buffer = mLastReadMediaBuffer;
+ (*buffer)->add_ref();
+ }
+
+ mClientsDesiredReadBit.editItemAt(clientId) = !mClientsDesiredReadBit[clientId];
+ signalReadComplete_lock(false);
+
+ return mLastReadStatus;
+}
+
+void MediaSourceSplitter::readFromSource_lock(const MediaSource::ReadOptions *options) {
+ mLastReadStatus = mSource->read(&mLastReadMediaBuffer , options);
+
+ mCurrentReadBit = !mCurrentReadBit;
+ mLastReadCompleted = false;
+ mReadFromSourceCondition.broadcast();
+}
+
+void MediaSourceSplitter::waitForReadFromSource_lock(int32_t clientId) {
+ mReadFromSourceCondition.wait(mLock);
+}
+
+void MediaSourceSplitter::waitForAllClientsLastRead_lock(int32_t clientId) {
+ if (mLastReadCompleted) {
+ return;
+ }
+ mAllReadsCompleteCondition.wait(mLock);
+ CHECK(mLastReadCompleted);
+}
+
+void MediaSourceSplitter::signalReadComplete_lock(bool readAborted) {
+ if (!readAborted) {
+ mNumberOfCurrentReads++;
+ }
+
+ if (mNumberOfCurrentReads == mNumberOfClientsStarted) {
+ mLastReadCompleted = true;
+ mNumberOfCurrentReads = 0;
+ mAllReadsCompleteCondition.broadcast();
+ }
+}
+
+status_t MediaSourceSplitter::pause(int clientId) {
+ return ERROR_UNSUPPORTED;
+}
+
+// Client
+
+MediaSourceSplitter::Client::Client(
+ sp<MediaSourceSplitter> splitter,
+ int32_t clientId) {
+ mSplitter = splitter;
+ mClientId = clientId;
+}
+
+status_t MediaSourceSplitter::Client::start(MetaData *params) {
+ return mSplitter->start(mClientId, params);
+}
+
+status_t MediaSourceSplitter::Client::stop() {
+ return mSplitter->stop(mClientId);
+}
+
+sp<MetaData> MediaSourceSplitter::Client::getFormat() {
+ return mSplitter->getFormat(mClientId);
+}
+
+status_t MediaSourceSplitter::Client::read(
+ MediaBuffer **buffer, const ReadOptions *options) {
+ return mSplitter->read(mClientId, buffer, options);
+}
+
+status_t MediaSourceSplitter::Client::pause() {
+ return mSplitter->pause(mClientId);
+}
+
+} // namespace android
diff --git a/media/libstagefright/NuCachedSource2.cpp b/media/libstagefright/NuCachedSource2.cpp
index c02b7f3..9171aab 100644
--- a/media/libstagefright/NuCachedSource2.cpp
+++ b/media/libstagefright/NuCachedSource2.cpp
@@ -180,6 +180,7 @@
mLastAccessPos(0),
mFetching(true),
mLastFetchTimeUs(-1) {
+ mLooper->setName("NuCachedSource2");
mLooper->registerHandler(mReflector);
mLooper->start();
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index b39157e..f68c08a 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -146,31 +146,31 @@
static const CodecInfo kDecoderInfo[] = {
{ MEDIA_MIMETYPE_IMAGE_JPEG, "OMX.TI.JPEG.decode" },
- { MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.Nvidia.mp3.decoder" },
+// { MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.Nvidia.mp3.decoder" },
// { MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.TI.MP3.decode" },
{ MEDIA_MIMETYPE_AUDIO_MPEG, "MP3Decoder" },
// { MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.PV.mp3dec" },
// { MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.TI.AMR.decode" },
- { MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.Nvidia.amr.decoder" },
+// { MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.Nvidia.amr.decoder" },
{ MEDIA_MIMETYPE_AUDIO_AMR_NB, "AMRNBDecoder" },
// { MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.PV.amrdec" },
- { MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.Nvidia.amrwb.decoder" },
+// { MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.Nvidia.amrwb.decoder" },
{ MEDIA_MIMETYPE_AUDIO_AMR_WB, "OMX.TI.WBAMR.decode" },
{ MEDIA_MIMETYPE_AUDIO_AMR_WB, "AMRWBDecoder" },
// { MEDIA_MIMETYPE_AUDIO_AMR_WB, "OMX.PV.amrdec" },
- { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.Nvidia.aac.decoder" },
+// { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.Nvidia.aac.decoder" },
{ MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.decode" },
{ MEDIA_MIMETYPE_AUDIO_AAC, "AACDecoder" },
// { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.PV.aacdec" },
{ MEDIA_MIMETYPE_AUDIO_G711_ALAW, "G711Decoder" },
{ MEDIA_MIMETYPE_AUDIO_G711_MLAW, "G711Decoder" },
- { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.Nvidia.mp4.decode" },
+// { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.Nvidia.mp4.decode" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.7x30.video.decoder.mpeg4" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.video.decoder.mpeg4" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.Video.Decoder" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "M4vH263Decoder" },
// { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.PV.mpeg4dec" },
- { MEDIA_MIMETYPE_VIDEO_H263, "OMX.Nvidia.h263.decode" },
+// { MEDIA_MIMETYPE_VIDEO_H263, "OMX.Nvidia.h263.decode" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.qcom.7x30.video.decoder.h263" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.qcom.video.decoder.h263" },
{ MEDIA_MIMETYPE_VIDEO_H263, "M4vH263Decoder" },
@@ -368,6 +368,15 @@
quirks |= kRequiresLoadedToIdleAfterAllocation;
quirks |= kRequiresAllocateBufferOnInputPorts;
quirks |= kRequiresAllocateBufferOnOutputPorts;
+ if (!strncmp(componentName, "OMX.qcom.video.encoder.avc", 26)) {
+
+ // The AVC encoder advertises the size of output buffers
+ // based on the input video resolution and assumes
+ // the worst/least compression ratio is 0.5. It is found that
+ // sometimes, the output buffer size is larger than
+ // size advertised by the encoder.
+ quirks |= kRequiresLargerEncoderOutputBuffer;
+ }
}
if (!strncmp(componentName, "OMX.qcom.7x30.video.encoder.", 28)) {
}
@@ -925,6 +934,10 @@
video_def->nBitrate = bitRate; // Q16 format
video_def->eCompressionFormat = compressionFormat;
video_def->eColorFormat = OMX_COLOR_FormatUnused;
+ if (mQuirks & kRequiresLargerEncoderOutputBuffer) {
+ // Increases the output buffer size
+ def.nBufferSize = ((def.nBufferSize * 3) >> 1);
+ }
err = mOMX->setParameter(
mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
@@ -1798,7 +1811,9 @@
case OMX_EventPortSettingsChanged:
{
- onPortSettingsChanged(data1);
+ if (data2 == 0 || data2 == OMX_IndexParamPortDefinition) {
+ onPortSettingsChanged(data1);
+ }
break;
}
@@ -2188,6 +2203,7 @@
CHECK_EQ(mPortStatus[portIndex], ENABLED);
mPortStatus[portIndex] = DISABLING;
+ CODEC_LOGV("sending OMX_CommandPortDisable(%ld)", portIndex);
status_t err =
mOMX->sendCommand(mNode, OMX_CommandPortDisable, portIndex);
CHECK_EQ(err, OK);
diff --git a/media/libstagefright/VideoSourceDownSampler.cpp b/media/libstagefright/VideoSourceDownSampler.cpp
new file mode 100644
index 0000000..ea7b09a
--- /dev/null
+++ b/media/libstagefright/VideoSourceDownSampler.cpp
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2010 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 "VideoSourceDownSampler"
+
+#include <media/stagefright/VideoSourceDownSampler.h>
+#include <media/stagefright/MediaBuffer.h>
+#include <media/stagefright/MediaDebug.h>
+#include <media/stagefright/MetaData.h>
+#include <media/stagefright/YUVImage.h>
+#include <media/stagefright/YUVCanvas.h>
+#include "OMX_Video.h"
+
+namespace android {
+
+VideoSourceDownSampler::VideoSourceDownSampler(const sp<MediaSource> &videoSource,
+ int32_t width, int32_t height) {
+ LOGV("Construct VideoSourceDownSampler");
+ CHECK(width > 0);
+ CHECK(height > 0);
+
+ mRealVideoSource = videoSource;
+ mWidth = width;
+ mHeight = height;
+
+ mMeta = new MetaData(*(mRealVideoSource->getFormat()));
+ CHECK(mMeta->findInt32(kKeyWidth, &mRealSourceWidth));
+ CHECK(mMeta->findInt32(kKeyHeight, &mRealSourceHeight));
+
+ if ((mWidth != mRealSourceWidth) || (mHeight != mRealSourceHeight)) {
+ // Change meta data for width and height.
+ CHECK(mWidth <= mRealSourceWidth);
+ CHECK(mHeight <= mRealSourceHeight);
+
+ mNeedDownSampling = true;
+ computeDownSamplingParameters();
+ mMeta->setInt32(kKeyWidth, mWidth);
+ mMeta->setInt32(kKeyHeight, mHeight);
+ } else {
+ mNeedDownSampling = false;
+ }
+}
+
+VideoSourceDownSampler::~VideoSourceDownSampler() {
+}
+
+void VideoSourceDownSampler::computeDownSamplingParameters() {
+ mDownSampleSkipX = mRealSourceWidth / mWidth;
+ mDownSampleSkipY = mRealSourceHeight / mHeight;
+
+ mDownSampleOffsetX = mRealSourceWidth - mDownSampleSkipX * mWidth;
+ mDownSampleOffsetY = mRealSourceHeight - mDownSampleSkipY * mHeight;
+}
+
+void VideoSourceDownSampler::downSampleYUVImage(
+ const MediaBuffer &sourceBuffer, MediaBuffer **buffer) const {
+ // find the YUV format
+ int32_t srcFormat;
+ CHECK(mMeta->findInt32(kKeyColorFormat, &srcFormat));
+ YUVImage::YUVFormat yuvFormat;
+ if (srcFormat == OMX_COLOR_FormatYUV420SemiPlanar) {
+ yuvFormat = YUVImage::YUV420SemiPlanar;
+ } else if (srcFormat == OMX_COLOR_FormatYUV420Planar) {
+ yuvFormat = YUVImage::YUV420Planar;
+ }
+
+ // allocate mediaBuffer for down sampled image and setup a canvas.
+ *buffer = new MediaBuffer(YUVImage::bufferSize(yuvFormat, mWidth, mHeight));
+ YUVImage yuvDownSampledImage(yuvFormat,
+ mWidth, mHeight,
+ (uint8_t *)(*buffer)->data());
+ YUVCanvas yuvCanvasDownSample(yuvDownSampledImage);
+
+ YUVImage yuvImageSource(yuvFormat,
+ mRealSourceWidth, mRealSourceHeight,
+ (uint8_t *)sourceBuffer.data());
+ yuvCanvasDownSample.downsample(mDownSampleOffsetX, mDownSampleOffsetY,
+ mDownSampleSkipX, mDownSampleSkipY,
+ yuvImageSource);
+}
+
+status_t VideoSourceDownSampler::start(MetaData *params) {
+ LOGV("start");
+ return mRealVideoSource->start();
+}
+
+status_t VideoSourceDownSampler::stop() {
+ LOGV("stop");
+ return mRealVideoSource->stop();
+}
+
+sp<MetaData> VideoSourceDownSampler::getFormat() {
+ LOGV("getFormat");
+ return mMeta;
+}
+
+status_t VideoSourceDownSampler::read(
+ MediaBuffer **buffer, const ReadOptions *options) {
+ LOGV("read");
+ MediaBuffer *realBuffer;
+ status_t err = mRealVideoSource->read(&realBuffer, options);
+
+ if (mNeedDownSampling) {
+ downSampleYUVImage(*realBuffer, buffer);
+
+ int64_t frameTime;
+ realBuffer->meta_data()->findInt64(kKeyTime, &frameTime);
+ (*buffer)->meta_data()->setInt64(kKeyTime, frameTime);
+
+ // We just want this buffer to be deleted when the encoder releases it.
+ // So don't add a reference to it and set the observer to NULL.
+ (*buffer)->setObserver(NULL);
+
+ // The original buffer is no longer required. Release it.
+ realBuffer->release();
+ } else {
+ *buffer = realBuffer;
+ }
+
+ return err;
+}
+
+status_t VideoSourceDownSampler::pause() {
+ LOGV("pause");
+ return mRealVideoSource->pause();
+}
+
+} // namespace android
diff --git a/media/libstagefright/foundation/ALooper.cpp b/media/libstagefright/foundation/ALooper.cpp
index 77afb01..b7087f8 100644
--- a/media/libstagefright/foundation/ALooper.cpp
+++ b/media/libstagefright/foundation/ALooper.cpp
@@ -65,6 +65,10 @@
stop();
}
+void ALooper::setName(const char *name) {
+ mName = name;
+}
+
ALooper::handler_id ALooper::registerHandler(const sp<AHandler> &handler) {
return gLooperRoster.registerHandler(this, handler);
}
@@ -100,7 +104,8 @@
mThread = new LooperThread(this, canCallJava);
- status_t err = mThread->run("ALooper", priority);
+ status_t err = mThread->run(
+ mName.empty() ? "ALooper" : mName.c_str(), priority);
if (err != OK) {
mThread.clear();
}
diff --git a/media/libstagefright/id3/ID3.cpp b/media/libstagefright/id3/ID3.cpp
index ca0c68c..da340f7 100644
--- a/media/libstagefright/id3/ID3.cpp
+++ b/media/libstagefright/id3/ID3.cpp
@@ -142,11 +142,22 @@
mSize = size;
if (source->readAt(sizeof(header), mData, mSize) != (ssize_t)mSize) {
+ free(mData);
+ mData = NULL;
+
return false;
}
- if (header.flags & 0x80) {
+ if (header.version_major == 4) {
+ if (!removeUnsynchronizationV2_4()) {
+ free(mData);
+ mData = NULL;
+
+ return false;
+ }
+ } else if (header.flags & 0x80) {
LOGV("removing unsynchronization");
+
removeUnsynchronization();
}
@@ -243,6 +254,74 @@
}
}
+static void WriteSyncsafeInteger(uint8_t *dst, size_t x) {
+ for (size_t i = 0; i < 4; ++i) {
+ dst[3 - i] = (x & 0x7f);
+ x >>= 7;
+ }
+}
+
+bool ID3::removeUnsynchronizationV2_4() {
+ size_t oldSize = mSize;
+
+ size_t offset = 0;
+ while (offset + 10 <= mSize) {
+ if (!memcmp(&mData[offset], "\0\0\0\0", 4)) {
+ break;
+ }
+
+ size_t dataSize;
+ if (!ParseSyncsafeInteger(&mData[offset + 4], &dataSize)) {
+ return false;
+ }
+
+ if (offset + dataSize + 10 > mSize) {
+ return false;
+ }
+
+ uint16_t flags = U16_AT(&mData[offset + 8]);
+ uint16_t prevFlags = flags;
+
+ if (flags & 1) {
+ // Strip data length indicator
+
+ memmove(&mData[offset + 10], &mData[offset + 14], mSize - offset - 14);
+ mSize -= 4;
+ dataSize -= 4;
+
+ flags &= ~1;
+ }
+
+ if (flags & 2) {
+ // Unsynchronization added.
+
+ for (size_t i = 0; i + 1 < dataSize; ++i) {
+ if (mData[offset + 10 + i] == 0xff
+ && mData[offset + 11 + i] == 0x00) {
+ memmove(&mData[offset + 11 + i], &mData[offset + 12 + i],
+ mSize - offset - 12 - i);
+ --mSize;
+ --dataSize;
+ }
+ }
+
+ flags &= ~2;
+ }
+
+ if (flags != prevFlags) {
+ WriteSyncsafeInteger(&mData[offset + 4], dataSize);
+ mData[offset + 8] = flags >> 8;
+ mData[offset + 9] = flags & 0xff;
+ }
+
+ offset += 10 + dataSize;
+ }
+
+ memset(&mData[mSize], 0, oldSize - mSize);
+
+ return true;
+}
+
ID3::Iterator::Iterator(const ID3 &parent, const char *id)
: mParent(parent),
mID(NULL),
@@ -529,10 +608,11 @@
uint16_t flags = U16_AT(&mParent.mData[mOffset + 8]);
- if ((mParent.mVersion == ID3_V2_4 && (flags & 0x000e))
+ if ((mParent.mVersion == ID3_V2_4 && (flags & 0x000c))
|| (mParent.mVersion == ID3_V2_3 && (flags & 0x00c0))) {
- // Compression, Encryption or per-Frame unsynchronization
- // are not supported at this time.
+ // Compression or encryption are not supported at this time.
+ // Per-frame unsynchronization and data-length indicator
+ // have already been taken care of.
LOGV("Skipping unsupported frame (compression, encryption "
"or per-frame unsynchronization flagged");
diff --git a/media/libstagefright/include/ARTSPController.h b/media/libstagefright/include/ARTSPController.h
index 7020564..7016880 100644
--- a/media/libstagefright/include/ARTSPController.h
+++ b/media/libstagefright/include/ARTSPController.h
@@ -41,6 +41,8 @@
virtual sp<MetaData> getTrackMetaData(
size_t index, uint32_t flags);
+ int64_t getNormalPlayTimeUs();
+
void onMessageReceived(const sp<AMessage> &msg);
protected:
diff --git a/media/libstagefright/include/AwesomePlayer.h b/media/libstagefright/include/AwesomePlayer.h
index f5df1b5..f34eb45 100644
--- a/media/libstagefright/include/AwesomePlayer.h
+++ b/media/libstagefright/include/AwesomePlayer.h
@@ -182,7 +182,6 @@
sp<ALooper> mLooper;
sp<ARTSPController> mRTSPController;
- int64_t mRTSPTimeOffset;
sp<ARTPSession> mRTPSession;
sp<UDPPusher> mRTPPusher, mRTCPPusher;
diff --git a/media/libstagefright/include/ID3.h b/media/libstagefright/include/ID3.h
index c6b1a8b..7ddbb41 100644
--- a/media/libstagefright/include/ID3.h
+++ b/media/libstagefright/include/ID3.h
@@ -80,6 +80,7 @@
bool parseV1(const sp<DataSource> &source);
bool parseV2(const sp<DataSource> &source);
void removeUnsynchronization();
+ bool removeUnsynchronizationV2_4();
static bool ParseSyncsafeInteger(const uint8_t encoded[4], size_t *x);
diff --git a/media/libstagefright/mpeg2ts/ATSParser.cpp b/media/libstagefright/mpeg2ts/ATSParser.cpp
index 26a0fb3..72de8d7 100644
--- a/media/libstagefright/mpeg2ts/ATSParser.cpp
+++ b/media/libstagefright/mpeg2ts/ATSParser.cpp
@@ -78,6 +78,8 @@
unsigned PTS_DTS_flags, uint64_t PTS, uint64_t DTS,
const uint8_t *data, size_t size);
+ void extractAACFrames(const sp<ABuffer> &buffer);
+
DISALLOW_EVIL_CONSTRUCTORS(Stream);
};
@@ -226,7 +228,7 @@
ATSParser::Stream::Stream(unsigned elementaryPID, unsigned streamType)
: mElementaryPID(elementaryPID),
mStreamType(streamType),
- mBuffer(new ABuffer(65536)),
+ mBuffer(new ABuffer(128 * 1024)),
mPayloadStarted(false) {
mBuffer->setRange(0, 0);
}
@@ -662,7 +664,7 @@
csd->data()[sizeof(kStaticESDS) + 1] =
((sampling_freq_index << 7) & 0x80) | (channel_configuration << 3);
- hexdump(csd->data(), csd->size());
+ // hexdump(csd->data(), csd->size());
return csd;
}
@@ -727,13 +729,76 @@
buffer->meta()->setInt64("time", (PTS * 100) / 9);
if (mStreamType == 0x0f) {
- // WHY???
- buffer->setRange(7, buffer->size() - 7);
+ extractAACFrames(buffer);
}
mSource->queueAccessUnit(buffer);
}
+// Disassemble one or more ADTS frames into their constituent parts and
+// leave only the concatenated raw_data_blocks in the buffer.
+void ATSParser::Stream::extractAACFrames(const sp<ABuffer> &buffer) {
+ size_t dstOffset = 0;
+
+ size_t offset = 0;
+ while (offset < buffer->size()) {
+ CHECK_LE(offset + 7, buffer->size());
+
+ ABitReader bits(buffer->data() + offset, buffer->size() - offset);
+
+ // adts_fixed_header
+
+ CHECK_EQ(bits.getBits(12), 0xfffu);
+ bits.skipBits(3); // ID, layer
+ bool protection_absent = bits.getBits(1) != 0;
+
+ // profile_ObjectType, sampling_frequency_index, private_bits,
+ // channel_configuration, original_copy, home
+ bits.skipBits(12);
+
+ // adts_variable_header
+
+ // copyright_identification_bit, copyright_identification_start
+ bits.skipBits(2);
+
+ unsigned aac_frame_length = bits.getBits(13);
+
+ bits.skipBits(11); // adts_buffer_fullness
+
+ unsigned number_of_raw_data_blocks_in_frame = bits.getBits(2);
+
+ if (number_of_raw_data_blocks_in_frame == 0) {
+ size_t scan = offset + aac_frame_length;
+
+ offset += 7;
+ if (!protection_absent) {
+ offset += 2;
+ }
+
+ CHECK_LE(scan, buffer->size());
+
+ LOG(VERBOSE)
+ << "found aac raw data block at ["
+ << StringPrintf("0x%08x", offset)
+ << " ; "
+ << StringPrintf("0x%08x", scan)
+ << ")";
+
+ memmove(&buffer->data()[dstOffset], &buffer->data()[offset],
+ scan - offset);
+
+ dstOffset += scan - offset;
+ offset = scan;
+ } else {
+ // To be implemented.
+ TRESPASS();
+ }
+ }
+ CHECK_EQ(offset, buffer->size());
+
+ buffer->setRange(buffer->offset(), dstOffset);
+}
+
sp<MediaSource> ATSParser::Stream::getSource(SourceType type) {
if ((type == AVC_VIDEO && mStreamType == 0x1b)
|| (type == MPEG2ADTS_AUDIO && mStreamType == 0x0f)) {
diff --git a/media/libstagefright/rtsp/AAMRAssembler.cpp b/media/libstagefright/rtsp/AAMRAssembler.cpp
index c56578b..154ba31 100644
--- a/media/libstagefright/rtsp/AAMRAssembler.cpp
+++ b/media/libstagefright/rtsp/AAMRAssembler.cpp
@@ -178,12 +178,8 @@
}
}
- uint64_t ntpTime;
- CHECK(buffer->meta()->findInt64(
- "ntp-time", (int64_t *)&ntpTime));
-
sp<ABuffer> accessUnit = new ABuffer(totalSize);
- accessUnit->meta()->setInt64("ntp-time", ntpTime);
+ CopyTimes(accessUnit, buffer);
size_t dstOffset = 0;
for (size_t i = 0; i < tableOfContents.size(); ++i) {
diff --git a/media/libstagefright/rtsp/AAVCAssembler.cpp b/media/libstagefright/rtsp/AAVCAssembler.cpp
index b22de2c..6b1e292 100644
--- a/media/libstagefright/rtsp/AAVCAssembler.cpp
+++ b/media/libstagefright/rtsp/AAVCAssembler.cpp
@@ -155,7 +155,7 @@
sp<ABuffer> unit = new ABuffer(nalSize);
memcpy(unit->data(), &data[2], nalSize);
- PropagateTimes(buffer, unit);
+ CopyTimes(unit, buffer);
addSingleNALUnit(unit);
@@ -287,7 +287,7 @@
++totalSize;
sp<ABuffer> unit = new ABuffer(totalSize);
- PropagateTimes(buffer, unit);
+ CopyTimes(unit, *queue->begin());
unit->data()[0] = (nri << 5) | nalType;
@@ -325,10 +325,6 @@
LOG(VERBOSE) << "Access unit complete (" << mNALUnits.size() << " nal units)";
#endif
- uint64_t ntpTime;
- CHECK((*mNALUnits.begin())->meta()->findInt64(
- "ntp-time", (int64_t *)&ntpTime));
-
size_t totalSize = 0;
for (List<sp<ABuffer> >::iterator it = mNALUnits.begin();
it != mNALUnits.end(); ++it) {
@@ -347,7 +343,7 @@
offset += nal->size();
}
- accessUnit->meta()->setInt64("ntp-time", ntpTime);
+ CopyTimes(accessUnit, *mNALUnits.begin());
#if 0
printf(mAccessUnitDamaged ? "X" : ".");
diff --git a/media/libstagefright/rtsp/AH263Assembler.cpp b/media/libstagefright/rtsp/AH263Assembler.cpp
index 2818041..498295c 100644
--- a/media/libstagefright/rtsp/AH263Assembler.cpp
+++ b/media/libstagefright/rtsp/AH263Assembler.cpp
@@ -128,10 +128,6 @@
LOG(VERBOSE) << "Access unit complete (" << mPackets.size() << " packets)";
#endif
- uint64_t ntpTime;
- CHECK((*mPackets.begin())->meta()->findInt64(
- "ntp-time", (int64_t *)&ntpTime));
-
size_t totalSize = 0;
List<sp<ABuffer> >::iterator it = mPackets.begin();
while (it != mPackets.end()) {
@@ -155,7 +151,7 @@
++it;
}
- accessUnit->meta()->setInt64("ntp-time", ntpTime);
+ CopyTimes(accessUnit, *mPackets.begin());
#if 0
printf(mAccessUnitDamaged ? "X" : ".");
diff --git a/media/libstagefright/rtsp/AMPEG4AudioAssembler.cpp b/media/libstagefright/rtsp/AMPEG4AudioAssembler.cpp
index 6e46361..b0d2c64 100644
--- a/media/libstagefright/rtsp/AMPEG4AudioAssembler.cpp
+++ b/media/libstagefright/rtsp/AMPEG4AudioAssembler.cpp
@@ -103,10 +103,6 @@
LOG(VERBOSE) << "Access unit complete (" << mPackets.size() << " packets)";
#endif
- uint64_t ntpTime;
- CHECK((*mPackets.begin())->meta()->findInt64(
- "ntp-time", (int64_t *)&ntpTime));
-
size_t totalSize = 0;
List<sp<ABuffer> >::iterator it = mPackets.begin();
while (it != mPackets.end()) {
@@ -142,7 +138,7 @@
++it;
}
- accessUnit->meta()->setInt64("ntp-time", ntpTime);
+ CopyTimes(accessUnit, *mPackets.begin());
#if 0
printf(mAccessUnitDamaged ? "X" : ".");
diff --git a/media/libstagefright/rtsp/AMPEG4ElementaryAssembler.cpp b/media/libstagefright/rtsp/AMPEG4ElementaryAssembler.cpp
index 7e633d7..f68a35b 100644
--- a/media/libstagefright/rtsp/AMPEG4ElementaryAssembler.cpp
+++ b/media/libstagefright/rtsp/AMPEG4ElementaryAssembler.cpp
@@ -18,29 +18,160 @@
#include "ARTPSource.h"
+#include <media/stagefright/foundation/ABitReader.h>
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/foundation/hexdump.h>
+#include <media/stagefright/Utils.h>
+#include <ctype.h>
#include <stdint.h>
#define BE_VERBOSE 0
namespace android {
+static bool GetAttribute(const char *s, const char *key, AString *value) {
+ value->clear();
+
+ size_t keyLen = strlen(key);
+
+ for (;;) {
+ while (isspace(*s)) {
+ ++s;
+ }
+
+ const char *colonPos = strchr(s, ';');
+
+ size_t len =
+ (colonPos == NULL) ? strlen(s) : colonPos - s;
+
+ if (len >= keyLen + 1 && s[keyLen] == '='
+ && !strncasecmp(s, key, keyLen)) {
+ value->setTo(&s[keyLen + 1], len - keyLen - 1);
+ return true;
+ }
+
+ if (colonPos == NULL) {
+ return false;
+ }
+
+ s = colonPos + 1;
+ }
+}
+
+static bool GetIntegerAttribute(
+ const char *s, const char *key, unsigned *x) {
+ *x = 0;
+
+ AString val;
+ if (!GetAttribute(s, key, &val)) {
+ return false;
+ }
+
+ s = val.c_str();
+ char *end;
+ unsigned y = strtoul(s, &end, 10);
+
+ if (end == s || *end != '\0') {
+ return false;
+ }
+
+ *x = y;
+
+ return true;
+}
+
// static
-AMPEG4ElementaryAssembler::AMPEG4ElementaryAssembler(const sp<AMessage> ¬ify)
+AMPEG4ElementaryAssembler::AMPEG4ElementaryAssembler(
+ const sp<AMessage> ¬ify, const AString &desc, const AString ¶ms)
: mNotifyMsg(notify),
+ mIsGeneric(false),
+ mParams(params),
+ mSizeLength(0),
+ mIndexLength(0),
+ mIndexDeltaLength(0),
+ mCTSDeltaLength(0),
+ mDTSDeltaLength(0),
+ mRandomAccessIndication(false),
+ mStreamStateIndication(0),
+ mAuxiliaryDataSizeLength(0),
+ mHasAUHeader(false),
mAccessUnitRTPTime(0),
mNextExpectedSeqNoValid(false),
mNextExpectedSeqNo(0),
mAccessUnitDamaged(false) {
+ mIsGeneric = desc.startsWith("mpeg4-generic/");
+
+ if (mIsGeneric) {
+ AString value;
+ CHECK(GetAttribute(params.c_str(), "mode", &value));
+
+ if (!GetIntegerAttribute(params.c_str(), "sizeLength", &mSizeLength)) {
+ mSizeLength = 0;
+ }
+
+ if (!GetIntegerAttribute(
+ params.c_str(), "indexLength", &mIndexLength)) {
+ mIndexLength = 0;
+ }
+
+ if (!GetIntegerAttribute(
+ params.c_str(), "indexDeltaLength", &mIndexDeltaLength)) {
+ mIndexDeltaLength = 0;
+ }
+
+ if (!GetIntegerAttribute(
+ params.c_str(), "CTSDeltaLength", &mCTSDeltaLength)) {
+ mCTSDeltaLength = 0;
+ }
+
+ if (!GetIntegerAttribute(
+ params.c_str(), "DTSDeltaLength", &mDTSDeltaLength)) {
+ mDTSDeltaLength = 0;
+ }
+
+ unsigned x;
+ if (!GetIntegerAttribute(
+ params.c_str(), "randomAccessIndication", &x)) {
+ mRandomAccessIndication = false;
+ } else {
+ CHECK(x == 0 || x == 1);
+ mRandomAccessIndication = (x != 0);
+ }
+
+ if (!GetIntegerAttribute(
+ params.c_str(), "streamStateIndication",
+ &mStreamStateIndication)) {
+ mStreamStateIndication = 0;
+ }
+
+ if (!GetIntegerAttribute(
+ params.c_str(), "auxiliaryDataSizeLength",
+ &mAuxiliaryDataSizeLength)) {
+ mAuxiliaryDataSizeLength = 0;
+ }
+
+ mHasAUHeader =
+ mSizeLength > 0
+ || mIndexLength > 0
+ || mIndexDeltaLength > 0
+ || mCTSDeltaLength > 0
+ || mDTSDeltaLength > 0
+ || mRandomAccessIndication
+ || mStreamStateIndication > 0;
+ }
}
AMPEG4ElementaryAssembler::~AMPEG4ElementaryAssembler() {
}
+struct AUHeader {
+ unsigned mSize;
+ unsigned mSerial;
+};
+
ARTPAssembler::AssemblyStatus AMPEG4ElementaryAssembler::addPacket(
const sp<ARTPSource> &source) {
List<sp<ABuffer> > *queue = source->queue();
@@ -85,8 +216,116 @@
}
mAccessUnitRTPTime = rtpTime;
- mPackets.push_back(buffer);
- // hexdump(buffer->data(), buffer->size());
+ if (!mIsGeneric) {
+ mPackets.push_back(buffer);
+ } else {
+ // hexdump(buffer->data(), buffer->size());
+
+ CHECK_GE(buffer->size(), 2u);
+ unsigned AU_headers_length = U16_AT(buffer->data()); // in bits
+
+ CHECK_GE(buffer->size(), 2 + (AU_headers_length + 7) / 8);
+
+ List<AUHeader> headers;
+
+ ABitReader bits(buffer->data() + 2, buffer->size() - 2);
+ unsigned numBitsLeft = AU_headers_length;
+
+ unsigned AU_serial = 0;
+ for (;;) {
+ if (numBitsLeft < mSizeLength) { break; }
+
+ unsigned AU_size = bits.getBits(mSizeLength);
+ numBitsLeft -= mSizeLength;
+
+ size_t n = headers.empty() ? mIndexLength : mIndexDeltaLength;
+ if (numBitsLeft < n) { break; }
+
+ unsigned AU_index = bits.getBits(n);
+ numBitsLeft -= n;
+
+ if (headers.empty()) {
+ AU_serial = AU_index;
+ } else {
+ AU_serial += 1 + AU_index;
+ }
+
+ if (mCTSDeltaLength > 0) {
+ if (numBitsLeft < 1) {
+ break;
+ }
+ --numBitsLeft;
+ if (bits.getBits(1)) {
+ if (numBitsLeft < mCTSDeltaLength) {
+ break;
+ }
+ bits.skipBits(mCTSDeltaLength);
+ numBitsLeft -= mCTSDeltaLength;
+ }
+ }
+
+ if (mDTSDeltaLength > 0) {
+ if (numBitsLeft < 1) {
+ break;
+ }
+ --numBitsLeft;
+ if (bits.getBits(1)) {
+ if (numBitsLeft < mDTSDeltaLength) {
+ break;
+ }
+ bits.skipBits(mDTSDeltaLength);
+ numBitsLeft -= mDTSDeltaLength;
+ }
+ }
+
+ if (mRandomAccessIndication) {
+ if (numBitsLeft < 1) {
+ break;
+ }
+ bits.skipBits(1);
+ --numBitsLeft;
+ }
+
+ if (mStreamStateIndication > 0) {
+ if (numBitsLeft < mStreamStateIndication) {
+ break;
+ }
+ bits.skipBits(mStreamStateIndication);
+ }
+
+ AUHeader header;
+ header.mSize = AU_size;
+ header.mSerial = AU_serial;
+ headers.push_back(header);
+ }
+
+ size_t offset = 2 + (AU_headers_length + 7) / 8;
+
+ if (mAuxiliaryDataSizeLength > 0) {
+ ABitReader bits(buffer->data() + offset, buffer->size() - offset);
+
+ unsigned auxSize = bits.getBits(mAuxiliaryDataSizeLength);
+
+ offset += (mAuxiliaryDataSizeLength + auxSize + 7) / 8;
+ }
+
+ for (List<AUHeader>::iterator it = headers.begin();
+ it != headers.end(); ++it) {
+ const AUHeader &header = *it;
+
+ CHECK_LE(offset + header.mSize, buffer->size());
+
+ sp<ABuffer> accessUnit = new ABuffer(header.mSize);
+ memcpy(accessUnit->data(), buffer->data() + offset, header.mSize);
+
+ offset += header.mSize;
+
+ CopyTimes(accessUnit, buffer);
+ mPackets.push_back(accessUnit);
+ }
+
+ CHECK_EQ(offset, buffer->size());
+ }
queue->erase(queue->begin());
++mNextExpectedSeqNo;
@@ -101,10 +340,6 @@
LOG(VERBOSE) << "Access unit complete (" << mPackets.size() << " nal units)";
#endif
- uint64_t ntpTime;
- CHECK((*mPackets.begin())->meta()->findInt64(
- "ntp-time", (int64_t *)&ntpTime));
-
size_t totalSize = 0;
for (List<sp<ABuffer> >::iterator it = mPackets.begin();
it != mPackets.end(); ++it) {
@@ -120,7 +355,7 @@
offset += nal->size();
}
- accessUnit->meta()->setInt64("ntp-time", ntpTime);
+ CopyTimes(accessUnit, *mPackets.begin());
#if 0
printf(mAccessUnitDamaged ? "X" : ".");
diff --git a/media/libstagefright/rtsp/AMPEG4ElementaryAssembler.h b/media/libstagefright/rtsp/AMPEG4ElementaryAssembler.h
index 1566d00..794bbcc 100644
--- a/media/libstagefright/rtsp/AMPEG4ElementaryAssembler.h
+++ b/media/libstagefright/rtsp/AMPEG4ElementaryAssembler.h
@@ -20,6 +20,8 @@
#include "ARTPAssembler.h"
+#include <media/stagefright/foundation/AString.h>
+
#include <utils/List.h>
#include <utils/RefBase.h>
@@ -29,7 +31,9 @@
struct AMessage;
struct AMPEG4ElementaryAssembler : public ARTPAssembler {
- AMPEG4ElementaryAssembler(const sp<AMessage> ¬ify);
+ AMPEG4ElementaryAssembler(
+ const sp<AMessage> ¬ify, const AString &desc,
+ const AString ¶ms);
protected:
virtual ~AMPEG4ElementaryAssembler();
@@ -40,6 +44,18 @@
private:
sp<AMessage> mNotifyMsg;
+ bool mIsGeneric;
+ AString mParams;
+
+ unsigned mSizeLength;
+ unsigned mIndexLength;
+ unsigned mIndexDeltaLength;
+ unsigned mCTSDeltaLength;
+ unsigned mDTSDeltaLength;
+ bool mRandomAccessIndication;
+ unsigned mStreamStateIndication;
+ unsigned mAuxiliaryDataSizeLength;
+ bool mHasAUHeader;
uint32_t mAccessUnitRTPTime;
bool mNextExpectedSeqNoValid;
diff --git a/media/libstagefright/rtsp/APacketSource.cpp b/media/libstagefright/rtsp/APacketSource.cpp
index b930184..75b4571 100644
--- a/media/libstagefright/rtsp/APacketSource.cpp
+++ b/media/libstagefright/rtsp/APacketSource.cpp
@@ -247,6 +247,65 @@
return csd;
}
+// From mpeg4-generic configuration data.
+sp<ABuffer> MakeAACCodecSpecificData2(const char *params) {
+ AString val;
+ unsigned long objectType;
+ if (GetAttribute(params, "objectType", &val)) {
+ const char *s = val.c_str();
+ char *end;
+ objectType = strtoul(s, &end, 10);
+ CHECK(end > s && *end == '\0');
+ } else {
+ objectType = 0x40; // Audio ISO/IEC 14496-3
+ }
+
+ CHECK(GetAttribute(params, "config", &val));
+
+ sp<ABuffer> config = decodeHex(val);
+ CHECK(config != NULL);
+
+ // Make sure size fits into a single byte and doesn't have to
+ // be encoded.
+ CHECK_LT(20 + config->size(), 128u);
+
+ const uint8_t *data = config->data();
+
+ static const uint8_t kStaticESDS[] = {
+ 0x03, 22,
+ 0x00, 0x00, // ES_ID
+ 0x00, // streamDependenceFlag, URL_Flag, OCRstreamFlag
+
+ 0x04, 17,
+ 0x40, // Audio ISO/IEC 14496-3
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+
+ 0x05, 2,
+ // AudioSpecificInfo follows
+ };
+
+ sp<ABuffer> csd = new ABuffer(sizeof(kStaticESDS) + config->size());
+ uint8_t *dst = csd->data();
+ *dst++ = 0x03;
+ *dst++ = 20 + config->size();
+ *dst++ = 0x00; // ES_ID
+ *dst++ = 0x00;
+ *dst++ = 0x00; // streamDependenceFlag, URL_Flag, OCRstreamFlag
+ *dst++ = 0x04;
+ *dst++ = 15 + config->size();
+ *dst++ = objectType;
+ for (int i = 0; i < 12; ++i) { *dst++ = 0x00; }
+ *dst++ = 0x05;
+ *dst++ = config->size();
+ memcpy(dst, config->data(), config->size());
+
+ // hexdump(csd->data(), csd->size());
+
+ return csd;
+}
+
static size_t GetSizeWidth(size_t x) {
size_t n = 1;
while (x > 127) {
@@ -402,16 +461,41 @@
return csd;
}
+static bool GetClockRate(const AString &desc, uint32_t *clockRate) {
+ ssize_t slashPos = desc.find("/");
+ if (slashPos < 0) {
+ return false;
+ }
+
+ const char *s = desc.c_str() + slashPos + 1;
+
+ char *end;
+ unsigned long x = strtoul(s, &end, 10);
+
+ if (end == s || (*end != '\0' && *end != '/')) {
+ return false;
+ }
+
+ *clockRate = x;
+
+ return true;
+}
+
APacketSource::APacketSource(
const sp<ASessionDescription> &sessionDesc, size_t index)
: mInitCheck(NO_INIT),
mFormat(new MetaData),
- mEOSResult(OK) {
+ mEOSResult(OK),
+ mRTPTimeBase(0),
+ mNormalPlayTimeBaseUs(0),
+ mLastNormalPlayTimeUs(0) {
unsigned long PT;
AString desc;
AString params;
sessionDesc->getFormatType(index, &PT, &desc, ¶ms);
+ CHECK(GetClockRate(desc, &mClockRate));
+
int64_t durationUs;
if (sessionDesc->getDurationUs(&durationUs)) {
mFormat->setInt64(kKeyDuration, durationUs);
@@ -535,6 +619,30 @@
mFormat->setInt32(kKeyWidth, width);
mFormat->setInt32(kKeyHeight, height);
+ } else if (!strncmp(desc.c_str(), "mpeg4-generic/", 14)) {
+ AString val;
+ if (!GetAttribute(params.c_str(), "mode", &val)
+ || (strcasecmp(val.c_str(), "AAC-lbr")
+ && strcasecmp(val.c_str(), "AAC-hbr"))) {
+ mInitCheck = ERROR_UNSUPPORTED;
+ return;
+ }
+
+ mFormat->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_AAC);
+
+ int32_t sampleRate, numChannels;
+ ASessionDescription::ParseFormatDesc(
+ desc.c_str(), &sampleRate, &numChannels);
+
+ mFormat->setInt32(kKeySampleRate, sampleRate);
+ mFormat->setInt32(kKeyChannelCount, numChannels);
+
+ sp<ABuffer> codecSpecificData =
+ MakeAACCodecSpecificData2(params.c_str());
+
+ mFormat->setData(
+ kKeyESDS, 0,
+ codecSpecificData->data(), codecSpecificData->size());
} else {
mInitCheck = ERROR_UNSUPPORTED;
}
@@ -571,6 +679,8 @@
if (!mBuffers.empty()) {
const sp<ABuffer> buffer = *mBuffers.begin();
+ updateNormalPlayTime_l(buffer);
+
MediaBuffer *mediaBuffer = new MediaBuffer(buffer->size());
int64_t timeUs;
@@ -588,6 +698,16 @@
return mEOSResult;
}
+void APacketSource::updateNormalPlayTime_l(const sp<ABuffer> &buffer) {
+ uint32_t rtpTime;
+ CHECK(buffer->meta()->findInt32("rtp-time", (int32_t *)&rtpTime));
+
+ mLastNormalPlayTimeUs =
+ (((double)rtpTime - (double)mRTPTimeBase) / mClockRate)
+ * 1000000ll
+ + mNormalPlayTimeBaseUs;
+}
+
void APacketSource::queueAccessUnit(const sp<ABuffer> &buffer) {
int32_t damaged;
if (buffer->meta()->findInt32("damaged", &damaged) && damaged) {
@@ -613,4 +733,17 @@
mBuffers.clear();
}
+int64_t APacketSource::getNormalPlayTimeUs() {
+ Mutex::Autolock autoLock(mLock);
+ return mLastNormalPlayTimeUs;
+}
+
+void APacketSource::setNormalPlayTimeMapping(
+ uint32_t rtpTime, int64_t normalPlayTimeUs) {
+ Mutex::Autolock autoLock(mLock);
+
+ mRTPTimeBase = rtpTime;
+ mNormalPlayTimeBaseUs = normalPlayTimeUs;
+}
+
} // namespace android
diff --git a/media/libstagefright/rtsp/APacketSource.h b/media/libstagefright/rtsp/APacketSource.h
index 197af3e..3833ab1 100644
--- a/media/libstagefright/rtsp/APacketSource.h
+++ b/media/libstagefright/rtsp/APacketSource.h
@@ -45,6 +45,11 @@
void flushQueue();
+ int64_t getNormalPlayTimeUs();
+
+ void setNormalPlayTimeMapping(
+ uint32_t rtpTime, int64_t normalPlayTimeUs);
+
protected:
virtual ~APacketSource();
@@ -58,6 +63,15 @@
List<sp<ABuffer> > mBuffers;
status_t mEOSResult;
+ uint32_t mClockRate;
+
+ uint32_t mRTPTimeBase;
+ int64_t mNormalPlayTimeBaseUs;
+
+ int64_t mLastNormalPlayTimeUs;
+
+ void updateNormalPlayTime_l(const sp<ABuffer> &buffer);
+
DISALLOW_EVIL_CONSTRUCTORS(APacketSource);
};
diff --git a/media/libstagefright/rtsp/ARTPAssembler.cpp b/media/libstagefright/rtsp/ARTPAssembler.cpp
index 24225b8..9ba2b37 100644
--- a/media/libstagefright/rtsp/ARTPAssembler.cpp
+++ b/media/libstagefright/rtsp/ARTPAssembler.cpp
@@ -35,18 +35,6 @@
: mFirstFailureTimeUs(-1) {
}
-void ARTPAssembler::PropagateTimes(
- const sp<ABuffer> &from, const sp<ABuffer> &to) {
- uint32_t rtpTime;
- CHECK(from->meta()->findInt32("rtp-time", (int32_t *)&rtpTime));
-
- uint64_t ntpTime = 0;
- CHECK(from->meta()->findInt64("ntp-time", (int64_t *)&ntpTime));
-
- to->meta()->setInt32("rtp-time", rtpTime);
- to->meta()->setInt64("ntp-time", ntpTime);
-}
-
void ARTPAssembler::onPacketReceived(const sp<ARTPSource> &source) {
AssemblyStatus status;
for (;;) {
@@ -75,4 +63,19 @@
}
}
+// static
+void ARTPAssembler::CopyTimes(const sp<ABuffer> &to, const sp<ABuffer> &from) {
+ uint64_t ntpTime;
+ CHECK(from->meta()->findInt64("ntp-time", (int64_t *)&ntpTime));
+
+ uint32_t rtpTime;
+ CHECK(from->meta()->findInt32("rtp-time", (int32_t *)&rtpTime));
+
+ to->meta()->setInt64("ntp-time", ntpTime);
+ to->meta()->setInt32("rtp-time", rtpTime);
+
+ // Copy the seq number.
+ to->setInt32Data(from->int32Data());
+}
+
} // namespace android
diff --git a/media/libstagefright/rtsp/ARTPAssembler.h b/media/libstagefright/rtsp/ARTPAssembler.h
index e598088..70ea186 100644
--- a/media/libstagefright/rtsp/ARTPAssembler.h
+++ b/media/libstagefright/rtsp/ARTPAssembler.h
@@ -40,12 +40,11 @@
virtual void onByeReceived() = 0;
protected:
- static void PropagateTimes(
- const sp<ABuffer> &from, const sp<ABuffer> &to);
-
virtual AssemblyStatus assembleMore(const sp<ARTPSource> &source) = 0;
virtual void packetLost() = 0;
+ static void CopyTimes(const sp<ABuffer> &to, const sp<ABuffer> &from);
+
private:
int64_t mFirstFailureTimeUs;
diff --git a/media/libstagefright/rtsp/ARTPConnection.cpp b/media/libstagefright/rtsp/ARTPConnection.cpp
index 6816c45..10c9e02 100644
--- a/media/libstagefright/rtsp/ARTPConnection.cpp
+++ b/media/libstagefright/rtsp/ARTPConnection.cpp
@@ -57,6 +57,8 @@
int32_t mNumRTCPPacketsReceived;
struct sockaddr_in mRemoteRTCPAddr;
+
+ bool mIsInjected;
};
ARTPConnection::ARTPConnection(uint32_t flags)
@@ -72,13 +74,15 @@
int rtpSocket, int rtcpSocket,
const sp<ASessionDescription> &sessionDesc,
size_t index,
- const sp<AMessage> ¬ify) {
+ const sp<AMessage> ¬ify,
+ bool injected) {
sp<AMessage> msg = new AMessage(kWhatAddStream, id());
msg->setInt32("rtp-socket", rtpSocket);
msg->setInt32("rtcp-socket", rtcpSocket);
msg->setObject("session-desc", sessionDesc);
msg->setSize("index", index);
msg->setMessage("notify", notify);
+ msg->setInt32("injected", injected);
msg->post();
}
@@ -154,6 +158,12 @@
break;
}
+ case kWhatInjectPacket:
+ {
+ onInjectPacket(msg);
+ break;
+ }
+
default:
{
TRESPASS();
@@ -172,6 +182,11 @@
CHECK(msg->findInt32("rtcp-socket", &s));
info->mRTCPSocket = s;
+ int32_t injected;
+ CHECK(msg->findInt32("injected", &injected));
+
+ info->mIsInjected = injected;
+
sp<RefBase> obj;
CHECK(msg->findObject("session-desc", &obj));
info->mSessionDesc = static_cast<ASessionDescription *>(obj.get());
@@ -182,7 +197,9 @@
info->mNumRTCPPacketsReceived = 0;
memset(&info->mRemoteRTCPAddr, 0, sizeof(info->mRemoteRTCPAddr));
- postPollEvent();
+ if (!injected) {
+ postPollEvent();
+ }
}
void ARTPConnection::onRemoveStream(const sp<AMessage> &msg) {
@@ -231,6 +248,10 @@
int maxSocket = -1;
for (List<StreamInfo>::iterator it = mStreams.begin();
it != mStreams.end(); ++it) {
+ if ((*it).mIsInjected) {
+ continue;
+ }
+
FD_SET(it->mRTPSocket, &rs);
FD_SET(it->mRTCPSocket, &rs);
@@ -242,12 +263,20 @@
}
}
+ if (maxSocket == -1) {
+ return;
+ }
+
int res = select(maxSocket + 1, &rs, NULL, NULL, &tv);
CHECK_GE(res, 0);
if (res > 0) {
for (List<StreamInfo>::iterator it = mStreams.begin();
it != mStreams.end(); ++it) {
+ if ((*it).mIsInjected) {
+ continue;
+ }
+
if (FD_ISSET(it->mRTPSocket, &rs)) {
receive(&*it, true);
}
@@ -267,6 +296,10 @@
it != mStreams.end(); ++it) {
StreamInfo *s = &*it;
+ if (s->mIsInjected) {
+ continue;
+ }
+
if (s->mNumRTCPPacketsReceived == 0) {
// We have never received any RTCP packets on this stream,
// we don't even know where to send a report.
@@ -301,6 +334,8 @@
}
status_t ARTPConnection::receive(StreamInfo *s, bool receiveRTP) {
+ CHECK(!s->mIsInjected);
+
sp<ABuffer> buffer = new ABuffer(65536);
socklen_t remoteAddrLen =
@@ -327,7 +362,6 @@
if (receiveRTP) {
err = parseRTP(s, buffer);
} else {
- ++s->mNumRTCPPacketsReceived;
err = parseRTCP(s, buffer);
}
@@ -421,6 +455,12 @@
}
status_t ARTPConnection::parseRTCP(StreamInfo *s, const sp<ABuffer> &buffer) {
+ if (s->mNumRTCPPacketsReceived++ == 0) {
+ sp<AMessage> notify = s->mNotifyMsg->dup();
+ notify->setInt32("first-rtcp", true);
+ notify->post();
+ }
+
const uint8_t *data = buffer->data();
size_t size = buffer->size();
@@ -559,5 +599,41 @@
return source;
}
+void ARTPConnection::injectPacket(int index, const sp<ABuffer> &buffer) {
+ sp<AMessage> msg = new AMessage(kWhatInjectPacket, id());
+ msg->setInt32("index", index);
+ msg->setObject("buffer", buffer);
+ msg->post();
+}
+
+void ARTPConnection::onInjectPacket(const sp<AMessage> &msg) {
+ int32_t index;
+ CHECK(msg->findInt32("index", &index));
+
+ sp<RefBase> obj;
+ CHECK(msg->findObject("buffer", &obj));
+
+ sp<ABuffer> buffer = static_cast<ABuffer *>(obj.get());
+
+ List<StreamInfo>::iterator it = mStreams.begin();
+ while (it != mStreams.end()
+ && it->mRTPSocket != index && it->mRTCPSocket != index) {
+ ++it;
+ }
+
+ if (it == mStreams.end()) {
+ TRESPASS();
+ }
+
+ StreamInfo *s = &*it;
+
+ status_t err;
+ if (it->mRTPSocket == index) {
+ err = parseRTP(s, buffer);
+ } else {
+ err = parseRTCP(s, buffer);
+ }
+}
+
} // namespace android
diff --git a/media/libstagefright/rtsp/ARTPConnection.h b/media/libstagefright/rtsp/ARTPConnection.h
index c535199..77f81fa 100644
--- a/media/libstagefright/rtsp/ARTPConnection.h
+++ b/media/libstagefright/rtsp/ARTPConnection.h
@@ -38,10 +38,13 @@
void addStream(
int rtpSocket, int rtcpSocket,
const sp<ASessionDescription> &sessionDesc, size_t index,
- const sp<AMessage> ¬ify);
+ const sp<AMessage> ¬ify,
+ bool injected);
void removeStream(int rtpSocket, int rtcpSocket);
+ void injectPacket(int index, const sp<ABuffer> &buffer);
+
// Creates a pair of UDP datagram sockets bound to adjacent ports
// (the rtpSocket is bound to an even port, the rtcpSocket to the
// next higher port).
@@ -57,6 +60,7 @@
kWhatAddStream,
kWhatRemoveStream,
kWhatPollStreams,
+ kWhatInjectPacket,
};
static const int64_t kSelectTimeoutUs;
@@ -72,6 +76,7 @@
void onAddStream(const sp<AMessage> &msg);
void onRemoveStream(const sp<AMessage> &msg);
void onPollStreams();
+ void onInjectPacket(const sp<AMessage> &msg);
void onSendReceiverReports();
status_t receive(StreamInfo *info, bool receiveRTP);
diff --git a/media/libstagefright/rtsp/ARTPSession.cpp b/media/libstagefright/rtsp/ARTPSession.cpp
index e082078..8ce93b7 100644
--- a/media/libstagefright/rtsp/ARTPSession.cpp
+++ b/media/libstagefright/rtsp/ARTPSession.cpp
@@ -83,7 +83,8 @@
sp<AMessage> notify = new AMessage(kWhatAccessUnitComplete, id());
notify->setSize("track-index", mTracks.size() - 1);
- mRTPConn->addStream(rtpSocket, rtcpSocket, mDesc, i, notify);
+ mRTPConn->addStream(
+ rtpSocket, rtcpSocket, mDesc, i, notify, false /* injected */);
info->mPacketSource = source;
}
@@ -124,6 +125,14 @@
switch (msg->what()) {
case kWhatAccessUnitComplete:
{
+ int32_t firstRTCP;
+ if (msg->findInt32("first-rtcp", &firstRTCP)) {
+ // There won't be an access unit here, it's just a notification
+ // that the data communication worked since we got the first
+ // rtcp packet.
+ break;
+ }
+
size_t trackIndex;
CHECK(msg->findSize("track-index", &trackIndex));
@@ -166,6 +175,7 @@
#endif
accessUnit->meta()->setInt64("ntp-time", ntpTime);
+ accessUnit->meta()->setInt64("timeUs", 0);
#if 0
int32_t damaged;
diff --git a/media/libstagefright/rtsp/ARTPSource.cpp b/media/libstagefright/rtsp/ARTPSource.cpp
index 775c4ee..9656ba2 100644
--- a/media/libstagefright/rtsp/ARTPSource.cpp
+++ b/media/libstagefright/rtsp/ARTPSource.cpp
@@ -64,8 +64,9 @@
mAssembler = new AAMRAssembler(notify, false /* isWide */, params);
} else if (!strncmp(desc.c_str(), "AMR-WB/", 7)) {
mAssembler = new AAMRAssembler(notify, true /* isWide */, params);
- } else if (!strncmp(desc.c_str(), "MP4V-ES/", 8)) {
- mAssembler = new AMPEG4ElementaryAssembler(notify);
+ } else if (!strncmp(desc.c_str(), "MP4V-ES/", 8)
+ || !strncmp(desc.c_str(), "mpeg4-generic/", 14)) {
+ mAssembler = new AMPEG4ElementaryAssembler(notify, desc, params);
mIssueFIRRequests = true;
} else {
TRESPASS();
diff --git a/media/libstagefright/rtsp/ARTPWriter.cpp b/media/libstagefright/rtsp/ARTPWriter.cpp
index d4eed7c..ce1ee0e 100644
--- a/media/libstagefright/rtsp/ARTPWriter.cpp
+++ b/media/libstagefright/rtsp/ARTPWriter.cpp
@@ -31,6 +31,7 @@
mReflector(new AHandlerReflector<ARTPWriter>(this)) {
CHECK_GE(fd, 0);
+ mLooper->setName("rtp writer");
mLooper->registerHandler(mReflector);
mLooper->start();
diff --git a/media/libstagefright/rtsp/ARTSPConnection.cpp b/media/libstagefright/rtsp/ARTSPConnection.cpp
index 5345218..fd6aa62 100644
--- a/media/libstagefright/rtsp/ARTSPConnection.cpp
+++ b/media/libstagefright/rtsp/ARTSPConnection.cpp
@@ -19,6 +19,7 @@
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
+#include <media/stagefright/MediaErrors.h>
#include <arpa/inet.h>
#include <fcntl.h>
@@ -67,6 +68,12 @@
msg->post();
}
+void ARTSPConnection::observeBinaryData(const sp<AMessage> &reply) {
+ sp<AMessage> msg = new AMessage(kWhatObserveBinaryData, id());
+ msg->setMessage("reply", reply);
+ msg->post();
+}
+
void ARTSPConnection::onMessageReceived(const sp<AMessage> &msg) {
switch (msg->what()) {
case kWhatConnect:
@@ -89,6 +96,12 @@
onReceiveResponse();
break;
+ case kWhatObserveBinaryData:
+ {
+ CHECK(msg->findMessage("reply", &mObserveBinaryMessage));
+ break;
+ }
+
default:
TRESPASS();
break;
@@ -396,16 +409,13 @@
mReceiveResponseEventPending = true;
}
-bool ARTSPConnection::receiveLine(AString *line) {
- line->clear();
-
- bool sawCR = false;
- for (;;) {
- char c;
- ssize_t n = recv(mSocket, &c, 1, 0);
+status_t ARTSPConnection::receive(void *data, size_t size) {
+ size_t offset = 0;
+ while (offset < size) {
+ ssize_t n = recv(mSocket, (uint8_t *)data + offset, size - offset, 0);
if (n == 0) {
// Server closed the connection.
- return false;
+ return ERROR_IO;
} else if (n < 0) {
if (errno == EINTR) {
continue;
@@ -414,6 +424,22 @@
TRESPASS();
}
+ offset += (size_t)n;
+ }
+
+ return OK;
+}
+
+bool ARTSPConnection::receiveLine(AString *line) {
+ line->clear();
+
+ bool sawCR = false;
+ for (;;) {
+ char c;
+ if (receive(&c, 1) != OK) {
+ return false;
+ }
+
if (sawCR && c == '\n') {
line->erase(line->size() - 1, 1);
return true;
@@ -421,17 +447,59 @@
line->append(&c, 1);
+ if (c == '$' && line->size() == 1) {
+ // Special-case for interleaved binary data.
+ return true;
+ }
+
sawCR = (c == '\r');
}
}
-bool ARTSPConnection::receiveRTSPReponse() {
- sp<ARTSPResponse> response = new ARTSPResponse;
+sp<ABuffer> ARTSPConnection::receiveBinaryData() {
+ uint8_t x[3];
+ if (receive(x, 3) != OK) {
+ return NULL;
+ }
- if (!receiveLine(&response->mStatusLine)) {
+ sp<ABuffer> buffer = new ABuffer((x[1] << 8) | x[2]);
+ if (receive(buffer->data(), buffer->size()) != OK) {
+ return NULL;
+ }
+
+ buffer->meta()->setInt32("index", (int32_t)x[0]);
+
+ return buffer;
+}
+
+bool ARTSPConnection::receiveRTSPReponse() {
+ AString statusLine;
+
+ if (!receiveLine(&statusLine)) {
return false;
}
+ if (statusLine == "$") {
+ sp<ABuffer> buffer = receiveBinaryData();
+
+ if (buffer == NULL) {
+ return false;
+ }
+
+ if (mObserveBinaryMessage != NULL) {
+ sp<AMessage> notify = mObserveBinaryMessage->dup();
+ notify->setObject("buffer", buffer);
+ notify->post();
+ } else {
+ LOG(WARNING) << "received binary data, but no one cares.";
+ }
+
+ return true;
+ }
+
+ sp<ARTSPResponse> response = new ARTSPResponse;
+ response->mStatusLine = statusLine;
+
LOG(INFO) << "status: " << response->mStatusLine;
ssize_t space1 = response->mStatusLine.find(" ");
diff --git a/media/libstagefright/rtsp/ARTSPConnection.h b/media/libstagefright/rtsp/ARTSPConnection.h
index 3577a2f..96e0d5b 100644
--- a/media/libstagefright/rtsp/ARTSPConnection.h
+++ b/media/libstagefright/rtsp/ARTSPConnection.h
@@ -40,6 +40,8 @@
void sendRequest(const char *request, const sp<AMessage> &reply);
+ void observeBinaryData(const sp<AMessage> &reply);
+
protected:
virtual ~ARTSPConnection();
virtual void onMessageReceived(const sp<AMessage> &msg);
@@ -57,6 +59,7 @@
kWhatCompleteConnection = 'comc',
kWhatSendRequest = 'sreq',
kWhatReceiveResponse = 'rres',
+ kWhatObserveBinaryData = 'obin',
};
static const int64_t kSelectTimeoutUs;
@@ -69,6 +72,8 @@
KeyedVector<int32_t, sp<AMessage> > mPendingRequests;
+ sp<AMessage> mObserveBinaryMessage;
+
void onConnect(const sp<AMessage> &msg);
void onDisconnect(const sp<AMessage> &msg);
void onCompleteConnection(const sp<AMessage> &msg);
@@ -80,7 +85,9 @@
// Return false iff something went unrecoverably wrong.
bool receiveRTSPReponse();
+ status_t receive(void *data, size_t size);
bool receiveLine(AString *line);
+ sp<ABuffer> receiveBinaryData();
bool notifyResponseListener(const sp<ARTSPResponse> &response);
static bool ParseURL(
diff --git a/media/libstagefright/rtsp/ARTSPController.cpp b/media/libstagefright/rtsp/ARTSPController.cpp
index 9df17cb..a89946b 100644
--- a/media/libstagefright/rtsp/ARTSPController.cpp
+++ b/media/libstagefright/rtsp/ARTSPController.cpp
@@ -138,4 +138,9 @@
}
}
+int64_t ARTSPController::getNormalPlayTimeUs() {
+ CHECK(mHandler != NULL);
+ return mHandler->getNormalPlayTimeUs();
+}
+
} // namespace android
diff --git a/media/libstagefright/rtsp/MyHandler.h b/media/libstagefright/rtsp/MyHandler.h
index caff435..0aefd58 100644
--- a/media/libstagefright/rtsp/MyHandler.h
+++ b/media/libstagefright/rtsp/MyHandler.h
@@ -23,14 +23,52 @@
#include "ARTSPConnection.h"
#include "ASessionDescription.h"
+#include <ctype.h>
+
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/ALooper.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/MediaErrors.h>
+// If no access units are received within 3 secs, assume that the rtp
+// stream has ended and signal end of stream.
+static int64_t kAccessUnitTimeoutUs = 3000000ll;
+
+// If no access units arrive for the first 10 secs after starting the
+// stream, assume none ever will and signal EOS or switch transports.
+static int64_t kStartupTimeoutUs = 10000000ll;
+
namespace android {
+static bool GetAttribute(const char *s, const char *key, AString *value) {
+ value->clear();
+
+ size_t keyLen = strlen(key);
+
+ for (;;) {
+ while (isspace(*s)) {
+ ++s;
+ }
+
+ const char *colonPos = strchr(s, ';');
+
+ size_t len =
+ (colonPos == NULL) ? strlen(s) : colonPos - s;
+
+ if (len >= keyLen + 1 && s[keyLen] == '=' && !strncmp(s, key, keyLen)) {
+ value->setTo(&s[keyLen + 1], len - keyLen - 1);
+ return true;
+ }
+
+ if (colonPos == NULL) {
+ return false;
+ }
+
+ s = colonPos + 1;
+ }
+}
+
struct MyHandler : public AHandler {
MyHandler(const char *url, const sp<ALooper> &looper)
: mLooper(looper),
@@ -41,8 +79,12 @@
mSetupTracksSuccessful(false),
mSeekPending(false),
mFirstAccessUnit(true),
- mFirstAccessUnitNTP(0) {
-
+ mFirstAccessUnitNTP(0),
+ mNumAccessUnitsReceived(0),
+ mCheckPending(false),
+ mTryTCPInterleaving(false),
+ mReceivedFirstRTCPPacket(false) {
+ mNetLooper->setName("rtsp net");
mNetLooper->start(false /* runOnCallingThread */,
false /* canCallJava */,
PRIORITY_HIGHEST);
@@ -55,6 +97,9 @@
mLooper->registerHandler(mConn);
(1 ? mNetLooper : mLooper)->registerHandler(mRTPConn);
+ sp<AMessage> notify = new AMessage('biny', id());
+ mConn->observeBinaryData(notify);
+
sp<AMessage> reply = new AMessage('conn', id());
mConn->connect(mSessionURL.c_str(), reply);
}
@@ -71,6 +116,20 @@
msg->post();
}
+ int64_t getNormalPlayTimeUs() {
+ int64_t maxTimeUs = 0;
+ for (size_t i = 0; i < mTracks.size(); ++i) {
+ int64_t timeUs = mTracks.editItemAt(i).mPacketSource
+ ->getNormalPlayTimeUs();
+
+ if (i == 0 || timeUs > maxTimeUs) {
+ maxTimeUs = timeUs;
+ }
+ }
+
+ return maxTimeUs;
+ }
+
virtual void onMessageReceived(const sp<AMessage> &msg) {
switch (msg->what()) {
case 'conn':
@@ -91,13 +150,21 @@
sp<AMessage> reply = new AMessage('desc', id());
mConn->sendRequest(request.c_str(), reply);
+ } else {
+ (new AMessage('disc', id()))->post();
}
break;
}
case 'disc':
{
- (new AMessage('quit', id()))->post();
+ int32_t reconnect;
+ if (msg->findInt32("reconnect", &reconnect) && reconnect) {
+ sp<AMessage> reply = new AMessage('conn', id());
+ mConn->connect(mSessionURL.c_str(), reply);
+ } else {
+ (new AMessage('quit', id()))->post();
+ }
break;
}
@@ -133,31 +200,35 @@
break;
}
- CHECK_EQ(response->mStatusCode, 200u);
-
- mSessionDesc = new ASessionDescription;
-
- mSessionDesc->setTo(
- response->mContent->data(),
- response->mContent->size());
-
- CHECK(mSessionDesc->isValid());
-
- ssize_t i = response->mHeaders.indexOfKey("content-base");
- if (i >= 0) {
- mBaseURL = response->mHeaders.valueAt(i);
+ if (response->mStatusCode != 200) {
+ result = UNKNOWN_ERROR;
} else {
- i = response->mHeaders.indexOfKey("content-location");
+ mSessionDesc = new ASessionDescription;
+
+ mSessionDesc->setTo(
+ response->mContent->data(),
+ response->mContent->size());
+
+ CHECK(mSessionDesc->isValid());
+
+ ssize_t i = response->mHeaders.indexOfKey("content-base");
if (i >= 0) {
mBaseURL = response->mHeaders.valueAt(i);
} else {
- mBaseURL = mSessionURL;
+ i = response->mHeaders.indexOfKey("content-location");
+ if (i >= 0) {
+ mBaseURL = response->mHeaders.valueAt(i);
+ } else {
+ mBaseURL = mSessionURL;
+ }
}
- }
- CHECK_GT(mSessionDesc->countTracks(), 1u);
- setupTrack(1);
- } else {
+ CHECK_GT(mSessionDesc->countTracks(), 1u);
+ setupTrack(1);
+ }
+ }
+
+ if (result != OK) {
sp<AMessage> reply = new AMessage('disc', id());
mConn->disconnect(reply);
}
@@ -181,14 +252,7 @@
LOG(INFO) << "SETUP(" << index << ") completed with result "
<< result << " (" << strerror(-result) << ")";
- if (result != OK) {
- if (track) {
- close(track->mRTPSocket);
- close(track->mRTCPSocket);
-
- mTracks.removeItemsAt(trackIndex);
- }
- } else {
+ if (result == OK) {
CHECK(track != NULL);
sp<RefBase> obj;
@@ -196,29 +260,40 @@
sp<ARTSPResponse> response =
static_cast<ARTSPResponse *>(obj.get());
- CHECK_EQ(response->mStatusCode, 200u);
+ if (response->mStatusCode != 200) {
+ result = UNKNOWN_ERROR;
+ } else {
+ ssize_t i = response->mHeaders.indexOfKey("session");
+ CHECK_GE(i, 0);
- ssize_t i = response->mHeaders.indexOfKey("session");
- CHECK_GE(i, 0);
-
- if (index == 1) {
mSessionID = response->mHeaders.valueAt(i);
i = mSessionID.find(";");
if (i >= 0) {
// Remove options, i.e. ";timeout=90"
mSessionID.erase(i, mSessionID.size() - i);
}
+
+ sp<AMessage> notify = new AMessage('accu', id());
+ notify->setSize("track-index", trackIndex);
+
+ mRTPConn->addStream(
+ track->mRTPSocket, track->mRTCPSocket,
+ mSessionDesc, index,
+ notify, track->mUsingInterleavedTCP);
+
+ mSetupTracksSuccessful = true;
}
+ }
- sp<AMessage> notify = new AMessage('accu', id());
- notify->setSize("track-index", trackIndex);
+ if (result != OK) {
+ if (track) {
+ if (!track->mUsingInterleavedTCP) {
+ close(track->mRTPSocket);
+ close(track->mRTCPSocket);
+ }
- mRTPConn->addStream(
- track->mRTPSocket, track->mRTCPSocket,
- mSessionDesc, index,
- notify);
-
- mSetupTracksSuccessful = true;
+ mTracks.removeItemsAt(trackIndex);
+ }
}
++index;
@@ -260,9 +335,10 @@
CHECK_EQ(response->mStatusCode, 200u);
- mDoneMsg->setInt32("result", OK);
- mDoneMsg->post();
- mDoneMsg = NULL;
+ parsePlayResponse(response);
+
+ sp<AMessage> timeout = new AMessage('tiou', id());
+ timeout->post(kStartupTimeoutUs);
} else {
sp<AMessage> reply = new AMessage('disc', id());
mConn->disconnect(reply);
@@ -274,12 +350,32 @@
case 'abor':
{
for (size_t i = 0; i < mTracks.size(); ++i) {
- mTracks.editItemAt(i).mPacketSource->signalEOS(
- ERROR_END_OF_STREAM);
+ TrackInfo *info = &mTracks.editItemAt(i);
+
+ info->mPacketSource->signalEOS(ERROR_END_OF_STREAM);
+
+ if (!info->mUsingInterleavedTCP) {
+ mRTPConn->removeStream(info->mRTPSocket, info->mRTCPSocket);
+
+ close(info->mRTPSocket);
+ close(info->mRTCPSocket);
+ }
}
+ mTracks.clear();
+ mSetupTracksSuccessful = false;
+ mSeekPending = false;
+ mFirstAccessUnit = true;
+ mFirstAccessUnitNTP = 0;
+ mNumAccessUnitsReceived = 0;
+ mReceivedFirstRTCPPacket = false;
sp<AMessage> reply = new AMessage('tear', id());
+ int32_t reconnect;
+ if (msg->findInt32("reconnect", &reconnect) && reconnect) {
+ reply->setInt32("reconnect", true);
+ }
+
AString request;
request = "TEARDOWN ";
@@ -306,6 +402,12 @@
<< result << " (" << strerror(-result) << ")";
sp<AMessage> reply = new AMessage('disc', id());
+
+ int32_t reconnect;
+ if (msg->findInt32("reconnect", &reconnect) && reconnect) {
+ reply->setInt32("reconnect", true);
+ }
+
mConn->disconnect(reply);
break;
}
@@ -320,16 +422,49 @@
break;
}
+ case 'chek':
+ {
+ if (mNumAccessUnitsReceived == 0) {
+ LOG(INFO) << "stream ended? aborting.";
+ (new AMessage('abor', id()))->post();
+ break;
+ }
+
+ mNumAccessUnitsReceived = 0;
+ msg->post(kAccessUnitTimeoutUs);
+ break;
+ }
+
case 'accu':
{
+ int32_t firstRTCP;
+ if (msg->findInt32("first-rtcp", &firstRTCP)) {
+ mReceivedFirstRTCPPacket = true;
+ break;
+ }
+
+ ++mNumAccessUnitsReceived;
+
+ if (!mCheckPending) {
+ mCheckPending = true;
+ sp<AMessage> check = new AMessage('chek', id());
+ check->post(kAccessUnitTimeoutUs);
+ }
+
size_t trackIndex;
CHECK(msg->findSize("track-index", &trackIndex));
+ if (trackIndex >= mTracks.size()) {
+ LOG(ERROR) << "late packets ignored.";
+ break;
+ }
+
+ TrackInfo *track = &mTracks.editItemAt(trackIndex);
+
int32_t eos;
if (msg->findInt32("eos", &eos)) {
LOG(INFO) << "received BYE on track index " << trackIndex;
#if 0
- TrackInfo *track = &mTracks.editItemAt(trackIndex);
track->mPacketSource->signalEOS(ERROR_END_OF_STREAM);
#endif
return;
@@ -340,11 +475,37 @@
sp<ABuffer> accessUnit = static_cast<ABuffer *>(obj.get());
+ uint32_t seqNum = (uint32_t)accessUnit->int32Data();
+
+ if (seqNum < track->mFirstSeqNumInSegment) {
+ LOG(INFO) << "dropping stale access-unit "
+ << "(" << seqNum << " < "
+ << track->mFirstSeqNumInSegment << ")";
+ break;
+ }
+
uint64_t ntpTime;
CHECK(accessUnit->meta()->findInt64(
"ntp-time", (int64_t *)&ntpTime));
+ uint32_t rtpTime;
+ CHECK(accessUnit->meta()->findInt32(
+ "rtp-time", (int32_t *)&rtpTime));
+
+ if (track->mNewSegment) {
+ track->mNewSegment = false;
+
+ LOG(VERBOSE) << "first segment unit ntpTime="
+ << StringPrintf("0x%016llx", ntpTime)
+ << " rtpTime=" << rtpTime
+ << " seq=" << seqNum;
+ }
+
if (mFirstAccessUnit) {
+ mDoneMsg->setInt32("result", OK);
+ mDoneMsg->post();
+ mDoneMsg = NULL;
+
mFirstAccessUnit = false;
mFirstAccessUnitNTP = ntpTime;
}
@@ -402,6 +563,11 @@
case 'see1':
{
+ // Session is paused now.
+ for (size_t i = 0; i < mTracks.size(); ++i) {
+ mTracks.editItemAt(i).mPacketSource->flushQueue();
+ }
+
int64_t timeUs;
CHECK(msg->findInt64("time", &timeUs));
@@ -428,15 +594,13 @@
{
CHECK(mSeekPending);
- LOG(INFO) << "seek completed.";
- mSeekPending = false;
-
int32_t result;
CHECK(msg->findInt32("result", &result));
- if (result != OK) {
- LOG(ERROR) << "seek FAILED";
- break;
- }
+
+ LOG(INFO) << "PLAY completed with result "
+ << result << " (" << strerror(-result) << ")";
+
+ CHECK_EQ(result, (status_t)OK);
sp<RefBase> obj;
CHECK(msg->findObject("response", &obj));
@@ -445,8 +609,42 @@
CHECK_EQ(response->mStatusCode, 200u);
- for (size_t i = 0; i < mTracks.size(); ++i) {
- mTracks.editItemAt(i).mPacketSource->flushQueue();
+ parsePlayResponse(response);
+
+ LOG(INFO) << "seek completed.";
+ mSeekPending = false;
+ break;
+ }
+
+ case 'biny':
+ {
+ sp<RefBase> obj;
+ CHECK(msg->findObject("buffer", &obj));
+ sp<ABuffer> buffer = static_cast<ABuffer *>(obj.get());
+
+ int32_t index;
+ CHECK(buffer->meta()->findInt32("index", &index));
+
+ mRTPConn->injectPacket(index, buffer);
+ break;
+ }
+
+ case 'tiou':
+ {
+ if (!mReceivedFirstRTCPPacket) {
+ if (mTryTCPInterleaving) {
+ LOG(WARNING) << "Never received any data, disconnecting.";
+ (new AMessage('abor', id()))->post();
+ } else {
+ LOG(WARNING)
+ << "Never received any data, switching transports.";
+
+ mTryTCPInterleaving = true;
+
+ sp<AMessage> msg = new AMessage('abor', id());
+ msg->setInt32("reconnect", true);
+ msg->post();
+ }
}
break;
}
@@ -457,6 +655,90 @@
}
}
+ static void SplitString(
+ const AString &s, const char *separator, List<AString> *items) {
+ items->clear();
+ size_t start = 0;
+ while (start < s.size()) {
+ ssize_t offset = s.find(separator, start);
+
+ if (offset < 0) {
+ items->push_back(AString(s, start, s.size() - start));
+ break;
+ }
+
+ items->push_back(AString(s, start, offset - start));
+ start = offset + strlen(separator);
+ }
+ }
+
+ void parsePlayResponse(const sp<ARTSPResponse> &response) {
+ ssize_t i = response->mHeaders.indexOfKey("range");
+ if (i < 0) {
+ // Server doesn't even tell use what range it is going to
+ // play, therefore we won't support seeking.
+ return;
+ }
+
+ AString range = response->mHeaders.valueAt(i);
+ LOG(VERBOSE) << "Range: " << range;
+
+ AString val;
+ CHECK(GetAttribute(range.c_str(), "npt", &val));
+ float npt1, npt2;
+
+ if (val == "now-") {
+ // This is a live stream and therefore not seekable.
+ return;
+ } else {
+ CHECK_EQ(sscanf(val.c_str(), "%f-%f", &npt1, &npt2), 2);
+ }
+
+ i = response->mHeaders.indexOfKey("rtp-info");
+ CHECK_GE(i, 0);
+
+ AString rtpInfo = response->mHeaders.valueAt(i);
+ List<AString> streamInfos;
+ SplitString(rtpInfo, ",", &streamInfos);
+
+ int n = 1;
+ for (List<AString>::iterator it = streamInfos.begin();
+ it != streamInfos.end(); ++it) {
+ (*it).trim();
+ LOG(VERBOSE) << "streamInfo[" << n << "] = " << *it;
+
+ CHECK(GetAttribute((*it).c_str(), "url", &val));
+
+ size_t trackIndex = 0;
+ while (trackIndex < mTracks.size()
+ && !(val == mTracks.editItemAt(trackIndex).mURL)) {
+ ++trackIndex;
+ }
+ CHECK_LT(trackIndex, mTracks.size());
+
+ CHECK(GetAttribute((*it).c_str(), "seq", &val));
+
+ char *end;
+ unsigned long seq = strtoul(val.c_str(), &end, 10);
+
+ TrackInfo *info = &mTracks.editItemAt(trackIndex);
+ info->mFirstSeqNumInSegment = seq;
+ info->mNewSegment = true;
+
+ CHECK(GetAttribute((*it).c_str(), "rtptime", &val));
+
+ uint32_t rtpTime = strtoul(val.c_str(), &end, 10);
+
+ LOG(VERBOSE) << "track #" << n
+ << ": rtpTime=" << rtpTime << " <=> npt=" << npt1;
+
+ info->mPacketSource->setNormalPlayTimeMapping(
+ rtpTime, (int64_t)(npt1 * 1E6));
+
+ ++n;
+ }
+ }
+
sp<APacketSource> getPacketSource(size_t index) {
CHECK_GE(index, 0u);
CHECK_LT(index, mTracks.size());
@@ -481,10 +763,18 @@
bool mSeekPending;
bool mFirstAccessUnit;
uint64_t mFirstAccessUnitNTP;
+ int64_t mNumAccessUnitsReceived;
+ bool mCheckPending;
+ bool mTryTCPInterleaving;
+ bool mReceivedFirstRTCPPacket;
struct TrackInfo {
+ AString mURL;
int mRTPSocket;
int mRTCPSocket;
+ bool mUsingInterleavedTCP;
+ uint32_t mFirstSeqNumInSegment;
+ bool mNewSegment;
sp<APacketSource> mPacketSource;
};
@@ -495,6 +785,7 @@
void setupTrack(size_t index) {
sp<APacketSource> source =
new APacketSource(mSessionDesc, index);
+
if (source->initCheck() != OK) {
LOG(WARNING) << "Unsupported format. Ignoring track #"
<< index << ".";
@@ -514,20 +805,39 @@
mTracks.push(TrackInfo());
TrackInfo *info = &mTracks.editItemAt(mTracks.size() - 1);
+ info->mURL = trackURL;
info->mPacketSource = source;
+ info->mUsingInterleavedTCP = false;
+ info->mFirstSeqNumInSegment = 0;
+ info->mNewSegment = true;
- unsigned rtpPort;
- ARTPConnection::MakePortPair(
- &info->mRTPSocket, &info->mRTCPSocket, &rtpPort);
+ LOG(VERBOSE) << "track #" << mTracks.size() << " URL=" << trackURL;
AString request = "SETUP ";
request.append(trackURL);
request.append(" RTSP/1.0\r\n");
- request.append("Transport: RTP/AVP/UDP;unicast;client_port=");
- request.append(rtpPort);
- request.append("-");
- request.append(rtpPort + 1);
+ if (mTryTCPInterleaving) {
+ size_t interleaveIndex = 2 * (mTracks.size() - 1);
+ info->mUsingInterleavedTCP = true;
+ info->mRTPSocket = interleaveIndex;
+ info->mRTCPSocket = interleaveIndex + 1;
+
+ request.append("Transport: RTP/AVP/TCP;interleaved=");
+ request.append(interleaveIndex);
+ request.append("-");
+ request.append(interleaveIndex + 1);
+ } else {
+ unsigned rtpPort;
+ ARTPConnection::MakePortPair(
+ &info->mRTPSocket, &info->mRTCPSocket, &rtpPort);
+
+ request.append("Transport: RTP/AVP/UDP;unicast;client_port=");
+ request.append(rtpPort);
+ request.append("-");
+ request.append(rtpPort + 1);
+ }
+
request.append("\r\n");
if (index > 1) {
diff --git a/media/mtp/MtpDataPacket.cpp b/media/mtp/MtpDataPacket.cpp
index 27dc796..ec78ff0 100644
--- a/media/mtp/MtpDataPacket.cpp
+++ b/media/mtp/MtpDataPacket.cpp
@@ -242,6 +242,16 @@
putUInt32(value[3]);
}
+void MtpDataPacket::putInt128(int64_t value) {
+ putInt64(value);
+ putInt64(value < 0 ? -1 : 0);
+}
+
+void MtpDataPacket::putUInt128(uint64_t value) {
+ putUInt64(value);
+ putUInt64(0);
+}
+
void MtpDataPacket::putAInt8(const int8_t* values, int count) {
putUInt32(count);
for (int i = 0; i < count; i++)
@@ -363,7 +373,7 @@
int MtpDataPacket::write(int fd) {
MtpPacket::putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize);
MtpPacket::putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_DATA);
-
+ dump();
// send header separately from data
int ret = ::write(fd, mBuffer, MTP_CONTAINER_HEADER_SIZE);
if (ret == MTP_CONTAINER_HEADER_SIZE)
diff --git a/media/mtp/MtpDataPacket.h b/media/mtp/MtpDataPacket.h
index 1467aab..fab6a07 100644
--- a/media/mtp/MtpDataPacket.h
+++ b/media/mtp/MtpDataPacket.h
@@ -69,6 +69,8 @@
void putUInt64(uint64_t value);
void putInt128(const int128_t& value);
void putUInt128(const uint128_t& value);
+ void putInt128(int64_t value);
+ void putUInt128(uint64_t value);
void putAInt8(const int8_t* values, int count);
void putAUInt8(const uint8_t* values, int count);
diff --git a/media/mtp/MtpDatabase.h b/media/mtp/MtpDatabase.h
index 17823df..c8cb016 100644
--- a/media/mtp/MtpDatabase.h
+++ b/media/mtp/MtpDatabase.h
@@ -22,6 +22,7 @@
namespace android {
class MtpDataPacket;
+class MtpProperty;
class MtpDatabase {
public:
@@ -58,10 +59,22 @@
virtual MtpObjectPropertyList* getSupportedObjectProperties(MtpObjectFormat format) = 0;
virtual MtpDevicePropertyList* getSupportedDeviceProperties() = 0;
- virtual MtpResponseCode getObjectProperty(MtpObjectHandle handle,
+ virtual MtpResponseCode getObjectPropertyValue(MtpObjectHandle handle,
MtpObjectProperty property,
MtpDataPacket& packet) = 0;
+ virtual MtpResponseCode setObjectPropertyValue(MtpObjectHandle handle,
+ MtpObjectProperty property,
+ MtpDataPacket& packet) = 0;
+
+ virtual MtpResponseCode getDevicePropertyValue(MtpDeviceProperty property,
+ MtpDataPacket& packet) = 0;
+
+ virtual MtpResponseCode setDevicePropertyValue(MtpDeviceProperty property,
+ MtpDataPacket& packet) = 0;
+
+ virtual MtpResponseCode resetDeviceProperty(MtpDeviceProperty property) = 0;
+
virtual MtpResponseCode getObjectInfo(MtpObjectHandle handle,
MtpDataPacket& packet) = 0;
@@ -76,6 +89,14 @@
virtual MtpResponseCode setObjectReferences(MtpObjectHandle handle,
MtpObjectHandleList* references) = 0;
+ virtual MtpProperty* getObjectPropertyDesc(MtpObjectProperty property,
+ MtpObjectFormat format) = 0;
+
+ virtual MtpProperty* getDevicePropertyDesc(MtpDeviceProperty property) = 0;
+
+ virtual void sessionStarted() = 0;
+
+ virtual void sessionEnded() = 0;
};
}; // namespace android
diff --git a/media/mtp/MtpServer.cpp b/media/mtp/MtpServer.cpp
index 30abfb8..c982114 100644
--- a/media/mtp/MtpServer.cpp
+++ b/media/mtp/MtpServer.cpp
@@ -56,17 +56,17 @@
// MTP_OPERATION_SET_OBJECT_PROTECTION,
// MTP_OPERATION_POWER_DOWN,
// MTP_OPERATION_GET_DEVICE_PROP_DESC,
-// MTP_OPERATION_GET_DEVICE_PROP_VALUE,
-// MTP_OPERATION_SET_DEVICE_PROP_VALUE,
-// MTP_OPERATION_RESET_DEVICE_PROP_VALUE,
+ MTP_OPERATION_GET_DEVICE_PROP_VALUE,
+ MTP_OPERATION_SET_DEVICE_PROP_VALUE,
+ MTP_OPERATION_RESET_DEVICE_PROP_VALUE,
// MTP_OPERATION_TERMINATE_OPEN_CAPTURE,
// MTP_OPERATION_MOVE_OBJECT,
// MTP_OPERATION_COPY_OBJECT,
// MTP_OPERATION_GET_PARTIAL_OBJECT,
// MTP_OPERATION_INITIATE_OPEN_CAPTURE,
MTP_OPERATION_GET_OBJECT_PROPS_SUPPORTED,
-// MTP_OPERATION_GET_OBJECT_PROP_DESC,
- MTP_OPERATION_GET_OBJECT_PROP_VALUE,
+ MTP_OPERATION_GET_OBJECT_PROP_DESC,
+// MTP_OPERATION_GET_OBJECT_PROP_VALUE,
// MTP_OPERATION_SET_OBJECT_PROP_VALUE,
MTP_OPERATION_GET_OBJECT_REFERENCES,
MTP_OPERATION_SET_OBJECT_REFERENCES,
@@ -91,7 +91,6 @@
mSendObjectFormat(0),
mSendObjectFileSize(0)
{
- initObjectProperties();
}
MtpServer::~MtpServer() {
@@ -136,7 +135,9 @@
// FIXME need to generalize this
bool dataIn = (operation == MTP_OPERATION_SEND_OBJECT_INFO
- || operation == MTP_OPERATION_SET_OBJECT_REFERENCES);
+ || operation == MTP_OPERATION_SET_OBJECT_REFERENCES
+ || operation == MTP_OPERATION_SET_OBJECT_PROP_VALUE
+ || operation == MTP_OPERATION_SET_DEVICE_PROP_VALUE);
if (dataIn) {
int ret = mData.read(fd);
if (ret < 0) {
@@ -158,7 +159,6 @@
mData.setOperationCode(operation);
mData.setTransactionID(transaction);
LOGV("sending data:");
- mData.dump();
ret = mData.write(fd);
if (ret < 0) {
LOGE("request write returned %d, errno: %d", ret, errno);
@@ -185,24 +185,9 @@
LOGV("skipping response\n");
}
}
-}
-MtpProperty* MtpServer::getObjectProperty(MtpPropertyCode propCode) {
- for (int i = 0; i < mObjectProperties.size(); i++) {
- MtpProperty* property = mObjectProperties[i];
- if (property->getPropertyCode() == propCode)
- return property;
- }
- return NULL;
-}
-
-MtpProperty* MtpServer::getDeviceProperty(MtpPropertyCode propCode) {
- for (int i = 0; i < mDeviceProperties.size(); i++) {
- MtpProperty* property = mDeviceProperties[i];
- if (property->getPropertyCode() == propCode)
- return property;
- }
- return NULL;
+ if (mSessionOpen)
+ mDatabase->sessionEnded();
}
void MtpServer::sendObjectAdded(MtpObjectHandle handle) {
@@ -227,14 +212,6 @@
}
}
-void MtpServer::initObjectProperties() {
- mObjectProperties.push(new MtpProperty(MTP_PROPERTY_STORAGE_ID, MTP_TYPE_UINT32));
- mObjectProperties.push(new MtpProperty(MTP_PROPERTY_OBJECT_FORMAT, MTP_TYPE_UINT16));
- mObjectProperties.push(new MtpProperty(MTP_PROPERTY_OBJECT_SIZE, MTP_TYPE_UINT64));
- mObjectProperties.push(new MtpProperty(MTP_PROPERTY_OBJECT_FILE_NAME, MTP_TYPE_STR));
- mObjectProperties.push(new MtpProperty(MTP_PROPERTY_PARENT_OBJECT, MTP_TYPE_UINT32));
-}
-
bool MtpServer::handleRequest() {
MtpOperationCode operation = mRequest.getOperationCode();
MtpResponseCode response;
@@ -281,6 +258,18 @@
case MTP_OPERATION_GET_OBJECT_PROP_VALUE:
response = doGetObjectPropValue();
break;
+ case MTP_OPERATION_SET_OBJECT_PROP_VALUE:
+ response = doSetObjectPropValue();
+ break;
+ case MTP_OPERATION_GET_DEVICE_PROP_VALUE:
+ response = doGetDevicePropValue();
+ break;
+ case MTP_OPERATION_SET_DEVICE_PROP_VALUE:
+ response = doSetDevicePropValue();
+ break;
+ case MTP_OPERATION_RESET_DEVICE_PROP_VALUE:
+ response = doResetDevicePropValue();
+ break;
case MTP_OPERATION_GET_OBJECT_INFO:
response = doGetObjectInfo();
break;
@@ -360,6 +349,9 @@
}
mSessionID = mRequest.getParameter(1);
mSessionOpen = true;
+
+ mDatabase->sessionStarted();
+
return MTP_RESPONSE_OK;
}
@@ -368,6 +360,7 @@
return MTP_RESPONSE_SESSION_NOT_OPEN;
mSessionID = 0;
mSessionOpen = false;
+ mDatabase->sessionEnded();
return MTP_RESPONSE_OK;
}
@@ -456,13 +449,15 @@
if (!mSessionOpen)
return MTP_RESPONSE_SESSION_NOT_OPEN;
MtpStorageID handle = mRequest.getParameter(1);
+
+ // FIXME - check for invalid object handle
MtpObjectHandleList* handles = mDatabase->getObjectReferences(handle);
- if (!handles) {
+ if (handles) {
+ mData.putAUInt32(handles);
+ delete handles;
+ } else {
mData.putEmptyArray();
- return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
}
- mData.putAUInt32(handles);
- delete handles;
return MTP_RESPONSE_OK;
}
@@ -479,8 +474,43 @@
MtpResponseCode MtpServer::doGetObjectPropValue() {
MtpObjectHandle handle = mRequest.getParameter(1);
MtpObjectProperty property = mRequest.getParameter(2);
+ LOGD("GetObjectPropValue %d %s\n", handle,
+ MtpDebug::getObjectPropCodeName(property));
- return mDatabase->getObjectProperty(handle, property, mData);
+ return mDatabase->getObjectPropertyValue(handle, property, mData);
+}
+
+MtpResponseCode MtpServer::doSetObjectPropValue() {
+ MtpObjectHandle handle = mRequest.getParameter(1);
+ MtpObjectProperty property = mRequest.getParameter(2);
+ LOGD("SetObjectPropValue %d %s\n", handle,
+ MtpDebug::getObjectPropCodeName(property));
+
+ return mDatabase->setObjectPropertyValue(handle, property, mData);
+}
+
+MtpResponseCode MtpServer::doGetDevicePropValue() {
+ MtpDeviceProperty property = mRequest.getParameter(1);
+ LOGD("GetDevicePropValue %s\n",
+ MtpDebug::getDevicePropCodeName(property));
+
+ return mDatabase->getDevicePropertyValue(property, mData);
+}
+
+MtpResponseCode MtpServer::doSetDevicePropValue() {
+ MtpDeviceProperty property = mRequest.getParameter(1);
+ LOGD("SetDevicePropValue %s\n",
+ MtpDebug::getDevicePropCodeName(property));
+
+ return mDatabase->setDevicePropertyValue(property, mData);
+}
+
+MtpResponseCode MtpServer::doResetDevicePropValue() {
+ MtpDeviceProperty property = mRequest.getParameter(1);
+ LOGD("ResetDevicePropValue %s\n",
+ MtpDebug::getDevicePropCodeName(property));
+
+ return mDatabase->resetDeviceProperty(property);
}
MtpResponseCode MtpServer::doGetObjectInfo() {
@@ -592,7 +622,7 @@
}
mResponse.setParameter(1, storageID);
- mResponse.setParameter(2, (parent == 0 ? 0xFFFFFFFF: parent));
+ mResponse.setParameter(2, parent);
mResponse.setParameter(3, handle);
return MTP_RESPONSE_OK;
@@ -677,11 +707,24 @@
MtpResponseCode MtpServer::doGetObjectPropDesc() {
MtpObjectProperty propCode = mRequest.getParameter(1);
MtpObjectFormat format = mRequest.getParameter(2);
- MtpProperty* property = getObjectProperty(propCode);
+ LOGD("GetObjectPropDesc %s %s\n", MtpDebug::getObjectPropCodeName(propCode),
+ MtpDebug::getFormatCodeName(format));
+ MtpProperty* property = mDatabase->getObjectPropertyDesc(propCode, format);
if (!property)
return MTP_RESPONSE_OBJECT_PROP_NOT_SUPPORTED;
-
property->write(mData);
+ delete property;
+ return MTP_RESPONSE_OK;
+}
+
+MtpResponseCode MtpServer::doGetDevicePropDesc() {
+ MtpDeviceProperty propCode = mRequest.getParameter(1);
+ LOGD("GetDevicePropDesc %s\n", MtpDebug::getDevicePropCodeName(propCode));
+ MtpProperty* property = mDatabase->getDevicePropertyDesc(propCode);
+ if (!property)
+ return MTP_RESPONSE_DEVICE_PROP_NOT_SUPPORTED;
+ property->write(mData);
+ delete property;
return MTP_RESPONSE_OK;
}
diff --git a/media/mtp/MtpServer.h b/media/mtp/MtpServer.h
index 19ccf24..68a6564 100644
--- a/media/mtp/MtpServer.h
+++ b/media/mtp/MtpServer.h
@@ -28,7 +28,6 @@
namespace android {
class MtpDatabase;
-class MtpProperty;
class MtpStorage;
class MtpServer {
@@ -57,9 +56,6 @@
MtpStorageList mStorages;
- MtpPropertyList mObjectProperties;
- MtpPropertyList mDeviceProperties;
-
// handle for new object, set by SendObjectInfo and used by SendObject
MtpObjectHandle mSendObjectHandle;
MtpObjectFormat mSendObjectFormat;
@@ -76,15 +72,10 @@
MtpStorage* getStorage(MtpStorageID id);
void run();
- MtpProperty* getObjectProperty(MtpPropertyCode propCode);
- MtpProperty* getDeviceProperty(MtpPropertyCode propCode);
-
void sendObjectAdded(MtpObjectHandle handle);
void sendObjectRemoved(MtpObjectHandle handle);
private:
- void initObjectProperties();
-
bool handleRequest();
MtpResponseCode doGetDeviceInfo();
@@ -98,12 +89,17 @@
MtpResponseCode doGetObjectReferences();
MtpResponseCode doSetObjectReferences();
MtpResponseCode doGetObjectPropValue();
+ MtpResponseCode doSetObjectPropValue();
+ MtpResponseCode doGetDevicePropValue();
+ MtpResponseCode doSetDevicePropValue();
+ MtpResponseCode doResetDevicePropValue();
MtpResponseCode doGetObjectInfo();
MtpResponseCode doGetObject();
MtpResponseCode doSendObjectInfo();
MtpResponseCode doSendObject();
MtpResponseCode doDeleteObject();
MtpResponseCode doGetObjectPropDesc();
+ MtpResponseCode doGetDevicePropDesc();
};
}; // namespace android
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index ff31470..1acdaaf 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -1781,6 +1781,14 @@
if (chain != 0 && chain->setVolume_l(&vl, &vr)) {
// Do not ramp volume is volume is controlled by effect
param = AudioMixer::VOLUME;
+ track->mHasVolumeController = true;
+ } else {
+ // force no volume ramp when volume controller was just disabled or removed
+ // from effect chain to avoid volume spike
+ if (track->mHasVolumeController) {
+ param = AudioMixer::VOLUME;
+ }
+ track->mHasVolumeController = false;
}
// Convert volumes from 8.24 to 4.12 format
@@ -2901,7 +2909,8 @@
const sp<IMemory>& sharedBuffer,
int sessionId)
: TrackBase(thread, client, sampleRate, format, channelCount, frameCount, 0, sharedBuffer, sessionId),
- mMute(false), mSharedBuffer(sharedBuffer), mName(-1), mMainBuffer(NULL), mAuxBuffer(NULL), mAuxEffectId(0)
+ mMute(false), mSharedBuffer(sharedBuffer), mName(-1), mMainBuffer(NULL), mAuxBuffer(NULL),
+ mAuxEffectId(0), mHasVolumeController(false)
{
if (mCblk != NULL) {
sp<ThreadBase> baseThread = thread.promote();
@@ -5371,7 +5380,7 @@
return;
}
- if (mState == ACTIVE || mState == STOPPING || mState == STOPPED || mState == RESTART) {
+ if (isProcessEnabled()) {
// do 32 bit to 16 bit conversion for auxiliary effect input buffer
if ((mDescriptor.flags & EFFECT_FLAG_TYPE_MASK) == EFFECT_FLAG_TYPE_AUXILIARY) {
AudioMixer::ditherAndClamp(mConfig.inputCfg.buffer.s32,
@@ -5600,6 +5609,8 @@
// going from enabled to disabled
case RESTART:
+ mState = STOPPED;
+ break;
case STARTING:
mState = IDLE;
break;
@@ -5632,6 +5643,21 @@
}
}
+bool AudioFlinger::EffectModule::isProcessEnabled()
+{
+ switch (mState) {
+ case RESTART:
+ case ACTIVE:
+ case STOPPING:
+ case STOPPED:
+ return true;
+ case IDLE:
+ case STARTING:
+ default:
+ return false;
+ }
+}
+
status_t AudioFlinger::EffectModule::setVolume(uint32_t *left, uint32_t *right, bool controller)
{
Mutex::Autolock _l(mLock);
@@ -5639,7 +5665,7 @@
// Send volume indication if EFFECT_FLAG_VOLUME_IND is set and read back altered volume
// if controller flag is set (Note that controller == TRUE => EFFECT_FLAG_VOLUME_CTRL set)
- if ((mState >= ACTIVE) &&
+ if (isProcessEnabled() &&
((mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_CTRL ||
(mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_IND)) {
status_t cmdStatus;
@@ -6288,7 +6314,7 @@
// first update volume controller
for (size_t i = size; i > 0; i--) {
- if ((mEffects[i - 1]->state() >= EffectModule::ACTIVE) &&
+ if (mEffects[i - 1]->isProcessEnabled() &&
(mEffects[i - 1]->desc().flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_CTRL) {
ctrlIdx = i - 1;
hasControl = true;
@@ -6304,9 +6330,6 @@
return hasControl;
}
- if (mVolumeCtrlIdx != -1) {
- hasControl = true;
- }
mVolumeCtrlIdx = ctrlIdx;
mLeftVolume = newLeft;
mRightVolume = newRight;
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index 51881f0..5917632 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -514,6 +514,7 @@
int16_t *mMainBuffer;
int32_t *mAuxBuffer;
int mAuxEffectId;
+ bool mHasVolumeController;
}; // end of Track
@@ -965,6 +966,7 @@
}
status_t setEnabled(bool enabled);
bool isEnabled();
+ bool isProcessEnabled();
void setInBuffer(int16_t *buffer) { mConfig.inputCfg.buffer.s16 = buffer; }
int16_t *inBuffer() { return mConfig.inputCfg.buffer.s16; }
diff --git a/services/audioflinger/AudioPolicyManagerBase.cpp b/services/audioflinger/AudioPolicyManagerBase.cpp
index 4614c8d..65d9ef7 100644
--- a/services/audioflinger/AudioPolicyManagerBase.cpp
+++ b/services/audioflinger/AudioPolicyManagerBase.cpp
@@ -133,7 +133,7 @@
// request routing change if necessary
uint32_t newDevice = getNewDevice(mHardwareOutput, false);
#ifdef WITH_A2DP
- checkOutputForAllStrategies(newDevice);
+ checkOutputForAllStrategies();
// A2DP outputs must be closed after checkOutputForAllStrategies() is executed
if (state == AudioSystem::DEVICE_STATE_UNAVAILABLE && AudioSystem::isA2dpDevice(device)) {
closeA2dpOutputs();
@@ -274,7 +274,7 @@
// check for device and output changes triggered by new phone state
newDevice = getNewDevice(mHardwareOutput, false);
#ifdef WITH_A2DP
- checkOutputForAllStrategies(newDevice);
+ checkOutputForAllStrategies();
// suspend A2DP output if a SCO device is present.
if (mA2dpOutput != 0 && mScoDeviceAddress != "") {
if (oldState == AudioSystem::MODE_NORMAL) {
@@ -386,13 +386,28 @@
// check for device and output changes triggered by new phone state
uint32_t newDevice = getNewDevice(mHardwareOutput, false);
#ifdef WITH_A2DP
- checkOutputForAllStrategies(newDevice);
+ checkOutputForAllStrategies();
#endif
updateDeviceForStrategy();
setOutputDevice(mHardwareOutput, newDevice);
if (forceVolumeReeval) {
applyStreamVolumes(mHardwareOutput, newDevice);
}
+
+ audio_io_handle_t activeInput = getActiveInput();
+ if (activeInput != 0) {
+ AudioInputDescriptor *inputDesc = mInputs.valueFor(activeInput);
+ newDevice = getDeviceForInputSource(inputDesc->mInputSource);
+ if (newDevice != inputDesc->mDevice) {
+ LOGV("setForceUse() changing device from %x to %x for input %d",
+ inputDesc->mDevice, newDevice, activeInput);
+ inputDesc->mDevice = newDevice;
+ AudioParameter param = AudioParameter();
+ param.addInt(String8(AudioParameter::keyRouting), (int)newDevice);
+ mpClientInterface->setParameters(activeInput, param.toString());
+ }
+ }
+
}
AudioSystem::forced_config AudioPolicyManagerBase::getForceUse(AudioSystem::force_use usage)
@@ -1382,7 +1397,7 @@
}
}
-void AudioPolicyManagerBase::checkOutputForStrategy(routing_strategy strategy, uint32_t &newDevice)
+void AudioPolicyManagerBase::checkOutputForStrategy(routing_strategy strategy)
{
uint32_t prevDevice = getDeviceForStrategy(strategy);
uint32_t curDevice = getDeviceForStrategy(strategy, false);
@@ -1401,12 +1416,6 @@
LOGV("checkOutputForStrategy() moving strategy %d from a2dp", strategy);
srcOutput = mA2dpOutput;
}
-
- // do not change newDevice if it was already set before this call by a previous call to
- // getNewDevice() or checkOutputForStrategy() for a strategy with higher priority
- if (newDevice == 0 && mOutputs.valueFor(mHardwareOutput)->isUsedByStrategy(strategy)) {
- newDevice = getDeviceForStrategy(strategy, false);
- }
}
if (a2dpIsUsed && !a2dpWasUsed) {
bool dupUsed = a2dpUsedForSonification() && a2dpIsUsed && (AudioSystem::popCount(curDevice) == 2);
@@ -1441,15 +1450,12 @@
}
}
-void AudioPolicyManagerBase::checkOutputForAllStrategies(uint32_t &newDevice)
+void AudioPolicyManagerBase::checkOutputForAllStrategies()
{
- // Check strategies in order of priority so that once newDevice is set
- // for a given strategy it is not modified by subsequent calls to
- // checkOutputForStrategy()
- checkOutputForStrategy(STRATEGY_PHONE, newDevice);
- checkOutputForStrategy(STRATEGY_SONIFICATION, newDevice);
- checkOutputForStrategy(STRATEGY_MEDIA, newDevice);
- checkOutputForStrategy(STRATEGY_DTMF, newDevice);
+ checkOutputForStrategy(STRATEGY_PHONE);
+ checkOutputForStrategy(STRATEGY_SONIFICATION);
+ checkOutputForStrategy(STRATEGY_MEDIA);
+ checkOutputForStrategy(STRATEGY_DTMF);
}
#endif
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index c6a9909..d1fbf17 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -336,11 +336,6 @@
int callingPid = getCallingPid();
LOG1("Client::~Client E (pid %d, this %p)", callingPid, this);
- // Clean up the ANativeWindow
- if (mSurface != 0) {
- setPreviewDisplay(0);
- }
-
// set mClientPid to let disconnet() tear down the hardware
mClientPid = callingPid;
disconnect();