![]() |
hamigaki::audio::basic_background_player —
basic_background_player
はhamigaki::iostreams::background_copy
をオーディオ操作用に改良したものである。
template<typename ExceptionStorage = hamigaki::thread::exception_storage> class basic_background_player { public: // construct/copy/destruct basic_background_player(); template<typename Source, typename Sink> basic_background_player(const Source&, const Sink&, std::streamsize = boost::iostreams::default_device_buffer_size); ~basic_background_player(); // modifiers template<typename Source, typename Sink> void open(const Source&, const Sink&, std::streamsize = boost::iostreams::default_device_buffer_size); void close(); void play(); void stop(); // queries bool operator!() const; bool playing(); std::streampos tell(); std::streampos seek(boost::iostreams::stream_offset, std::ios_base::seekdir); };
basic_background_player
は次に示す3つの状態をとる。
basic_background_player
construct/copy/destructbasic_background_player();
Postconditions: 状態=空
template<typename Source, typename Sink> basic_background_player(const Source& src, const Sink& sink, std::streamsize buffer_size = boost::iostreams::default_device_buffer_size);
Effects:
open(src, sink, buffer_size)
Postconditions:
状態=停止中
~basic_background_player();
Effects:
stop()
を呼び出す。
basic_background_player
modifierstemplate<typename Source, typename Sink> void open(const Source& src, const Sink& sink, std::streamsize buffer_size = boost::iostreams::default_device_buffer_size);
Requires:
状態=空
Effects:
src
から読み込んだデータをdest
に書き出すスレッドを起動する。
Postconditions:
状態=停止中
void close();
Requires:
状態=停止中
Effects:
basic_background_player
の保持するSource/Sinkの対を破棄する。
Notes:
再生中の場合は、Source/Sinkの対を破棄する前にstop()
が呼び出される。
Postconditions:
状態=空
void play();
Requires:
状態=停止中
Effects:
再生を開始する。
Postconditions:
状態=再生中
void stop();
Requires:
状態=再生中または停止中
Effects:
copy()
により作成されたスレッドをキャンセルし、その終了を待つ。
Notes:
この関数はスレッドの終了を待つため、ブロックする。
Postconditions:
状態=停止中
basic_background_player
queriesbool operator!() const;
Returns:
状態=空の場合true
bool playing();
Returns:
再生中かどうか
Notes:
この関数は、コピーが完了している場合はスレッドの終了を待つ。
Postconditions:
true
を返した場合、状態=再生中。それ以外の場合、状態=停止中
std::streampos tell();
Requires:
状態=再生中または停止中
Returns:
入力デバイスsrc
がInput-seekableならば、入力ヘッドの位置。それ以外の場合は、-1。
Notes:
コピーが完了あるいは中断された後も、次にclose()
を呼ぶまで値は保持される。
std::streampos seek(boost::iostreams::stream_offset off, std::ios_base::seekdir way);
Requires:
状態=停止中
Effects:
入力デバイスsrc
がInput-seekableならば、boost::iostreams::seek(src, off, way, std::ios_base::in)
を呼び出す。
Returns:
入力デバイスsrc
がInput-seekableならば、入力ヘッドの位置。それ以外の場合は、-1。
製作著作 © 2006 Takeshi Mouri |