Loading media/libaudioclient/AudioTrack.cpp +13 −3 Original line number Diff line number Diff line Loading @@ -210,7 +210,11 @@ status_t AudioTrack::getMetrics(mediametrics::Item * &item) return NO_ERROR; } AudioTrack::AudioTrack() AudioTrack::AudioTrack() : AudioTrack("" /*opPackageName*/) { } AudioTrack::AudioTrack(const std::string& opPackageName) : mStatus(NO_INIT), mState(STATE_STOPPED), mPreviousPriority(ANDROID_PRIORITY_NORMAL), Loading @@ -218,6 +222,7 @@ AudioTrack::AudioTrack() mPausedPosition(0), mSelectedDeviceId(AUDIO_PORT_HANDLE_NONE), mRoutedDeviceId(AUDIO_PORT_HANDLE_NONE), mOpPackageName(opPackageName), mAudioTrackCallback(new AudioTrackCallback()) { mAttributes.content_type = AUDIO_CONTENT_TYPE_UNKNOWN; Loading @@ -244,12 +249,14 @@ AudioTrack::AudioTrack( const audio_attributes_t* pAttributes, bool doNotReconnect, float maxRequiredSpeed, audio_port_handle_t selectedDeviceId) audio_port_handle_t selectedDeviceId, const std::string& opPackageName) : mStatus(NO_INIT), mState(STATE_STOPPED), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT), mPausedPosition(0), mOpPackageName(opPackageName), mAudioTrackCallback(new AudioTrackCallback()) { mAttributes = AUDIO_ATTRIBUTES_INITIALIZER; Loading Loading @@ -277,13 +284,15 @@ AudioTrack::AudioTrack( pid_t pid, const audio_attributes_t* pAttributes, bool doNotReconnect, float maxRequiredSpeed) float maxRequiredSpeed, const std::string& opPackageName) : mStatus(NO_INIT), mState(STATE_STOPPED), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT), mPausedPosition(0), mSelectedDeviceId(AUDIO_PORT_HANDLE_NONE), mOpPackageName(opPackageName), mAudioTrackCallback(new AudioTrackCallback()) { mAttributes = AUDIO_ATTRIBUTES_INITIALIZER; Loading Loading @@ -1555,6 +1564,7 @@ status_t AudioTrack::createTrack_l() input.selectedDeviceId = mSelectedDeviceId; input.sessionId = mSessionId; input.audioTrackCallback = mAudioTrackCallback; input.opPackageName = mOpPackageName; IAudioFlinger::CreateTrackOutput output; Loading media/libaudioclient/include/media/AudioTrack.h +10 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ #include <media/Modulo.h> #include <utils/threads.h> #include <string> #include "android/media/BnAudioTrackCallback.h" #include "android/media/IAudioTrackCallback.h" Loading Loading @@ -177,6 +179,8 @@ public: */ AudioTrack(); AudioTrack(const std::string& opPackageName); /* Creates an AudioTrack object and registers it with AudioFlinger. * Once created, the track needs to be started before it can be used. * Unspecified values are set to appropriate default values. Loading Loading @@ -258,7 +262,8 @@ public: const audio_attributes_t* pAttributes = NULL, bool doNotReconnect = false, float maxRequiredSpeed = 1.0f, audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE); audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE, const std::string& opPackageName = ""); /* Creates an audio track and registers it with AudioFlinger. * With this constructor, the track is configured for static buffer mode. Loading Loading @@ -288,7 +293,8 @@ public: pid_t pid = -1, const audio_attributes_t* pAttributes = NULL, bool doNotReconnect = false, float maxRequiredSpeed = 1.0f); float maxRequiredSpeed = 1.0f, const std::string& opPackageName = ""); /* Terminates the AudioTrack and unregisters it from AudioFlinger. * Also destroys all resources associated with the AudioTrack. Loading Loading @@ -1236,6 +1242,8 @@ public: sp<media::VolumeHandler> mVolumeHandler; const std::string mOpPackageName; private: class DeathNotifier : public IBinder::DeathRecipient { public: Loading media/libaudioclient/include/media/IAudioFlinger.h +8 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ #include <system/audio_policy.h> #include <utils/String8.h> #include <media/MicrophoneInfo.h> #include <string> #include <vector> #include "android/media/IAudioRecord.h" Loading Loading @@ -85,6 +86,11 @@ public: speed = parcel->readFloat(); audioTrackCallback = interface_cast<media::IAudioTrackCallback>( parcel->readStrongBinder()); const char* opPackageNamePtr = parcel->readCString(); if (opPackageNamePtr == nullptr) { return FAILED_TRANSACTION; } opPackageName = opPackageNamePtr; /* input/output arguments*/ (void)parcel->read(&flags, sizeof(audio_output_flags_t)); Loading @@ -109,6 +115,7 @@ public: (void)parcel->writeInt32(notificationsPerBuffer); (void)parcel->writeFloat(speed); (void)parcel->writeStrongBinder(IInterface::asBinder(audioTrackCallback)); (void)parcel->writeCString(opPackageName.c_str()); /* input/output arguments*/ (void)parcel->write(&flags, sizeof(audio_output_flags_t)); Loading @@ -127,6 +134,7 @@ public: uint32_t notificationsPerBuffer; float speed; sp<media::IAudioTrackCallback> audioTrackCallback; std::string opPackageName; /* input/output */ audio_output_flags_t flags; Loading media/libmedia/IMediaPlayerService.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -62,11 +62,13 @@ public: } virtual sp<IMediaPlayer> create( const sp<IMediaPlayerClient>& client, audio_session_t audioSessionId) { const sp<IMediaPlayerClient>& client, audio_session_t audioSessionId, const std::string opPackageName) { Parcel data, reply; data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); data.writeStrongBinder(IInterface::asBinder(client)); data.writeInt32(audioSessionId); data.writeCString(opPackageName.c_str()); remote()->transact(CREATE, data, &reply); return interface_cast<IMediaPlayer>(reply.readStrongBinder()); Loading Loading @@ -127,7 +129,12 @@ status_t BnMediaPlayerService::onTransact( sp<IMediaPlayerClient> client = interface_cast<IMediaPlayerClient>(data.readStrongBinder()); audio_session_t audioSessionId = (audio_session_t) data.readInt32(); sp<IMediaPlayer> player = create(client, audioSessionId); const char* opPackageName = data.readCString(); if (opPackageName == nullptr) { return FAILED_TRANSACTION; } std::string opPackageNameStr(opPackageName); sp<IMediaPlayer> player = create(client, audioSessionId, opPackageNameStr); reply->writeStrongBinder(IInterface::asBinder(player)); return NO_ERROR; } break; Loading media/libmedia/include/media/IMediaPlayerService.h +4 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,8 @@ #include <media/IMediaPlayerClient.h> #include <media/IMediaMetadataRetriever.h> #include <string> namespace android { class IMediaPlayer; Loading @@ -47,7 +49,8 @@ public: virtual sp<IMediaRecorder> createMediaRecorder(const String16 &opPackageName) = 0; virtual sp<IMediaMetadataRetriever> createMetadataRetriever() = 0; virtual sp<IMediaPlayer> create(const sp<IMediaPlayerClient>& client, audio_session_t audioSessionId = AUDIO_SESSION_ALLOCATE) = 0; audio_session_t audioSessionId = AUDIO_SESSION_ALLOCATE, const std::string opPackage = "") = 0; virtual sp<IMediaCodecList> getCodecList() const = 0; // Connects to a remote display. Loading Loading
media/libaudioclient/AudioTrack.cpp +13 −3 Original line number Diff line number Diff line Loading @@ -210,7 +210,11 @@ status_t AudioTrack::getMetrics(mediametrics::Item * &item) return NO_ERROR; } AudioTrack::AudioTrack() AudioTrack::AudioTrack() : AudioTrack("" /*opPackageName*/) { } AudioTrack::AudioTrack(const std::string& opPackageName) : mStatus(NO_INIT), mState(STATE_STOPPED), mPreviousPriority(ANDROID_PRIORITY_NORMAL), Loading @@ -218,6 +222,7 @@ AudioTrack::AudioTrack() mPausedPosition(0), mSelectedDeviceId(AUDIO_PORT_HANDLE_NONE), mRoutedDeviceId(AUDIO_PORT_HANDLE_NONE), mOpPackageName(opPackageName), mAudioTrackCallback(new AudioTrackCallback()) { mAttributes.content_type = AUDIO_CONTENT_TYPE_UNKNOWN; Loading @@ -244,12 +249,14 @@ AudioTrack::AudioTrack( const audio_attributes_t* pAttributes, bool doNotReconnect, float maxRequiredSpeed, audio_port_handle_t selectedDeviceId) audio_port_handle_t selectedDeviceId, const std::string& opPackageName) : mStatus(NO_INIT), mState(STATE_STOPPED), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT), mPausedPosition(0), mOpPackageName(opPackageName), mAudioTrackCallback(new AudioTrackCallback()) { mAttributes = AUDIO_ATTRIBUTES_INITIALIZER; Loading Loading @@ -277,13 +284,15 @@ AudioTrack::AudioTrack( pid_t pid, const audio_attributes_t* pAttributes, bool doNotReconnect, float maxRequiredSpeed) float maxRequiredSpeed, const std::string& opPackageName) : mStatus(NO_INIT), mState(STATE_STOPPED), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT), mPausedPosition(0), mSelectedDeviceId(AUDIO_PORT_HANDLE_NONE), mOpPackageName(opPackageName), mAudioTrackCallback(new AudioTrackCallback()) { mAttributes = AUDIO_ATTRIBUTES_INITIALIZER; Loading Loading @@ -1555,6 +1564,7 @@ status_t AudioTrack::createTrack_l() input.selectedDeviceId = mSelectedDeviceId; input.sessionId = mSessionId; input.audioTrackCallback = mAudioTrackCallback; input.opPackageName = mOpPackageName; IAudioFlinger::CreateTrackOutput output; Loading
media/libaudioclient/include/media/AudioTrack.h +10 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ #include <media/Modulo.h> #include <utils/threads.h> #include <string> #include "android/media/BnAudioTrackCallback.h" #include "android/media/IAudioTrackCallback.h" Loading Loading @@ -177,6 +179,8 @@ public: */ AudioTrack(); AudioTrack(const std::string& opPackageName); /* Creates an AudioTrack object and registers it with AudioFlinger. * Once created, the track needs to be started before it can be used. * Unspecified values are set to appropriate default values. Loading Loading @@ -258,7 +262,8 @@ public: const audio_attributes_t* pAttributes = NULL, bool doNotReconnect = false, float maxRequiredSpeed = 1.0f, audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE); audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE, const std::string& opPackageName = ""); /* Creates an audio track and registers it with AudioFlinger. * With this constructor, the track is configured for static buffer mode. Loading Loading @@ -288,7 +293,8 @@ public: pid_t pid = -1, const audio_attributes_t* pAttributes = NULL, bool doNotReconnect = false, float maxRequiredSpeed = 1.0f); float maxRequiredSpeed = 1.0f, const std::string& opPackageName = ""); /* Terminates the AudioTrack and unregisters it from AudioFlinger. * Also destroys all resources associated with the AudioTrack. Loading Loading @@ -1236,6 +1242,8 @@ public: sp<media::VolumeHandler> mVolumeHandler; const std::string mOpPackageName; private: class DeathNotifier : public IBinder::DeathRecipient { public: Loading
media/libaudioclient/include/media/IAudioFlinger.h +8 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ #include <system/audio_policy.h> #include <utils/String8.h> #include <media/MicrophoneInfo.h> #include <string> #include <vector> #include "android/media/IAudioRecord.h" Loading Loading @@ -85,6 +86,11 @@ public: speed = parcel->readFloat(); audioTrackCallback = interface_cast<media::IAudioTrackCallback>( parcel->readStrongBinder()); const char* opPackageNamePtr = parcel->readCString(); if (opPackageNamePtr == nullptr) { return FAILED_TRANSACTION; } opPackageName = opPackageNamePtr; /* input/output arguments*/ (void)parcel->read(&flags, sizeof(audio_output_flags_t)); Loading @@ -109,6 +115,7 @@ public: (void)parcel->writeInt32(notificationsPerBuffer); (void)parcel->writeFloat(speed); (void)parcel->writeStrongBinder(IInterface::asBinder(audioTrackCallback)); (void)parcel->writeCString(opPackageName.c_str()); /* input/output arguments*/ (void)parcel->write(&flags, sizeof(audio_output_flags_t)); Loading @@ -127,6 +134,7 @@ public: uint32_t notificationsPerBuffer; float speed; sp<media::IAudioTrackCallback> audioTrackCallback; std::string opPackageName; /* input/output */ audio_output_flags_t flags; Loading
media/libmedia/IMediaPlayerService.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -62,11 +62,13 @@ public: } virtual sp<IMediaPlayer> create( const sp<IMediaPlayerClient>& client, audio_session_t audioSessionId) { const sp<IMediaPlayerClient>& client, audio_session_t audioSessionId, const std::string opPackageName) { Parcel data, reply; data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); data.writeStrongBinder(IInterface::asBinder(client)); data.writeInt32(audioSessionId); data.writeCString(opPackageName.c_str()); remote()->transact(CREATE, data, &reply); return interface_cast<IMediaPlayer>(reply.readStrongBinder()); Loading Loading @@ -127,7 +129,12 @@ status_t BnMediaPlayerService::onTransact( sp<IMediaPlayerClient> client = interface_cast<IMediaPlayerClient>(data.readStrongBinder()); audio_session_t audioSessionId = (audio_session_t) data.readInt32(); sp<IMediaPlayer> player = create(client, audioSessionId); const char* opPackageName = data.readCString(); if (opPackageName == nullptr) { return FAILED_TRANSACTION; } std::string opPackageNameStr(opPackageName); sp<IMediaPlayer> player = create(client, audioSessionId, opPackageNameStr); reply->writeStrongBinder(IInterface::asBinder(player)); return NO_ERROR; } break; Loading
media/libmedia/include/media/IMediaPlayerService.h +4 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,8 @@ #include <media/IMediaPlayerClient.h> #include <media/IMediaMetadataRetriever.h> #include <string> namespace android { class IMediaPlayer; Loading @@ -47,7 +49,8 @@ public: virtual sp<IMediaRecorder> createMediaRecorder(const String16 &opPackageName) = 0; virtual sp<IMediaMetadataRetriever> createMetadataRetriever() = 0; virtual sp<IMediaPlayer> create(const sp<IMediaPlayerClient>& client, audio_session_t audioSessionId = AUDIO_SESSION_ALLOCATE) = 0; audio_session_t audioSessionId = AUDIO_SESSION_ALLOCATE, const std::string opPackage = "") = 0; virtual sp<IMediaCodecList> getCodecList() const = 0; // Connects to a remote display. Loading