• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Copyright 2017 The Chromium OS Authors. All rights reserved.
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 #include <unordered_map>
7 
8 extern "C" {
9 #include "cras_rstream.h"
10 }
11 
12 namespace {
13 
14 struct cb_data {
15   std::unordered_map<unsigned int, unsigned int> dev_offset;
16   int pending_reply;
17 };
18 std::unordered_map<const cras_rstream*, cb_data> data_map;
19 
20 };  // namespace
21 
rstream_stub_reset()22 void rstream_stub_reset() {
23   data_map.clear();
24 }
25 
rstream_stub_dev_offset(const cras_rstream * rstream,unsigned int dev_id,unsigned int offset)26 void rstream_stub_dev_offset(const cras_rstream* rstream,
27                              unsigned int dev_id,
28                              unsigned int offset) {
29   auto data = data_map.find(rstream);
30   if (data == data_map.end()) {
31     cb_data new_data;
32     new_data.dev_offset[dev_id] = offset;
33     data_map.insert({rstream, new_data});
34   } else {
35     data->second.dev_offset[dev_id] = offset;
36   }
37 }
38 
rstream_stub_pending_reply(const cras_rstream * rstream,int ret_value)39 void rstream_stub_pending_reply(const cras_rstream* rstream, int ret_value) {
40   auto data = data_map.find(rstream);
41   if (data == data_map.end()) {
42     cb_data new_data;
43     new_data.pending_reply = ret_value;
44     data_map.insert({rstream, new_data});
45   } else {
46     data->second.pending_reply = ret_value;
47   }
48 }
49 
50 extern "C" {
51 
cras_rstream_record_fetch_interval(struct cras_rstream * rstream,const struct timespec * now)52 void cras_rstream_record_fetch_interval(struct cras_rstream* rstream,
53                                         const struct timespec* now) {}
54 
cras_rstream_dev_attach(struct cras_rstream * rstream,unsigned int dev_id,void * dev_ptr)55 void cras_rstream_dev_attach(struct cras_rstream* rstream,
56                              unsigned int dev_id,
57                              void* dev_ptr) {}
58 
cras_rstream_dev_detach(struct cras_rstream * rstream,unsigned int dev_id)59 void cras_rstream_dev_detach(struct cras_rstream* rstream,
60                              unsigned int dev_id) {}
61 
cras_rstream_dev_offset(const struct cras_rstream * rstream,unsigned int dev_id)62 unsigned int cras_rstream_dev_offset(const struct cras_rstream* rstream,
63                                      unsigned int dev_id) {
64   auto elem = data_map.find(rstream);
65   if (elem != data_map.end())
66     return elem->second.dev_offset[dev_id];
67   return 0;
68 }
69 
cras_rstream_dev_offset_update(struct cras_rstream * rstream,unsigned int frames,unsigned int dev_id)70 void cras_rstream_dev_offset_update(struct cras_rstream* rstream,
71                                     unsigned int frames,
72                                     unsigned int dev_id) {}
73 
cras_rstream_playable_frames(struct cras_rstream * rstream,unsigned int dev_id)74 unsigned int cras_rstream_playable_frames(struct cras_rstream* rstream,
75                                           unsigned int dev_id) {
76   return 0;
77 }
78 
cras_rstream_get_volume_scaler(struct cras_rstream * rstream)79 float cras_rstream_get_volume_scaler(struct cras_rstream* rstream) {
80   return 1.0;
81 }
82 
cras_rstream_get_mute(const struct cras_rstream * rstream)83 int cras_rstream_get_mute(const struct cras_rstream* rstream) {
84   return 0;
85 }
86 
cras_rstream_get_readable_frames(struct cras_rstream * rstream,unsigned int offset,size_t * frames)87 uint8_t* cras_rstream_get_readable_frames(struct cras_rstream* rstream,
88                                           unsigned int offset,
89                                           size_t* frames) {
90   return NULL;
91 }
92 
cras_rstream_update_input_write_pointer(struct cras_rstream * rstream)93 void cras_rstream_update_input_write_pointer(struct cras_rstream* rstream) {}
94 
cras_rstream_update_output_read_pointer(struct cras_rstream * rstream)95 void cras_rstream_update_output_read_pointer(struct cras_rstream* rstream) {}
96 
cras_rstream_audio_ready(struct cras_rstream * stream,size_t count)97 int cras_rstream_audio_ready(struct cras_rstream* stream, size_t count) {
98   cras_shm_buffer_write_complete(stream->shm);
99   return 0;
100 }
101 
cras_rstream_request_audio(struct cras_rstream * stream,const struct timespec * now)102 int cras_rstream_request_audio(struct cras_rstream* stream,
103                                const struct timespec* now) {
104   return 0;
105 }
106 
cras_rstream_update_queued_frames(struct cras_rstream * rstream)107 void cras_rstream_update_queued_frames(struct cras_rstream* rstream) {}
108 
cras_rstream_is_pending_reply(const struct cras_rstream * rstream)109 int cras_rstream_is_pending_reply(const struct cras_rstream* rstream) {
110   auto elem = data_map.find(rstream);
111   if (elem != data_map.end())
112     return elem->second.pending_reply;
113   return 0;
114 }
115 
cras_rstream_flush_old_audio_messages(struct cras_rstream * rstream)116 int cras_rstream_flush_old_audio_messages(struct cras_rstream* rstream) {
117   return 0;
118 }
119 
120 }  // extern "C"
121