MotoFan.Ru — всё для Motorola > Устройства Motorola > Motorola на Linux OS > Motorola ZINE ZN5, ZN5 T-Mobile

Софт для ZN5 и прочих MotoMAGX: MGX и PEP Полная версия
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91

 av fill.sa

 23.11.2021, 14:44

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

 av VINRARUS

 23.11.2021, 18:30

Цитата(fill.sa @ Сегодня, 17:44)
* Я так понимаю от хваленого бмп отказались.

Нет. nea.gif Качество и скорость создания bmp неоспоримы!
Цитата(fill.sa @ Сегодня, 17:44)
* По моей памяти перевод иконореса с бмп на пнг заметно ускорил работу.

Наоборот, по крайней мере на Z6. uzhas2.gif
Цитата(fill.sa @ Сегодня, 17:44)
* Да и по замеру винраруса страничка на пнг знатно быстрее грузится ибо в пнг меньше даннвх загружать нужно.

Так всем понятно шо чем меньше файл тем быстрее его передача. nhl.gif
Но для начала же его сгенерировать нада, и тут PNG с треском отстаёт в сумарном времени получения скриншота. dinamo.gif
Для кого мы тут псевдотаблички заполняли?
BMP: 0.681/0.256
JPG: 0.665/0.166
PNG: 2.131/0.484

Изображение

 av fill.sa

 23.11.2021, 20:38

Цитата(VINRARUS @ Сегодня, 19:30)
* Но для начала же его сгенерировать нада, и тут PNG с треском отстаёт в сумарном времени получения скриншота.
Для кого мы тут псевдотаблички заполняли?
BMP: 0.681/0.256
JPG: 0.665/0.166
PNG: 2.131/0.484


Так понятно что на сжатие какое-то время тратится. Но это по мне мелочи.
Ты на конечный результат смотри, особенно в действительностях магикса.
Да и по открытию веб страници ты сам видешь что на пнг ты успееш 5 картинок открыть пока 1 бмп прогрузится. Вот и вся твоя скорость.

Я могу ехать 200Км/ч и останавливаться кажные 10 км на заправку и охладится.
А кто-то будет ехать 100км/ч и в конечном счете мы одинаково приедем.

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

 av VINRARUS

 23.11.2021, 21:42

Цитата(fill.sa @ Вчера, 23:38)
* Ты на конечный результат смотри, особенно в действительностях магикса.

wacko.gif Цыфры в цытате и есть конечный результат.
king.gif Если не можеш сам их итерпретировать — я помогу:
2.131÷0.681=в 3,13 раз скриншот BMP быстрее в браузере появится чем PNG, при Wi-FI подключении и мин. частоте ЦП (при 740 МГц разница уменьшается до 2х раз).
Цитата(fill.sa @ Вчера, 23:38)
* Я же говорю по ощущениям иконрез на пнг заметно быстрее, к сожалению проверить это никак, только по ощущениям. Ибо проверить можно только отдельные вещи в виде скорости генерации картинки, но не как не замерить весь процесс.

По моим ощущениям bmp скин шустрее, но уменя не тормозина — на тормозине экономия RAM решает.slow.gif

 av EXL

 23.11.2021, 21:53

VINRARUS, Очень странно, ведь на эмуляторе всё работает.
А если так сделать, будет эффект?

Код
cat /dev/fb/0 > screen.dump
./fbgrab screen.dump screen.bmp

Если нет, прицепи screen.dump для изучения.

 av VINRARUS

 23.11.2021, 22:18

Цитата(EXL @ Сегодня, 0:53)
* Если нет, прицепи screen.dump для изучения.

Изучай. grin.gif

Добавлено позже (24.11.2021, 2:03):
EXL, кстати zgrab при срабатывании закрывает всплывающие менюшки и нажатия кнопок подтупливают.

 av EXL

 25.11.2021, 4:26

Цитата(VINRARUS @ Вчера, 5:18)
* EXL, кстати zgrab при срабатывании закрывает всплывающие менюшки и нажатия кнопок подтупливают.

Я нашёл ещё один способ захвата картинки с экрана через Qt, без хитрости в виде создания какого-либо виджета поверх. Возможно сейчас менюшки закрываться не будут, а сама скриншотилка будет отрабатывать ещё быстрее. У меня на эмуляторе работает, проверь на реальном девайсе:

