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

Commit dba03231 authored by Yin-Chia Yeh's avatar Yin-Chia Yeh
Browse files

Camera: implement camera audio restriction API

Test: new CTS test
Bug: 135676184
Change-Id: I5f26e343a4ee92b66fabfaa6bda94224ae311c40
parent b59478c8
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -347,6 +347,13 @@ status_t Camera::setPreviewCallbackTarget(
    return c->setPreviewCallbackTarget(callbackProducer);
}

int32_t Camera::setAudioRestriction(int32_t mode)
{
    sp <::android::hardware::ICamera> c = mCamera;
    if (c == 0) return NO_INIT;
    return c->setAudioRestriction(mode);
}

// callback from camera service
void Camera::notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2)
{
+15 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ enum {
    SET_VIDEO_BUFFER_TARGET,
    RELEASE_RECORDING_FRAME_HANDLE,
    RELEASE_RECORDING_FRAME_HANDLE_BATCH,
    SET_AUDIO_RESTRICTION,
};

class BpCamera: public BpInterface<ICamera>
@@ -191,6 +192,14 @@ public:
        }
    }

    int32_t setAudioRestriction(int32_t mode) {
        Parcel data, reply;
        data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
        data.writeInt32(mode);
        remote()->transact(SET_AUDIO_RESTRICTION, data, &reply);
        return reply.readInt32();
    }

    status_t setVideoBufferMode(int32_t videoBufferMode)
    {
        ALOGV("setVideoBufferMode: %d", videoBufferMode);
@@ -494,6 +503,12 @@ status_t BnCamera::onTransact(
            reply->writeInt32(setVideoTarget(st));
            return NO_ERROR;
        } break;
        case SET_AUDIO_RESTRICTION: {
            CHECK_INTERFACE(ICamera, data, reply);
            int32_t mode = data.readInt32();
            reply->writeInt32(setAudioRestriction(mode));
            return NO_ERROR;
        } break;
        default:
            return BBinder::onTransact(code, data, reply, flags);
    }
+16 −0
Original line number Diff line number Diff line
@@ -155,4 +155,20 @@ interface ICameraDeviceUser
    void updateOutputConfiguration(int streamId, in OutputConfiguration outputConfiguration);

    void finalizeOutputConfigurations(int streamId, in OutputConfiguration outputConfiguration);


    // Keep in sync with public API in
    // frameworks/base/core/java/android/hardware/camera2/CameraDevice.java
    const int AUDIO_RESTRICTION_NONE = 0;
    const int AUDIO_RESTRICTION_VIBRATION = 1;
    const int AUDIO_RESTRICTION_VIBRATION_SOUND = 3;

    /**
      * Set audio restriction mode for this camera device.
      *
      * @param mode the audio restriction mode ID as above
      *
      * @return the resulting system-wide audio restriction mode
      */
    int setCameraAudioRestriction(int mode);
}
+2 −0
Original line number Diff line number Diff line
@@ -167,6 +167,8 @@ public:

            sp<ICameraRecordingProxy> getRecordingProxy();

            int32_t      setAudioRestriction(int32_t mode);

    // ICameraClient interface
    virtual void        notifyCallback(int32_t msgType, int32_t ext, int32_t ext2);
    virtual void        dataCallback(int32_t msgType, const sp<IMemory>& dataPtr,
+3 −0
Original line number Diff line number Diff line
@@ -140,6 +140,9 @@ public:
    // Set the video buffer producer for camera to use in VIDEO_BUFFER_MODE_BUFFER_QUEUE mode.
    virtual status_t        setVideoTarget(
            const sp<IGraphicBufferProducer>& bufferProducer) = 0;

    // Set the audio restriction mode
    virtual int32_t         setAudioRestriction(int32_t mode) = 0;
};

// ----------------------------------------------------------------------------
Loading