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(
// Device node for V4L2 JPEG encode accelerator drivers.
static const char kDevJpegEncPath[] = "/dev/jpeg-enc";
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) {
......@@ -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(
const service_manager::SandboxSeccompBPF::Options& options) {
if (IsChromeOS()) {
......@@ -400,6 +415,8 @@ bool LoadLibrariesForGpu(
return LoadAmdGpuLibraries();
} else if (UseChromecastSandboxWhitelist() && IsArchitectureArm()) {
LoadArmGpuLibraries();
if (UseV4L2Codec())
LoadChromecastV4L2Libraries();
}
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