Merge "stagefright: fix finding hardware codec"
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..6fd6c72
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,4 @@
+subdirs = [
+ "media/libmedia",
+ "media/libstagefright/foundation",
+]
diff --git a/camera/ndk/impl/ACameraCaptureSession.h b/camera/ndk/impl/ACameraCaptureSession.h
index 58428e6..f56219c 100644
--- a/camera/ndk/impl/ACameraCaptureSession.h
+++ b/camera/ndk/impl/ACameraCaptureSession.h
@@ -24,7 +24,7 @@
using namespace android;
struct ACaptureSessionOutput {
- ACaptureSessionOutput(ANativeWindow* window) : mWindow(window) {};
+ explicit ACaptureSessionOutput(ANativeWindow* window) : mWindow(window) {};
bool operator == (const ACaptureSessionOutput& other) const {
return mWindow == other.mWindow;
diff --git a/camera/ndk/impl/ACameraDevice.h b/camera/ndk/impl/ACameraDevice.h
index 71e364d..051462b 100644
--- a/camera/ndk/impl/ACameraDevice.h
+++ b/camera/ndk/impl/ACameraDevice.h
@@ -65,7 +65,7 @@
// Callbacks from camera service
class ServiceCallback : public hardware::camera2::BnCameraDeviceCallbacks {
public:
- ServiceCallback(CameraDevice* device) : mDevice(device) {}
+ explicit ServiceCallback(CameraDevice* device) : mDevice(device) {}
binder::Status onDeviceError(int32_t errorCode,
const CaptureResultExtras& resultExtras) override;
binder::Status onDeviceIdle() override;
diff --git a/camera/ndk/impl/ACameraManager.h b/camera/ndk/impl/ACameraManager.h
index 3f2262f..5b88904 100644
--- a/camera/ndk/impl/ACameraManager.h
+++ b/camera/ndk/impl/ACameraManager.h
@@ -60,7 +60,7 @@
class DeathNotifier : public IBinder::DeathRecipient {
public:
- DeathNotifier(CameraManagerGlobal* cm) : mCameraManager(cm) {}
+ explicit DeathNotifier(CameraManagerGlobal* cm) : mCameraManager(cm) {}
protected:
// IBinder::DeathRecipient implementation
virtual void binderDied(const wp<IBinder>& who);
@@ -71,7 +71,7 @@
class CameraServiceListener final : public hardware::BnCameraServiceListener {
public:
- CameraServiceListener(CameraManagerGlobal* cm) : mCameraManager(cm) {}
+ explicit CameraServiceListener(CameraManagerGlobal* cm) : mCameraManager(cm) {}
virtual binder::Status onStatusChanged(int32_t status, int32_t cameraId);
// Torch API not implemented yet
@@ -86,7 +86,7 @@
// Wrapper of ACameraManager_AvailabilityCallbacks so we can store it in std::set
struct Callback {
- Callback(const ACameraManager_AvailabilityCallbacks *callback) :
+ explicit Callback(const ACameraManager_AvailabilityCallbacks *callback) :
mAvailable(callback->onCameraAvailable),
mUnavailable(callback->onCameraUnavailable),
mContext(callback->context) {}
diff --git a/camera/ndk/impl/ACaptureRequest.h b/camera/ndk/impl/ACaptureRequest.h
index 6bd8406..3ef6a84 100644
--- a/camera/ndk/impl/ACaptureRequest.h
+++ b/camera/ndk/impl/ACaptureRequest.h
@@ -22,7 +22,7 @@
using namespace android;
struct ACameraOutputTarget {
- ACameraOutputTarget(ANativeWindow* window) : mWindow(window) {};
+ explicit ACameraOutputTarget(ANativeWindow* window) : mWindow(window) {};
bool operator == (const ACameraOutputTarget& other) const {
return mWindow == other.mWindow;
diff --git a/drm/libmediadrm/Android.mk b/drm/libmediadrm/Android.mk
index 6a2ed31..f1c6b00 100644
--- a/drm/libmediadrm/Android.mk
+++ b/drm/libmediadrm/Android.mk
@@ -23,9 +23,6 @@
libstagefright_foundation \
libutils
-LOCAL_C_INCLUDES := \
- libcore/include
-
LOCAL_CFLAGS += -Werror -Wno-error=deprecated-declarations -Wall
LOCAL_CLANG := true
diff --git a/include/camera/Camera.h b/include/camera/Camera.h
index be793a2..57dc228 100644
--- a/include/camera/Camera.h
+++ b/include/camera/Camera.h
@@ -170,7 +170,7 @@
class RecordingProxy : public BnCameraRecordingProxy
{
public:
- RecordingProxy(const sp<Camera>& camera);
+ explicit RecordingProxy(const sp<Camera>& camera);
// ICameraRecordingProxy interface
virtual status_t startRecording(const sp<ICameraRecordingProxyListener>& listener);
@@ -183,7 +183,7 @@
};
protected:
- Camera(int cameraId);
+ explicit Camera(int cameraId);
Camera(const Camera&);
Camera& operator=(const Camera);
diff --git a/include/media/mediaplayer.h b/include/media/mediaplayer.h
index cec9d99..389ec01 100644
--- a/include/media/mediaplayer.h
+++ b/include/media/mediaplayer.h
@@ -30,7 +30,7 @@
#include <utils/KeyedVector.h>
#include <utils/String8.h>
-class ANativeWindow;
+struct ANativeWindow;
namespace android {
diff --git a/media/libeffects/preprocessing/Android.mk b/media/libeffects/preprocessing/Android.mk
index 4e4b094..bd67aa1 100644
--- a/media/libeffects/preprocessing/Android.mk
+++ b/media/libeffects/preprocessing/Android.mk
@@ -16,8 +16,6 @@
external/webrtc/webrtc/modules/audio_processing/include \
$(call include-path-for, audio-effects)
-LOCAL_C_INCLUDES += $(call include-path-for, speex)
-
LOCAL_SHARED_LIBRARIES := \
libwebrtc_audio_preprocessing \
libspeexresampler \
diff --git a/media/libmedia/Android.bp b/media/libmedia/Android.bp
new file mode 100644
index 0000000..7fde4b2
--- /dev/null
+++ b/media/libmedia/Android.bp
@@ -0,0 +1,10 @@
+cc_library_static {
+ name: "libmedia_helper",
+ srcs: ["AudioParameter.cpp"],
+ cflags: [
+ "-Werror",
+ "-Wno-error=deprecated-declarations",
+ "-Wall",
+ ],
+ clang: true,
+}
diff --git a/media/libmedia/Android.mk b/media/libmedia/Android.mk
index 1b92123..202b5f8 100644
--- a/media/libmedia/Android.mk
+++ b/media/libmedia/Android.mk
@@ -3,18 +3,6 @@
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
- AudioParameter.cpp
-LOCAL_MODULE:= libmedia_helper
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_CFLAGS += -Werror -Wno-error=deprecated-declarations -Wall
-LOCAL_CLANG := true
-
-include $(BUILD_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= \
AudioTrack.cpp \
AudioTrackShared.cpp \
IAudioFlinger.cpp \
diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk
index 31a6992..98ccc42 100644
--- a/media/libmediaplayerservice/Android.mk
+++ b/media/libmediaplayerservice/Android.mk
@@ -55,7 +55,6 @@
$(TOP)/frameworks/native/include/media/openmax \
$(TOP)/frameworks/native/include/media/hardware \
$(TOP)/external/tremolo/Tremolo \
- libcore/include \
LOCAL_CFLAGS += -Werror -Wno-error=deprecated-declarations -Wall
LOCAL_CLANG := true
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 8bb1086..d3c6c5d 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -237,7 +237,8 @@
// copying array size -1, array for tags was calloc'd, no need to NULL-terminate it
size_t tagSize = realTagSize > AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - 1 ?
AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - 1 : realTagSize;
- utf16_to_utf8(tags.string(), tagSize, attributes->tags);
+ utf16_to_utf8(tags.string(), tagSize, attributes->tags,
+ sizeof(attributes->tags) / sizeof(attributes->tags[0]));
}
} else {
ALOGE("unmarshallAudioAttributes() received unflattened tags, ignoring tag values");
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.h b/media/libmediaplayerservice/nuplayer/GenericSource.h
index 9fe49af..0957778 100644
--- a/media/libmediaplayerservice/nuplayer/GenericSource.h
+++ b/media/libmediaplayerservice/nuplayer/GenericSource.h
@@ -117,7 +117,7 @@
// When necessary, it will send out buffering events to the player.
struct BufferingMonitor : public AHandler {
public:
- BufferingMonitor(const sp<AMessage> ¬ify);
+ explicit BufferingMonitor(const sp<AMessage> ¬ify);
// Set up state.
void prepare(const sp<NuCachedSource2> &cachedSource,
diff --git a/media/libstagefright/foundation/Android.bp b/media/libstagefright/foundation/Android.bp
new file mode 100644
index 0000000..f7bd3f2
--- /dev/null
+++ b/media/libstagefright/foundation/Android.bp
@@ -0,0 +1,51 @@
+cc_library_shared {
+ name: "libstagefright_foundation",
+
+ srcs: [
+ "AAtomizer.cpp",
+ "ABitReader.cpp",
+ "ABuffer.cpp",
+ "ADebug.cpp",
+ "AHandler.cpp",
+ "AHierarchicalStateMachine.cpp",
+ "ALooper.cpp",
+ "ALooperRoster.cpp",
+ "AMessage.cpp",
+ "ANetworkSession.cpp",
+ "AString.cpp",
+ "AStringUtils.cpp",
+ "AWakeLock.cpp",
+ "ColorUtils.cpp",
+ "MediaBuffer.cpp",
+ "MediaBufferGroup.cpp",
+ "MetaData.cpp",
+ "ParsedMessage.cpp",
+ "base64.cpp",
+ "hexdump.cpp",
+ ],
+
+ include_dirs: ["frameworks/av/include/media/stagefright/foundation"],
+
+ shared_libs: [
+ "libbinder",
+ "libutils",
+ "libcutils",
+ "liblog",
+ "libpowermanager",
+ ],
+
+ export_shared_lib_headers: ["libbinder"],
+
+ cflags: [
+ "-Wno-multichar",
+ "-Werror",
+ "-Wall",
+ ],
+ clang: true,
+ sanitize: {
+ misc_undefined: [
+ "unsigned-integer-overflow",
+ "signed-integer-overflow",
+ ],
+ },
+}
diff --git a/media/libstagefright/foundation/Android.mk b/media/libstagefright/foundation/Android.mk
deleted file mode 100644
index b977c65..0000000
--- a/media/libstagefright/foundation/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= \
- AAtomizer.cpp \
- ABitReader.cpp \
- ABuffer.cpp \
- ADebug.cpp \
- AHandler.cpp \
- AHierarchicalStateMachine.cpp \
- ALooper.cpp \
- ALooperRoster.cpp \
- AMessage.cpp \
- ANetworkSession.cpp \
- AString.cpp \
- AStringUtils.cpp \
- AWakeLock.cpp \
- ColorUtils.cpp \
- MediaBuffer.cpp \
- MediaBufferGroup.cpp \
- MetaData.cpp \
- ParsedMessage.cpp \
- base64.cpp \
- hexdump.cpp
-
-LOCAL_C_INCLUDES:= \
- frameworks/av/include/media/stagefright/foundation
-
-LOCAL_SHARED_LIBRARIES := \
- libbinder \
- libutils \
- libcutils \
- liblog \
- libpowermanager
-
-LOCAL_EXPORT_SHARED_LIBRARY_HEADERS := libbinder
-
-LOCAL_CFLAGS += -Wno-multichar -Werror -Wall
-LOCAL_CLANG := true
-LOCAL_SANITIZE := unsigned-integer-overflow signed-integer-overflow
-
-LOCAL_MODULE:= libstagefright_foundation
-
-
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/media/libstagefright/omx/GraphicBufferSource.cpp b/media/libstagefright/omx/GraphicBufferSource.cpp
index 422f87f..63424f7 100644
--- a/media/libstagefright/omx/GraphicBufferSource.cpp
+++ b/media/libstagefright/omx/GraphicBufferSource.cpp
@@ -921,11 +921,12 @@
* frameNum: frame number of the frame being released
* buffer: GraphicBuffer pointer to release (note this must not be & as we
* will clear the original mBufferSlot in persistent case)
+ * Use NOLINT to supress warning on the copy of 'buffer'.
* fence: fence of the frame being released
*/
void GraphicBufferSource::releaseBuffer(
int &id, uint64_t frameNum,
- const sp<GraphicBuffer> &buffer, const sp<Fence> &fence) {
+ const sp<GraphicBuffer> buffer, const sp<Fence> &fence) { // NOLINT
if (mIsPersistent) {
mConsumer->detachBuffer(id);
mBufferSlot[id] = NULL;
diff --git a/media/libstagefright/omx/GraphicBufferSource.h b/media/libstagefright/omx/GraphicBufferSource.h
index 3fcab2b..c8b0e62 100644
--- a/media/libstagefright/omx/GraphicBufferSource.h
+++ b/media/libstagefright/omx/GraphicBufferSource.h
@@ -242,7 +242,7 @@
// Release buffer to the consumer
void releaseBuffer(
int &id, uint64_t frameNum,
- const sp<GraphicBuffer> &buffer, const sp<Fence> &fence);
+ const sp<GraphicBuffer> buffer, const sp<Fence> &fence);
void setLatestBuffer_l(const BufferItem &item, bool dropped);
bool repeatLatestBuffer_l();
diff --git a/media/ndk/NdkImageReaderPriv.h b/media/ndk/NdkImageReaderPriv.h
index 48f0953..8b540fa 100644
--- a/media/ndk/NdkImageReaderPriv.h
+++ b/media/ndk/NdkImageReaderPriv.h
@@ -112,7 +112,7 @@
struct FrameListener : public ConsumerBase::FrameAvailableListener {
public:
- FrameListener(AImageReader* parent) : mReader(parent) {}
+ explicit FrameListener(AImageReader* parent) : mReader(parent) {}
void onFrameAvailable(const BufferItem& item) override;
diff --git a/services/audioflinger/Android.mk b/services/audioflinger/Android.mk
index 4f826e5..5388adc 100644
--- a/services/audioflinger/Android.mk
+++ b/services/audioflinger/Android.mk
@@ -34,7 +34,6 @@
LOCAL_C_INCLUDES := \
$(TOPDIR)frameworks/av/services/audiopolicy \
$(TOPDIR)external/sonic \
- libcore/include \
$(call include-path-for, audio-effects) \
$(call include-path-for, audio-utils)
diff --git a/services/audioflinger/AutoPark.h b/services/audioflinger/AutoPark.h
index e539e47..9ac7b65 100644
--- a/services/audioflinger/AutoPark.h
+++ b/services/audioflinger/AutoPark.h
@@ -21,7 +21,7 @@
public:
// Park the specific FastThread, which can be nullptr, in hot idle if not currently idling
- AutoPark(const sp<T>& fastThread) : mFastThread(fastThread)
+ explicit AutoPark(const sp<T>& fastThread) : mFastThread(fastThread)
{
mPreviousCommand = FastThreadState::HOT_IDLE;
if (fastThread != nullptr) {
diff --git a/services/audioflinger/LinearMap.h b/services/audioflinger/LinearMap.h
index fca14dd..2220a0c 100644
--- a/services/audioflinger/LinearMap.h
+++ b/services/audioflinger/LinearMap.h
@@ -134,7 +134,7 @@
FIND_METHOD_START_VALUE, // No samples in history, using start value
};
- LinearMap(size_t size)
+ explicit LinearMap(size_t size)
: mSize(size),
mPos(0), // a circular buffer, so could start anywhere. the first sample is at 1.
mSamples(0),
diff --git a/services/audiopolicy/common/managerdefinitions/include/AudioRoute.h b/services/audiopolicy/common/managerdefinitions/include/AudioRoute.h
index 67e197f..df54f48 100644
--- a/services/audiopolicy/common/managerdefinitions/include/AudioRoute.h
+++ b/services/audiopolicy/common/managerdefinitions/include/AudioRoute.h
@@ -36,7 +36,7 @@
class AudioRoute : public virtual RefBase
{
public:
- AudioRoute(audio_route_type_t type) : mType(type) {}
+ explicit AudioRoute(audio_route_type_t type) : mType(type) {}
void setSources(const AudioPortVector &sources) { mSources = sources; }
const AudioPortVector &getSources() const { return mSources; }
diff --git a/services/audiopolicy/common/managerdefinitions/include/IOProfile.h b/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
index e3ad44d..ec04ef7 100644
--- a/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
+++ b/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
@@ -110,13 +110,13 @@
class InputProfile : public IOProfile
{
public:
- InputProfile(const String8 &name) : IOProfile(name, AUDIO_PORT_ROLE_SINK) {}
+ explicit InputProfile(const String8 &name) : IOProfile(name, AUDIO_PORT_ROLE_SINK) {}
};
class OutputProfile : public IOProfile
{
public:
- OutputProfile(const String8 &name) : IOProfile(name, AUDIO_PORT_ROLE_SOURCE) {}
+ explicit OutputProfile(const String8 &name) : IOProfile(name, AUDIO_PORT_ROLE_SOURCE) {}
};
}; // namespace android
diff --git a/services/audiopolicy/service/AudioPolicyClientImplLegacy.cpp b/services/audiopolicy/service/AudioPolicyClientImplLegacy.cpp
index 151d066..dabffe6 100644
--- a/services/audiopolicy/service/AudioPolicyClientImplLegacy.cpp
+++ b/services/audiopolicy/service/AudioPolicyClientImplLegacy.cpp
@@ -56,7 +56,7 @@
sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
if (af == 0) {
ALOGW("%s: could not get AudioFlinger", __func__);
- return 0;
+ return AUDIO_MODULE_HANDLE_NONE;
}
return af->loadHwModule(name);
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index b20fd63..5062a08 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -31,6 +31,7 @@
#include <android/hardware/ICamera.h>
#include <android/hardware/ICameraClient.h>
+#include <android-base/macros.h>
#include <binder/AppOpsManager.h>
#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>
@@ -925,13 +926,18 @@
const String8& clientName8, /*inout*/int& clientUid, /*inout*/int& clientPid,
/*out*/int& originalClientPid) const {
-#if !defined(__BRILLO__)
+#ifdef __BRILLO__
+ UNUSED(clientName8);
+ UNUSED(clientUid);
+ UNUSED(clientPid);
+ UNUSED(originalClientPid);
+#else
Status allowed = validateClientPermissionsLocked(cameraId, clientName8, clientUid, clientPid,
originalClientPid);
if (!allowed.isOk()) {
return allowed;
}
-#endif // defined(__BRILLO__)
+#endif // __BRILLO__
int callingPid = getCallingPid();
diff --git a/services/camera/libcameraservice/device3/Camera3BufferManager.h b/services/camera/libcameraservice/device3/Camera3BufferManager.h
index ab6541e..b5b86a3 100644
--- a/services/camera/libcameraservice/device3/Camera3BufferManager.h
+++ b/services/camera/libcameraservice/device3/Camera3BufferManager.h
@@ -44,7 +44,7 @@
*/
class Camera3BufferManager: public virtual RefBase {
public:
- Camera3BufferManager(const sp<IGraphicBufferAlloc>& allocator = NULL);
+ explicit Camera3BufferManager(const sp<IGraphicBufferAlloc>& allocator = NULL);
virtual ~Camera3BufferManager();
@@ -195,7 +195,7 @@
struct GraphicBufferEntry {
sp<GraphicBuffer> graphicBuffer;
int fenceFd;
- GraphicBufferEntry(const sp<GraphicBuffer>& gb = 0, int fd = -1) :
+ explicit GraphicBufferEntry(const sp<GraphicBuffer>& gb = 0, int fd = -1) :
graphicBuffer(gb),
fenceFd(fd) {}
};
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index 5a20c21..843b182 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -3052,7 +3052,7 @@
mFlushLock.lock();
}
- ALOGVV("%s: %d: submitting %d requests in a batch.", __FUNCTION__, __LINE__,
+ ALOGVV("%s: %d: submitting %zu requests in a batch.", __FUNCTION__, __LINE__,
mNextRequests.size());
for (auto& nextRequest : mNextRequests) {
// Submit request and block until ready for next one
diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
index d09951a..dff5a49 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
@@ -435,6 +435,12 @@
__FUNCTION__, mTransform, strerror(-res), res);
}
+ // Set dequeueBuffer/attachBuffer timeout if the consumer is not hw composer or hw texture.
+ // We need skip these cases as timeout will disable the non-blocking (async) mode.
+ if (!(isConsumedByHWComposer() || isConsumedByHWTexture())) {
+ mConsumer->setDequeueTimeout(kDequeueBufferTimeout);
+ }
+
/**
* Camera3 Buffer manager is only supported by HAL3.3 onwards, as the older HALs requires
* buffers to be statically allocated for internal static buffer registration, while the
@@ -633,6 +639,17 @@
return (usage & GRALLOC_USAGE_HW_COMPOSER) != 0;
}
+bool Camera3OutputStream::isConsumedByHWTexture() const {
+ uint32_t usage = 0;
+ status_t res = getEndpointUsage(&usage);
+ if (res != OK) {
+ ALOGE("%s: getting end point usage failed: %s (%d).", __FUNCTION__, strerror(-res), res);
+ return false;
+ }
+
+ return (usage & GRALLOC_USAGE_HW_TEXTURE) != 0;
+}
+
}; // namespace camera3
}; // namespace android
diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.h b/services/camera/libcameraservice/device3/Camera3OutputStream.h
index 7d28b05..46c1465 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputStream.h
+++ b/services/camera/libcameraservice/device3/Camera3OutputStream.h
@@ -46,7 +46,7 @@
uint32_t combinedUsage;
size_t totalBufferCount;
bool isConfigured;
- StreamInfo(int id = CAMERA3_STREAM_ID_INVALID,
+ explicit StreamInfo(int id = CAMERA3_STREAM_ID_INVALID,
int setId = CAMERA3_STREAM_SET_ID_INVALID,
uint32_t w = 0,
uint32_t h = 0,
@@ -117,6 +117,11 @@
*/
bool isConsumedByHWComposer() const;
+ /**
+ * Return if this output stream is consumed by hardware texture.
+ */
+ bool isConsumedByHWTexture() const;
+
class BufferReleasedListener : public BnProducerListener {
public:
BufferReleasedListener(wp<Camera3OutputStream> parent) : mParent(parent) {}
@@ -160,6 +165,9 @@
sp<Surface> mConsumer;
private:
+
+ static const nsecs_t kDequeueBufferTimeout = 1000000000; // 1 sec
+
int mTransform;
virtual status_t setTransformLocked(int transform);