Commit b102b782 authored by Daniel Nicoara's avatar Daniel Nicoara Committed by Commit Bot

Whitelist Amlogic's video encoder

Whitelist the video encoder library and device such that the encoder
works in a sandboxed GPU process.

Bug: 1052499
Test: On device making a video call.
Change-Id: Iae04f0afeb2945318b54aa623f88ca44cc32ebc8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2057638Reviewed-by: default avatarTom Sepez <tsepez@chromium.org>
Reviewed-by: default avatarZhenyao Mo <zmo@chromium.org>
Reviewed-by: default avatarDoug Steedman <dougsteed@chromium.org>
Commit-Queue: Daniel Nicoara <dnicoara@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759488}
parent 3677aa93
...@@ -143,6 +143,12 @@ void AddV4L2GpuWhitelist( ...@@ -143,6 +143,12 @@ void AddV4L2GpuWhitelist(
// Device node for V4L2 JPEG encode accelerator drivers. // Device node for V4L2 JPEG encode accelerator drivers.
static const char kDevJpegEncPath[] = "/dev/jpeg-enc"; static const char kDevJpegEncPath[] = "/dev/jpeg-enc";
permissions->push_back(BrokerFilePermission::ReadWrite(kDevJpegEncPath)); permissions->push_back(BrokerFilePermission::ReadWrite(kDevJpegEncPath));
if (UseChromecastSandboxWhitelist()) {
static const char kAmlogicAvcEncoderPath[] = "/dev/amvenc_avc";
permissions->push_back(
BrokerFilePermission::ReadWrite(kAmlogicAvcEncoderPath));
}
} }
void AddArmMaliGpuWhitelist(std::vector<BrokerFilePermission>* permissions) { void AddArmMaliGpuWhitelist(std::vector<BrokerFilePermission>* permissions) {
...@@ -387,6 +393,15 @@ void LoadV4L2Libraries( ...@@ -387,6 +393,15 @@ void LoadV4L2Libraries(
} }
} }
void LoadChromecastV4L2Libraries() {
for (const char* path : kWhitelistedChromecastPaths) {
const std::string library_path(std::string(path) +
std::string("libvpcodec.so"));
if (dlopen(library_path.c_str(), dlopen_flag))
break;
}
}
bool LoadLibrariesForGpu( bool LoadLibrariesForGpu(
const service_manager::SandboxSeccompBPF::Options& options) { const service_manager::SandboxSeccompBPF::Options& options) {
if (IsChromeOS()) { if (IsChromeOS()) {
...@@ -400,6 +415,8 @@ bool LoadLibrariesForGpu( ...@@ -400,6 +415,8 @@ bool LoadLibrariesForGpu(
return LoadAmdGpuLibraries(); return LoadAmdGpuLibraries();
} else if (UseChromecastSandboxWhitelist() && IsArchitectureArm()) { } else if (UseChromecastSandboxWhitelist() && IsArchitectureArm()) {
LoadArmGpuLibraries(); LoadArmGpuLibraries();
if (UseV4L2Codec())
LoadChromecastV4L2Libraries();
} }
return true; return true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment