Loading media/codec2/hal/hidl/1.0/vts/functional/video/VtsHalMediaC2V1_0TargetVideoDecTest.cpp +12 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ #include <C2Debug.h> #include <codec2/common/HalSelection.h> #include <codec2/hidl/client.h> #include <com_android_graphics_libgui_flags.h> #include <gui/BufferQueue.h> #include <gui/IConsumerListener.h> #include <gui/IProducerListener.h> Loading Loading @@ -423,7 +424,6 @@ void setOutputSurface(const std::shared_ptr<android::Codec2Client::Component>& c surfaceMode_t surfMode) { using namespace android; sp<IGraphicBufferProducer> producer = nullptr; sp<IGraphicBufferConsumer> consumer = nullptr; sp<GLConsumer> texture = nullptr; sp<ANativeWindow> surface = nullptr; static std::atomic_uint32_t surfaceGeneration{0}; Loading @@ -442,6 +442,16 @@ void setOutputSurface(const std::shared_ptr<android::Codec2Client::Component>& c } if (surfMode == SURFACE) { #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) texture = new GLConsumer(0 /* tex */, GLConsumer::TEXTURE_EXTERNAL, true /* useFenceSync */, false /* isControlledByApp */); sp<Surface> s = texture->getSurface(); surface = s; ASSERT_NE(surface, nullptr) << "failed to create Surface object"; producer = s->getIGraphicBufferProducer(); #else sp<IGraphicBufferConsumer> consumer = nullptr; BufferQueue::createBufferQueue(&producer, &consumer); ASSERT_NE(producer, nullptr) << "createBufferQueue returned invalid producer"; ASSERT_NE(consumer, nullptr) << "createBufferQueue returned invalid consumer"; Loading @@ -452,6 +462,7 @@ void setOutputSurface(const std::shared_ptr<android::Codec2Client::Component>& c surface = new Surface(producer); ASSERT_NE(surface, nullptr) << "failed to create Surface object"; #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) producer->setGenerationNumber(generation); } Loading media/libstagefright/CameraSource.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include <camera/Camera.h> #include <camera/CameraParameters.h> #include <camera/StringUtils.h> #include <com_android_graphics_libgui_flags.h> #include <gui/Surface.h> #include <utils/String8.h> #include <cutils/properties.h> Loading Loading @@ -471,11 +472,13 @@ status_t CameraSource::initBufferQueue(uint32_t width, uint32_t height, ALOGE("%s: Buffer queue already exists", __FUNCTION__); return ALREADY_EXISTS; } #if !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) // Create a buffer queue. sp<IGraphicBufferProducer> producer; sp<IGraphicBufferConsumer> consumer; BufferQueue::createBufferQueue(&producer, &consumer); #endif // !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) uint32_t usage = GRALLOC_USAGE_SW_READ_OFTEN; if (format == HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) { Loading @@ -484,9 +487,15 @@ status_t CameraSource::initBufferQueue(uint32_t width, uint32_t height, bufferCount += kConsumerBufferCount; #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mVideoBufferConsumer = new BufferItemConsumer(usage, bufferCount); mVideoBufferConsumer->setName(String8::format("StageFright-CameraSource")); mVideoBufferProducer = mVideoBufferConsumer->getSurface()->getIGraphicBufferProducer(); #else mVideoBufferConsumer = new BufferItemConsumer(consumer, usage, bufferCount); mVideoBufferConsumer->setName(String8::format("StageFright-CameraSource")); mVideoBufferProducer = producer; #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) status_t res = mVideoBufferConsumer->setDefaultBufferSize(width, height); if (res != OK) { Loading media/ndk/NdkImageReader.cpp +27 −4 Original line number Diff line number Diff line Loading @@ -22,13 +22,15 @@ #include "NdkImagePriv.h" #include "NdkImageReaderPriv.h" #include <cutils/atomic.h> #include <utils/Log.h> #include <android_media_Utils.h> #include <ui/PublicFormat.h> #include <private/android/AHardwareBufferHelpers.h> #include <com_android_graphics_libgui_flags.h> #include <grallocusage/GrallocUsageConversion.h> #include <gui/bufferqueue/1.0/WGraphicBufferProducer.h> #include <private/android/AHardwareBufferHelpers.h> #include <ui/PublicFormat.h> #include <utils/Log.h> #include <cutils/atomic.h> using namespace android; Loading Loading @@ -291,22 +293,30 @@ media_status_t AImageReader::init() { mHalUsage = AHardwareBuffer_convertToGrallocUsageBits(mUsage); #if !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) sp<IGraphicBufferProducer> gbProducer; sp<IGraphicBufferConsumer> gbConsumer; BufferQueue::createBufferQueue(&gbProducer, &gbConsumer); #endif // !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) String8 consumerName = String8::format("ImageReader-%dx%df%xu%" PRIu64 "m%d-%d-%d", mWidth, mHeight, mFormat, mUsage, mMaxImages, getpid(), createProcessUniqueId()); #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mBufferItemConsumer = new BufferItemConsumer(mHalUsage, mMaxImages, /*controlledByApp*/ true); #else mBufferItemConsumer = new BufferItemConsumer(gbConsumer, mHalUsage, mMaxImages, /*controlledByApp*/ true); #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) if (mBufferItemConsumer == nullptr) { ALOGE("Failed to allocate BufferItemConsumer"); return AMEDIA_ERROR_UNKNOWN; } #if !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mProducer = gbProducer; #endif // !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mBufferItemConsumer->setName(consumerName); mBufferItemConsumer->setFrameAvailableListener(mFrameListener); mBufferItemConsumer->setBufferFreedListener(mBufferRemovedListener); Loading @@ -328,10 +338,18 @@ AImageReader::init() { return AMEDIA_ERROR_UNKNOWN; } if (mUsage & AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT) { #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mBufferItemConsumer->setConsumerIsProtected(true); #else gbConsumer->setConsumerIsProtected(true); #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) } #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mSurface = mBufferItemConsumer->getSurface(); #else mSurface = new Surface(mProducer, /*controlledByApp*/true); #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) if (mSurface == nullptr) { ALOGE("Failed to create surface"); return AMEDIA_ERROR_UNKNOWN; Loading Loading @@ -578,8 +596,13 @@ media_status_t AImageReader::getWindowNativeHandle(native_handle **handle) { *handle = mWindowHandle; return AMEDIA_OK; } #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) sp<HGraphicBufferProducer> hgbp = new TWGraphicBufferProducer<HGraphicBufferProducer>( mSurface->getIGraphicBufferProducer()); #else sp<HGraphicBufferProducer> hgbp = new TWGraphicBufferProducer<HGraphicBufferProducer>(mProducer); #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) HalToken halToken; if (!createHalToken(hgbp, &halToken)) { return AMEDIA_ERROR_UNKNOWN; Loading media/ndk/NdkImageReaderPriv.h +3 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <utils/Mutex.h> #include <utils/StrongPointer.h> #include <com_android_graphics_libgui_flags.h> #include <gui/BufferItem.h> #include <gui/BufferItemConsumer.h> #include <gui/Surface.h> Loading Loading @@ -161,7 +162,9 @@ struct AImageReader : public RefBase { uint64_t mHalUsage; #if !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) sp<IGraphicBufferProducer> mProducer; #endif // !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) sp<Surface> mSurface; sp<BufferItemConsumer> mBufferItemConsumer; sp<ANativeWindow> mWindow; Loading Loading
media/codec2/hal/hidl/1.0/vts/functional/video/VtsHalMediaC2V1_0TargetVideoDecTest.cpp +12 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ #include <C2Debug.h> #include <codec2/common/HalSelection.h> #include <codec2/hidl/client.h> #include <com_android_graphics_libgui_flags.h> #include <gui/BufferQueue.h> #include <gui/IConsumerListener.h> #include <gui/IProducerListener.h> Loading Loading @@ -423,7 +424,6 @@ void setOutputSurface(const std::shared_ptr<android::Codec2Client::Component>& c surfaceMode_t surfMode) { using namespace android; sp<IGraphicBufferProducer> producer = nullptr; sp<IGraphicBufferConsumer> consumer = nullptr; sp<GLConsumer> texture = nullptr; sp<ANativeWindow> surface = nullptr; static std::atomic_uint32_t surfaceGeneration{0}; Loading @@ -442,6 +442,16 @@ void setOutputSurface(const std::shared_ptr<android::Codec2Client::Component>& c } if (surfMode == SURFACE) { #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) texture = new GLConsumer(0 /* tex */, GLConsumer::TEXTURE_EXTERNAL, true /* useFenceSync */, false /* isControlledByApp */); sp<Surface> s = texture->getSurface(); surface = s; ASSERT_NE(surface, nullptr) << "failed to create Surface object"; producer = s->getIGraphicBufferProducer(); #else sp<IGraphicBufferConsumer> consumer = nullptr; BufferQueue::createBufferQueue(&producer, &consumer); ASSERT_NE(producer, nullptr) << "createBufferQueue returned invalid producer"; ASSERT_NE(consumer, nullptr) << "createBufferQueue returned invalid consumer"; Loading @@ -452,6 +462,7 @@ void setOutputSurface(const std::shared_ptr<android::Codec2Client::Component>& c surface = new Surface(producer); ASSERT_NE(surface, nullptr) << "failed to create Surface object"; #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) producer->setGenerationNumber(generation); } Loading
media/libstagefright/CameraSource.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include <camera/Camera.h> #include <camera/CameraParameters.h> #include <camera/StringUtils.h> #include <com_android_graphics_libgui_flags.h> #include <gui/Surface.h> #include <utils/String8.h> #include <cutils/properties.h> Loading Loading @@ -471,11 +472,13 @@ status_t CameraSource::initBufferQueue(uint32_t width, uint32_t height, ALOGE("%s: Buffer queue already exists", __FUNCTION__); return ALREADY_EXISTS; } #if !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) // Create a buffer queue. sp<IGraphicBufferProducer> producer; sp<IGraphicBufferConsumer> consumer; BufferQueue::createBufferQueue(&producer, &consumer); #endif // !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) uint32_t usage = GRALLOC_USAGE_SW_READ_OFTEN; if (format == HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) { Loading @@ -484,9 +487,15 @@ status_t CameraSource::initBufferQueue(uint32_t width, uint32_t height, bufferCount += kConsumerBufferCount; #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mVideoBufferConsumer = new BufferItemConsumer(usage, bufferCount); mVideoBufferConsumer->setName(String8::format("StageFright-CameraSource")); mVideoBufferProducer = mVideoBufferConsumer->getSurface()->getIGraphicBufferProducer(); #else mVideoBufferConsumer = new BufferItemConsumer(consumer, usage, bufferCount); mVideoBufferConsumer->setName(String8::format("StageFright-CameraSource")); mVideoBufferProducer = producer; #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) status_t res = mVideoBufferConsumer->setDefaultBufferSize(width, height); if (res != OK) { Loading
media/ndk/NdkImageReader.cpp +27 −4 Original line number Diff line number Diff line Loading @@ -22,13 +22,15 @@ #include "NdkImagePriv.h" #include "NdkImageReaderPriv.h" #include <cutils/atomic.h> #include <utils/Log.h> #include <android_media_Utils.h> #include <ui/PublicFormat.h> #include <private/android/AHardwareBufferHelpers.h> #include <com_android_graphics_libgui_flags.h> #include <grallocusage/GrallocUsageConversion.h> #include <gui/bufferqueue/1.0/WGraphicBufferProducer.h> #include <private/android/AHardwareBufferHelpers.h> #include <ui/PublicFormat.h> #include <utils/Log.h> #include <cutils/atomic.h> using namespace android; Loading Loading @@ -291,22 +293,30 @@ media_status_t AImageReader::init() { mHalUsage = AHardwareBuffer_convertToGrallocUsageBits(mUsage); #if !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) sp<IGraphicBufferProducer> gbProducer; sp<IGraphicBufferConsumer> gbConsumer; BufferQueue::createBufferQueue(&gbProducer, &gbConsumer); #endif // !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) String8 consumerName = String8::format("ImageReader-%dx%df%xu%" PRIu64 "m%d-%d-%d", mWidth, mHeight, mFormat, mUsage, mMaxImages, getpid(), createProcessUniqueId()); #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mBufferItemConsumer = new BufferItemConsumer(mHalUsage, mMaxImages, /*controlledByApp*/ true); #else mBufferItemConsumer = new BufferItemConsumer(gbConsumer, mHalUsage, mMaxImages, /*controlledByApp*/ true); #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) if (mBufferItemConsumer == nullptr) { ALOGE("Failed to allocate BufferItemConsumer"); return AMEDIA_ERROR_UNKNOWN; } #if !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mProducer = gbProducer; #endif // !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mBufferItemConsumer->setName(consumerName); mBufferItemConsumer->setFrameAvailableListener(mFrameListener); mBufferItemConsumer->setBufferFreedListener(mBufferRemovedListener); Loading @@ -328,10 +338,18 @@ AImageReader::init() { return AMEDIA_ERROR_UNKNOWN; } if (mUsage & AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT) { #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mBufferItemConsumer->setConsumerIsProtected(true); #else gbConsumer->setConsumerIsProtected(true); #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) } #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) mSurface = mBufferItemConsumer->getSurface(); #else mSurface = new Surface(mProducer, /*controlledByApp*/true); #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) if (mSurface == nullptr) { ALOGE("Failed to create surface"); return AMEDIA_ERROR_UNKNOWN; Loading Loading @@ -578,8 +596,13 @@ media_status_t AImageReader::getWindowNativeHandle(native_handle **handle) { *handle = mWindowHandle; return AMEDIA_OK; } #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) sp<HGraphicBufferProducer> hgbp = new TWGraphicBufferProducer<HGraphicBufferProducer>( mSurface->getIGraphicBufferProducer()); #else sp<HGraphicBufferProducer> hgbp = new TWGraphicBufferProducer<HGraphicBufferProducer>(mProducer); #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) HalToken halToken; if (!createHalToken(hgbp, &halToken)) { return AMEDIA_ERROR_UNKNOWN; Loading
media/ndk/NdkImageReaderPriv.h +3 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <utils/Mutex.h> #include <utils/StrongPointer.h> #include <com_android_graphics_libgui_flags.h> #include <gui/BufferItem.h> #include <gui/BufferItemConsumer.h> #include <gui/Surface.h> Loading Loading @@ -161,7 +162,9 @@ struct AImageReader : public RefBase { uint64_t mHalUsage; #if !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) sp<IGraphicBufferProducer> mProducer; #endif // !COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) sp<Surface> mSurface; sp<BufferItemConsumer> mBufferItemConsumer; sp<ANativeWindow> mWindow; Loading