summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--power.c37
1 files changed, 35 insertions, 2 deletions
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 sync_thread(int off)
}
}
+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 @@ static void process_video_encode_hint(void *metadata)
} 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;
}
-
}