Support encoder boost

Bug: 11011342
Bug: 11201229

Change-Id: I1d6967e95670aab5cfae4467fc529fe09856b9fc
diff --git a/power.c b/power.c
index 7225788..8d3c7fa 100644
--- a/power.c
+++ b/power.c
@@ -30,6 +30,8 @@
 
 #define STATE_ON "state=1"
 #define STATE_OFF "state=0"
+#define STATE_HDR_ON "state=2"
+#define STATE_HDR_OFF "state=3"
 
 #define MAX_LENGTH         50
 #define BOOST_SOCKET       "/dev/socket/pb"
@@ -84,6 +86,32 @@
     }
 }
 
+static void enc_boost(int off)
+{
+    int rc;
+    pid_t client;
+    char data[MAX_LENGTH];
+
+    if (client_sockfd < 0) {
+        ALOGE("%s: boost socket not created", __func__);
+        return;
+    }
+
+    client = getpid();
+
+    if (!off) {
+        snprintf(data, MAX_LENGTH, "5:%d", client);
+        rc = sendto(client_sockfd, data, strlen(data), 0, (const struct sockaddr *)&client_addr, sizeof(struct sockaddr_un));
+    } else {
+        snprintf(data, MAX_LENGTH, "6:%d", client);
+        rc = sendto(client_sockfd, data, strlen(data), 0, (const struct sockaddr *)&client_addr, sizeof(struct sockaddr_un));
+    }
+
+    if (rc < 0) {
+        ALOGE("%s: failed to send: %s", __func__, strerror(errno));
+    }
+}
+
 static void process_video_encode_hint(void *metadata)
 {
 
@@ -101,12 +129,17 @@
         } else if (!strncmp(metadata, STATE_OFF, sizeof(STATE_OFF))) {
             /* Video encode stopped */
             sync_thread(0);
-        } else
+        }  else if (!strncmp(metadata, STATE_HDR_ON, sizeof(STATE_HDR_ON))) {
+            /* HDR usecase started */
+            enc_boost(1);
+        } else if (!strncmp(metadata, STATE_HDR_OFF, sizeof(STATE_HDR_OFF))) {
+            /* HDR usecase stopped */
+            enc_boost(0);
+        }else
             return;
     } else {
         return;
     }
-
 }