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

Commit 559f16e1 authored by Paul Mclean's avatar Paul Mclean Committed by Android (Google) Code Review
Browse files

Merge "Adding Audio HAL V5: Direction API"

parents ddc46d72 d983fe2a
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -165,4 +165,27 @@ interface IStreamIn extends IStream {
     */
    getActiveMicrophones()
               generates(Result retval, vec<MicrophoneInfo> microphones);

    /**
     * Specifies the logical microphone (for processing).
     *
     * Optional method
     *
     * @param Direction constant
     * @return retval OK if the call is successful, an error code otherwise.
     */
    setMicrophoneDirection(MicrophoneDirection direction)
               generates(Result retval);

    /**
     * Specifies the zoom factor for the selected microphone (for processing).
     *
     * Optional method
     *
     * @param the desired field dimension of microphone capture. Range is from -1 (wide angle),
     * though 0 (no zoom) to 1 (maximum zoom).
     *
     * @return retval OK if the call is not successful, an error code otherwise.
     */
    setMicrophoneFieldDimension(float zoom) generates(Result retval);
};
+26 −0
Original line number Diff line number Diff line
@@ -221,3 +221,29 @@ struct MicrophoneInfo {
     */
    AudioMicrophoneCoordinate               orientation;
};

/**
 * Constants used by the HAL to determine how to select microphones and process those inputs in
 * order to optimize for capture in the specified direction.
 *
 * MicrophoneDirection Constants are defined in MicrophoneDirection.java.
 */
@export(name="audio_microphone_direction_t", value_prefix="MIC_DIRECTION_")
enum MicrophoneDirection : int32_t {
    /**
     * Don't do any directionality processing of the activated microphone(s).
     */
    UNSPECIFIED = 0,
    /**
     * Optimize capture for audio coming from the screen-side of the device.
     */
    FRONT = 1,
    /**
     * Optimize capture for audio coming from the side of the device opposite the screen.
     */
    BACK = 2,
    /**
     * Optimize capture for audio coming from an off-device microphone.
     */
    EXTERNAL = 3,
};
+21 −0
Original line number Diff line number Diff line
@@ -496,6 +496,27 @@ Return<void> StreamIn::getActiveMicrophones(getActiveMicrophones_cb _hidl_cb) {
}
#endif

#if MAJOR_VERSION >= 5
Return<Result> StreamIn::setMicrophoneDirection(MicrophoneDirection direction) {
    if (mStream->set_microphone_direction == nullptr) {
        return Result::NOT_SUPPORTED;
    }
    return Stream::analyzeStatus(
            "set_microphone_direction",
            mStream->set_microphone_direction(
                    mStream, static_cast<audio_microphone_direction_t>(direction)));
}

Return<Result> StreamIn::setMicrophoneFieldDimension(float zoom) {
    if (mStream->set_microphone_field_dimension == nullptr) {
        return Result::NOT_SUPPORTED;
    }
    return Stream::analyzeStatus("set_microphone_field_dimension",
                                 mStream->set_microphone_field_dimension(mStream, zoom));
}

#endif

}  // namespace implementation
}  // namespace CPP_VERSION
}  // namespace audio
+4 −1
Original line number Diff line number Diff line
@@ -112,7 +112,10 @@ struct StreamIn : public IStreamIn {
    Return<void> updateSinkMetadata(const SinkMetadata& sinkMetadata) override;
    Return<void> getActiveMicrophones(getActiveMicrophones_cb _hidl_cb) override;
#endif

#if MAJOR_VERSION >= 5
    Return<Result> setMicrophoneDirection(MicrophoneDirection direction) override;
    Return<Result> setMicrophoneFieldDimension(float zoom) override;
#endif
    static Result getCapturePositionImpl(audio_stream_in_t* stream, uint64_t* frames,
                                         uint64_t* time);

+2 −2
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
    </hal>
    <hal format="hidl" optional="false">
        <name>android.hardware.audio</name>
        <version>4.0</version>
        <version>5.0</version>
        <interface>
            <name>IDevicesFactory</name>
            <instance>default</instance>
@@ -17,7 +17,7 @@
    </hal>
    <hal format="hidl" optional="false">
        <name>android.hardware.audio.effect</name>
        <version>4.0</version>
        <version>5.0</version>
        <interface>
            <name>IEffectsFactory</name>
            <instance>default</instance>