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

Commit b82c62ca authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 10361546 from b9c463a9 to udc-qpr1-release

Change-Id: I34227ab14e85626d38db544f2499afa8a1ac89b3
parents 550e8e35 b9c463a9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -528,7 +528,7 @@ aidl2legacy_AudioTimestampInternal_AudioTimestamp(const media::AudioTimestampInt
ConversionResult<media::AudioTimestampInternal>
legacy2aidl_AudioTimestamp_AudioTimestampInternal(const AudioTimestamp& legacy) {
    media::AudioTimestampInternal aidl;
    aidl.position = VALUE_OR_RETURN(convertIntegral<int32_t>(legacy.mPosition));
    aidl.position = VALUE_OR_RETURN(convertIntegral<int64_t>(legacy.mPosition));
    aidl.sec = VALUE_OR_RETURN(convertIntegral<int64_t>(legacy.mTime.tv_sec));
    aidl.nsec = VALUE_OR_RETURN(convertIntegral<int32_t>(legacy.mTime.tv_nsec));
    return aidl;
+5 −2
Original line number Diff line number Diff line
@@ -22,8 +22,11 @@ package android.media;
 * {@hide}
 */
parcelable AudioTimestampInternal {
    /** A frame position in AudioTrack::getPosition() units. */
    int position;
    /**
     * A frame position in AudioTrack::getPosition() units. Use 'long' to accommodate
     * all values from 'uint32_t'.
     */
    long position;
    /** corresponding CLOCK_MONOTONIC when frame is expected to present. */
    long sec;
    int nsec;
+4 −3
Original line number Diff line number Diff line
@@ -289,9 +289,10 @@ status_t AudioPolicyMixCollection::getOutputForAttr(
            continue; // skip the mix
        }

        if (flags & AUDIO_OUTPUT_FLAG_MMAP_NOIRQ) {
            // AAudio MMAP_NOIRQ streams cannot be routed using dynamic audio policy.
            ALOGD("%s: Rejecting MMAP_NOIRQ request matched to dynamic audio policy mix.",
        if ((flags & AUDIO_OUTPUT_FLAG_MMAP_NOIRQ) && is_mix_loopback(policyMix->mRouteFlags)) {
            // AAudio MMAP_NOIRQ streams cannot be routed to loopback/loopback+render
            // using dynamic audio policy.
            ALOGD("%s: Rejecting MMAP_NOIRQ request matched to loopback dynamic audio policy mix.",
                __func__);
            return INVALID_OPERATION;
        }
+21 −5
Original line number Diff line number Diff line
@@ -1912,7 +1912,7 @@ class AudioPolicyManagerTestMMapPlaybackRerouting
    bool mIsBitPerfect;
};

TEST_P(AudioPolicyManagerTestMMapPlaybackRerouting, MmapPlaybackStreamMatchingDapMixFails) {
TEST_P(AudioPolicyManagerTestMMapPlaybackRerouting, MmapPlaybackStreamMatchingLoopbackDapMixFails) {
    // Add mix matching the test uid.
    const int testUid = 12345;
    const auto param = GetParam();
@@ -1929,7 +1929,8 @@ TEST_P(AudioPolicyManagerTestMMapPlaybackRerouting, MmapPlaybackStreamMatchingDa
                                         &mOutputType, &mIsSpatialized, &mIsBitPerfect));
}

TEST_P(AudioPolicyManagerTestMMapPlaybackRerouting, NonMmapPlaybackStreamMatchingDapMixSucceeds) {
TEST_P(AudioPolicyManagerTestMMapPlaybackRerouting,
        NonMmapPlaybackStreamMatchingLoopbackDapMixSucceeds) {
    // Add mix matching the test uid.
    const int testUid = 12345;
    const auto param = GetParam();
@@ -1946,15 +1947,30 @@ TEST_P(AudioPolicyManagerTestMMapPlaybackRerouting, NonMmapPlaybackStreamMatchin
                                         &mOutputType, &mIsSpatialized, &mIsBitPerfect));
}

TEST_F(AudioPolicyManagerTestMMapPlaybackRerouting,
        MmapPlaybackStreamMatchingRenderDapMixSucceeds) {
      // Add render-only mix matching the test uid.
    const int testUid = 12345;
    status_t ret = addPolicyMix(MIX_TYPE_PLAYERS, MIX_ROUTE_FLAG_RENDER, AUDIO_DEVICE_OUT_SPEAKER,
                                /*mixAddress=*/"", audioConfig, {createUidCriterion(testUid)});
    ASSERT_EQ(NO_ERROR, ret);

    // Geting output for matching uid should succeed for mmaped stream.
    audio_output_flags_t outputFlags = AUDIO_OUTPUT_FLAG_MMAP_NOIRQ;
    ASSERT_EQ(NO_ERROR,
              mManager->getOutputForAttr(&attr, &mOutput, AUDIO_SESSION_NONE, &mStream,
                                         createAttributionSourceState(testUid), &audioConfig,
                                         &outputFlags, &mSelectedDeviceId, &mPortId, {},
                                         &mOutputType, &mIsSpatialized, &mIsBitPerfect));
}

INSTANTIATE_TEST_SUITE_P(
        MmapPlaybackRerouting, AudioPolicyManagerTestMMapPlaybackRerouting,
        testing::Values(DPMmapTestParam(MIX_ROUTE_FLAG_LOOP_BACK, AUDIO_DEVICE_OUT_REMOTE_SUBMIX,
                                        /*deviceAddress=*/"remote_submix_media"),
                        DPMmapTestParam(MIX_ROUTE_FLAG_LOOP_BACK_AND_RENDER,
                                        AUDIO_DEVICE_OUT_REMOTE_SUBMIX,
                                        /*deviceAddress=*/"remote_submix_media"),
                        DPMmapTestParam(MIX_ROUTE_FLAG_RENDER, AUDIO_DEVICE_OUT_SPEAKER,
                                        /*deviceAddress=*/"")));
                                        /*deviceAddress=*/"remote_submix_media")));

class AudioPolicyManagerTestDPMixRecordInjection : public AudioPolicyManagerTestDynamicPolicy,
        public testing::WithParamInterface<DPTestParam> {
+1 −3
Original line number Diff line number Diff line
@@ -80,9 +80,7 @@ Camera2Client::Camera2Client(const sp<CameraService>& cameraService,

    SharedParameters::Lock l(mParameters);
    l.mParameters.state = Parameters::DISCONNECTED;
    if (forceSlowJpegMode) {
        l.mParameters.isSlowJpegModeForced = true;
    }
    l.mParameters.isSlowJpegModeForced = forceSlowJpegMode;
}

status_t Camera2Client::initialize(sp<CameraProviderManager> manager, const String8& monitorTags) {
Loading