Код
// dgrab.cpp
#include <qapplication.h>
#include <qpixmap.h>
#include <qwidget.h>

#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc >= 2 && argc <= 3) {
        QApplication app(argc, argv);
        QPixmap::setDefaultOptimization(QPixmap::BestOptim);
        QPixmap fullScreenPixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
        if (argc == 2)
            fullScreenPixmap.save(argv[1], QStringList::split(".", argv[1])[1].upper());
        else
            fullScreenPixmap.save(argv[1], QStringList::split(".", argv[1])[1].upper(), QString(argv[2]).toInt());
    } else
        fprintf(
            stderr,
            "Usage:\n"
            "\tdgrab screenshot.<format>\n\n"
            "Example:\n"
            "\tdgrab screenshot.png\n"
            "\tdgrab screenshot.bmp\n"
            "\tdgrab screenshot.jpeg 100\n"
            "\tdgrab screenshot.jpeg 25\n"
        );
    return 0;
}

Собирать так:

Код
# Motorola ZN5
/arm-eabi/bin/arm-linux-gnueabi-g++ -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -I/arm-eabi/lib/qt-zn5/include -I/arm-eabi/lib/ezx-zn5/include -I/arm-eabi/arm-linux-gnueabi/include dgrab.cpp -o dgrab -Wl,-rpath-link,/arm-eabi/lib/ezx-zn5/lib -L/arm-eabi/lib/ezx-zn5/lib -lqte-mt
/arm-eabi/bin/arm-linux-gnueabi-strip -s dgrab

# MotoMAGX Emulator
/opt/toolchains/motomagx/emulator/bin/i686-mot-linux-gnu-g++ -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -I/opt/toolchains/motomagx/emulator/include dgrab.cpp -o dgrab -L/opt/toolchains/motomagx/emulator/lib -lqte-mt
/opt/toolchains/motomagx/emulator/bin/i686-mot-linux-gnu-strip -s dgrab

Запускать аналогично zgrab, а вот с fbgrab пока не разбирался. Вижу по размеру файла дампа, что чтение не происходит, что странно. Может быть из-за прав такое...? На root, а не ezx запускать пробовал? Нужно разбираться.

Прикреплённые файлы:

 av VINRARUS

 25.11.2021, 4:54

Цитата(EXL @ Сегодня, 7:26)
* Возможно сейчас менюшки закрываться не будут, а сама скриншотилка будет отрабатывать ещё быстрее. У меня на эмуляторе работает, проверь на реальном девайсе:

Да, так намного лучше! thumbup.gif
Цитата(EXL @ Сегодня, 7:26)
* На root, а не ezx запускать пробовал?

Ну я ж не убунтьоныш, шобы рута бояться. laugh.gif В телнете сразу рут права все.

 av EXL

 25.11.2021, 15:56

VINRARUS,
В общем собрал все исходники утилит для снятия скриншотов на GitHub: https://github.com/EXL/MagxScreenshot/

Цитата(VINRARUS @ Сегодня, 11:54)
*
Ну я ж не убунтьоныш, шобы рута бояться. laugh.gif В телнете сразу рут права все.

Наверное пофиксил, но так и не понял в чём там дело и почему fread() и fopen() не работают, а mmap() и open() работают нормально. Правда фиг его знает как это скажется на производительности.

Добавил ещё jgrab, которая делает JPEG-скриншоты, пробуй:

Код
./fbgrab /dev/fb/0 screenshot.bmp
./jgrab /dev/fb/0 screenshot.jpg 100

Теперь "/dev/fb/0" должен нормально сниматься, а ещё можешь на "/dev/fb/1" при врубленной камере или запущенном на SDL HW приложении проверить, есть ли там чего или всё так же чёрный экран.

Прикреплённые файлы:

 av VINRARUS

 25.11.2021, 21:21

EXL, вот теперь шыкарно! ok.gif
Новые fbgrab и jgrab:
Код

