Coverage Report

Created: 2025-12-28 06:10

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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_