Ajout version Release/x64 avec les libraries x64 et tuning de la version Debug
This commit is contained in:
		
							
								
								
									
										141
									
								
								SQCSim2021/external/sfml251/examples/voip/Client.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								SQCSim2021/external/sfml251/examples/voip/Client.cpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,141 @@ | ||||
|  | ||||
| //////////////////////////////////////////////////////////// | ||||
| // Headers | ||||
| //////////////////////////////////////////////////////////// | ||||
| #include <SFML/Audio.hpp> | ||||
| #include <SFML/Network.hpp> | ||||
| #include <iostream> | ||||
|  | ||||
|  | ||||
| const sf::Uint8 audioData   = 1; | ||||
| const sf::Uint8 endOfStream = 2; | ||||
|  | ||||
|  | ||||
| //////////////////////////////////////////////////////////// | ||||
| /// Specialization of audio recorder for sending recorded audio | ||||
| /// data through the network | ||||
| //////////////////////////////////////////////////////////// | ||||
| class NetworkRecorder : public sf::SoundRecorder | ||||
| { | ||||
| public: | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     /// Constructor | ||||
|     /// | ||||
|     /// \param host Remote host to which send the recording data | ||||
|     /// \param port Port of the remote host | ||||
|     /// | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     NetworkRecorder(const sf::IpAddress& host, unsigned short port) : | ||||
|     m_host(host), | ||||
|     m_port(port) | ||||
|     { | ||||
|     } | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     /// Destructor | ||||
|     /// | ||||
|     /// \see SoundRecorder::~SoundRecorder() | ||||
|     /// | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     ~NetworkRecorder() | ||||
|     { | ||||
|         // Make sure to stop the recording thread | ||||
|         stop(); | ||||
|     } | ||||
|  | ||||
| private: | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     /// \see SoundRecorder::onStart | ||||
|     /// | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     virtual bool onStart() | ||||
|     { | ||||
|         if (m_socket.connect(m_host, m_port) == sf::Socket::Done) | ||||
|         { | ||||
|             std::cout << "Connected to server " << m_host << std::endl; | ||||
|             return true; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     /// \see SoundRecorder::onProcessSamples | ||||
|     /// | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     virtual bool onProcessSamples(const sf::Int16* samples, std::size_t sampleCount) | ||||
|     { | ||||
|         // Pack the audio samples into a network packet | ||||
|         sf::Packet packet; | ||||
|         packet << audioData; | ||||
|         packet.append(samples, sampleCount * sizeof(sf::Int16)); | ||||
|  | ||||
|         // Send the audio packet to the server | ||||
|         return m_socket.send(packet) == sf::Socket::Done; | ||||
|     } | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     /// \see SoundRecorder::onStop | ||||
|     /// | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     virtual void onStop() | ||||
|     { | ||||
|         // Send a "end-of-stream" packet | ||||
|         sf::Packet packet; | ||||
|         packet << endOfStream; | ||||
|         m_socket.send(packet); | ||||
|  | ||||
|         // Close the socket | ||||
|         m_socket.disconnect(); | ||||
|     } | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     // Member data | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     sf::IpAddress  m_host;   ///< Address of the remote host | ||||
|     unsigned short m_port;   ///< Remote port | ||||
|     sf::TcpSocket  m_socket; ///< Socket used to communicate with the server | ||||
| }; | ||||
|  | ||||
|  | ||||
| //////////////////////////////////////////////////////////// | ||||
| /// Create a client, connect it to a running server and | ||||
| /// start sending him audio data | ||||
| /// | ||||
| //////////////////////////////////////////////////////////// | ||||
| void doClient(unsigned short port) | ||||
| { | ||||
|     // Check that the device can capture audio | ||||
|     if (!sf::SoundRecorder::isAvailable()) | ||||
|     { | ||||
|         std::cout << "Sorry, audio capture is not supported by your system" << std::endl; | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     // Ask for server address | ||||
|     sf::IpAddress server; | ||||
|     do | ||||
|     { | ||||
|         std::cout << "Type address or name of the server to connect to: "; | ||||
|         std::cin  >> server; | ||||
|     } | ||||
|     while (server == sf::IpAddress::None); | ||||
|  | ||||
|     // Create an instance of our custom recorder | ||||
|     NetworkRecorder recorder(server, port); | ||||
|  | ||||
|     // Wait for user input... | ||||
|     std::cin.ignore(10000, '\n'); | ||||
|     std::cout << "Press enter to start recording audio"; | ||||
|     std::cin.ignore(10000, '\n'); | ||||
|  | ||||
|     // Start capturing audio data | ||||
|     recorder.start(44100); | ||||
|     std::cout << "Recording... press enter to stop"; | ||||
|     std::cin.ignore(10000, '\n'); | ||||
|     recorder.stop(); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user