В конце в комментарии к функции написано, что когда плеер достигает конца, то state устанавливается в pause. Такого не происходит.
Есть такие состояния.
/** Playback states */ #define SL_PLAYSTATE_STOPPED (( SLuint32) 0x00000001) #define SL_PLAYSTATE_PAUSED ( ( SLuint32) 0x00000002) #define SL_PLAYSTATE_PLAYING ( ( SLuint32) 0x00000003)
И после завершения проигрывания он всё равно в SL_PLAYSTATE_PLAYING. Хотя в linux OpenAL тоже имеет функцию получить состояние источника (плеера), и всё нормально работает.
Может кто работал с этим, что может быть?
Всё, решил проблему, надо было зарегистрировать callback, но почему get state не работает, не понятно.
(*playerItf)->SetCallbackEventsMask ( playerItf, SL_PLAYEVENT_HEADATEND); ( *playerItf)->RegisterCallback ( playerItf, callback_player, this);
Тема в архиве.