summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/omx/GraphicBufferSource.h
diff options
context:
space:
mode:
authorRonghua Wu <ronghuawu@google.com>2015-01-26 15:47:10 -0800
committerRonghua Wu <ronghuawu@google.com>2015-02-12 22:39:44 +0000
commit37b2b389139ed638831e49708c947863eef631ef (patch)
tree0c0ea0f002452b5108dee8e3b24a9948415f3788 /media/libstagefright/omx/GraphicBufferSource.h
parente2cce8139fb5a205170d4e878cc9fea5493755d1 (diff)
downloadframeworks_av-37b2b389139ed638831e49708c947863eef631ef.zip
frameworks_av-37b2b389139ed638831e49708c947863eef631ef.tar.gz
frameworks_av-37b2b389139ed638831e49708c947863eef631ef.tar.bz2
stagefright: add support for limiting framerate in GraphicBufferSource
Bug: 19014096 Change-Id: I6de781e4d140a247dfd8fd8f12c3ddd7baa39ad4
Diffstat (limited to 'media/libstagefright/omx/GraphicBufferSource.h')
-rw-r--r--media/libstagefright/omx/GraphicBufferSource.h19
1 files changed, 13 insertions, 6 deletions
diff --git a/media/libstagefright/omx/GraphicBufferSource.h b/media/libstagefright/omx/GraphicBufferSource.h
index c8e3775..ce3881e 100644
--- a/media/libstagefright/omx/GraphicBufferSource.h
+++ b/media/libstagefright/omx/GraphicBufferSource.h
@@ -30,6 +30,8 @@
namespace android {
+class FrameDropper;
+
/*
* This class is used to feed OMX codecs from a Surface via BufferQueue.
*
@@ -119,6 +121,9 @@ public:
// of suspension on input.
status_t setMaxTimestampGapUs(int64_t maxGapUs);
+ // When set, the max frame rate fed to the encoder will be capped at maxFps.
+ status_t setMaxFps(float maxFps);
+
// Sets the time lapse (or slow motion) parameters.
// data[0] is the time (us) between two frames for playback
// data[1] is the time (us) between two frames for capture
@@ -193,8 +198,8 @@ private:
// doing anything if we don't have a codec buffer available.
void submitEndOfInputStream_l();
- void setLatestSubmittedBuffer_l(const BufferQueue::BufferItem &item);
- bool repeatLatestSubmittedBuffer_l();
+ void setLatestBuffer_l(const BufferQueue::BufferItem &item, bool dropped);
+ bool repeatLatestBuffer_l();
int64_t getTimestamp(const BufferQueue::BufferItem &item);
// Lock, covers all member variables.
@@ -250,6 +255,8 @@ private:
int64_t mPrevModifiedTimeUs;
int64_t mSkipFramesBeforeNs;
+ sp<FrameDropper> mFrameDropper;
+
sp<ALooper> mLooper;
sp<AHandlerReflector<GraphicBufferSource> > mReflector;
@@ -258,11 +265,11 @@ private:
int64_t mRepeatLastFrameTimestamp;
int32_t mRepeatLastFrameCount;
- int mLatestSubmittedBufferId;
- uint64_t mLatestSubmittedBufferFrameNum;
- int32_t mLatestSubmittedBufferUseCount;
+ int mLatestBufferId;
+ uint64_t mLatestBufferFrameNum;
+ int32_t mLatestBufferUseCount;
- // The previously submitted buffer should've been repeated but
+ // The previous buffer should've been repeated but
// no codec buffer was available at the time.
bool mRepeatBufferDeferred;