При воспроизведении видео файла, мы можем увеличить скорость только до 2х, вместо 4х, как раньше.
Аналогично и при воспроизведении аудио файлов - только до 2х.
Вывод: сейчас выше 2х скорость не увеличивается.
Идем дальше...
1. Открываем любой аудио файл, например . mp3
2. Увеличиваем скорость до 2х
3. после 2х еще только один раз увеличиваем скорость
В результате, скорость воспроизведения станет еще быстрее, но плеер по прежнему говорит нам 2х, хотя должно быть выше.
Идем дальше... (обратное действие) - уменьшение скорости воспроизведения
1. Открываем любой аудио файл, например . mp3
2. Увеличиваем скорость до 2х
3. Уменьшаем скорость до 1х
В результате, плеер говорит нам, что скорость = 1х, но на самом деле это не так, это даже слышно и заметно
4. Уменьшаем скорость до 0.5х
В результате, скорость 0.5 = скорости 1.0х
5. Снова увеличиваем с 0.5х до 1.0х
В результате, скорость воспроизведения 1.0х = скорости 0.5х
И так далее...
Общий вывод: фактически, у нас поломка настолько сильная, что скорости воспроизведения не соответствуют тем, что показывает нам плеер + вдобавок еще и выше 2х скорость не увеличивается, а точнее увеличивается, но плеер это не показывает, так и оставляет 2.х
1 - с WASAPI выводом все отлично.
2 - с DS у меня проблемы только с понижением, после понижения если вернуть обратно на 1.0х то она медленнее, с повышением все нормально, у меня до 4.0х увеличивается. И - если оно и поломано, то тут вопросы к драйверам своей звуковушки возможно(тем более что если скорость меняется а проигрыватель не отображает - это значит что вызов функции задания скорости вернула ошибку - но в самом DS выводе скорость изменилась).
Это когда успело сломаться? У меня ускоряет до 4x (билд 1093).
Цитата: Aleksoid19781 - с WASAPI выводом все отлично.
2 - с DS у меня проблемы только с понижением, после понижения если вернуть обратно на 1.0х то она медленнее, с повышением все нормально, у меня до 4.0х увеличивается. И - если оно и поломано, то тут вопросы к драйверам своей звуковушки возможно(тем более что если скорость меняется а проигрыватель не отображает - это значит что вызов функции задания скорости вернула ошибку - но в самом DS выводе скорость изменилась).
Aleksoid1978:1. С WASAPI - согласен, все в порядке, как при увеличении, так и при уменьшении и обратном увеличении
2. С DirectSound - беда и дело здесь вовсе не в драйверах к аудио картам.
А) При максимальном увеличении 4х скорости воспроизведения, сам видео файл воспроизводится рывками, т.е. периодически происходят рывки и ступоры видео кадров. На WASAPI такого нет, следовательно, теряется плавность и стабильность воспроизведения, при увеличенных скоростях воспроизведения.
Для сравнения:WASAPI - при 4х, частота кадров видео = 119.87 FPS ~ 120 FPS
DirectSound - при 4х, частота кадров видео = 27, 43, 66 FPS, т.е. скачет, как сумасшедшая. аналогично и при 2х.
Б) Драйверы последних версий, тестировал на всех системах с XP по Windows 10 на разных аудио картах.
Если взять только новые системы с Win7 по Win10, то увеличение работает до 4х на любой аудиокарте, как при WASAPI, так и при DirectSound -аудио-рендерерах.
А вот на XP - странность, DirectSound может больше, плеер показывает только 2х, тот же ReClock без проблем выжимает аж до 8х.
В общем, согласен с тем, что проблема - именно с понижением скорости воспроизведения, если вернуть обратно на 1.0х, то это явно не 1.0х скорость воспроизведения.
Также проблемы с плавностью воспроизведения (с частотой кадров FPS) на DirectSound при скоростях 2х и 4х.
Она скачет, как безумная, то с 66 до 27, то с 27 на 44 и т.д. Такое чувство что вообще не работает синхронизация видео с аудио.
1 - проверь в других проигрывателях. Если везде хорошо а у нас плохо - есть о чем призадуматься. Но что-то я в это не верю :)
Цитата: Aleksoid19781 - проверь в других проигрывателях. Если везде хорошо а у нас плохо - есть о чем призадуматься. Но что-то я в это не верю :)
У нас явно - нехорошо, особенно если использовать увеличенные скорости воспроизведения на DirectSound-аудио-рендерере.
Тут как бы, фактически, - два неприятных бага:
1. Некорректность воспроизведения, при уменьшении скоростей воспроизведения (например с 4х на 1х и т.д.)
2. Потеря плавности воспроизведения на 2х и 4х, при использовании DirectSound-аудио-рендерера.
[merge_posts_bbcode]Добавлено: 2016-01-12 10:43:17[/merge_posts_bbcode]
Цитата: V0ltЭто когда успело сломаться? У меня ускоряет до 4x (билд 1093).
Скажу сразу - достаточно давно уже.
Эх, это моя вина, надо было раньше отписаться про этот баг, простите, что я затянул с ним.
Я стараюсь постепенно отписываться о проблемах, хотя бы по одной - две, чтобы не сильно вас загружать и отвлекать, уважаемые разработчики.
Ведь я еще летом 2015 года заметил его.
Так - проблему идентифицировал. Дело во встроенном аудио-декодере. Замена на LAV избавляет от проблемы.
Мы в нашем декодере не учитываем показатель dRate при расчете временных меток. Завтра уже гляну и думаю подправлю.
Цитата: Aleksoid1978Так - проблему идентифицировал. Дело во встроенном аудио-декодере. Замена на LAV избавляет от проблемы.
Мы в нашем декодере не учитываем показатель dRate при расчете временных меток.
Аналогично и я заменил на LAV Audio и проблемы не стало.
Дело в фильтрах, а точнее все зависит от используемых аудио декодеров.
В разных плеерах они разные, следовательно в них проблемы может и не быть вовсе.
Частично исправил в 1097.
Осталось понять почему при повышении скорости от значения меньше 1.0 до 1.0 скорость не восстанавливается полностью - это на DS выводе.
Цитата: Aleksoid1978Частично исправил в 1097.
Абсолютно неправильное изменение.
(С) Evgeniy1990
Цитата: V0ltАбсолютно неправильное изменение.
(С) Evgeniy1990
V0lt, я собрал и проверил SVN-билд 1098 - в нем вообще нет никакой разницы, при использовании DirectSound-аудио-рендерера.
Алгоритм воспроизведения такой:Условие: используется
DirectSound Audio Renderer.
1. Запустил видео файл
2. Увеличил скорость с 1.0х до 1.2х
В результате, скорость так и осталась 1.0х
3. Еще раз увеличил скорость с 1.2х до 1.5х
В результате, плеер показывает 1.5х, но на самом деле - это 1.2.х, т.е. 24х1.2= 28.8
И так далее...По сути, скорость воспроизведение начинает меняться только через 1 раз (один шаг).
Это естественно - неправильно, т.е. баг.
Прямое действие - скорость воспроизведения увеличивается через 1 раз, т.е.:
1 раз - увеличить скорость
Фактически:
1.0х -> 1.0xОжидал:
1.0х -> 1.2х2 раз - увеличить скорость
Фактически:
1.0х -> 1.2xОжидал:
1.2х -> 1.5х3 раз - увеличить скорость
Фактически:
1.2х -> 1.5xОжидал:
1.5х -> 2.0х4 раз - увеличить скорость
Фактически:
1.5х -> 2.0xОжидал:
2.0х -> 4.0хОбратное действие - полностью аналогично прямому, т.е. скорость воспроизведения уменьшается через 1 раз:
1 раз - уменьшить скорость
Фактически:
4.0х -> 4.0xОжидал:
4.0х -> 2.0х2 раз - уменьшить скорость
Фактически:
4.0х -> 2.0xОжидал:
2.0х -> 1.5х3 раз - уменьшить скорость
Фактически:
2.0х -> 1.5xОжидал:
1.5х -> 1.2х4 раз - уменьшить скорость
Фактически:
1.5х -> 1.2xОжидал:
1.2х -> 1.0хИ так далее...Если увеличить скорость до максимума, т.е. до 4.0х, а потом нажать "Сбросить скорость", то скорость воспроизведения так и остается 4.0х, вместо 1.0х, как предполагалось и ожидалось.
Сбросить скорость:Фактически:
4.0х -> 4.0xОжидал:
4.0х -> 1.0x
Цитата: Evgeniy1990Что значит "неправильное"?
Может ты хотел спросить
почему неправильное?
Имхо, если и делать такие грубые хаки, то точно не в аудиодекодере. Надо откатывать.
Цитата: V0ltМожет ты хотел спросить почему неправильное?
Да, я так и хотел спросить, просто меня удивил ваш ответ.
Цитата: V0ltИмхо, если и делать такие грубые хаки, то точно не в аудиодекодере. Надо откатывать.
Я уже написал в посте выше, что я собрал и проверил SVN-билд 1098, в нем по сравнению с 1092, вообще ничего не изменилось, как было так и осталось.
По сути, я согласен с вами, изменение не работает вообще, совершенно нет никакой разницы, при использовании DirectSound Audio Renderer.
В посте выше я расписал что у нас сейчас происходит, при использовании DirectSound Audio Renderer, а также, как правильно должно быть, т.е. то, что предполагается и то, чего ожидает пользователь.
То же самое и для скоростей воспроизведения ниже 1.0х:
1 раз - увеличить скорость
Фактически:
1.0х -> 1.0xОжидал:
1.0х -> 0.5х2 раз - увеличить скорость
Фактически:
1.0х -> 0.5xОжидал:
0.5х -> 0.25х3 раз - увеличить скорость
Фактически:
0.5х -> 0.25xОжидал:
0.25х -> 0.125хИ аналогично, обратное действие - с 0.125х до 1.0х.
С чего это моё решение неправильное и неработающее?? Аргументы?? И впредь - я уже не раз говорил чтобы мои изменения не откатывать. По крайней мере без обсуждения со мной. Или я просто закрываю доступ на запись в svn. Ибо достало такое отношение.
Почему то у меня стало работать
[merge_posts_bbcode]Добавлено: 2016-01-13 09:05:09[/merge_posts_bbcode]
А вот по поводу того что изменение скорости делается "с запозданием" - согласен, есть такой косяк - буду смотреть. Но самое главное что мое изменение избавило от рывков и косяков проигрывания.
P.S. Нашел причину изменения скорости "с запозданием" - буду думать как побороть :)
[merge_posts_bbcode]Добавлено: 2016-01-13 10:50:43[/merge_posts_bbcode]
Так - предлагаю тестовый билд https://yadi.sk/d/cs5F8N5VmrMkW
Так же просьба проверить его и на WinXP.
Цитата: Aleksoid1978С чего это моё решение неправильное и неработающее?? Аргументы??
Неправильное потому что хак, если и работающий, то лишь в определенных случаях. Если такое есть в LAV, то это вовсе не значит, что его надо тащить в наш код.
Про неработающее
Evgeniy1990 расписал.
Цитата: Aleksoid1978Так - предлагаю тестовый билд https://yadi.sk/d/cs5F8N5VmrMkW
Так же просьба проверить его и на WinXP.
Проверил тестовый билд на Windows XP и Windows 10.
Теперь скорость воспроизведения увеличивается и уменьшается вовремя, т.е. сразу, после одного нажатия действия - увеличить, или уменьшить скорость.
1 раз - увеличить скорость
1.0х -> 1.2х2 раз - увеличить скорость
1.2х -> 1.5х3 раз - увеличить скорость
1.5х -> 2.0х4 раз - увеличить скорость
2.0х -> 4.0хАналогично работает и обратное действие - уменьшить скорость:
1 раз - уменьшить скорость
4.0х -> 2.0х2 раз - уменьшить скорость
2.0х -> 1.5х3 раз - уменьшить скорость
1.5х -> 1.2х4 раз - уменьшить скорость
1.2х -> 1.0хТакже, теперь сброс скорости воспроизведения работает сразу, например:
4.0x -> 1.0xСкорости меньше 1.0х меняются сразу, т.е. при первом нажатии действия:
1 раз - уменьшить скорость
1.0х -> 0.5х2 раз - уменьшить скорость
0.5х -> 0.25х3 раз - уменьшить скорость
0.25х -> 0.125хИ аналогично, теперь сразу, с первого раза, работает и обратное действие - с
0.125х до 1.0х.
В общем:1. Исправлено воспроизведение видео и аудио файлов, при увеличенных и уменьшенных скоростях, т.е. теперь они воспроизводятся плавно и корректно, частоты кадров соответствуют выбранным скоростям воспроизведения.
2. Исправлен выбор скоростей воспроизведения, теперь они меняются с первого раза, а не через один раз, т.е. со второго раза, как это было раньше.
3. Теперь, при изменении скоростей, всегда присутствует плавность, исправлена проблема, когда сами скорости воспроизведения работали некорректно, как попало, то медленнее, то быстрее и т.д.
4. Исправлен давнишний баг с окончанием воспроизведения аудио файлов, при измененных скоростях, т.е. теперь всего аудио, при увеличенных, или уменьшенных скоростях воспроизводятся полностью, шкала прогресса воспроизведения доходит до конца в том случае, если файл уже заканчивает свое воспроизведение, а не как раньше, когда шкала воспроизведения шла быстрее, чем воспроизводились аудио файлы, при измененных скоростях воспроизведения.
В целом, основная проблема полностью устранена, исправлена, также исправлены дополнительные проблемы (баги).
Ваши изменения/исправления полностью готовы к работе. Можете спокойно заливать их в SVN.
Сейчас абсолютно все и полностью работает корректно на все 100%. :)
[merge_posts_bbcode]Добавлено: 2016-01-13 07:00:13[/merge_posts_bbcode]
Цитата: V0ltЦитата: Aleksoid1978С чего это моё решение неправильное и неработающее?? Аргументы??
Неправильное потому что хак, если и работающий, то лишь в определенных случаях. Если такое есть в LAV, то это вовсе не значит, что его надо тащить в наш код.
Про неработающее Evgeniy1990 расписал.
V0lt, хоть это, как вы говорите - хак, но
Aleksoid1978 сделал (добавил) его не случайно.
Он устраняет проблему с рывками изображения во время воспроизведения видео файлов, при измененных скоростях, т.е. при увеличенных, или наоборот - уменьшенных скоростях.
По сути, этот "хак" дает нам плавное воспроизведение видео файлов, при увеличенных, или уменьшенных скоростях.
Да, я сказал, что он работал некорректно, не увидел разницы, только лишь потому, что скорости менялись не сразу, а через один раз, т.е. со второго раза.
Отсюда, этот "хак" работал некорректно, так как частоты кадров видео файлов, при измененных скоростях воспроизведения, просто или не менялись вообще, или просто скакали. Вот почему я и сказал, что изначально не увидел никакой разницы, но она действительно была.
Разница в том, что после этого "хака" появилась плавность, которой нам не хватало.
Цитата: V0ltПро неработающее Evgeniy1990 расписал.
Так к слову - у этого неработающего ноги из другого места растут, ну и если что, так для информации. :)
Цитата: Aleksoid1978Так к слову - у этого неработающего ноги из другого места растут, ну и если что, так для информации. :)
Вот зачем грубить? Я ведь проверяю разные видео и аудио файлы, с разными частотами кадров, вдобавок еще и разные форматы, обращаю внимание на их поведение, при измененных скоростях воспроизведения.
Отсюда и делаю соответствующие выводы.
Я же вам сказал, что вы сделали это изменение, т.е. этот хак - не случайно. Просто он работал у меня не всегда корректно, так как скорости воспроизведения применялись не сразу, в результате чего, плеер начал тупить.
Вот, например, такой был у меня случай:
1. Открыл видео файл с частотой кадров 23.976 ~ 24 FPS
2. 1 раз нажал - увеличить скорость
Ожидал, что скорость должна быть 1.2х, но по факту - так и осталась 1.0х
Что дальше мне сделал плеер, он понял, ага, пользователь выполнил некую команду, надо бы выполнить определенный алгоритм, согласно данной команде, но вместо того, чтобы частоту кадров увеличить до 28.87, он ее наоборот уменьшил до 26.37, в результате возникли рывки, во время воспроизведения, так как частота кадров стала прыгать с 26 до 28, потом до 27 и т.д.
24 х 1.2х = 28.8 FPS
24 х 1.5х = 36 FPS