hamigaki.png

前のページ 上に戻る ホーム 次のページ

Class template basic_background_player

hamigaki::audio::basic_background_player —

basic_background_playerhamigaki::iostreams::background_copyをオーディオ操作用に改良したものである。

Synopsis

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();
  std::streampos seek(boost::iostreams::stream_offset, std::ios_base::seekdir);

  // queries
  bool operator!() const;
  bool playing();
  std::streampos tell();
};

Description

basic_background_playerは次に示す3つの状態をとる。

空(empty)
再生対象となるSource/Sinkが設定されていない
再生中(playing)
再生操作のためスレッドが動作している
停止中(stopping)
再生が完了したか中断された

[注意] 注意
多くの場合、Source/Sinkはコピーコンストラクタおよびコピー代入演算子によって複製されると、複製元と複製先でデバイスの状態を共有する。このような共有情報を複製元のデバイスを通して変更してはならない。

basic_background_player construct/copy/destruct

  1. basic_background_player();
    Postconditions: 状態=空
  2. 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: 状態=停止中
  3. ~basic_background_player();
    Effects: stop()を呼び出す。

basic_background_player modifiers

  1. template<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: 状態=停止中
  2. void close();
    Requires: 状態=停止中
    Effects: basic_background_playerの保持するSource/Sinkの対を破棄する。
    Notes: 再生中の場合は、Source/Sinkの対を破棄する前にstop()が呼び出される。
    Postconditions: 状態=空
  3. void play();
    Requires: 状態=停止中
    Effects: 再生を開始する。
    Postconditions: 状態=再生中
  4. void stop();
    Requires: 状態=再生中または停止中
    Effects: copy()により作成されたスレッドをキャンセルし、その終了を待つ。
    Notes: この関数はスレッドの終了を待つため、ブロックする。
    Postconditions: 状態=停止中
  5. 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。

basic_background_player queries

  1. bool operator!() const;
    Returns: 状態=空の場合true
  2. bool playing();
    Returns: 再生中かどうか
    Notes: この関数は、コピーが完了している場合はスレッドの終了を待つ。
    Postconditions: trueを返した場合、状態=再生中。それ以外の場合、状態=停止中
  3. std::streampos tell();
    Requires: 状態=再生中または停止中
    Returns: 入力デバイスsrcがInput-seekableならば、入力ヘッドの位置。それ以外の場合は、-1。
    Notes: コピーが完了あるいは中断された後も、次にclose()を呼ぶまで値は保持される。
製作著作 © 2006-2008 Takeshi Mouri

前のページ 上に戻る ホーム 次のページ