137b2b389139ed638831e49708c947863eef631efRonghua Wu/* 237b2b389139ed638831e49708c947863eef631efRonghua Wu * Copyright (C) 2015 The Android Open Source Project 337b2b389139ed638831e49708c947863eef631efRonghua Wu * 437b2b389139ed638831e49708c947863eef631efRonghua Wu * Licensed under the Apache License, Version 2.0 (the "License"); 537b2b389139ed638831e49708c947863eef631efRonghua Wu * you may not use this file except in compliance with the License. 637b2b389139ed638831e49708c947863eef631efRonghua Wu * You may obtain a copy of the License at 737b2b389139ed638831e49708c947863eef631efRonghua Wu * 837b2b389139ed638831e49708c947863eef631efRonghua Wu * http://www.apache.org/licenses/LICENSE-2.0 937b2b389139ed638831e49708c947863eef631efRonghua Wu * 1037b2b389139ed638831e49708c947863eef631efRonghua Wu * Unless required by applicable law or agreed to in writing, software 1137b2b389139ed638831e49708c947863eef631efRonghua Wu * distributed under the License is distributed on an "AS IS" BASIS, 1237b2b389139ed638831e49708c947863eef631efRonghua Wu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1337b2b389139ed638831e49708c947863eef631efRonghua Wu * See the License for the specific language governing permissions and 1437b2b389139ed638831e49708c947863eef631efRonghua Wu * limitations under the License. 1537b2b389139ed638831e49708c947863eef631efRonghua Wu */ 1637b2b389139ed638831e49708c947863eef631efRonghua Wu 1737b2b389139ed638831e49708c947863eef631efRonghua Wu#ifndef FRAME_DROPPER_H_ 1837b2b389139ed638831e49708c947863eef631efRonghua Wu 1937b2b389139ed638831e49708c947863eef631efRonghua Wu#define FRAME_DROPPER_H_ 2037b2b389139ed638831e49708c947863eef631efRonghua Wu 2137b2b389139ed638831e49708c947863eef631efRonghua Wu#include <utils/Errors.h> 2237b2b389139ed638831e49708c947863eef631efRonghua Wu#include <utils/RefBase.h> 2337b2b389139ed638831e49708c947863eef631efRonghua Wu 2437b2b389139ed638831e49708c947863eef631efRonghua Wu#include <media/stagefright/foundation/ABase.h> 2537b2b389139ed638831e49708c947863eef631efRonghua Wu 2637b2b389139ed638831e49708c947863eef631efRonghua Wunamespace android { 2737b2b389139ed638831e49708c947863eef631efRonghua Wu 2837b2b389139ed638831e49708c947863eef631efRonghua Wustruct FrameDropper : public RefBase { 2937b2b389139ed638831e49708c947863eef631efRonghua Wu // No frames will be dropped until a valid max frame rate is set. 3037b2b389139ed638831e49708c947863eef631efRonghua Wu FrameDropper(); 3137b2b389139ed638831e49708c947863eef631efRonghua Wu 3237b2b389139ed638831e49708c947863eef631efRonghua Wu // maxFrameRate required to be positive. 3337b2b389139ed638831e49708c947863eef631efRonghua Wu status_t setMaxFrameRate(float maxFrameRate); 3437b2b389139ed638831e49708c947863eef631efRonghua Wu 3537b2b389139ed638831e49708c947863eef631efRonghua Wu // Returns false if max frame rate has not been set via setMaxFrameRate. 3637b2b389139ed638831e49708c947863eef631efRonghua Wu bool shouldDrop(int64_t timeUs); 3737b2b389139ed638831e49708c947863eef631efRonghua Wu 3837b2b389139ed638831e49708c947863eef631efRonghua Wuprotected: 3937b2b389139ed638831e49708c947863eef631efRonghua Wu virtual ~FrameDropper(); 4037b2b389139ed638831e49708c947863eef631efRonghua Wu 4137b2b389139ed638831e49708c947863eef631efRonghua Wuprivate: 4237b2b389139ed638831e49708c947863eef631efRonghua Wu int64_t mDesiredMinTimeUs; 4337b2b389139ed638831e49708c947863eef631efRonghua Wu int64_t mMinIntervalUs; 4437b2b389139ed638831e49708c947863eef631efRonghua Wu 4537b2b389139ed638831e49708c947863eef631efRonghua Wu DISALLOW_EVIL_CONSTRUCTORS(FrameDropper); 4637b2b389139ed638831e49708c947863eef631efRonghua Wu}; 4737b2b389139ed638831e49708c947863eef631efRonghua Wu 4837b2b389139ed638831e49708c947863eef631efRonghua Wu} // namespace android 4937b2b389139ed638831e49708c947863eef631efRonghua Wu 5037b2b389139ed638831e49708c947863eef631efRonghua Wu#endif // FRAME_DROPPER_H_ 51