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

Commit 4342335f authored by Eric Laurent's avatar Eric Laurent
Browse files

audio policy: fix capture concurrency mode checks

Capture concurrency mode indicated by policy manager
after startInput() is a bit field and should be handled as
such by startInput() in AudioPolicyInterfaceImpl.

Bug: 26994864
Change-Id: Iff093a82b8b68262abab50bc84060cf023450783
parent da53ce37
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -71,6 +71,8 @@ public:
        API_INPUT_CONCURRENCY_NONE = 0,
        API_INPUT_CONCURRENCY_CALL = (1 << 0),      // Concurrency with a call
        API_INPUT_CONCURRENCY_CAPTURE = (1 << 1),   // Concurrency with another capture

        API_INPUT_CONCURRENCY_ALL = (API_INPUT_CONCURRENCY_CALL | API_INPUT_CONCURRENCY_CAPTURE),
   };

   typedef uint32_t concurrency_type__mask_t;
+6 −10
Original line number Diff line number Diff line
@@ -353,19 +353,15 @@ status_t AudioPolicyService::startInput(audio_io_handle_t input,
    status_t status = mAudioPolicyManager->startInput(input, session, &concurrency);

    if (status == NO_ERROR) {
        LOG_ALWAYS_FATAL_IF(concurrency & ~AudioPolicyInterface::API_INPUT_CONCURRENCY_ALL,
                            "startInput(): invalid concurrency type %d", (int)concurrency);

        // enforce permission (if any) required for each type of concurrency
        switch (concurrency) {
        case AudioPolicyInterface::API_INPUT_CONCURRENCY_NONE:
            break;
        case AudioPolicyInterface::API_INPUT_CONCURRENCY_CALL:
        if (concurrency & AudioPolicyInterface::API_INPUT_CONCURRENCY_CALL) {
            //TODO: check incall capture permission
            break;
        case AudioPolicyInterface::API_INPUT_CONCURRENCY_CAPTURE:
        }
        if (concurrency & AudioPolicyInterface::API_INPUT_CONCURRENCY_CAPTURE) {
            //TODO: check concurrent capture permission
            break;
       default:
            LOG_ALWAYS_FATAL("startInput() encountered an invalid input type %d",
                    (int)concurrency);
        }
    }