renderfright: add realtime arg
Set thread priority only if realtime = true
Bug: 180011717
Test: builds
Change-Id: I4d804d273b204d03003af6a5b9cbcf8916142907
diff --git a/media/libstagefright/renderfright/gl/GLESRenderEngine.cpp b/media/libstagefright/renderfright/gl/GLESRenderEngine.cpp
index b7f8cb4..04da9a5 100644
--- a/media/libstagefright/renderfright/gl/GLESRenderEngine.cpp
+++ b/media/libstagefright/renderfright/gl/GLESRenderEngine.cpp
@@ -404,7 +404,7 @@
}
mImageManager = std::make_unique<ImageManager>(this);
- mImageManager->initThread();
+ mImageManager->initThread(args.realtime);
mDrawingBuffer = createFramebuffer();
sp<GraphicBuffer> buf =
new GraphicBuffer(1, 1, PIXEL_FORMAT_RGBA_8888, 1,
diff --git a/media/libstagefright/renderfright/gl/ImageManager.cpp b/media/libstagefright/renderfright/gl/ImageManager.cpp
index 6256649..5b0cf52 100644
--- a/media/libstagefright/renderfright/gl/ImageManager.cpp
+++ b/media/libstagefright/renderfright/gl/ImageManager.cpp
@@ -32,14 +32,16 @@
ImageManager::ImageManager(GLESRenderEngine* engine) : mEngine(engine) {}
-void ImageManager::initThread() {
+void ImageManager::initThread(bool realtime) {
mThread = std::thread([this]() { threadMain(); });
pthread_setname_np(mThread.native_handle(), "ImageManager");
- // Use SCHED_FIFO to minimize jitter
- struct sched_param param = {0};
- param.sched_priority = 2;
- if (pthread_setschedparam(mThread.native_handle(), SCHED_FIFO, ¶m) != 0) {
- ALOGE("Couldn't set SCHED_FIFO for ImageManager");
+ if (realtime) {
+ // Use SCHED_FIFO to minimize jitter
+ struct sched_param param = {0};
+ param.sched_priority = 2;
+ if (pthread_setschedparam(mThread.native_handle(), SCHED_FIFO, ¶m) != 0) {
+ ALOGE("Couldn't set SCHED_FIFO for ImageManager");
+ }
}
}
diff --git a/media/libstagefright/renderfright/gl/ImageManager.h b/media/libstagefright/renderfright/gl/ImageManager.h
index be67de8..6be8e3c 100644
--- a/media/libstagefright/renderfright/gl/ImageManager.h
+++ b/media/libstagefright/renderfright/gl/ImageManager.h
@@ -42,7 +42,7 @@
// Starts the background thread for the ImageManager
// We need this to guarantee that the class is fully-constructed before the
// thread begins running.
- void initThread();
+ void initThread(bool realtime);
void cacheAsync(const sp<GraphicBuffer>& buffer, const std::shared_ptr<Barrier>& barrier)
EXCLUDES(mMutex);
status_t cache(const sp<GraphicBuffer>& buffer);
diff --git a/media/libstagefright/renderfright/include/renderengine/RenderEngine.h b/media/libstagefright/renderfright/include/renderengine/RenderEngine.h
index af2870f..373d07b 100644
--- a/media/libstagefright/renderfright/include/renderengine/RenderEngine.h
+++ b/media/libstagefright/renderfright/include/renderengine/RenderEngine.h
@@ -206,6 +206,7 @@
bool supportsBackgroundBlur;
RenderEngine::ContextPriority contextPriority;
RenderEngine::RenderEngineType renderEngineType;
+ bool realtime;
struct Builder;
@@ -215,7 +216,8 @@
bool _enableProtectedContext, bool _precacheToneMapperShaderOnly,
bool _supportsBackgroundBlur,
RenderEngine::ContextPriority _contextPriority,
- RenderEngine::RenderEngineType _renderEngineType)
+ RenderEngine::RenderEngineType _renderEngineType,
+ bool _realtime)
: pixelFormat(_pixelFormat),
imageCacheSize(_imageCacheSize),
useColorManagement(_useColorManagement),
@@ -223,7 +225,8 @@
precacheToneMapperShaderOnly(_precacheToneMapperShaderOnly),
supportsBackgroundBlur(_supportsBackgroundBlur),
contextPriority(_contextPriority),
- renderEngineType(_renderEngineType) {}
+ renderEngineType(_renderEngineType),
+ realtime(_realtime) {}
RenderEngineCreationArgs() = delete;
};
@@ -262,10 +265,15 @@
this->renderEngineType = renderEngineType;
return *this;
}
+ Builder& setRealtime(bool realtime) {
+ this->realtime = realtime;
+ return *this;
+ }
RenderEngineCreationArgs build() const {
return RenderEngineCreationArgs(pixelFormat, imageCacheSize, useColorManagement,
enableProtectedContext, precacheToneMapperShaderOnly,
- supportsBackgroundBlur, contextPriority, renderEngineType);
+ supportsBackgroundBlur, contextPriority, renderEngineType,
+ realtime);
}
private:
@@ -278,6 +286,7 @@
bool supportsBackgroundBlur = false;
RenderEngine::ContextPriority contextPriority = RenderEngine::ContextPriority::MEDIUM;
RenderEngine::RenderEngineType renderEngineType = RenderEngine::RenderEngineType::GLES;
+ bool realtime = true;
};
class BindNativeBufferAsFramebuffer {