- Timestamp:
- Jun 10, 2013 11:39:21 AM (12 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
r46455 r46459 389 389 setTabOrder(m_pEditorVideoCaptureHeight, m_pSliderVideoCaptureFrameRate); 390 390 setTabOrder(m_pSliderVideoCaptureFrameRate, m_pEditorVideoCaptureFrameRate); 391 setTabOrder(m_pEditorVideoCaptureFrameRate, m_p ComboVideoCaptureBitRate);392 setTabOrder(m_p ComboVideoCaptureBitRate, m_pEditorVideoCaptureBitRate);391 setTabOrder(m_pEditorVideoCaptureFrameRate, m_pSliderVideoCaptureQuality); 392 setTabOrder(m_pSliderVideoCaptureQuality, m_pEditorVideoCaptureBitRate); 393 393 } 394 394 … … 415 415 m_pLabelVideoCaptureFrameRateMax->setText(tr("%1 fps").arg(m_pSliderVideoCaptureFrameRate->maximum())); 416 416 m_pLabelVideoCaptureFrameRateUnits->setText(tr("fps")); 417 m_pComboVideoCaptureBitRate->setItemText(0, tr("User Defined")); 418 m_pComboVideoCaptureBitRate->setItemText(1, tr("%1 kbps").arg(32)); 419 m_pComboVideoCaptureBitRate->setItemText(2, tr("%1 kbps").arg(64)); 420 m_pComboVideoCaptureBitRate->setItemText(3, tr("%1 kbps").arg(128)); 421 m_pComboVideoCaptureBitRate->setItemText(4, tr("%1 kbps").arg(160)); 422 m_pComboVideoCaptureBitRate->setItemText(5, tr("%1 kbps").arg(256)); 423 m_pComboVideoCaptureBitRate->setItemText(6, tr("%1 kbps").arg(320)); 424 m_pComboVideoCaptureBitRate->setItemText(7, tr("%1 kbps").arg(512)); 425 m_pComboVideoCaptureBitRate->setItemText(8, tr("%1 kbps").arg(1024)); 426 m_pComboVideoCaptureBitRate->setItemText(9, tr("%1 kbps").arg(2048)); 417 m_pLabelVideoCaptureQualityMin->setText(tr("low", "quality")); 418 m_pLabelVideoCaptureQualityMed->setText(tr("medium", "quality")); 419 m_pLabelVideoCaptureQualityMax->setText(tr("high", "quality")); 427 420 m_pLabelVideoCaptureBitRateUnits->setText(tr("kbps")); 428 421 } … … 492 485 } 493 486 494 void UIMachineSettingsDisplay::sltHandleVideoCaptureBitRateChange(int iCurrentIndex)495 {496 /* Get the proposed bit-rate: */497 int iVideoCaptureBitRate = m_pComboVideoCaptureBitRate->itemData(iCurrentIndex).toInt();498 499 /* Make sure its valid: */500 if (iVideoCaptureBitRate == 0)501 return;502 503 /* Apply proposed bit-rate: */504 m_pEditorVideoCaptureBitRate->setValue(iVideoCaptureBitRate);505 }506 507 487 void UIMachineSettingsDisplay::sltHandleVideoCaptureWidthChange() 508 488 { 509 489 /* Look for preset: */ 510 490 lookForCorrespondingSizePreset(); 491 /* Update quality and bit-rate: */ 492 sltHandleVideoCaptureQualitySliderChange(); 511 493 } 512 494 … … 515 497 /* Look for preset: */ 516 498 lookForCorrespondingSizePreset(); 499 /* Update quality and bit-rate: */ 500 sltHandleVideoCaptureQualitySliderChange(); 517 501 } 518 502 … … 521 505 /* Apply proposed frame-rate: */ 522 506 m_pSliderVideoCaptureFrameRate->setValue(m_pEditorVideoCaptureFrameRate->value()); 523 } 524 525 void UIMachineSettingsDisplay::sltHandleVideoCaptureBitRateChange() 526 { 527 /* Look for preset: */ 528 lookForCorrespondingBitRatePreset(); 507 /* Update quality and bit-rate: */ 508 sltHandleVideoCaptureQualitySliderChange(); 509 } 510 511 void UIMachineSettingsDisplay::sltHandleVideoCaptureQualitySliderChange() 512 { 513 /* Calculate/apply proposed bit-rate: */ 514 m_pEditorVideoCaptureBitRate->blockSignals(true); 515 m_pEditorVideoCaptureBitRate->setValue(calculateBitRate(m_pEditorVideoCaptureWidth->value(), 516 m_pEditorVideoCaptureHeight->value(), 517 m_pEditorVideoCaptureFrameRate->value(), 518 m_pSliderVideoCaptureQuality->value())); 519 m_pEditorVideoCaptureBitRate->blockSignals(false); 520 } 521 522 void UIMachineSettingsDisplay::sltHandleVideoCaptureBitRateSpinboxChange() 523 { 524 /* Calculate/apply proposed quality: */ 525 m_pSliderVideoCaptureQuality->blockSignals(true); 526 m_pSliderVideoCaptureQuality->setValue(calculateQuality(m_pEditorVideoCaptureWidth->value(), 527 m_pEditorVideoCaptureHeight->value(), 528 m_pEditorVideoCaptureFrameRate->value(), 529 m_pEditorVideoCaptureBitRate->value())); 530 m_pSliderVideoCaptureQuality->blockSignals(false); 529 531 } 530 532 … … 660 662 connect(m_pEditorVideoCaptureFrameRate, SIGNAL(valueChanged(int)), this, SLOT(sltHandleVideoCaptureFrameRateChange())); 661 663 662 /* Prepare bit-rate combo-box: */ 663 m_pComboVideoCaptureBitRate->insertItem(0, QString()); /* User Defined */ 664 m_pComboVideoCaptureBitRate->insertItem(1, QString(), QVariant(32)); 665 m_pComboVideoCaptureBitRate->insertItem(2, QString(), QVariant(64)); 666 m_pComboVideoCaptureBitRate->insertItem(3, QString(), QVariant(128)); 667 m_pComboVideoCaptureBitRate->insertItem(4, QString(), QVariant(160)); 668 m_pComboVideoCaptureBitRate->insertItem(5, QString(), QVariant(256)); 669 m_pComboVideoCaptureBitRate->insertItem(6, QString(), QVariant(320)); 670 m_pComboVideoCaptureBitRate->insertItem(7, QString(), QVariant(512)); 671 m_pComboVideoCaptureBitRate->insertItem(8, QString(), QVariant(1024)); 672 m_pComboVideoCaptureBitRate->insertItem(9, QString(), QVariant(2048)); 673 connect(m_pComboVideoCaptureBitRate, SIGNAL(currentIndexChanged(int)), this, SLOT(sltHandleVideoCaptureBitRateChange(int))); 664 /* Prepare quality combo-box: */ 665 m_pSliderLayoutVideoCaptureQuality->setColumnStretch(1, 4); 666 m_pSliderLayoutVideoCaptureQuality->setColumnStretch(3, 5); 667 m_pSliderVideoCaptureQuality->setMinimum(1); 668 m_pSliderVideoCaptureQuality->setMaximum(10); 669 m_pSliderVideoCaptureQuality->setPageStep(1); 670 m_pSliderVideoCaptureQuality->setSingleStep(1); 671 m_pSliderVideoCaptureQuality->setTickInterval(1); 672 m_pSliderVideoCaptureQuality->setSnappingEnabled(true); 673 m_pSliderVideoCaptureQuality->setOptimalHint(1, 5); 674 m_pSliderVideoCaptureQuality->setWarningHint(5, 9); 675 m_pSliderVideoCaptureQuality->setErrorHint(9, 10); 676 connect(m_pSliderVideoCaptureQuality, SIGNAL(valueChanged(int)), this, SLOT(sltHandleVideoCaptureQualitySliderChange())); 674 677 675 678 /* Prepare bit-rate spin-box: */ … … 677 680 m_pEditorVideoCaptureBitRate->setMinimum(32); 678 681 m_pEditorVideoCaptureBitRate->setMaximum(2048); 679 connect(m_pEditorVideoCaptureBitRate, SIGNAL(valueChanged(int)), this, SLOT(sltHandleVideoCaptureBitRate Change()));682 connect(m_pEditorVideoCaptureBitRate, SIGNAL(valueChanged(int)), this, SLOT(sltHandleVideoCaptureBitRateSpinboxChange())); 680 683 } 681 684 … … 759 762 } 760 763 761 void UIMachineSettingsDisplay::lookForCorrespondingBitRatePreset()762 {763 /* Look for video-capture bit-rate preset: */764 lookForCorrespondingPreset(m_pComboVideoCaptureBitRate,765 m_pEditorVideoCaptureBitRate->value());766 }767 768 764 /* static */ 769 765 void UIMachineSettingsDisplay::lookForCorrespondingPreset(QComboBox *pWhere, const QVariant &whichData) … … 777 773 } 778 774 775 /* static */ 776 int UIMachineSettingsDisplay::calculateBitRate(int iFrameWidth, int iFrameHeight, int iFrameRate, int iQuality) 777 { 778 /* Linear quality<=>bit-rate scale-factor: */ 779 return (double)iQuality 780 * (double)iFrameWidth * (double)iFrameHeight * (double)iFrameRate 781 / (double)10 /* translate quality to [%] */ 782 / (double)1024 /* translate bit-rate to [kbps] */ 783 / (double)18.75 /* linear scale factor */; 784 } 785 786 /* static */ 787 int UIMachineSettingsDisplay::calculateQuality(int iFrameWidth, int iFrameHeight, int iFrameRate, int iBitRate) 788 { 789 /* Linear bit-rate<=>quality scale-factor: */ 790 return (double)iBitRate 791 / (double)iFrameWidth / (double)iFrameHeight / (double)iFrameRate 792 * (double)10 /* translate quality to [%] */ 793 * (double)1024 /* translate bit-rate to [kbps] */ 794 * (double)18.75 /* linear scale factor */; 795 } 796 -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h
r46455 r46459 169 169 void sltHandleVideoCaptureSizeChange(int iCurrentIndex); 170 170 void sltHandleVideoCaptureFrameRateChange(int iFrameRate); 171 void sltHandleVideoCaptureBitRateChange(int iCurrentIndex);172 171 void sltHandleVideoCaptureWidthChange(); 173 172 void sltHandleVideoCaptureHeightChange(); 174 173 void sltHandleVideoCaptureFrameRateChange(); 175 void sltHandleVideoCaptureBitRateChange(); 174 void sltHandleVideoCaptureQualitySliderChange(); 175 void sltHandleVideoCaptureBitRateSpinboxChange(); 176 176 177 177 private: … … 190 190 /* Helpers: Video Capture stuff: */ 191 191 void lookForCorrespondingSizePreset(); 192 void lookForCorrespondingBitRatePreset();193 192 static void lookForCorrespondingPreset(QComboBox *pWhere, const QVariant &whichData); 193 static int calculateBitRate(int iFrameWidth, int iFrameHeight, int iFrameRate, int iQuality); 194 static int calculateQuality(int iFrameWidth, int iFrameHeight, int iFrameRate, int iBitRate); 194 195 195 196 /* Validation stuff: */ -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui
r46455 r46459 585 585 <widget class="QLabel" name="m_pLabelVideoCaptureRate"> 586 586 <property name="text"> 587 <string>& Bit Rate:</string>587 <string>&Quality:</string> 588 588 </property> 589 589 <property name="alignment"> … … 591 591 </property> 592 592 <property name="buddy"> 593 <cstring>m_pComboVideoCaptureBitRate</cstring> 594 </property> 595 </widget> 596 </item> 597 <item row="4" column="1"> 598 <widget class="QComboBox" name="m_pComboVideoCaptureBitRate"> 599 <property name="sizePolicy"> 600 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> 601 <horstretch>1</horstretch> 602 <verstretch>0</verstretch> 603 </sizepolicy> 604 </property> 605 <property name="whatsThis"> 606 <string>This setting determines the <b>bitrate</b> in kilobits per second. Increasing this value makes the video look better for the cost of an increased file size.</string> 607 </property> 608 </widget> 593 <cstring>m_pSliderVideoCaptureQuality</cstring> 594 </property> 595 </widget> 596 </item> 597 <item row="4" column="1" rowspan="2"> 598 <layout class="QGridLayout" name="m_pSliderLayoutVideoCaptureQuality"> 599 <property name="spacing"> 600 <number>0</number> 601 </property> 602 <item row="0" column="0" colspan="5"> 603 <widget class="QIAdvancedSlider" name="m_pSliderVideoCaptureQuality"> 604 <property name="whatsThis"> 605 <string>This setting determines the <b>quality</b>. Increasing this value makes the video look better for the cost of an increased file size.</string> 606 </property> 607 <property name="orientation"> 608 <enum>Qt::Horizontal</enum> 609 </property> 610 <property name="tickPosition"> 611 <enum>QSlider::TicksBelow</enum> 612 </property> 613 </widget> 614 </item> 615 <item row="1" column="0"> 616 <widget class="QLabel" name="m_pLabelVideoCaptureQualityMin"/> 617 </item> 618 <item row="1" column="1"> 619 <spacer name="m_pStretchVideoCaptureQualityLeft"> 620 <property name="orientation"> 621 <enum>Qt::Horizontal</enum> 622 </property> 623 <property name="sizeHint" stdset="0"> 624 <size> 625 <width>0</width> 626 <height>0</height> 627 </size> 628 </property> 629 </spacer> 630 </item> 631 <item row="1" column="2"> 632 <widget class="QLabel" name="m_pLabelVideoCaptureQualityMed"/> 633 </item> 634 <item row="1" column="3"> 635 <spacer name="m_pStretchVideoCaptureQualityRight"> 636 <property name="orientation"> 637 <enum>Qt::Horizontal</enum> 638 </property> 639 <property name="sizeHint" stdset="0"> 640 <size> 641 <width>0</width> 642 <height>0</height> 643 </size> 644 </property> 645 </spacer> 646 </item> 647 <item row="1" column="4"> 648 <widget class="QLabel" name="m_pLabelVideoCaptureQualityMax"/> 649 </item> 650 </layout> 609 651 </item> 610 652 <item row="4" column="2"> 611 653 <widget class="QSpinBox" name="m_pEditorVideoCaptureBitRate"> 612 654 <property name="whatsThis"> 613 <string>This setting determines the <b>bitrate</b> in kilobits per second. Increasing this value makes the video look better for the cost of an increased file size.</string>655 <string>This setting determines the bitrate in <b>kilobits per second</b>. Increasing this value makes the video look better for the cost of an increased file size.</string> 614 656 </property> 615 657 </widget>
Note:
See TracChangeset
for help on using the changeset viewer.