Initial copy of QtMultimediaKit.

Comes from original repo, with SHA1:
2c82d5611655e5967f5c5095af50c0991c4378b2
This commit is contained in:
Michael Goddard
2011-06-29 13:38:46 +10:00
commit 2a34e88c1e
1048 changed files with 206259 additions and 0 deletions

View File

@@ -0,0 +1,312 @@
/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the examples of the Qt Mobility Components.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
** the names of its contributors may be used to endorse or promote
** products derived from this software without specific prior written
** permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
** $QT_END_LICENSE$
**
****************************************************************************/
#include <qaudiodeviceinfo.h>
#include "audiodevices.h"
// Utility functions for converting QAudioFormat fields into text
QString toString(QAudioFormat::SampleType sampleType)
{
QString result("Unknown");
switch (sampleType) {
case QAudioFormat::SignedInt:
result = "SignedInt";
break;
case QAudioFormat::UnSignedInt:
result = "UnSignedInt";
break;
case QAudioFormat::Float:
result = "Float";
break;
}
return result;
}
QString toString(QAudioFormat::Endian endian)
{
QString result("Unknown");
switch (endian) {
case QAudioFormat::LittleEndian:
result = "LittleEndian";
break;
case QAudioFormat::BigEndian:
result = "BigEndian";
break;
}
return result;
}
AudioDevicesBase::AudioDevicesBase(QWidget *parent, Qt::WFlags f)
: QMainWindow(parent, f)
{
setupUi(this);
}
AudioDevicesBase::~AudioDevicesBase() {}
AudioTest::AudioTest(QWidget *parent, Qt::WFlags f)
: AudioDevicesBase(parent, f)
{
mode = QAudio::AudioOutput;
connect(testButton, SIGNAL(clicked()), SLOT(test()));
connect(modeBox, SIGNAL(activated(int)), SLOT(modeChanged(int)));
connect(deviceBox, SIGNAL(activated(int)), SLOT(deviceChanged(int)));
connect(frequencyBox, SIGNAL(activated(int)), SLOT(freqChanged(int)));
connect(channelsBox, SIGNAL(activated(int)), SLOT(channelChanged(int)));
connect(codecsBox, SIGNAL(activated(int)), SLOT(codecChanged(int)));
connect(sampleSizesBox, SIGNAL(activated(int)), SLOT(sampleSizeChanged(int)));
connect(sampleTypesBox, SIGNAL(activated(int)), SLOT(sampleTypeChanged(int)));
connect(endianBox, SIGNAL(activated(int)), SLOT(endianChanged(int)));
connect(populateTableButton, SIGNAL(clicked()), SLOT(populateTable()));
modeBox->setCurrentIndex(0);
modeChanged(0);
deviceBox->setCurrentIndex(0);
deviceChanged(0);
}
AudioTest::~AudioTest()
{
}
void AudioTest::test()
{
// tries to set all the settings picked.
testResult->clear();
if (!deviceInfo.isNull()) {
if (deviceInfo.isFormatSupported(settings)) {
testResult->setText(tr("Success"));
nearestFreq->setText("");
nearestChannel->setText("");
nearestCodec->setText("");
nearestSampleSize->setText("");
nearestSampleType->setText("");
nearestEndian->setText("");
} else {
QAudioFormat nearest = deviceInfo.nearestFormat(settings);
testResult->setText(tr("Failed"));
nearestFreq->setText(QString("%1").arg(nearest.frequency()));
nearestChannel->setText(QString("%1").arg(nearest.channels()));
nearestCodec->setText(nearest.codec());
nearestSampleSize->setText(QString("%1").arg(nearest.sampleSize()));
nearestSampleType->setText(toString(nearest.sampleType()));
nearestEndian->setText(toString(nearest.byteOrder()));
}
}
else
testResult->setText(tr("No Device"));
}
void AudioTest::modeChanged(int idx)
{
testResult->clear();
// mode has changed
if (idx == 0)
mode = QAudio::AudioInput;
else
mode = QAudio::AudioOutput;
deviceBox->clear();
foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(mode))
deviceBox->addItem(deviceInfo.deviceName(), qVariantFromValue(deviceInfo));
deviceBox->setCurrentIndex(0);
deviceChanged(0);
}
void AudioTest::deviceChanged(int idx)
{
testResult->clear();
if (deviceBox->count() == 0)
return;
// device has changed
deviceInfo = deviceBox->itemData(idx).value<QAudioDeviceInfo>();
frequencyBox->clear();
QList<int> freqz = deviceInfo.supportedFrequencies();
for(int i = 0; i < freqz.size(); ++i)
frequencyBox->addItem(QString("%1").arg(freqz.at(i)));
if(freqz.size())
settings.setFrequency(freqz.at(0));
channelsBox->clear();
QList<int> chz = deviceInfo.supportedChannels();
for(int i = 0; i < chz.size(); ++i)
channelsBox->addItem(QString("%1").arg(chz.at(i)));
if(chz.size())
settings.setChannels(chz.at(0));
codecsBox->clear();
QStringList codecz = deviceInfo.supportedCodecs();
for (int i = 0; i < codecz.size(); ++i)
codecsBox->addItem(QString("%1").arg(codecz.at(i)));
if (codecz.size())
settings.setCodec(codecz.at(0));
// Add false to create failed condition!
codecsBox->addItem("audio/test");
sampleSizesBox->clear();
QList<int> sampleSizez = deviceInfo.supportedSampleSizes();
for (int i = 0; i < sampleSizez.size(); ++i)
sampleSizesBox->addItem(QString("%1").arg(sampleSizez.at(i)));
if (sampleSizez.size())
settings.setSampleSize(sampleSizez.at(0));
sampleTypesBox->clear();
QList<QAudioFormat::SampleType> sampleTypez = deviceInfo.supportedSampleTypes();
for (int i = 0; i < sampleTypez.size(); ++i)
sampleTypesBox->addItem(toString(sampleTypez.at(i)));
if (sampleTypez.size())
settings.setSampleType(sampleTypez.at(0));
endianBox->clear();
QList<QAudioFormat::Endian> endianz = deviceInfo.supportedByteOrders();
for (int i = 0; i < endianz.size(); ++i)
endianBox->addItem(toString(endianz.at(i)));
if (endianz.size())
settings.setByteOrder(endianz.at(0));
allFormatsTable->clearContents();
}
void AudioTest::populateTable()
{
int row = 0;
QAudioFormat format;
foreach (QString codec, deviceInfo.supportedCodecs()) {
format.setCodec(codec);
foreach (int frequency, deviceInfo.supportedFrequencies()) {
format.setFrequency(frequency);
foreach (int channels, deviceInfo.supportedChannels()) {
format.setChannels(channels);
foreach (QAudioFormat::SampleType sampleType, deviceInfo.supportedSampleTypes()) {
format.setSampleType(sampleType);
foreach (int sampleSize, deviceInfo.supportedSampleSizes()) {
format.setSampleSize(sampleSize);
foreach (QAudioFormat::Endian endian, deviceInfo.supportedByteOrders()) {
format.setByteOrder(endian);
if (deviceInfo.isFormatSupported(format)) {
allFormatsTable->setRowCount(row + 1);
QTableWidgetItem *codecItem = new QTableWidgetItem(format.codec());
allFormatsTable->setItem(row, 0, codecItem);
QTableWidgetItem *frequencyItem = new QTableWidgetItem(QString("%1").arg(format.frequency()));
allFormatsTable->setItem(row, 1, frequencyItem);
QTableWidgetItem *channelsItem = new QTableWidgetItem(QString("%1").arg(format.channels()));
allFormatsTable->setItem(row, 2, channelsItem);
QTableWidgetItem *sampleTypeItem = new QTableWidgetItem(toString(format.sampleType()));
allFormatsTable->setItem(row, 3, sampleTypeItem);
QTableWidgetItem *sampleSizeItem = new QTableWidgetItem(QString("%1").arg(format.sampleSize()));
allFormatsTable->setItem(row, 4, sampleSizeItem);
QTableWidgetItem *byteOrderItem = new QTableWidgetItem(toString(format.byteOrder()));
allFormatsTable->setItem(row, 5, byteOrderItem);
++row;
}
}
}
}
}
}
}
}
void AudioTest::freqChanged(int idx)
{
// freq has changed
settings.setFrequency(frequencyBox->itemText(idx).toInt());
}
void AudioTest::channelChanged(int idx)
{
settings.setChannels(channelsBox->itemText(idx).toInt());
}
void AudioTest::codecChanged(int idx)
{
settings.setCodec(codecsBox->itemText(idx));
}
void AudioTest::sampleSizeChanged(int idx)
{
settings.setSampleSize(sampleSizesBox->itemText(idx).toInt());
}
void AudioTest::sampleTypeChanged(int idx)
{
switch (sampleTypesBox->itemText(idx).toInt()) {
case QAudioFormat::SignedInt:
settings.setSampleType(QAudioFormat::SignedInt);
break;
case QAudioFormat::UnSignedInt:
settings.setSampleType(QAudioFormat::UnSignedInt);
break;
case QAudioFormat::Float:
settings.setSampleType(QAudioFormat::Float);
}
}
void AudioTest::endianChanged(int idx)
{
switch (endianBox->itemText(idx).toInt()) {
case QAudioFormat::LittleEndian:
settings.setByteOrder(QAudioFormat::LittleEndian);
break;
case QAudioFormat::BigEndian:
settings.setByteOrder(QAudioFormat::BigEndian);
}
}

