[OSASK 6375] Re: playcd0c.

  こんにちは、川合です。


Hidemi KAWAI は 2003/08/03 14:00:01 の「[OSASK 6373] playcd0c.」
で書きました:

>  このplaycd0cではあっきぃさんのマシンでのCD再生ができそうな雰囲
>気です。ということで、今まで動かなかった人も動作報告ページの表を
>見ながら、そろそろやってみようかな、とかを検討したり、いやまだ様
>子見だなとかを検討してください。
>
>  動作報告:
>    http://remo.s10.xrea.com/osawiki/pukiwiki.php?playcd0_report

  あっきぃさんが自分のマシンで動いたのに気をよくして、なにやらオ
リジナルCDプレイヤを作りたいみたいなので、今から適当にplaycd0cの
テクニカルドキュメントを作ります。

---

  とりあえず、playcd0c.cの中のOsaskMain()以下を自由に書き換えて
ください。

関数一覧:
  int testatapi(int drv, int *buf);
  UCHAR testdrive(UCHAR drv, UCHAR status, UCHAR *buf);
  int playaudio(int drv, int len, int lba);
  int pauseresume(int drv, UCHAR flag);

それぞれの関数の意味&使い方:

  testatapi()は指定されたドライブがATAPIデバイスなのかどうかをチ
ェックします。bufには1024バイトの作業用バッファを与えてください
。ATAPIデバイスだと認識すると、0が返ってきます。0以外が返ってき
たら失敗です(番号によって失敗の原因が分かる)。これが成功したら
自分で変数statusを1にしてください。

  testdrive()は指定したドライブの状態をチェックします。bufには
1024バイトの作業バッファを与えてください。無事にプレイリストが取
得できた場合、このbufに格納されます。返ってきた値をstatusに代入
してやってください。たぶんbufはint buf[1024 / 4];で宣言している
ことと思いますので、(UCHAR *)でキャストしてやってください。返っ
てきたプレイリストはこのようになっています。
  buf[1] : 1曲目のトラック番号と演奏開始位置
  buf[2] : 1曲目の属性
  buf[3] : 2曲目のトラック番号と演奏開始位置
  buf[4] : 2曲目の属性
  buf[5] : 3曲目のトラック番号と演奏開始位置
  buf[6] : 3曲目の属性
以下ずっと続きます。トラック番号0xaaが見付かったらおしまいです。
トラック番号0xaaの演奏開始位置=CDの最後になっています。
  lba = buf[1] & 0x00ffffff;とやると、演奏開始位置が取り出せます
。trk = (buf[1] >> 24) & 0xff;とやるとトラック番号が取り出せます
。属性はattr = (buf[2] >> 24) & 0xff;です。
  なお、buf[255]にはトラック番号0xaaの演奏開始位置のコピーが入っ
ています。testdrive()の返値が3以上なら、bufにプレイリストが入っ
ています。

  playaudio()は、演奏開始コマンドをドライブに送ります。statusが3
以上のときだけ送ってください。無事にコマンドが送れたら、playaudi
o()関数は0を返します。そのときはstatusを4にするといいでしょう。
lenは演奏時間で、lbaは演奏開始位置です。ちなみに、lenやlbaですが
こういう単位になっています。len=75で1秒です。len=75*60で1分。lba
も75を加えれば1秒先から演奏できます。もちろん、lenやlbaが負にな
ったりしてはいけません。

  pauseresume()は演奏の一時停止と、再開を制御します。要求が成功
すると関数は0を返します。flagが0なら一時停止、1なら停止していた
演奏の再開です。鳴っていないときに一時停止するとか、停止していな
いときに再開するとか、そういうドライブが混乱する状況にならないよ
うに制御してください(playcd0c.cでは、statusで制御しています)。

---

  まあ分かんないことがあったら、聞いてください。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/



ML番号でジャンプ
ML単語検索