mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-30 20:40:20 -04:00 
			
		
		
		
	Audio output device recording: API support. Part of #1330
This commit is contained in:
		
							parent
							
								
									328cd2046e
								
							
						
					
					
						commit
						a9ffe43f01
					
				| @ -2430,6 +2430,18 @@ margin-bottom: 20px; | |||||||
|     "udpPort" : { |     "udpPort" : { | ||||||
|       "type" : "integer", |       "type" : "integer", | ||||||
|       "description" : "UDP destination port" |       "description" : "UDP destination port" | ||||||
|  |     }, | ||||||
|  |     "fileRecordName" : { | ||||||
|  |       "type" : "string", | ||||||
|  |       "description" : "Output record file name" | ||||||
|  |     }, | ||||||
|  |     "recordToFile" : { | ||||||
|  |       "type" : "integer", | ||||||
|  |       "description" : "Record to file active\n  * 0 - not recording\n  * 1 - recording\n" | ||||||
|  |     }, | ||||||
|  |     "recordSilenceTime" : { | ||||||
|  |       "type" : "integer", | ||||||
|  |       "description" : "Record silence time before stopping recording in 10ths of seconds" | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "description" : "Audio output device" |   "description" : "Audio output device" | ||||||
| @ -56605,7 +56617,7 @@ except ApiException as e: | |||||||
|           </div> |           </div> | ||||||
|           <div id="generator"> |           <div id="generator"> | ||||||
|             <div class="content"> |             <div class="content"> | ||||||
|               Generated 2022-08-16T18:08:01.866+02:00 |               Generated 2022-11-12T10:56:38.135+01:00 | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|       </div> |       </div> | ||||||
|  | |||||||
| @ -3201,6 +3201,18 @@ definitions: | |||||||
|       udpPort: |       udpPort: | ||||||
|         description: "UDP destination port" |         description: "UDP destination port" | ||||||
|         type: integer |         type: integer | ||||||
|  |       fileRecordName: | ||||||
|  |         description: "Output record file name" | ||||||
|  |         type: string | ||||||
|  |       recordToFile: | ||||||
|  |         type: integer | ||||||
|  |         description: > | ||||||
|  |           Record to file active | ||||||
|  |             * 0 - not recording | ||||||
|  |             * 1 - recording | ||||||
|  |       recordSilenceTime: | ||||||
|  |         description: "Record silence time before stopping recording in 10ths of seconds" | ||||||
|  |         type: integer | ||||||
| 
 | 
 | ||||||
|   LocationInformation: |   LocationInformation: | ||||||
|     description: "Instance geolocation information" |     description: "Instance geolocation information" | ||||||
|  | |||||||
| @ -503,6 +503,9 @@ int WebAPIAdapter::instanceAudioGet( | |||||||
|     outputDevices->back()->setUdpDecimationFactor((int) outputDeviceInfo.udpDecimationFactor); |     outputDevices->back()->setUdpDecimationFactor((int) outputDeviceInfo.udpDecimationFactor); | ||||||
|     *outputDevices->back()->getUdpAddress() = outputDeviceInfo.udpAddress; |     *outputDevices->back()->getUdpAddress() = outputDeviceInfo.udpAddress; | ||||||
|     outputDevices->back()->setUdpPort(outputDeviceInfo.udpPort); |     outputDevices->back()->setUdpPort(outputDeviceInfo.udpPort); | ||||||
|  |     *outputDevices->back()->getFileRecordName() = outputDeviceInfo.fileRecordName; | ||||||
|  |     outputDevices->back()->setRecordToFile(outputDeviceInfo.recordToFile ? 1 : 0); | ||||||
|  |     outputDevices->back()->setRecordSilenceTime(outputDeviceInfo.recordSilenceTime); | ||||||
| 
 | 
 | ||||||
|     // real output devices
 |     // real output devices
 | ||||||
|     for (int i = 0; i < nbOutputDevices; i++) |     for (int i = 0; i < nbOutputDevices; i++) | ||||||
| @ -523,6 +526,9 @@ int WebAPIAdapter::instanceAudioGet( | |||||||
|         outputDevices->back()->setUdpDecimationFactor((int) outputDeviceInfo.udpDecimationFactor); |         outputDevices->back()->setUdpDecimationFactor((int) outputDeviceInfo.udpDecimationFactor); | ||||||
|         *outputDevices->back()->getUdpAddress() = outputDeviceInfo.udpAddress; |         *outputDevices->back()->getUdpAddress() = outputDeviceInfo.udpAddress; | ||||||
|         outputDevices->back()->setUdpPort(outputDeviceInfo.udpPort); |         outputDevices->back()->setUdpPort(outputDeviceInfo.udpPort); | ||||||
|  |         *outputDevices->back()->getFileRecordName() = outputDeviceInfo.fileRecordName; | ||||||
|  |         outputDevices->back()->setRecordToFile(outputDeviceInfo.recordToFile ? 1 : 0); | ||||||
|  |         outputDevices->back()->setRecordSilenceTime(outputDeviceInfo.recordSilenceTime); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return 200; |     return 200; | ||||||
| @ -606,6 +612,15 @@ int WebAPIAdapter::instanceAudioOutputPatch( | |||||||
|     if (audioOutputKeys.contains("udpPort")) { |     if (audioOutputKeys.contains("udpPort")) { | ||||||
|         outputDeviceInfo.udpPort = response.getUdpPort() % (1<<16); |         outputDeviceInfo.udpPort = response.getUdpPort() % (1<<16); | ||||||
|     } |     } | ||||||
|  |     if (audioOutputKeys.contains("fileRecordName")) { | ||||||
|  |         outputDeviceInfo.fileRecordName = *response.getFileRecordName(); | ||||||
|  |     } | ||||||
|  |     if (audioOutputKeys.contains("recordToFile")) { | ||||||
|  |         outputDeviceInfo.recordToFile = response.getRecordToFile() == 0 ? 0 : 1; | ||||||
|  |     } | ||||||
|  |     if (audioOutputKeys.contains("recordSilenceTime")) { | ||||||
|  |         outputDeviceInfo.recordSilenceTime = response.getRecordSilenceTime(); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     dspEngine->getAudioDeviceManager()->setOutputDeviceInfo(deviceIndex, outputDeviceInfo); |     dspEngine->getAudioDeviceManager()->setOutputDeviceInfo(deviceIndex, outputDeviceInfo); | ||||||
|     dspEngine->getAudioDeviceManager()->getOutputDeviceInfo(deviceName, outputDeviceInfo); |     dspEngine->getAudioDeviceManager()->getOutputDeviceInfo(deviceName, outputDeviceInfo); | ||||||
| @ -625,6 +640,15 @@ int WebAPIAdapter::instanceAudioOutputPatch( | |||||||
| 
 | 
 | ||||||
|     response.setUdpPort(outputDeviceInfo.udpPort % (1<<16)); |     response.setUdpPort(outputDeviceInfo.udpPort % (1<<16)); | ||||||
| 
 | 
 | ||||||
|  |     if (response.getFileRecordName()) { | ||||||
|  |         *response.getFileRecordName() = outputDeviceInfo.fileRecordName; | ||||||
|  |     } else { | ||||||
|  |         response.setFileRecordName(new QString(outputDeviceInfo.fileRecordName)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     response.setRecordToFile(outputDeviceInfo.recordToFile == 0 ? 0 : 1); | ||||||
|  |     response.setRecordSilenceTime(outputDeviceInfo.recordSilenceTime); | ||||||
|  | 
 | ||||||
|     return 200; |     return 200; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3937,6 +3937,21 @@ bool WebAPIRequestMapper::validateAudioOutputDevice( | |||||||
|         audioOutputDevice.setUdpPort(jsonObject["udpPort"].toInt()); |         audioOutputDevice.setUdpPort(jsonObject["udpPort"].toInt()); | ||||||
|         audioOutputDeviceKeys.append("udpPort"); |         audioOutputDeviceKeys.append("udpPort"); | ||||||
|     } |     } | ||||||
|  |     if (jsonObject.contains("fileRecordName")) | ||||||
|  |     { | ||||||
|  |         audioOutputDevice.setFileRecordName(new QString(jsonObject["fileRecordName"].toString())); | ||||||
|  |         audioOutputDeviceKeys.append("fileRecordName"); | ||||||
|  |     } | ||||||
|  |     if (jsonObject.contains("recordToFile")) | ||||||
|  |     { | ||||||
|  |         audioOutputDevice.setRecordToFile(jsonObject["recordToFile"].toInt() == 0 ? 0 : 1); | ||||||
|  |         audioOutputDeviceKeys.append("recordToFile"); | ||||||
|  |     } | ||||||
|  |     if (jsonObject.contains("recordSilenceTime")) | ||||||
|  |     { | ||||||
|  |         audioOutputDevice.setRecordSilenceTime(jsonObject["recordSilenceTime"].toInt()); | ||||||
|  |         audioOutputDeviceKeys.append("recordSilenceTime"); | ||||||
|  |     } | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3201,6 +3201,18 @@ definitions: | |||||||
|       udpPort: |       udpPort: | ||||||
|         description: "UDP destination port" |         description: "UDP destination port" | ||||||
|         type: integer |         type: integer | ||||||
|  |       fileRecordName: | ||||||
|  |         description: "Output record file name" | ||||||
|  |         type: string | ||||||
|  |       recordToFile: | ||||||
|  |         type: integer | ||||||
|  |         description: > | ||||||
|  |           Record to file active | ||||||
|  |             * 0 - not recording | ||||||
|  |             * 1 - recording | ||||||
|  |       recordSilenceTime: | ||||||
|  |         description: "Record silence time before stopping recording in 10ths of seconds" | ||||||
|  |         type: integer | ||||||
| 
 | 
 | ||||||
|   LocationInformation: |   LocationInformation: | ||||||
|     description: "Instance geolocation information" |     description: "Instance geolocation information" | ||||||
|  | |||||||
| @ -2430,6 +2430,18 @@ margin-bottom: 20px; | |||||||
|     "udpPort" : { |     "udpPort" : { | ||||||
|       "type" : "integer", |       "type" : "integer", | ||||||
|       "description" : "UDP destination port" |       "description" : "UDP destination port" | ||||||
|  |     }, | ||||||
|  |     "fileRecordName" : { | ||||||
|  |       "type" : "string", | ||||||
|  |       "description" : "Output record file name" | ||||||
|  |     }, | ||||||
|  |     "recordToFile" : { | ||||||
|  |       "type" : "integer", | ||||||
|  |       "description" : "Record to file active\n  * 0 - not recording\n  * 1 - recording\n" | ||||||
|  |     }, | ||||||
|  |     "recordSilenceTime" : { | ||||||
|  |       "type" : "integer", | ||||||
|  |       "description" : "Record silence time before stopping recording in 10ths of seconds" | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "description" : "Audio output device" |   "description" : "Audio output device" | ||||||
| @ -56605,7 +56617,7 @@ except ApiException as e: | |||||||
|           </div> |           </div> | ||||||
|           <div id="generator"> |           <div id="generator"> | ||||||
|             <div class="content"> |             <div class="content"> | ||||||
|               Generated 2022-08-16T18:08:01.866+02:00 |               Generated 2022-11-12T10:56:38.135+01:00 | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|       </div> |       </div> | ||||||
|  | |||||||
| @ -52,6 +52,12 @@ SWGAudioOutputDevice::SWGAudioOutputDevice() { | |||||||
|     m_udp_address_isSet = false; |     m_udp_address_isSet = false; | ||||||
|     udp_port = 0; |     udp_port = 0; | ||||||
|     m_udp_port_isSet = false; |     m_udp_port_isSet = false; | ||||||
|  |     file_record_name = nullptr; | ||||||
|  |     m_file_record_name_isSet = false; | ||||||
|  |     record_to_file = 0; | ||||||
|  |     m_record_to_file_isSet = false; | ||||||
|  |     record_silence_time = 0; | ||||||
|  |     m_record_silence_time_isSet = false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| SWGAudioOutputDevice::~SWGAudioOutputDevice() { | SWGAudioOutputDevice::~SWGAudioOutputDevice() { | ||||||
| @ -84,6 +90,12 @@ SWGAudioOutputDevice::init() { | |||||||
|     m_udp_address_isSet = false; |     m_udp_address_isSet = false; | ||||||
|     udp_port = 0; |     udp_port = 0; | ||||||
|     m_udp_port_isSet = false; |     m_udp_port_isSet = false; | ||||||
|  |     file_record_name = new QString(""); | ||||||
|  |     m_file_record_name_isSet = false; | ||||||
|  |     record_to_file = 0; | ||||||
|  |     m_record_to_file_isSet = false; | ||||||
|  |     record_silence_time = 0; | ||||||
|  |     m_record_silence_time_isSet = false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| @ -104,6 +116,11 @@ SWGAudioOutputDevice::cleanup() { | |||||||
|         delete udp_address; |         delete udp_address; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     if(file_record_name != nullptr) {  | ||||||
|  |         delete file_record_name; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| SWGAudioOutputDevice* | SWGAudioOutputDevice* | ||||||
| @ -141,6 +158,12 @@ SWGAudioOutputDevice::fromJsonObject(QJsonObject &pJson) { | |||||||
|      |      | ||||||
|     ::SWGSDRangel::setValue(&udp_port, pJson["udpPort"], "qint32", ""); |     ::SWGSDRangel::setValue(&udp_port, pJson["udpPort"], "qint32", ""); | ||||||
|      |      | ||||||
|  |     ::SWGSDRangel::setValue(&file_record_name, pJson["fileRecordName"], "QString", "QString"); | ||||||
|  |      | ||||||
|  |     ::SWGSDRangel::setValue(&record_to_file, pJson["recordToFile"], "qint32", ""); | ||||||
|  |      | ||||||
|  |     ::SWGSDRangel::setValue(&record_silence_time, pJson["recordSilenceTime"], "qint32", ""); | ||||||
|  |      | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| QString | QString | ||||||
| @ -193,6 +216,15 @@ SWGAudioOutputDevice::asJsonObject() { | |||||||
|     if(m_udp_port_isSet){ |     if(m_udp_port_isSet){ | ||||||
|         obj->insert("udpPort", QJsonValue(udp_port)); |         obj->insert("udpPort", QJsonValue(udp_port)); | ||||||
|     } |     } | ||||||
|  |     if(file_record_name != nullptr && *file_record_name != QString("")){ | ||||||
|  |         toJsonValue(QString("fileRecordName"), file_record_name, obj, QString("QString")); | ||||||
|  |     } | ||||||
|  |     if(m_record_to_file_isSet){ | ||||||
|  |         obj->insert("recordToFile", QJsonValue(record_to_file)); | ||||||
|  |     } | ||||||
|  |     if(m_record_silence_time_isSet){ | ||||||
|  |         obj->insert("recordSilenceTime", QJsonValue(record_silence_time)); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     return obj; |     return obj; | ||||||
| } | } | ||||||
| @ -317,6 +349,36 @@ SWGAudioOutputDevice::setUdpPort(qint32 udp_port) { | |||||||
|     this->m_udp_port_isSet = true; |     this->m_udp_port_isSet = true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | QString* | ||||||
|  | SWGAudioOutputDevice::getFileRecordName() { | ||||||
|  |     return file_record_name; | ||||||
|  | } | ||||||
|  | void | ||||||
|  | SWGAudioOutputDevice::setFileRecordName(QString* file_record_name) { | ||||||
|  |     this->file_record_name = file_record_name; | ||||||
|  |     this->m_file_record_name_isSet = true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | qint32 | ||||||
|  | SWGAudioOutputDevice::getRecordToFile() { | ||||||
|  |     return record_to_file; | ||||||
|  | } | ||||||
|  | void | ||||||
|  | SWGAudioOutputDevice::setRecordToFile(qint32 record_to_file) { | ||||||
|  |     this->record_to_file = record_to_file; | ||||||
|  |     this->m_record_to_file_isSet = true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | qint32 | ||||||
|  | SWGAudioOutputDevice::getRecordSilenceTime() { | ||||||
|  |     return record_silence_time; | ||||||
|  | } | ||||||
|  | void | ||||||
|  | SWGAudioOutputDevice::setRecordSilenceTime(qint32 record_silence_time) { | ||||||
|  |     this->record_silence_time = record_silence_time; | ||||||
|  |     this->m_record_silence_time_isSet = true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| bool | bool | ||||||
| SWGAudioOutputDevice::isSet(){ | SWGAudioOutputDevice::isSet(){ | ||||||
| @ -358,6 +420,15 @@ SWGAudioOutputDevice::isSet(){ | |||||||
|         if(m_udp_port_isSet){ |         if(m_udp_port_isSet){ | ||||||
|             isObjectUpdated = true; break; |             isObjectUpdated = true; break; | ||||||
|         } |         } | ||||||
|  |         if(file_record_name && *file_record_name != QString("")){ | ||||||
|  |             isObjectUpdated = true; break; | ||||||
|  |         } | ||||||
|  |         if(m_record_to_file_isSet){ | ||||||
|  |             isObjectUpdated = true; break; | ||||||
|  |         } | ||||||
|  |         if(m_record_silence_time_isSet){ | ||||||
|  |             isObjectUpdated = true; break; | ||||||
|  |         } | ||||||
|     }while(false); |     }while(false); | ||||||
|     return isObjectUpdated; |     return isObjectUpdated; | ||||||
| } | } | ||||||
|  | |||||||
| @ -78,6 +78,15 @@ public: | |||||||
|     qint32 getUdpPort(); |     qint32 getUdpPort(); | ||||||
|     void setUdpPort(qint32 udp_port); |     void setUdpPort(qint32 udp_port); | ||||||
| 
 | 
 | ||||||
|  |     QString* getFileRecordName(); | ||||||
|  |     void setFileRecordName(QString* file_record_name); | ||||||
|  | 
 | ||||||
|  |     qint32 getRecordToFile(); | ||||||
|  |     void setRecordToFile(qint32 record_to_file); | ||||||
|  | 
 | ||||||
|  |     qint32 getRecordSilenceTime(); | ||||||
|  |     void setRecordSilenceTime(qint32 record_silence_time); | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|     virtual bool isSet() override; |     virtual bool isSet() override; | ||||||
| 
 | 
 | ||||||
| @ -118,6 +127,15 @@ private: | |||||||
|     qint32 udp_port; |     qint32 udp_port; | ||||||
|     bool m_udp_port_isSet; |     bool m_udp_port_isSet; | ||||||
| 
 | 
 | ||||||
|  |     QString* file_record_name; | ||||||
|  |     bool m_file_record_name_isSet; | ||||||
|  | 
 | ||||||
|  |     qint32 record_to_file; | ||||||
|  |     bool m_record_to_file_isSet; | ||||||
|  | 
 | ||||||
|  |     qint32 record_silence_time; | ||||||
|  |     bool m_record_silence_time_isSet; | ||||||
|  | 
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user