|
|
|
/***************************************************************************
|
|
|
|
streaming-job.h - description
|
|
|
|
-------------------
|
|
|
|
begin : Sun Sept 3 2006
|
|
|
|
copyright : (C) 2006 by Martin Witte
|
|
|
|
email : witte@kawo1.rwth-aachen.de
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#ifndef _KRADIO_STREAMING_JOB_H
|
|
|
|
#define _KRADIO_STREAMING_JOB_H
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include <config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "../../src/include/ringbuffer.h"
|
|
|
|
#include "../../src/include/soundformat.h"
|
|
|
|
#include "../../src/include/soundstreamclient_interfaces.h"
|
|
|
|
|
|
|
|
#include <tqobject.h>
|
|
|
|
|
|
|
|
#include <tdeio/jobclasses.h>
|
|
|
|
|
|
|
|
class StreamingJob : public TQObject
|
|
|
|
{
|
|
|
|
TQ_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
StreamingJob();
|
|
|
|
StreamingJob(const TQString &_URL, const SoundFormat &_SoundFormat, size_t _bufferSize);
|
|
|
|
StreamingJob(const StreamingJob &c);
|
|
|
|
|
|
|
|
virtual ~StreamingJob();
|
|
|
|
|
|
|
|
const TQString &getURL() const { return m_URL; }
|
|
|
|
const SoundFormat &getSoundFormat() const { return m_SoundFormat; }
|
|
|
|
int getBufferSize() const { return m_BufferSize; }
|
|
|
|
|
|
|
|
void setURL(const TQString &);
|
|
|
|
void setSoundFormat(const SoundFormat &);
|
|
|
|
void setBufferSize(size_t buffer_size);
|
|
|
|
|
|
|
|
bool startPlayback();
|
|
|
|
bool stopPlayback();
|
|
|
|
|
|
|
|
bool startCapture(const SoundFormat &proposed_format,
|
|
|
|
SoundFormat &real_format,
|
|
|
|
bool force_format);
|
|
|
|
bool stopCapture();
|
|
|
|
|
|
|
|
|
|
|
|
void playData(const char *data, size_t size, size_t &consumed_size);
|
|
|
|
bool hasRecordedData() const;
|
|
|
|
void lockData(const char *&data, size_t &size, SoundMetaData &meta_data);
|
|
|
|
void removeData(size_t);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
|
|
|
|
void slotReadData (TDEIO::Job *job, const TQByteArray &data);
|
|
|
|
void slotWriteData (TDEIO::Job *job, TQByteArray &data);
|
|
|
|
void slotIOJobResult (TDEIO::Job *job);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
void logStreamError(const KURL &url, const TQString &s);
|
|
|
|
void logStreamWarning(const KURL &url, const TQString &s);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
bool startGetJob();
|
|
|
|
bool startPutJob();
|
|
|
|
|
|
|
|
|
|
|
|
TQString m_URL;
|
|
|
|
SoundFormat m_SoundFormat;
|
|
|
|
|
|
|
|
size_t m_BufferSize;
|
|
|
|
RingBuffer m_Buffer;
|
|
|
|
|
|
|
|
unsigned m_OpenCounter;
|
|
|
|
TQ_UINT64 m_StreamPos;
|
|
|
|
time_t m_StartTime;
|
|
|
|
|
|
|
|
size_t m_SkipCount;
|
|
|
|
|
|
|
|
TDEIO::TransferJob *m_TDEIO_Job;
|
|
|
|
bool m_capturing;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|