Cap pts gap between adjacent frames to specified value
- In the scenario of cast mirroring, encoding could be suspended
for prolonged periods. Limiting the pts gap to workaround the
problem where encoder's rate control logic produces huge frames
after a long period of suspension.
- Repeat last frame a couple more times to get better quality
on static scenes.
- Fix the timestamp on repeat frames (it was not set)
Bug: 11971963
Change-Id: I1d68ab3d269874bf3921aa429a985c5f63e428c7
diff --git a/include/media/IOMX.h b/include/media/IOMX.h
index 9c8451c..6643736 100644
--- a/include/media/IOMX.h
+++ b/include/media/IOMX.h
@@ -142,6 +142,7 @@
enum InternalOptionType {
INTERNAL_OPTION_SUSPEND, // data is a bool
INTERNAL_OPTION_REPEAT_PREVIOUS_FRAME_DELAY, // data is an int64_t
+ INTERNAL_OPTION_MAX_TIMESTAMP_GAP, // data is int64_t
};
virtual status_t setInternalOption(
node_id node,
diff --git a/include/media/stagefright/ACodec.h b/include/media/stagefright/ACodec.h
index f1636e6..bc391fc 100644
--- a/include/media/stagefright/ACodec.h
+++ b/include/media/stagefright/ACodec.h
@@ -202,6 +202,7 @@
int32_t mMetaDataBuffersToSubmit;
int64_t mRepeatFrameDelayUs;
+ int64_t mMaxPtsGapUs;
status_t setCyclicIntraMacroblockRefresh(const sp<AMessage> &msg, int32_t mode);
status_t allocateBuffersOnPort(OMX_U32 portIndex);