@Override
	public void open(AudioFormat pAudioFormat) throws AudioDeviceException {
		super.open( pAudioFormat );
		DataLine.Info dataLineInfo = new DataLine.Info(
				this.mSourceDataLineClass,
				pAudioFormat,
				this.mBufferSize
		);
		try {
			if ( this.mMixer == null ) {
				this.mSourceDataLine = (SourceDataLine) AudioSystem
						.getLine( dataLineInfo );
			}
			else {
				if ( !this.mMixer.isOpen() ) {
					this.mMixer.open();
				}
				this.mSourceDataLine = (SourceDataLine) this.mMixer
						.getLine( dataLineInfo );
			}
			this.mSourceDataLine.open( pAudioFormat );
		}
		catch (LineUnavailableException e) {
			this.mClosed = true;
			throw new AudioDeviceException(
					"The AudioDevices' line is not available",
					e
			);
		}
		this.mSourceDataLine.start();
	}