# cd /tmp
# echo 133 > /sys/mpm/op
# /home/zgrab.sh
+----------+----------+----------+----------+----------+
|   bmp    |  jpg10   |  jpg50   |  jpg90   |  jpg100  |
+----------+----------+----------+----------+----------+
| 0m 0.25s | 0m 0.20s | 0m 0.24s | 0m 0.22s | 0m 0.28s |
| 0m 0.19s | 0m 0.18s | 0m 0.18s | 0m 0.22s | 0m 0.23s |
| 0m 0.02s | 0m 0.02s | 0m 0.03s | 0m 0.01s | 0m 0.04s |
+----------+----------+----------+----------+----------+
| 0m 0.20s | 0m 0.22s | 0m 0.21s | 0m 0.25s | 0m 0.27s |
| 0m 0.19s | 0m 0.19s | 0m 0.19s | 0m 0.23s | 0m 0.27s |
| 0m 0.01s | 0m 0.01s | 0m 0.02s | 0m 0.01s | 0m 0.00s |
+----------+----------+----------+----------+----------+
| 0m 0.20s | 0m 0.23s | 0m 0.20s | 0m 0.28s | 0m 0.30s |
| 0m 0.18s | 0m 0.20s | 0m 0.20s | 0m 0.23s | 0m 0.26s |
| 0m 0.02s | 0m 0.01s | 0m 0.01s | 0m 0.00s | 0m 0.01s |
+----------+----------+----------+----------+----------+
| 0m 0.23s | 0m 0.20s | 0m 0.23s | 0m 0.23s | 0m 0.28s |
| 0m 0.20s | 0m 0.19s | 0m 0.21s | 0m 0.21s | 0m 0.27s |
| 0m 0.01s | 0m 0.00s | 0m 0.01s | 0m 0.02s | 0m 0.01s |
+----------+----------+----------+----------+----------+
| 0m 0.22s | 0m 0.19s | 0m 0.26s | 0m 0.25s | 0m 0.30s |
| 0m 0.19s | 0m 0.19s | 0m 0.21s | 0m 0.22s | 0m 0.27s |
| 0m 0.02s | 0m 0.01s | 0m 0.00s | 0m 0.01s | 0m 0.01s |
+----------+----------+----------+----------+----------+

# echo 740 > /sys/mpm/op
# /home/zgrab.sh
+----------+----------+----------+----------+----------+
|   bmp    |  jpg10   |  jpg50   |  jpg90   |  jpg100  |
+----------+----------+----------+----------+----------+
| 0m 0.04s | 0m 0.04s | 0m 0.04s | 0m 0.05s | 0m 0.05s |
| 0m 0.04s | 0m 0.05s | 0m 0.05s | 0m 0.04s | 0m 0.05s |
| 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.01s | 0m 0.01s |
+----------+----------+----------+----------+----------+
| 0m 0.04s | 0m 0.04s | 0m 0.04s | 0m 0.05s | 0m 0.06s |
| 0m 0.03s | 0m 0.04s | 0m 0.04s | 0m 0.05s | 0m 0.06s |
| 0m 0.01s | 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.00s |
+----------+----------+----------+----------+----------+
| 0m 0.04s | 0m 0.04s | 0m 0.05s | 0m 0.05s | 0m 0.06s |
| 0m 0.04s | 0m 0.03s | 0m 0.04s | 0m 0.05s | 0m 0.05s |
| 0m 0.00s | 0m 0.01s | 0m 0.00s | 0m 0.00s | 0m 0.01s |
+----------+----------+----------+----------+----------+
| 0m 0.04s | 0m 0.05s | 0m 0.04s | 0m 0.05s | 0m 0.05s |
| 0m 0.04s | 0m 0.05s | 0m 0.04s | 0m 0.05s | 0m 0.05s |
| 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.01s |
+----------+----------+----------+----------+----------+
| 0m 0.04s | 0m 0.04s | 0m 0.04s | 0m 0.05s | 0m 0.07s |
| 0m 0.03s | 0m 0.04s | 0m 0.04s | 0m 0.05s | 0m 0.06s |
| 0m 0.01s | 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.00s |
+----------+----------+----------+----------+----------+


Цитата(EXL @ Сегодня, 18:56)
* а ещё можешь на "/dev/fb/1" при врубленной камере

Работает в камере! dribble.gif
К стати, при закрытии камеры на /dev/fb/1 остаётся останний кадр висеть.

 av EXL

 26.11.2021, 5:45

VINRARUS, Отлично, что для камеры тоже заработало. А для игр на SDL HW это тоже работает? Там наверное должен этот же буфер использоваться. Проверь ради интереса.

