1b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen/* 2b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** 3b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** Copyright 2008, The Android Open Source Project 4b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** 5b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** Licensed under the Apache License, Version 2.0 (the "License"); 6b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** you may not use this file except in compliance with the License. 7b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** You may obtain a copy of the License at 8b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** 9b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** http://www.apache.org/licenses/LICENSE-2.0 10b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** 11b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** Unless required by applicable law or agreed to in writing, software 12b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** distributed under the License is distributed on an "AS IS" BASIS, 13b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** See the License for the specific language governing permissions and 15b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen** limitations under the License. 16b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen*/ 17b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen 18b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#define LOG_TAG "mediaextractor" 19b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen//#define LOG_NDEBUG 0 20b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen 21b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include <fcntl.h> 22b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include <sys/prctl.h> 23b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include <sys/wait.h> 24b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include <binder/IPCThreadState.h> 25b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include <binder/ProcessState.h> 26b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include <binder/IServiceManager.h> 27b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include <utils/Log.h> 28b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen 29b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen// from LOCAL_C_INCLUDES 30b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include "IcuUtils.h" 31b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include "MediaExtractorService.h" 32c57fe21ebdd6813c5a8954f3fda51b82d26acd07Marco Nelissen#include "MediaUtils.h" 33125c04575a480044e51de97889a2cb844bcab84cJeff Vander Stoep#include "minijail/minijail.h" 34b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen 35b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissenusing namespace android; 36b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen 37b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissenint main(int argc __unused, char** argv) 38b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen{ 39c57fe21ebdd6813c5a8954f3fda51b82d26acd07Marco Nelissen limitProcessMemory( 40c57fe21ebdd6813c5a8954f3fda51b82d26acd07Marco Nelissen "ro.media.maxmem", /* property that defines limit */ 41c57fe21ebdd6813c5a8954f3fda51b82d26acd07Marco Nelissen SIZE_MAX, /* upper limit in bytes */ 42ddb50a0d099910cddfe2b342d3abcc21e281e3d5Pawin Vongmasa 20 /* upper limit as percentage of physical RAM */); 43c57fe21ebdd6813c5a8954f3fda51b82d26acd07Marco Nelissen 44b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen signal(SIGPIPE, SIG_IGN); 4588e25bfbf22f781225ba6284889194dac498fa4dJeffrey Vander Stoep MiniJail(); 46b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen 47b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen InitializeIcuOrDie(); 48b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen 49b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen strcpy(argv[0], "media.extractor"); 50b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen sp<ProcessState> proc(ProcessState::self()); 51b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen sp<IServiceManager> sm = defaultServiceManager(); 52b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen MediaExtractorService::instantiate(); 53b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen ProcessState::self()->startThreadPool(); 54b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen IPCThreadState::self()->joinThreadPool(); 55b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen} 56