DO NOT MERGE libmediaplayerservice: set priority and operating rate for the codec used by nuplayer.

Bug: 20481562
Change-Id: I9806414962352fbcda726f8274f1cd348c961de0
(cherry picked from commit f19f5d716b39a5d9dc1abdcd5a16a7aaf1b1ab8b)
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
index a028b01..b670d68 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
@@ -634,6 +634,17 @@
             if (mRenderer != NULL) {
                 mRenderer->setPlaybackRate(mPlaybackRate);
             }
+
+            if (mVideoDecoder != NULL) {
+                sp<MetaData> meta = getFileMeta();
+                int32_t rate;
+                if (meta != NULL && meta->findInt32(kKeyFrameRate, &rate) && rate > 0) {
+                    sp<AMessage> params = new AMessage();
+                    params->setFloat("operating-rate", rate * mPlaybackRate);
+                    mVideoDecoder->setParameters(params);
+                }
+            }
+
             break;
         }
 
@@ -1249,6 +1260,8 @@
         return -EWOULDBLOCK;
     }
 
+    format->setInt32("priority", 0 /* realtime */);
+
     if (!audio) {
         AString mime;
         CHECK(format->findString("mime", &mime));
@@ -1265,6 +1278,12 @@
         if (mSourceFlags & Source::FLAG_PROTECTED) {
             format->setInt32("protected", true);
         }
+
+        sp<MetaData> meta = getFileMeta();
+        int32_t rate;
+        if (meta != NULL && meta->findInt32(kKeyFrameRate, &rate) && rate > 0) {
+            format->setFloat("operating-rate", rate * mPlaybackRate);
+        }
     }
 
     if (audio) {