Я написал музыкальный плеер с использованием OpenSL ES. Он отлично работает, кроме одного предупреждающего сообщения, выходящего из библиотеки libOpenSLES
. Вот сообщение.Сообщение «Missed SL_PLAYEVENT_HEADATNEWPOS for position»
03-05 00:10:15.367: W/libOpenSLES(12055): Missed SL_PLAYEVENT_HEADATNEWPOS for position 7000; current position 724009
...
03-05 00:10:27.226: W/libOpenSLES(12055): Missed SL_PLAYEVENT_HEADATNEWPOS for position 329015; current position 816013
Это происходит, когда я ищу медиа-трек. Иногда я могу искать без предупреждения, иногда сообщение появляется в журнале.
Реализация очень проста. При инициализации я подбираю контроль поиска.
SLObjectItf decoder;
SLSeekItf seek;
...
SLresult result = (*decoder)->GetInterface(decoder, SL_IID_SEEK, &seek);
Затем позже, когда пользователь изменяет отслеживать положение, я называю SetPosition
метод следующим образом.
SLresult result = (*seek)->SetPosition(seek, position, SL_SEEKMODE_ACCURATE);
Оба вызова возвращают результат успеха, а также изменение положения работает все время. Единственная проблема - это предупреждающее сообщение, упомянутое выше.
Любые идеи, почему это сообщение приходит и как его избежать?
Update:
Хотя половина щедрот автоматически назначается, вопрос не ответил. Мы не знаем, что вызывает проблему и как ее избежать.
У меня также есть исходный код, и я интерпретировал комментарии так же, как и вы. Вопрос в том, как этого избежать? –
Обновлен мой ответ, извините за то, что не прочитал вопрос в полном объеме. – Magnus
Спасибо, что посмотрели на это. Это происходит даже тогда, когда я устанавливаю позицию только один раз. Я подозреваю, что это связано с тем, что когда я вызываю SetPosition, поток событий или декодера блокируется некоторое время. Это приводит к устаревшему состоянию позиции в проигрывателе. Несмотря на то, что это просто предупреждение и репозиционирование, - как я уже упоминал в вопросе, это предупреждение, которое не появляется в стандартном музыкальном проигрывателе, который использует тот же API. У меня просто плохое чувство, что я использую что-то не совсем правильное или каким-то образом оно предназначалось прежде всего для использования, вот почему вопрос. –