Merge "User id match rule should be applied when doing mix matching."
diff --git a/cmds/screenrecord/screenrecord.cpp b/cmds/screenrecord/screenrecord.cpp
index c66dea2..f4fb626 100644
--- a/cmds/screenrecord/screenrecord.cpp
+++ b/cmds/screenrecord/screenrecord.cpp
@@ -41,22 +41,24 @@
#include <utils/Timers.h>
#include <utils/Trace.h>
+#include <gui/ISurfaceComposer.h>
#include <gui/Surface.h>
#include <gui/SurfaceComposerClient.h>
#include <gui/ISurfaceComposer.h>
-#include <ui/DisplayInfo.h>
+#include <media/MediaCodecBuffer.h>
#include <media/NdkMediaCodec.h>
#include <media/NdkMediaFormatPriv.h>
#include <media/NdkMediaMuxer.h>
#include <media/openmax/OMX_IVCommon.h>
-#include <media/stagefright/foundation/ABuffer.h>
-#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/MediaCodec.h>
#include <media/stagefright/MediaCodecConstants.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/PersistentSurface.h>
+#include <media/stagefright/foundation/ABuffer.h>
+#include <media/stagefright/foundation/AMessage.h>
#include <mediadrm/ICrypto.h>
-#include <media/MediaCodecBuffer.h>
+#include <ui/DisplayConfig.h>
+#include <ui/DisplayState.h>
#include "screenrecord.h"
#include "Overlay.h"
@@ -66,7 +68,7 @@
using android::ALooper;
using android::AMessage;
using android::AString;
-using android::DisplayInfo;
+using android::DisplayConfig;
using android::FrameOutput;
using android::IBinder;
using android::IGraphicBufferProducer;
@@ -270,14 +272,15 @@
static status_t setDisplayProjection(
SurfaceComposerClient::Transaction& t,
const sp<IBinder>& dpy,
- const DisplayInfo& displayInfo) {
+ const ui::DisplayState& displayState) {
+ const ui::Size& viewport = displayState.viewport;
// Set the region of the layer stack we're interested in, which in our
// case is "all of it".
- Rect layerStackRect(displayInfo.viewportW, displayInfo.viewportH);
+ Rect layerStackRect(viewport);
// We need to preserve the aspect ratio of the display.
- float displayAspect = (float) displayInfo.viewportH / (float) displayInfo.viewportW;
+ float displayAspect = viewport.getHeight() / static_cast<float>(viewport.getWidth());
// Set the way we map the output onto the display surface (which will
@@ -336,15 +339,16 @@
* Configures the virtual display. When this completes, virtual display
* frames will start arriving from the buffer producer.
*/
-static status_t prepareVirtualDisplay(const DisplayInfo& displayInfo,
+static status_t prepareVirtualDisplay(
+ const ui::DisplayState& displayState,
const sp<IGraphicBufferProducer>& bufferProducer,
sp<IBinder>* pDisplayHandle) {
sp<IBinder> dpy = SurfaceComposerClient::createDisplay(
String8("ScreenRecorder"), false /*secure*/);
SurfaceComposerClient::Transaction t;
t.setDisplaySurface(dpy, bufferProducer);
- setDisplayProjection(t, dpy, displayInfo);
- t.setDisplayLayerStack(dpy, displayInfo.layerStack);
+ setDisplayProjection(t, dpy, displayState);
+ t.setDisplayLayerStack(dpy, displayState.layerStack);
t.apply();
*pDisplayHandle = dpy;
@@ -421,7 +425,6 @@
uint32_t debugNumFrames = 0;
int64_t startWhenNsec = systemTime(CLOCK_MONOTONIC);
int64_t endWhenNsec = startWhenNsec + seconds_to_nanoseconds(gTimeLimitSec);
- DisplayInfo displayInfo;
Vector<int64_t> timestamps;
bool firstFrame = true;
@@ -478,16 +481,16 @@
//
// Polling for changes is inefficient and wrong, but the
// useful stuff is hard to get at without a Dalvik VM.
- err = SurfaceComposerClient::getDisplayInfo(display,
- &displayInfo);
+ ui::DisplayState displayState;
+ err = SurfaceComposerClient::getDisplayState(display, &displayState);
if (err != NO_ERROR) {
- ALOGW("getDisplayInfo(main) failed: %d", err);
- } else if (orientation != displayInfo.orientation) {
- ALOGD("orientation changed, now %s", toCString(displayInfo.orientation));
+ ALOGW("getDisplayState() failed: %d", err);
+ } else if (orientation != displayState.orientation) {
+ ALOGD("orientation changed, now %s", toCString(displayState.orientation));
SurfaceComposerClient::Transaction t;
- setDisplayProjection(t, virtualDpy, displayInfo);
+ setDisplayProjection(t, virtualDpy, displayState);
t.apply();
- orientation = displayInfo.orientation;
+ orientation = displayState.orientation;
}
}
@@ -682,26 +685,34 @@
return NAME_NOT_FOUND;
}
- DisplayInfo displayInfo;
- err = SurfaceComposerClient::getDisplayInfo(display, &displayInfo);
+ ui::DisplayState displayState;
+ err = SurfaceComposerClient::getDisplayState(display, &displayState);
if (err != NO_ERROR) {
- fprintf(stderr, "ERROR: unable to get display characteristics\n");
+ fprintf(stderr, "ERROR: unable to get display state\n");
return err;
}
+ DisplayConfig displayConfig;
+ err = SurfaceComposerClient::getActiveDisplayConfig(display, &displayConfig);
+ if (err != NO_ERROR) {
+ fprintf(stderr, "ERROR: unable to get display config\n");
+ return err;
+ }
+
+ const ui::Size& viewport = displayState.viewport;
if (gVerbose) {
printf("Display is %dx%d @%.2ffps (orientation=%s), layerStack=%u\n",
- displayInfo.viewportW, displayInfo.viewportH, displayInfo.fps,
- toCString(displayInfo.orientation), displayInfo.layerStack);
+ viewport.getWidth(), viewport.getHeight(), displayConfig.refreshRate,
+ toCString(displayState.orientation), displayState.layerStack);
fflush(stdout);
}
// Encoder can't take odd number as config
if (gVideoWidth == 0) {
- gVideoWidth = floorToEven(displayInfo.viewportW);
+ gVideoWidth = floorToEven(viewport.getWidth());
}
if (gVideoHeight == 0) {
- gVideoHeight = floorToEven(displayInfo.viewportH);
+ gVideoHeight = floorToEven(viewport.getHeight());
}
// Configure and start the encoder.
@@ -709,7 +720,7 @@
sp<FrameOutput> frameOutput;
sp<IGraphicBufferProducer> encoderInputSurface;
if (gOutputFormat != FORMAT_FRAMES && gOutputFormat != FORMAT_RAW_FRAMES) {
- err = prepareEncoder(displayInfo.fps, &encoder, &encoderInputSurface);
+ err = prepareEncoder(displayConfig.refreshRate, &encoder, &encoderInputSurface);
if (err != NO_ERROR && !gSizeSpecified) {
// fallback is defined for landscape; swap if we're in portrait
@@ -722,8 +733,7 @@
gVideoWidth, gVideoHeight, newWidth, newHeight);
gVideoWidth = newWidth;
gVideoHeight = newHeight;
- err = prepareEncoder(displayInfo.fps, &encoder,
- &encoderInputSurface);
+ err = prepareEncoder(displayConfig.refreshRate, &encoder, &encoderInputSurface);
}
}
if (err != NO_ERROR) return err;
@@ -770,7 +780,7 @@
// Configure virtual display.
sp<IBinder> dpy;
- err = prepareVirtualDisplay(displayInfo, bufferProducer, &dpy);
+ err = prepareVirtualDisplay(displayState, bufferProducer, &dpy);
if (err != NO_ERROR) {
if (encoder != NULL) encoder->release();
return err;
@@ -853,8 +863,7 @@
}
} else {
// Main encoder loop.
- err = runEncoder(encoder, muxer, rawFp, display, dpy,
- displayInfo.orientation);
+ err = runEncoder(encoder, muxer, rawFp, display, dpy, displayState.orientation);
if (err != NO_ERROR) {
fprintf(stderr, "Encoder failed (err=%d)\n", err);
// fall through to cleanup
diff --git a/cmds/stagefright/codec.cpp b/cmds/stagefright/codec.cpp
index f2d1c29..c26e0b9 100644
--- a/cmds/stagefright/codec.cpp
+++ b/cmds/stagefright/codec.cpp
@@ -39,7 +39,7 @@
#include <gui/ISurfaceComposer.h>
#include <gui/SurfaceComposerClient.h>
#include <gui/Surface.h>
-#include <ui/DisplayInfo.h>
+#include <ui/DisplayConfig.h>
static void usage(const char *me) {
fprintf(stderr, "usage: %s [-a] use audio\n"
@@ -414,11 +414,12 @@
const sp<IBinder> display = SurfaceComposerClient::getInternalDisplayToken();
CHECK(display != nullptr);
- DisplayInfo info;
- CHECK_EQ(SurfaceComposerClient::getDisplayInfo(display, &info), NO_ERROR);
+ DisplayConfig config;
+ CHECK_EQ(SurfaceComposerClient::getActiveDisplayConfig(display, &config), NO_ERROR);
- ssize_t displayWidth = info.w;
- ssize_t displayHeight = info.h;
+ const ui::Size& resolution = config.resolution;
+ const ssize_t displayWidth = resolution.getWidth();
+ const ssize_t displayHeight = resolution.getHeight();
ALOGV("display is %zd x %zd\n", displayWidth, displayHeight);
diff --git a/cmds/stagefright/mediafilter.cpp b/cmds/stagefright/mediafilter.cpp
index 66302b0..b894545 100644
--- a/cmds/stagefright/mediafilter.cpp
+++ b/cmds/stagefright/mediafilter.cpp
@@ -34,7 +34,7 @@
#include <media/stagefright/NuMediaExtractor.h>
#include <media/stagefright/RenderScriptWrapper.h>
#include <OMX_IVCommon.h>
-#include <ui/DisplayInfo.h>
+#include <ui/DisplayConfig.h>
#include "RenderScript.h"
#include "ScriptC_argbtorgba.h"
@@ -751,11 +751,12 @@
const android::sp<IBinder> display = SurfaceComposerClient::getInternalDisplayToken();
CHECK(display != nullptr);
- DisplayInfo info;
- CHECK_EQ(SurfaceComposerClient::getDisplayInfo(display, &info), NO_ERROR);
+ DisplayConfig config;
+ CHECK_EQ(SurfaceComposerClient::getActiveDisplayConfig(display, &config), NO_ERROR);
- ssize_t displayWidth = info.w;
- ssize_t displayHeight = info.h;
+ const ui::Size& resolution = config.resolution;
+ const ssize_t displayWidth = resolution.getWidth();
+ const ssize_t displayHeight = resolution.getHeight();
ALOGV("display is %zd x %zd", displayWidth, displayHeight);
diff --git a/cmds/stagefright/stream.cpp b/cmds/stagefright/stream.cpp
index 5b29158..250d26b 100644
--- a/cmds/stagefright/stream.cpp
+++ b/cmds/stagefright/stream.cpp
@@ -42,7 +42,7 @@
#include <gui/Surface.h>
#include <fcntl.h>
-#include <ui/DisplayInfo.h>
+#include <ui/DisplayConfig.h>
using namespace android;
@@ -321,11 +321,12 @@
const sp<IBinder> display = SurfaceComposerClient::getInternalDisplayToken();
CHECK(display != nullptr);
- DisplayInfo info;
- CHECK_EQ(SurfaceComposerClient::getDisplayInfo(display, &info), NO_ERROR);
+ DisplayConfig config;
+ CHECK_EQ(SurfaceComposerClient::getActiveDisplayConfig(display, &config), NO_ERROR);
- ssize_t displayWidth = info.w;
- ssize_t displayHeight = info.h;
+ const ui::Size& resolution = config.resolution;
+ const ssize_t displayWidth = resolution.getWidth();
+ const ssize_t displayHeight = resolution.getHeight();
ALOGV("display is %zd x %zd\n", displayWidth, displayHeight);
diff --git a/media/codec2/hidl/1.0/utils/include/codec2/hidl/1.0/types.h b/media/codec2/hidl/1.0/utils/include/codec2/hidl/1.0/types.h
index a9928b3..f111f81 100644
--- a/media/codec2/hidl/1.0/utils/include/codec2/hidl/1.0/types.h
+++ b/media/codec2/hidl/1.0/utils/include/codec2/hidl/1.0/types.h
@@ -206,10 +206,23 @@
std::mutex mMutex;
sp<ClientManager> mSenderManager;
sp<IClientManager> mReceiverManager;
- int64_t mReceiverConnectionId;
- int64_t mSourceConnectionId;
- std::chrono::steady_clock::time_point mLastSent;
std::chrono::steady_clock::duration mRefreshInterval;
+
+ struct Connection {
+ int64_t receiverConnectionId;
+ std::chrono::steady_clock::time_point lastSent;
+ Connection(int64_t receiverConnectionId,
+ std::chrono::steady_clock::time_point lastSent)
+ : receiverConnectionId(receiverConnectionId),
+ lastSent(lastSent) {
+ }
+ };
+
+ // Map of connections.
+ //
+ // The key is the connection id. One sender-receiver pair may have multiple
+ // connections.
+ std::map<int64_t, Connection> mConnections;
};
// std::list<std::unique_ptr<C2Work>> -> WorkBundle
diff --git a/media/codec2/hidl/1.0/utils/types.cpp b/media/codec2/hidl/1.0/utils/types.cpp
index 04fa59c..c73cb52 100644
--- a/media/codec2/hidl/1.0/utils/types.cpp
+++ b/media/codec2/hidl/1.0/utils/types.cpp
@@ -969,8 +969,6 @@
const sp<IClientManager>& receiverManager,
std::chrono::steady_clock::duration refreshInterval)
: mReceiverManager(receiverManager),
- mSourceConnectionId(0),
- mLastSent(std::chrono::steady_clock::now()),
mRefreshInterval(refreshInterval) {
}
@@ -980,6 +978,7 @@
std::lock_guard<std::mutex> lock(mMutex);
if (mReceiverManager != receiverManager) {
mReceiverManager = receiverManager;
+ mConnections.clear();
}
mRefreshInterval = refreshInterval;
}
@@ -987,12 +986,16 @@
ResultStatus DefaultBufferPoolSender::send(
const std::shared_ptr<BufferPoolData>& bpData,
BufferStatusMessage* bpMessage) {
+ int64_t connectionId = bpData->mConnectionId;
+ if (connectionId == 0) {
+ LOG(WARNING) << "registerSender -- invalid sender connection id (0).";
+ return ResultStatus::CRITICAL_ERROR;
+ }
+ std::lock_guard<std::mutex> lock(mMutex);
if (!mReceiverManager) {
LOG(ERROR) << "No access to receiver's BufferPool.";
return ResultStatus::NOT_FOUND;
}
- ResultStatus rs;
- std::lock_guard<std::mutex> lock(mMutex);
if (!mSenderManager) {
mSenderManager = ClientManager::getInstance();
if (!mSenderManager) {
@@ -1000,52 +1003,61 @@
return ResultStatus::CRITICAL_ERROR;
}
}
- int64_t connectionId = bpData->mConnectionId;
+
+ int64_t receiverConnectionId{0};
+ auto foundConnection = mConnections.find(connectionId);
+ bool isNewConnection = foundConnection == mConnections.end();
std::chrono::steady_clock::time_point now =
std::chrono::steady_clock::now();
- std::chrono::steady_clock::duration interval = now - mLastSent;
- if (mSourceConnectionId == 0 ||
- mSourceConnectionId != connectionId ||
- interval > mRefreshInterval) {
+ if (isNewConnection ||
+ (now - foundConnection->second.lastSent > mRefreshInterval)) {
// Initialize the bufferpool connection.
- mSourceConnectionId = connectionId;
- if (mSourceConnectionId == 0) {
- return ResultStatus::CRITICAL_ERROR;
- }
-
- int64_t receiverConnectionId;
- rs = mSenderManager->registerSender(mReceiverManager,
- connectionId,
- &receiverConnectionId);
+ ResultStatus rs =
+ mSenderManager->registerSender(mReceiverManager,
+ connectionId,
+ &receiverConnectionId);
if ((rs != ResultStatus::OK) && (rs != ResultStatus::ALREADY_EXISTS)) {
LOG(WARNING) << "registerSender -- returned error: "
<< static_cast<int32_t>(rs)
<< ".";
return rs;
+ } else if (receiverConnectionId == 0) {
+ LOG(WARNING) << "registerSender -- "
+ "invalid receiver connection id (0).";
+ return ResultStatus::CRITICAL_ERROR;
} else {
- mReceiverConnectionId = receiverConnectionId;
+ if (isNewConnection) {
+ foundConnection = mConnections.try_emplace(
+ connectionId, receiverConnectionId, now).first;
+ } else {
+ foundConnection->second.receiverConnectionId = receiverConnectionId;
+ }
}
+ } else {
+ receiverConnectionId = foundConnection->second.receiverConnectionId;
}
uint64_t transactionId;
int64_t timestampUs;
- rs = mSenderManager->postSend(
- mReceiverConnectionId, bpData, &transactionId, ×tampUs);
+ ResultStatus rs = mSenderManager->postSend(
+ receiverConnectionId, bpData, &transactionId, ×tampUs);
if (rs != ResultStatus::OK) {
LOG(ERROR) << "ClientManager::postSend -- returned error: "
<< static_cast<int32_t>(rs)
<< ".";
+ mConnections.erase(foundConnection);
return rs;
}
if (!bpMessage) {
LOG(ERROR) << "Null output parameter for BufferStatusMessage.";
+ mConnections.erase(foundConnection);
return ResultStatus::CRITICAL_ERROR;
}
- bpMessage->connectionId = mReceiverConnectionId;
+ bpMessage->connectionId = receiverConnectionId;
bpMessage->bufferId = bpData->mId;
bpMessage->transactionId = transactionId;
bpMessage->timestampUs = timestampUs;
- mLastSent = now;
+ foundConnection->second.lastSent = now;
return rs;
}
diff --git a/media/extractors/mp4/MPEG4Extractor.cpp b/media/extractors/mp4/MPEG4Extractor.cpp
index c8079eb..ce82861 100755
--- a/media/extractors/mp4/MPEG4Extractor.cpp
+++ b/media/extractors/mp4/MPEG4Extractor.cpp
@@ -6679,6 +6679,12 @@
// The smallest valid chunk is 16 bytes long in this case.
return false;
}
+ if (chunkSize > INT64_MAX) {
+ // reject overly large chunk sizes that could
+ // be interpreted as negative
+ ALOGE("chunk size too large");
+ return false;
+ }
} else if (chunkSize < 8) {
// The smallest valid chunk is 8 bytes long.
@@ -6734,7 +6740,10 @@
case FOURCC("moov"):
{
- moovAtomEndOffset = offset + chunkSize;
+ if (__builtin_add_overflow(offset, chunkSize, &moovAtomEndOffset)) {
+ ALOGE("chunk size + offset would overflow");
+ return false;
+ }
done = true;
break;
@@ -6744,7 +6753,10 @@
break;
}
- offset += chunkSize;
+ if (__builtin_add_overflow(offset, chunkSize, &offset)) {
+ ALOGE("chunk size + offset would overflow");
+ return false;
+ }
}
if (!foundGoodFileType) {
diff --git a/media/libaaudio/examples/input_monitor/Android.bp b/media/libaaudio/examples/input_monitor/Android.bp
index 5d399b5..d8c5843 100644
--- a/media/libaaudio/examples/input_monitor/Android.bp
+++ b/media/libaaudio/examples/input_monitor/Android.bp
@@ -5,7 +5,6 @@
cflags: ["-Wall", "-Werror"],
shared_libs: ["libaaudio"],
header_libs: ["libaaudio_example_utils"],
- pack_relocations: false,
}
cc_test {
@@ -15,5 +14,4 @@
cflags: ["-Wall", "-Werror"],
shared_libs: ["libaaudio"],
header_libs: ["libaaudio_example_utils"],
- pack_relocations: false,
}
diff --git a/media/libaaudio/examples/loopback/Android.bp b/media/libaaudio/examples/loopback/Android.bp
index 53e5020..5b7d956 100644
--- a/media/libaaudio/examples/loopback/Android.bp
+++ b/media/libaaudio/examples/loopback/Android.bp
@@ -9,5 +9,4 @@
"libaudioutils",
],
header_libs: ["libaaudio_example_utils"],
- pack_relocations: false,
}
diff --git a/media/libaaudio/examples/write_sine/Android.bp b/media/libaaudio/examples/write_sine/Android.bp
index cc80861..aa25e67 100644
--- a/media/libaaudio/examples/write_sine/Android.bp
+++ b/media/libaaudio/examples/write_sine/Android.bp
@@ -4,7 +4,6 @@
cflags: ["-Wall", "-Werror"],
shared_libs: ["libaaudio"],
header_libs: ["libaaudio_example_utils"],
- pack_relocations: false,
}
cc_test {
@@ -13,5 +12,4 @@
cflags: ["-Wall", "-Werror"],
shared_libs: ["libaaudio"],
header_libs: ["libaaudio_example_utils"],
- pack_relocations: false,
}
diff --git a/media/libaudioclient/AudioTrack.cpp b/media/libaudioclient/AudioTrack.cpp
index eda9426..d5690fb 100644
--- a/media/libaudioclient/AudioTrack.cpp
+++ b/media/libaudioclient/AudioTrack.cpp
@@ -1777,7 +1777,6 @@
{
// previous and new IAudioTrack sequence numbers are used to detect track re-creation
uint32_t oldSequence = 0;
- uint32_t newSequence;
Proxy::Buffer buffer;
status_t status = NO_ERROR;
@@ -1794,7 +1793,7 @@
{ // start of lock scope
AutoMutex lock(mLock);
- newSequence = mSequence;
+ uint32_t newSequence = mSequence;
// did previous obtainBuffer() fail due to media server death or voluntary invalidation?
if (status == DEAD_OBJECT) {
// re-create track, unless someone else has already done so
@@ -1841,6 +1840,7 @@
audioBuffer->frameCount = buffer.mFrameCount;
audioBuffer->size = buffer.mFrameCount * mFrameSize;
audioBuffer->raw = buffer.mRaw;
+ audioBuffer->sequence = oldSequence;
if (nonContig != NULL) {
*nonContig = buffer.mNonContig;
}
@@ -1864,6 +1864,12 @@
buffer.mRaw = audioBuffer->raw;
AutoMutex lock(mLock);
+ if (audioBuffer->sequence != mSequence) {
+ // This Buffer came from a different IAudioTrack instance, so ignore the releaseBuffer
+ ALOGD("%s is no-op due to IAudioTrack sequence mismatch %u != %u",
+ __func__, audioBuffer->sequence, mSequence);
+ return;
+ }
mReleased += stepCount;
mInUnderrun = false;
mProxy->releaseBuffer(&buffer);
diff --git a/media/libaudioclient/IAudioPolicyService.cpp b/media/libaudioclient/IAudioPolicyService.cpp
index ce38414..cc78ec1 100644
--- a/media/libaudioclient/IAudioPolicyService.cpp
+++ b/media/libaudioclient/IAudioPolicyService.cpp
@@ -1518,7 +1518,8 @@
case SET_SUPPORTED_SYSTEM_USAGES:
case REMOVE_PREFERRED_DEVICE_FOR_PRODUCT_STRATEGY:
case GET_PREFERRED_DEVICE_FOR_PRODUCT_STRATEGY:
- case GET_DEVICES_FOR_ATTRIBUTES: {
+ case GET_DEVICES_FOR_ATTRIBUTES:
+ case SET_ALLOWED_CAPTURE_POLICY: {
if (!isServiceUid(IPCThreadState::self()->getCallingUid())) {
ALOGW("%s: transaction %d received from PID %d unauthorized UID %d",
__func__, code, IPCThreadState::self()->getCallingPid(),
diff --git a/media/libaudioclient/include/media/AudioTrack.h b/media/libaudioclient/include/media/AudioTrack.h
index 192d87f..95cad0a 100644
--- a/media/libaudioclient/include/media/AudioTrack.h
+++ b/media/libaudioclient/include/media/AudioTrack.h
@@ -107,6 +107,11 @@
int16_t* i16; // signed 16-bit
int8_t* i8; // unsigned 8-bit, offset by 0x80
}; // input to obtainBuffer(): unused, output: pointer to buffer
+
+ uint32_t sequence; // IAudioTrack instance sequence number, as of obtainBuffer().
+ // It is set by obtainBuffer() and confirmed by releaseBuffer().
+ // Not "user-serviceable".
+ // TODO Consider sp<IMemory> instead, or in addition to this.
};
/* As a convenience, if a callback is supplied, a handler thread
@@ -692,14 +697,17 @@
* frameCount number of [empty slots for] frames requested
* size ignored
* raw ignored
+ * sequence ignored
* After error return:
* frameCount 0
* size 0
* raw undefined
+ * sequence undefined
* After successful return:
* frameCount actual number of [empty slots for] frames available, <= number requested
* size actual number of bytes available
* raw pointer to the buffer
+ * sequence IAudioTrack instance sequence number, as of obtainBuffer()
*/
status_t obtainBuffer(Buffer* audioBuffer, int32_t waitCount,
size_t *nonContig = NULL);
diff --git a/media/libdatasource/FileSource.cpp b/media/libdatasource/FileSource.cpp
index bbf7dda..3d34d0c 100644
--- a/media/libdatasource/FileSource.cpp
+++ b/media/libdatasource/FileSource.cpp
@@ -107,6 +107,9 @@
Mutex::Autolock autoLock(mLock);
if (mLength >= 0) {
+ if (offset < 0) {
+ return UNKNOWN_ERROR;
+ }
if (offset >= mLength) {
return 0; // read beyond EOF.
}
diff --git a/media/libeffects/lvm/lib/Android.bp b/media/libeffects/lvm/lib/Android.bp
index d150f18..6d998d1 100644
--- a/media/libeffects/lvm/lib/Android.bp
+++ b/media/libeffects/lvm/lib/Android.bp
@@ -10,107 +10,107 @@
vendor: true,
srcs: [
- "StereoWidening/src/LVCS_BypassMix.c",
- "StereoWidening/src/LVCS_Control.c",
- "StereoWidening/src/LVCS_Equaliser.c",
- "StereoWidening/src/LVCS_Init.c",
- "StereoWidening/src/LVCS_Process.c",
- "StereoWidening/src/LVCS_ReverbGenerator.c",
- "StereoWidening/src/LVCS_StereoEnhancer.c",
- "StereoWidening/src/LVCS_Tables.c",
- "Bass/src/LVDBE_Control.c",
- "Bass/src/LVDBE_Init.c",
- "Bass/src/LVDBE_Process.c",
- "Bass/src/LVDBE_Tables.c",
- "Bundle/src/LVM_API_Specials.c",
- "Bundle/src/LVM_Buffers.c",
- "Bundle/src/LVM_Init.c",
- "Bundle/src/LVM_Process.c",
- "Bundle/src/LVM_Tables.c",
- "Bundle/src/LVM_Control.c",
- "SpectrumAnalyzer/src/LVPSA_Control.c",
- "SpectrumAnalyzer/src/LVPSA_Init.c",
- "SpectrumAnalyzer/src/LVPSA_Memory.c",
- "SpectrumAnalyzer/src/LVPSA_Process.c",
- "SpectrumAnalyzer/src/LVPSA_QPD_Init.c",
- "SpectrumAnalyzer/src/LVPSA_QPD_Process.c",
- "SpectrumAnalyzer/src/LVPSA_Tables.c",
- "Eq/src/LVEQNB_CalcCoef.c",
- "Eq/src/LVEQNB_Control.c",
- "Eq/src/LVEQNB_Init.c",
- "Eq/src/LVEQNB_Process.c",
- "Eq/src/LVEQNB_Tables.c",
- "Common/src/InstAlloc.c",
- "Common/src/DC_2I_D16_TRC_WRA_01.c",
- "Common/src/DC_2I_D16_TRC_WRA_01_Init.c",
- "Common/src/FO_2I_D16F32C15_LShx_TRC_WRA_01.c",
- "Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Init.c",
- "Common/src/FO_1I_D16F16C15_TRC_WRA_01.c",
- "Common/src/FO_1I_D16F16Css_TRC_WRA_01_Init.c",
- "Common/src/BP_1I_D16F32C30_TRC_WRA_01.c",
- "Common/src/BP_1I_D16F16C14_TRC_WRA_01.c",
- "Common/src/BP_1I_D32F32C30_TRC_WRA_02.c",
- "Common/src/BP_1I_D16F16Css_TRC_WRA_01_Init.c",
- "Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Init.c",
- "Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Init.c",
- "Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Init.c",
- "Common/src/BQ_2I_D32F32C30_TRC_WRA_01.c",
- "Common/src/BQ_2I_D16F32C15_TRC_WRA_01.c",
- "Common/src/BQ_2I_D16F32C14_TRC_WRA_01.c",
- "Common/src/BQ_2I_D16F32C13_TRC_WRA_01.c",
- "Common/src/BQ_2I_D16F32Css_TRC_WRA_01_init.c",
- "Common/src/BQ_2I_D16F16C15_TRC_WRA_01.c",
- "Common/src/BQ_2I_D16F16C14_TRC_WRA_01.c",
- "Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Init.c",
- "Common/src/BQ_1I_D16F16C15_TRC_WRA_01.c",
- "Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Init.c",
- "Common/src/BQ_1I_D16F32C14_TRC_WRA_01.c",
- "Common/src/BQ_1I_D16F32Css_TRC_WRA_01_init.c",
- "Common/src/PK_2I_D32F32C30G11_TRC_WRA_01.c",
- "Common/src/PK_2I_D32F32C14G11_TRC_WRA_01.c",
- "Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Init.c",
- "Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Init.c",
- "Common/src/Int16LShiftToInt32_16x32.c",
- "Common/src/From2iToMono_16.c",
- "Common/src/Copy_16.c",
- "Common/src/MonoTo2I_16.c",
- "Common/src/MonoTo2I_32.c",
- "Common/src/LoadConst_16.c",
- "Common/src/LoadConst_32.c",
- "Common/src/dB_to_Lin32.c",
- "Common/src/Shift_Sat_v16xv16.c",
- "Common/src/Shift_Sat_v32xv32.c",
- "Common/src/Abs_32.c",
- "Common/src/Int32RShiftToInt16_Sat_32x16.c",
- "Common/src/From2iToMono_32.c",
- "Common/src/mult3s_16x16.c",
- "Common/src/Mult3s_32x16.c",
- "Common/src/NonLinComp_D16.c",
- "Common/src/DelayMix_16x16.c",
- "Common/src/MSTo2i_Sat_16x16.c",
- "Common/src/From2iToMS_16x16.c",
- "Common/src/Mac3s_Sat_16x16.c",
- "Common/src/Mac3s_Sat_32x16.c",
- "Common/src/Add2_Sat_16x16.c",
- "Common/src/Add2_Sat_32x32.c",
- "Common/src/LVC_MixSoft_1St_2i_D16C31_SAT.c",
- "Common/src/LVC_MixSoft_1St_D16C31_SAT.c",
- "Common/src/LVC_Mixer_VarSlope_SetTimeConstant.c",
- "Common/src/LVC_Mixer_SetTimeConstant.c",
- "Common/src/LVC_Mixer_SetTarget.c",
- "Common/src/LVC_Mixer_GetTarget.c",
- "Common/src/LVC_Mixer_Init.c",
- "Common/src/LVC_Core_MixHard_1St_2i_D16C31_SAT.c",
- "Common/src/LVC_Core_MixSoft_1St_2i_D16C31_WRA.c",
- "Common/src/LVC_Core_MixInSoft_D16C31_SAT.c",
- "Common/src/LVC_Mixer_GetCurrent.c",
- "Common/src/LVC_MixSoft_2St_D16C31_SAT.c",
- "Common/src/LVC_Core_MixSoft_1St_D16C31_WRA.c",
- "Common/src/LVC_Core_MixHard_2St_D16C31_SAT.c",
- "Common/src/LVC_MixInSoft_D16C31_SAT.c",
- "Common/src/AGC_MIX_VOL_2St1Mon_D32_WRA.c",
- "Common/src/LVM_Timer.c",
- "Common/src/LVM_Timer_Init.c",
+ "StereoWidening/src/LVCS_BypassMix.cpp",
+ "StereoWidening/src/LVCS_Control.cpp",
+ "StereoWidening/src/LVCS_Equaliser.cpp",
+ "StereoWidening/src/LVCS_Init.cpp",
+ "StereoWidening/src/LVCS_Process.cpp",
+ "StereoWidening/src/LVCS_ReverbGenerator.cpp",
+ "StereoWidening/src/LVCS_StereoEnhancer.cpp",
+ "StereoWidening/src/LVCS_Tables.cpp",
+ "Bass/src/LVDBE_Control.cpp",
+ "Bass/src/LVDBE_Init.cpp",
+ "Bass/src/LVDBE_Process.cpp",
+ "Bass/src/LVDBE_Tables.cpp",
+ "Bundle/src/LVM_API_Specials.cpp",
+ "Bundle/src/LVM_Buffers.cpp",
+ "Bundle/src/LVM_Init.cpp",
+ "Bundle/src/LVM_Process.cpp",
+ "Bundle/src/LVM_Tables.cpp",
+ "Bundle/src/LVM_Control.cpp",
+ "SpectrumAnalyzer/src/LVPSA_Control.cpp",
+ "SpectrumAnalyzer/src/LVPSA_Init.cpp",
+ "SpectrumAnalyzer/src/LVPSA_Memory.cpp",
+ "SpectrumAnalyzer/src/LVPSA_Process.cpp",
+ "SpectrumAnalyzer/src/LVPSA_QPD_Init.cpp",
+ "SpectrumAnalyzer/src/LVPSA_QPD_Process.cpp",
+ "SpectrumAnalyzer/src/LVPSA_Tables.cpp",
+ "Eq/src/LVEQNB_CalcCoef.cpp",
+ "Eq/src/LVEQNB_Control.cpp",
+ "Eq/src/LVEQNB_Init.cpp",
+ "Eq/src/LVEQNB_Process.cpp",
+ "Eq/src/LVEQNB_Tables.cpp",
+ "Common/src/InstAlloc.cpp",
+ "Common/src/DC_2I_D16_TRC_WRA_01.cpp",
+ "Common/src/DC_2I_D16_TRC_WRA_01_Init.cpp",
+ "Common/src/FO_2I_D16F32C15_LShx_TRC_WRA_01.cpp",
+ "Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Init.cpp",
+ "Common/src/FO_1I_D16F16C15_TRC_WRA_01.cpp",
+ "Common/src/FO_1I_D16F16Css_TRC_WRA_01_Init.cpp",
+ "Common/src/BP_1I_D16F32C30_TRC_WRA_01.cpp",
+ "Common/src/BP_1I_D16F16C14_TRC_WRA_01.cpp",
+ "Common/src/BP_1I_D32F32C30_TRC_WRA_02.cpp",
+ "Common/src/BP_1I_D16F16Css_TRC_WRA_01_Init.cpp",
+ "Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Init.cpp",
+ "Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Init.cpp",
+ "Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Init.cpp",
+ "Common/src/BQ_2I_D32F32C30_TRC_WRA_01.cpp",
+ "Common/src/BQ_2I_D16F32C15_TRC_WRA_01.cpp",
+ "Common/src/BQ_2I_D16F32C14_TRC_WRA_01.cpp",
+ "Common/src/BQ_2I_D16F32C13_TRC_WRA_01.cpp",
+ "Common/src/BQ_2I_D16F32Css_TRC_WRA_01_init.cpp",
+ "Common/src/BQ_2I_D16F16C15_TRC_WRA_01.cpp",
+ "Common/src/BQ_2I_D16F16C14_TRC_WRA_01.cpp",
+ "Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Init.cpp",
+ "Common/src/BQ_1I_D16F16C15_TRC_WRA_01.cpp",
+ "Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Init.cpp",
+ "Common/src/BQ_1I_D16F32C14_TRC_WRA_01.cpp",
+ "Common/src/BQ_1I_D16F32Css_TRC_WRA_01_init.cpp",
+ "Common/src/PK_2I_D32F32C30G11_TRC_WRA_01.cpp",
+ "Common/src/PK_2I_D32F32C14G11_TRC_WRA_01.cpp",
+ "Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Init.cpp",
+ "Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Init.cpp",
+ "Common/src/Int16LShiftToInt32_16x32.cpp",
+ "Common/src/From2iToMono_16.cpp",
+ "Common/src/Copy_16.cpp",
+ "Common/src/MonoTo2I_16.cpp",
+ "Common/src/MonoTo2I_32.cpp",
+ "Common/src/LoadConst_16.cpp",
+ "Common/src/LoadConst_32.cpp",
+ "Common/src/dB_to_Lin32.cpp",
+ "Common/src/Shift_Sat_v16xv16.cpp",
+ "Common/src/Shift_Sat_v32xv32.cpp",
+ "Common/src/Abs_32.cpp",
+ "Common/src/Int32RShiftToInt16_Sat_32x16.cpp",
+ "Common/src/From2iToMono_32.cpp",
+ "Common/src/mult3s_16x16.cpp",
+ "Common/src/Mult3s_32x16.cpp",
+ "Common/src/NonLinComp_D16.cpp",
+ "Common/src/DelayMix_16x16.cpp",
+ "Common/src/MSTo2i_Sat_16x16.cpp",
+ "Common/src/From2iToMS_16x16.cpp",
+ "Common/src/Mac3s_Sat_16x16.cpp",
+ "Common/src/Mac3s_Sat_32x16.cpp",
+ "Common/src/Add2_Sat_16x16.cpp",
+ "Common/src/Add2_Sat_32x32.cpp",
+ "Common/src/LVC_MixSoft_1St_2i_D16C31_SAT.cpp",
+ "Common/src/LVC_MixSoft_1St_D16C31_SAT.cpp",
+ "Common/src/LVC_Mixer_VarSlope_SetTimeConstant.cpp",
+ "Common/src/LVC_Mixer_SetTimeConstant.cpp",
+ "Common/src/LVC_Mixer_SetTarget.cpp",
+ "Common/src/LVC_Mixer_GetTarget.cpp",
+ "Common/src/LVC_Mixer_Init.cpp",
+ "Common/src/LVC_Core_MixHard_1St_2i_D16C31_SAT.cpp",
+ "Common/src/LVC_Core_MixSoft_1St_2i_D16C31_WRA.cpp",
+ "Common/src/LVC_Core_MixInSoft_D16C31_SAT.cpp",
+ "Common/src/LVC_Mixer_GetCurrent.cpp",
+ "Common/src/LVC_MixSoft_2St_D16C31_SAT.cpp",
+ "Common/src/LVC_Core_MixSoft_1St_D16C31_WRA.cpp",
+ "Common/src/LVC_Core_MixHard_2St_D16C31_SAT.cpp",
+ "Common/src/LVC_MixInSoft_D16C31_SAT.cpp",
+ "Common/src/AGC_MIX_VOL_2St1Mon_D32_WRA.cpp",
+ "Common/src/LVM_Timer.cpp",
+ "Common/src/LVM_Timer_Init.cpp",
],
local_include_dirs: [
@@ -135,7 +135,7 @@
header_libs: [
"libhardware_headers"
],
- cflags: [
+ cppflags: [
"-fvisibility=hidden",
"-DBUILD_FLOAT",
"-DHIGHER_FS",
@@ -159,42 +159,42 @@
vendor: true,
srcs: [
- "Reverb/src/LVREV_ApplyNewSettings.c",
- "Reverb/src/LVREV_ClearAudioBuffers.c",
- "Reverb/src/LVREV_GetControlParameters.c",
- "Reverb/src/LVREV_GetInstanceHandle.c",
- "Reverb/src/LVREV_GetMemoryTable.c",
- "Reverb/src/LVREV_Process.c",
- "Reverb/src/LVREV_SetControlParameters.c",
- "Reverb/src/LVREV_Tables.c",
- "Common/src/Abs_32.c",
- "Common/src/InstAlloc.c",
- "Common/src/LoadConst_16.c",
- "Common/src/LoadConst_32.c",
- "Common/src/From2iToMono_32.c",
- "Common/src/Mult3s_32x16.c",
- "Common/src/FO_1I_D32F32C31_TRC_WRA_01.c",
- "Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Init.c",
- "Common/src/DelayAllPass_Sat_32x16To32.c",
- "Common/src/Copy_16.c",
- "Common/src/Mac3s_Sat_32x16.c",
- "Common/src/DelayWrite_32.c",
- "Common/src/Shift_Sat_v32xv32.c",
- "Common/src/Add2_Sat_32x32.c",
- "Common/src/JoinTo2i_32x32.c",
- "Common/src/MonoTo2I_32.c",
- "Common/src/LVM_FO_HPF.c",
- "Common/src/LVM_FO_LPF.c",
- "Common/src/LVM_Polynomial.c",
- "Common/src/LVM_Power10.c",
- "Common/src/LVM_GetOmega.c",
- "Common/src/MixSoft_2St_D32C31_SAT.c",
- "Common/src/MixSoft_1St_D32C31_WRA.c",
- "Common/src/MixInSoft_D32C31_SAT.c",
- "Common/src/LVM_Mixer_TimeConstant.c",
- "Common/src/Core_MixHard_2St_D32C31_SAT.c",
- "Common/src/Core_MixSoft_1St_D32C31_WRA.c",
- "Common/src/Core_MixInSoft_D32C31_SAT.c",
+ "Reverb/src/LVREV_ApplyNewSettings.cpp",
+ "Reverb/src/LVREV_ClearAudioBuffers.cpp",
+ "Reverb/src/LVREV_GetControlParameters.cpp",
+ "Reverb/src/LVREV_GetInstanceHandle.cpp",
+ "Reverb/src/LVREV_GetMemoryTable.cpp",
+ "Reverb/src/LVREV_Process.cpp",
+ "Reverb/src/LVREV_SetControlParameters.cpp",
+ "Reverb/src/LVREV_Tables.cpp",
+ "Common/src/Abs_32.cpp",
+ "Common/src/InstAlloc.cpp",
+ "Common/src/LoadConst_16.cpp",
+ "Common/src/LoadConst_32.cpp",
+ "Common/src/From2iToMono_32.cpp",
+ "Common/src/Mult3s_32x16.cpp",
+ "Common/src/FO_1I_D32F32C31_TRC_WRA_01.cpp",
+ "Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Init.cpp",
+ "Common/src/DelayAllPass_Sat_32x16To32.cpp",
+ "Common/src/Copy_16.cpp",
+ "Common/src/Mac3s_Sat_32x16.cpp",
+ "Common/src/DelayWrite_32.cpp",
+ "Common/src/Shift_Sat_v32xv32.cpp",
+ "Common/src/Add2_Sat_32x32.cpp",
+ "Common/src/JoinTo2i_32x32.cpp",
+ "Common/src/MonoTo2I_32.cpp",
+ "Common/src/LVM_FO_HPF.cpp",
+ "Common/src/LVM_FO_LPF.cpp",
+ "Common/src/LVM_Polynomial.cpp",
+ "Common/src/LVM_Power10.cpp",
+ "Common/src/LVM_GetOmega.cpp",
+ "Common/src/MixSoft_2St_D32C31_SAT.cpp",
+ "Common/src/MixSoft_1St_D32C31_WRA.cpp",
+ "Common/src/MixInSoft_D32C31_SAT.cpp",
+ "Common/src/LVM_Mixer_TimeConstant.cpp",
+ "Common/src/Core_MixHard_2St_D32C31_SAT.cpp",
+ "Common/src/Core_MixSoft_1St_D32C31_WRA.cpp",
+ "Common/src/Core_MixInSoft_D32C31_SAT.cpp",
],
local_include_dirs: [
@@ -206,7 +206,7 @@
"Common/lib",
],
- cflags: [
+ cppflags: [
"-fvisibility=hidden",
"-DBUILD_FLOAT",
"-DHIGHER_FS",
diff --git a/media/libeffects/lvm/lib/Bass/lib/LVDBE.h b/media/libeffects/lvm/lib/Bass/lib/LVDBE.h
index cc066b0..261a21a 100644
--- a/media/libeffects/lvm/lib/Bass/lib/LVDBE.h
+++ b/media/libeffects/lvm/lib/Bass/lib/LVDBE.h
@@ -55,9 +55,6 @@
#ifndef __LVDBE_H__
#define __LVDBE_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/****************************************************************************************/
@@ -477,8 +474,5 @@
LVM_UINT16 NumSamples);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVDBE_H__ */
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Control.c b/media/libeffects/lvm/lib/Bass/src/LVDBE_Control.cpp
similarity index 98%
rename from media/libeffects/lvm/lib/Bass/src/LVDBE_Control.c
rename to media/libeffects/lvm/lib/Bass/src/LVDBE_Control.cpp
index 0ba2c86..513c67a 100644
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Control.c
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Control.cpp
@@ -131,7 +131,7 @@
sizeof(pInstance->pData->HPFTaps)/sizeof(LVM_INT16)); /* Number of words */
#else
LoadConst_Float(0, /* Clear the history, value 0 */
- (void *)&pInstance->pData->HPFTaps, /* Destination Cast to void: \
+ (LVM_FLOAT *)&pInstance->pData->HPFTaps, /* Destination Cast to void: \
no dereferencing in function*/
sizeof(pInstance->pData->HPFTaps) / sizeof(LVM_FLOAT)); /* Number of words */
#endif
@@ -156,7 +156,7 @@
sizeof(pInstance->pData->BPFTaps)/sizeof(LVM_INT16)); /* Number of words */
#else
LoadConst_Float(0, /* Clear the history, value 0 */
- (void *)&pInstance->pData->BPFTaps, /* Destination Cast to void: \
+ (LVM_FLOAT *)&pInstance->pData->BPFTaps, /* Destination Cast to void: \
no dereferencing in function*/
sizeof(pInstance->pData->BPFTaps) / sizeof(LVM_FLOAT)); /* Number of words */
#endif
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c b/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.cpp
similarity index 97%
rename from media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c
rename to media/libeffects/lvm/lib/Bass/src/LVDBE_Init.cpp
index 2946734..a5500ba 100644
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.cpp
@@ -232,8 +232,10 @@
/*
* Set pointer to data and coef memory
*/
- pInstance->pData = pMemoryTable->Region[LVDBE_MEMREGION_PERSISTENT_DATA].pBaseAddress;
- pInstance->pCoef = pMemoryTable->Region[LVDBE_MEMREGION_PERSISTENT_COEF].pBaseAddress;
+ pInstance->pData =
+ (LVDBE_Data_FLOAT_t *)pMemoryTable->Region[LVDBE_MEMREGION_PERSISTENT_DATA].pBaseAddress;
+ pInstance->pCoef =
+ (LVDBE_Coef_FLOAT_t *)pMemoryTable->Region[LVDBE_MEMREGION_PERSISTENT_COEF].pBaseAddress;
/*
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Private.h b/media/libeffects/lvm/lib/Bass/src/LVDBE_Private.h
index 4225a30..458e9e8 100644
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Private.h
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Private.h
@@ -27,9 +27,6 @@
#ifndef __LVDBE_PRIVATE_H__
#define __LVDBE_PRIVATE_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/****************************************************************************************/
@@ -164,8 +161,5 @@
LVDBE_Params_t *pParams);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVDBE_PRIVATE_H__ */
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Process.c b/media/libeffects/lvm/lib/Bass/src/LVDBE_Process.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Bass/src/LVDBE_Process.c
rename to media/libeffects/lvm/lib/Bass/src/LVDBE_Process.cpp
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c b/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.cpp
similarity index 99%
rename from media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c
rename to media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.cpp
index a2ce404..058dcf6 100644
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.cpp
@@ -24,6 +24,7 @@
#include "LVDBE.h"
#include "LVDBE_Coeffs.h" /* Filter coefficients */
+#include "LVDBE_Tables.h"
#include "BIQUAD.h"
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.h b/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.h
index ca46e37..fea09f3 100644
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.h
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.h
@@ -24,9 +24,6 @@
#ifndef __LVBDE_TABLES_H__
#define __LVBDE_TABLES_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include "BIQUAD.h"
#include "LVM_Types.h"
@@ -128,8 +125,5 @@
extern const LVM_INT16 LVDBE_MixerTCTable[];
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVBDE_TABLES_H__ */
diff --git a/media/libeffects/lvm/lib/Bundle/lib/LVM.h b/media/libeffects/lvm/lib/Bundle/lib/LVM.h
index 5082a53..3c089a0 100644
--- a/media/libeffects/lvm/lib/Bundle/lib/LVM.h
+++ b/media/libeffects/lvm/lib/Bundle/lib/LVM.h
@@ -53,9 +53,6 @@
#ifndef __LVM_H__
#define __LVM_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/****************************************************************************************/
@@ -633,9 +630,6 @@
LVM_ControlParams_t *pParams);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVM_H__ */
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_API_Specials.c b/media/libeffects/lvm/lib/Bundle/src/LVM_API_Specials.cpp
similarity index 98%
rename from media/libeffects/lvm/lib/Bundle/src/LVM_API_Specials.c
rename to media/libeffects/lvm/lib/Bundle/src/LVM_API_Specials.cpp
index 07b7f0e..62d9ee3 100644
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_API_Specials.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_API_Specials.cpp
@@ -72,7 +72,7 @@
return LVM_SUCCESS;
}
- hPSAInstance = pInstance->hPSAInstance;
+ hPSAInstance = (pLVPSA_Handle_t *)pInstance->hPSAInstance;
if((pCurrentPeaks == LVM_NULL) ||
(pPastPeaks == LVM_NULL))
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Buffers.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Buffers.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Bundle/src/LVM_Buffers.c
rename to media/libeffects/lvm/lib/Bundle/src/LVM_Buffers.cpp
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Control.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Control.cpp
similarity index 97%
rename from media/libeffects/lvm/lib/Bundle/src/LVM_Control.c
rename to media/libeffects/lvm/lib/Bundle/src/LVM_Control.cpp
index 1b27cb4..ab1c078 100644
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Control.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Control.cpp
@@ -198,7 +198,7 @@
/*
* PSA parameters
*/
- if( (pParams->PSA_PeakDecayRate > LVPSA_SPEED_HIGH) ||
+ if (((LVPSA_LevelDetectSpeed_en)pParams->PSA_PeakDecayRate > LVPSA_SPEED_HIGH) ||
(pParams->PSA_Enable > LVM_PSA_ON))
{
return (LVM_OUTOFRANGE);
@@ -333,7 +333,7 @@
* Clear the taps
*/
LoadConst_Float((LVM_FLOAT)0, /* Value */
- (void *)&pInstance->pTE_Taps->TrebleBoost_Taps, /* Destination.\
+ (LVM_FLOAT *)&pInstance->pTE_Taps->TrebleBoost_Taps, /* Destination.\
Cast to void: no dereferencing in function */
(LVM_UINT16)(sizeof(pInstance->pTE_Taps->TrebleBoost_Taps) / \
sizeof(LVM_FLOAT))); /* Number of words */
@@ -514,7 +514,8 @@
LVM_INT16 MaxGain = 0;
- if ((pParams->EQNB_OperatingMode == LVEQNB_ON) && (pInstance->HeadroomParams.Headroom_OperatingMode == LVM_HEADROOM_ON))
+ if (((LVEQNB_Mode_en)pParams->EQNB_OperatingMode == LVEQNB_ON)
+ && (pInstance->HeadroomParams.Headroom_OperatingMode == LVM_HEADROOM_ON))
{
/* Find typical headroom value */
for(jj = 0; jj < pInstance->HeadroomParams.NHeadroomBands; jj++)
@@ -717,7 +718,7 @@
{
LVDBE_ReturnStatus_en DBE_Status;
LVDBE_Params_t DBE_Params;
- LVDBE_Handle_t *hDBEInstance = pInstance->hDBEInstance;
+ LVDBE_Handle_t *hDBEInstance = (LVDBE_Handle_t *)pInstance->hDBEInstance;
/*
@@ -770,7 +771,7 @@
{
LVEQNB_ReturnStatus_en EQNB_Status;
LVEQNB_Params_t EQNB_Params;
- LVEQNB_Handle_t *hEQNBInstance = pInstance->hEQNBInstance;
+ LVEQNB_Handle_t *hEQNBInstance = (LVEQNB_Handle_t *)pInstance->hEQNBInstance;
/*
@@ -847,7 +848,7 @@
{
LVCS_ReturnStatus_en CS_Status;
LVCS_Params_t CS_Params;
- LVCS_Handle_t *hCSInstance = pInstance->hCSInstance;
+ LVCS_Handle_t *hCSInstance = (LVCS_Handle_t *)pInstance->hCSInstance;
LVM_Mode_en CompressorMode=LVM_MODE_ON;
/*
@@ -898,8 +899,8 @@
/*
* Set the control flag
*/
- if ((LocalParams.OperatingMode == LVM_MODE_ON) &&
- (LocalParams.VirtualizerOperatingMode != LVCS_OFF))
+ if (((LVM_Mode_en)LocalParams.OperatingMode == LVM_MODE_ON) &&
+ ((LVCS_Modes_en)LocalParams.VirtualizerOperatingMode != LVCS_OFF))
{
pInstance->CS_Active = LVM_TRUE;
}
@@ -933,7 +934,7 @@
{
LVPSA_RETURN PSA_Status;
LVPSA_ControlParams_t PSA_Params;
- pLVPSA_Handle_t *hPSAInstance = pInstance->hPSAInstance;
+ pLVPSA_Handle_t *hPSAInstance = (pLVPSA_Handle_t *)pInstance->hPSAInstance;
/*
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Init.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Init.cpp
similarity index 96%
rename from media/libeffects/lvm/lib/Bundle/src/LVM_Init.c
rename to media/libeffects/lvm/lib/Bundle/src/LVM_Init.cpp
index c57498e..d773910 100644
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Init.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Init.cpp
@@ -634,7 +634,8 @@
/*
* Managed buffers required
*/
- pInstance->pBufferManagement = InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_PERSISTENT_SLOW_DATA],
+ pInstance->pBufferManagement = (LVM_Buffer_t *)
+ InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_PERSISTENT_SLOW_DATA],
sizeof(LVM_Buffer_t));
#ifdef BUILD_FLOAT
BundleScratchSize = (LVM_INT32)
@@ -644,8 +645,10 @@
#else
BundleScratchSize = (LVM_INT32)(6 * (MIN_INTERNAL_BLOCKSIZE + InternalBlockSize) * sizeof(LVM_INT16));
#endif
- pInstance->pBufferManagement->pScratch = InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_TEMPORARY_FAST], /* Scratch 1 buffer */
- (LVM_UINT32)BundleScratchSize);
+ pInstance->pBufferManagement->pScratch = (LVM_FLOAT *)
+ InstAlloc_AddMember(
+ &AllocMem[LVM_MEMREGION_TEMPORARY_FAST], /* Scratch 1 buffer */
+ (LVM_UINT32)BundleScratchSize);
#ifdef BUILD_FLOAT
LoadConst_Float(0, /* Clear the input delay buffer */
(LVM_FLOAT *)&pInstance->pBufferManagement->InDelayBuffer,
@@ -760,10 +763,12 @@
/*
* Set the default EQNB pre-gain and pointer to the band definitions
*/
- pInstance->pEQNB_BandDefs = InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_PERSISTENT_FAST_DATA],
- (pInstParams->EQNB_NumBands * sizeof(LVM_EQNB_BandDef_t)));
- pInstance->pEQNB_UserDefs = InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_PERSISTENT_FAST_DATA],
- (pInstParams->EQNB_NumBands * sizeof(LVM_EQNB_BandDef_t)));
+ pInstance->pEQNB_BandDefs =
+ (LVM_EQNB_BandDef_t *)InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_PERSISTENT_FAST_DATA],
+ (pInstParams->EQNB_NumBands * sizeof(LVM_EQNB_BandDef_t)));
+ pInstance->pEQNB_UserDefs =
+ (LVM_EQNB_BandDef_t *)InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_PERSISTENT_FAST_DATA],
+ (pInstParams->EQNB_NumBands * sizeof(LVM_EQNB_BandDef_t)));
/*
@@ -954,10 +959,12 @@
* Headroom management memory allocation
*/
{
- pInstance->pHeadroom_BandDefs = InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_PERSISTENT_FAST_DATA],
- (LVM_HEADROOM_MAX_NBANDS * sizeof(LVM_HeadroomBandDef_t)));
- pInstance->pHeadroom_UserDefs = InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_PERSISTENT_FAST_DATA],
- (LVM_HEADROOM_MAX_NBANDS * sizeof(LVM_HeadroomBandDef_t)));
+ pInstance->pHeadroom_BandDefs = (LVM_HeadroomBandDef_t *)
+ InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_PERSISTENT_FAST_DATA],
+ (LVM_HEADROOM_MAX_NBANDS * sizeof(LVM_HeadroomBandDef_t)));
+ pInstance->pHeadroom_UserDefs = (LVM_HeadroomBandDef_t *)
+ InstAlloc_AddMember(&AllocMem[LVM_MEMREGION_PERSISTENT_FAST_DATA],
+ (LVM_HEADROOM_MAX_NBANDS * sizeof(LVM_HeadroomBandDef_t)));
/* Headroom management parameters initialisation */
pInstance->NewHeadroomParams.NHeadroomBands = 2;
@@ -1022,7 +1029,7 @@
/* Fast Temporary */
#ifdef BUILD_FLOAT
- pInstance->pPSAInput = InstAlloc_AddMember(&AllocMem[LVM_TEMPORARY_FAST],
+ pInstance->pPSAInput = (LVM_FLOAT *)InstAlloc_AddMember(&AllocMem[LVM_TEMPORARY_FAST],
(LVM_UINT32) MAX_INTERNAL_BLOCKSIZE * \
sizeof(LVM_FLOAT));
#else
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Private.h b/media/libeffects/lvm/lib/Bundle/src/LVM_Private.h
index cdd3134..2bae702 100644
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Private.h
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Private.h
@@ -27,9 +27,6 @@
#ifndef __LVM_PRIVATE_H__
#define __LVM_PRIVATE_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/************************************************************************************/
@@ -344,9 +341,6 @@
void *pData,
LVM_INT16 callbackId);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVM_PRIVATE_H__ */
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Process.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Process.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Bundle/src/LVM_Process.c
rename to media/libeffects/lvm/lib/Bundle/src/LVM_Process.cpp
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Bundle/src/LVM_Tables.c
rename to media/libeffects/lvm/lib/Bundle/src/LVM_Tables.cpp
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.h b/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.h
index 4cf7119..3fd2f89 100644
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.h
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.h
@@ -18,9 +18,6 @@
#ifndef __LVM_TABLES_H__
#define __LVM_TABLES_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/************************************************************************************/
/* */
@@ -57,9 +54,6 @@
extern const LVM_INT16 LVM_MixerTCTable[];
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVM_TABLES_H__ */
diff --git a/media/libeffects/lvm/lib/Common/lib/AGC.h b/media/libeffects/lvm/lib/Common/lib/AGC.h
index 06e742e..f75d983 100644
--- a/media/libeffects/lvm/lib/Common/lib/AGC.h
+++ b/media/libeffects/lvm/lib/Common/lib/AGC.h
@@ -19,9 +19,6 @@
#define __AGC_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/**********************************************************************************/
/* */
@@ -94,9 +91,6 @@
LVM_INT32 *pDst, /* Stereo destination */
LVM_UINT16 n); /* Number of samples */
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __AGC_H__ */
diff --git a/media/libeffects/lvm/lib/Common/lib/BIQUAD.h b/media/libeffects/lvm/lib/Common/lib/BIQUAD.h
index 01539b2..2baba7c 100644
--- a/media/libeffects/lvm/lib/Common/lib/BIQUAD.h
+++ b/media/libeffects/lvm/lib/Common/lib/BIQUAD.h
@@ -19,9 +19,6 @@
#define _BIQUAD_H_
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include "LVM_Types.h"
/**********************************************************************************
@@ -604,9 +601,6 @@
LVM_INT16 *pDataOut,
LVM_INT16 NrSamples);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
/**********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/lib/CompLim.h b/media/libeffects/lvm/lib/Common/lib/CompLim.h
index 498faa3..4e7addd 100644
--- a/media/libeffects/lvm/lib/Common/lib/CompLim.h
+++ b/media/libeffects/lvm/lib/Common/lib/CompLim.h
@@ -18,9 +18,6 @@
#ifndef _COMP_LIM_H
#define _COMP_LIM_H
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/************************************************************************************/
@@ -77,9 +74,6 @@
LVM_INT16 *pSterBfOut,
LVM_INT32 BlockLength);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* #ifndef _COMP_LIM_H */
diff --git a/media/libeffects/lvm/lib/Common/lib/Filter.h b/media/libeffects/lvm/lib/Common/lib/Filter.h
index 0c8955d..3133ce2 100644
--- a/media/libeffects/lvm/lib/Common/lib/Filter.h
+++ b/media/libeffects/lvm/lib/Common/lib/Filter.h
@@ -18,9 +18,6 @@
#ifndef _FILTER_H_
#define _FILTER_H_
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/**********************************************************************************
INCLUDES
@@ -75,9 +72,6 @@
LVM_Fs_en SampleRate);
#endif
/**********************************************************************************/
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /** _FILTER_H_ **/
diff --git a/media/libeffects/lvm/lib/Common/lib/InstAlloc.h b/media/libeffects/lvm/lib/Common/lib/InstAlloc.h
index 7f725f4..10b5775 100644
--- a/media/libeffects/lvm/lib/Common/lib/InstAlloc.h
+++ b/media/libeffects/lvm/lib/Common/lib/InstAlloc.h
@@ -18,9 +18,6 @@
#ifndef __INSTALLOC_H__
#define __INSTALLOC_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include "LVM_Types.h"
/*######################################################################################*/
@@ -85,8 +82,5 @@
void InstAlloc_InitAll_NULL( INST_ALLOC *pms);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __JBS_INSTALLOC_H__ */
diff --git a/media/libeffects/lvm/lib/Common/lib/LVM_Common.h b/media/libeffects/lvm/lib/Common/lib/LVM_Common.h
index ceccd7b..96da872 100644
--- a/media/libeffects/lvm/lib/Common/lib/LVM_Common.h
+++ b/media/libeffects/lvm/lib/Common/lib/LVM_Common.h
@@ -27,9 +27,6 @@
#ifndef __LVM_COMMON_H__
#define __LVM_COMMON_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/****************************************************************************************/
@@ -53,9 +50,6 @@
#define ALGORITHM_VC_ID 0x0500
#define ALGORITHM_TE_ID 0x0600
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVM_COMMON_H__ */
diff --git a/media/libeffects/lvm/lib/Common/lib/LVM_Macros.h b/media/libeffects/lvm/lib/Common/lib/LVM_Macros.h
index 97d13a5..2ecc7f8 100644
--- a/media/libeffects/lvm/lib/Common/lib/LVM_Macros.h
+++ b/media/libeffects/lvm/lib/Common/lib/LVM_Macros.h
@@ -18,9 +18,6 @@
#ifndef _LVM_MACROS_H_
#define _LVM_MACROS_H_
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/**********************************************************************************
MUL32x32INTO32(A,B,C,ShiftR)
@@ -113,9 +110,6 @@
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* _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
index a76354d..9722bf5 100644
--- a/media/libeffects/lvm/lib/Common/lib/LVM_Timer.h
+++ b/media/libeffects/lvm/lib/Common/lib/LVM_Timer.h
@@ -34,9 +34,6 @@
/****************************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/****************************************************************************************/
/* TYPE DEFINITIONS */
@@ -83,8 +80,5 @@
/* END OF HEADER */
/****************************************************************************************/
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVM_TIMER_H__ */
diff --git a/media/libeffects/lvm/lib/Common/lib/LVM_Types.h b/media/libeffects/lvm/lib/Common/lib/LVM_Types.h
index fbfdd4d..3eae70e 100644
--- a/media/libeffects/lvm/lib/Common/lib/LVM_Types.h
+++ b/media/libeffects/lvm/lib/Common/lib/LVM_Types.h
@@ -25,9 +25,6 @@
#ifndef LVM_TYPES_H
#define LVM_TYPES_H
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include <stdint.h>
@@ -223,8 +220,5 @@
/* */
/****************************************************************************************/
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* LVM_TYPES_H */
diff --git a/media/libeffects/lvm/lib/Common/lib/Mixer.h b/media/libeffects/lvm/lib/Common/lib/Mixer.h
index 07c53cd..c63d882 100644
--- a/media/libeffects/lvm/lib/Common/lib/Mixer.h
+++ b/media/libeffects/lvm/lib/Common/lib/Mixer.h
@@ -19,9 +19,6 @@
#define __MIXER_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include "LVM_Types.h"
@@ -187,9 +184,6 @@
LVM_INT32 *dst,
LVM_INT16 n);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
/**********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/lib/ScalarArithmetic.h b/media/libeffects/lvm/lib/Common/lib/ScalarArithmetic.h
index cdb3837..a492a13 100644
--- a/media/libeffects/lvm/lib/Common/lib/ScalarArithmetic.h
+++ b/media/libeffects/lvm/lib/Common/lib/ScalarArithmetic.h
@@ -18,9 +18,6 @@
#ifndef __SCALARARITHMETIC_H__
#define __SCALARARITHMETIC_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/*######################################################################################*/
@@ -59,9 +56,6 @@
LVM_INT32 dB_to_Lin32(LVM_INT16 db_fix);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __SCALARARITHMETIC_H__ */
diff --git a/media/libeffects/lvm/lib/Common/lib/VectorArithmetic.h b/media/libeffects/lvm/lib/Common/lib/VectorArithmetic.h
index 10eedd9..ff789fd 100644
--- a/media/libeffects/lvm/lib/Common/lib/VectorArithmetic.h
+++ b/media/libeffects/lvm/lib/Common/lib/VectorArithmetic.h
@@ -19,9 +19,6 @@
#define _VECTOR_ARITHMETIC_H_
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include "LVM_Types.h"
@@ -254,9 +251,6 @@
LVM_INT16 n,
LVM_INT16 shift );
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
/**********************************************************************************/
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/AGC_MIX_VOL_2St1Mon_D32_WRA.c
rename to media/libeffects/lvm/lib/Common/src/AGC_MIX_VOL_2St1Mon_D32_WRA.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Abs_32.c b/media/libeffects/lvm/lib/Common/src/Abs_32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Abs_32.c
rename to media/libeffects/lvm/lib/Common/src/Abs_32.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Add2_Sat_16x16.c b/media/libeffects/lvm/lib/Common/src/Add2_Sat_16x16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Add2_Sat_16x16.c
rename to media/libeffects/lvm/lib/Common/src/Add2_Sat_16x16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Add2_Sat_32x32.c b/media/libeffects/lvm/lib/Common/src/Add2_Sat_32x32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Add2_Sat_32x32.c
rename to media/libeffects/lvm/lib/Common/src/Add2_Sat_32x32.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BP_1I_D16F16C14_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/BP_1I_D16F16C14_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BP_1I_D16F16Css_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/BP_1I_D16F16Css_TRC_WRA_01_Init.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BP_1I_D16F32C30_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/BP_1I_D16F32C30_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/BP_1I_D16F32Cll_TRC_WRA_01_Init.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BP_1I_D32F32C30_TRC_WRA_02.c
rename to media/libeffects/lvm/lib/Common/src/BP_1I_D32F32C30_TRC_WRA_02.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Init.c
rename to media/libeffects/lvm/lib/Common/src/BP_1I_D32F32Cll_TRC_WRA_02_Init.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16C15_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16C15_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/BQ_1I_D16F16Css_TRC_WRA_01_Init.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32C14_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32C14_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32Css_TRC_WRA_01_init.c
rename to media/libeffects/lvm/lib/Common/src/BQ_1I_D16F32Css_TRC_WRA_01_init.cpp
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.cpp
similarity index 99%
rename from media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C14_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C14_TRC_WRA_01.cpp
index 9b0fde3..8ee76c9 100644
--- 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.cpp
@@ -186,4 +186,4 @@
}
-#endif
\ No newline at end of file
+#endif
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C15_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16C15_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/BQ_2I_D16F16Css_TRC_WRA_01_Init.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C13_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C13_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C14_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C14_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C15_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32C15_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32Css_TRC_WRA_01_init.c
rename to media/libeffects/lvm/lib/Common/src/BQ_2I_D16F32Css_TRC_WRA_01_init.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32C30_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32C30_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/BQ_2I_D32F32Cll_TRC_WRA_01_Init.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Copy_16.c b/media/libeffects/lvm/lib/Common/src/Copy_16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Copy_16.c
rename to media/libeffects/lvm/lib/Common/src/Copy_16.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Core_MixHard_2St_D32C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/Core_MixHard_2St_D32C31_SAT.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Core_MixInSoft_D32C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/Core_MixInSoft_D32C31_SAT.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Core_MixSoft_1St_D32C31_WRA.c
rename to media/libeffects/lvm/lib/Common/src/Core_MixSoft_1St_D32C31_WRA.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/DC_2I_D16_TRC_WRA_01_Init.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/DelayAllPass_Sat_32x16To32.c b/media/libeffects/lvm/lib/Common/src/DelayAllPass_Sat_32x16To32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/DelayAllPass_Sat_32x16To32.c
rename to media/libeffects/lvm/lib/Common/src/DelayAllPass_Sat_32x16To32.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/DelayMix_16x16.c b/media/libeffects/lvm/lib/Common/src/DelayMix_16x16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/DelayMix_16x16.c
rename to media/libeffects/lvm/lib/Common/src/DelayMix_16x16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/DelayWrite_32.c b/media/libeffects/lvm/lib/Common/src/DelayWrite_32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/DelayWrite_32.c
rename to media/libeffects/lvm/lib/Common/src/DelayWrite_32.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/FO_1I_D16F16C15_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/FO_1I_D16F16C15_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/FO_1I_D16F16Css_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/FO_1I_D16F16Css_TRC_WRA_01_Init.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/FO_1I_D32F32C31_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/FO_1I_D32F32C31_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/FO_1I_D32F32Cll_TRC_WRA_01_Init.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/FO_2I_D16F32C15_LShx_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/FO_2I_D16F32C15_LShx_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/FO_2I_D16F32Css_LShx_TRC_WRA_01_Init.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Filters.h b/media/libeffects/lvm/lib/Common/src/Filters.h
index b1fde0c..14b7226 100644
--- a/media/libeffects/lvm/lib/Common/src/Filters.h
+++ b/media/libeffects/lvm/lib/Common/src/Filters.h
@@ -18,9 +18,6 @@
#ifndef FILTERS_H
#define FILTERS_H
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include "LVM_Types.h"
@@ -76,9 +73,6 @@
LVM_UINT16 Scale;
} BiquadA01B1CoefsSP_t;
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* FILTERS_H */
diff --git a/media/libeffects/lvm/lib/Common/src/From2iToMS_16x16.c b/media/libeffects/lvm/lib/Common/src/From2iToMS_16x16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/From2iToMS_16x16.c
rename to media/libeffects/lvm/lib/Common/src/From2iToMS_16x16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/From2iToMono_16.c b/media/libeffects/lvm/lib/Common/src/From2iToMono_16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/From2iToMono_16.c
rename to media/libeffects/lvm/lib/Common/src/From2iToMono_16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/From2iToMono_32.c b/media/libeffects/lvm/lib/Common/src/From2iToMono_32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/From2iToMono_32.c
rename to media/libeffects/lvm/lib/Common/src/From2iToMono_32.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/InstAlloc.c b/media/libeffects/lvm/lib/Common/src/InstAlloc.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/InstAlloc.c
rename to media/libeffects/lvm/lib/Common/src/InstAlloc.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Int16LShiftToInt32_16x32.c b/media/libeffects/lvm/lib/Common/src/Int16LShiftToInt32_16x32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Int16LShiftToInt32_16x32.c
rename to media/libeffects/lvm/lib/Common/src/Int16LShiftToInt32_16x32.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Int32RShiftToInt16_Sat_32x16.c b/media/libeffects/lvm/lib/Common/src/Int32RShiftToInt16_Sat_32x16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Int32RShiftToInt16_Sat_32x16.c
rename to media/libeffects/lvm/lib/Common/src/Int32RShiftToInt16_Sat_32x16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/JoinTo2i_32x32.c b/media/libeffects/lvm/lib/Common/src/JoinTo2i_32x32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/JoinTo2i_32x32.c
rename to media/libeffects/lvm/lib/Common/src/JoinTo2i_32x32.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_1St_2i_D16C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_1St_2i_D16C31_SAT.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_2St_D16C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Core_MixHard_2St_D16C31_SAT.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Core_MixInSoft_D16C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Core_MixInSoft_D16C31_SAT.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_2i_D16C31_WRA.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_2i_D16C31_WRA.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_D16C31_WRA.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Core_MixSoft_1St_D16C31_WRA.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_MixInSoft_D16C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/LVC_MixInSoft_D16C31_SAT.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_2i_D16C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_2i_D16C31_SAT.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_D16C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/LVC_MixSoft_1St_D16C31_SAT.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_MixSoft_2St_D16C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/LVC_MixSoft_2St_D16C31_SAT.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer.h b/media/libeffects/lvm/lib/Common/src/LVC_Mixer.h
index 199d529..eac9726 100644
--- a/media/libeffects/lvm/lib/Common/src/LVC_Mixer.h
+++ b/media/libeffects/lvm/lib/Common/src/LVC_Mixer.h
@@ -19,9 +19,6 @@
#define __LVC_MIXER_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include "LVM_Types.h"
@@ -242,9 +239,6 @@
LVM_INT16 *dst, /* dst can be equal to src */
LVM_INT16 n); /* Number of stereo samples */
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
/**********************************************************************************/
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetCurrent.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetCurrent.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetCurrent.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetCurrent.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetTarget.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetTarget.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetTarget.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Mixer_GetTarget.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_Init.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_Init.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Mixer_Init.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Mixer_Init.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTarget.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTarget.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTarget.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTarget.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTimeConstant.c b/media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTimeConstant.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTimeConstant.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Mixer_SetTimeConstant.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVC_Mixer_VarSlope_SetTimeConstant.c
rename to media/libeffects/lvm/lib/Common/src/LVC_Mixer_VarSlope_SetTimeConstant.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_FO_HPF.c b/media/libeffects/lvm/lib/Common/src/LVM_FO_HPF.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVM_FO_HPF.c
rename to media/libeffects/lvm/lib/Common/src/LVM_FO_HPF.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_FO_LPF.c b/media/libeffects/lvm/lib/Common/src/LVM_FO_LPF.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVM_FO_LPF.c
rename to media/libeffects/lvm/lib/Common/src/LVM_FO_LPF.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_GetOmega.c b/media/libeffects/lvm/lib/Common/src/LVM_GetOmega.cpp
similarity index 99%
rename from media/libeffects/lvm/lib/Common/src/LVM_GetOmega.c
rename to media/libeffects/lvm/lib/Common/src/LVM_GetOmega.cpp
index 6307e68..ed8e1fa 100644
--- a/media/libeffects/lvm/lib/Common/src/LVM_GetOmega.c
+++ b/media/libeffects/lvm/lib/Common/src/LVM_GetOmega.cpp
@@ -36,11 +36,11 @@
const LVM_INT32 LVVDL_2PiOnFsTable[] = {LVVDL_2PiBy_8000 , /* 8kHz in Q41, 16kHz in Q42, 32kHz in Q43 */
LVVDL_2PiBy_11025, /* 11025 Hz in Q41, 22050Hz in Q42, 44100 Hz in Q43*/
LVVDL_2PiBy_12000}; /* 12kHz in Q41, 24kHz in Q42, 48kHz in Q43 */
-#endif
const LVM_INT32 LVVDL_2PiOnFsShiftTable[]={LVVDL_2PiByFs_SHIFT1 , /* 8kHz, 11025Hz, 12kHz */
LVVDL_2PiByFs_SHIFT2, /* 16kHz, 22050Hz, 24kHz*/
LVVDL_2PiByFs_SHIFT3}; /* 32kHz, 44100Hz, 48kHz */
+#endif
#ifdef BUILD_FLOAT
#define LVVDL_2PiBy_8000_f 0.000785398f
#define LVVDL_2PiBy_11025_f 0.000569903f
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Mixer_TimeConstant.c b/media/libeffects/lvm/lib/Common/src/LVM_Mixer_TimeConstant.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVM_Mixer_TimeConstant.c
rename to media/libeffects/lvm/lib/Common/src/LVM_Mixer_TimeConstant.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Polynomial.c b/media/libeffects/lvm/lib/Common/src/LVM_Polynomial.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVM_Polynomial.c
rename to media/libeffects/lvm/lib/Common/src/LVM_Polynomial.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Power10.c b/media/libeffects/lvm/lib/Common/src/LVM_Power10.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVM_Power10.c
rename to media/libeffects/lvm/lib/Common/src/LVM_Power10.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Timer.c b/media/libeffects/lvm/lib/Common/src/LVM_Timer.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LVM_Timer.c
rename to media/libeffects/lvm/lib/Common/src/LVM_Timer.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Timer_Init.c b/media/libeffects/lvm/lib/Common/src/LVM_Timer_Init.cpp
similarity index 96%
rename from media/libeffects/lvm/lib/Common/src/LVM_Timer_Init.c
rename to media/libeffects/lvm/lib/Common/src/LVM_Timer_Init.cpp
index a935cfe..3015057 100644
--- a/media/libeffects/lvm/lib/Common/src/LVM_Timer_Init.c
+++ b/media/libeffects/lvm/lib/Common/src/LVM_Timer_Init.cpp
@@ -40,7 +40,7 @@
pInstancePr = (LVM_Timer_Instance_Private_t *)pInstance;
pInstancePr->CallBackParam = pParams->CallBackParam;
- pInstancePr->pCallBackParams = pParams->pCallBackParams;
+ pInstancePr->pCallBackParams = (LVM_INT32 *)pParams->pCallBackParams;
pInstancePr->pCallbackInstance = pParams->pCallbackInstance;
pInstancePr->pCallBack = pParams->pCallBack;
pInstancePr->TimerArmed = 1;
diff --git a/media/libeffects/lvm/lib/Common/src/LVM_Timer_Private.h b/media/libeffects/lvm/lib/Common/src/LVM_Timer_Private.h
index 480944f..0dd4272 100644
--- a/media/libeffects/lvm/lib/Common/src/LVM_Timer_Private.h
+++ b/media/libeffects/lvm/lib/Common/src/LVM_Timer_Private.h
@@ -19,9 +19,6 @@
#define LVM_TIMER_PRIVATE_H
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include "LVM_Types.h"
@@ -45,8 +42,5 @@
/* END OF HEADER */
/****************************************************************************************/
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* 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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LoadConst_16.c
rename to media/libeffects/lvm/lib/Common/src/LoadConst_16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/LoadConst_32.c b/media/libeffects/lvm/lib/Common/src/LoadConst_32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/LoadConst_32.c
rename to media/libeffects/lvm/lib/Common/src/LoadConst_32.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/MSTo2i_Sat_16x16.c b/media/libeffects/lvm/lib/Common/src/MSTo2i_Sat_16x16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/MSTo2i_Sat_16x16.c
rename to media/libeffects/lvm/lib/Common/src/MSTo2i_Sat_16x16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Mac3s_Sat_16x16.c b/media/libeffects/lvm/lib/Common/src/Mac3s_Sat_16x16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Mac3s_Sat_16x16.c
rename to media/libeffects/lvm/lib/Common/src/Mac3s_Sat_16x16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Mac3s_Sat_32x16.c b/media/libeffects/lvm/lib/Common/src/Mac3s_Sat_32x16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Mac3s_Sat_32x16.c
rename to media/libeffects/lvm/lib/Common/src/Mac3s_Sat_32x16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/MixInSoft_D32C31_SAT.c b/media/libeffects/lvm/lib/Common/src/MixInSoft_D32C31_SAT.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/MixInSoft_D32C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/MixInSoft_D32C31_SAT.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/MixSoft_1St_D32C31_WRA.c
rename to media/libeffects/lvm/lib/Common/src/MixSoft_1St_D32C31_WRA.cpp
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.cpp
similarity index 95%
rename from media/libeffects/lvm/lib/Common/src/MixSoft_2St_D32C31_SAT.c
rename to media/libeffects/lvm/lib/Common/src/MixSoft_2St_D32C31_SAT.cpp
index 6fc1b92..e6faa74 100644
--- a/media/libeffects/lvm/lib/Common/src/MixSoft_2St_D32C31_SAT.c
+++ b/media/libeffects/lvm/lib/Common/src/MixSoft_2St_D32C31_SAT.cpp
@@ -42,7 +42,7 @@
if ((pInstance->Current1 != pInstance->Target1) || (pInstance->Current2 != pInstance->Target2))
{
MixSoft_1St_D32C31_WRA((Mix_1St_Cll_FLOAT_t*)pInstance, src1, dst, n);
- MixInSoft_D32C31_SAT((void *)&pInstance->Alpha2, /* Cast to void: \
+ MixInSoft_D32C31_SAT((Mix_1St_Cll_FLOAT_t *)&pInstance->Alpha2, /* Cast to void: \
no dereferencing in function*/
src2, dst, n);
}
@@ -54,7 +54,8 @@
else
{
if (pInstance->Current1 == 0)
- MixSoft_1St_D32C31_WRA((void *) &pInstance->Alpha2, /* Cast to void: no \
+ MixSoft_1St_D32C31_WRA(
+ (Mix_1St_Cll_FLOAT_t *) &pInstance->Alpha2, /* Cast to void: no \
dereferencing in function*/
src2, dst, n);
else if (pInstance->Current2 == 0)
diff --git a/media/libeffects/lvm/lib/Common/src/MonoTo2I_16.c b/media/libeffects/lvm/lib/Common/src/MonoTo2I_16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/MonoTo2I_16.c
rename to media/libeffects/lvm/lib/Common/src/MonoTo2I_16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/MonoTo2I_32.c b/media/libeffects/lvm/lib/Common/src/MonoTo2I_32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/MonoTo2I_32.c
rename to media/libeffects/lvm/lib/Common/src/MonoTo2I_32.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Mult3s_32x16.c b/media/libeffects/lvm/lib/Common/src/Mult3s_32x16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Mult3s_32x16.c
rename to media/libeffects/lvm/lib/Common/src/Mult3s_32x16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/NonLinComp_D16.c b/media/libeffects/lvm/lib/Common/src/NonLinComp_D16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/NonLinComp_D16.c
rename to media/libeffects/lvm/lib/Common/src/NonLinComp_D16.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C14G11_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C14G11_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C30G11_TRC_WRA_01.c
rename to media/libeffects/lvm/lib/Common/src/PK_2I_D32F32C30G11_TRC_WRA_01.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CllGss_TRC_WRA_01_Init.cpp
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.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Init.c
rename to media/libeffects/lvm/lib/Common/src/PK_2I_D32F32CssGss_TRC_WRA_01_Init.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Shift_Sat_v16xv16.c b/media/libeffects/lvm/lib/Common/src/Shift_Sat_v16xv16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Shift_Sat_v16xv16.c
rename to media/libeffects/lvm/lib/Common/src/Shift_Sat_v16xv16.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/Shift_Sat_v32xv32.c b/media/libeffects/lvm/lib/Common/src/Shift_Sat_v32xv32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/Shift_Sat_v32xv32.c
rename to media/libeffects/lvm/lib/Common/src/Shift_Sat_v32xv32.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/dB_to_Lin32.c b/media/libeffects/lvm/lib/Common/src/dB_to_Lin32.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/dB_to_Lin32.c
rename to media/libeffects/lvm/lib/Common/src/dB_to_Lin32.cpp
diff --git a/media/libeffects/lvm/lib/Common/src/mult3s_16x16.c b/media/libeffects/lvm/lib/Common/src/mult3s_16x16.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Common/src/mult3s_16x16.c
rename to media/libeffects/lvm/lib/Common/src/mult3s_16x16.cpp
diff --git a/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h b/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h
index 804f1bf..7e2c3a4 100644
--- a/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h
+++ b/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h
@@ -72,9 +72,6 @@
#ifndef __LVEQNB_H__
#define __LVEQNB_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/****************************************************************************************/
@@ -492,9 +489,6 @@
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVEQNB__ */
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_CalcCoef.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_CalcCoef.cpp
similarity index 99%
rename from media/libeffects/lvm/lib/Eq/src/LVEQNB_CalcCoef.c
rename to media/libeffects/lvm/lib/Eq/src/LVEQNB_CalcCoef.cpp
index ff52b7f..482e3ba 100644
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_CalcCoef.c
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_CalcCoef.cpp
@@ -359,4 +359,4 @@
return(LVEQNB_SUCCESS);
}
-#endif
\ No newline at end of file
+#endif
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Control.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Control.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Eq/src/LVEQNB_Control.c
rename to media/libeffects/lvm/lib/Eq/src/LVEQNB_Control.cpp
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.cpp
similarity index 98%
rename from media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c
rename to media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.cpp
index de1bbb7..8e3c627 100644
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.cpp
@@ -282,9 +282,9 @@
#ifdef BUILD_FLOAT
/* Equaliser Biquad Instance */
- pInstance->pEQNB_FilterState_Float = InstAlloc_AddMember(&AllocMem,
- pCapabilities->MaxBands * \
- sizeof(Biquad_FLOAT_Instance_t));
+ pInstance->pEQNB_FilterState_Float = (Biquad_FLOAT_Instance_t *)
+ InstAlloc_AddMember(&AllocMem, pCapabilities->MaxBands * \
+ sizeof(Biquad_FLOAT_Instance_t));
#else
pInstance->pEQNB_FilterState = InstAlloc_AddMember(&AllocMem,
pCapabilities->MaxBands * sizeof(Biquad_Instance_t)); /* Equaliser Biquad Instance */
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Private.h b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Private.h
index a9cd5fd..4f70eec 100644
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Private.h
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Private.h
@@ -18,9 +18,6 @@
#ifndef __LVEQNB_PRIVATE_H__
#define __LVEQNB_PRIVATE_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/****************************************************************************************/
@@ -152,9 +149,6 @@
LVM_INT32 LVEQNB_BypassMixerCallBack (void* hInstance, void *pGeneralPurpose, LVM_INT16 CallbackParam);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVEQNB_PRIVATE_H__ */
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Process.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Process.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Eq/src/LVEQNB_Process.c
rename to media/libeffects/lvm/lib/Eq/src/LVEQNB_Process.cpp
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.cpp
similarity index 99%
rename from media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c
rename to media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.cpp
index 453c42d..d3d4ba0 100644
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.cpp
@@ -24,6 +24,7 @@
#include "LVEQNB.h"
#include "LVEQNB_Coeffs.h"
+#include "LVEQNB_Tables.h"
/************************************************************************************/
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.h b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.h
new file mode 100644
index 0000000..dc3fbb6
--- /dev/null
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.h
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+
+#ifndef __LVEQNB_TABLES_H__
+#define __LVEQNB_TABLES_H__
+
+/************************************************************************************/
+/* */
+/* Sample rate table */
+/* */
+/************************************************************************************/
+
+/*
+ * Sample rate table for converting between the enumerated type and the actual
+ * frequency
+ */
+#ifdef HIGHER_FS
+extern const LVM_UINT32 LVEQNB_SampleRateTab[];
+#else
+extern const LVM_UINT16 LVEQNB_SampleRateTab[];
+#endif
+
+/************************************************************************************/
+/* */
+/* Coefficient calculation tables */
+/* */
+/************************************************************************************/
+
+/*
+ * Table for 2 * Pi / Fs
+ */
+extern const LVM_FLOAT LVEQNB_TwoPiOnFsTable[];
+
+/*
+ * Gain table
+ */
+extern const LVM_FLOAT LVEQNB_GainTable[];
+
+/*
+ * D table for 100 / (Gain + 1)
+ */
+extern const LVM_FLOAT LVEQNB_DTable[];
+
+/************************************************************************************/
+/* */
+/* Filter polynomial coefficients */
+/* */
+/************************************************************************************/
+
+/*
+ * Coefficients for calculating the cosine with the equation:
+ *
+ * Cos(x) = (2^Shifts)*(a0 + a1*x + a2*x^2 + a3*x^3 + a4*x^4 + a5*x^5)
+ *
+ * These coefficients expect the input, x, to be in the range 0 to 32768 respresenting
+ * a range of 0 to Pi. The output is in the range 32767 to -32768 representing the range
+ * +1.0 to -1.0
+ */
+extern const LVM_INT16 LVEQNB_CosCoef[];
+
+/*
+ * Coefficients for calculating the cosine error with the equation:
+ *
+ * CosErr(x) = (2^Shifts)*(a0 + a1*x + a2*x^2 + a3*x^3)
+ *
+ * These coefficients expect the input, x, to be in the range 0 to 32768 respresenting
+ * a range of 0 to Pi/25. The output is in the range 0 to 32767 representing the range
+ * 0.0 to 0.0078852986
+ *
+ * This is used to give a double precision cosine over the range 0 to Pi/25 using the
+ * the equation:
+ *
+ * Cos(x) = 1.0 - CosErr(x)
+ */
+extern const LVM_INT16 LVEQNB_DPCosCoef[];
+
+#endif /* __LVEQNB_TABLES_H__ */
diff --git a/media/libeffects/lvm/lib/Reverb/lib/LVREV.h b/media/libeffects/lvm/lib/Reverb/lib/LVREV.h
index 9c2e297..4f052b1 100644
--- a/media/libeffects/lvm/lib/Reverb/lib/LVREV.h
+++ b/media/libeffects/lvm/lib/Reverb/lib/LVREV.h
@@ -28,9 +28,6 @@
#ifndef __LVREV_H__
#define __LVREV_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/****************************************************************************************/
@@ -315,9 +312,6 @@
const LVM_UINT16 NumSamples);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVREV_H__ */
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.cpp
similarity index 99%
rename from media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.c
rename to media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.cpp
index e710844..2c46baa 100644
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_ApplyNewSettings.cpp
@@ -638,7 +638,7 @@
FO_1I_D32F32Cll_TRC_WRA_01_Init( &pPrivate->pFastCoef->HPCoefs,
&pPrivate->pFastData->HPTaps, &Coeffs);
LoadConst_Float(0,
- (void *)&pPrivate->pFastData->HPTaps, /* Destination Cast to void: \
+ (LVM_FLOAT *)&pPrivate->pFastData->HPTaps, /* Destination Cast to void: \
no dereferencing in function*/
sizeof(Biquad_1I_Order1_FLOAT_Taps_t) / sizeof(LVM_FLOAT));
}
@@ -672,7 +672,7 @@
FO_1I_D32F32Cll_TRC_WRA_01_Init( &pPrivate->pFastCoef->LPCoefs,
&pPrivate->pFastData->LPTaps, &Coeffs);
LoadConst_Float(0,
- (void *)&pPrivate->pFastData->LPTaps, /* Destination Cast to void: \
+ (LVM_FLOAT *)&pPrivate->pFastData->LPTaps, /* Destination Cast to void: \
no dereferencing in function*/
sizeof(Biquad_1I_Order1_FLOAT_Taps_t) / sizeof(LVM_FLOAT));
}
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.cpp
similarity index 93%
rename from media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.c
rename to media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.cpp
index 9491016..0f41f09 100644
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_ClearAudioBuffers.cpp
@@ -63,13 +63,13 @@
#ifdef BUILD_FLOAT
LoadConst_Float(0,
- (void *)&pLVREV_Private->pFastData->HPTaps, /* Destination Cast to void: \
- no dereferencing in function*/
- 2);
+ (LVM_FLOAT *)&pLVREV_Private->pFastData->HPTaps, /* Destination Cast to void: \
+ no dereferencing in function*/
+ 2);
LoadConst_Float(0,
- (void *)&pLVREV_Private->pFastData->LPTaps, /* Destination Cast to void: \
- no dereferencing in function*/
- 2);
+ (LVM_FLOAT *)&pLVREV_Private->pFastData->LPTaps, /* Destination Cast to void: \
+ no dereferencing in function*/
+ 2);
#else
LoadConst_32(0,
(void *)&pLVREV_Private->pFastData->HPTaps, /* Destination Cast to void: no dereferencing in function*/
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_GetControlParameters.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_GetControlParameters.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Reverb/src/LVREV_GetControlParameters.c
rename to media/libeffects/lvm/lib/Reverb/src/LVREV_GetControlParameters.cpp
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.cpp
similarity index 89%
rename from media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.c
rename to media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.cpp
index 3366bcb..8a27371 100644
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_GetInstanceHandle.cpp
@@ -163,7 +163,9 @@
/*
* Set the data, coefficient and temporary memory pointers
*/
- pLVREV_Private->pFastData = InstAlloc_AddMember(&FastData, sizeof(LVREV_FastData_st)); /* Fast data memory base address */
+ /* Fast data memory base address */
+ pLVREV_Private->pFastData = (LVREV_FastData_st *)
+ InstAlloc_AddMember(&FastData, sizeof(LVREV_FastData_st));
#ifndef BUILD_FLOAT
if(pInstanceParams->NumDelays == LVREV_DELAYLINES_4)
{
@@ -211,19 +213,23 @@
#else
if(pInstanceParams->NumDelays == LVREV_DELAYLINES_4)
{
- pLVREV_Private->pDelay_T[3] = InstAlloc_AddMember(&FastData, LVREV_MAX_T3_DELAY * \
+ pLVREV_Private->pDelay_T[3] =
+ (LVM_FLOAT *)InstAlloc_AddMember(&FastData, LVREV_MAX_T3_DELAY * \
sizeof(LVM_FLOAT));
- pLVREV_Private->pDelay_T[2] = InstAlloc_AddMember(&FastData, LVREV_MAX_T2_DELAY * \
+ pLVREV_Private->pDelay_T[2] =
+ (LVM_FLOAT *)InstAlloc_AddMember(&FastData, LVREV_MAX_T2_DELAY * \
sizeof(LVM_FLOAT));
- pLVREV_Private->pDelay_T[1] = InstAlloc_AddMember(&FastData, LVREV_MAX_T1_DELAY * \
+ pLVREV_Private->pDelay_T[1] =
+ (LVM_FLOAT *)InstAlloc_AddMember(&FastData, LVREV_MAX_T1_DELAY * \
sizeof(LVM_FLOAT));
- pLVREV_Private->pDelay_T[0] = InstAlloc_AddMember(&FastData, LVREV_MAX_T0_DELAY * \
+ pLVREV_Private->pDelay_T[0] =
+ (LVM_FLOAT *)InstAlloc_AddMember(&FastData, LVREV_MAX_T0_DELAY * \
sizeof(LVM_FLOAT));
for(i = 0; i < 4; i++)
{
/* Scratch for each delay line output */
- pLVREV_Private->pScratchDelayLine[i] = InstAlloc_AddMember(&Temporary,
+ pLVREV_Private->pScratchDelayLine[i] = (LVM_FLOAT *)InstAlloc_AddMember(&Temporary,
sizeof(LVM_FLOAT) * \
MaxBlockSize);
}
@@ -236,15 +242,17 @@
if(pInstanceParams->NumDelays == LVREV_DELAYLINES_2)
{
- pLVREV_Private->pDelay_T[1] = InstAlloc_AddMember(&FastData, LVREV_MAX_T1_DELAY * \
+ pLVREV_Private->pDelay_T[1] = (LVM_FLOAT *)
+ InstAlloc_AddMember(&FastData, LVREV_MAX_T1_DELAY * \
sizeof(LVM_FLOAT));
- pLVREV_Private->pDelay_T[0] = InstAlloc_AddMember(&FastData, LVREV_MAX_T0_DELAY * \
+ pLVREV_Private->pDelay_T[0] = (LVM_FLOAT *)
+ InstAlloc_AddMember(&FastData, LVREV_MAX_T0_DELAY * \
sizeof(LVM_FLOAT));
for(i = 0; i < 2; i++)
{
/* Scratch for each delay line output */
- pLVREV_Private->pScratchDelayLine[i] = InstAlloc_AddMember(&Temporary,
+ pLVREV_Private->pScratchDelayLine[i] = (LVM_FLOAT *)InstAlloc_AddMember(&Temporary,
sizeof(LVM_FLOAT) * \
MaxBlockSize);
}
@@ -255,13 +263,13 @@
if(pInstanceParams->NumDelays == LVREV_DELAYLINES_1)
{
- pLVREV_Private->pDelay_T[0] = InstAlloc_AddMember(&FastData,
+ pLVREV_Private->pDelay_T[0] = (LVM_FLOAT *)InstAlloc_AddMember(&FastData,
LVREV_MAX_T0_DELAY * sizeof(LVM_FLOAT));
for(i = 0; i < 1; i++)
{
/* Scratch for each delay line output */
- pLVREV_Private->pScratchDelayLine[i] = InstAlloc_AddMember(&Temporary,
+ pLVREV_Private->pScratchDelayLine[i] = (LVM_FLOAT *)InstAlloc_AddMember(&Temporary,
sizeof(LVM_FLOAT) * \
MaxBlockSize);
}
@@ -276,18 +284,25 @@
pLVREV_Private->T[3] = LVREV_MAX_T3_DELAY;
pLVREV_Private->AB_Selection = 1; /* Select smoothing A to B */
-
- pLVREV_Private->pFastCoef = InstAlloc_AddMember(&FastCoef, sizeof(LVREV_FastCoef_st)); /* Fast coefficient memory base address */
+ /* Fast coefficient memory base address */
+ pLVREV_Private->pFastCoef =
+ (LVREV_FastCoef_st *)InstAlloc_AddMember(&FastCoef, sizeof(LVREV_FastCoef_st));
#ifndef BUILD_FLOAT
- pLVREV_Private->pScratch = InstAlloc_AddMember(&Temporary, sizeof(LVM_INT32) * MaxBlockSize); /* General purpose scratch */
- pLVREV_Private->pInputSave = InstAlloc_AddMember(&Temporary, 2 * sizeof(LVM_INT32) * MaxBlockSize); /* Mono->stereo input save for end mix */
+ /* General purpose scratch */
+ pLVREV_Private->pScratch =
+ (LVM_FLOAT *)InstAlloc_AddMember(&Temporary, sizeof(LVM_INT32) * MaxBlockSize);
+ /* Mono->stereo input save for end mix */
+ pLVREV_Private->pInputSave =
+ (LVM_FLOAT *)InstAlloc_AddMember(&Temporary, 2 * sizeof(LVM_INT32) * MaxBlockSize);
LoadConst_32(0, pLVREV_Private->pInputSave, (LVM_INT16)(MaxBlockSize*2));
#else
/* General purpose scratch */
- pLVREV_Private->pScratch = InstAlloc_AddMember(&Temporary, sizeof(LVM_FLOAT) * \
+ pLVREV_Private->pScratch =
+ (LVM_FLOAT *)InstAlloc_AddMember(&Temporary, sizeof(LVM_FLOAT) * \
MaxBlockSize);
/* Mono->stereo input save for end mix */
- pLVREV_Private->pInputSave = InstAlloc_AddMember(&Temporary, 2 * sizeof(LVM_FLOAT) * \
+ pLVREV_Private->pInputSave =
+ (LVM_FLOAT *)InstAlloc_AddMember(&Temporary, 2 * sizeof(LVM_FLOAT) * \
MaxBlockSize);
LoadConst_Float(0, pLVREV_Private->pInputSave, (LVM_INT16)(MaxBlockSize * 2));
#endif
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_GetMemoryTable.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_GetMemoryTable.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Reverb/src/LVREV_GetMemoryTable.c
rename to media/libeffects/lvm/lib/Reverb/src/LVREV_GetMemoryTable.cpp
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h b/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h
index c915ac0..3379d65 100644
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h
@@ -18,9 +18,6 @@
#ifndef __LVREV_PRIVATE_H__
#define __LVREV_PRIVATE_H__
-#ifdef __cplusplus
-extern "C" {
-#endif
/****************************************************************************************/
@@ -309,9 +306,6 @@
LVM_INT16 GeneralPurpose );
-#ifdef __cplusplus
-}
-#endif
#endif /** __LVREV_PRIVATE_H__ **/
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_Process.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_Process.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Reverb/src/LVREV_Process.c
rename to media/libeffects/lvm/lib/Reverb/src/LVREV_Process.cpp
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.c
rename to media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.cpp
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.cpp
similarity index 99%
rename from media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c
rename to media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.cpp
index 1058740..1ea10a2 100644
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.cpp
@@ -21,6 +21,7 @@
/* */
/****************************************************************************************/
#include "LVREV.h"
+#include "LVREV_Tables.h"
/****************************************************************************************/
/* */
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.h b/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.h
index 0658186..06b534c 100644
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.h
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.h
@@ -19,9 +19,6 @@
#ifndef _LVREV_TABLES_H_
#define _LVREV_TABLES_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
/****************************************************************************************/
@@ -48,10 +45,7 @@
#ifndef BUILD_FLOAT
extern LVM_INT32 LVREV_GainPolyTable[24][5];
#else
-extern LVM_FLOAT LVREV_GainPolyTable[24][5];
-#endif
-#ifdef __cplusplus
-}
+extern const LVM_FLOAT LVREV_GainPolyTable[24][5];
#endif
#endif /** _LVREV_TABLES_H_ **/
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/lib/LVPSA.h b/media/libeffects/lvm/lib/SpectrumAnalyzer/lib/LVPSA.h
index 2038fbb..1377655 100644
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/lib/LVPSA.h
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/lib/LVPSA.h
@@ -22,9 +22,6 @@
#include "LVM_Types.h"
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/****************************************************************************************/
/* */
@@ -289,8 +286,5 @@
LVPSA_InitParams_t *pParams );
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* _LVPSA_H */
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Control.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Control.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Control.c
rename to media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Control.cpp
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Init.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Init.cpp
similarity index 82%
rename from media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Init.c
rename to media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Init.cpp
index 1c26860..ff4b275 100644
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Init.c
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Init.cpp
@@ -148,21 +148,29 @@
#ifndef BUILD_FLOAT
pLVPSA_Inst->pPostGains = InstAlloc_AddMember( &Instance, pInitParams->nBands * sizeof(LVM_UINT16) );
#else
- pLVPSA_Inst->pPostGains = InstAlloc_AddMember( &Instance, pInitParams->nBands * \
- sizeof(LVM_FLOAT) );
+ pLVPSA_Inst->pPostGains =
+ (LVM_FLOAT *)InstAlloc_AddMember(&Instance, pInitParams->nBands * sizeof(LVM_FLOAT));
#endif
- pLVPSA_Inst->pFiltersParams = InstAlloc_AddMember( &Instance, pInitParams->nBands * sizeof(LVPSA_FilterParam_t) );
- pLVPSA_Inst->pSpectralDataBufferStart = InstAlloc_AddMember( &Instance, pInitParams->nBands * pLVPSA_Inst->SpectralDataBufferLength * sizeof(LVM_UINT8) );
- pLVPSA_Inst->pPreviousPeaks = InstAlloc_AddMember( &Instance, pInitParams->nBands * sizeof(LVM_UINT8) );
- pLVPSA_Inst->pBPFiltersPrecision = InstAlloc_AddMember( &Instance, pInitParams->nBands * sizeof(LVPSA_BPFilterPrecision_en) );
+ pLVPSA_Inst->pFiltersParams = (LVPSA_FilterParam_t *)
+ InstAlloc_AddMember(&Instance, pInitParams->nBands * sizeof(LVPSA_FilterParam_t));
+ pLVPSA_Inst->pSpectralDataBufferStart = (LVM_UINT8 *)
+ InstAlloc_AddMember(&Instance, pInitParams->nBands * \
+ pLVPSA_Inst->SpectralDataBufferLength * sizeof(LVM_UINT8));
+ pLVPSA_Inst->pPreviousPeaks = (LVM_UINT8 *)
+ InstAlloc_AddMember(&Instance, pInitParams->nBands * sizeof(LVM_UINT8));
+ pLVPSA_Inst->pBPFiltersPrecision = (LVPSA_BPFilterPrecision_en *)
+ InstAlloc_AddMember(&Instance, pInitParams->nBands * \
+ sizeof(LVPSA_BPFilterPrecision_en));
#ifndef BUILD_FLOAT
pLVPSA_Inst->pBP_Instances = InstAlloc_AddMember( &Coef, pInitParams->nBands * sizeof(Biquad_Instance_t) );
pLVPSA_Inst->pQPD_States = InstAlloc_AddMember( &Coef, pInitParams->nBands * sizeof(QPD_State_t) );
#else
- pLVPSA_Inst->pBP_Instances = InstAlloc_AddMember( &Coef, pInitParams->nBands * \
- sizeof(Biquad_FLOAT_Instance_t) );
- pLVPSA_Inst->pQPD_States = InstAlloc_AddMember( &Coef, pInitParams->nBands * \
- sizeof(QPD_FLOAT_State_t) );
+ pLVPSA_Inst->pBP_Instances = (Biquad_FLOAT_Instance_t *)
+ InstAlloc_AddMember(&Coef, pInitParams->nBands * \
+ sizeof(Biquad_FLOAT_Instance_t));
+ pLVPSA_Inst->pQPD_States = (QPD_FLOAT_State_t *)
+ InstAlloc_AddMember(&Coef, pInitParams->nBands * \
+ sizeof(QPD_FLOAT_State_t));
#endif
#ifndef BUILD_FLOAT
@@ -170,11 +178,12 @@
pLVPSA_Inst->pQPD_Taps = InstAlloc_AddMember( &Data, pInitParams->nBands * sizeof(QPD_Taps_t) );
#else
- pLVPSA_Inst->pBP_Taps = InstAlloc_AddMember( &Data,
- pInitParams->nBands * \
- sizeof(Biquad_1I_Order2_FLOAT_Taps_t));
- pLVPSA_Inst->pQPD_Taps = InstAlloc_AddMember( &Data, pInitParams->nBands * \
- sizeof(QPD_FLOAT_Taps_t) );
+ pLVPSA_Inst->pBP_Taps = (Biquad_1I_Order2_FLOAT_Taps_t *)
+ InstAlloc_AddMember(&Data, pInitParams->nBands * \
+ sizeof(Biquad_1I_Order2_FLOAT_Taps_t));
+ pLVPSA_Inst->pQPD_Taps = (QPD_FLOAT_Taps_t *)
+ InstAlloc_AddMember(&Data, pInitParams->nBands * \
+ sizeof(QPD_FLOAT_Taps_t));
#endif
/* Copy filters parameters in the private instance */
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Memory.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Memory.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Memory.c
rename to media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Memory.cpp
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h
index ee07e2e..bce23c9 100644
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h
@@ -25,9 +25,6 @@
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/**********************************************************************************
CONSTANT DEFINITIONS
@@ -162,8 +159,5 @@
/************************************************************************************/
LVPSA_RETURN LVPSA_ApplyNewSettings (LVPSA_InstancePr_t *pInst);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* _LVPSA_PRIVATE_H */
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Process.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Process.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Process.c
rename to media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Process.cpp
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD.h b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD.h
index 99d844b..552703b 100644
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD.h
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD.h
@@ -21,9 +21,6 @@
#include "LVM_Types.h"
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
typedef struct
{
@@ -119,9 +116,6 @@
QPD_FLOAT_Taps_t *pTaps,
QPD_FLOAT_Coefs *pCoef );
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Init.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Init.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Init.c
rename to media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Init.cpp
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Process.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Process.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Process.c
rename to media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_QPD_Process.cpp
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.cpp
similarity index 89%
rename from media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c
rename to media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.cpp
index f8af496..045a502 100644
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.cpp
@@ -24,6 +24,7 @@
#include "LVPSA.h"
#include "LVPSA_QPD.h"
+#include "LVPSA_Tables.h"
/************************************************************************************/
/* */
/* Sample rate table */
@@ -318,36 +319,38 @@
/* */
/************************************************************************************/
const QPD_C32_Coefs LVPSA_QPD_Coefs[] = {
+ /* 8kS/s */ /* LVPSA_SPEED_LOW */
+ {(LVM_INT32)0x80CEFD2B,0x00CB9B17},
+ {(LVM_INT32)0x80D242E7,0x00CED11D},
+ {(LVM_INT32)0x80DCBAF5,0x00D91679},
+ {(LVM_INT32)0x80CEFD2B,0x00CB9B17},
+ {(LVM_INT32)0x80E13739,0x00DD7CD3},
+ {(LVM_INT32)0x80DCBAF5,0x00D91679},
+ {(LVM_INT32)0x80D94BAF,0x00D5B7E7},
+ {(LVM_INT32)0x80E13739,0x00DD7CD3},
+ {(LVM_INT32)0x80DCBAF5,0x00D91679}, /* 48kS/s */
- {0x80CEFD2B,0x00CB9B17}, /* 8kS/s */ /* LVPSA_SPEED_LOW */
- {0x80D242E7,0x00CED11D},
- {0x80DCBAF5,0x00D91679},
- {0x80CEFD2B,0x00CB9B17},
- {0x80E13739,0x00DD7CD3},
- {0x80DCBAF5,0x00D91679},
- {0x80D94BAF,0x00D5B7E7},
- {0x80E13739,0x00DD7CD3},
- {0x80DCBAF5,0x00D91679}, /* 48kS/s */
+ /* 8kS/s */ /* LVPSA_SPEED_MEDIUM */
+ {(LVM_INT32)0x8587513D,0x055C22CF},
+ {(LVM_INT32)0x859D2967,0x0570F007},
+ {(LVM_INT32)0x85E2EFAC,0x05B34D79},
+ {(LVM_INT32)0x8587513D,0x055C22CF},
+ {(LVM_INT32)0x8600C7B9,0x05CFA6CF},
+ {(LVM_INT32)0x85E2EFAC,0x05B34D79},
+ {(LVM_INT32)0x85CC1018,0x059D8F69},
+ {(LVM_INT32)0x8600C7B9,0x05CFA6CF},
+ {(LVM_INT32)0x85E2EFAC,0x05B34D79}, /* 48kS/s */
- {0x8587513D,0x055C22CF}, /* 8kS/s */ /* LVPSA_SPEED_MEDIUM */
- {0x859D2967,0x0570F007},
- {0x85E2EFAC,0x05B34D79},
- {0x8587513D,0x055C22CF},
- {0x8600C7B9,0x05CFA6CF},
- {0x85E2EFAC,0x05B34D79},
- {0x85CC1018,0x059D8F69},
- {0x8600C7B9,0x05CFA6CF},//{0x8600C7B9,0x05CFA6CF},
- {0x85E2EFAC,0x05B34D79}, /* 48kS/s */
-
- {0xA115EA7A,0x1CDB3F5C}, /* 8kS/s */ /* LVPSA_SPEED_HIGH */
- {0xA18475F0,0x1D2C83A2},
- {0xA2E1E950,0x1E2A532E},
- {0xA115EA7A,0x1CDB3F5C},
- {0xA375B2C6,0x1E943BBC},
- {0xA2E1E950,0x1E2A532E},
- {0xA26FF6BD,0x1DD81530},
- {0xA375B2C6,0x1E943BBC},
- {0xA2E1E950,0x1E2A532E}}; /* 48kS/s */
+ /* 8kS/s */ /* LVPSA_SPEED_HIGH */
+ {(LVM_INT32)0xA115EA7A,0x1CDB3F5C},
+ {(LVM_INT32)0xA18475F0,0x1D2C83A2},
+ {(LVM_INT32)0xA2E1E950,0x1E2A532E},
+ {(LVM_INT32)0xA115EA7A,0x1CDB3F5C},
+ {(LVM_INT32)0xA375B2C6,0x1E943BBC},
+ {(LVM_INT32)0xA2E1E950,0x1E2A532E},
+ {(LVM_INT32)0xA26FF6BD,0x1DD81530},
+ {(LVM_INT32)0xA375B2C6,0x1E943BBC},
+ {(LVM_INT32)0xA2E1E950,0x1E2A532E}}; /* 48kS/s */
#ifdef BUILD_FLOAT
const QPD_FLOAT_Coefs LVPSA_QPD_Float_Coefs[] = {
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.h b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.h
new file mode 100644
index 0000000..caaf3ba
--- /dev/null
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.h
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+
+#ifndef __LVPSA_TABLES_H__
+#define __LVPSA_TABLES_H__
+
+/************************************************************************************/
+/* */
+/* Sample rate table */
+/* */
+/************************************************************************************/
+
+/*
+ * Sample rate table for converting between the enumerated type and the actual
+ * frequency
+ */
+#ifndef HIGHER_FS
+extern const LVM_UINT16 LVPSA_SampleRateTab[];
+#else
+extern const LVM_UINT32 LVPSA_SampleRateTab[];
+#endif
+
+/************************************************************************************/
+/* */
+/* Sample rate inverse table */
+/* */
+/************************************************************************************/
+
+/*
+ * Sample rate table for converting between the enumerated type and the actual
+ * frequency
+ */
+extern const LVM_UINT32 LVPSA_SampleRateInvTab[];
+
+/************************************************************************************/
+/* */
+/* Number of samples in 20ms */
+/* */
+/************************************************************************************/
+
+/*
+ * Table for converting between the enumerated type and the number of samples
+ * during 20ms
+ */
+extern const LVM_UINT16 LVPSA_nSamplesBufferUpdate[];
+
+/************************************************************************************/
+/* */
+/* Down sampling factors */
+/* */
+/************************************************************************************/
+
+/*
+ * Table for converting between the enumerated type and the down sampling factor
+ */
+extern const LVM_UINT16 LVPSA_DownSamplingFactor[];
+
+/************************************************************************************/
+/* */
+/* Coefficient calculation tables */
+/* */
+/************************************************************************************/
+
+/*
+ * Table for 2 * Pi / Fs
+ */
+extern const LVM_INT16 LVPSA_TwoPiOnFsTable[];
+extern const LVM_FLOAT LVPSA_Float_TwoPiOnFsTable[];
+
+/*
+ * Gain table
+ */
+extern const LVM_INT16 LVPSA_GainTable[];
+extern const LVM_FLOAT LVPSA_Float_GainTable[];
+
+/************************************************************************************/
+/* */
+/* Cosone polynomial coefficients */
+/* */
+/************************************************************************************/
+
+/*
+ * Coefficients for calculating the cosine with the equation:
+ *
+ * Cos(x) = (2^Shifts)*(a0 + a1*x + a2*x^2 + a3*x^3 + a4*x^4 + a5*x^5)
+ *
+ * These coefficients expect the input, x, to be in the range 0 to 32768 respresenting
+ * a range of 0 to Pi. The output is in the range 32767 to -32768 representing the range
+ * +1.0 to -1.0
+ */
+extern const LVM_INT16 LVPSA_CosCoef[];
+extern const LVM_FLOAT LVPSA_Float_CosCoef[];
+
+/*
+ * Coefficients for calculating the cosine error with the equation:
+ *
+ * CosErr(x) = (2^Shifts)*(a0 + a1*x + a2*x^2 + a3*x^3)
+ *
+ * These coefficients expect the input, x, to be in the range 0 to 32768 respresenting
+ * a range of 0 to Pi/25. The output is in the range 0 to 32767 representing the range
+ * 0.0 to 0.0078852986
+ *
+ * This is used to give a double precision cosine over the range 0 to Pi/25 using the
+ * the equation:
+ *
+ * Cos(x) = 1.0 - CosErr(x)
+ */
+extern const LVM_INT16 LVPSA_DPCosCoef[];
+extern const LVM_FLOAT LVPSA_Float_DPCosCoef[];
+
+/************************************************************************************/
+/* */
+/* Quasi peak filter coefficients table */
+/* */
+/************************************************************************************/
+extern const QPD_C32_Coefs LVPSA_QPD_Coefs[];
+extern const QPD_FLOAT_Coefs LVPSA_QPD_Float_Coefs[];
+
+#endif /* __LVPSA_TABLES_H__ */
diff --git a/media/libeffects/lvm/lib/StereoWidening/lib/LVCS.h b/media/libeffects/lvm/lib/StereoWidening/lib/LVCS.h
index e507a7c..174c86a 100644
--- a/media/libeffects/lvm/lib/StereoWidening/lib/LVCS.h
+++ b/media/libeffects/lvm/lib/StereoWidening/lib/LVCS.h
@@ -56,9 +56,6 @@
#ifndef LVCS_H
#define LVCS_H
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/****************************************************************************************/
@@ -389,8 +386,5 @@
LVM_UINT16 NumSamples);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* LVCS_H */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.c
rename to media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.cpp
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.h
index f69ba38..6ec2ac5 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.h
@@ -18,9 +18,6 @@
#ifndef __LVCS_BYPASSMIX_H__
#define __LVCS_BYPASSMIX_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/************************************************************************************/
@@ -91,8 +88,5 @@
LVM_FLOAT *pOutData,
LVM_UINT16 NumSamples);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* BYPASSMIX_H */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.c
rename to media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.cpp
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.cpp
similarity index 98%
rename from media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c
rename to media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.cpp
index ec5312e..cd53a11 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.cpp
@@ -92,7 +92,7 @@
Coeffs.B2 = (LVM_FLOAT)-pEqualiserCoefTable[Offset].B2;
LoadConst_Float((LVM_INT16)0, /* Value */
- (void *)&pData->EqualiserBiquadTaps, /* Destination Cast to void:\
+ (LVM_FLOAT *)&pData->EqualiserBiquadTaps, /* Destination Cast to void:\
no dereferencing in function*/
/* Number of words */
(LVM_UINT16)(sizeof(pData->EqualiserBiquadTaps) / sizeof(LVM_FLOAT)));
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.h
index 0e756e7..55c4815 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.h
@@ -18,9 +18,6 @@
#ifndef __LVCS_EQUALISER_H__
#define __LVCS_EQUALISER_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/************************************************************************************/
@@ -57,8 +54,5 @@
LVM_FLOAT *pInputOutput,
LVM_UINT16 NumSamples);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* EQUALISER_H */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.c
rename to media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.cpp
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h
index c8df8e4..513758d 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h
@@ -27,9 +27,6 @@
#ifndef __LVCS_PRIVATE_H__
#define __LVCS_PRIVATE_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/************************************************************************************/
@@ -193,9 +190,6 @@
LVM_INT32 CallbackParam);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* PRIVATE_H */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Process.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Process.cpp
similarity index 100%
rename from media/libeffects/lvm/lib/StereoWidening/src/LVCS_Process.c
rename to media/libeffects/lvm/lib/StereoWidening/src/LVCS_Process.cpp
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.cpp
similarity index 98%
rename from media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c
rename to media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.cpp
index 1085101..fbdf57b 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.cpp
@@ -112,7 +112,7 @@
Coeffs.B2 = (LVM_FLOAT)-pReverbCoefTable[Offset].B2;
LoadConst_Float(0, /* Value */
- (void *)&pData->ReverbBiquadTaps, /* Destination Cast to void:
+ (LVM_FLOAT *)&pData->ReverbBiquadTaps, /* Destination Cast to void:
no dereferencing in function*/
/* Number of words */
(LVM_UINT16)(sizeof(pData->ReverbBiquadTaps) / sizeof(LVM_FLOAT)));
@@ -306,7 +306,7 @@
* Check if the reverb is required
*/
/* Disable when CS4MS in stereo mode */
- if (((pInstance->Params.SpeakerType == LVCS_HEADPHONE) || \
+ if ((((LVCS_OutputDevice_en)pInstance->Params.SpeakerType == LVCS_HEADPHONE) || \
(pInstance->Params.SpeakerType == LVCS_EX_HEADPHONES) ||
(pInstance->Params.SourceFormat != LVCS_STEREO)) &&
/* For validation testing */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.h
index f94d4e4..c1c0207 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.h
@@ -18,9 +18,6 @@
#ifndef __LVCS_REVERBGENERATOR_H__
#define __LVCS_REVERBGENERATOR_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/************************************************************************************/
@@ -94,8 +91,5 @@
LVM_INT16 *pOutput,
LVM_UINT16 NumSamples);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* REVERB_H */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.cpp
similarity index 98%
rename from media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c
rename to media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.cpp
index 2992c35..f73fc28 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.cpp
@@ -89,7 +89,7 @@
/* Clear the taps */
LoadConst_Float(0, /* Value */
- (void *)&pData->SEBiquadTapsMid, /* Destination Cast to void:\
+ (LVM_FLOAT *)&pData->SEBiquadTapsMid, /* Destination Cast to void:\
no dereferencing in function*/
/* Number of words */
(LVM_UINT16)(sizeof(pData->SEBiquadTapsMid) / sizeof(LVM_FLOAT)));
@@ -117,7 +117,7 @@
/* Clear the taps */
LoadConst_Float(0, /* Value */
- (void *)&pData->SEBiquadTapsSide, /* Destination Cast to void:\
+ (LVM_FLOAT *)&pData->SEBiquadTapsSide, /* Destination Cast to void:\
no dereferencing in function*/
/* Number of words */
(LVM_UINT16)(sizeof(pData->SEBiquadTapsSide) / sizeof(LVM_FLOAT)));
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.h
index 4125f24..79ebb67 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.h
@@ -18,9 +18,6 @@
#ifndef __LVCS_STEREOENHANCER_H__
#define __LVCS_STEREOENHANCER_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/************************************************************************************/
@@ -91,8 +88,5 @@
LVM_FLOAT *pOutData,
LVM_UINT16 NumSamples);
#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* STEREOENHANCE_H */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.cpp
similarity index 99%
rename from media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c
rename to media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.cpp
index a1fb48f..1964c8c 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.cpp
@@ -23,6 +23,7 @@
/************************************************************************************/
#include "LVCS_Private.h"
+#include "LVCS_Tables.h"
#include "Filters.h" /* Filter definitions */
#include "BIQUAD.h" /* Biquad definitions */
#include "LVCS_Headphone_Coeffs.h" /* Headphone coefficients */
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.h
index 3f6c4c8..8609ad6 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.h
@@ -18,9 +18,6 @@
#ifndef __LVCS_TABLES_H__
#define __LVCS_TABLES_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
/************************************************************************************/
/* */
@@ -111,7 +108,7 @@
/* */
/************************************************************************************/
-extern LVM_INT32 LVCS_SampleRateTable[];
+extern const LVM_INT32 LVCS_SampleRateTable[];
/*Speaker coeffient tables*/
@@ -144,9 +141,6 @@
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
#endif /* __LVCS_TABLES_H__ */
diff --git a/media/libeffects/lvm/wrapper/Android.bp b/media/libeffects/lvm/wrapper/Android.bp
index 16fa126..5fb6d12 100644
--- a/media/libeffects/lvm/wrapper/Android.bp
+++ b/media/libeffects/lvm/wrapper/Android.bp
@@ -14,7 +14,7 @@
vendor: true,
srcs: ["Bundle/EffectBundle.cpp"],
- cflags: [
+ cppflags: [
"-fvisibility=hidden",
"-DBUILD_FLOAT",
"-DHIGHER_FS",
@@ -56,7 +56,7 @@
vendor: true,
srcs: ["Reverb/EffectReverb.cpp"],
- cflags: [
+ cppflags: [
"-fvisibility=hidden",
"-DBUILD_FLOAT",
"-DHIGHER_FS",
diff --git a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.h b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.h
index e4aacd0..d8e2ec6 100644
--- a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.h
+++ b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.h
@@ -23,9 +23,6 @@
#include <LVM.h>
#include <limits.h>
-#if __cplusplus
-extern "C" {
-#endif
#define FIVEBAND_NUMBANDS 5
#define MAX_NUM_BANDS 5
@@ -228,9 +225,6 @@
static const float LimitLevel_virtualizerContribution = 1.9;
-#if __cplusplus
-} // extern "C"
-#endif
#endif /*ANDROID_EFFECTBUNDLE_H_*/
diff --git a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.h b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.h
index 8165f5a..b2d47af 100644
--- a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.h
+++ b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.h
@@ -20,9 +20,6 @@
#include <audio_effects/effect_environmentalreverb.h>
#include <audio_effects/effect_presetreverb.h>
-#if __cplusplus
-extern "C" {
-#endif
#define MAX_NUM_BANDS 5
#define MAX_CALL_SIZE 256
@@ -38,9 +35,6 @@
int16_t Room_HF;
int16_t LPF;
} LPFPair_t;
-#if __cplusplus
-} // extern "C"
-#endif
#endif /*ANDROID_EFFECTREVERB_H_*/
diff --git a/media/libmedia/IMediaExtractor.cpp b/media/libmedia/IMediaExtractor.cpp
index 7389851..39caf53 100644
--- a/media/libmedia/IMediaExtractor.cpp
+++ b/media/libmedia/IMediaExtractor.cpp
@@ -107,8 +107,15 @@
}
virtual uint32_t flags() const {
- ALOGV("flags NOT IMPLEMENTED");
- return 0;
+ ALOGV("flags");
+ Parcel data, reply;
+ data.writeInterfaceToken(BpMediaExtractor::getInterfaceDescriptor());
+ status_t ret = remote()->transact(FLAGS, data, &reply);
+ int flgs = 0;
+ if (ret == NO_ERROR) {
+ flgs = reply.readUint32();
+ }
+ return flgs;
}
virtual status_t setMediaCas(const HInterfaceToken &casToken) {
@@ -125,9 +132,15 @@
return reply.readInt32();
}
- virtual const char * name() {
- ALOGV("name NOT IMPLEMENTED");
- return NULL;
+ virtual String8 name() {
+ Parcel data, reply;
+ data.writeInterfaceToken(BpMediaExtractor::getInterfaceDescriptor());
+ status_t ret = remote()->transact(NAME, data, &reply);
+ String8 nm;
+ if (ret == NO_ERROR) {
+ nm = reply.readString8();
+ }
+ return nm;
}
};
@@ -192,6 +205,12 @@
status_t ret = getMetrics(reply);
return ret;
}
+ case FLAGS: {
+ ALOGV("flags");
+ CHECK_INTERFACE(IMediaExtractor, data, reply);
+ reply->writeUint32(this->flags());
+ return NO_ERROR;
+ }
case SETMEDIACAS: {
ALOGV("setMediaCas");
CHECK_INTERFACE(IMediaExtractor, data, reply);
@@ -206,6 +225,13 @@
reply->writeInt32(setMediaCas(casToken));
return OK;
}
+ case NAME: {
+ ALOGV("name");
+ CHECK_INTERFACE(IMediaExtractor, data, reply);
+ String8 nm = name();
+ reply->writeString8(nm);
+ return NO_ERROR;
+ }
default:
return BBinder::onTransact(code, data, reply, flags);
}
diff --git a/media/libmedia/MidiIoWrapper.cpp b/media/libmedia/MidiIoWrapper.cpp
index 6d46363..e71ea2c 100644
--- a/media/libmedia/MidiIoWrapper.cpp
+++ b/media/libmedia/MidiIoWrapper.cpp
@@ -49,7 +49,7 @@
mDataSource = nullptr;
}
-class DataSourceUnwrapper {
+class MidiIoWrapper::DataSourceUnwrapper {
public:
explicit DataSourceUnwrapper(CDataSource *csource) {
diff --git a/media/libmedia/include/android/IMediaExtractor.h b/media/libmedia/include/android/IMediaExtractor.h
index 75e4ee2..3e035ad 100644
--- a/media/libmedia/include/android/IMediaExtractor.h
+++ b/media/libmedia/include/android/IMediaExtractor.h
@@ -62,7 +62,7 @@
virtual status_t setMediaCas(const HInterfaceToken &casToken) = 0;
- virtual const char * name() = 0;
+ virtual String8 name() = 0;
};
diff --git a/media/libmedia/include/media/MidiIoWrapper.h b/media/libmedia/include/media/MidiIoWrapper.h
index 7beb619..0cdd4ad 100644
--- a/media/libmedia/include/media/MidiIoWrapper.h
+++ b/media/libmedia/include/media/MidiIoWrapper.h
@@ -22,7 +22,6 @@
namespace android {
struct CDataSource;
-class DataSourceUnwrapper;
class MidiIoWrapper {
public:
@@ -41,6 +40,7 @@
int mFd;
off64_t mBase;
int64_t mLength;
+ class DataSourceUnwrapper;
DataSourceUnwrapper *mDataSource;
EAS_FILE mEasFile;
};
diff --git a/media/libmediatranscoding/TranscodingClientManager.cpp b/media/libmediatranscoding/TranscodingClientManager.cpp
index 5013a51..7252437 100644
--- a/media/libmediatranscoding/TranscodingClientManager.cpp
+++ b/media/libmediatranscoding/TranscodingClientManager.cpp
@@ -17,23 +17,31 @@
// #define LOG_NDEBUG 0
#define LOG_TAG "TranscodingClientManager"
+#include <inttypes.h>
#include <media/TranscodingClientManager.h>
#include <utils/Log.h>
namespace android {
-class DeathNotifier;
using Status = ::ndk::ScopedAStatus;
// static
-sp<TranscodingClientManager> TranscodingClientManager::getInstance() {
- static sp<TranscodingClientManager> sInstance = new TranscodingClientManager();
- return sInstance;
+TranscodingClientManager& TranscodingClientManager::getInstance() {
+ static TranscodingClientManager gInstance{};
+ return gInstance;
+}
+
+// static
+void TranscodingClientManager::BinderDiedCallback(void* cookie) {
+ int32_t clientId = static_cast<int32_t>(reinterpret_cast<intptr_t>(cookie));
+ ALOGD("Client %" PRId32 " is dead", clientId);
+ // Don't check for pid validity since we know it's already dead.
+ TranscodingClientManager& manager = TranscodingClientManager::getInstance();
+ manager.removeClient(clientId);
}
TranscodingClientManager::TranscodingClientManager()
- : mDeathRecipient(AIBinder_DeathRecipient_new(
- TranscodingClientManager::DeathNotifier::BinderDiedCallback)) {
+ : mDeathRecipient(AIBinder_DeathRecipient_new(BinderDiedCallback)) {
ALOGD("TranscodingClientManager started");
}
@@ -77,14 +85,13 @@
status_t TranscodingClientManager::addClient(std::unique_ptr<ClientInfo> client) {
// Validate the client.
- if (client == nullptr || client->mClientId <= 0 || client->mClientPid <= 0 ||
- client->mClientUid <= 0 || client->mClientOpPackageName.empty() ||
+ if (client == nullptr || client->mClientId < 0 || client->mClientPid < 0 ||
+ client->mClientUid < 0 || client->mClientOpPackageName.empty() ||
client->mClientOpPackageName == "") {
ALOGE("Invalid client");
return BAD_VALUE;
}
- ALOGD("Adding client id %d %s", client->mClientId, client->mClientOpPackageName.c_str());
std::scoped_lock lock{mLock};
// Check if the client already exists.
@@ -93,10 +100,11 @@
return ALREADY_EXISTS;
}
- // Listen to the death of the client.
- client->mDeathNotifier = new DeathNotifier();
+ ALOGD("Adding client id %d pid: %d uid: %d %s", client->mClientId, client->mClientPid,
+ client->mClientUid, client->mClientOpPackageName.c_str());
+
AIBinder_linkToDeath(client->mClient->asBinder().get(), mDeathRecipient.get(),
- client->mDeathNotifier.get());
+ reinterpret_cast<void*>(client->mClientId));
// Adds the new client to the map.
mClientIdToClientInfoMap[client->mClientId] = std::move(client);
@@ -120,7 +128,7 @@
// Check if the client still live. If alive, unlink the death.
if (client) {
AIBinder_unlinkToDeath(client->asBinder().get(), mDeathRecipient.get(),
- it->second->mDeathNotifier.get());
+ reinterpret_cast<void*>(clientId));
}
// Erase the entry.
@@ -134,13 +142,4 @@
return mClientIdToClientInfoMap.size();
}
-// static
-void TranscodingClientManager::DeathNotifier::BinderDiedCallback(void* cookie) {
- int32_t* pClientId = static_cast<int32_t*>(cookie);
- ALOGD("Client %d is dead", *pClientId);
- // Don't check for pid validity since we know it's already dead.
- sp<TranscodingClientManager> manager = TranscodingClientManager::getInstance();
- manager->removeClient(*pClientId);
-}
-
} // namespace android
diff --git a/media/libmediatranscoding/aidl/android/media/IMediaTranscodingService.aidl b/media/libmediatranscoding/aidl/android/media/IMediaTranscodingService.aidl
index 798300a..07b6c1a 100644
--- a/media/libmediatranscoding/aidl/android/media/IMediaTranscodingService.aidl
+++ b/media/libmediatranscoding/aidl/android/media/IMediaTranscodingService.aidl
@@ -75,6 +75,11 @@
boolean unregisterClient(in int clientId);
/**
+ * Returns the number of clients. This is used for debugging.
+ */
+ int getNumOfClients();
+
+ /**
* Submits a transcoding request to MediaTranscodingService.
*
* @param clientId assigned Id of the client.
diff --git a/media/libmediatranscoding/include/media/TranscodingClientManager.h b/media/libmediatranscoding/include/media/TranscodingClientManager.h
index dbf837c..eec120a 100644
--- a/media/libmediatranscoding/include/media/TranscodingClientManager.h
+++ b/media/libmediatranscoding/include/media/TranscodingClientManager.h
@@ -45,11 +45,7 @@
* TODO(hkuang): Hook up with ResourceManager for resource management.
* TODO(hkuang): Hook up with MediaMetrics to log all the transactions.
*/
-class TranscodingClientManager : public RefBase {
- private:
- // Forward declare it as it will be used in ClientInfo below.
- class DeathNotifier;
-
+class TranscodingClientManager {
public:
virtual ~TranscodingClientManager();
@@ -67,8 +63,6 @@
int32_t mClientUid;
/* Package name of the client. */
std::string mClientOpPackageName;
- /* Listener for the death of the client. */
- sp<DeathNotifier> mDeathNotifier;
ClientInfo(const std::shared_ptr<ITranscodingServiceClient>& client, int64_t clientId,
int32_t pid, int32_t uid, const std::string& opPackageName)
@@ -76,8 +70,7 @@
mClientId(clientId),
mClientPid(pid),
mClientUid(uid),
- mClientOpPackageName(opPackageName),
- mDeathNotifier(nullptr) {}
+ mClientOpPackageName(opPackageName) {}
};
/**
@@ -121,26 +114,17 @@
friend class MediaTranscodingService;
friend class TranscodingClientManagerTest;
- class DeathNotifier : public RefBase {
- public:
- DeathNotifier() = default;
-
- ~DeathNotifier() = default;
-
- // Implement death recipient
- static void BinderDiedCallback(void* cookie);
- };
-
/** Get the singleton instance of the TranscodingClientManager. */
- static sp<TranscodingClientManager> getInstance();
+ static TranscodingClientManager& getInstance();
TranscodingClientManager();
+ static void BinderDiedCallback(void* cookie);
+
mutable std::mutex mLock;
std::unordered_map<int32_t, std::unique_ptr<ClientInfo>> mClientIdToClientInfoMap
GUARDED_BY(mLock);
- std::vector<sp<DeathNotifier>> mDeathNotifiers GUARDED_BY(mLock);
::ndk::ScopedAIBinder_DeathRecipient mDeathRecipient;
};
diff --git a/media/libmediatranscoding/tests/TranscodingClientManager_tests.cpp b/media/libmediatranscoding/tests/TranscodingClientManager_tests.cpp
index 97c8919..5d2419d 100644
--- a/media/libmediatranscoding/tests/TranscodingClientManager_tests.cpp
+++ b/media/libmediatranscoding/tests/TranscodingClientManager_tests.cpp
@@ -87,15 +87,11 @@
class TranscodingClientManagerTest : public ::testing::Test {
public:
- TranscodingClientManagerTest() { ALOGD("TranscodingClientManagerTest created"); }
+ TranscodingClientManagerTest() : mClientManager(TranscodingClientManager::getInstance()) {
+ ALOGD("TranscodingClientManagerTest created");
+ }
void SetUp() override {
- mClientManager = TranscodingClientManager::getInstance();
- if (mClientManager == nullptr) {
- ALOGE("Failed to acquire TranscodingClientManager.");
- return;
- }
-
::ndk::SpAIBinder binder(AServiceManager_getService("media.transcoding"));
mService = IMediaTranscodingService::fromBinder(binder);
if (mService == nullptr) {
@@ -108,13 +104,12 @@
void TearDown() override {
ALOGI("TranscodingClientManagerTest tear down");
- mClientManager = nullptr;
mService = nullptr;
}
~TranscodingClientManagerTest() { ALOGD("TranscodingClientManagerTest destroyed"); }
- sp<TranscodingClientManager> mClientManager = nullptr;
+ TranscodingClientManager& mClientManager;
std::shared_ptr<ITranscodingServiceClient> mTestClient = nullptr;
std::shared_ptr<IMediaTranscodingService> mService = nullptr;
};
@@ -129,7 +124,7 @@
client, kInvalidClientId, kClientPid, kClientUid, kClientOpPackageName);
// Add the client to the manager and expect failure.
- status_t err = mClientManager->addClient(std::move(clientInfo));
+ status_t err = mClientManager.addClient(std::move(clientInfo));
EXPECT_TRUE(err != OK);
}
@@ -143,7 +138,7 @@
client, kClientId, kInvalidClientPid, kClientUid, kClientOpPackageName);
// Add the client to the manager and expect failure.
- status_t err = mClientManager->addClient(std::move(clientInfo));
+ status_t err = mClientManager.addClient(std::move(clientInfo));
EXPECT_TRUE(err != OK);
}
@@ -157,7 +152,7 @@
client, kClientId, kClientPid, kInvalidClientUid, kClientOpPackageName);
// Add the client to the manager and expect failure.
- status_t err = mClientManager->addClient(std::move(clientInfo));
+ status_t err = mClientManager.addClient(std::move(clientInfo));
EXPECT_TRUE(err != OK);
}
@@ -171,7 +166,7 @@
client, kClientId, kClientPid, kClientUid, kInvalidClientOpPackageName);
// Add the client to the manager and expect failure.
- status_t err = mClientManager->addClient(std::move(clientInfo));
+ status_t err = mClientManager.addClient(std::move(clientInfo));
EXPECT_TRUE(err != OK);
}
@@ -183,13 +178,13 @@
std::make_unique<TranscodingClientManager::ClientInfo>(
client1, kClientId, kClientPid, kClientUid, kClientOpPackageName);
- status_t err = mClientManager->addClient(std::move(clientInfo));
+ status_t err = mClientManager.addClient(std::move(clientInfo));
EXPECT_TRUE(err == OK);
- size_t numOfClients = mClientManager->getNumOfClients();
+ size_t numOfClients = mClientManager.getNumOfClients();
EXPECT_EQ(numOfClients, 1);
- err = mClientManager->removeClient(kClientId);
+ err = mClientManager.removeClient(kClientId);
EXPECT_TRUE(err == OK);
}
@@ -201,13 +196,13 @@
std::make_unique<TranscodingClientManager::ClientInfo>(
client1, kClientId, kClientPid, kClientUid, kClientOpPackageName);
- status_t err = mClientManager->addClient(std::move(clientInfo));
+ status_t err = mClientManager.addClient(std::move(clientInfo));
EXPECT_TRUE(err == OK);
- err = mClientManager->addClient(std::move(clientInfo));
+ err = mClientManager.addClient(std::move(clientInfo));
EXPECT_TRUE(err != OK);
- err = mClientManager->removeClient(kClientId);
+ err = mClientManager.removeClient(kClientId);
EXPECT_TRUE(err == OK);
}
@@ -219,7 +214,7 @@
std::make_unique<TranscodingClientManager::ClientInfo>(
client1, kClientId, kClientPid, kClientUid, kClientOpPackageName);
- status_t err = mClientManager->addClient(std::move(clientInfo1));
+ status_t err = mClientManager.addClient(std::move(clientInfo1));
EXPECT_TRUE(err == OK);
std::shared_ptr<ITranscodingServiceClient> client2 =
@@ -229,7 +224,7 @@
std::make_unique<TranscodingClientManager::ClientInfo>(
client2, kClientId + 1, kClientPid, kClientUid, kClientOpPackageName);
- err = mClientManager->addClient(std::move(clientInfo2));
+ err = mClientManager.addClient(std::move(clientInfo2));
EXPECT_TRUE(err == OK);
std::shared_ptr<ITranscodingServiceClient> client3 =
@@ -240,27 +235,27 @@
std::make_unique<TranscodingClientManager::ClientInfo>(
client3, kClientId + 2, kClientPid, kClientUid, kClientOpPackageName);
- err = mClientManager->addClient(std::move(clientInfo3));
+ err = mClientManager.addClient(std::move(clientInfo3));
EXPECT_TRUE(err == OK);
- size_t numOfClients = mClientManager->getNumOfClients();
+ size_t numOfClients = mClientManager.getNumOfClients();
EXPECT_EQ(numOfClients, 3);
- err = mClientManager->removeClient(kClientId);
+ err = mClientManager.removeClient(kClientId);
EXPECT_TRUE(err == OK);
- err = mClientManager->removeClient(kClientId + 1);
+ err = mClientManager.removeClient(kClientId + 1);
EXPECT_TRUE(err == OK);
- err = mClientManager->removeClient(kClientId + 2);
+ err = mClientManager.removeClient(kClientId + 2);
EXPECT_TRUE(err == OK);
}
TEST_F(TranscodingClientManagerTest, TestRemovingNonExistClient) {
- status_t err = mClientManager->removeClient(kInvalidClientId);
+ status_t err = mClientManager.removeClient(kInvalidClientId);
EXPECT_TRUE(err != OK);
- err = mClientManager->removeClient(1000 /* clientId */);
+ err = mClientManager.removeClient(1000 /* clientId */);
EXPECT_TRUE(err != OK);
}
@@ -272,13 +267,13 @@
std::make_unique<TranscodingClientManager::ClientInfo>(
client, kClientId, kClientPid, kClientUid, kClientOpPackageName);
- status_t err = mClientManager->addClient(std::move(clientInfo));
+ status_t err = mClientManager.addClient(std::move(clientInfo));
EXPECT_TRUE(err == OK);
- bool res = mClientManager->isClientIdRegistered(kClientId);
+ bool res = mClientManager.isClientIdRegistered(kClientId);
EXPECT_TRUE(res);
- res = mClientManager->isClientIdRegistered(kInvalidClientId);
+ res = mClientManager.isClientIdRegistered(kInvalidClientId);
EXPECT_FALSE(res);
}
diff --git a/media/libstagefright/MPEG4Writer.cpp b/media/libstagefright/MPEG4Writer.cpp
index c88a82a..b29d5f8 100644
--- a/media/libstagefright/MPEG4Writer.cpp
+++ b/media/libstagefright/MPEG4Writer.cpp
@@ -626,7 +626,8 @@
CHECK(source.get() != NULL);
const char *mime;
- source->getFormat()->findCString(kKeyMIMEType, &mime);
+ sp<MetaData> meta = source->getFormat();
+ meta->findCString(kKeyMIMEType, &mime);
if (Track::getFourCCForMime(mime) == NULL) {
ALOGE("Unsupported mime '%s'", mime);
diff --git a/media/libstagefright/RemoteMediaExtractor.cpp b/media/libstagefright/RemoteMediaExtractor.cpp
index c841d10..25e43c2 100644
--- a/media/libstagefright/RemoteMediaExtractor.cpp
+++ b/media/libstagefright/RemoteMediaExtractor.cpp
@@ -139,8 +139,8 @@
return mExtractor->setMediaCas((uint8_t*)casToken.data(), casToken.size());
}
-const char * RemoteMediaExtractor::name() {
- return mExtractor->name();
+String8 RemoteMediaExtractor::name() {
+ return String8(mExtractor->name());
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/media/libstagefright/foundation/Android.bp b/media/libstagefright/foundation/Android.bp
index 7398690..9fe879e 100644
--- a/media/libstagefright/foundation/Android.bp
+++ b/media/libstagefright/foundation/Android.bp
@@ -35,10 +35,6 @@
"media_plugin_headers",
],
- export_shared_lib_headers: [
- "libbinder",
- ],
-
cflags: [
"-Wno-multichar",
"-Werror",
diff --git a/media/libstagefright/id3/ID3.cpp b/media/libstagefright/id3/ID3.cpp
index 792a68a..425468f 100644
--- a/media/libstagefright/id3/ID3.cpp
+++ b/media/libstagefright/id3/ID3.cpp
@@ -32,7 +32,7 @@
static const size_t kMaxMetadataSize = 3 * 1024 * 1024;
-struct MemorySource : public DataSourceBase {
+struct ID3::MemorySource : public DataSourceBase {
MemorySource(const uint8_t *data, size_t size)
: mData(data),
mSize(size) {
@@ -58,7 +58,7 @@
DISALLOW_EVIL_CONSTRUCTORS(MemorySource);
};
-class DataSourceUnwrapper : public DataSourceBase {
+class ID3::DataSourceUnwrapper : public DataSourceBase {
public:
explicit DataSourceUnwrapper(DataSourceHelper *sourcehelper) {
diff --git a/media/libstagefright/include/ID3.h b/media/libstagefright/include/ID3.h
index 5e433ea..2843a7a 100644
--- a/media/libstagefright/include/ID3.h
+++ b/media/libstagefright/include/ID3.h
@@ -77,6 +77,8 @@
size_t rawSize() const { return mRawSize; }
private:
+ class DataSourceUnwrapper;
+ struct MemorySource;
bool mIsValid;
uint8_t *mData;
size_t mSize;
diff --git a/media/libstagefright/include/media/stagefright/RemoteMediaExtractor.h b/media/libstagefright/include/media/stagefright/RemoteMediaExtractor.h
index e33e303..2ce7bc7 100644
--- a/media/libstagefright/include/media/stagefright/RemoteMediaExtractor.h
+++ b/media/libstagefright/include/media/stagefright/RemoteMediaExtractor.h
@@ -41,7 +41,7 @@
virtual status_t getMetrics(Parcel *reply);
virtual uint32_t flags() const;
virtual status_t setMediaCas(const HInterfaceToken &casToken);
- virtual const char * name();
+ virtual String8 name();
private:
MediaExtractor *mExtractor;
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index 7b14050..ad09680 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -6109,6 +6109,7 @@
mHwPaused = false;
mFlushPending = false;
mTimestampVerifier.discontinuity(); // DIRECT and OFFLOADED flush resets frame count.
+ mTimestamp.clear();
}
int64_t AudioFlinger::DirectOutputThread::computeWaitTimeNs_l() const {
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
index ee32afe..8bc2837 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
@@ -1073,11 +1073,6 @@
ALOGV("%s() mAudioPolicyManager == NULL", __func__);
return NO_INIT;
}
- uint_t callingUid = IPCThreadState::self()->getCallingUid();
- if (uid != callingUid) {
- ALOGD("%s() uid invalid %d != %d", __func__, uid, callingUid);
- return PERMISSION_DENIED;
- }
return mAudioPolicyManager->setAllowedCapturePolicy(uid, capturePolicy);
}
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index f1d5d16..5358307 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -56,7 +56,6 @@
#include <media/IMediaHTTPService.h>
#include <media/mediaplayer.h>
#include <mediautils/BatteryNotifier.h>
-#include <sensorprivacy/SensorPrivacyManager.h>
#include <utils/Errors.h>
#include <utils/Log.h>
#include <utils/String16.h>
@@ -3258,10 +3257,9 @@
if (mRegistered) {
return;
}
- SensorPrivacyManager spm;
- spm.addSensorPrivacyListener(this);
- mSensorPrivacyEnabled = spm.isSensorPrivacyEnabled();
- status_t res = spm.linkToDeath(this);
+ mSpm.addSensorPrivacyListener(this);
+ mSensorPrivacyEnabled = mSpm.isSensorPrivacyEnabled();
+ status_t res = mSpm.linkToDeath(this);
if (res == OK) {
mRegistered = true;
ALOGV("SensorPrivacyPolicy: Registered with SensorPrivacyManager");
@@ -3270,9 +3268,8 @@
void CameraService::SensorPrivacyPolicy::unregisterSelf() {
Mutex::Autolock _l(mSensorPrivacyLock);
- SensorPrivacyManager spm;
- spm.removeSensorPrivacyListener(this);
- spm.unlinkToDeath(this);
+ mSpm.removeSensorPrivacyListener(this);
+ mSpm.unlinkToDeath(this);
mRegistered = false;
ALOGV("SensorPrivacyPolicy: Unregistered with SensorPrivacyManager");
}
diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h
index e433544..265a572 100644
--- a/services/camera/libcameraservice/CameraService.h
+++ b/services/camera/libcameraservice/CameraService.h
@@ -31,6 +31,7 @@
#include <binder/IAppOpsCallback.h>
#include <binder/IUidObserver.h>
#include <hardware/camera.h>
+#include <sensorprivacy/SensorPrivacyManager.h>
#include <android/hardware/camera/common/1.0/types.h>
@@ -656,6 +657,7 @@
virtual void binderDied(const wp<IBinder> &who);
private:
+ SensorPrivacyManager mSpm;
wp<CameraService> mService;
Mutex mSensorPrivacyLock;
bool mSensorPrivacyEnabled;
diff --git a/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp b/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp
index 63e293a..2daacd1 100644
--- a/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp
+++ b/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp
@@ -66,7 +66,7 @@
}
bool FrameProcessor::processSingleFrame(CaptureResult &frame,
- const sp<CameraDeviceBase> &device) {
+ const sp<FrameProducer> &device) {
sp<Camera2Client> client = mClient.promote();
if (!client.get()) {
diff --git a/services/camera/libcameraservice/api1/client2/FrameProcessor.h b/services/camera/libcameraservice/api1/client2/FrameProcessor.h
index 142b8cd..bb985f6 100644
--- a/services/camera/libcameraservice/api1/client2/FrameProcessor.h
+++ b/services/camera/libcameraservice/api1/client2/FrameProcessor.h
@@ -24,6 +24,7 @@
#include <utils/List.h>
#include <camera/CameraMetadata.h>
+#include "common/CameraDeviceBase.h"
#include "common/FrameProcessorBase.h"
struct camera_frame_metadata;
@@ -54,7 +55,7 @@
void processNewFrames(const sp<Camera2Client> &client);
virtual bool processSingleFrame(CaptureResult &frame,
- const sp<CameraDeviceBase> &device);
+ const sp<FrameProducer> &device);
status_t processFaceDetect(const CameraMetadata &frame,
const sp<Camera2Client> &client);
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
index ff9d274..e35b436 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
@@ -117,8 +117,8 @@
threadName = String8::format("CDU-%s-FrameProc", mCameraIdStr.string());
mFrameProcessor->run(threadName.string());
- mFrameProcessor->registerListener(FRAME_PROCESSOR_LISTENER_MIN_ID,
- FRAME_PROCESSOR_LISTENER_MAX_ID,
+ mFrameProcessor->registerListener(camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MIN_ID,
+ camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MAX_ID,
/*listener*/this,
/*sendPartials*/true);
@@ -526,7 +526,8 @@
// streams are also supported.
std::vector<int> internalStreams;
mCompositeStreamMap.valueAt(i)->insertCompositeStreamIds(&internalStreams);
- std::remove_if(offlineStreamIds->begin(), offlineStreamIds->end(),
+ offlineStreamIds->erase(
+ std::remove_if(offlineStreamIds->begin(), offlineStreamIds->end(),
[&internalStreams] (int streamId) {
auto it = std::find(internalStreams.begin(), internalStreams.end(),
streamId);
@@ -535,8 +536,7 @@
return true;
}
- return false;
- });
+ return false;}), offlineStreamIds->end());
if (internalStreams.empty()) {
offlineStreamIds->push_back(mCompositeStreamMap.valueAt(i)->getStreamId());
}
@@ -818,7 +818,7 @@
}
hardware::camera::device::V3_4::StreamConfiguration streamConfiguration;
bool earlyExit = false;
- metadataGetter getMetadata = [this](const String8 &id) {return mDevice->info(id);};
+ metadataGetter getMetadata = [this](const String8 &id) {return mDevice->infoPhysical(id);};
std::vector<std::string> physicalCameraIds;
mProviderManager->isLogicalCamera(mCameraIdStr.string(), &physicalCameraIds);
res = convertToHALStreamCombination(sessionConfiguration, mCameraIdStr,
@@ -1010,7 +1010,7 @@
sp<Surface> surface;
res = createSurfaceFromGbp(streamInfo, isStreamInfoValid, surface, bufferProducer,
- mCameraIdStr, mDevice->info(physicalCameraId));
+ mCameraIdStr, mDevice->infoPhysical(physicalCameraId));
if (!res.isOk())
return res;
@@ -1314,7 +1314,7 @@
OutputStreamInfo outInfo;
sp<Surface> surface;
res = createSurfaceFromGbp(outInfo, /*isStreamInfoValid*/ false, surface,
- newOutputsMap.valueAt(i), mCameraIdStr, mDevice->info(physicalCameraId));
+ newOutputsMap.valueAt(i), mCameraIdStr, mDevice->infoPhysical(physicalCameraId));
if (!res.isOk())
return res;
@@ -1897,7 +1897,7 @@
sp<Surface> surface;
res = createSurfaceFromGbp(mStreamInfoMap[streamId], true /*isStreamInfoValid*/,
- surface, bufferProducer, mCameraIdStr, mDevice->info(physicalId));
+ surface, bufferProducer, mCameraIdStr, mDevice->infoPhysical(physicalId));
if (!res.isOk())
return res;
@@ -2005,7 +2005,8 @@
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
}
- std::vector<int32_t> offlineStreamIds(offlineOutputIds.size());
+ std::vector<int32_t> offlineStreamIds;
+ offlineStreamIds.reserve(offlineOutputIds.size());
KeyedVector<sp<IBinder>, sp<CompositeStream>> offlineCompositeStreamMap;
for (const auto& streamId : offlineOutputIds) {
ssize_t index = mConfiguredOutputs.indexOfKey(streamId);
@@ -2206,8 +2207,8 @@
ALOGV("Camera %s: Stopping processors", mCameraIdStr.string());
- mFrameProcessor->removeListener(FRAME_PROCESSOR_LISTENER_MIN_ID,
- FRAME_PROCESSOR_LISTENER_MAX_ID,
+ mFrameProcessor->removeListener(camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MIN_ID,
+ camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MAX_ID,
/*listener*/this);
mFrameProcessor->requestExit();
ALOGV("Camera %s: Waiting for threads", mCameraIdStr.string());
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.h b/services/camera/libcameraservice/api2/CameraDeviceClient.h
index 888fcce..964c96a 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.h
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.h
@@ -258,8 +258,6 @@
/** Preview callback related members */
sp<camera2::FrameProcessorBase> mFrameProcessor;
- static const int32_t FRAME_PROCESSOR_LISTENER_MIN_ID = 0;
- static const int32_t FRAME_PROCESSOR_LISTENER_MAX_ID = 0x7fffffffL;
std::vector<int32_t> mSupportedPhysicalRequestKeys;
diff --git a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
index fc3f137..1edfbf9 100644
--- a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
@@ -41,6 +41,16 @@
return NO_INIT;
}
+ String8 threadName;
+ mFrameProcessor = new camera2::FrameProcessorBase(mOfflineSession);
+ threadName = String8::format("Offline-%s-FrameProc", mCameraIdStr.string());
+ mFrameProcessor->run(threadName.string());
+
+ mFrameProcessor->registerListener(camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MIN_ID,
+ camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MAX_ID,
+ /*listener*/this,
+ /*sendPartials*/true);
+
wp<NotificationListener> weakThis(this);
res = mOfflineSession->initialize(weakThis);
if (res != OK) {
@@ -62,7 +72,7 @@
return BasicClient::dump(fd, args);
}
-status_t CameraOfflineSessionClient::dumpClient(int fd, const Vector<String16>& /*args*/) {
+status_t CameraOfflineSessionClient::dumpClient(int fd, const Vector<String16>& args) {
String8 result;
result = " Offline session dump:\n";
@@ -74,6 +84,8 @@
return NO_ERROR;
}
+ mFrameProcessor->dump(fd, args);
+
auto res = mOfflineSession->dump(fd);
if (res != OK) {
result = String8::format(" Error dumping offline session: %s (%d)",
@@ -108,6 +120,12 @@
remote->unlinkToDeath(sCameraService);
}
+ mFrameProcessor->removeListener(camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MIN_ID,
+ camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MAX_ID,
+ /*listener*/this);
+ mFrameProcessor->requestExit();
+ mFrameProcessor->join();
+
finishCameraOps();
ALOGI("%s: Disconnected client for offline camera %s for PID %d", __FUNCTION__,
mCameraIdStr.string(), mClientPid);
diff --git a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.h b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.h
index 6792039..b67fcb3 100644
--- a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.h
+++ b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.h
@@ -101,6 +101,8 @@
sp<CameraOfflineSessionBase> mOfflineSession;
+ sp<camera2::FrameProcessorBase> mFrameProcessor;
+
// Offline composite stream map, output surface -> composite stream
KeyedVector<sp<IBinder>, sp<CompositeStream>> mCompositeStreamMap;
};
diff --git a/services/camera/libcameraservice/common/CameraDeviceBase.h b/services/camera/libcameraservice/common/CameraDeviceBase.h
index 2aa1207..3662a65 100644
--- a/services/camera/libcameraservice/common/CameraDeviceBase.h
+++ b/services/camera/libcameraservice/common/CameraDeviceBase.h
@@ -34,6 +34,7 @@
#include "gui/IGraphicBufferProducer.h"
#include "device3/Camera3StreamInterface.h"
#include "binder/Status.h"
+#include "FrameProducer.h"
#include "CameraOfflineSessionBase.h"
@@ -48,16 +49,11 @@
* Base interface for version >= 2 camera device classes, which interface to
* camera HAL device versions >= 2.
*/
-class CameraDeviceBase : public virtual RefBase {
+class CameraDeviceBase : public virtual FrameProducer {
public:
virtual ~CameraDeviceBase();
/**
- * The device's camera ID
- */
- virtual const String8& getId() const = 0;
-
- /**
* The device vendor tag ID
*/
virtual metadata_vendor_id_t getVendorTagId() const = 0;
@@ -68,13 +64,9 @@
virtual status_t dump(int fd, const Vector<String16> &args) = 0;
/**
- * The device's static characteristics metadata buffer
- */
- virtual const CameraMetadata& info() const = 0;
- /**
* The physical camera device's static characteristics metadata buffer
*/
- virtual const CameraMetadata& info(const String8& physicalId) const = 0;
+ virtual const CameraMetadata& infoPhysical(const String8& physicalId) const = 0;
struct PhysicalCameraSettings {
std::string cameraId;
@@ -278,21 +270,6 @@
virtual bool willNotify3A() = 0;
/**
- * Wait for a new frame to be produced, with timeout in nanoseconds.
- * Returns TIMED_OUT when no frame produced within the specified duration
- * May be called concurrently to most methods, except for getNextFrame
- */
- virtual status_t waitForNextFrame(nsecs_t timeout) = 0;
-
- /**
- * Get next capture result frame from the result queue. Returns NOT_ENOUGH_DATA
- * if the queue is empty; caller takes ownership of the metadata buffer inside
- * the capture result object's metadata field.
- * May be called concurrently to most methods, except for waitForNextFrame.
- */
- virtual status_t getNextResult(CaptureResult *frame) = 0;
-
- /**
* Trigger auto-focus. The latest ID used in a trigger autofocus or cancel
* autofocus call will be returned by the HAL in all subsequent AF
* notifications.
diff --git a/services/camera/libcameraservice/common/CameraOfflineSessionBase.h b/services/camera/libcameraservice/common/CameraOfflineSessionBase.h
index 05ea7fb..1f835a9 100644
--- a/services/camera/libcameraservice/common/CameraOfflineSessionBase.h
+++ b/services/camera/libcameraservice/common/CameraOfflineSessionBase.h
@@ -22,6 +22,7 @@
#include <utils/Timers.h>
#include "camera/CaptureResult.h"
+#include "FrameProducer.h"
namespace android {
@@ -54,27 +55,17 @@
virtual ~NotificationListener() {}
};
-class CameraOfflineSessionBase : public virtual RefBase {
+class CameraOfflineSessionBase : public virtual FrameProducer {
public:
virtual ~CameraOfflineSessionBase();
virtual status_t initialize(
wp<NotificationListener> listener) = 0;
- // The session's original camera ID
- virtual const String8& getId() const = 0;
-
virtual status_t disconnect() = 0;
virtual status_t dump(int fd) = 0;
- /**
- * Capture result passing
- */
- virtual status_t waitForNextFrame(nsecs_t timeout) = 0;
-
- virtual status_t getNextResult(CaptureResult *frame) = 0;
-
// TODO: notification passing path
}; // class CameraOfflineSessionBase
diff --git a/services/camera/libcameraservice/common/FrameProcessorBase.cpp b/services/camera/libcameraservice/common/FrameProcessorBase.cpp
index 3d56cd2..e259379 100644
--- a/services/camera/libcameraservice/common/FrameProcessorBase.cpp
+++ b/services/camera/libcameraservice/common/FrameProcessorBase.cpp
@@ -18,20 +18,21 @@
#define ATRACE_TAG ATRACE_TAG_CAMERA
//#define LOG_NDEBUG 0
+#include <map>
#include <utils/Log.h>
#include <utils/Trace.h>
+#include "common/FrameProducer.h"
#include "common/FrameProcessorBase.h"
-#include "common/CameraDeviceBase.h"
namespace android {
namespace camera2 {
-FrameProcessorBase::FrameProcessorBase(wp<CameraDeviceBase> device) :
+FrameProcessorBase::FrameProcessorBase(wp<FrameProducer> device) :
Thread(/*canCallJava*/false),
mDevice(device),
mNumPartialResults(1) {
- sp<CameraDeviceBase> cameraDevice = device.promote();
+ sp<FrameProducer> cameraDevice = device.promote();
if (cameraDevice != 0) {
CameraMetadata staticInfo = cameraDevice->info();
camera_metadata_entry_t entry = staticInfo.find(ANDROID_REQUEST_PARTIAL_RESULT_COUNT);
@@ -115,7 +116,7 @@
bool FrameProcessorBase::threadLoop() {
status_t res;
- sp<CameraDeviceBase> device;
+ sp<FrameProducer> device;
{
device = mDevice.promote();
if (device == 0) return false;
@@ -132,7 +133,7 @@
return true;
}
-void FrameProcessorBase::processNewFrames(const sp<CameraDeviceBase> &device) {
+void FrameProcessorBase::processNewFrames(const sp<FrameProducer> &device) {
status_t res;
ATRACE_CALL();
CaptureResult result;
@@ -142,7 +143,7 @@
while ( (res = device->getNextResult(&result)) == OK) {
// TODO: instead of getting frame number from metadata, we should read
- // this from result.mResultExtras when CameraDeviceBase interface is fixed.
+ // this from result.mResultExtras when FrameProducer interface is fixed.
camera_metadata_entry_t entry;
entry = result.mMetadata.find(ANDROID_REQUEST_FRAME_COUNT);
@@ -174,14 +175,14 @@
}
bool FrameProcessorBase::processSingleFrame(CaptureResult &result,
- const sp<CameraDeviceBase> &device) {
+ const sp<FrameProducer> &device) {
ALOGV("%s: Camera %s: Process single frame (is empty? %d)",
__FUNCTION__, device->getId().string(), result.mMetadata.isEmpty());
return processListeners(result, device) == OK;
}
status_t FrameProcessorBase::processListeners(const CaptureResult &result,
- const sp<CameraDeviceBase> &device) {
+ const sp<FrameProducer> &device) {
ATRACE_CALL();
camera_metadata_ro_entry_t entry;
diff --git a/services/camera/libcameraservice/common/FrameProcessorBase.h b/services/camera/libcameraservice/common/FrameProcessorBase.h
index ae6d15d..be1ebc6 100644
--- a/services/camera/libcameraservice/common/FrameProcessorBase.h
+++ b/services/camera/libcameraservice/common/FrameProcessorBase.h
@@ -27,22 +27,25 @@
namespace android {
-class CameraDeviceBase;
+class FrameProducer;
namespace camera2 {
/* Output frame metadata processing thread. This thread waits for new
- * frames from the device, and analyzes them as necessary.
+ * frames from the frame producer, and analyzes them as necessary.
*/
class FrameProcessorBase: public Thread {
public:
- explicit FrameProcessorBase(wp<CameraDeviceBase> device);
+ explicit FrameProcessorBase(wp<FrameProducer> device);
virtual ~FrameProcessorBase();
struct FilteredListener: virtual public RefBase {
virtual void onResultAvailable(const CaptureResult &result) = 0;
};
+ static const int32_t FRAME_PROCESSOR_LISTENER_MIN_ID = 0;
+ static const int32_t FRAME_PROCESSOR_LISTENER_MAX_ID = 0x7fffffffL;
+
// Register a listener for a range of IDs [minId, maxId). Multiple listeners
// can be listening to the same range. Registering the same listener with
// the same range of IDs has no effect.
@@ -56,7 +59,7 @@
void dump(int fd, const Vector<String16>& args);
protected:
static const nsecs_t kWaitDuration = 10000000; // 10 ms
- wp<CameraDeviceBase> mDevice;
+ wp<FrameProducer> mDevice;
virtual bool threadLoop();
@@ -74,13 +77,13 @@
// Number of partial result the HAL will potentially send.
int32_t mNumPartialResults;
- void processNewFrames(const sp<CameraDeviceBase> &device);
+ void processNewFrames(const sp<FrameProducer> &device);
virtual bool processSingleFrame(CaptureResult &result,
- const sp<CameraDeviceBase> &device);
+ const sp<FrameProducer> &device);
status_t processListeners(const CaptureResult &result,
- const sp<CameraDeviceBase> &device);
+ const sp<FrameProducer> &device);
CameraMetadata mLastFrame;
std::vector<PhysicalCaptureResultInfo> mLastPhysicalFrames;
diff --git a/services/camera/libcameraservice/common/FrameProducer.h b/services/camera/libcameraservice/common/FrameProducer.h
new file mode 100644
index 0000000..a14b3d6
--- /dev/null
+++ b/services/camera/libcameraservice/common/FrameProducer.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+#ifndef ANDROID_SERVERS_CAMERA_FRAMEPRODUCER_H
+#define ANDROID_SERVERS_CAMERA_FRAMEPRODUCER_H
+
+#include <utils/RefBase.h>
+#include <utils/String8.h>
+#include <utils/Timers.h>
+
+#include "camera/CameraMetadata.h"
+#include "camera/CaptureResult.h"
+
+namespace android {
+
+/**
+ * Abstract class for HAL frame producers
+ */
+class FrameProducer : public virtual RefBase {
+ public:
+ /**
+ * Retrieve the static characteristics metadata buffer
+ */
+ virtual const CameraMetadata& info() const = 0;
+
+ /**
+ * Retrieve the device camera ID
+ */
+ virtual const String8& getId() const = 0;
+
+ /**
+ * Wait for a new frame to be produced, with timeout in nanoseconds.
+ * Returns TIMED_OUT when no frame produced within the specified duration
+ * May be called concurrently to most methods, except for getNextFrame
+ */
+ virtual status_t waitForNextFrame(nsecs_t timeout) = 0;
+
+ /**
+ * Get next capture result frame from the result queue. Returns NOT_ENOUGH_DATA
+ * if the queue is empty; caller takes ownership of the metadata buffer inside
+ * the capture result object's metadata field.
+ * May be called concurrently to most methods, except for waitForNextFrame.
+ */
+ virtual status_t getNextResult(CaptureResult *frame) = 0;
+
+}; // class FrameProducer
+
+} // namespace android
+
+#endif
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index d38bfee..90d21a2 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -814,7 +814,7 @@
return OK;
}
-const CameraMetadata& Camera3Device::info(const String8& physicalId) const {
+const CameraMetadata& Camera3Device::infoPhysical(const String8& physicalId) const {
ALOGVV("%s: E", __FUNCTION__);
if (CC_UNLIKELY(mStatus == STATUS_UNINITIALIZED ||
mStatus == STATUS_ERROR)) {
@@ -837,7 +837,7 @@
const CameraMetadata& Camera3Device::info() const {
String8 emptyId;
- return info(emptyId);
+ return infoPhysical(emptyId);
}
status_t Camera3Device::checkStatusOkToCaptureLocked() {
diff --git a/services/camera/libcameraservice/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h
index 0764320..e13e45f 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.h
+++ b/services/camera/libcameraservice/device3/Camera3Device.h
@@ -98,7 +98,7 @@
status_t disconnect() override;
status_t dump(int fd, const Vector<String16> &args) override;
const CameraMetadata& info() const override;
- const CameraMetadata& info(const String8& physicalId) const override;
+ const CameraMetadata& infoPhysical(const String8& physicalId) const override;
// Capture and setStreamingRequest will configure streams if currently in
// idle state
diff --git a/services/camera/libcameraservice/device3/Camera3OfflineSession.cpp b/services/camera/libcameraservice/device3/Camera3OfflineSession.cpp
index 8150de3..5942868 100644
--- a/services/camera/libcameraservice/device3/Camera3OfflineSession.cpp
+++ b/services/camera/libcameraservice/device3/Camera3OfflineSession.cpp
@@ -167,7 +167,9 @@
streams.push_back(mInputStream);
}
- mSession->close();
+ if (mSession != nullptr) {
+ mSession->close();
+ }
FlushInflightReqStates states {
mId, mOfflineReqsLock, mOfflineReqs, mUseHalBufManager,
@@ -461,4 +463,8 @@
return ret;
}
+const CameraMetadata& Camera3OfflineSession::info() const {
+ return mDeviceInfo;
+}
+
}; // namespace android
diff --git a/services/camera/libcameraservice/device3/Camera3OfflineSession.h b/services/camera/libcameraservice/device3/Camera3OfflineSession.h
index 969220f..27043d2 100644
--- a/services/camera/libcameraservice/device3/Camera3OfflineSession.h
+++ b/services/camera/libcameraservice/device3/Camera3OfflineSession.h
@@ -142,13 +142,14 @@
/**
* CameraOfflineSessionBase interface
*/
- const String8& getId() const override;
-
status_t disconnect() override;
-
status_t dump(int fd) override;
- // methods for capture result passing
+ /**
+ * FrameProducer interface
+ */
+ const String8& getId() const override;
+ const CameraMetadata& info() const override;
status_t waitForNextFrame(nsecs_t timeout) override;
status_t getNextResult(CaptureResult *frame) override;
diff --git a/services/camera/libcameraservice/device3/ZoomRatioMapper.h b/services/camera/libcameraservice/device3/ZoomRatioMapper.h
index 16b223b..aa3d913 100644
--- a/services/camera/libcameraservice/device3/ZoomRatioMapper.h
+++ b/services/camera/libcameraservice/device3/ZoomRatioMapper.h
@@ -40,7 +40,8 @@
bool supportNativeZoomRatio, bool usePrecorrectArray);
ZoomRatioMapper(const ZoomRatioMapper& other) :
mHalSupportsZoomRatio(other.mHalSupportsZoomRatio),
- mArrayWidth(other.mArrayWidth), mArrayHeight(other.mArrayHeight) {}
+ mArrayWidth(other.mArrayWidth), mArrayHeight(other.mArrayHeight),
+ mIsValid(other.mIsValid) {}
/**
* Initialize request template with valid zoomRatio if necessary.
diff --git a/services/mediametrics/benchmarks/Android.bp b/services/mediametrics/benchmarks/Android.bp
new file mode 100644
index 0000000..b61f44f
--- /dev/null
+++ b/services/mediametrics/benchmarks/Android.bp
@@ -0,0 +1,6 @@
+cc_test {
+ name: "mediametrics_benchmarks",
+ srcs: ["mediametrics_benchmarks.cpp"],
+ shared_libs: ["libbinder", "libmediametrics",],
+ static_libs: ["libgoogle-benchmark"],
+}
diff --git a/services/mediametrics/benchmarks/README.md b/services/mediametrics/benchmarks/README.md
new file mode 100644
index 0000000..7cf767b
--- /dev/null
+++ b/services/mediametrics/benchmarks/README.md
@@ -0,0 +1,4 @@
+This benchmark may fail occasionally, probably due to the binder queue being full.
+If that happens, just re-run it and it will usually work eventually.
+
+adb shell /data/nativetest64/media\_metrics/media\_metrics
diff --git a/services/mediametrics/benchmarks/mediametrics_benchmarks.cpp b/services/mediametrics/benchmarks/mediametrics_benchmarks.cpp
new file mode 100644
index 0000000..f434867
--- /dev/null
+++ b/services/mediametrics/benchmarks/mediametrics_benchmarks.cpp
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+#include <media/MediaMetricsItem.h>
+#include <benchmark/benchmark.h>
+
+class MyItem : public android::mediametrics::BaseItem {
+public:
+ static bool mySubmitBuffer() {
+ // Deliberately lame so that we're measuring just the cost to deliver things to the service.
+ return submitBuffer("", 0);
+ }
+};
+
+static void BM_SubmitBuffer(benchmark::State& state)
+{
+ while (state.KeepRunning()) {
+ MyItem myItem;
+ bool ok = myItem.mySubmitBuffer();
+ if (ok == false) {
+ // submitBuffer() currently uses one-way binder IPC, which provides unreliable delivery
+ // with at-most-one guarantee.
+ // It is expected that the call may occasionally fail if the one-way queue is full.
+ // The Iterations magic number below was tuned to reduce, but not eliminate, failures.
+ state.SkipWithError("failed");
+ return;
+ }
+ benchmark::ClobberMemory();
+ }
+}
+
+BENCHMARK(BM_SubmitBuffer)->Iterations(4000); // Adjust magic number until test runs
+
+BENCHMARK_MAIN();
diff --git a/services/mediatranscoding/Android.bp b/services/mediatranscoding/Android.bp
index 3dc43f1..17347a9 100644
--- a/services/mediatranscoding/Android.bp
+++ b/services/mediatranscoding/Android.bp
@@ -5,8 +5,11 @@
srcs: ["MediaTranscodingService.cpp"],
shared_libs: [
+ "libbase",
"libbinder_ndk",
"liblog",
+ "libmediatranscoding",
+ "libutils",
],
static_libs: [
@@ -27,11 +30,13 @@
],
shared_libs: [
+ "libbase",
// TODO(hkuang): Use libbinder_ndk
"libbinder",
"libutils",
"liblog",
"libbase",
+ "libmediatranscoding",
"libmediatranscodingservice",
],
diff --git a/services/mediatranscoding/MediaTranscodingService.cpp b/services/mediatranscoding/MediaTranscodingService.cpp
index 0269896..82d4161 100644
--- a/services/mediatranscoding/MediaTranscodingService.cpp
+++ b/services/mediatranscoding/MediaTranscodingService.cpp
@@ -16,16 +16,37 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "MediaTranscodingService"
-#include "MediaTranscodingService.h"
-
+#include <MediaTranscodingService.h>
#include <android/binder_manager.h>
#include <android/binder_process.h>
+#include <private/android_filesystem_config.h>
#include <utils/Log.h>
#include <utils/Vector.h>
namespace android {
-MediaTranscodingService::MediaTranscodingService() {
+// Convenience methods for constructing binder::Status objects for error returns
+#define STATUS_ERROR_FMT(errorCode, errorString, ...) \
+ Status::fromServiceSpecificErrorWithMessage( \
+ errorCode, \
+ String8::format("%s:%d: " errorString, __FUNCTION__, __LINE__, ##__VA_ARGS__))
+
+// Can MediaTranscoding service trust the caller based on the calling UID?
+// TODO(hkuang): Add MediaProvider's UID.
+static bool isTrustedCallingUid(uid_t uid) {
+ switch (uid) {
+ case AID_ROOT: // root user
+ case AID_SYSTEM:
+ case AID_SHELL:
+ case AID_MEDIA: // mediaserver
+ return true;
+ default:
+ return false;
+ }
+}
+
+MediaTranscodingService::MediaTranscodingService()
+ : mTranscodingClientManager(TranscodingClientManager::getInstance()) {
ALOGV("MediaTranscodingService is created");
}
@@ -33,9 +54,17 @@
ALOGE("Should not be in ~MediaTranscodingService");
}
-binder_status_t MediaTranscodingService::dump(int /* fd */, const char** /*args*/,
- uint32_t /*numArgs*/) {
- // TODO(hkuang): Add implementation.
+binder_status_t MediaTranscodingService::dump(int fd, const char** /*args*/, uint32_t /*numArgs*/) {
+ String8 result;
+ const size_t SIZE = 256;
+ char buffer[SIZE];
+
+ snprintf(buffer, SIZE, "MediaTranscodingService: %p\n", this);
+ result.append(buffer);
+ write(fd, result.string(), result.size());
+
+ Vector<String16> args;
+ mTranscodingClientManager.dumpAllClients(fd, args);
return OK;
}
@@ -51,15 +80,97 @@
}
Status MediaTranscodingService::registerClient(
- const std::shared_ptr<ITranscodingServiceClient>& /*in_client*/,
- const std::string& /* in_opPackageName */, int32_t /* in_clientUid */,
- int32_t /* in_clientPid */, int32_t* /*_aidl_return*/) {
- // TODO(hkuang): Add implementation.
+ const std::shared_ptr<ITranscodingServiceClient>& in_client,
+ const std::string& in_opPackageName, int32_t in_clientUid, int32_t in_clientPid,
+ int32_t* _aidl_return) {
+ if (in_client == nullptr) {
+ ALOGE("Client can not be null");
+ *_aidl_return = kInvalidJobId;
+ return Status::fromServiceSpecificError(ERROR_ILLEGAL_ARGUMENT);
+ }
+
+ int32_t callingPid = AIBinder_getCallingPid();
+ int32_t callingUid = AIBinder_getCallingUid();
+
+ // Check if we can trust clientUid. Only privilege caller could forward the uid on app client's behalf.
+ if (in_clientUid == USE_CALLING_UID) {
+ in_clientUid = callingUid;
+ } else if (!isTrustedCallingUid(callingUid)) {
+ ALOGE("MediaTranscodingService::registerClient failed (calling PID %d, calling UID %d) "
+ "rejected "
+ "(don't trust clientUid %d)",
+ in_clientPid, in_clientUid, in_clientUid);
+ return STATUS_ERROR_FMT(ERROR_PERMISSION_DENIED,
+ "Untrusted caller (calling PID %d, UID %d) trying to "
+ "register client",
+ in_clientPid, in_clientUid);
+ }
+
+ // Check if we can trust clientPid. Only privilege caller could forward the pid on app client's behalf.
+ if (in_clientPid == USE_CALLING_PID) {
+ in_clientPid = callingPid;
+ } else if (!isTrustedCallingUid(callingUid)) {
+ ALOGE("MediaTranscodingService::registerClient client failed (calling PID %d, calling UID "
+ "%d) rejected "
+ "(don't trust clientPid %d)",
+ in_clientPid, in_clientUid, in_clientPid);
+ return STATUS_ERROR_FMT(ERROR_PERMISSION_DENIED,
+ "Untrusted caller (calling PID %d, UID %d) trying to "
+ "register client",
+ in_clientPid, in_clientUid);
+ }
+
+ // We know the clientId must be equal to its pid as we assigned client's pid as its clientId.
+ int32_t clientId = in_clientPid;
+
+ // Checks if the client already registers.
+ if (mTranscodingClientManager.isClientIdRegistered(clientId)) {
+ return Status::fromServiceSpecificError(ERROR_ALREADY_EXISTS);
+ }
+
+ // Creates the client and uses its process id as client id.
+ std::unique_ptr<TranscodingClientManager::ClientInfo> newClient =
+ std::make_unique<TranscodingClientManager::ClientInfo>(
+ in_client, clientId, in_clientPid, in_clientUid, in_opPackageName);
+ status_t err = mTranscodingClientManager.addClient(std::move(newClient));
+ if (err != OK) {
+ *_aidl_return = kInvalidClientId;
+ return STATUS_ERROR_FMT(err, "Failed to add client to TranscodingClientManager");
+ }
+
+ ALOGD("Assign client: %s pid: %d, uid: %d with id: %d", in_opPackageName.c_str(), in_clientPid,
+ in_clientUid, clientId);
+
+ *_aidl_return = clientId;
return Status::ok();
}
-Status MediaTranscodingService::unregisterClient(int32_t /*clientId*/, bool* /*_aidl_return*/) {
- // TODO(hkuang): Add implementation.
+Status MediaTranscodingService::unregisterClient(int32_t clientId, bool* _aidl_return) {
+ ALOGD("unregisterClient id: %d", clientId);
+ int32_t callingUid = AIBinder_getCallingUid();
+ int32_t callingPid = AIBinder_getCallingPid();
+
+ // Only the client with clientId or the trusted caller could unregister the client.
+ if (callingPid != clientId) {
+ if (!isTrustedCallingUid(callingUid)) {
+ ALOGE("Untrusted caller (calling PID %d, UID %d) trying to "
+ "unregister client with id: %d",
+ callingUid, callingPid, clientId);
+ *_aidl_return = true;
+ return STATUS_ERROR_FMT(ERROR_PERMISSION_DENIED,
+ "Untrusted caller (calling PID %d, UID %d) trying to "
+ "unregister client with id: %d",
+ callingUid, callingPid, clientId);
+ }
+ }
+
+ *_aidl_return = (mTranscodingClientManager.removeClient(clientId) == OK);
+ return Status::ok();
+}
+
+Status MediaTranscodingService::getNumOfClients(int32_t* _aidl_return) {
+ ALOGD("MediaTranscodingService::getNumOfClients");
+ *_aidl_return = mTranscodingClientManager.getNumOfClients();
return Status::ok();
}
diff --git a/services/mediatranscoding/MediaTranscodingService.h b/services/mediatranscoding/MediaTranscodingService.h
index d225f9a..cc69727 100644
--- a/services/mediatranscoding/MediaTranscodingService.h
+++ b/services/mediatranscoding/MediaTranscodingService.h
@@ -19,6 +19,7 @@
#include <aidl/android/media/BnMediaTranscodingService.h>
#include <binder/IServiceManager.h>
+#include <media/TranscodingClientManager.h>
namespace android {
@@ -30,6 +31,9 @@
class MediaTranscodingService : public BnMediaTranscodingService {
public:
+ static constexpr int32_t kInvalidJobId = -1;
+ static constexpr int32_t kInvalidClientId = -1;
+
MediaTranscodingService();
virtual ~MediaTranscodingService();
@@ -43,6 +47,8 @@
Status unregisterClient(int32_t clientId, bool* _aidl_return) override;
+ Status getNumOfClients(int32_t* _aidl_return) override;
+
Status submitRequest(int32_t in_clientId, const TranscodingRequestParcel& in_request,
TranscodingJobParcel* out_job, int32_t* _aidl_return) override;
@@ -54,6 +60,11 @@
virtual inline binder_status_t dump(int /*fd*/, const char** /*args*/, uint32_t /*numArgs*/);
private:
+ friend class MediaTranscodingServiceTest;
+
+ mutable std::mutex mServiceLock;
+
+ TranscodingClientManager& mTranscodingClientManager;
};
} // namespace android
diff --git a/services/mediatranscoding/tests/Android.bp b/services/mediatranscoding/tests/Android.bp
new file mode 100644
index 0000000..e0e040c
--- /dev/null
+++ b/services/mediatranscoding/tests/Android.bp
@@ -0,0 +1,35 @@
+// Build the unit tests for MediaTranscodingService
+
+cc_defaults {
+ name: "mediatranscodingservice_test_defaults",
+
+ cflags: [
+ "-Wall",
+ "-Werror",
+ "-Wextra",
+ ],
+
+ include_dirs: [
+ "frameworks/av/services/mediatranscoding",
+ ],
+
+ shared_libs: [
+ "libbinder",
+ "libbinder_ndk",
+ "liblog",
+ "libutils",
+ "libmediatranscodingservice",
+ ],
+
+ static_libs: [
+ "mediatranscoding_aidl_interface-ndk_platform",
+ ],
+}
+
+// MediaTranscodingService unit test
+cc_test {
+ name: "mediatranscodingservice_tests",
+ defaults: ["mediatranscodingservice_test_defaults"],
+
+ srcs: ["mediatranscodingservice_tests.cpp"],
+}
\ No newline at end of file
diff --git a/services/mediatranscoding/tests/build_and_run_all_unit_tests.sh b/services/mediatranscoding/tests/build_and_run_all_unit_tests.sh
new file mode 100644
index 0000000..bcdc7f7
--- /dev/null
+++ b/services/mediatranscoding/tests/build_and_run_all_unit_tests.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+#
+# Run tests in this directory.
+#
+
+if [ -z "$ANDROID_BUILD_TOP" ]; then
+ echo "Android build environment not set"
+ exit -1
+fi
+
+# ensure we have mm
+. $ANDROID_BUILD_TOP/build/envsetup.sh
+
+mm
+
+echo "waiting for device"
+
+adb root && adb wait-for-device remount && adb sync
+
+echo "========================================"
+
+echo "testing mediatranscodingservice"
+adb shell /data/nativetest64/mediatranscodingservice_tests/mediatranscodingservice_tests
diff --git a/services/mediatranscoding/tests/mediatranscodingservice_tests.cpp b/services/mediatranscoding/tests/mediatranscodingservice_tests.cpp
new file mode 100644
index 0000000..5a791fe
--- /dev/null
+++ b/services/mediatranscoding/tests/mediatranscodingservice_tests.cpp
@@ -0,0 +1,239 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+
+// Unit Test for MediaTranscoding Service.
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "MediaTranscodingServiceTest"
+
+#include <aidl/android/media/BnTranscodingServiceClient.h>
+#include <aidl/android/media/IMediaTranscodingService.h>
+#include <aidl/android/media/ITranscodingServiceClient.h>
+#include <android-base/logging.h>
+#include <android-base/unique_fd.h>
+#include <android/binder_ibinder_jni.h>
+#include <android/binder_manager.h>
+#include <android/binder_process.h>
+#include <cutils/ashmem.h>
+#include <gtest/gtest.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+#include <utils/Log.h>
+
+namespace android {
+
+namespace media {
+
+using Status = ::ndk::ScopedAStatus;
+using aidl::android::media::BnTranscodingServiceClient;
+using aidl::android::media::IMediaTranscodingService;
+using aidl::android::media::ITranscodingServiceClient;
+
+constexpr int32_t kInvalidClientId = -5;
+
+// Note that -1 is valid and means using calling pid/uid for the service. But only privilege caller could
+// use them. This test is not a privilege caller.
+constexpr int32_t kInvalidClientPid = -5;
+constexpr int32_t kInvalidClientUid = -5;
+constexpr const char* kInvalidClientOpPackageName = "";
+
+constexpr int32_t kClientUseCallingPid = -1;
+constexpr int32_t kClientUseCallingUid = -1;
+constexpr const char* kClientOpPackageName = "TestClient";
+
+class MediaTranscodingServiceTest : public ::testing::Test {
+public:
+ MediaTranscodingServiceTest() { ALOGD("MediaTranscodingServiceTest created"); }
+
+ void SetUp() override {
+ ::ndk::SpAIBinder binder(AServiceManager_getService("media.transcoding"));
+ mService = IMediaTranscodingService::fromBinder(binder);
+ if (mService == nullptr) {
+ ALOGE("Failed to connect to the media.trascoding service.");
+ return;
+ }
+ }
+
+ ~MediaTranscodingServiceTest() { ALOGD("MediaTranscodingingServiceTest destroyed"); }
+
+ std::shared_ptr<IMediaTranscodingService> mService = nullptr;
+};
+
+struct TestClient : public BnTranscodingServiceClient {
+ TestClient(const std::shared_ptr<IMediaTranscodingService>& service) : mService(service) {
+ ALOGD("TestClient Created");
+ }
+
+ Status getName(std::string* _aidl_return) override {
+ *_aidl_return = "test_client";
+ return Status::ok();
+ }
+
+ Status onTranscodingFinished(
+ int32_t /* in_jobId */,
+ const ::aidl::android::media::TranscodingResultParcel& /* in_result */) override {
+ return Status::ok();
+ }
+
+ Status onTranscodingFailed(
+ int32_t /* in_jobId */,
+ ::aidl::android::media::TranscodingErrorCode /*in_errorCode */) override {
+ return Status::ok();
+ }
+
+ Status onAwaitNumberOfJobsChanged(int32_t /* in_jobId */, int32_t /* in_oldAwaitNumber */,
+ int32_t /* in_newAwaitNumber */) override {
+ return Status::ok();
+ }
+
+ Status onProgressUpdate(int32_t /* in_jobId */, int32_t /* in_progress */) override {
+ return Status::ok();
+ }
+
+ virtual ~TestClient() { ALOGI("TestClient destroyed"); };
+
+private:
+ std::shared_ptr<IMediaTranscodingService> mService;
+};
+
+TEST_F(MediaTranscodingServiceTest, TestRegisterNullClient) {
+ std::shared_ptr<ITranscodingServiceClient> client = nullptr;
+ int32_t clientId = 0;
+ Status status = mService->registerClient(client, kClientOpPackageName, kClientUseCallingUid,
+ kClientUseCallingPid, &clientId);
+ EXPECT_FALSE(status.isOk());
+}
+
+TEST_F(MediaTranscodingServiceTest, TestRegisterClientWithInvalidClientPid) {
+ std::shared_ptr<ITranscodingServiceClient> client =
+ ::ndk::SharedRefBase::make<TestClient>(mService);
+ EXPECT_TRUE(client != nullptr);
+
+ // Register the client with the service.
+ int32_t clientId = 0;
+ Status status = mService->registerClient(client, kClientOpPackageName, kClientUseCallingUid,
+ kInvalidClientPid, &clientId);
+ EXPECT_FALSE(status.isOk());
+}
+
+TEST_F(MediaTranscodingServiceTest, TestRegisterClientWithInvalidClientUid) {
+ std::shared_ptr<ITranscodingServiceClient> client =
+ ::ndk::SharedRefBase::make<TestClient>(mService);
+ EXPECT_TRUE(client != nullptr);
+
+ // Register the client with the service.
+ int32_t clientId = 0;
+ Status status = mService->registerClient(client, kClientOpPackageName, kInvalidClientUid,
+ kClientUseCallingPid, &clientId);
+ EXPECT_FALSE(status.isOk());
+}
+
+TEST_F(MediaTranscodingServiceTest, TestRegisterClientWithInvalidClientPackageName) {
+ std::shared_ptr<ITranscodingServiceClient> client =
+ ::ndk::SharedRefBase::make<TestClient>(mService);
+ EXPECT_TRUE(client != nullptr);
+
+ // Register the client with the service.
+ int32_t clientId = 0;
+ Status status = mService->registerClient(client, kInvalidClientOpPackageName,
+ kClientUseCallingUid, kClientUseCallingPid, &clientId);
+ EXPECT_FALSE(status.isOk());
+}
+
+TEST_F(MediaTranscodingServiceTest, TestRegisterOneClient) {
+ std::shared_ptr<ITranscodingServiceClient> client =
+ ::ndk::SharedRefBase::make<TestClient>(mService);
+ EXPECT_TRUE(client != nullptr);
+
+ // Register the client with the service.
+ int32_t clientId = 0;
+ Status status = mService->registerClient(client, kClientOpPackageName, kClientUseCallingPid,
+ kClientUseCallingUid, &clientId);
+ ALOGD("client id is %d", clientId);
+ EXPECT_TRUE(status.isOk());
+
+ // Validate the clientId.
+ EXPECT_TRUE(clientId > 0);
+
+ // Check the number of Clients.
+ int32_t numOfClients;
+ status = mService->getNumOfClients(&numOfClients);
+ EXPECT_TRUE(status.isOk());
+ EXPECT_EQ(1, numOfClients);
+
+ // Unregister the client.
+ bool res;
+ status = mService->unregisterClient(clientId, &res);
+ EXPECT_TRUE(status.isOk());
+ EXPECT_TRUE(res);
+}
+
+TEST_F(MediaTranscodingServiceTest, TestUnRegisterClientWithInvalidClientId) {
+ std::shared_ptr<ITranscodingServiceClient> client =
+ ::ndk::SharedRefBase::make<TestClient>(mService);
+ EXPECT_TRUE(client != nullptr);
+
+ // Register the client with the service.
+ int32_t clientId = 0;
+ Status status = mService->registerClient(client, kClientOpPackageName, kClientUseCallingUid,
+ kClientUseCallingPid, &clientId);
+ ALOGD("client id is %d", clientId);
+ EXPECT_TRUE(status.isOk());
+
+ // Validate the clientId.
+ EXPECT_TRUE(clientId > 0);
+
+ // Check the number of Clients.
+ int32_t numOfClients;
+ status = mService->getNumOfClients(&numOfClients);
+ EXPECT_TRUE(status.isOk());
+ EXPECT_EQ(1, numOfClients);
+
+ // Unregister the client with invalid ID
+ bool res;
+ mService->unregisterClient(kInvalidClientId, &res);
+ EXPECT_FALSE(res);
+
+ // Unregister the valid client.
+ mService->unregisterClient(clientId, &res);
+}
+
+TEST_F(MediaTranscodingServiceTest, TestRegisterClientTwice) {
+ std::shared_ptr<ITranscodingServiceClient> client =
+ ::ndk::SharedRefBase::make<TestClient>(mService);
+ EXPECT_TRUE(client != nullptr);
+
+ // Register the client with the service.
+ int32_t clientId = 0;
+ Status status = mService->registerClient(client, kClientOpPackageName, kClientUseCallingUid,
+ kClientUseCallingPid, &clientId);
+ EXPECT_TRUE(status.isOk());
+
+ // Validate the clientId.
+ EXPECT_TRUE(clientId > 0);
+
+ // Register the client again and expects failure.
+ status = mService->registerClient(client, kClientOpPackageName, kClientUseCallingUid,
+ kClientUseCallingPid, &clientId);
+ EXPECT_FALSE(status.isOk());
+
+ // Unregister the valid client.
+ bool res;
+ mService->unregisterClient(clientId, &res);
+}
+
+} // namespace media
+} // namespace android