blob: f57e4b6768177ecd60d8ac841be5ef930b800f65 [file] [log] [blame]
Henry Fange5125a82019-10-14 13:49:21 -07001/*
2 * Copyright (C) 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.hardware.tv.tuner@1.0;
18
19import IFilter;
20
21/**
22 * Digtal Video Record (DVR) interface provides record control on Demux's
23 * output buffer and playback control on Demux's input buffer.
24 */
25interface IDvr {
26 /**
27 * Get the descriptor of the DVR's FMQ
28 *
29 * It is used by the client to get the descriptor of the DVR's Fast
30 * Message Queue. The FMQ is used to transfer record or playback data
31 * between the client and the HAL.
32 *
33 * @return result Result status of the operation.
34 * SUCCESS if successful,
35 * UNKNOWN_ERROR if failed for other reasons.
36 * @return queue the descriptor of the DVR's FMQ
37 */
38 getQueueDesc() generates (Result result, fmq_sync<uint8_t> queue);
39
40 /**
41 * Configure the DVR.
42 *
43 * It is used by the client to configure the DVR interface.
44 *
45 * @param settings the settings of the DVR interface.
46 * @return result Result status of the operation.
47 * SUCCESS if successful,
48 * INVALID_STATE if failed for wrong state.
49 * UNKNOWN_ERROR if failed for other reasons.
50 */
51 configure(DvrSettings settings) generates (Result result);
52
53 /**
54 * Attach one filter to DVR interface for recording.
55 *
56 * It is used by the client to add the data filtered out from the filter
57 * to record.
58 *
59 * @param filter the instance of the attached filter.
60 * @return result Result status of the operation.
61 * SUCCESS if successful,
62 * INVALID_STATE if failed for wrong state.
63 * UNKNOWN_ERROR if failed for other reasons.
64 */
65 attachFilter(IFilter filter) generates (Result result);
66
67 /**
68 * Detach one filter from the DVR's recording.
69 *
70 * It is used by the client to remove the data of the filter from DVR's
71 * recording.
72 *
73 * @param filter the instance of the detached filter.
74 * @return result Result status of the operation.
75 * SUCCESS if successful,
76 * INVALID_STATE if failed for wrong state.
77 * UNKNOWN_ERROR if failed for other reasons.
78 */
79 detachFilter(IFilter filter) generates (Result result);
80
81 /**
82 * Start DVR.
83 *
84 * It is used by the client to ask the DVR to start consuming playback data
85 * or producing data for record.
86 *
87 * @return result Result status of the operation.
88 * SUCCESS if successful,
89 * INVALID_STATE if failed for wrong state.
90 * UNKNOWN_ERROR if failed for other reasons.
91 */
92 start() generates (Result result);
93
94 /**
95 * Stop DVR.
96 *
97 * It is used by the client to ask the DVR to stop consuming playback data
98 * or producing data for record.
99 *
100 * @return result Result status of the operation.
101 * SUCCESS if successful,
102 * INVALID_STATE if failed for wrong state.
103 * UNKNOWN_ERROR if failed for other reasons.
104 */
105 stop() generates (Result result);
106
107 /**
108 * Flush DVR data.
109 *
110 * It is used by the client to ask the DVR to flush the data which is
111 * not consumed by HAL for playback or the client for record yet.
112 *
113 * @return result Result status of the operation.
114 * SUCCESS if successful,
115 * INVALID_STATE if failed for wrong state.
116 * UNKNOWN_ERROR if failed for other reasons.
117 */
118 flush() generates (Result result);
119
120 /**
121 * close the DVR instance to release resource for DVR.
122 *
123 * It is used by the client to close the DVR instance, and HAL clears
124 * underneath resource for this DVR instance. Client mustn't access the
125 * instance any more and all methods should return a failure.
126 *
127 * @return result Result status of the operation.
128 * SUCCESS if successful,
129 * INVALID_STATE if failed for wrong state.
130 * UNKNOWN_ERROR if failed for other reasons.
131 */
132 close() generates (Result result);
133};