LINUX.ORG.RU
решено ФорумTalks

Как ведро вообще стало успешным? Это же мусор под капотом.

 


0

1

Оно же под капотом просто отвратный кусок говнокода. Дрисня с BufferQueue, вместо нормальной оконной системы, весь гуй и IPC на Java, местное нативное API для звука (которое AudioTrack) - просто ссанина и мусор, которое не умеет даже перемотку в пределах одного буфера (как будто просто интерфейс к /dev/dsp). Как оно стало успешным?

Жуть, как можно было выбрать это, вместо кайфового OpenMoko с его ламповыми иксами, Миго/сейлфиш с его Qt или даже яблочками, где все сделано очень даже неплохо, судя по отреверсенным либам?

monobogdan1337
() автор топика
Ответ на: комментарий от monobogdan1337

Я ни разу не упомню случая, чтобы на рынке уживались хорошие с технической точки зрения решения — обычно это вообще не играет роли.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Ну оно реально ущербное под капотом, как от этого не плевались ребята, которые портировали андроид на свои чипсеты. Чего только местный HAL и мусорная реализация звука стоит - прям в обход уже существующей ALSA/OSS, давайте высрем свою юзерспейс реализацию микшера)))0

monobogdan1337
() автор топика

Как оно стало успешным?

Оно стало успешным для конечных пользователей, которые ничего не знают ни про дрисню с buffer queue, ни про ссанину audio track. За пользователями подтянулись и разработчики, которым из-за java api тоже не нужно знать про вышеописанную дрисню.

А ты и прочие разработчики альтернативных прошивок не являются клиентами андроида и на вас и ваше удобство всем насрать. Вопросы?

ox55ff ★★★★★
()
Ответ на: комментарий от monobogdan1337

Чтобы был понятен весь бугурт:

В нормальных звуковых подсистемах (waveout/dsound/xaudio) есть две разные концепции: инстанс аудиопотока и сам аудиопоток. В аудиопотоке хранятся ДАННЫЕ. В инстансе аудипотока лишь содержится его состояние (позиция проигрывания, громкость и.т.п), в то время как используются данные из ссылающегося аудиопотока.

Но в ведре эти идиоты вывели в Java AudioTrack, который невозможно склонировать (хочешь еще один такой же звук - создавай еще один AudioTrack и грузи в него данные снова, а т.к это Java - под капотом явно происходят ненужные аллокации и копирования), в который данные нужно гнать для каждого проигрывания звука, сцуко! Горит жёпа сильно.

monobogdan1337
() автор топика
Ответ на: комментарий от ox55ff

которым из-за java api тоже не нужно знать про вышеописанную дрисню.

Нужно, если есть необходимость сделать что-то маломальски низкоуровневое (эффективное проигрывание звука). Я так хотел обойтись без JNI и юзать чисто жабу, но похоже придется звуковую подсистему полностью на крестах писать.

monobogdan1337
() автор топика

Давай, покажи им!

thesis ★★★★★
()

Кто первый успел, тот и успешен. Microsoft пошёл заниматься ерундой с windows phone, PalmOS успешно умер, WebOS ещё не родился, эксперименты нокии так и остались экспериментами, опенмоко — троллейбус из буханки.

PolarFox ★★★★★
()
Ответ на: комментарий от monobogdan1337

Твои проблемы не в api джавы, а то что ты ковыряешься с палеозойскими копролитами, в которых стоят убогие процессоры. Ни разу не встречал проблем со звуком на современных смартах.

ox55ff ★★★★★
()
Ответ на: комментарий от PolarFox

Апи винфона балдежное. Там сразу и асинхронщина удобная, и полноценный DX11 (с feature level 9.3) подвезли и вообще пушечка.

monobogdan1337
() автор топика
Ответ на: комментарий от monobogdan1337

Я все расписал в комменте выше.

Т.е. ситуация ещё хуже - ты не осилил api и просто хочешь, чтобы оно выглядело так как лично тебе хочется.

ox55ff ★★★★★
()
Ответ на: комментарий от monobogdan1337