Немного оптимизировал код в jgrab, обнови у себя нужные исполняемые файлы. Ещё добавил утилиту pgrab по типу fbgrab и jgrab, но для снятия скриншотов в PNG, уровень компрессии регулируется в пределах 0-9:

Код
./pgrab /dev/fb/0 screenshot1.png 0
./pgrab /dev/fb/0 screenshot2.png 2
./pgrab /dev/fb/0 screenshot3.png 9

Бенчмарк на эмуляторе показал следующую картину, в самом конце размер файла в байтах:

Код
for i in $(seq 1 5); do busybox time ./pgrab /dev/fb/0 scr.png 9; sleep 1; rm scr.png; done;

+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+
|  PNG 0   |  PNG 1   |  PNG 2   |  PNG 3   |  PNG 4   |  PNG 5   |  PNG 6   |  PNG 7   |  PNG 8   |  PNG 9   |
+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+
| 0m 0.02s | 0m 0.06s | 0m 0.05s | 0m 0.07s | 0m 0.09s | 0m 0.08s | 0m 0.12s | 0m 0.14s | 0m 0.27s | 0m 0.50s |
| 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.01s | 0m 0.00s | 0m 0.01s | 0m 0.02s | 0m 0.04s | 0m 0.03s | 0m 0.03s |
| 0m 0.00s | 0m 0.04s | 0m 0.02s | 0m 0.03s | 0m 0.06s | 0m 0.06s | 0m 0.09s | 0m 0.08s | 0m 0.22s | 0m 0.43s |
+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+
| 0m 0.07s | 0m 0.04s | 0m 0.06s | 0m 0.06s | 0m 0.07s | 0m 0.09s | 0m 0.12s | 0m 0.15s | 0m 0.31s | 0m 0.43s |
| 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.01s | 0m 0.00s | 0m 0.00s | 0m 0.01s | 0m 0.01s | 0m 0.00s | 0m 0.04s |
| 0m 0.06s | 0m 0.00s | 0m 0.05s | 0m 0.04s | 0m 0.02s | 0m 0.09s | 0m 0.09s | 0m 0.12s | 0m 0.29s | 0m 0.35s |
+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+
| 0m 0.05s | 0m 0.08s | 0m 0.04s | 0m 0.09s | 0m 0.10s | 0m 0.10s | 0m 0.13s | 0m 0.14s | 0m 0.34s | 0m 0.50s |
| 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.01s | 0m 0.01s | 0m 0.02s | 0m 0.00s | 0m 0.02s | 0m 0.00s | 0m 0.08s |
| 0m 0.05s | 0m 0.06s | 0m 0.02s | 0m 0.06s | 0m 0.07s | 0m 0.08s | 0m 0.11s | 0m 0.11s | 0m 0.31s | 0m 0.40s |
+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+
| 0m 0.03s | 0m 0.07s | 0m 0.08s | 0m 0.09s | 0m 0.09s | 0m 0.09s | 0m 0.12s | 0m 0.10s | 0m 0.33s | 0m 0.52s |
| 0m 0.00s | 0m 0.01s | 0m 0.00s | 0m 0.00s | 0m 0.01s | 0m 0.00s | 0m 0.00s | 0m 0.02s | 0m 0.06s | 0m 0.02s |
| 0m 0.03s | 0m 0.05s | 0m 0.06s | 0m 0.07s | 0m 0.06s | 0m 0.09s | 0m 0.11s | 0m 0.07s | 0m 0.24s | 0m 0.46s |
+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+
| 0m 0.03s | 0m 0.06s | 0m 0.08s | 0m 0.08s | 0m 0.10s | 0m 0.11s | 0m 0.12s | 0m 0.14s | 0m 0.32s | 0m 0.49s |
| 0m 0.00s | 0m 0.01s | 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.00s | 0m 0.07s | 0m 0.03s |
| 0m 0.02s | 0m 0.04s | 0m 0.07s | 0m 0.07s | 0m 0.09s | 0m 0.10s | 0m 0.11s | 0m 0.13s | 0m 0.22s | 0m 0.41s |
+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+
|  231154  |  68689   |  66579   |  63552   |  60778   |  59231   |  58129   |  57665   |  56473   |  56033   |
+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+

