130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni/*
230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * Copyright (C) 2011 The Android Open Source Project
330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni *
430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * Licensed under the Apache License, Version 2.0 (the "License");
530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * you may not use this file except in compliance with the License.
630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * You may obtain a copy of the License at
730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni *
830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni *      http://www.apache.org/licenses/LICENSE-2.0
930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni *
1030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * Unless required by applicable law or agreed to in writing, software
1130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * distributed under the License is distributed on an "AS IS" BASIS,
1230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * See the License for the specific language governing permissions and
1430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * limitations under the License.
1530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni */
1630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
1730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
1830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceronipackage android.filterfw.core;
1930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
2030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroniimport android.filterfw.core.Filter;
2130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroniimport android.filterfw.core.FilterGraph;
2230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
23a3bfbe5389c6146abe318a7add3fa688d69bc01bEino-Ville Talvala/**
24a3bfbe5389c6146abe318a7add3fa688d69bc01bEino-Ville Talvala * @hide
25a3bfbe5389c6146abe318a7add3fa688d69bc01bEino-Ville Talvala */
2630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceronipublic abstract class Scheduler {
27a3bfbe5389c6146abe318a7add3fa688d69bc01bEino-Ville Talvala    // All methods are core internal methods as Scheduler internals are only used by the GraphRunner.
2830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
2930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    private FilterGraph mGraph;
3030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
3130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    Scheduler(FilterGraph graph) {
3230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni        mGraph = graph;
3330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    }
3430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
3530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    FilterGraph getGraph() {
3630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni        return mGraph;
3730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    }
3830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
3930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    abstract void reset();
4030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
4130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    abstract Filter scheduleNextNode();
4230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
4330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    boolean finished() {
4430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni        // TODO: Check that the state of all nodes is FINISHED.
4530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni        return true;
4630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    }
4730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni}
48