1c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim/*
2c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * Copyright (C) 2014 The Android Open Source Project
3c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim *
4c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * Licensed under the Apache License, Version 2.0 (the "License");
5c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * you may not use this file except in compliance with the License.
6c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * You may obtain a copy of the License at
7c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim *
8c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim *      http://www.apache.org/licenses/LICENSE-2.0
9c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim *
10c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * Unless required by applicable law or agreed to in writing, software
11c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * distributed under the License is distributed on an "AS IS" BASIS,
12c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * See the License for the specific language governing permissions and
14c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * limitations under the License.
15c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim */
16c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim
17d5cc4a281e7ce29d1e8687ff3394b57a3a549260Jae Seopackage android.media.tv;
18c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim
19d5cc4a281e7ce29d1e8687ff3394b57a3a549260Jae Seoimport android.media.tv.TvStreamConfig;
20c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kimimport android.view.KeyEvent;
21c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kimimport android.view.Surface;
22c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim
23c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim/**
24c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * TvInputService representing a physical port should connect to HAL through this interface.
25c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * Framework will take care of communication among system services including TvInputManagerService,
26c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * HdmiControlService, AudioService, etc.
27c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim *
28c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim * @hide
29c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim */
30c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kiminterface ITvInputHardware {
31c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim    /**
32c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim     * Make the input render on the surface according to the config. In case of HDMI, this will
33c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim     * trigger CEC commands for adjusting active HDMI source. Returns true on success.
34c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim     */
35c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim    boolean setSurface(in Surface surface, in TvStreamConfig config);
36ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim
37c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim    /**
388e45a33ca8cb6b6a0cf75edf52ffdf86ffe3dd31Wonsik Kim     * Set volume for this stream via AudioGain.
39c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim     */
408e45a33ca8cb6b6a0cf75edf52ffdf86ffe3dd31Wonsik Kim    void setStreamVolume(float volume);
41c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim
42c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim    /**
43c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim     * Dispatch key event to HDMI service. The events would be automatically converted to
44c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim     * HDMI CEC commands. If the hardware is not representing an HDMI port, this method will fail.
45c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim     */
46c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim    boolean dispatchKeyEventToHdmi(in KeyEvent event);
47ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim
48ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim    /**
49ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     * Override default audio sink from audio policy. When override is on, it is
50ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     * TvInputService's responsibility to adjust to audio configuration change
51ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     * (for example, when the audio sink becomes unavailable or more desirable
52ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     * audio sink is detected).
53ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     *
54ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     * @param audioType one of AudioManager.DEVICE_* values. When it's * DEVICE_NONE, override
55ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     *        becomes off.
56ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     * @param audioAddress audio address of the overriding device.
57ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     * @param samplingRate desired sampling rate. Use default when it's 0.
58ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     * @param channelMask desired channel mask. Use default when it's
59ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     *        AudioFormat.CHANNEL_OUT_DEFAULT.
60ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     * @param format desired format. Use default when it's AudioFormat.ENCODING_DEFAULT.
61ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim     */
62ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim    void overrideAudioSink(int audioType, String audioAddress, int samplingRate, int channelMask,
63ca17a9029dd7b1b87c155e68476eae5ee4efbedeWonsik Kim            int format);
64c22dbb69194c8e8fe2a32326d1f37a738cad0904Wonsik Kim}
65