/src/adhd/cras/src/server/cras_iodev.h
Line | Count | Source |
1 | | /* Copyright 2012 The ChromiumOS Authors |
2 | | * Use of this source code is governed by a BSD-style license that can be |
3 | | * found in the LICENSE file. |
4 | | */ |
5 | | |
6 | | /* |
7 | | * cras_iodev represents playback or capture devices on the system. Each iodev |
8 | | * will attach to a thread to render or capture audio. For playback, this |
9 | | * thread will gather audio from the streams that are attached to the device and |
10 | | * render the samples it gets to the iodev. For capture the process is |
11 | | * reversed, the samples are pulled from the device and passed on to the |
12 | | * attached streams. |
13 | | */ |
14 | | #ifndef CRAS_SRC_SERVER_CRAS_IODEV_H_ |
15 | | #define CRAS_SRC_SERVER_CRAS_IODEV_H_ |
16 | | |
17 | | #include <stdbool.h> |
18 | | #include <time.h> |
19 | | |
20 | | #include "cras/common/rust_common.h" |
21 | | #include "cras/src/common/cras_types_internal.h" |
22 | | #include "cras/src/server/cras_dsp.h" |
23 | | #include "cras/src/server/ewma_power.h" |
24 | | #include "cras_iodev_info.h" |
25 | | #include "cras_messages.h" |
26 | | |
27 | | #ifdef __cplusplus |
28 | | extern "C" { |
29 | | #endif |
30 | | |
31 | | struct buffer_share; |
32 | | struct cras_fmt_conv; |
33 | | struct cras_ramp; |
34 | | struct cras_rstream; |
35 | | struct cras_audio_area; |
36 | | struct cras_audio_format; |
37 | | struct audio_thread; |
38 | | struct cras_iodev; |
39 | | struct rate_estimator; |
40 | | |
41 | | /* |
42 | | * Type of callback function to execute when loopback sender transfers audio |
43 | | * to the receiver. For example, this is called in audio thread when playback |
44 | | * samples are mixed and about to write to hardware. |
45 | | * Args: |
46 | | * frames - Loopback audio data from sender. |
47 | | * nframes - Number loopback audio data in frames. |
48 | | * fmt - Format of the loopback audio data. |
49 | | * cb_data - Pointer to the loopback receiver. |
50 | | */ |
51 | | typedef int (*loopback_hook_data_t)(const uint8_t* frames, |
52 | | unsigned int nframes, |
53 | | const struct cras_audio_format* fmt, |
54 | | void* cb_data); |
55 | | |
56 | | /* |
57 | | * Type of callback function to notify loopback receiver that the loopback path |
58 | | * starts or stops. |
59 | | * Args: |
60 | | * start - True to notify receiver that loopback starts. False to notify |
61 | | * loopback stops. |
62 | | * cb_data - Pointer to the loopback receiver. |
63 | | */ |
64 | | typedef int (*loopback_hook_control_t)(bool start, void* cb_data); |
65 | | |
66 | | // Callback type for an iodev event. |
67 | | typedef int (*iodev_hook_t)(); |
68 | | |
69 | | /* |
70 | | * Holds the information of a receiver of loopback audio, used to register |
71 | | * with the sender of loopback audio. A sender keeps a list of cras_loopback |
72 | | * objects representing all the receivers. |
73 | | */ |
74 | | struct cras_loopback { |
75 | | // Pre-dsp loopback can be used for system loopback. Post-dsp |
76 | | // loopback can be used for echo reference. |
77 | | enum CRAS_LOOPBACK_TYPE type; |
78 | | // Callback used for playback samples after mixing, before or |
79 | | // after applying DSP depends on the value of |type|. |
80 | | loopback_hook_data_t hook_data; |
81 | | // Callback to notify receiver that loopback starts or stops. |
82 | | loopback_hook_control_t hook_control; |
83 | | // Pointer to the loopback receiver, will be passing to hook functions. |
84 | | void* cb_data; |
85 | | struct cras_loopback *prev, *next; |
86 | | }; |
87 | | |
88 | | /* State of an iodev. |
89 | | * no_stream state is only supported on output device. |
90 | | * Open state is only supported for device supporting start ops. |
91 | | */ |
92 | | enum CRAS_IODEV_STATE { |
93 | | CRAS_IODEV_STATE_CLOSE = 0, |
94 | | CRAS_IODEV_STATE_OPEN = 1, |
95 | | CRAS_IODEV_STATE_NORMAL_RUN = 2, |
96 | | CRAS_IODEV_STATE_NO_STREAM_RUN = 3, |
97 | | }; |
98 | | |
99 | | /* |
100 | | * Ramp request used in cras_iodev_start_ramp. |
101 | | * |
102 | | * - CRAS_IODEV_RAMP_REQUEST_UP_UNMUTE: Mute->unmute. |
103 | | * Change device to unmute state after ramping is stared, |
104 | | * that is, (a) in the plot. |
105 | | * |
106 | | * ____ |
107 | | * .... / |
108 | | * _____/ |
109 | | * (a) |
110 | | * |
111 | | * - CRAS_IODEV_RAMP_REQUEST_DOWN_MUTE: Unmute->mute. |
112 | | * Change device to mute state after ramping is done, that is, |
113 | | * (b) in the plot. |
114 | | * |
115 | | * _____ |
116 | | * \.... |
117 | | * \____ |
118 | | * (b) |
119 | | * |
120 | | * - CRAS_IODEV_RAMP_REQUEST_UP_START_PLAYBACK: Ramping is requested because |
121 | | * first sample of new stream is ready, there is no need to change mute/unmute |
122 | | * state. |
123 | | * |
124 | | * - CRAS_IODEV_RAMP_REQUEST_RESUME_MUTE: To prevent popped noise, mute the |
125 | | * device for RAMP_RESUME_MUTE_DURATION_SECS seconds on sample ready after |
126 | | * resume if there were playback stream before suspend. |
127 | | * |
128 | | * - CRAS_IODEV_RAMP_REQUEST_SWITCH_MUTE: To prevent popped noise, mute the |
129 | | * device for RAMP_SWITCH_MUTE_DURATION_SECS seconds on sample ready after |
130 | | * device switch if there were playback stream before switch. |
131 | | * |
132 | | */ |
133 | | |
134 | | enum CRAS_IODEV_RAMP_REQUEST { |
135 | | CRAS_IODEV_RAMP_REQUEST_NONE = 0, |
136 | | CRAS_IODEV_RAMP_REQUEST_UP_UNMUTE = 1, |
137 | | CRAS_IODEV_RAMP_REQUEST_DOWN_MUTE = 2, |
138 | | CRAS_IODEV_RAMP_REQUEST_UP_START_PLAYBACK = 3, |
139 | | CRAS_IODEV_RAMP_REQUEST_RESUME_MUTE = 4, |
140 | | CRAS_IODEV_RAMP_REQUEST_SWITCH_MUTE = 5, |
141 | | }; |
142 | | |
143 | | /* Holds an output/input node for this device. An ionode is a control that |
144 | | * can be switched on and off such as headphones or speakers. |
145 | | */ |
146 | | struct cras_ionode { |
147 | | // iodev which this node belongs to. |
148 | | struct cras_iodev* dev; |
149 | | // ionode index. |
150 | | uint32_t idx; |
151 | | // true if the device is plugged. |
152 | | int plugged; |
153 | | // If plugged is true, this is the time it was attached. |
154 | | struct timeval plugged_time; |
155 | | // per-node volume (0-100) |
156 | | unsigned int volume; |
157 | | // Internal per-node capture gain/attenuation (in 100*dBFS) |
158 | | // This is only used for CRAS internal tuning, no way to change by |
159 | | // client. The value could be used in setting mixer controls in HW |
160 | | // or converted to SW scaler based on device configuration. |
161 | | long internal_capture_gain; |
162 | | // The adjustable gain scaler set by client. |
163 | | float ui_gain_scaler; |
164 | | // If left and right output channels are swapped. |
165 | | int left_right_swapped; |
166 | | // Type displayed to the user. |
167 | | enum CRAS_NODE_TYPE type; |
168 | | // Specify where on the system this node locates. |
169 | | enum CRAS_NODE_POSITION position; |
170 | | // Name displayed to the user. |
171 | | char name[CRAS_NODE_NAME_BUFFER_SIZE]; |
172 | | // The "DspName" variable specified in the ucm config. |
173 | | const char* dsp_name; |
174 | | // name of the currently selected hotword model. |
175 | | char active_hotword_model[CRAS_NODE_HOTWORD_MODEL_BUFFER_SIZE]; |
176 | | // pointer to software volume scalers. |
177 | | float* softvol_scalers; |
178 | | // Note: avoid accessing software_volume_needed from ionode in the future. |
179 | | // For output: True if the volume range of the node |
180 | | // is smaller than desired. For input: True if this node needs software |
181 | | // gain. |
182 | | int software_volume_needed; |
183 | | // The "IntrinsicSensitivity" in 0.01 dBFS/Pa |
184 | | // specified in the ucm config. |
185 | | long intrinsic_sensitivity; |
186 | | // id for node that doesn't change after unplug/plug. |
187 | | unsigned int stable_id; |
188 | | // Bit-wise information to indicate the BT profile and attributes |
189 | | // that apply. |
190 | | // See enum CRAS_BT_FLAGS in include/cras_types.h. |
191 | | uint32_t btflags; |
192 | | // The total volume step of the node |
193 | | // suggested by the system. |
194 | | // Mainly used to calculate |
195 | | // the percentage of volume change. |
196 | | // This value for input node is invalid (0). |
197 | | // Output nodes have valid values (> 0). |
198 | | int32_t number_of_volume_steps; |
199 | | // NC support status of the ionode. |
200 | | // Set when the ionode is constructed and frozen. |
201 | | // A bitset of CRAS_NC_PROVIDER. |
202 | | CRAS_NC_PROVIDER nc_providers; |
203 | | // The latency offset given in ms. This value will be directly added |
204 | | // when calculating the playback/capture timestamp |
205 | | // The value is read in board.ini, with 0 being the default if there is no |
206 | | // data. |
207 | | // Incorrect values will cause issues with functions as A/V sync. Only update |
208 | | // the values based on actual measured latency data. |
209 | | int32_t latency_offset_ms; |
210 | | struct cras_ionode *prev, *next; |
211 | | }; |
212 | | |
213 | | // An input or output device, that can have audio routed to/from it. |
214 | | struct cras_iodev { |
215 | | // Function to call if the system volume changes. |
216 | | void (*set_volume)(struct cras_iodev* iodev); |
217 | | // Function to call if the system mute state changes. |
218 | | void (*set_mute)(struct cras_iodev* iodev); |
219 | | // Function to call to set swap mode for the node. |
220 | | int (*set_swap_mode_for_node)(struct cras_iodev* iodev, |
221 | | struct cras_ionode* node, |
222 | | int enable); |
223 | | // Callback when display rotation is changed in system state |
224 | | void (*display_rotation_changed)(struct cras_iodev* iodev); |
225 | | // Opens the device. |
226 | | int (*open_dev)(struct cras_iodev* iodev); |
227 | | // Configures the device. |
228 | | int (*configure_dev)(struct cras_iodev* iodev); |
229 | | // Closes the device if it is open. |
230 | | int (*close_dev)(struct cras_iodev* iodev); |
231 | | // Refresh supported frame rates and channel counts. |
232 | | int (*update_supported_formats)(struct cras_iodev* iodev); |
233 | | // The number of frames in the audio buffer, and fills tstamp |
234 | | // with the associated timestamp. The timestamp is {0, 0} when |
235 | | // the device hasn't started processing data (and on error). |
236 | | int (*frames_queued)(const struct cras_iodev* iodev, struct timespec* tstamp); |
237 | | // The delay of the next sample in frames. |
238 | | int (*delay_frames)(const struct cras_iodev* iodev); |
239 | | // Returns a buffer to read/write to/from. |
240 | | int (*get_buffer)(struct cras_iodev* iodev, |
241 | | struct cras_audio_area** area, |
242 | | unsigned* frames); |
243 | | // Marks a buffer from get_buffer as read/written. |
244 | | int (*put_buffer)(struct cras_iodev* iodev, unsigned nwritten); |
245 | | // Flushes the buffer and return the number of frames flushed. |
246 | | int (*flush_buffer)(struct cras_iodev* iodev); |
247 | | // Starts running device. This is optionally supported on output device. |
248 | | // If device supports this ops, device can be in CRAS_IODEV_STATE_OPEN |
249 | | // state after being opened. |
250 | | // If device does not support this ops, then device will be in |
251 | | // CRAS_IODEV_STATE_NO_STREAM_RUN. |
252 | | int (*start)(struct cras_iodev* iodev); |
253 | | |
254 | | // (Optional) operation to check if |start| can be called at the time. |
255 | | // This is useful for iodev that has logic to allow |start| being |
256 | | // called only under certain conditions. |
257 | | // If |can_start| is left unimplemented, it means the |start| op can |
258 | | // be called whenever it's non-null. |
259 | | bool (*can_start)(const struct cras_iodev* iodev); |
260 | | |
261 | | // (Optional) Checks if the device is in free running state. |
262 | | int (*is_free_running)(const struct cras_iodev* iodev); |
263 | | // (Optional) Handle output device underrun and return the number of frames |
264 | | // filled. |
265 | | int (*output_underrun)(struct cras_iodev* iodev); |
266 | | // When there is no stream, we let device keep running |
267 | | // for some time to save the time to open device for the next |
268 | | // stream. This is the no stream state of an output device. |
269 | | // Set no_stream to cras_iodev_default_no_stream_playback |
270 | | // to fill zeros periodically. |
271 | | // Device can implement this function to define |
272 | | // its own optimization of entering/exiting no stream state. |
273 | | int (*no_stream)(struct cras_iodev* iodev, int enable); |
274 | | // Update the active node when the selected device/node has |
275 | | // changed. |
276 | | void (*update_active_node)(struct cras_iodev* iodev, |
277 | | unsigned node_idx, |
278 | | unsigned dev_enabled); |
279 | | // Update the channel layout base on set iodev->format, |
280 | | // expect the best available layout be filled to iodev->format. |
281 | | int (*update_channel_layout)(struct cras_iodev* iodev); |
282 | | // Sets the hotword model to this iodev. |
283 | | int (*set_hotword_model)(struct cras_iodev* iodev, const char* model_name); |
284 | | // Gets a comma separated string of the list of supported |
285 | | // hotword models of this iodev. |
286 | | char* (*get_hotword_models)(struct cras_iodev* iodev); |
287 | | // Gets number of severe underrun recorded since |
288 | | // iodev was created. |
289 | | unsigned int (*get_num_severe_underruns)(const struct cras_iodev* iodev); |
290 | | // Gets number of valid frames in device which have not |
291 | | // played yet. Valid frames does not include zero samples |
292 | | // we filled under no streams state. |
293 | | int (*get_valid_frames)(struct cras_iodev* odev, struct timespec* tstamp); |
294 | | // Returns the non-negative number of frames that |
295 | | // audio thread can sleep before serving this playback dev the next time. |
296 | | // Not implementing this ops means fall back to default behavior in |
297 | | // cras_iodev_default_frames_to_play_in_sleep(). |
298 | | unsigned int (*frames_to_play_in_sleep)(struct cras_iodev* iodev, |
299 | | unsigned int* hw_level, |
300 | | struct timespec* hw_tstamp); |
301 | | // (Optional) Checks if the node supports noise |
302 | | // cancellation. |
303 | | int (*support_noise_cancellation)(const struct cras_iodev* iodev, |
304 | | unsigned node_idx); |
305 | | bool (*set_rtc_proc_enabled)(struct cras_iodev* iodev, |
306 | | enum RTC_PROC_ON_DSP rtc_proc, |
307 | | bool enabled); |
308 | | bool (*get_rtc_proc_enabled)(struct cras_iodev* iodev, |
309 | | enum RTC_PROC_ON_DSP rtc_proc); |
310 | | // (Optional) Gets the current iodev's group. |
311 | | struct cras_iodev* const* (*get_dev_group)(const struct cras_iodev* iodev, |
312 | | size_t* out_group_size); |
313 | | // (Optional) Gets an unique ID of the iodev's group. 0 if not in a group. |
314 | | uintptr_t (*get_dev_group_id)(const struct cras_iodev* iodev); |
315 | | // (Optional) Checks if the given stream should be attached to the iodev based |
316 | | // on the iodev's use case and stream parameters. |
317 | | int (*should_attach_stream)(const struct cras_iodev* iodev, |
318 | | const struct cras_rstream* stream); |
319 | | // (Optional) Gets the use case of the iodev. |
320 | | enum CRAS_USE_CASE (*get_use_case)(const struct cras_iodev* iodev); |
321 | | // (Optional) Obtain the hardware timestamp for the last update |
322 | | // The hardware timestamp should be using the MONOTONIC_RAW clock |
323 | | // For playback, the timestamp is the last time the iodev wrote into the |
324 | | // buffer. |
325 | | // For capture, the timestamp is the last time the iodev read from the buffer. |
326 | | // Not implementing this ops means fall back to default behavior using current |
327 | | // time with MONOTONIC_RAW clock as the timestamp. |
328 | | int (*get_htimestamp)(const struct cras_iodev* iodev, struct timespec* ts); |
329 | | |
330 | | // Callback when spatial audio is changed in system state |
331 | | void (*spatial_audio_changed)(struct cras_iodev* iodev); |
332 | | |
333 | | // The audio format being rendered or captured to hardware. |
334 | | struct cras_audio_format* format; |
335 | | // Rate estimator to estimate the actual device rate. |
336 | | struct rate_estimator* rate_est; |
337 | | // Information about how the samples are stored. |
338 | | struct cras_audio_area* area; |
339 | | // Unique identifier for this device (index and name). |
340 | | struct cras_iodev_info info; |
341 | | // The output or input nodes available for this device. |
342 | | // With multiple endpoints, the nodes are logically shared by all iodevs in a |
343 | | // group. The iodev with CRAS_USE_CASE_HIFI is the owner of nodes and manages |
344 | | // this linked list. The other iodevs in the group have their nodes = NULL. |
345 | | // If the iodev isn't part of any group, it manages its own nodes and the |
346 | | // nodes pointer should be valid. |
347 | | struct cras_ionode* nodes; |
348 | | // The current node being used for playback or capture. |
349 | | struct cras_ionode* active_node; |
350 | | // Input or Output. |
351 | | enum CRAS_STREAM_DIRECTION direction; |
352 | | // Array of sample rates supported by device 0-terminated. |
353 | | size_t* supported_rates; |
354 | | // List of number of channels supported by device. |
355 | | size_t* supported_channel_counts; |
356 | | // List of audio formats (s16le, s32le) supported by device. |
357 | | snd_pcm_format_t* supported_formats; |
358 | | // Size of the audio buffer in frames. |
359 | | snd_pcm_uframes_t buffer_size; |
360 | | // Extra frames to keep queued in addition to requested. |
361 | | unsigned int min_buffer_level; |
362 | | // The context used for dsp processing on the audio data. |
363 | | struct cras_dsp_context* dsp_context; |
364 | | // The "dsp_name" dsp variable specified in the ucm config. |
365 | | const char* dsp_name; |
366 | | // Used only for playback iodev. Pointer to the input |
367 | | // iodev, which can be used to record what is playing out from this |
368 | | // iodev. This will be used as the echo reference for echo cancellation. |
369 | | struct cras_iodev* echo_reference_dev; |
370 | | // True if this iodev is enabled, false otherwise. |
371 | | int is_enabled; |
372 | | // True if volume control is not supported by hardware. |
373 | | int software_volume_needed; |
374 | | // Adjust captured data by applying a software gain. |
375 | | // This scaler value may vary depending on the active node. |
376 | | // Configure this value when hardware gain control is unavailable. |
377 | | float internal_gain_scaler; |
378 | | // List of audio streams serviced by dev. |
379 | | struct dev_stream* streams; |
380 | | // Device is in one of close, open, normal, or no_stream state defined |
381 | | // in enum CRAS_IODEV_STATE. |
382 | | enum CRAS_IODEV_STATE state; |
383 | | // min callback level of any stream attached. |
384 | | unsigned int min_cb_level; |
385 | | // max callback level of any stream attached. |
386 | | unsigned int max_cb_level; |
387 | | // The highest hardware level of the device. |
388 | | unsigned int highest_hw_level; |
389 | | // The callback level when the device was opened. |
390 | | unsigned int open_cb_level; |
391 | | // The largest callback level of streams attached to this |
392 | | // device. The difference with max_cb_level is it takes all |
393 | | // streams into account even if they have been removed. |
394 | | unsigned int largest_cb_level; |
395 | | // Number of times we have run out of data (playback only). |
396 | | unsigned int num_underruns; |
397 | | // Number of underruns while AP NC is running. |
398 | | unsigned int num_underruns_during_nc; |
399 | | // Number of samples dropped. |
400 | | unsigned int num_samples_dropped; |
401 | | double rate_est_underrun; |
402 | | // Timestamp of the last update to the reset quota. |
403 | | struct timespec last_reset_timeref; |
404 | | // Describes the used quota for resets in this time window of |
405 | | // MAX_IODEV_RESET_TIMEWINDOW_SEC seconds (token bucket). |
406 | | double num_reset; |
407 | | // If multiple streams are writing to this device, then this |
408 | | // keeps track of how much each stream has written. |
409 | | struct buffer_share* buf_state; |
410 | | // The timestamp when to close the dev after being idle. |
411 | | struct timespec idle_timeout; |
412 | | // The time when the device opened. |
413 | | struct timespec open_ts; |
414 | | // List of registered cras_loopback objects representing the |
415 | | // receivers who wants a copy of the audio sending through this iodev. |
416 | | struct cras_loopback* loopbacks; |
417 | | // Optional callback to call before iodev open. |
418 | | iodev_hook_t pre_open_iodev_hook; |
419 | | // Optional callback to call after iodev close. |
420 | | iodev_hook_t post_close_iodev_hook; |
421 | | // External dsp module to process audio data in stream level |
422 | | // after dsp_context. |
423 | | struct ext_dsp_module* ext_dsp_module; |
424 | | // Optional dsp_offload_map instance to store the information of CRAS DSP |
425 | | // offload to ADSP FW. This is available only if supported on this iodev. |
426 | | struct dsp_offload_map* dsp_offload_map; |
427 | | // The flag for pending reset request. |
428 | | int reset_request_pending; |
429 | | // The cras_ramp struct to control ramping up/down at mute/unmute and |
430 | | // start of playback. |
431 | | struct cras_ramp* ramp; |
432 | | // For capture only. Indicate if input has started. |
433 | | int input_streaming; |
434 | | // The number of frames read from the device, but that |
435 | | // haven't been "put" yet. |
436 | | unsigned int input_frames_read; |
437 | | // The number of frames in the HW buffer that have already |
438 | | // been processed by the input DSP. |
439 | | unsigned int input_dsp_offset; |
440 | | // The value indicates which type of ramp the device |
441 | | // should perform when some samples are ready for playback. |
442 | | enum CRAS_IODEV_RAMP_REQUEST initial_ramp_request; |
443 | | // Used to pass audio input data to streams with or without |
444 | | // stream side processing. |
445 | | struct input_data* input_data; |
446 | | // The ewma instance to calculate iodev volume. |
447 | | struct ewma_power ewma; |
448 | | // Indicates that this device is used by the system instead of by the user. |
449 | | bool is_utility_device; |
450 | | // The tag of NC effect state for deciding if we need to restart iodev. |
451 | | // Should be set during device open. |
452 | | CRAS_NC_PROVIDER restart_tag_effect_state; |
453 | | // Indicates that this device ignores capture mute. |
454 | | bool ignore_capture_mute; |
455 | | // The total number of pinned streams targeting this device from the main |
456 | | // thread point of view. Some of these pinned streams may not be attached |
457 | | // actually due to init/attach errors or suspend. |
458 | | int num_pinned_streams; |
459 | | struct cras_iodev *prev, *next; |
460 | | }; |
461 | | |
462 | | /* |
463 | | * Utility functions to be used by iodev implementations. |
464 | | */ |
465 | | |
466 | | /* Sets up the iodev for the given format if possible. If the iodev can't |
467 | | * handle the requested format, format conversion will happen in dev_stream. |
468 | | * It also allocates a dsp context for the iodev. |
469 | | * Args: |
470 | | * iodev - the iodev you want the format for. |
471 | | * fmt - the desired format. |
472 | | */ |
473 | | int cras_iodev_set_format(struct cras_iodev* iodev, |
474 | | const struct cras_audio_format* fmt); |
475 | | |
476 | | /* Clear the format previously set for this iodev. |
477 | | * |
478 | | * Args: |
479 | | * iodev - the iodev you want to free the format. |
480 | | */ |
481 | | void cras_iodev_free_format(struct cras_iodev* iodev); |
482 | | |
483 | | /* Initializes the audio area for this iodev. |
484 | | * Args: |
485 | | * iodev - the iodev to init audio area |
486 | | */ |
487 | | void cras_iodev_init_audio_area(struct cras_iodev* iodev); |
488 | | |
489 | | /* Frees the audio area for this iodev. |
490 | | * Args: |
491 | | * iodev - the iodev to free audio area |
492 | | */ |
493 | | void cras_iodev_free_audio_area(struct cras_iodev* iodev); |
494 | | |
495 | | /* Free resources allocated for this iodev. |
496 | | * |
497 | | * Args: |
498 | | * iodev - the iodev you want to free the resources for. |
499 | | */ |
500 | | void cras_iodev_free_resources(struct cras_iodev* iodev); |
501 | | |
502 | | /* Fill timespec ts with the time to sleep based on the number of frames and |
503 | | * frame rate. |
504 | | * Args: |
505 | | * frames - Number of frames in buffer.. |
506 | | * frame_rate - 44100, 48000, etc. |
507 | | * ts - Filled with the time to sleep for. |
508 | | */ |
509 | | void cras_iodev_fill_time_from_frames(size_t frames, |
510 | | size_t frame_rate, |
511 | | struct timespec* ts); |
512 | | |
513 | | /* Update the "dsp_name" dsp variable. This may cause the dsp pipeline to be |
514 | | * reloaded. |
515 | | * Args: |
516 | | * iodev - device which the state changes. |
517 | | */ |
518 | | void cras_iodev_update_dsp(struct cras_iodev* iodev); |
519 | | |
520 | | /* Sets swap mode on a node using dsp. This function can be called when |
521 | | * dsp pipeline is not created yet. It will take effect when dsp pipeline |
522 | | * is created later. If there is dsp pipeline, this function causes the dsp |
523 | | * pipeline to be reloaded and swap mode takes effect right away. |
524 | | * Args: |
525 | | * iodev - device to be changed for swap mode. |
526 | | * node - the node to be changed for swap mode. |
527 | | * enable - 1 to enable swap mode, 0 otherwise. |
528 | | * Returns: |
529 | | * 0 on success, error code on failure. |
530 | | */ |
531 | | int cras_iodev_dsp_set_swap_mode_for_node(struct cras_iodev* iodev, |
532 | | struct cras_ionode* node, |
533 | | int enable); |
534 | | |
535 | | /* Handles a plug event happening on this node. |
536 | | * Args: |
537 | | * node - ionode on which a plug event was detected. |
538 | | * plugged - true if the device was plugged, false for unplugged. |
539 | | */ |
540 | | void cras_ionode_plug_event(struct cras_ionode* node, int plugged); |
541 | | |
542 | | // Returns true if node a is preferred over node b. |
543 | | int cras_ionode_better(struct cras_ionode* a, struct cras_ionode* b); |
544 | | |
545 | | // Sets the plugged state of a node. |
546 | | void cras_iodev_set_node_plugged(struct cras_ionode* node, int plugged); |
547 | | |
548 | | // Adds a node to the iodev's node list. |
549 | | void cras_iodev_add_node(struct cras_iodev* iodev, struct cras_ionode* node); |
550 | | |
551 | | // Removes a node from iodev's node list. |
552 | | void cras_iodev_rm_node(struct cras_iodev* iodev, struct cras_ionode* node); |
553 | | |
554 | | // Assign a node to be the active node of the device |
555 | | void cras_iodev_set_active_node(struct cras_iodev* iodev, |
556 | | struct cras_ionode* node); |
557 | | |
558 | | // Checks if the node is the typical playback or capture option for AEC usage. |
559 | | bool cras_iodev_is_tuned_aec_use_case(const struct cras_ionode* node); |
560 | | |
561 | | // Checks if the node is the playback or capture option for AEC on DSP usage. |
562 | | bool cras_iodev_is_dsp_aec_use_case(const struct cras_ionode* node); |
563 | | |
564 | | // Checks if the node is a playback or capture node on internal card. |
565 | | bool cras_iodev_is_on_internal_card(const struct cras_ionode* node); |
566 | | |
567 | | // Checks if the node is the internal mic. |
568 | | bool cras_iodev_is_node_internal_mic(const struct cras_ionode* node); |
569 | | |
570 | | // Checks if the node type is the internal mic. |
571 | | bool cras_iodev_is_node_type_internal_mic(const char* type); |
572 | | |
573 | | // Checks if node type is loopback device. |
574 | | bool cras_iodev_is_loopback(const struct cras_ionode* node); |
575 | | |
576 | | // Adjust the system volume based on the volume of the given node. |
577 | | static inline unsigned int cras_iodev_adjust_node_volume( |
578 | | const struct cras_ionode* node, |
579 | 0 | unsigned int system_volume) { |
580 | 0 | unsigned int node_vol_offset = 100 - node->volume; |
581 | |
|
582 | 0 | if (system_volume > node_vol_offset) { |
583 | 0 | return system_volume - node_vol_offset; |
584 | 0 | } else { |
585 | 0 | return 0; |
586 | 0 | } |
587 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_adjust_node_volume(cras_ionode const*, unsigned int) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_dsp.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_fl_media.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_bt_io.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_bt_policy.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_bt_device.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_adjust_node_volume Unexecuted instantiation: audio_thread.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_device_monitor.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_fl_manager.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_bt_manager.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_iodev.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_iodev_list.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_lea_manager.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_observer.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_rclient.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_control_rclient.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_rclient_util.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_rstream.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_rtc.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_dbus_control.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_sco.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_server_metrics.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_system_state.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_alsa_card.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_alsa_io.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_adjust_node_volume Unexecuted instantiation: dev_io.c:cras_iodev_adjust_node_volume Unexecuted instantiation: dev_stream.c:cras_iodev_adjust_node_volume Unexecuted instantiation: test_iodev.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_adjust_node_volume Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_adjust_node_volume(cras_ionode const*, unsigned int) Unexecuted instantiation: rclient_message.cc:cras_iodev_adjust_node_volume(cras_ionode const*, unsigned int) |
588 | | |
589 | | // Get the volume scaler for the active node. |
590 | | static inline unsigned int cras_iodev_adjust_active_node_volume( |
591 | | struct cras_iodev* iodev, |
592 | 0 | unsigned int system_volume) { |
593 | 0 | if (!iodev->active_node) { |
594 | 0 | return system_volume; |
595 | 0 | } |
596 | | |
597 | 0 | return cras_iodev_adjust_node_volume(iodev->active_node, system_volume); |
598 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_adjust_active_node_volume(cras_iodev*, unsigned int) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_dsp.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_fl_media.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_bt_io.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_bt_policy.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_bt_device.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: audio_thread.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_device_monitor.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_fl_manager.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_bt_manager.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_iodev.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_iodev_list.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_lea_manager.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_observer.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_rclient.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_control_rclient.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_rclient_util.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_rstream.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_rtc.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_dbus_control.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_sco.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_server_metrics.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_system_state.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_alsa_card.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_alsa_io.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: dev_io.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: dev_stream.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: test_iodev.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_adjust_active_node_volume Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_adjust_active_node_volume(cras_iodev*, unsigned int) Unexecuted instantiation: rclient_message.cc:cras_iodev_adjust_active_node_volume(cras_iodev*, unsigned int) |
599 | | |
600 | | // Returns true if the active node of the iodev needs software volume. |
601 | | static inline int cras_iodev_software_volume_needed( |
602 | 0 | const struct cras_iodev* iodev) { |
603 | 0 | if (iodev->software_volume_needed) { |
604 | 0 | return 1; |
605 | 0 | } |
606 | | |
607 | 0 | if (!iodev->active_node) { |
608 | 0 | return 0; |
609 | 0 | } |
610 | | |
611 | 0 | if (iodev->active_node->intrinsic_sensitivity) { |
612 | 0 | return 1; |
613 | 0 | } |
614 | | |
615 | 0 | return iodev->active_node->software_volume_needed; |
616 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_software_volume_needed(cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_dsp.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_fl_media.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_bt_io.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_bt_policy.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_bt_device.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_software_volume_needed Unexecuted instantiation: audio_thread.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_device_monitor.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_fl_manager.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_bt_manager.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_iodev.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_iodev_list.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_lea_manager.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_observer.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_rclient.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_control_rclient.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_rclient_util.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_rstream.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_rtc.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_dbus_control.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_sco.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_server_metrics.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_system_state.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_alsa_card.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_alsa_io.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_software_volume_needed Unexecuted instantiation: dev_io.c:cras_iodev_software_volume_needed Unexecuted instantiation: dev_stream.c:cras_iodev_software_volume_needed Unexecuted instantiation: test_iodev.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_software_volume_needed Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_software_volume_needed(cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_software_volume_needed(cras_iodev const*) |
617 | | |
618 | | static inline float cras_iodev_get_ui_gain_scaler( |
619 | 0 | const struct cras_iodev* iodev) { |
620 | 0 | if (!iodev->active_node) { |
621 | 0 | return 1.0f; |
622 | 0 | } |
623 | 0 | return iodev->active_node->ui_gain_scaler; |
624 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_get_ui_gain_scaler(cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_dsp.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_fl_media.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_bt_io.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_bt_policy.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_bt_device.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: audio_thread.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_device_monitor.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_fl_manager.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_bt_manager.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_iodev.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_iodev_list.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_lea_manager.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_observer.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_rclient.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_control_rclient.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_rclient_util.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_rstream.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_rtc.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_dbus_control.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_sco.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_server_metrics.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_system_state.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_alsa_card.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_alsa_io.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: dev_io.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: dev_stream.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: test_iodev.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_get_ui_gain_scaler Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_get_ui_gain_scaler(cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_get_ui_gain_scaler(cras_iodev const*) |
625 | | |
626 | 0 | static inline bool cras_iodev_can_start(const struct cras_iodev* iodev) { |
627 | 0 | if (iodev->start && iodev->can_start) { |
628 | 0 | return iodev->can_start(iodev); |
629 | 0 | } else { |
630 | 0 | return !!iodev->start; |
631 | 0 | } |
632 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_can_start(cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_can_start Unexecuted instantiation: cras_dsp.c:cras_iodev_can_start Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_can_start Unexecuted instantiation: cras_fl_media.c:cras_iodev_can_start Unexecuted instantiation: cras_bt_io.c:cras_iodev_can_start Unexecuted instantiation: cras_bt_policy.c:cras_iodev_can_start Unexecuted instantiation: cras_bt_device.c:cras_iodev_can_start Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_can_start Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_can_start Unexecuted instantiation: audio_thread.c:cras_iodev_can_start Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_can_start Unexecuted instantiation: cras_device_monitor.c:cras_iodev_can_start Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_can_start Unexecuted instantiation: cras_fl_manager.c:cras_iodev_can_start Unexecuted instantiation: cras_bt_manager.c:cras_iodev_can_start Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_can_start Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_can_start Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_can_start Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_can_start Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_can_start Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_can_start Unexecuted instantiation: cras_iodev.c:cras_iodev_can_start Unexecuted instantiation: cras_iodev_list.c:cras_iodev_can_start Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_can_start Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_can_start Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_can_start Unexecuted instantiation: cras_lea_manager.c:cras_iodev_can_start Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_can_start Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_can_start Unexecuted instantiation: cras_observer.c:cras_iodev_can_start Unexecuted instantiation: cras_rclient.c:cras_iodev_can_start Unexecuted instantiation: cras_control_rclient.c:cras_iodev_can_start Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_can_start Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_can_start Unexecuted instantiation: cras_rclient_util.c:cras_iodev_can_start Unexecuted instantiation: cras_rstream.c:cras_iodev_can_start Unexecuted instantiation: cras_rtc.c:cras_iodev_can_start Unexecuted instantiation: cras_dbus_control.c:cras_iodev_can_start Unexecuted instantiation: cras_sco.c:cras_iodev_can_start Unexecuted instantiation: cras_server_metrics.c:cras_iodev_can_start Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_can_start Unexecuted instantiation: cras_system_state.c:cras_iodev_can_start Unexecuted instantiation: cras_alsa_card.c:cras_iodev_can_start Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_can_start Unexecuted instantiation: cras_alsa_io.c:cras_iodev_can_start Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_can_start Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_can_start Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_can_start Unexecuted instantiation: dev_io.c:cras_iodev_can_start Unexecuted instantiation: dev_stream.c:cras_iodev_can_start Unexecuted instantiation: test_iodev.c:cras_iodev_can_start Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_can_start Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_can_start Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_can_start Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_can_start(cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_can_start(cras_iodev const*) |
633 | | |
634 | | /* Gets the software gain scaler should be applied on the device. |
635 | | * Args: |
636 | | * iodev - The device. |
637 | | * Returns: |
638 | | * A scaler translated from system gain and active node gain. |
639 | | * Returns 1.0 if software gain is not needed. */ |
640 | | float cras_iodev_get_internal_gain_scaler(const struct cras_iodev* iodev); |
641 | | |
642 | | /* Gets the software volume scaler of the iodev. The scaler should only be |
643 | | * applied if the device needs software volume. */ |
644 | | float cras_iodev_get_software_volume_scaler(struct cras_iodev* iodev); |
645 | | |
646 | | // Indicate that a stream has been added from the device. |
647 | | int cras_iodev_add_stream(struct cras_iodev* iodev, struct dev_stream* stream); |
648 | | |
649 | | /* Indicate that a stream is taken into consideration of device's I/O. This |
650 | | * function is for output stream only. For input stream, it is already included |
651 | | * by add_stream function. */ |
652 | | void cras_iodev_start_stream(struct cras_iodev* iodev, |
653 | | struct dev_stream* stream); |
654 | | |
655 | | // Indicate that a stream has been removed from the device. |
656 | | struct dev_stream* cras_iodev_rm_stream(struct cras_iodev* iodev, |
657 | | const struct cras_rstream* stream); |
658 | | |
659 | | // Get the offset of this stream into the dev's buffer. |
660 | | unsigned int cras_iodev_stream_offset(struct cras_iodev* iodev, |
661 | | struct dev_stream* stream); |
662 | | |
663 | | // Get the maximum offset of any stream into the dev's buffer. |
664 | | unsigned int cras_iodev_max_stream_offset(const struct cras_iodev* iodev); |
665 | | |
666 | | // Tell the device how many frames the given stream wrote. |
667 | | void cras_iodev_stream_written(struct cras_iodev* iodev, |
668 | | struct dev_stream* stream, |
669 | | unsigned int nwritten); |
670 | | |
671 | | /* All streams have written what they can, update the write pointers and return |
672 | | * the amount that has been filled by all streams and can be committed to the |
673 | | * device. |
674 | | */ |
675 | | unsigned int cras_iodev_all_streams_written(struct cras_iodev* iodev, |
676 | | unsigned int write_limit); |
677 | | |
678 | | /* Force all streams acting like they consumed |read_limit| frames from |
679 | | * iodev. This is used with cras_iodev_drop_frames to reset the potential |
680 | | * offsets in individual streams. |
681 | | */ |
682 | | void cras_iodev_force_all_streams_read(struct cras_iodev* iodev, |
683 | | unsigned int read_limit); |
684 | | |
685 | | // Return the state of an iodev. |
686 | | enum CRAS_IODEV_STATE cras_iodev_state(const struct cras_iodev* iodev); |
687 | | |
688 | | // Open an iodev, does setup and invokes the open_dev callback. |
689 | | int cras_iodev_open(struct cras_iodev* iodev, |
690 | | unsigned int cb_level, |
691 | | const struct cras_audio_format* fmt); |
692 | | |
693 | | // Open an iodev, does teardown and invokes the close_dev callback. |
694 | | int cras_iodev_close(struct cras_iodev* iodev); |
695 | | |
696 | | // Gets the available buffer to write/read audio. |
697 | | int cras_iodev_buffer_avail(struct cras_iodev* iodev, unsigned hw_level); |
698 | | |
699 | | /* Marks a buffer from get_buffer as read. |
700 | | * Args: |
701 | | * iodev - The input device. |
702 | | * Returns: |
703 | | * Number of frames to put successfully. Negative error code on failure. |
704 | | */ |
705 | | int cras_iodev_put_input_buffer(struct cras_iodev* iodev); |
706 | | |
707 | | // Marks a buffer from get_buffer as written. |
708 | | int cras_iodev_put_output_buffer(struct cras_iodev* iodev, |
709 | | uint8_t* frames, |
710 | | unsigned int nframes, |
711 | | int* is_non_empty, |
712 | | struct cras_fmt_conv* remix_converter); |
713 | | |
714 | | /* Returns a buffer to read from. |
715 | | * Args: |
716 | | * iodev - The device. |
717 | | * request_frames - The number of frames to request for. |
718 | | * ret_frames - Filled with the number of frames that can be read/written. |
719 | | */ |
720 | | int cras_iodev_get_input_buffer(struct cras_iodev* iodev, |
721 | | unsigned int request_frames, |
722 | | unsigned* ret_frames); |
723 | | |
724 | | /* Returns a buffer to read from. |
725 | | * Args: |
726 | | * iodev - The device. |
727 | | * request_frames - The number of frames to request for. |
728 | | * area - Filled with a pointer to the audio to read/write. |
729 | | * ret_frames - Filled with the number of frames that can be read/written. |
730 | | */ |
731 | | int cras_iodev_get_output_buffer(struct cras_iodev* iodev, |
732 | | unsigned int request_frames, |
733 | | struct cras_audio_area** area, |
734 | | unsigned* ret_frames); |
735 | | |
736 | | // Update the estimated sample rate of the device. |
737 | | int cras_iodev_update_rate(struct cras_iodev* iodev, |
738 | | unsigned int level, |
739 | | struct timespec* level_tstamp); |
740 | | |
741 | | // Resets the rate estimator of the device. |
742 | | int cras_iodev_reset_rate_estimator(const struct cras_iodev* iodev); |
743 | | |
744 | | /* Returns the rate of estimated frame rate and the claimed frame rate of |
745 | | * the device. */ |
746 | | double cras_iodev_get_est_rate_ratio(const struct cras_iodev* iodev); |
747 | | |
748 | | /* Get number of underruns recorded so far. |
749 | | * Args: |
750 | | * iodev[in] - The device. |
751 | | * Returns: |
752 | | * A double for Returns the rate of estimated frame rate and the claimed |
753 | | * frame rate of the device when underrun. |
754 | | */ |
755 | | double cras_iodev_get_rate_est_underrun_ratio(const struct cras_iodev* iodev); |
756 | | |
757 | | // Get the delay from DSP processing in frames. |
758 | | int cras_iodev_get_dsp_delay(const struct cras_iodev* iodev); |
759 | | |
760 | | /* Returns the number of frames in the hardware buffer. |
761 | | * Args: |
762 | | * iodev - The device. |
763 | | * tstamp - The associated hardware time stamp. |
764 | | * Returns: |
765 | | * Number of frames in the hardware buffer. |
766 | | * Returns -EPIPE if there is severe underrun. |
767 | | */ |
768 | | int cras_iodev_frames_queued(struct cras_iodev* iodev, struct timespec* tstamp); |
769 | | |
770 | | // Get the delay for input/output in frames. |
771 | 0 | static inline int cras_iodev_delay_frames(const struct cras_iodev* iodev) { |
772 | 0 | return iodev->delay_frames(iodev) + cras_iodev_get_dsp_delay(iodev); |
773 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_delay_frames(cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_delay_frames Unexecuted instantiation: cras_dsp.c:cras_iodev_delay_frames Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_delay_frames Unexecuted instantiation: cras_fl_media.c:cras_iodev_delay_frames Unexecuted instantiation: cras_bt_io.c:cras_iodev_delay_frames Unexecuted instantiation: cras_bt_policy.c:cras_iodev_delay_frames Unexecuted instantiation: cras_bt_device.c:cras_iodev_delay_frames Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_delay_frames Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_delay_frames Unexecuted instantiation: audio_thread.c:cras_iodev_delay_frames Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_delay_frames Unexecuted instantiation: cras_device_monitor.c:cras_iodev_delay_frames Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_delay_frames Unexecuted instantiation: cras_fl_manager.c:cras_iodev_delay_frames Unexecuted instantiation: cras_bt_manager.c:cras_iodev_delay_frames Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_delay_frames Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_delay_frames Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_delay_frames Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_delay_frames Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_delay_frames Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_delay_frames Unexecuted instantiation: cras_iodev.c:cras_iodev_delay_frames Unexecuted instantiation: cras_iodev_list.c:cras_iodev_delay_frames Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_delay_frames Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_delay_frames Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_delay_frames Unexecuted instantiation: cras_lea_manager.c:cras_iodev_delay_frames Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_delay_frames Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_delay_frames Unexecuted instantiation: cras_observer.c:cras_iodev_delay_frames Unexecuted instantiation: cras_rclient.c:cras_iodev_delay_frames Unexecuted instantiation: cras_control_rclient.c:cras_iodev_delay_frames Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_delay_frames Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_delay_frames Unexecuted instantiation: cras_rclient_util.c:cras_iodev_delay_frames Unexecuted instantiation: cras_rstream.c:cras_iodev_delay_frames Unexecuted instantiation: cras_rtc.c:cras_iodev_delay_frames Unexecuted instantiation: cras_dbus_control.c:cras_iodev_delay_frames Unexecuted instantiation: cras_sco.c:cras_iodev_delay_frames Unexecuted instantiation: cras_server_metrics.c:cras_iodev_delay_frames Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_delay_frames Unexecuted instantiation: cras_system_state.c:cras_iodev_delay_frames Unexecuted instantiation: cras_alsa_card.c:cras_iodev_delay_frames Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_delay_frames Unexecuted instantiation: cras_alsa_io.c:cras_iodev_delay_frames Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_delay_frames Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_delay_frames Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_delay_frames Unexecuted instantiation: dev_io.c:cras_iodev_delay_frames Unexecuted instantiation: dev_stream.c:cras_iodev_delay_frames Unexecuted instantiation: test_iodev.c:cras_iodev_delay_frames Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_delay_frames Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_delay_frames Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_delay_frames Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_delay_frames(cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_delay_frames(cras_iodev const*) |
774 | | |
775 | | // Returns if input iodev has started streaming. |
776 | 0 | static inline int cras_iodev_input_streaming(const struct cras_iodev* iodev) { |
777 | 0 | return iodev->input_streaming; |
778 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_input_streaming(cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_input_streaming Unexecuted instantiation: cras_dsp.c:cras_iodev_input_streaming Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_input_streaming Unexecuted instantiation: cras_fl_media.c:cras_iodev_input_streaming Unexecuted instantiation: cras_bt_io.c:cras_iodev_input_streaming Unexecuted instantiation: cras_bt_policy.c:cras_iodev_input_streaming Unexecuted instantiation: cras_bt_device.c:cras_iodev_input_streaming Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_input_streaming Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_input_streaming Unexecuted instantiation: audio_thread.c:cras_iodev_input_streaming Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_input_streaming Unexecuted instantiation: cras_device_monitor.c:cras_iodev_input_streaming Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_input_streaming Unexecuted instantiation: cras_fl_manager.c:cras_iodev_input_streaming Unexecuted instantiation: cras_bt_manager.c:cras_iodev_input_streaming Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_input_streaming Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_input_streaming Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_input_streaming Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_input_streaming Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_input_streaming Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_input_streaming Unexecuted instantiation: cras_iodev.c:cras_iodev_input_streaming Unexecuted instantiation: cras_iodev_list.c:cras_iodev_input_streaming Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_input_streaming Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_input_streaming Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_input_streaming Unexecuted instantiation: cras_lea_manager.c:cras_iodev_input_streaming Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_input_streaming Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_input_streaming Unexecuted instantiation: cras_observer.c:cras_iodev_input_streaming Unexecuted instantiation: cras_rclient.c:cras_iodev_input_streaming Unexecuted instantiation: cras_control_rclient.c:cras_iodev_input_streaming Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_input_streaming Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_input_streaming Unexecuted instantiation: cras_rclient_util.c:cras_iodev_input_streaming Unexecuted instantiation: cras_rstream.c:cras_iodev_input_streaming Unexecuted instantiation: cras_rtc.c:cras_iodev_input_streaming Unexecuted instantiation: cras_dbus_control.c:cras_iodev_input_streaming Unexecuted instantiation: cras_sco.c:cras_iodev_input_streaming Unexecuted instantiation: cras_server_metrics.c:cras_iodev_input_streaming Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_input_streaming Unexecuted instantiation: cras_system_state.c:cras_iodev_input_streaming Unexecuted instantiation: cras_alsa_card.c:cras_iodev_input_streaming Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_input_streaming Unexecuted instantiation: cras_alsa_io.c:cras_iodev_input_streaming Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_input_streaming Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_input_streaming Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_input_streaming Unexecuted instantiation: dev_io.c:cras_iodev_input_streaming Unexecuted instantiation: dev_stream.c:cras_iodev_input_streaming Unexecuted instantiation: test_iodev.c:cras_iodev_input_streaming Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_input_streaming Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_input_streaming Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_input_streaming Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_input_streaming(cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_input_streaming(cras_iodev const*) |
779 | | |
780 | | // Returns true if the device is open. |
781 | 44.0k | static inline bool cras_iodev_is_open(const struct cras_iodev* iodev) { |
782 | 44.0k | return iodev && iodev->state != CRAS_IODEV_STATE_CLOSE; |
783 | 44.0k | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_is_open(cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_is_open Unexecuted instantiation: cras_dsp.c:cras_iodev_is_open Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_is_open Unexecuted instantiation: cras_fl_media.c:cras_iodev_is_open cras_bt_io.c:cras_iodev_is_open Line | Count | Source | 781 | 733 | static inline bool cras_iodev_is_open(const struct cras_iodev* iodev) { | 782 | 733 | return iodev && iodev->state != CRAS_IODEV_STATE_CLOSE; | 783 | 733 | } |
Unexecuted instantiation: cras_bt_policy.c:cras_iodev_is_open Unexecuted instantiation: cras_bt_device.c:cras_iodev_is_open Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_is_open Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_is_open Unexecuted instantiation: audio_thread.c:cras_iodev_is_open Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_is_open Unexecuted instantiation: cras_device_monitor.c:cras_iodev_is_open Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_is_open Unexecuted instantiation: cras_fl_manager.c:cras_iodev_is_open Unexecuted instantiation: cras_bt_manager.c:cras_iodev_is_open Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_is_open Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_is_open Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_is_open Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_is_open Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_is_open Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_is_open cras_iodev.c:cras_iodev_is_open Line | Count | Source | 781 | 40 | static inline bool cras_iodev_is_open(const struct cras_iodev* iodev) { | 782 | 40 | return iodev && iodev->state != CRAS_IODEV_STATE_CLOSE; | 783 | 40 | } |
cras_iodev_list.c:cras_iodev_is_open Line | Count | Source | 781 | 43.3k | static inline bool cras_iodev_is_open(const struct cras_iodev* iodev) { | 782 | 43.3k | return iodev && iodev->state != CRAS_IODEV_STATE_CLOSE; | 783 | 43.3k | } |
Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_is_open Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_is_open Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_is_open Unexecuted instantiation: cras_lea_manager.c:cras_iodev_is_open Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_is_open Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_is_open Unexecuted instantiation: cras_observer.c:cras_iodev_is_open Unexecuted instantiation: cras_rclient.c:cras_iodev_is_open Unexecuted instantiation: cras_control_rclient.c:cras_iodev_is_open Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_is_open Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_is_open Unexecuted instantiation: cras_rclient_util.c:cras_iodev_is_open Unexecuted instantiation: cras_rstream.c:cras_iodev_is_open Unexecuted instantiation: cras_rtc.c:cras_iodev_is_open Unexecuted instantiation: cras_dbus_control.c:cras_iodev_is_open Unexecuted instantiation: cras_sco.c:cras_iodev_is_open Unexecuted instantiation: cras_server_metrics.c:cras_iodev_is_open Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_is_open Unexecuted instantiation: cras_system_state.c:cras_iodev_is_open Unexecuted instantiation: cras_alsa_card.c:cras_iodev_is_open Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_is_open Unexecuted instantiation: cras_alsa_io.c:cras_iodev_is_open Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_is_open Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_is_open Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_is_open Unexecuted instantiation: dev_io.c:cras_iodev_is_open Unexecuted instantiation: dev_stream.c:cras_iodev_is_open Unexecuted instantiation: test_iodev.c:cras_iodev_is_open Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_is_open Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_is_open Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_is_open Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_is_open(cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_is_open(cras_iodev const*) |
784 | | |
785 | | // Configure iodev to exit idle mode. |
786 | 0 | static inline void cras_iodev_exit_idle(struct cras_iodev* iodev) { |
787 | 0 | iodev->idle_timeout.tv_sec = 0; |
788 | 0 | iodev->idle_timeout.tv_nsec = 0; |
789 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_exit_idle(cras_iodev*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_exit_idle Unexecuted instantiation: cras_dsp.c:cras_iodev_exit_idle Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_exit_idle Unexecuted instantiation: cras_fl_media.c:cras_iodev_exit_idle Unexecuted instantiation: cras_bt_io.c:cras_iodev_exit_idle Unexecuted instantiation: cras_bt_policy.c:cras_iodev_exit_idle Unexecuted instantiation: cras_bt_device.c:cras_iodev_exit_idle Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_exit_idle Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_exit_idle Unexecuted instantiation: audio_thread.c:cras_iodev_exit_idle Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_exit_idle Unexecuted instantiation: cras_device_monitor.c:cras_iodev_exit_idle Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_exit_idle Unexecuted instantiation: cras_fl_manager.c:cras_iodev_exit_idle Unexecuted instantiation: cras_bt_manager.c:cras_iodev_exit_idle Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_exit_idle Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_exit_idle Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_exit_idle Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_exit_idle Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_exit_idle Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_exit_idle Unexecuted instantiation: cras_iodev.c:cras_iodev_exit_idle Unexecuted instantiation: cras_iodev_list.c:cras_iodev_exit_idle Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_exit_idle Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_exit_idle Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_exit_idle Unexecuted instantiation: cras_lea_manager.c:cras_iodev_exit_idle Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_exit_idle Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_exit_idle Unexecuted instantiation: cras_observer.c:cras_iodev_exit_idle Unexecuted instantiation: cras_rclient.c:cras_iodev_exit_idle Unexecuted instantiation: cras_control_rclient.c:cras_iodev_exit_idle Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_exit_idle Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_exit_idle Unexecuted instantiation: cras_rclient_util.c:cras_iodev_exit_idle Unexecuted instantiation: cras_rstream.c:cras_iodev_exit_idle Unexecuted instantiation: cras_rtc.c:cras_iodev_exit_idle Unexecuted instantiation: cras_dbus_control.c:cras_iodev_exit_idle Unexecuted instantiation: cras_sco.c:cras_iodev_exit_idle Unexecuted instantiation: cras_server_metrics.c:cras_iodev_exit_idle Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_exit_idle Unexecuted instantiation: cras_system_state.c:cras_iodev_exit_idle Unexecuted instantiation: cras_alsa_card.c:cras_iodev_exit_idle Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_exit_idle Unexecuted instantiation: cras_alsa_io.c:cras_iodev_exit_idle Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_exit_idle Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_exit_idle Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_exit_idle Unexecuted instantiation: dev_io.c:cras_iodev_exit_idle Unexecuted instantiation: dev_stream.c:cras_iodev_exit_idle Unexecuted instantiation: test_iodev.c:cras_iodev_exit_idle Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_exit_idle Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_exit_idle Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_exit_idle Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_exit_idle(cras_iodev*) Unexecuted instantiation: rclient_message.cc:cras_iodev_exit_idle(cras_iodev*) |
790 | | |
791 | | /* |
792 | | * Sets the external dsp module for |iodev| and configures the module |
793 | | * accordingly if iodev is already open. This function should be called |
794 | | * in main thread. |
795 | | * Args: |
796 | | * iodev - The iodev to hold the dsp module. |
797 | | * ext - External dsp module to set to iodev. Pass NULL to release |
798 | | * the ext_dsp_module already added to dsp pipeline. |
799 | | */ |
800 | | void cras_iodev_set_ext_dsp_module(struct cras_iodev* iodev, |
801 | | struct ext_dsp_module* ext); |
802 | | |
803 | | /* |
804 | | * Sets the DSP offload disallow bit for |iodev| and readapt the pipeline |
805 | | * accordingly if necessary. This function should be called in main thread. |
806 | | * Args: |
807 | | * iodev - The iodev to hold the DSP offload map. |
808 | | * disallowed - The disallow bit state to set to iodev for AEC reference. |
809 | | */ |
810 | | void cras_iodev_set_dsp_offload_disallow_by_aec_ref(struct cras_iodev* iodev, |
811 | | bool disallowed); |
812 | | |
813 | | /* |
814 | | * Put 'frames' worth of zero samples into odev. This function is mainly used to |
815 | | * pad the buffer by putting frames of zero samples. |
816 | | * Args: |
817 | | * odev - The device. |
818 | | * frames - The number of frames of zero samples to put into the device. |
819 | | * processing - Whether to handle audio processing or not. |
820 | | * Returns: |
821 | | * Number of frames filled with zeros, negative errno if failed. |
822 | | */ |
823 | | int cras_iodev_fill_odev_zeros(struct cras_iodev* odev, |
824 | | unsigned int frames, |
825 | | bool processing); |
826 | | /* |
827 | | * Flush buffer for alignment purposes |
828 | | * Args: |
829 | | * dev - The device. |
830 | | * Returns: |
831 | | * Number of frames flushed, negative errno if failed. |
832 | | */ |
833 | 0 | static inline int cras_iodev_flush_buffer(struct cras_iodev* dev) { |
834 | 0 | if (dev->flush_buffer) { |
835 | 0 | return dev->flush_buffer(dev); |
836 | 0 | } |
837 | 0 | return 0; |
838 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_flush_buffer(cras_iodev*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_dsp.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_fl_media.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_bt_io.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_bt_policy.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_bt_device.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_flush_buffer Unexecuted instantiation: audio_thread.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_device_monitor.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_fl_manager.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_bt_manager.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_iodev.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_iodev_list.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_lea_manager.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_observer.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_rclient.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_control_rclient.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_rclient_util.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_rstream.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_rtc.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_dbus_control.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_sco.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_server_metrics.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_system_state.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_alsa_card.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_alsa_io.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_flush_buffer Unexecuted instantiation: dev_io.c:cras_iodev_flush_buffer Unexecuted instantiation: dev_stream.c:cras_iodev_flush_buffer Unexecuted instantiation: test_iodev.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_flush_buffer Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_flush_buffer(cras_iodev*) Unexecuted instantiation: rclient_message.cc:cras_iodev_flush_buffer(cras_iodev*) |
839 | | |
840 | | /* |
841 | | * The default implementation of frames_to_play_in_sleep ops, used when an |
842 | | * iodev doesn't have its own logic. |
843 | | * The default behavior is to calculate how log it takes for buffer level to |
844 | | * run to as low as min_buffer_level. |
845 | | */ |
846 | | unsigned int cras_iodev_default_frames_to_play_in_sleep( |
847 | | struct cras_iodev* odev, |
848 | | unsigned int* hw_level, |
849 | | struct timespec* hw_tstamp); |
850 | | |
851 | | /* Gets the number of frames to play when audio thread sleeps. |
852 | | * Args: |
853 | | * iodev[in] - The device. |
854 | | * hw_level[out] - Pointer to number of frames in hardware. |
855 | | * hw_tstamp[out] - Pointer to the timestamp for hw_level. |
856 | | * Returns: |
857 | | * Number of frames to play in sleep for this output device. |
858 | | */ |
859 | | unsigned int cras_iodev_frames_to_play_in_sleep(struct cras_iodev* odev, |
860 | | unsigned int* hw_level, |
861 | | struct timespec* hw_tstamp); |
862 | | |
863 | | /* Checks if audio thread should wake for this output device. |
864 | | * Args: |
865 | | * iodev[in] - The output device. |
866 | | * Returns: |
867 | | * 1 if audio thread should wake for this output device. 0 otherwise. |
868 | | */ |
869 | | int cras_iodev_odev_should_wake(const struct cras_iodev* odev); |
870 | | |
871 | | /* The default implementation of no_stream ops. |
872 | | * The default behavior is to fill some zeros when entering no stream state. |
873 | | * Note that when a device in no stream state enters into no stream state again, |
874 | | * device needs to fill some zeros again. |
875 | | * Do nothing to leave no stream state. |
876 | | * Args: |
877 | | * iodev[in] - The output device. |
878 | | * enable[in] - 1 to enter no stream playback, 0 to leave. |
879 | | * Returns: |
880 | | * 0 on success. Negative error code on failure. |
881 | | * */ |
882 | | int cras_iodev_default_no_stream_playback(struct cras_iodev* odev, int enable); |
883 | | |
884 | | /* Get current state of iodev. |
885 | | * Args: |
886 | | * iodev[in] - The device. |
887 | | * Returns: |
888 | | * One of states defined in CRAS_IODEV_STATE. |
889 | | */ |
890 | | enum CRAS_IODEV_STATE cras_iodev_state(const struct cras_iodev* iodev); |
891 | | |
892 | | /* Possibly transit state for output device. |
893 | | * Check if this output device needs to transit from open state/no_stream state |
894 | | * into normal run state. If device does not need transition and is still in |
895 | | * no stream state, call no_stream ops to do its work for one cycle. |
896 | | * Args: |
897 | | * odev[in] - The output device. |
898 | | * Returns: |
899 | | * 0 on success. Negative error code on failure. |
900 | | */ |
901 | | int cras_iodev_prepare_output_before_write_samples(struct cras_iodev* odev); |
902 | | |
903 | | /* Get number of underruns recorded so far. |
904 | | * Args: |
905 | | * iodev[in] - The device. |
906 | | * Returns: |
907 | | * An unsigned int for number of underruns recorded. |
908 | | */ |
909 | | unsigned int cras_iodev_get_num_underruns(const struct cras_iodev* iodev); |
910 | | |
911 | | /* Get number of underruns while AP NC is running so far. |
912 | | * Args: |
913 | | * iodev[in] - The device. |
914 | | * Returns: |
915 | | * An unsigned int for number of underruns during NC recorded. |
916 | | */ |
917 | | unsigned int cras_iodev_get_num_underruns_during_nc( |
918 | | const struct cras_iodev* iodev); |
919 | | |
920 | | /* Get number of severe underruns recorded so far. |
921 | | * Args: |
922 | | * iodev[in] - The device. |
923 | | * Returns: |
924 | | * An unsigned int for number of severe underruns recorded since iodev |
925 | | * was created. |
926 | | */ |
927 | | unsigned int cras_iodev_get_num_severe_underruns( |
928 | | const struct cras_iodev* iodev); |
929 | | |
930 | | /* Get number of samples dropped so far. |
931 | | * Args: |
932 | | * iodev[in] - The device. |
933 | | * Returns: |
934 | | * An unsigned int for number of samples dropped. |
935 | | */ |
936 | | unsigned int cras_iodev_get_num_samples_dropped(const struct cras_iodev* iodev); |
937 | | |
938 | | /* Get number of valid frames in the hardware buffer. The valid frames does |
939 | | * not include zero samples we filled with before. |
940 | | * Args: |
941 | | * iodev[in] - The device. |
942 | | * hw_tstamp[out] - Pointer to the timestamp for hw_level. |
943 | | * Returns: |
944 | | * Number of valid frames in the hardware buffer. |
945 | | * Negative error code on failure. |
946 | | */ |
947 | | int cras_iodev_get_valid_frames(struct cras_iodev* iodev, |
948 | | struct timespec* hw_tstamp); |
949 | | |
950 | | /* Request main thread to re-open device. This should be used in audio thread |
951 | | * when it finds device is in a bad state. The request will be ignored if |
952 | | * there is still a pending request. |
953 | | * Args: |
954 | | * iodev[in] - The device. |
955 | | * Returns: |
956 | | * 0 on success. Negative error code on failure. |
957 | | */ |
958 | | int cras_iodev_reset_request(struct cras_iodev* iodev); |
959 | | |
960 | | /* Handle output underrun. |
961 | | * Args: |
962 | | * odev[in] - The output device. |
963 | | * hw_level[in] - The current hw_level. Used in the debug log. |
964 | | * frames_written[in] - The number of written frames. Used in the debug log. |
965 | | * Returns: |
966 | | * 0 on success. Negative error code on failure. |
967 | | */ |
968 | | int cras_iodev_output_underrun(struct cras_iodev* odev, |
969 | | unsigned int hw_level, |
970 | | unsigned int frames_written); |
971 | | |
972 | | /* Start ramping samples up/down on a device. |
973 | | * Args: |
974 | | * iodev[in] - The device. |
975 | | * request[in] - The request type. Check the docstrings of |
976 | | * CRAS_IODEV_RAMP_REQUEST. |
977 | | * Returns: |
978 | | * 0 on success. Negative error code on failure. |
979 | | */ |
980 | | int cras_iodev_start_ramp(struct cras_iodev* odev, |
981 | | enum CRAS_IODEV_RAMP_REQUEST request); |
982 | | |
983 | | /* Start ramping samples up/down on a device after a volume change. |
984 | | * Args: |
985 | | * iodev[in] - The device. |
986 | | * old_volume[in] - The previous volume percentage of the device. |
987 | | * new_volume[in] - The new volume percentage of the device. |
988 | | * Returns: |
989 | | * 0 on success. Negative error code on failure. |
990 | | */ |
991 | | int cras_iodev_start_volume_ramp(struct cras_iodev* odev, |
992 | | unsigned int old_volume, |
993 | | unsigned int new_volume); |
994 | | |
995 | | /* Set iodev to mute/unmute state. |
996 | | * Args: |
997 | | * iodev[in] - The device. |
998 | | * Returns: |
999 | | * 0 on success. Negative error code on failure. |
1000 | | */ |
1001 | | int cras_iodev_set_mute(struct cras_iodev* iodev); |
1002 | | |
1003 | | /* |
1004 | | * Checks if an output iodev's volume is zero. |
1005 | | * If there is an active node, check the adjusted node volume. |
1006 | | * If there is no active node, check system volume. |
1007 | | * Args: |
1008 | | * odev[in] - The device. |
1009 | | * Returns: |
1010 | | * 1 if device's volume is 0. 0 otherwise. |
1011 | | */ |
1012 | | int cras_iodev_is_zero_volume(const struct cras_iodev* odev); |
1013 | | |
1014 | | /* |
1015 | | * Updates the highest hardware level of the device. |
1016 | | * Args: |
1017 | | * iodev - The device. |
1018 | | */ |
1019 | | void cras_iodev_update_highest_hw_level(struct cras_iodev* iodev, |
1020 | | unsigned int hw_level); |
1021 | | |
1022 | | /* |
1023 | | * Makes an input device drop the specific number of frames by given time. |
1024 | | * Args: |
1025 | | * iodev - The device. |
1026 | | * ts - The time indicates how many frames will be dropped in a device. |
1027 | | * Returns: |
1028 | | * The number of frames have been dropped. Negative error code on failure. |
1029 | | */ |
1030 | | int cras_iodev_drop_frames_by_time(struct cras_iodev* iodev, |
1031 | | struct timespec ts); |
1032 | | |
1033 | | /* Checks if an input node supports noise cancellation. |
1034 | | * Args: |
1035 | | * iodev - The device. |
1036 | | * node_idx - The index of the node. |
1037 | | * Returns: |
1038 | | * True if the node supports noise cancellation. False otherwise. |
1039 | | */ |
1040 | | bool cras_iodev_support_noise_cancellation(const struct cras_iodev* iodev, |
1041 | | unsigned node_idx); |
1042 | | |
1043 | | /* Checks if an input device supports RTC Proc on DSP. |
1044 | | * Args: |
1045 | | * iodev - The device. |
1046 | | * rtc_proc - The RTC Proc effect type. |
1047 | | * Returns: |
1048 | | * True if the device supports the specific effect on DSP. False otherwise. |
1049 | | */ |
1050 | | bool cras_iodev_support_rtc_proc_on_dsp(const struct cras_iodev* iodev, |
1051 | | enum RTC_PROC_ON_DSP rtc_proc); |
1052 | | |
1053 | | // |
1054 | | bool cras_iodev_set_rtc_proc_enabled(struct cras_iodev* iodev, |
1055 | | enum RTC_PROC_ON_DSP rtc_proc, |
1056 | | bool enabled); |
1057 | | |
1058 | | // |
1059 | | bool cras_iodev_get_rtc_proc_enabled(struct cras_iodev* iodev, |
1060 | | enum RTC_PROC_ON_DSP rtc_proc); |
1061 | | |
1062 | | /* Update underrun duration for the streams currently handled by this device. |
1063 | | * Args: |
1064 | | * iodev - The device. |
1065 | | * frames - The amount of zero frames filled, a.k.a the underrun frames. |
1066 | | */ |
1067 | | void cras_iodev_update_underrun_duration(struct cras_iodev* iodev, |
1068 | | unsigned frames); |
1069 | | |
1070 | | /* Checks if an device supports the specific `channel` count. |
1071 | | * Args: |
1072 | | * iodev - The device. |
1073 | | * channel - The channel count. |
1074 | | * Returns: |
1075 | | * True if the device supports the specific channel. False otherwise. |
1076 | | */ |
1077 | | bool cras_iodev_is_channel_count_supported(struct cras_iodev* iodev, |
1078 | | int channel); |
1079 | | |
1080 | | // Reset the buffer offset for all streams |
1081 | | void cras_iodev_stream_offset_reset_all(struct cras_iodev* iodev); |
1082 | | |
1083 | | /* Checks if the given iodev has any pinned stream targeting it from the main |
1084 | | * thread point of view. Some of the pinned streams may not be attached actually |
1085 | | * due to init/attach errors or suspend, but they still count here. |
1086 | | * Args: |
1087 | | * iodev - The device to check. |
1088 | | * Returns: |
1089 | | * True if the given iodev has at least one pinned stream. |
1090 | | * False otherwise. |
1091 | | */ |
1092 | | static inline bool cras_iodev_has_pinned_stream( |
1093 | 1.13k | const struct cras_iodev* iodev) { |
1094 | 1.13k | return iodev->num_pinned_streams; |
1095 | 1.13k | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_has_pinned_stream(cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_dsp.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_fl_media.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_bt_io.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_bt_policy.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_bt_device.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_has_pinned_stream Unexecuted instantiation: audio_thread.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_device_monitor.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_fl_manager.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_bt_manager.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_iodev.c:cras_iodev_has_pinned_stream cras_iodev_list.c:cras_iodev_has_pinned_stream Line | Count | Source | 1093 | 1.13k | const struct cras_iodev* iodev) { | 1094 | 1.13k | return iodev->num_pinned_streams; | 1095 | 1.13k | } |
Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_lea_manager.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_observer.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_rclient.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_control_rclient.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_rclient_util.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_rstream.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_rtc.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_dbus_control.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_sco.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_server_metrics.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_system_state.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_alsa_card.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_alsa_io.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_has_pinned_stream Unexecuted instantiation: dev_io.c:cras_iodev_has_pinned_stream Unexecuted instantiation: dev_stream.c:cras_iodev_has_pinned_stream Unexecuted instantiation: test_iodev.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_has_pinned_stream Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_has_pinned_stream(cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_has_pinned_stream(cras_iodev const*) |
1096 | | |
1097 | | /* Gets the current iodev's group. The iodevs in a group are enabled/disabled |
1098 | | * together. The returned read-only array is freed when all iodevs in the group |
1099 | | * are destroyed. Caller should not modify or free the array. |
1100 | | * Args: |
1101 | | * iodev - The device. |
1102 | | * out_group_size - Caller receives the size of the returned array. |
1103 | | * Returns: |
1104 | | * An array of pointers to the group members including the current iodev. |
1105 | | * NULL if the current iodev is not in a group. *out_group_size is set to 0. |
1106 | | */ |
1107 | | static inline struct cras_iodev* const* cras_iodev_get_dev_group( |
1108 | | const struct cras_iodev* iodev, |
1109 | 9.73k | size_t* out_group_size) { |
1110 | 9.73k | if (iodev->get_dev_group) { |
1111 | 0 | return iodev->get_dev_group(iodev, out_group_size); |
1112 | 0 | } |
1113 | 9.73k | if (out_group_size) { |
1114 | 9.73k | *out_group_size = 0; |
1115 | 9.73k | } |
1116 | 9.73k | return NULL; |
1117 | 9.73k | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_get_dev_group(cras_iodev const*, unsigned long*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_dsp.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_fl_media.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_bt_io.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_bt_policy.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_bt_device.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_get_dev_group Unexecuted instantiation: audio_thread.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_device_monitor.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_fl_manager.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_bt_manager.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_get_dev_group cras_iodev.c:cras_iodev_get_dev_group Line | Count | Source | 1109 | 3.56k | size_t* out_group_size) { | 1110 | 3.56k | if (iodev->get_dev_group) { | 1111 | 0 | return iodev->get_dev_group(iodev, out_group_size); | 1112 | 0 | } | 1113 | 3.56k | if (out_group_size) { | 1114 | 3.56k | *out_group_size = 0; | 1115 | 3.56k | } | 1116 | | return NULL; | 1117 | 3.56k | } |
cras_iodev_list.c:cras_iodev_get_dev_group Line | Count | Source | 1109 | 6.16k | size_t* out_group_size) { | 1110 | 6.16k | if (iodev->get_dev_group) { | 1111 | 0 | return iodev->get_dev_group(iodev, out_group_size); | 1112 | 0 | } | 1113 | 6.16k | if (out_group_size) { | 1114 | 6.16k | *out_group_size = 0; | 1115 | 6.16k | } | 1116 | | return NULL; | 1117 | 6.16k | } |
Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_lea_manager.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_observer.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_rclient.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_control_rclient.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_rclient_util.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_rstream.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_rtc.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_dbus_control.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_sco.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_server_metrics.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_system_state.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_alsa_card.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_alsa_io.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_get_dev_group Unexecuted instantiation: dev_io.c:cras_iodev_get_dev_group Unexecuted instantiation: dev_stream.c:cras_iodev_get_dev_group Unexecuted instantiation: test_iodev.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_get_dev_group Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_get_dev_group(cras_iodev const*, unsigned long*) Unexecuted instantiation: rclient_message.cc:cras_iodev_get_dev_group(cras_iodev const*, unsigned long*) |
1118 | | |
1119 | | /* Gets an unique ID of the iodev's group. |
1120 | | * Args: |
1121 | | * iodev - The device. |
1122 | | * Returns: |
1123 | | * An unique ID of the iodev's group. |
1124 | | * 0 if the current iodev is not in a group. |
1125 | | */ |
1126 | | static inline uintptr_t cras_iodev_get_dev_group_id( |
1127 | 0 | const struct cras_iodev* iodev) { |
1128 | 0 | if (iodev->get_dev_group_id) { |
1129 | 0 | return iodev->get_dev_group_id(iodev); |
1130 | 0 | } |
1131 | 0 | return 0; |
1132 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_get_dev_group_id(cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_dsp.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_fl_media.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_bt_io.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_bt_policy.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_bt_device.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_get_dev_group_id Unexecuted instantiation: audio_thread.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_device_monitor.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_fl_manager.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_bt_manager.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_iodev.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_iodev_list.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_lea_manager.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_observer.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_rclient.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_control_rclient.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_rclient_util.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_rstream.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_rtc.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_dbus_control.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_sco.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_server_metrics.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_system_state.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_alsa_card.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_alsa_io.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_get_dev_group_id Unexecuted instantiation: dev_io.c:cras_iodev_get_dev_group_id Unexecuted instantiation: dev_stream.c:cras_iodev_get_dev_group_id Unexecuted instantiation: test_iodev.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_get_dev_group_id Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_get_dev_group_id(cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_get_dev_group_id(cras_iodev const*) |
1133 | | |
1134 | | /* Checks if the given stream should be attached to the iodev based on the |
1135 | | * iodev's use case and stream parameters. |
1136 | | * Args: |
1137 | | * iodev - The device. |
1138 | | * stream - The stream to check. |
1139 | | * Returns: |
1140 | | * True if the stream should be attached. False otherwise. |
1141 | | */ |
1142 | | static inline int cras_iodev_should_attach_stream( |
1143 | | const struct cras_iodev* iodev, |
1144 | 231 | const struct cras_rstream* stream) { |
1145 | 231 | if (iodev->should_attach_stream) { |
1146 | 0 | return iodev->should_attach_stream(iodev, stream); |
1147 | 0 | } |
1148 | | /* A stream should attach to all enabled iodevs if iodev specific filter is |
1149 | | * not implemented in order to be consistent with existing CRAS behavior. */ |
1150 | 231 | return true; |
1151 | 231 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_should_attach_stream(cras_iodev const*, cras_rstream const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_dsp.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_fl_media.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_bt_io.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_bt_policy.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_bt_device.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_should_attach_stream Unexecuted instantiation: audio_thread.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_device_monitor.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_fl_manager.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_bt_manager.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_iodev.c:cras_iodev_should_attach_stream cras_iodev_list.c:cras_iodev_should_attach_stream Line | Count | Source | 1144 | 231 | const struct cras_rstream* stream) { | 1145 | 231 | if (iodev->should_attach_stream) { | 1146 | 0 | return iodev->should_attach_stream(iodev, stream); | 1147 | 0 | } | 1148 | | /* A stream should attach to all enabled iodevs if iodev specific filter is | 1149 | | * not implemented in order to be consistent with existing CRAS behavior. */ | 1150 | 231 | return true; | 1151 | 231 | } |
Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_lea_manager.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_observer.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_rclient.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_control_rclient.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_rclient_util.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_rstream.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_rtc.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_dbus_control.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_sco.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_server_metrics.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_system_state.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_alsa_card.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_alsa_io.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_should_attach_stream Unexecuted instantiation: dev_io.c:cras_iodev_should_attach_stream Unexecuted instantiation: dev_stream.c:cras_iodev_should_attach_stream Unexecuted instantiation: test_iodev.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_should_attach_stream Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_should_attach_stream(cras_iodev const*, cras_rstream const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_should_attach_stream(cras_iodev const*, cras_rstream const*) |
1152 | | |
1153 | | /* Checks if the given iodevs are in the same group. |
1154 | | * Args: |
1155 | | * a,b - The devices to check. |
1156 | | * Returns: |
1157 | | * True if the given iodevs are in the same group. False otherwise. |
1158 | | */ |
1159 | | static inline int cras_iodev_in_same_group(const struct cras_iodev* a, |
1160 | 11.2k | const struct cras_iodev* b) { |
1161 | 11.2k | if (a == b) { |
1162 | 458 | return true; |
1163 | 458 | } |
1164 | | |
1165 | 10.7k | if (a && b && a->get_dev_group_id && b->get_dev_group_id) { |
1166 | 0 | return a->get_dev_group_id(a) == b->get_dev_group_id(b) && |
1167 | 0 | a->get_dev_group_id(a); |
1168 | 0 | } |
1169 | 10.7k | return false; |
1170 | 10.7k | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_in_same_group(cras_iodev const*, cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_in_same_group Unexecuted instantiation: cras_dsp.c:cras_iodev_in_same_group Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_in_same_group Unexecuted instantiation: cras_fl_media.c:cras_iodev_in_same_group Unexecuted instantiation: cras_bt_io.c:cras_iodev_in_same_group Unexecuted instantiation: cras_bt_policy.c:cras_iodev_in_same_group Unexecuted instantiation: cras_bt_device.c:cras_iodev_in_same_group Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_in_same_group Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_in_same_group Unexecuted instantiation: audio_thread.c:cras_iodev_in_same_group Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_in_same_group Unexecuted instantiation: cras_device_monitor.c:cras_iodev_in_same_group Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_in_same_group Unexecuted instantiation: cras_fl_manager.c:cras_iodev_in_same_group Unexecuted instantiation: cras_bt_manager.c:cras_iodev_in_same_group Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_in_same_group Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_in_same_group Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_in_same_group Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_in_same_group Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_in_same_group Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_in_same_group Unexecuted instantiation: cras_iodev.c:cras_iodev_in_same_group cras_iodev_list.c:cras_iodev_in_same_group Line | Count | Source | 1160 | 11.2k | const struct cras_iodev* b) { | 1161 | 11.2k | if (a == b) { | 1162 | 458 | return true; | 1163 | 458 | } | 1164 | | | 1165 | 10.7k | if (a && b && a->get_dev_group_id && b->get_dev_group_id) { | 1166 | 0 | return a->get_dev_group_id(a) == b->get_dev_group_id(b) && | 1167 | 0 | a->get_dev_group_id(a); | 1168 | 0 | } | 1169 | 10.7k | return false; | 1170 | 10.7k | } |
Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_in_same_group Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_in_same_group Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_in_same_group Unexecuted instantiation: cras_lea_manager.c:cras_iodev_in_same_group Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_in_same_group Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_in_same_group Unexecuted instantiation: cras_observer.c:cras_iodev_in_same_group Unexecuted instantiation: cras_rclient.c:cras_iodev_in_same_group Unexecuted instantiation: cras_control_rclient.c:cras_iodev_in_same_group Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_in_same_group Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_in_same_group Unexecuted instantiation: cras_rclient_util.c:cras_iodev_in_same_group Unexecuted instantiation: cras_rstream.c:cras_iodev_in_same_group Unexecuted instantiation: cras_rtc.c:cras_iodev_in_same_group Unexecuted instantiation: cras_dbus_control.c:cras_iodev_in_same_group Unexecuted instantiation: cras_sco.c:cras_iodev_in_same_group Unexecuted instantiation: cras_server_metrics.c:cras_iodev_in_same_group Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_in_same_group Unexecuted instantiation: cras_system_state.c:cras_iodev_in_same_group Unexecuted instantiation: cras_alsa_card.c:cras_iodev_in_same_group Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_in_same_group Unexecuted instantiation: cras_alsa_io.c:cras_iodev_in_same_group Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_in_same_group Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_in_same_group Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_in_same_group Unexecuted instantiation: dev_io.c:cras_iodev_in_same_group Unexecuted instantiation: dev_stream.c:cras_iodev_in_same_group Unexecuted instantiation: test_iodev.c:cras_iodev_in_same_group Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_in_same_group Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_in_same_group Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_in_same_group Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_in_same_group(cras_iodev const*, cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_in_same_group(cras_iodev const*, cras_iodev const*) |
1171 | | |
1172 | | /* Checks if the given iodev's group has any open iodev. |
1173 | | * Args: |
1174 | | * iodev - The device to check. |
1175 | | * Returns: |
1176 | | * True if the given iodev's group has at least one open iodev. |
1177 | | * False otherwise. |
1178 | | */ |
1179 | | static inline int cras_iodev_group_has_open_dev( |
1180 | 608 | const struct cras_iodev* iodev) { |
1181 | 608 | size_t size; |
1182 | 608 | struct cras_iodev* const* group = cras_iodev_get_dev_group(iodev, &size); |
1183 | | |
1184 | 608 | if (!group) { |
1185 | 608 | return cras_iodev_is_open(iodev); |
1186 | 608 | } |
1187 | | |
1188 | 0 | for (size_t i = 0; i < size; i++) { |
1189 | 0 | if (cras_iodev_is_open(group[i])) { |
1190 | 0 | return true; |
1191 | 0 | } |
1192 | 0 | } |
1193 | | |
1194 | 0 | return false; |
1195 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_group_has_open_dev(cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_dsp.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_fl_media.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_bt_io.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_bt_policy.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_bt_device.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_group_has_open_dev Unexecuted instantiation: audio_thread.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_device_monitor.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_fl_manager.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_bt_manager.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_iodev.c:cras_iodev_group_has_open_dev cras_iodev_list.c:cras_iodev_group_has_open_dev Line | Count | Source | 1180 | 608 | const struct cras_iodev* iodev) { | 1181 | 608 | size_t size; | 1182 | 608 | struct cras_iodev* const* group = cras_iodev_get_dev_group(iodev, &size); | 1183 | | | 1184 | 608 | if (!group) { | 1185 | 608 | return cras_iodev_is_open(iodev); | 1186 | 608 | } | 1187 | | | 1188 | 0 | for (size_t i = 0; i < size; i++) { | 1189 | 0 | if (cras_iodev_is_open(group[i])) { | 1190 | 0 | return true; | 1191 | 0 | } | 1192 | 0 | } | 1193 | | | 1194 | 0 | return false; | 1195 | 0 | } |
Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_lea_manager.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_observer.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_rclient.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_control_rclient.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_rclient_util.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_rstream.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_rtc.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_dbus_control.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_sco.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_server_metrics.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_system_state.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_alsa_card.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_alsa_io.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_group_has_open_dev Unexecuted instantiation: dev_io.c:cras_iodev_group_has_open_dev Unexecuted instantiation: dev_stream.c:cras_iodev_group_has_open_dev Unexecuted instantiation: test_iodev.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_group_has_open_dev Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_group_has_open_dev(cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_group_has_open_dev(cras_iodev const*) |
1196 | | |
1197 | | /* Checks if the iodev's group has an iodev with the given index. |
1198 | | * Args: |
1199 | | * iodev - Any device in the iodev group to check. |
1200 | | * dev_index - The device index to check. |
1201 | | * Returns: |
1202 | | * True if the iodev's group has an iodev with the given index. |
1203 | | * False otherwise. |
1204 | | */ |
1205 | | static inline int cras_iodev_group_has_dev(const struct cras_iodev* iodev, |
1206 | 0 | uint32_t dev_index) { |
1207 | 0 | size_t size; |
1208 | 0 | struct cras_iodev* const* group = cras_iodev_get_dev_group(iodev, &size); |
1209 | |
|
1210 | 0 | if (!group) { |
1211 | 0 | return iodev->info.idx == dev_index; |
1212 | 0 | } |
1213 | | |
1214 | 0 | for (size_t i = 0; i < size; i++) { |
1215 | 0 | if (group[i]->info.idx == dev_index) { |
1216 | 0 | return true; |
1217 | 0 | } |
1218 | 0 | } |
1219 | | |
1220 | 0 | return false; |
1221 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_group_has_dev(cras_iodev const*, unsigned int) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_dsp.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_fl_media.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_bt_io.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_bt_policy.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_bt_device.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_group_has_dev Unexecuted instantiation: audio_thread.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_device_monitor.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_fl_manager.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_bt_manager.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_iodev.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_iodev_list.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_lea_manager.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_observer.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_rclient.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_control_rclient.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_rclient_util.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_rstream.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_rtc.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_dbus_control.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_sco.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_server_metrics.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_system_state.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_alsa_card.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_alsa_io.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_group_has_dev Unexecuted instantiation: dev_io.c:cras_iodev_group_has_dev Unexecuted instantiation: dev_stream.c:cras_iodev_group_has_dev Unexecuted instantiation: test_iodev.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_group_has_dev Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_group_has_dev(cras_iodev const*, unsigned int) Unexecuted instantiation: rclient_message.cc:cras_iodev_group_has_dev(cras_iodev const*, unsigned int) |
1222 | | |
1223 | | /* Gets the use case of the iodev. e.g. HiFi, LowLatency. |
1224 | | * Args: |
1225 | | * iodev - The device |
1226 | | * Returns: |
1227 | | * Use case of the device. |
1228 | | */ |
1229 | | static inline enum CRAS_USE_CASE cras_iodev_get_use_case( |
1230 | 0 | const struct cras_iodev* iodev) { |
1231 | 0 | if (iodev->get_use_case) { |
1232 | 0 | return iodev->get_use_case(iodev); |
1233 | 0 | } |
1234 | | |
1235 | 0 | return CRAS_USE_CASE_HIFI; |
1236 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_get_use_case(cras_iodev const*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_get_use_case Unexecuted instantiation: cras_dsp.c:cras_iodev_get_use_case Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_get_use_case Unexecuted instantiation: cras_fl_media.c:cras_iodev_get_use_case Unexecuted instantiation: cras_bt_io.c:cras_iodev_get_use_case Unexecuted instantiation: cras_bt_policy.c:cras_iodev_get_use_case Unexecuted instantiation: cras_bt_device.c:cras_iodev_get_use_case Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_get_use_case Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_get_use_case Unexecuted instantiation: audio_thread.c:cras_iodev_get_use_case Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_get_use_case Unexecuted instantiation: cras_device_monitor.c:cras_iodev_get_use_case Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_get_use_case Unexecuted instantiation: cras_fl_manager.c:cras_iodev_get_use_case Unexecuted instantiation: cras_bt_manager.c:cras_iodev_get_use_case Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_get_use_case Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_get_use_case Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_get_use_case Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_get_use_case Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_get_use_case Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_get_use_case Unexecuted instantiation: cras_iodev.c:cras_iodev_get_use_case Unexecuted instantiation: cras_iodev_list.c:cras_iodev_get_use_case Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_get_use_case Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_get_use_case Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_get_use_case Unexecuted instantiation: cras_lea_manager.c:cras_iodev_get_use_case Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_get_use_case Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_get_use_case Unexecuted instantiation: cras_observer.c:cras_iodev_get_use_case Unexecuted instantiation: cras_rclient.c:cras_iodev_get_use_case Unexecuted instantiation: cras_control_rclient.c:cras_iodev_get_use_case Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_get_use_case Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_get_use_case Unexecuted instantiation: cras_rclient_util.c:cras_iodev_get_use_case Unexecuted instantiation: cras_rstream.c:cras_iodev_get_use_case Unexecuted instantiation: cras_rtc.c:cras_iodev_get_use_case Unexecuted instantiation: cras_dbus_control.c:cras_iodev_get_use_case Unexecuted instantiation: cras_sco.c:cras_iodev_get_use_case Unexecuted instantiation: cras_server_metrics.c:cras_iodev_get_use_case Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_get_use_case Unexecuted instantiation: cras_system_state.c:cras_iodev_get_use_case Unexecuted instantiation: cras_alsa_card.c:cras_iodev_get_use_case Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_get_use_case Unexecuted instantiation: cras_alsa_io.c:cras_iodev_get_use_case Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_get_use_case Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_get_use_case Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_get_use_case Unexecuted instantiation: dev_io.c:cras_iodev_get_use_case Unexecuted instantiation: dev_stream.c:cras_iodev_get_use_case Unexecuted instantiation: test_iodev.c:cras_iodev_get_use_case Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_get_use_case Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_get_use_case Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_get_use_case Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_get_use_case(cras_iodev const*) Unexecuted instantiation: rclient_message.cc:cras_iodev_get_use_case(cras_iodev const*) |
1237 | | |
1238 | | /* Gets the hardware timestamp of the last update. If there is no hardware |
1239 | | * timestamp, returns the current time as the timestamp. |
1240 | | * Args: |
1241 | | * iodev - The device. |
1242 | | * ts - The caller receives the timestamp. |
1243 | | * Returns: |
1244 | | * 0 if the timestamp is correctly obtained. A negative error code otherwise. |
1245 | | */ |
1246 | | static inline int cras_iodev_get_htimestamp(const struct cras_iodev* iodev, |
1247 | 0 | struct timespec* ts) { |
1248 | 0 | if (iodev->get_htimestamp) { |
1249 | 0 | return iodev->get_htimestamp(iodev, ts); |
1250 | 0 | } |
1251 | | |
1252 | 0 | int rc = clock_gettime(CLOCK_MONOTONIC_RAW, ts); |
1253 | 0 | if (rc < 0) { |
1254 | 0 | return -errno; |
1255 | 0 | } |
1256 | | |
1257 | 0 | return 0; |
1258 | 0 | } Unexecuted instantiation: cras_fl_media_fuzzer.cc:cras_iodev_get_htimestamp(cras_iodev const*, timespec*) Unexecuted instantiation: cras_a2dp_manager.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_dsp.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_dsp_offload.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_fl_media.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_bt_io.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_bt_policy.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_bt_device.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_a2dp_endpoint.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_a2dp_iodev.c:cras_iodev_get_htimestamp Unexecuted instantiation: audio_thread.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_audio_thread_monitor.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_device_monitor.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_fl_media_adapter.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_fl_manager.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_bt_manager.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_fl_pcm_iodev.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_hfp_ag_profile.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_hfp_alsa_iodev.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_hfp_iodev.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_hfp_manager.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_hfp_slc.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_iodev.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_iodev_list.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_empty_iodev.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_floop_iodev.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_ewma_power_reporter.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_lea_manager.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_lea_iodev.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_loopback_iodev.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_observer.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_rclient.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_control_rclient.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_capture_rclient.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_playback_rclient.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_rclient_util.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_rstream.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_rtc.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_dbus_control.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_sco.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_server_metrics.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_speak_on_mute_detector.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_system_state.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_alsa_card.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_alsa_io_ops.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_alsa_io.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_alsa_common_io.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_alsa_usb_io.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_unified_rclient.c:cras_iodev_get_htimestamp Unexecuted instantiation: dev_io.c:cras_iodev_get_htimestamp Unexecuted instantiation: dev_stream.c:cras_iodev_get_htimestamp Unexecuted instantiation: test_iodev.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_stream_apm_noop.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_sr_bt_adapters_stub.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_sr_bt_util_stub.c:cras_iodev_get_htimestamp Unexecuted instantiation: cras_hfp_slc.cc:cras_iodev_get_htimestamp(cras_iodev const*, timespec*) Unexecuted instantiation: rclient_message.cc:cras_iodev_get_htimestamp(cras_iodev const*, timespec*) |
1259 | | |
1260 | | #ifdef __cplusplus |
1261 | | } // extern "C" |
1262 | | #endif |
1263 | | |
1264 | | #endif // CRAS_SRC_SERVER_CRAS_IODEV_H_ |