summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-09-29 16:36:37 -0700
committerLajos Molnar <lajos@google.com>2014-09-29 16:38:39 -0700
commit274084f7bfd3f6bdf5a55cf16ceefed345aa0060 (patch)
tree2d0cde754ce8e28e0557439195e17cc4ed8f0297 /media/libmediaplayerservice
parentc8c05d6a5821dd56209e160066314a03d2f2ca06 (diff)
downloadframeworks_av-274084f7bfd3f6bdf5a55cf16ceefed345aa0060.zip
frameworks_av-274084f7bfd3f6bdf5a55cf16ceefed345aa0060.tar.gz
frameworks_av-274084f7bfd3f6bdf5a55cf16ceefed345aa0060.tar.bz2
mediaplayer: make frame-accurate avsync configurable
disable by default Bug: 17686015 Change-Id: I3961b1bc9c6d48afc8c5f7f5270528ea6341bc60
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 73ac057..6d10651 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -20,6 +20,8 @@
#include "NuPlayerRenderer.h"
+#include <cutils/properties.h>
+
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
@@ -39,6 +41,16 @@ static const int64_t kOffloadPauseMaxUs = 60000000ll;
// static
const int64_t NuPlayer::Renderer::kMinPositionUpdateDelayUs = 100000ll;
+static bool sFrameAccurateAVsync = false;
+
+static void readProperties() {
+ char value[PROPERTY_VALUE_MAX];
+ if (property_get("persist.sys.media.avsync", value, NULL)) {
+ sFrameAccurateAVsync =
+ !strcmp("1", value) || !strcasecmp("true", value);
+ }
+}
+
NuPlayer::Renderer::Renderer(
const sp<MediaPlayerBase::AudioSink> &sink,
const sp<AMessage> &notify,
@@ -68,6 +80,7 @@ NuPlayer::Renderer::Renderer(
mVideoLateByUs(0ll),
mAudioOffloadPauseTimeoutGeneration(0),
mAudioOffloadTornDown(false) {
+ readProperties();
}
NuPlayer::Renderer::~Renderer() {
@@ -576,6 +589,11 @@ void NuPlayer::Renderer::postDrainVideoQueue() {
ALOGW_IF(delayUs > 500000, "unusually high delayUs: %" PRId64, delayUs);
// post 2 display refreshes before rendering is due
+ // FIXME currently this increases power consumption, so unless frame-accurate
+ // AV sync is requested, post closer to required render time (at 0.63 vsyncs)
+ if (!sFrameAccurateAVsync) {
+ twoVsyncsUs >>= 4;
+ }
msg->post(delayUs > twoVsyncsUs ? delayUs - twoVsyncsUs : 0);
mDrainVideoQueuePending = true;
@@ -976,6 +994,8 @@ void NuPlayer::Renderer::onPause() {
}
void NuPlayer::Renderer::onResume() {
+ readProperties();
+
if (!mPaused) {
return;
}