CRI Sofdec
Last Updated: 2024-09-25 20:36 p
|
本項では、Sofdec ライブラリが取り扱うエラーの種別や、エラー検知の方法について説明します。
基本的にはADXライブラリと同様ですが、ハンドルがエラー状態になった時の対処に注意してください。
エラーには、大きく分けて以下の2種類があります。
致命的なエラーとしては、関数に不正なアドレスが渡されたり、メモリ不足で処理が継続できない場合等があげられます。
これに対し、起こり得るエラーとしては、デバイスの読み込みエラー(ディスクが抜かれていてファイルオープンできないなど)があげられます。
CRIミドルウェアでは、これら2種類のエラーに対し、それぞれいかに示すエラー検知方法を提供しています。
致命的なエラーを検知する仕組みとして、CRI Baseライブラリに CRI Error API が用意されています。
CRI Error は、CRI製のライブラリで共通に利用可能な、エラー処理専用のAPI群です。
Sofdecライブラリに限らず、ADXライブラリやCRI File Systemライブラリ等、エラー処理にCRI Errorを使用しているライブラリ群に関しては、 共通の手続きでエラー情報を取得可能です。
CRI Error は致命的なエラーを検知する方法として、"コールバック関数によるエラー通知"の仕組みを用意しています。
criErr_SetCallback 関数にエラーコールバック関数を設定することで、 致命的なエラーを検知することができます。
コールされた関数には、エラーの原因を特定するために必要な情報(文字列など)が渡されます。
コールバック関数を使用してエラーをハンドリングする場合、処理の流れは以下のようになります。
具体的なソースコードは、以下ようになります。
「致命的エラー」とは別に、ディスクの読み込みエラー等の「起こり得るエラー」があります。
Sofdec ライブラリでは、起こり得るエラーの検知には"ステータスのチェック"を使用します。
CriManaPlayer 等、使用中にエラーが起き得るモジュールについては、 criManaPlayer_GetStatus 関数のような、ステータスを取得する関数が用意されています。
CriManaPlayer で再生を行った際に、指定されたファイルが存在しない場合や、リードエラーが起きて読み込みに失敗した場合、 criManaPlayer_GetStatus 関数が CRIMANAPLAYER_STATUS_ERROR を返します。
ユーザーは定期的にCriManaPlayerHn のステータスをチェックすることで、エラーの発生を検知することが可能です。
CriManaPlayer ハンドルの状態がエラーになった場合は、そのままハンドルを破棄したり、別のムービーを再生したりすることは出来ません。
criManaPlayer_Stop 関数を呼び出して、ハンドル状態を CRIMANAPLAYER_STATUS_STOP に遷移するのを待ってから次の処理に進んでください。