src/multimedia/audio/qaudiooutput_symbian_p.h
changeset 25 e24348a560a6
parent 19 fcece45ef507
equal deleted inserted replaced
23:89e065397ea6 25:e24348a560a6
    78     QAudioOutputPrivate *const m_audioDevice;
    78     QAudioOutputPrivate *const m_audioDevice;
    79 };
    79 };
    80 
    80 
    81 class QAudioOutputPrivate
    81 class QAudioOutputPrivate
    82     :   public QAbstractAudioOutput
    82     :   public QAbstractAudioOutput
    83     ,   public MDevSoundObserver
       
    84 {
    83 {
    85     friend class SymbianAudioOutputPrivate;
    84     friend class SymbianAudioOutputPrivate;
    86     Q_OBJECT
    85     Q_OBJECT
    87 public:
    86 public:
    88     QAudioOutputPrivate(const QByteArray &device,
    87     QAudioOutputPrivate(const QByteArray &device,
   105     qint64 elapsedUSecs() const;
   104     qint64 elapsedUSecs() const;
   106     QAudio::Error error() const;
   105     QAudio::Error error() const;
   107     QAudio::State state() const;
   106     QAudio::State state() const;
   108     QAudioFormat format() const;
   107     QAudioFormat format() const;
   109 
   108 
   110     // MDevSoundObserver
       
   111     void InitializeComplete(TInt aError);
       
   112     void ToneFinished(TInt aError);
       
   113     void BufferToBeFilled(CMMFBuffer *aBuffer);
       
   114     void PlayError(TInt aError);
       
   115     void BufferToBeEmptied(CMMFBuffer *aBuffer);
       
   116     void RecordError(TInt aError);
       
   117     void ConvertError(TInt aError);
       
   118     void DeviceMessage(TUid aMessageType, const TDesC8 &aMsg);
       
   119 
       
   120 private slots:
   109 private slots:
   121     void dataReady();
   110     void dataReady();
   122     void underflowTimerExpired();
   111     void underflowTimerExpired();
       
   112     void devsoundInitializeComplete(int err);
       
   113     void devsoundBufferToBeFilled(CMMFBuffer *);
       
   114     void devsoundPlayError(int err);
   123 
   115 
   124 private:
   116 private:
   125    void open();
   117    void open();
   126    void startPlayback();
   118    void startPlayback();
   127    void startDevSoundL();
       
   128    void writePaddingData();
   119    void writePaddingData();
   129    qint64 pushData(const char *data, qint64 len);
   120    qint64 pushData(const char *data, qint64 len);
   130    void pullData();
   121    void pullData();
   131    void bufferFilled();
   122    void bufferFilled();
   132    void lastBufferFilled();
   123    void lastBufferFilled();
   136 
   127 
   137    void setError(QAudio::Error error);
   128    void setError(QAudio::Error error);
   138    void setState(SymbianAudio::State state);
   129    void setState(SymbianAudio::State state);
   139 
   130 
   140    bool isDataReady() const;
   131    bool isDataReady() const;
   141    QAudio::State initializingState() const;
       
   142 
   132 
   143 private:
   133 private:
   144     const QByteArray m_device;
   134     const QByteArray m_device;
   145     const QAudioFormat m_format;
   135     const QAudioFormat m_format;
   146 
   136 
   154     QAudio::State m_externalState;
   144     QAudio::State m_externalState;
   155 
   145 
   156     bool m_pullMode;
   146     bool m_pullMode;
   157     QIODevice *m_source;
   147     QIODevice *m_source;
   158 
   148 
   159     QScopedPointer<CMMFDevSound> m_devSound;
   149     SymbianAudio::DevSoundWrapper* m_devSound;
   160     TUint32 m_nativeFourCC;
       
   161     TMMFCapabilities m_nativeFormat;
       
   162 
   150 
   163     // Buffer provided by DevSound, to be filled with data.
   151     // Buffer provided by DevSound, to be filled with data.
   164     CMMFDataBuffer *m_devSoundBuffer;
   152     CMMFDataBuffer *m_devSoundBuffer;
   165 
   153 
   166     int m_devSoundBufferSize;
   154     int m_devSoundBufferSize;