| 
									
										
										
										
											2018-07-28 13:44:50 -04:00
										 |  |  | // Copyright 2018 yuzu Emulator Project
 | 
					
						
							|  |  |  | // Licensed under GPLv2 or any later version
 | 
					
						
							|  |  |  | // Refer to the license.txt file included.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <string>
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <cubeb/cubeb.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "audio_core/sink.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace AudioCore { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CubebSink final : public Sink { | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-12-13 16:23:31 -05:00
										 |  |  |     explicit CubebSink(std::string_view device_id); | 
					
						
							| 
									
										
										
										
											2018-07-28 13:44:50 -04:00
										 |  |  |     ~CubebSink() override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-02 18:54:25 -04:00
										 |  |  |     SinkStream& AcquireSinkStream(u32 sample_rate, u32 num_channels, | 
					
						
							|  |  |  |                                   const std::string& name) override; | 
					
						
							| 
									
										
										
										
											2018-07-28 13:44:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     cubeb* ctx{}; | 
					
						
							|  |  |  |     cubeb_devid output_device{}; | 
					
						
							|  |  |  |     std::vector<SinkStreamPtr> sink_streams; | 
					
						
							| 
									
										
										
										
											2019-02-27 16:07:06 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-09 18:05:58 -05:00
										 |  |  | #ifdef _WIN32
 | 
					
						
							| 
									
										
										
										
											2020-10-20 19:07:39 -07:00
										 |  |  |     u32 com_init_result = 0; | 
					
						
							| 
									
										
										
										
											2019-02-27 16:07:06 -05:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2018-07-28 13:44:50 -04:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | std::vector<std::string> ListCubebSinkDevices(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } // namespace AudioCore
 |