View File

@@ -0,0 +1,83 @@
/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the examples of the Qt Mobility Components.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
** the names of its contributors may be used to endorse or promote
** products derived from this software without specific prior written
** permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef AUDIODEVICES_H
#define AUDIODEVICES_H
#include <QObject>
#include <QMainWindow>
#include <qaudiodeviceinfo.h>
#include "ui_audiodevicesbase.h"
class AudioDevicesBase : public QMainWindow, public Ui::AudioDevicesBase
{
public:
AudioDevicesBase(QWidget *parent = 0, Qt::WFlags f = 0);
virtual ~AudioDevicesBase();
};
class AudioTest : public AudioDevicesBase
{
Q_OBJECT
public:
AudioTest(QWidget *parent = 0, Qt::WFlags f = 0);
virtual ~AudioTest();
QAudioDeviceInfo deviceInfo;
QAudioFormat settings;
QAudio::Mode mode;
private slots:
void modeChanged(int idx);
void deviceChanged(int idx);
void freqChanged(int idx);
void channelChanged(int idx);
void codecChanged(int idx);
void sampleSizeChanged(int idx);
void sampleTypeChanged(int idx);
void endianChanged(int idx);
void test();
void populateTable();
};
#endif

View File

@@ -0,0 +1,21 @@
TEMPLATE = app
CONFIG += example
INCLUDEPATH += ../../src/multimedia ../../src/multimedia/audio
include(../mobility_examples.pri)
CONFIG += mobility
MOBILITY = multimedia
QMAKE_RPATHDIR += $$DESTDIR
HEADERS = audiodevices.h
SOURCES = audiodevices.cpp \
main.cpp
FORMS += audiodevicesbase.ui
symbian {
TARGET.CAPABILITY = UserEnvironment WriteDeviceData ReadDeviceData
}

