Changeset 95741 in vbox for trunk/src/VBox/Main
- Timestamp:
- Jul 20, 2022 9:30:30 AM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 152447
- Location:
- trunk/src/VBox/Main
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/Makefile.kmk
r95570 r95741 84 84 VBOX_MAIN_DEFS += VBOX_WITH_AUDIO_PULSE 85 85 endif 86 ifdef VBOX_WITH_AUDIO_RECORDING 87 VBOX_MAIN_DEFS += VBOX_WITH_AUDIO_RECORDING 88 endif 86 89 ifdef VBOX_WITH_AUDIO_VALIDATIONKIT 87 90 VBOX_MAIN_DEFS += VBOX_WITH_AUDIO_VALIDATIONKIT … … 137 140 ifdef VBOX_WITH_PDM_ASYNC_COMPLETION 138 141 VBOX_MAIN_DEFS += VBOX_WITH_PDM_ASYNC_COMPLETION 142 endif 143 ifdef VBOX_WITH_RECORDING 144 VBOX_MAIN_DEFS += VBOX_WITH_RECORDING 139 145 endif 140 146 ifdef VBOX_WITH_SDS … … 1000 1006 if defined(VBOX_WITH_RECORDING) && defined(VBOX_WITH_LIBVPX) 1001 1007 VBoxC_SDKS += VBOX_VPX 1002 VBoxC_DEFS += VBOX_WITH_ RECORDING VBOX_WITH_LIBVPX1008 VBoxC_DEFS += VBOX_WITH_LIBVPX 1003 1009 VBoxC_SOURCES += \ 1004 1010 src-client/EBMLWriter.cpp \ -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r95617 r95741 5805 5805 5806 5806 <enum 5807 name="RecordingCodecDeadline" 5808 uuid="53627ae1-31cf-4303-9cd5-0c22fd2637cf" 5809 > 5810 <desc> 5811 Recording codec deadline. 5812 5813 How (and if at all) this deadline is being implemented depends on the codec being used. 5814 </desc> 5815 5816 <const name="Default" value="0"> 5817 <desc>Default deadline.</desc> 5818 </const> 5819 <const name="Realtime" value="1"> 5820 <desc>Realtime quality, often resulting in poor / basic quality.</desc> 5821 </const> 5822 <const name="Good" value="2"> 5823 <desc>Balance between realtime and best deadline.</desc> 5824 </const> 5825 <const name="Best" value="3"> 5826 <desc>Best quality, slowest.</desc> 5827 </const> 5828 </enum> 5829 5830 <enum 5807 5831 name="RecordingVideoCodec" 5808 5832 uuid="93791063-3e8c-4310-987c-ddb43ff03ffe" … … 5887 5911 <interface 5888 5912 name="IRecordingScreenSettings" extends="$unknown" 5889 uuid=" 678fbd9a-93af-42a7-7f13-79ad6ef1a18d"5913 uuid="92eb5328-c0b3-4ad2-ae25-75b12c52871f" 5890 5914 wsmap="managed" 5891 5915 rest="managed" … … 5966 5990 <attribute name="options" type="wstring"> 5967 5991 <desc> 5968 This setting contains any additional recording options 5969 required in comma-separated key=value format. This setting 5970 cannot be changed while recording is enabled. 5992 <para>This setting contains any additional recording options 5993 required in comma-separated key=value format, which are currently not 5994 represented via own attribtues.</para> 5995 <para>Consider these options as experimental and mostly for codec-specific 5996 settings, and are subject to change.</para> 5997 5998 This setting cannot be changed while recording is enabled. 5971 5999 5972 6000 The following keys and their corresponding values are available: 5973 6001 5974 6002 <table> 6003 <tr> 6004 <td>vc_enabled</td> 6005 <td>Enables video recording when set to <pre>true</pre>, otherwise 6006 set to <pre>false</pre> to disable.</td> 6007 </tr> 5975 6008 <tr> 5976 6009 <td>ac_enabled</td> … … 5997 6030 </attribute> 5998 6031 6032 <attribute name="audioDeadline" type="RecordingCodecDeadline" default="Default"> 6033 <desc> 6034 Determines the audio deadline to use. 6035 This setting cannot be changed while recording is enabled. 6036 </desc> 6037 </attribute> 6038 5999 6039 <attribute name="audioHz" type="unsigned long" default="22050"> 6000 6040 <desc> … … 6028 6068 Only the VP8 codec is supported currently. 6029 6069 </note> 6070 </desc> 6071 </attribute> 6072 6073 <attribute name="videoDeadline" type="RecordingCodecDeadline" default="Default"> 6074 <desc> 6075 Determines the video deadline to use. 6076 This setting cannot be changed while recording is enabled. 6030 6077 </desc> 6031 6078 </attribute> … … 12345 12392 name="ISystemProperties" 12346 12393 extends="$unknown" 12347 uuid=" a2a3be3d-664a-47e9-a4c5-add220d4ebb1"12394 uuid="3624830f-4ac4-404f-bc58-cf20ed8836b0" 12348 12395 wsmap="managed" 12349 12396 rest="managed" … … 12757 12804 <desc> 12758 12805 Returns an array of officially supported values for enum <link to="ExportOptions"/>, 12806 in the sense of what is e.g. worth offering in the VirtualBox GUI. 12807 </desc> 12808 </attribute> 12809 12810 <attribute name="supportedRecordingFeatures" type="RecordingFeature" safearray="yes" readonly="yes"> 12811 <desc> 12812 Returns an array of officially supported values for enum <link to="RecordingFeature"/>, 12759 12813 in the sense of what is e.g. worth offering in the VirtualBox GUI. 12760 12814 </desc> -
trunk/src/VBox/Main/include/RecordingScreenSettingsImpl.h
r95714 r95741 89 89 HRESULT getAudioCodec(RecordingAudioCodec_T *aCodec); 90 90 HRESULT setAudioCodec(RecordingAudioCodec_T aCodec); 91 HRESULT getAudioDeadline(RecordingCodecDeadline_T *aDeadline); 92 HRESULT setAudioDeadline(RecordingCodecDeadline_T aDeadline); 91 93 HRESULT getAudioHz(ULONG *aHz); 92 94 HRESULT setAudioHz(ULONG aHz); … … 98 100 HRESULT getVideoCodec(RecordingVideoCodec_T *aCodec); 99 101 HRESULT setVideoCodec(RecordingVideoCodec_T aCodec); 102 HRESULT getVideoDeadline(RecordingCodecDeadline_T *aDeadline); 103 HRESULT setVideoDeadline(RecordingCodecDeadline_T aDeadline); 100 104 HRESULT getVideoWidth(ULONG *aVideoWidth); 101 105 HRESULT setVideoWidth(ULONG aVideoWidth); -
trunk/src/VBox/Main/include/SystemPropertiesImpl.h
r94714 r95741 126 126 HRESULT getSupportedImportOptions(std::vector<ImportOptions_T> &aSupportedImportOptions) RT_OVERRIDE; 127 127 HRESULT getSupportedExportOptions(std::vector<ExportOptions_T> &aSupportedExportOptions) RT_OVERRIDE; 128 HRESULT getSupportedRecordingFeatures(std::vector<RecordingFeature_T> &aSupportedRecordingFeatures) RT_OVERRIDE; 128 129 HRESULT getSupportedRecordingAudioCodecs(std::vector<RecordingAudioCodec_T> &aSupportedRecordingAudioCodecs) RT_OVERRIDE; 129 130 HRESULT getSupportedRecordingVideoCodecs(std::vector<RecordingVideoCodec_T> &aSupportedRecordingVideoCodecs) RT_OVERRIDE; -
trunk/src/VBox/Main/src-server/RecordingScreenSettingsImpl.cpp
r95718 r95741 591 591 } 592 592 593 HRESULT RecordingScreenSettings::getAudioDeadline(RecordingCodecDeadline_T *aDeadline) 594 { 595 AutoCaller autoCaller(this); 596 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 597 598 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 599 600 *aDeadline = m->bd->Audio.enmDeadline; 601 602 return S_OK; 603 } 604 605 HRESULT RecordingScreenSettings::setAudioDeadline(RecordingCodecDeadline_T aDeadline) 606 { 607 AutoCaller autoCaller(this); 608 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 609 610 if (!m->pParent->i_canChangeSettings()) 611 return setError(E_INVALIDARG, tr("Cannot change audio deadline while recording is enabled")); 612 613 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 614 615 if (m->bd->Audio.enmDeadline != aDeadline) 616 { 617 m->bd.backup(); 618 m->bd->Audio.enmDeadline = aDeadline; 619 620 alock.release(); 621 622 m->pParent->i_onSettingsChanged(); 623 } 624 625 return S_OK; 626 } 627 593 628 HRESULT RecordingScreenSettings::getAudioHz(ULONG *aHz) 594 629 { … … 725 760 m->bd.backup(); 726 761 m->bd->Video.enmCodec = aCodec; 762 763 alock.release(); 764 765 m->pParent->i_onSettingsChanged(); 766 } 767 768 return S_OK; 769 } 770 771 HRESULT RecordingScreenSettings::getVideoDeadline(RecordingCodecDeadline_T *aDeadline) 772 { 773 AutoCaller autoCaller(this); 774 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 775 776 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 777 778 *aDeadline = m->bd->Video.enmDeadline; 779 780 return S_OK; 781 } 782 783 HRESULT RecordingScreenSettings::setVideoDeadline(RecordingCodecDeadline_T aDeadline) 784 { 785 AutoCaller autoCaller(this); 786 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 787 788 if (!m->pParent->i_canChangeSettings()) 789 return setError(E_INVALIDARG, tr("Cannot change video deadline while recording is enabled")); 790 791 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 792 793 if (m->bd->Video.enmDeadline != aDeadline) 794 { 795 m->bd.backup(); 796 m->bd->Video.enmDeadline = aDeadline; 727 797 728 798 alock.release(); -
trunk/src/VBox/Main/src-server/SystemPropertiesImpl.cpp
r95395 r95741 1576 1576 } 1577 1577 1578 HRESULT SystemProperties::getSupportedRecordingFeatures(std::vector<RecordingFeature_T> &aSupportedRecordingFeatures) 1579 { 1580 #ifdef VBOX_WITH_RECORDING 1581 static const RecordingFeature_T aRecordingFeatures[] = 1582 { 1583 # ifdef VBOX_WITH_AUDIO_RECORDING 1584 RecordingFeature_Audio, 1585 # endif 1586 RecordingFeature_Video, 1587 }; 1588 aSupportedRecordingFeatures.assign(aRecordingFeatures, 1589 aRecordingFeatures + RT_ELEMENTS(aRecordingFeatures)); 1590 #else /* !VBOX_WITH_RECORDING */ 1591 aSupportedRecordingFeatures.clear(); 1592 #endif /* VBOX_WITH_RECORDING */ 1593 return S_OK; 1594 } 1595 1578 1596 HRESULT SystemProperties::getSupportedRecordingAudioCodecs(std::vector<RecordingAudioCodec_T> &aSupportedRecordingAudioCodecs) 1579 1597 { -
trunk/src/VBox/Main/xml/Settings.cpp
r95662 r95741 2805 2805 File.strName = ""; 2806 2806 Video.enmCodec = RecordingVideoCodec_VP8; 2807 Video.enmDeadline = RecordingCodecDeadline_Default; 2807 2808 Video.ulWidth = 1024; 2808 2809 Video.ulHeight = 768; … … 2810 2811 Video.ulFPS = 25; 2811 2812 Audio.enmAudioCodec = RecordingAudioCodec_Opus; 2813 Audio.enmDeadline = RecordingCodecDeadline_Default; 2812 2814 Audio.cBits = 16; 2813 2815 Audio.cChannels = 2; … … 2830 2832 && File.strName == "" 2831 2833 && Video.enmCodec == RecordingVideoCodec_VP8 2834 && Video.enmDeadline == RecordingCodecDeadline_Default 2832 2835 && Video.ulWidth == 1024 2833 2836 && Video.ulHeight == 768 … … 2835 2838 && Video.ulFPS == 25 2836 2839 && Audio.enmAudioCodec == RecordingAudioCodec_Opus 2840 && Audio.enmDeadline == RecordingCodecDeadline_Default 2837 2841 && Audio.cBits == 16 2838 2842 && Audio.cChannels == 2 … … 2871 2875 && File.strName == d.File.strName 2872 2876 && File.ulMaxSizeMB == d.File.ulMaxSizeMB 2877 && Video.enmDeadline == d.Video.enmDeadline 2873 2878 && Video.enmCodec == d.Video.enmCodec 2874 2879 && Video.ulWidth == d.Video.ulWidth … … 2877 2882 && Video.ulFPS == d.Video.ulFPS 2878 2883 && Audio.enmAudioCodec == d.Audio.enmAudioCodec 2884 && Audio.enmDeadline == d.Audio.enmDeadline 2879 2885 && Audio.cBits == d.Audio.cBits 2880 2886 && Audio.cChannels == d.Audio.cChannels … … 6022 6028 N_("Not supported Recording/@dest attribute '%#x'"), screenSettings.enmDest); 6023 6029 (*itScreen)->getAttributeValue("maxSizeMB", screenSettings.File.ulMaxSizeMB); 6024 (*itScreen)->getAttributeValue("horzRes", screenSettings.Video.ulWidth); 6025 (*itScreen)->getAttributeValue("vertRes", screenSettings.Video.ulHeight); 6026 (*itScreen)->getAttributeValue("rateKbps", screenSettings.Video.ulRate); 6027 (*itScreen)->getAttributeValue("fps", screenSettings.Video.ulFPS); 6030 6031 (*itScreen)->getAttributeValue("videoDeadline", (uint32_t &)screenSettings.Video.enmDeadline); 6032 (*itScreen)->getAttributeValue("horzRes", screenSettings.Video.ulWidth); 6033 (*itScreen)->getAttributeValue("vertRes", screenSettings.Video.ulHeight); 6034 (*itScreen)->getAttributeValue("rateKbps", screenSettings.Video.ulRate); 6035 (*itScreen)->getAttributeValue("fps", screenSettings.Video.ulFPS); 6036 6037 (*itScreen)->getAttributeValue("audioDeadline", (uint32_t &)screenSettings.Audio.enmDeadline); 6038 (*itScreen)->getAttributeValue("audioHz", (uint32_t &)screenSettings.Audio.uHz); 6039 (*itScreen)->getAttributeValue("audioBits", (uint32_t &)screenSettings.Audio.cBits); 6040 (*itScreen)->getAttributeValue("audioChannels", (uint32_t &)screenSettings.Audio.cChannels); 6028 6041 } 6029 6042 } … … 8051 8064 pelmScreen->setAttribute("maxSizeMB", itScreen->second.File.ulMaxSizeMB); 8052 8065 8066 if (itScreen->second.Video.enmDeadline != RecordingCodecDeadline_Default) 8067 pelmScreen->setAttribute("videoDeadline", itScreen->second.Video.enmDeadline); 8053 8068 if ( itScreen->second.Video.ulWidth != 1024 8054 8069 || itScreen->second.Video.ulHeight != 768) … … 8061 8076 if (itScreen->second.Video.ulFPS) 8062 8077 pelmScreen->setAttribute("fps", itScreen->second.Video.ulFPS); 8078 8079 if (itScreen->second.Audio.enmDeadline != RecordingCodecDeadline_Default) 8080 pelmScreen->setAttribute("audioDeadline", itScreen->second.Audio.enmDeadline); 8081 if (itScreen->second.Audio.uHz != 22050) 8082 pelmScreen->setAttribute("audioHz", itScreen->second.Audio.uHz); 8083 if (itScreen->second.Audio.cBits != 16) 8084 pelmScreen->setAttribute("audioBits", itScreen->second.Audio.cBits); 8085 if (itScreen->second.Audio.cChannels != 2) 8086 pelmScreen->setAttribute("audioChannels", itScreen->second.Audio.cChannels); 8063 8087 } 8064 8088 ++itScreen;
Note:
See TracChangeset
for help on using the changeset viewer.