Camera3: Handle stream format override for shared output stream

If HAL overrides stream format, use the overridden format to configure
the buffer queues.

Bug: 113326269
Test: Camera CTS
Change-Id: I6b198e8ebfeaeafbda530722d995a12f88f0b35a
gugelfrei
Shuzhen Wang 6 years ago
parent 0d97cec053
commit 2f074ce7ca

@ -60,9 +60,8 @@ status_t Camera3SharedOutputStream::connectStreamSplitterLocked() {
}
}
android::PixelFormat format = isFormatOverridden() ? getOriginalFormat() : getFormat();
res = mStreamSplitter->connect(initialSurfaces, usage, mUsage, camera3_stream::max_buffers,
getWidth(), getHeight(), format, &mConsumer);
getWidth(), getHeight(), getFormat(), &mConsumer);
if (res != OK) {
ALOGE("%s: Failed to connect to stream splitter: %s(%d)",
__FUNCTION__, strerror(-res), res);

@ -182,12 +182,19 @@ status_t Camera3StreamSplitter::addOutputLocked(size_t surfaceId, const sp<Surfa
return BAD_VALUE;
}
status_t res = native_window_set_buffers_dimensions(outputQueue.get(),
status_t res = native_window_set_buffers_dimensions(outputQueue.get(),
mWidth, mHeight);
if (res != NO_ERROR) {
SP_LOGE("addOutput: failed to set buffer dimensions (%d)", res);
return res;
}
res = native_window_set_buffers_format(outputQueue.get(),
mFormat);
if (res != OK) {
ALOGE("%s: Unable to configure stream buffer format %#x for surfaceId %zu",
__FUNCTION__, mFormat, surfaceId);
return res;
}
sp<IGraphicBufferProducer> gbp = outputQueue->getIGraphicBufferProducer();
// Connect to the buffer producer

Loading…
Cancel
Save