#include <EventHistoryManager.hpp>
Public 型 | |
typedef boost::shared_ptr < HarmonicSound > | HarmonicSoundPtr |
typedef std::vector < HarmonicSoundPtr > | HarmonicSoundVector |
typedef boost::shared_ptr < HarmonicSoundVector > | HarmonicSoundVectorPtr |
typedef boost::tuple< EventID, Band, NSDimensionPromise::Angle > | UpdateInfo |
Public メソッド | |
EventHistoryManager () | |
void | CheckSoundHistory (HarmonicSoundVectorPtr sounds, const timeval ¤tTime) |
ヒストリーを調べ、soundsの要素にイベントIDを割り振る. | |
void | CheckSoundHistory (boost::shared_ptr< std::vector< NSDimensionPromise::Angle > > directions, const timeval ¤tTime) |
void | SetValidPausePeriod (const timeval &validPausePeriod) |
有効なPAUSE期間を設定する. | |
void | SetNearDirectionThreshold (NSDimensionPromise::Angle nearDirectionThreshold) |
近い音だと判断する角度の範囲を設定する. | |
const std::list< EventHistory > & | GetAllEvents () const |
void | SetEventUpdateRatioThreshold (double threshold) |
Private メソッド | |
void | Update (std::vector< UpdateInfo > &updateInfoList, const timeval ¤tTime) |
EventID | FindNearestEvent (Band fundamental, NSDimensionPromise::Angle direction, const timeval ¤tTime) |
与えられた基音と方向に一番近いイベントを見つける. | |
bool | IsNear (NSDimensionPromise::Angle dir1, NSDimensionPromise::Angle dir2) |
二つの方向が十分近いかどうか. | |
void | EraseOutOfDateEvents () |
既に終了したイベントをリストから消去する. | |
void | MakeNewEvents (std::vector< UpdateInfo > &updateInfoList, const timeval ¤tTime) |
イベントIDが割り当てられていないものに対し、新しいイベントを生成し割り当てる. | |
EventID | MakeNewEvent (const timeval ¤tTime, Band fundamental, NSDimensionPromise::Angle direction) |
新しいイベントを生成し、管理リストに追加する. | |
EventID | NextEID () |
次の未使用のイベントIDを生成する. | |
Private 変数 | |
Logger & | logger |
std::list< EventHistory > | eventHistories |
イベントヒストリー一覧(有効なイベントのみ格納している) | |
NSDimensionPromise::Angle | nearDirectionThreshold |
二つの方向が近いかどうかを決める閾値. | |
timeval | validPausePeriod |
PAUSE状態が続いても、一つの有効なイベントだとみなす期間. | |
int | headid |
現在の最大イベントID | |
double | eventUpdateRatioThreshold |
イベントの更新頻度の閾値(これ以下になるとイベント終了) |
typedef boost::shared_ptr<HarmonicSound> NSHarkBinaural::EventHistoryManager::HarmonicSoundPtr |
typedef std::vector<HarmonicSoundPtr> NSHarkBinaural::EventHistoryManager::HarmonicSoundVector |
typedef boost::shared_ptr<HarmonicSoundVector> NSHarkBinaural::EventHistoryManager::HarmonicSoundVectorPtr |
typedef boost::tuple<EventID, Band, NSDimensionPromise::Angle> NSHarkBinaural::EventHistoryManager::UpdateInfo |
NSHarkBinaural::EventHistoryManager::EventHistoryManager | ( | ) |
void NSHarkBinaural::EventHistoryManager::CheckSoundHistory | ( | HarmonicSoundVectorPtr | sounds, | |
const timeval & | currentTime | |||
) |
ヒストリーを調べ、soundsの要素にイベントIDを割り振る.
void NSHarkBinaural::EventHistoryManager::CheckSoundHistory | ( | boost::shared_ptr< std::vector< NSDimensionPromise::Angle > > | directions, | |
const timeval & | currentTime | |||
) |
void NSHarkBinaural::EventHistoryManager::EraseOutOfDateEvents | ( | ) | [private] |
既に終了したイベントをリストから消去する.
EventID NSHarkBinaural::EventHistoryManager::FindNearestEvent | ( | Band | fundamental, | |
NSDimensionPromise::Angle | direction, | |||
const timeval & | currentTime | |||
) | [private] |
与えられた基音と方向に一番近いイベントを見つける.
const std::list<EventHistory>& NSHarkBinaural::EventHistoryManager::GetAllEvents | ( | ) | const [inline] |
bool NSHarkBinaural::EventHistoryManager::IsNear | ( | NSDimensionPromise::Angle | dir1, | |
NSDimensionPromise::Angle | dir2 | |||
) | [private] |
二つの方向が十分近いかどうか.
EventID NSHarkBinaural::EventHistoryManager::MakeNewEvent | ( | const timeval & | currentTime, | |
Band | fundamental, | |||
NSDimensionPromise::Angle | direction | |||
) | [private] |
新しいイベントを生成し、管理リストに追加する.
void NSHarkBinaural::EventHistoryManager::MakeNewEvents | ( | std::vector< UpdateInfo > & | updateInfoList, | |
const timeval & | currentTime | |||
) | [private] |
イベントIDが割り当てられていないものに対し、新しいイベントを生成し割り当てる.
updateInfoListの中で、get<0>(updateInfoList[i]).IsConnected() == false であるi番目の要素に、新しくイベントを生成して代入する。
EventID NSHarkBinaural::EventHistoryManager::NextEID | ( | ) | [private] |
次の未使用のイベントIDを生成する.
void NSHarkBinaural::EventHistoryManager::SetEventUpdateRatioThreshold | ( | double | threshold | ) | [inline] |
void NSHarkBinaural::EventHistoryManager::SetNearDirectionThreshold | ( | NSDimensionPromise::Angle | nearDirectionThreshold | ) | [inline] |
近い音だと判断する角度の範囲を設定する.
実際には、この角度の2倍の角度に含まれる音は近いと判断する
void NSHarkBinaural::EventHistoryManager::SetValidPausePeriod | ( | const timeval & | validPausePeriod | ) | [inline] |
有効なPAUSE期間を設定する.
デフォルト値は1秒
void NSHarkBinaural::EventHistoryManager::Update | ( | std::vector< UpdateInfo > & | updateInfoList, | |
const timeval & | currentTime | |||
) | [private] |
std::list<EventHistory> NSHarkBinaural::EventHistoryManager::eventHistories [private] |
イベントヒストリー一覧(有効なイベントのみ格納している)
double NSHarkBinaural::EventHistoryManager::eventUpdateRatioThreshold [private] |
イベントの更新頻度の閾値(これ以下になるとイベント終了)
int NSHarkBinaural::EventHistoryManager::headid [private] |
現在の最大イベントID
二つの方向が近いかどうかを決める閾値.
timeval NSHarkBinaural::EventHistoryManager::validPausePeriod [private] |
PAUSE状態が続いても、一つの有効なイベントだとみなす期間.