View File

@@ -0,0 +1,399 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AudioDevicesBase</class>
<widget class="QMainWindow" name="AudioDevicesBase">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>679</width>
<height>598</height>
</rect>
</property>
<property name="windowTitle">
<string>Audio Devices</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>659</width>
<height>558</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="modeLabel">
<property name="text">
<string>Mode</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="deviceLabel">
<property name="text">
<string>Device</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QComboBox" name="modeBox">
<item>
<property name="text">
<string>Input</string>
</property>
</item>
<item>
<property name="text">
<string>Output</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="deviceBox"/>
</item>
<item row="2" column="0" colspan="2">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="testFormatTab">
<attribute name="title">
<string>Test format</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QLabel" name="actualLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="text">
<string>&lt;i&gt;Actual Settings&lt;/i&gt;</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="nearestLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;Nearest Settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="frequencyBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="nearestFreq">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="channelsBox"/>
</item>
<item row="5" column="2">
<widget class="QLineEdit" name="nearestChannel">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QComboBox" name="sampleSizesBox"/>
</item>
<item row="9" column="2">
<widget class="QLineEdit" name="nearestSampleSize">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="14" column="1">
<widget class="QComboBox" name="endianBox"/>
</item>
<item row="14" column="2">
<widget class="QLineEdit" name="nearestEndian">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="15" column="1">
<widget class="QPushButton" name="testButton">
<property name="text">
<string>Test</string>
</property>
</widget>
</item>
<item row="15" column="2">
<widget class="QLabel" name="testResult">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="actualFreqLabel">
<property name="text">
<string>Frequency (Hz)</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="actualChannelLabel">
<property name="text">
<string>Channels</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="actualSampleSizeLabel">
<property name="text">
<string>Sample size (bits)</string>
</property>
</widget>
</item>
<item row="14" column="0">
<widget class="QLabel" name="actualEndianLabel">
<property name="text">
<string>Endianess</string>
</property>
</widget>
</item>
<item row="16" column="0" colspan="3">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Note: an invalid codec 'audio/test' exists in order to allow an invalid format to be constructed, and therefore to trigger a 'nearest format' calculation.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="actualCodecLabel">
<property name="text">
<string>Codec</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLineEdit" name="nearestCodec">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="codecsBox"/>
</item>
<item row="6" column="0">
<widget class="QLabel" name="actualSampleTypeLabel">
<property name="text">
<string>SampleType</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="sampleTypesBox"/>
</item>
<item row="6" column="2">
<widget class="QLineEdit" name="nearestSampleType">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>All formats</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QPushButton" name="populateTableButton">
<property name="text">
<string>Populate table</string>
</property>
</widget>
</item>
<item>
<widget class="QTableWidget" name="allFormatsTable">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="dragDropOverwriteMode">
<bool>false</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectItems</enum>
</property>
<property name="textElideMode">
<enum>Qt::ElideNone</enum>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="cornerButtonEnabled">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Codec</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Frequency (Hz)</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Channels</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Sample type</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Sample size (bits)</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Endianness</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>