1 /*
2 **
3 ** Copyright 2018, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17 
18 #include <android-base/logging.h>
19 
20 // from LOCAL_C_INCLUDES
21 #include "minijail.h"
22 #include <hidl/HidlTransportSupport.h>
23 
24 using namespace android;
25 
26 // kSystemSeccompPolicyPath points to the policy for the swcodecs themselves and
27 // is part of the updates. kVendorSeccompPolicyPath points to any additional
28 // policies that the vendor may need for the device.
29 static const char kSystemSeccompPolicyPath[] =
30         "/apex/com.android.media.swcodec/etc/seccomp_policy/mediaswcodec.policy";
31 static const char kVendorSeccompPolicyPath[] =
32         "/vendor/etc/seccomp_policy/mediaswcodec.policy";
33 
34 extern "C" void RegisterCodecServices();
35 
main(int argc __unused,char ** argv)36 int main(int argc __unused, char** argv)
37 {
38     LOG(INFO) << "media swcodec service starting";
39     signal(SIGPIPE, SIG_IGN);
40     SetUpMinijail(kSystemSeccompPolicyPath, kVendorSeccompPolicyPath);
41     strcpy(argv[0], "media.swcodec");
42 
43     ::android::hardware::configureRpcThreadpool(64, false);
44 
45     RegisterCodecServices();
46 
47     ::android::hardware::joinRpcThreadpool();
48 }
49