Как видно, время снятия скриншота с повышением уровня компрессии возрастает, но не особо быстро. Исключения последние два уровня 8 и 9. Даже минимальный уровень сжатия 1 неплохо жмёт картинку и при этом не особо прожорлив. Возможно следует попробовать заюзать его вместо JPEG, но нужно смотреть как оно на реальном устройстве будет сжиматься, там разница может быть более драматическая.

Если будешь в Web-сервер встраивать всё это, не забудь сделать снятие скриншота именно в PNG-формате, например, по отдельной кнопке. Сделать именно lossless скриншот бывает очень полезно.

Прикреплённые файлы:

 av Unreal_man

 26.11.2021, 17:01

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

 av VINRARUS

 26.11.2021, 17:20

Unreal_man, а оно не для просмотра на телефоне в даном случае. wink.gif



Добавлено позже (26.11.2021, 20:21):
... если конешно мова не про управление зиной чирез другую зину. dribble.gif

 av EXL

 27.11.2021, 5:30

VINRARUS, Ага, это удобно для публикации постов со скриншотами на форум в первую очередь laugh.gif

 av VINRARUS

 27.11.2021, 10:46

Цитата(EXL @ Вчера, 8:45)
* Ещё добавил утилиту pgrab по типу fbgrab и jgrab, но для снятия скриншотов в PNG, уровень компрессии регулируется в пределах 0-9

А шо у неё с размером случилось, шо в 10 раз больше чем другие?

 av EXL

 27.11.2021, 11:21

VINRARUS,
Причина этого как всегда обрезанная Qt-библиотека у ZN5. Например её сравнение с той, что у VE66 по части PNG-функций:

Код
$ cd /arm-eabi/lib/ezx-zn5/lib/
$ readelf -s -w libqte-mt.so.2.3.8 | grep -i png_ | c++filt
readelf: libqte-mt.so.2.3.8: warning: local symbol 465 found at index >= .dynsym's sh_info value of 10
   236: 416c6870    92 func    global default   11 png_error@@version
   520: 416cadf4    16 func    global default   11 png_set_strip_16@@version
   624: 416c5d90   144 func    global default   11 png_sig_cmp@@version
   656: 416c8fd0   620 func    global default   11 png_create_read_struct@@version
  1032: 416cabb0   136 func    global default   11 png_set_read_fn@@version
  1066: 416d4f58    32 func    global default   11 png_set_packing@@version
  1155: 416c64b0     8 func    global default   11 png_get_io_ptr@@version
  1726: 416c6914    28 func    global default   11 png_get_valid@@version
  2400: 416c71e0    72 func    global default   11 png_get_plte@@version
  2631: 416c6f1c   260 func    global default   11 png_get_ihdr@@version
  3005: 416c941c  1620 func    global default   11 png_read_info@@version
  3207: 416ca840   192 func    global default   11 png_destroy_read_struct@@version
  3329: 416c9ff8   100 func    global default   11 png_read_image@@version
  3386: 416c72e4   132 func    global default   11 png_get_trns@@version
  3439: 416c5f14    56 func    global default   11 png_create_info_struct@@version
  3962: 416c68fc    16 func    global default   11 png_set_error_fn@@version
  3989: 416ca05c  1360 func    global default   11 png_read_end@@version

