Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d9ba811 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add package name when creating AudioTrack."

parents 3bab4aad 09a95924
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -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),
@@ -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;
@@ -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;
@@ -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;
@@ -1555,6 +1564,7 @@ status_t AudioTrack::createTrack_l()
    input.selectedDeviceId = mSelectedDeviceId;
    input.sessionId = mSessionId;
    input.audioTrackCallback = mAudioTrackCallback;
    input.opPackageName = mOpPackageName;

    IAudioFlinger::CreateTrackOutput output;

+10 −2
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@
#include <media/Modulo.h>
#include <utils/threads.h>

#include <string>

#include "android/media/BnAudioTrackCallback.h"
#include "android/media/IAudioTrackCallback.h"

@@ -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.
@@ -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.
@@ -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.
@@ -1236,6 +1242,8 @@ public:

    sp<media::VolumeHandler>       mVolumeHandler;

    const std::string      mOpPackageName;

private:
    class DeathNotifier : public IBinder::DeathRecipient {
    public:
+8 −0
Original line number Diff line number Diff line
@@ -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"
@@ -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));
@@ -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));
@@ -127,6 +134,7 @@ public:
        uint32_t notificationsPerBuffer;
        float speed;
        sp<media::IAudioTrackCallback> audioTrackCallback;
        std::string opPackageName;

        /* input/output */
        audio_output_flags_t flags;
+9 −2
Original line number Diff line number Diff line
@@ -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());
@@ -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;
+4 −1
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@
#include <media/IMediaPlayerClient.h>
#include <media/IMediaMetadataRetriever.h>

#include <string>

namespace android {

class IMediaPlayer;
@@ -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