IPlayer interface: resync with Java interface definition

Add pan and start delay methods in IPlayer native definition

Test: adb shell clpac 0, then control pan/vol of an SL player
Bug 30258418

Change-Id: Ifebdfe5c7e376b3bf183ae00dfcc3d8041de21c0
diff --git a/include/audiomanager/IPlayer.h b/include/audiomanager/IPlayer.h
index efcac74..94afae5 100644
--- a/include/audiomanager/IPlayer.h
+++ b/include/audiomanager/IPlayer.h
@@ -41,6 +41,10 @@
 
     virtual void setVolume(float vol) = 0;
 
+    virtual void setPan(float pan) = 0;
+
+    virtual void setStartDelayMs(int delayMs) = 0;
+
 };
 
 // ----------------------------------------------------------------------------
diff --git a/services/audiomanager/IPlayer.cpp b/services/audiomanager/IPlayer.cpp
index 3b0b4e9..47edc4b 100644
--- a/services/audiomanager/IPlayer.cpp
+++ b/services/audiomanager/IPlayer.cpp
@@ -33,6 +33,8 @@
     PAUSE      = IBinder::FIRST_CALL_TRANSACTION + 1,
     STOP       = IBinder::FIRST_CALL_TRANSACTION + 2,
     SET_VOLUME = IBinder::FIRST_CALL_TRANSACTION + 3,
+    SET_PAN    = IBinder::FIRST_CALL_TRANSACTION + 4,
+    SET_START_DELAY_MS = IBinder::FIRST_CALL_TRANSACTION + 5,
 };
 
 class BpPlayer : public BpInterface<IPlayer>
@@ -71,6 +73,21 @@
         data.writeFloat(vol);
         remote()->transact(SET_VOLUME, data, &reply);
     }
+
+    virtual void setPan(float pan)
+    {
+        Parcel data, reply;
+        data.writeInterfaceToken(IPlayer::getInterfaceDescriptor());
+        data.writeFloat(pan);
+        remote()->transact(SET_PAN, data, &reply);
+    }
+
+    virtual void setStartDelayMs(int32_t delayMs) {
+        Parcel data, reply;
+        data.writeInterfaceToken(IPlayer::getInterfaceDescriptor());
+        data.writeInt32(delayMs);
+        remote()->transact(SET_START_DELAY_MS, data, &reply);
+    }
 };
 
 IMPLEMENT_META_INTERFACE(Player, "android.media.IPlayer");
@@ -100,7 +117,17 @@
             CHECK_INTERFACE(IPlayer, data, reply);
             setVolume(data.readFloat());
             return NO_ERROR;
-        }
+        } break;
+        case SET_PAN: {
+            CHECK_INTERFACE(IPlayer, data, reply);
+            setPan(data.readFloat());
+            return NO_ERROR;
+        } break;
+        case SET_START_DELAY_MS: {
+            CHECK_INTERFACE(IPlayer, data, reply);
+            setStartDelayMs(data.readInt32());
+            return NO_ERROR;
+        } break;
         default:
             return BBinder::onTransact(code, data, reply, flags);
     }