$ cd /arm-eabi/lib/ezx-ve66/lib/
$ readelf -s -w libqte-mt.so.2.3.8 | grep -i png_write_ | c++filt
   153: 41791a68    72 func    global default   10 png_write_gama_fixed
   585: 41792898   288 func    global default   10 png_write_iccp
   668: 41791ab0    96 func    global default   10 png_write_srgb
   989: 41792e34   252 func    global default   10 png_write_scal
  1207: 417914c8   960 func    global default   10 png_write_ihdr
  1258: 417929b8   220 func    global default   10 png_write_text
  1655: 41790f18    52 func    global default   10 png_write_chunk_end
  1660: 41791c04   920 func    global default   10 png_write_chrm
  2162: 41791f9c   496 func    global default   10 png_write_chrm_fixed
  2316: 417930a8   480 func    global default   10 png_write_start_row
  2532: 41792a94   292 func    global default   10 png_write_ztxt
  2536: 41791888   224 func    global default   10 png_write_plte
  2616: 4178fb10   292 func    global default   10 png_write_init_2
  2940: 41792298   228 func    global default   10 png_write_bkgd
  3095: 41791b10   244 func    global default   10 png_write_sbit
  3435: 417937a8   252 func    global default   10 png_write_filtered_row
  3960: 417926dc   444 func    global default   10 png_write_splt
  3999: 417938a4  3276 func    global default   10 png_write_find_filter
  4089: 4178fee8    64 func    global default   10 png_write_rows
  5437: 4178eea0   528 func    global default   10 png_write_info_before_plte
  5642: 4178fc64   540 func    global default   10 png_write_row
  5908: 4178f0b0   908 func    global default   10 png_write_info
  5991: 41791968    76 func    global default   10 png_write_idat
  6799: 41790f4c    52 func    global default   10 png_write_chunk_data
  6909: 41792fe0   200 func    global default   10 png_write_time
  6918: 41790fe0    52 func    global default   10 png_write_chunk
  7050: 41790f80    96 func    global default   10 png_write_chunk_start
  7089: 4179237c   172 func    global default   10 png_write_hist
  7120: 41793288   576 func    global default   10 png_write_finish_row
  7240: 417919b4    68 func    global default   10 png_write_iend
  7328: 4178f43c   452 func    global default   10 png_write_end
  7340: 41790538   284 func    global default   10 png_write_png
  7709: 41792c68   460 func    global default   10 png_write_pcal
  8256: 41792bb8   176 func    global default   10 png_write_offs
  8510: 417919f8   112 func    global default   10 png_write_gama
  8660: 41790014   260 func    global default   10 png_write_destroy
  9198: 4178fe80   104 func    global default   10 png_write_image
  9890: 4178ff38   220 func    global default   10 png_write_flush
  9954: 41792f30   176 func    global default   10 png_write_phys
10183: 41791014   144 func    global default   10 png_write_sig
10542: 4179218c   268 func    global default   10 png_write_trns
10910: 4178fc34    48 func    global default   10 png_write_init
10947: 4178ed38    60 func    global default   10 png_write_data

Как видно, у ZN5 библиотека Qt может только читать PNG изображения. Не знаю где там в прошивке ZN5 код сохранения PNG-изображений, возможно в самой либе Qt собственная внутренняя приватная реализация этой функциональности, поэтому приходится этот код таскать с собой и линковать его статически. Что, конечно, увеличивает размер исполняемого файла на десятки килобайт.

Поищи, есть ли libpng.so где-нибудь в /lib, например?

 av VINRARUS

 27.11.2021, 11:56

Цитата(EXL @ Сегодня, 14:21)
* Не знаю где там в прошивке ZN5 код сохранения PNG-изображений

А может его и нет, ведь сохранять в png это так не по американски... no2.gif
Цитата(EXL @ Сегодня, 14:21)
* Поищи, есть ли libpng.so где-нибудь в /lib, например?

Нету.

 av EXL

 27.11.2021, 12:04

Цитата(VINRARUS @ Сегодня, 18:56)
* А может его и нет, ведь сохранять в png это так не по американски... no2.gif

Хех, но Qt ведь как-то сохраняет PNG через тот же dgrab и zgrab?! smile.gif

А это значит что где-то всё-таки нужный код есть, но только он хорошо прикопан. Либо вообще какая-то внутренняя реализация в Qt мимо libpng. И кстати эта либа примерно так же статически вкомпилена в libqte-mt.so.2 разных телефонов. Просто в случае с ZN5 в каком-то обрезанном варианте.

 av VINRARUS

 27.11.2021, 12:27

Цитата(EXL @ Вчера, 8:45)
* А для игр на SDL HW это тоже работает? Там наверное должен этот же буфер использоваться. Проверь ради интереса.

на /dev/fb/1 висит последний кадр камеры
А на /dev/fb/0 такие картинки:

 av EXL

 27.11.2021, 14:25

VINRARUS, Понял, спасибо за тесты.

Цитата(VINRARUS @ Сегодня, 19:27)
* А на /dev/fb/0 такие картинки:

Примерно понял почему. Там в SDL видимо переводится видео режим с 18 bpp на 16 bpp или какой-то другой, поэтому такие вот артефакты. Может быть когда-нибудь сделаю снятие картинки в режиме 16 bpp, но пока руки до этого не доходят.

Кстати, вот отличия в качестве картинки на 16-bit'ах (RGB565) и 18-bit'ах (RGB666). Лично я эту разницу немного вижу.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91

Полная версия:


MotoFan.ru (©) 2024    Слушать Radio