Конечно ты не осилил. Не помню, чтобы в начале десятых на моих андроид смартфонах заикался звук. А ты полез внутрь и начались какие-то проблемы и дрисня. Почитай ещё раз документацию на api что ли. Может поможет.

ox55ff ★★★★★
()

Просто вендроид уже давно есть и рабоатет, а лоровские гении инженерной мысли проводят вечера паяя говноплатники с алика за 100 рублей, вместо того чтобы написать BogdanOS с нескучными API.

Gary ★★★★★
()
Ответ на: комментарий от ox55ff

Да причем тут заикания? Где про них речь была? Ты понимаешь, что оно под капотом убого сделано? На пальцах попытаюсь объяснить:

  1. У тебя есть игра. В игре бегают солдатики с пистолетами. Допустим, солдатиков 50 на экране и каждый из них стреляет.
  2. Аудиоподсистема не даёт возможности загрузить поток (т.е сами данные) один раз, а заставляет создавать по новому инстансу AudioTrack на каждый звук.
  3. И это казалось бы не проблема, вот только КАЖДОЕ проигрывание звука, нужно записать в буфер сэмплы, а сэмплы, внезапно, берутся из обычного Java-массива.
  4. Из JVM нельзя просто так взять указатель на массив, будто данные там лежат линейно - получаем лишние копирования и аллокации.

Теперь то понял в чем проблема? Ты не замечал этой проблемы, поскольку в большинстве игр звук реализован через порт OpenAL, либо сразу через OpenSLES, т.е фактически нативно, где проблем скинуть звук в микшер нет. Убогий тут именно враппер на Java.

monobogdan1337
() автор топика
Ответ на: комментарий от ox55ff

Если еще чуть подробнее:

У нас есть SoundPool. Вот эта тема вполне могла бы подходить для игр, поскольку у неё есть разделение потока/источника звука. Зато нет метода для получения состояния проигрывания звука и API для загрузки из потоков, а не из ресурсов появилось сильно позже.

monobogdan1337
() автор топика
Ответ на: комментарий от monobogdan1337

Допустим, солдатиков 50 на экране

Ошибка геймдизайна. Если воспроизводить сразу 50 звуков, то получится каша. И от такой игры будет тянуть блевать. Т.е. кейс высосан из пальца и в реальной жизни не встречается.

заставляет создавать по новому инстансу AudioTrack на каждый звук.

Загружай по требованию. Проблемы?

лишние копирования и аллокации

Вся джава это лишние копирования и аллокации. Удивил.

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Вся джава это лишние копирования и аллокации. Удивил.

Лично для меня это говнокод. Я сейчас даже специально чекнул, как это реализовано в одном дедовском фреймворке для игрушек - тоже через SoundPool и тоже фактически нельзя узнать, проигран ли звук или нет. Вот это по настоящему гавно.

monobogdan1337
() автор топика

у меня проблема с ведроидом, что в наушниках звук тихий
на десктопе заметно громче

Ros ★★★★
()
Ответ на: комментарий от monobogdan1337

вместо кайфового OpenMoko с его ламповыми иксами

Иксы никогда нормально не уживались в Embedded и не умели в адекватную картинку, именно потому Google выкинул этот мусор и написал SurfaceFlinger который умеет в высокую герцовку и ускоряется на GPU.

Ламповости в OpenMoko не было. Был знатный пердолинг.

Миго/сейлфиш с его Qt

Вот здесь уже более человеческое получилось. У Qt хороший и приятный API, а не какая-нибудь очередная иксовая хтонь.

Жаль MeeGoo, он был бы неплохим конкурентом Android, если бы Nokia не была мертва.

EXL ★★★★★
()
Ответ на: комментарий от monobogdan1337

Самородок таки дочитал документацию до SoundPool, но всех уже забрызгало.

thesis ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Я ни разу не упомню случая, чтобы на рынке уживались хорошие с технической точки зрения решения — обычно это вообще не играет роли.

