Mercurial > sdl-ios-xcode
view src/audio/symbian/streamplayer.h @ 4357:a10dac5858fe SDL-1.2
Recommendation from Lennart Poettering:
In ALSA_OpenAudio(): instead of setting period_size+n_periods OR
buffer_size I'd recommend copying the hwparams stuff before you do
this, then first try period_size+n_periods, and then apply it with
snd_pcm_hw_params() and check if that works. If it didn't you should
take the copy of hwparams and try setting buffer_size and apply that
via snd_pcm_hw_params() and check if that worked. And if that failed
too, then take the copy and don't apply neither period nor buffer
settings and see if that works.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 19 Oct 2009 02:23:21 +0000 |
parents | e85e65aec22f |
children |
line wrap: on
line source
#ifndef STREAMPLAYER_H #define STREAMPLAYER_H #include<MdaAudioOutputStream.h> const TInt KSilenceBuffer = 256; class MStreamObs { public: enum { EInit, EPlay, EWrite, EClose, }; virtual void Complete(TInt aState, TInt aError) = 0; }; class MStreamProvider { public: virtual TPtrC8 Data() = 0; }; NONSHARABLE_CLASS(CStreamPlayer) : public CBase, public MMdaAudioOutputStreamCallback { public: CStreamPlayer(MStreamProvider& aProvider, MStreamObs& aObs); ~CStreamPlayer(); void ConstructL(); static TInt ClosestSupportedRate(TInt aRate); TInt OpenStream(TInt aRate, TInt aChannels, TUint32 aType = KMMFFourCCCodePCM16); void SetVolume(TInt aNew); TInt Volume() const; TInt MaxVolume() const; void Stop(); void Start(); void Open(); void Close(); TBool Playing() const; TBool Closed() const; private: void MaoscOpenComplete(TInt aError) ; void MaoscBufferCopied(TInt aError, const TDesC8& aBuffer); void MaoscPlayComplete(TInt aError); private: void Request(); void SetCapsL(); private: MStreamProvider& iProvider; MStreamObs& iObs; TInt iVolume; CMdaAudioOutputStream* iStream; TInt iRate; TInt iChannels; TUint32 iType; enum { ENone = 0, EInited = 0x1, EStarted = 0x2, EStopped = 0x4, EVolumeChange = 0x8, EDied = 0x10 }; TInt iState; TBuf8<KSilenceBuffer> iSilence; TPtrC8 iPtr; }; #endif