Permalink
Browse files

Add a hack to send AudioSystem::setParameters' args over TCP.

This is needed to send parameters out to card_parameters_setter,
to send these parameters to Pulseaudio.
  • Loading branch information...
1 parent 35a1288 commit 208c805888af761797dfeb5029b9ab0ac07729df @peat-psuwit peat-psuwit committed with h2o64 May 23, 2015
Showing with 41 additions and 0 deletions.
  1. +41 −0 media/libmedia/AudioSystem.cpp
@@ -25,6 +25,12 @@
#include <media/IAudioPolicyService.h>
#include <math.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <string.h>
+
#include <system/audio.h>
// ----------------------------------------------------------------------------
@@ -201,6 +207,41 @@ status_t AudioSystem::setMode(audio_mode_t mode)
}
status_t AudioSystem::setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs) {
+ if (ioHandle == 0) { //Indicate global param
+ int sockfd, portno = 9999, bytes_written;
+ struct sockaddr_in serv_addr;
+ char buffer[256];
+
+ sockfd = socket(AF_INET, SOCK_STREAM, 0);
+ if (sockfd < 0) {
+ ALOGE("setParameters: ERROR opening socket");
+ return PERMISSION_DENIED;
+ }
+
+ bzero((char *) &serv_addr, sizeof(serv_addr));
+ serv_addr.sin_family = AF_INET;
+ inet_aton("127.0.0.1", &serv_addr.sin_addr);
+ serv_addr.sin_port = htons(portno);
+
+ if (connect(sockfd,(sockaddr*)&serv_addr,sizeof(serv_addr)) < 0) {
+ ALOGE("setParameters: ERROR connecting");
+ return PERMISSION_DENIED;
+ }
+
+ strcpy(buffer, keyValuePairs.string());
+ strcat(buffer, "\n");
+
+ bytes_written = write(sockfd, buffer, strlen(buffer));
+ if (bytes_written < 0) {
+ ALOGE("setParameters: ERROR writing to socket");
+ close(sockfd);
+ return PERMISSION_DENIED;
+ }
+
+ close(sockfd);
+ return OK;
+ }
+
const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
if (af == 0) return PERMISSION_DENIED;
return af->setParameters(ioHandle, keyValuePairs);

0 comments on commit 208c805

Please sign in to comment.