diff options
Diffstat (limited to 'doc/src/snippets')
-rw-r--r-- | doc/src/snippets/multimedia-snippets/audio.cpp | 36 | ||||
-rw-r--r-- | doc/src/snippets/multimedia-snippets/media.cpp | 73 | ||||
-rw-r--r-- | doc/src/snippets/multimedia-snippets/multimedia-snippets.pro | 2 |
3 files changed, 107 insertions, 4 deletions
diff --git a/doc/src/snippets/multimedia-snippets/audio.cpp b/doc/src/snippets/multimedia-snippets/audio.cpp index f9d9ca1ae..eb329a8d8 100644 --- a/doc/src/snippets/multimedia-snippets/audio.cpp +++ b/doc/src/snippets/multimedia-snippets/audio.cpp @@ -47,6 +47,11 @@ #include "qaudiodeviceinfo.h" #include "qaudioinput.h" #include "qaudiooutput.h" +#include "qaudioprobe.h" + +//! [Audio decoder header] +#include "qaudiodecoder_p.h" +//! [Audio decoder header] class AudioInputExample : public QObject { Q_OBJECT @@ -208,3 +213,34 @@ void AudioDeviceInfo() qDebug() << "Device name: " << deviceInfo.deviceName(); //! [Dumping audio formats] } + +class AudioDecodingExample : public QObject { + Q_OBJECT +public: + void decode(); + +public Q_SLOTS: + void stateChanged(QAudio::State newState); + void readBuffer(); +}; + +void AudioDecodingExample::decode() +{ + //! [Local audio decoding] + QAudioFormat desiredFormat; + desiredFormat.setChannelCount(2); + desiredFormat.setCodec("audio/x-raw"); + desiredFormat.setSampleType(QAudioFormat::UnSignedInt); + desiredFormat.setSampleRate(48000); + desiredFormat.setSampleSize(16); + + QAudioDecoder *decoder = new QAudioDecoder(this); + decoder->setAudioFormat(desiredFormat); + decoder->setSourceFilename("level1.mp3"); + + connect(decoder, SIGNAL(bufferReady()), this, SLOT(readBuffer())); + decoder->start(); + + // Now wait for bufferReady() signal and call decoder->read() + //! [Local audio decoding] +} diff --git a/doc/src/snippets/multimedia-snippets/media.cpp b/doc/src/snippets/multimedia-snippets/media.cpp index 4fc38b4d4..7e7a95f69 100644 --- a/doc/src/snippets/multimedia-snippets/media.cpp +++ b/doc/src/snippets/multimedia-snippets/media.cpp @@ -52,6 +52,10 @@ #include "qvideowidget.h" #include "qcameraimagecapture.h" #include "qcamera.h" +#include "qcameraviewfinder.h" +#include "qaudioprobe.h" +#include "qaudiorecorder.h" +#include "qvideoprobe.h" class MediaExample : public QObject { Q_OBJECT @@ -60,8 +64,11 @@ class MediaExample : public QObject { void MediaPlayer(); void RadioTuna(); void MediaRecorder(); + void AudioRecorder(); void EncoderSettings(); void ImageEncoderSettings(); + void AudioProbe(); + void VideoProbe(); private: // Common naming @@ -73,9 +80,14 @@ private: QMediaContent video; QMediaRecorder *recorder; QCamera *camera; + QCameraViewfinder *viewfinder; QCameraImageCapture *imageCapture; QString fileName; QRadioTuner *radio; + QAudioRecorder *audioRecorder; + QAudioProbe *audioProbe; + QVideoProbe *videoProbe; + QMediaContent image1; QMediaContent image2; QMediaContent image3; @@ -182,7 +194,6 @@ void MediaExample::MediaPlayer() void MediaExample::MediaRecorder() { //! [Media recorder] - // Audio only recording recorder = new QMediaRecorder(camera); QAudioEncoderSettings audioSettings; @@ -194,8 +205,10 @@ void MediaExample::MediaRecorder() recorder->setOutputLocation(QUrl::fromLocalFile(fileName)); recorder->record(); //! [Media recorder] +} -#if 0 +void MediaExample::AudioRecorder() +{ //! [Audio recorder] audioRecorder = new QAudioRecorder; @@ -221,7 +234,6 @@ void MediaExample::MediaRecorder() audioRecorder->setAudioInput(selectedInput); //! [Audio recorder endpoints] -#endif } void MediaExample::RadioTuna() @@ -238,4 +250,59 @@ void MediaExample::RadioTuna() //! [Radio tuner] } +void MediaExample::AudioProbe() +{ + //! [Audio probe] + audioRecorder = new QAudioRecorder; + + QAudioEncoderSettings audioSettings; + audioSettings.setCodec("audio/amr"); + audioSettings.setQuality(QtMultimedia::HighQuality); + + audioRecorder->setEncodingSettings(audioSettings); + + audioRecorder->setOutputLocation(QUrl::fromLocalFile("test.amr")); + + audioProbe = new QAudioProbe(this); + if (audioProbe->setSource(audioRecorder)) { + // Probing succeeded, audioProbe->isValid() should be true. + connect(audioProbe, SIGNAL(audioBufferProbed(QAudioBuffer)), + this, SLOT(calculateLevel(QAudioBuffer))); + } + + audioRecorder->record(); + // Now audio buffers being recorded should be signaled + // by the probe, so we can do things like calculating the + // audio power level, or performing a frequency transform + //! [Audio probe] +} + +void MediaExample::VideoProbe() +{ + //! [Video probe] + camera = new QCamera; + viewfinder = new QCameraViewfinder(); + camera->setViewfinder(viewfinder); + + camera->setCaptureMode(QCamera::CaptureVideo); + + videoProbe = new QVideoProbe(this); + + if (videoProbe->setSource(camera)) { + // Probing succeeded, videoProbe->isValid() should be true. + connect(videoProbe, SIGNAL(videoFrameProbed(QVideoFrame)), + this, SLOT(detectBarcodes(QVideoFrame))); + } + + camera->start(); + // Viewfinder frames should now also be emitted by + // the video probe, even in still image capture mode. + // Another alternative is to install the probe on a + // QMediaRecorder connected to the camera to get the + // recorded frames, if they are different from the + // viewfinder frames. + + //! [Video probe] +} + diff --git a/doc/src/snippets/multimedia-snippets/multimedia-snippets.pro b/doc/src/snippets/multimedia-snippets/multimedia-snippets.pro index 24e8735b5..9571b026e 100644 --- a/doc/src/snippets/multimedia-snippets/multimedia-snippets.pro +++ b/doc/src/snippets/multimedia-snippets/multimedia-snippets.pro @@ -11,7 +11,7 @@ INCLUDEPATH += ../../../../src/global \ CONFIG += console -QT += multimedia multimediawidgets widgets +QT += multimedia multimediawidgets widgets multimedia-private SOURCES += \ audio.cpp \ |