Тю, ты посмотри на рынок того же софта, в котором приживается такое говно как:

PHP, X.Org, Bash, C++, CMake и другой плохо спроектированный кал, тогда как технически красивые и главное хорошо оптимизированные решения не взлетают

EXL ★★★★★
()
Ответ на: комментарий от EXL

Так кроме эталонных х11 есть же еще мини-реализации. Пиксельфлингер - сам по себе софтрендер, но это я придираюсь))

monobogdan1337
() автор топика
Ответ на: комментарий от thesis

Он про железный рынок, я про софтварный.

EXL ★★★★★
()
Ответ на: комментарий от monobogdan1337

еще мини-реализации

И зачем нужен какой-то пердолинг с мини-реализациями иксов, если сам X11 как протокол полное говно и с трудом натягивается на Embedded?

EXL ★★★★★
()
Ответ на: комментарий от monobogdan1337

Так а для чего-то серьёзного и критичного к производительности всё равно нужно будет в нативщину уходить. Я думаю большинство игрушек в Google Play строются на различных движках, в которых вещи типа вывода звука в OpenSLES давно проработаны и отлажены.

EXL ★★★★★
()
Ответ на: комментарий от monobogdan1337

реально ущербное под капотом

Каждый первый успешный продакшен проект. Потому что кто первый встал, того и тапки. Пока эти сейлфиши яйца вылизывали и любовались красотами, другие люди без пафоса и рвотного рефлекса просто захватили мир со своим говном. Обтекай.

no-such-file ★★★★★
()
Ответ на: комментарий от ox55ff

Не помню, чтобы в начале десятых на моих андроид смартфонах заикался звук.

Ну так и что-то в духе iOS’овского garage band под андроид в то время было немыслимо. Примитивные приложеньки аля «пианино» имели весьма заметный лаг.

PolarFox ★★★★★
()
Ответ на: комментарий от no-such-file

Ай, да не в том дело, что кто-то вылизывал яйца. Просто в то время все, буквально все, настолько неистово и яростно наяривали на гугло, что всем было совершенно плевать на кишки и прочее.
Есть растущий рынок мобил, есть инфраструктура для создания-публикации-продажи приложенек, есть поддержка этого от жирнейшего и моднейшего ынтерпрайза, чо встали, епта, давай-давай.

Ты мог тридцать три раза встать раньше гугля, но тебя бы никто не заметил.

thesis ★★★★★
()

Ну помоги писать идельный Hurd) Правильный ответ - так сложилось,в нужное время в нужном месте и тд. Его (linux) вообще как времянку планировали взять изначально.

Dog ★★★
()
Ответ на: комментарий от monobogdan1337

инстанс аудиопотока и сам аудиопоток. В аудиопотоке хранятся ДАННЫЕ. В инстансе аудипотока лишь содержится его состояние (позиция проигрывания, громкость и.т.п), в то время как используются данные из ссылающегося аудиопотока.

Так есть же OpenSL. Хотя его реализация бывает говном.

andreyu ★★★★★
()
Ответ на: комментарий от vbr

Андроид проектировался, как ОС для фотоаппаратов

Где ты вычитал этот бред? Корни Android лежат во всяких американских DangerOS.

The Hiptop operating system, referred to as DangerOS, is one of the only Java-based operating systems. Even the device drivers were developed in Java. A large part of DangerOS’s architecture was used later to create the Android operating system.[

EXL ★★★★★
()
Ответ на: комментарий от t184256

Maemo на прилавках был с 2005ого

Во-первых, на телефонах не был, во-вторых, кто им мешал лицензировать свою балалайку для разных производителей? Полтора девайса на которых работала платформа не считаются за «первый встал».

no-such-file ★★★★★
()
Ответ на: комментарий от EXL

Я не знаю, где ты вычитал процитированный бред, а про ОС для фотоаппаратов можешь почитать на википедии со ссылками.

vbr ★★★★
()

дак опенсорц оно везде такое
не в смысле что-то плохое, а в смысле написанное школотой

kto_tama ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)