Документирование libinkview
На страницу Пред.  1, 2, 3, 4  След.
 
Найти сообщения без ответов
Начать новую тему   Ответить на тему    Список форумов The-eBook -> PocketBook -> PocketBook Free
 

Ваше отношение к созданию документации
Поддерживаю
71%
 71%  [ 20 ]
Поддерживаю и готов учавствовать
21%
 21%  [ 6 ]
Мне все равно
7%
 7%  [ 2 ]
Всего проголосовало : 28

Автор Сообщение

garamGor
Бывалый участник форума

Бывалый участник форума



Зарегистрирован: 02.09.2011
Сообщения: 137


Откуда: Украина, Донецк

СообщениеДобавлено: 23.11.2011 21:39     Цитата

Вопрос. Документирование будет на русском, или на английском?
_________________
PB 902 (2.0.6->2.1.2а->2.0.6->2.1.0->2.0.6)
[FBReader180 v0.11.3, CR for PocketBook v0.0.6-2]
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 24.11.2011 11:44     Цитата

garamGor писал(а):
Вопрос. Документирование будет на русском, или на английском?


Однозначно на английском. И почему "будет"? Уже частично есть...

Но если кто-то будет параллельно поддерживать русскую версию, буду только за.
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

garamGor
Бывалый участник форума

Бывалый участник форума



Зарегистрирован: 02.09.2011
Сообщения: 137


Откуда: Украина, Донецк

СообщениеДобавлено: 24.11.2011 14:39     Цитата

sergeyvl писал(а):
Но если кто-то будет параллельно поддерживать русскую версию, буду только за.
Я могу поддерживать русскую версию, если никто не против.
_________________
PB 902 (2.0.6->2.1.2а->2.0.6->2.1.0->2.0.6)
[FBReader180 v0.11.3, CR for PocketBook v0.0.6-2]
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 24.11.2011 14:44     Цитата

Я за. Тогда покурю как в доксигене лучше организовать 2 языка.
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 02.12.2011 00:32     Цитата

Прошу всех кто знает отписаться по поводу таких вещей:

1. Чем отличается HardTimer от WeakTimer?

2. void DynamicUpdate(int x, int y, int w, int h);
void DynamicUpdateBW(int x, int y, int w, int h);

3. В чем принципиальная разница между PartialUpdate() и PartialUpdateBW()? Я понимаю что вторая быстрее но должна использоваться на монохромных изображениях, но хочется более подробно. У меня сейчас на горизонте замелькала задача написать "умную" функцию апдейта, которая будет анализировать изображение и выбирать одну из этих двух.

Как это работает?

Результы буду заносить сюда: http://pbsdk.vlasovsoft.net/html/index.html
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

Antuan
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 30.09.2009
Сообщения: 11610


Откуда: Киев

СообщениеДобавлено: 02.12.2011 00:59     Цитата

sergeyvl писал(а):
В чем принципиальная разница между PartialUpdate() и PartialUpdateBW()? Я понимаю что вторая быстрее но должна использоваться на монохромных изображениях, но хочется более подробно.

Трудно дать точное описание, дело в том, что на разных устройствах логика работы PartialUpdateBW() разная. Например на 360-м(без плюса) и некоторых 301+, если в изображении изменились не только черные/белые пикселы, но и хотя бы один серый, то обновление PartialUpdateBW() превращается в PartialUpdate(), т.е. обновляет и серый тоже, что приводит к тормозам.
На других моделях PartialUpdateBW() обновляет только Ч/Б изображение.
Вот тут когда-то исследовали скорость обновления в зависимости от площади и т.д.
_________________
PB 360° (v.15.3) | PB Pro 602 Grey (v.2.2.1a fastdrv) | PB A7 (v.1.3.1583) - подарок от PocketBook.
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 02.12.2011 01:18     Цитата

Antuan писал(а):
то обновление PartialUpdateBW() превращается в PartialUpdate()


У меня не превращается Smile На примере шахмат, где движется курсор (рамка) по доске (серые и белые поля). PartialUpdate() работает как надо (хоть и медленно). PartialUpdateBW() работает быстро но с браком (по-моему не убирал курсор с серых полей).

Antuan писал(а):
На других моделях PartialUpdateBW() обновляет только Ч/Б изображение.


Да, похоже это мой случай.

Надо понять, в каких случаях вместо PartialUpdateBW нужно использовать PartialUpdate.

1. Изменение белый <-> черный - PartialUpdateBW()!
2. Нет изменения, серый - PartialUpdateBW()!
3. Изменение серый <-> белый - PartialUpdate()?
4. Изменение серый <-> черный - PartialUpdate()?
5. Изменение серый <-> другой серый - PartialUpdate()!

Как-то так?
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

Antuan
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 30.09.2009
Сообщения: 11610


Откуда: Киев

СообщениеДобавлено: 02.12.2011 01:27     Цитата

sergeyvl писал(а):
Надо понять, в каких случаях вместо PartialUpdateBW нужно использовать PartialUpdate.

Если у Вас девайс из серии "про", то можете уже не заморачиваться, потому что в новой прошивке этим занят драйвер, и что взбредет ему в код предугадать сложно, не делать же еще и проверку на версию прошивки.
_________________
PB 360° (v.15.3) | PB Pro 602 Grey (v.2.2.1a fastdrv) | PB A7 (v.1.3.1583) - подарок от PocketBook.
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 02.12.2011 12:53     Цитата

Antuan писал(а):
Если у Вас девайс из серии "про", то можете уже не заморачиваться


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

"Спасибо" покетбуку за то что он "облегчает" задачу сторонним разработчикам Sad
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

NetSpider
Искушенный участник форума

Искушенный участник форума



Зарегистрирован: 15.06.2011
Сообщения: 55



СообщениеДобавлено: 02.12.2011 17:27     Цитата

sergeyvl писал(а):

1. Чем отличается HardTimer от WeakTimer?

HardTimer позволяет проснуться устройству и отработать нужной функции
WeakTimer если устройство уснуло, то функция отработает только тогда, когда оно проснется.

sergeyvl писал(а):

2. void DynamicUpdate(int x, int y, int w, int h);
void DynamicUpdateBW(int x, int y, int w, int h);

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

sergeyvl писал(а):

3. В чем принципиальная разница между PartialUpdate() и PartialUpdateBW()?

PartialUpdate - обновление серого участка
PartialUpdateBW - обновление черно-белого участка

PartialUpdateBW работает значительно быстрее чем PartialUpdate. Но BW версию можно использовать только на чернобелых изображениях, иначе на сером будет "каша".
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 02.12.2011 18:15     Цитата

NetSpider

Спасибо

Не подскажешь еще такую вещь. Я InkViewMain запустил не в главном потоке, а в созданном мной. В главном потоке я запустил Qt.

Так вот, все работает норм. за исключением одной вещи. Когда чтение из файла в главном потоке длится достаточно долго (файл достаточно большой), то главный поток "замирает". Оживает он только если нажать что-то на клавиатуре. Через некоторое время (если файл длинный) опять замирает... В чем там может быть дело?

По правде говоря я не знаю точно где именно замирает главный поток. Предположил что на чтении...
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

NetSpider
Искушенный участник форума

Искушенный участник форума



Зарегистрирован: 15.06.2011
Сообщения: 55



СообщениеДобавлено: 02.12.2011 18:23     Цитата

Думаю, дело в том, что устройство засыпает по таймауту. Как вариант можно отключить режим сна на время обработки. Например, так:
iv_sleepmode(0) - выключить режим сна
iv_sleepmode(1) - включить режим сна
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 02.12.2011 18:42     Цитата

NetSpider писал(а):
Думаю, дело в том, что устройство засыпает по таймауту. Как вариант можно отключить режим сна на время обработки. Например, так:
iv_sleepmode(0) - выключить режим сна
iv_sleepmode(1) - включить режим сна


Еще раз огромное вам спасибо! Сижу над этой проблемой почти день...

Я не зная про iv_sleepmode() попробовал использовать в потоке InkViewMain() HardTimer() с интервалом в пол-секунды. Зависания прекратились, вот только лампочка гореть не перестает. Думаю если лампочка - индикатор сна, то HardTimer() не позволяет устройству засыпать, иначе почему бы тогда она все время горела? ...
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

yuryfdr
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 18.06.2009
Сообщения: 694



СообщениеДобавлено: 03.12.2011 13:34     Цитата

Кстати, было бы неплохо к функциям и структурам добавить поля совместимость с моделями, и с какой прошивки появились.
у меня набежало 12к разницы между inkview.h для arm и arm_gnueabi
(не говоря уже о старых SDK).
_________________
http://fedorchenko.net программы для PocketBook
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 03.12.2011 23:40     Цитата

yuryfdr писал(а):
Кстати, было бы неплохо к функциям и структурам добавить поля совместимость с моделями, и с какой прошивки появились.
у меня набежало 12к разницы между inkview.h для arm и arm_gnueabi
(не говоря уже о старых SDK).


Да, это тоже важно. Но пока что документировать бы наиболее важные функции...
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

yuryfdr
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 18.06.2009
Сообщения: 694



СообщениеДобавлено: 04.12.2011 01:08     Цитата

sergeyvl
кстати там по некоторые вызовы отличаются по параметрам, например DynamicUpdate и OpenBook.

oldconfigedit_s это не deprecated, это совсем того до 14 прошивки 301+
я даже не знаю, почему она ещё жива в inkview.h.

меня разница заинтересовала после того как нашел такую функцию,
convert_to_utf в 15м sdk её нет. вот мне интересно для 301+
в прошивке 15.3 она есть? (у меня на 301+ 14.2 стоит).
_________________
http://fedorchenko.net программы для PocketBook
 
Профиль Сообщение ^

Vanuan
Продвинутый участник форума

Продвинутый участник форума



Зарегистрирован: 25.11.2011
Сообщения: 81



СообщениеДобавлено: 04.12.2011 04:36     Цитата

lunohod писал(а):
А зачем inkview, если можно напрямую с фреймбуфером работать?



В прошивке PB фреймбуфер не используется. Там ядро сконфигурировано на использование ioctl вызовов напрямую: https://github.com/pocketbook-free/pocketbook_free/blob/master/kernel_ 070611/drivers/video/eink/epson.ntx/S1D13521%20Linux%20Device%20Driver .txt
А libinkview базируется на ioctl вызовах.

Драйвер контроллера S1D13521 для использования фреймбуфера и deferred io появился в ядре версии 2.6.30
В этом случае приложению не нужно ничего знать про ioctl и драйвер, который там используется. В прошивке FB используется какая-то древняя версия ядра 2008 года.

Статья про поддержку eink контроллеров в ядре linux:
http://lwn.net/Articles/259210/

Тред про использование фреймбуфера в обход libinkview: http://www.the-ebook.org/forum/viewtopic.php?t=13564&start=0&postdays= 0&postorder=asc&highlight=fb0
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 06.12.2011 00:03     Цитата

yuryfdr писал(а):
меня разница заинтересовала после того как нашел такую функцию,
convert_to_utf в 15м sdk её нет. вот мне интересно для 301+
в прошивке 15.3 она есть? (у меня на 301+ 14.2 стоит).


есть.

Добавлено спустя 4 минуты 9 секунд:

yuryfdr писал(а):
oldconfigedit_s это не deprecated, это совсем того до 14 прошивки 301+
я даже не знаю, почему она ещё жива в inkview.h.


Тут много загадок. Например, почему в inkview.h понатикано много всяких левых инклудов которые там вообще не используются:

#include <sys>
#include <sys>
#include <sys>
#include <sys>
#include <signal>
#include <errno>
....

может у них один большой прекомпайлед хидер создается? Smile

Добавлено спустя 2 минуты 45 секунд:

Vanuan писал(а):
В прошивке PB фреймбуфер не используется. Там ядро сконфигурировано на использование ioctl вызовов напрямую: https://github.com/pocketbook-free/pocketbook_free/blob/master/kernel_ 070611/drivers/video/eink/epson.ntx/S1D13521%20Linux%20Device%20Driver .txt
А libinkview базируется на ioctl вызовах.


Здрасти, как это не используется? Используется. Нет автоматического обновления - это да. А напрямую конечно можно работать. Получил его параметры через GetCanvas() и вперед.
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

Vanuan
Продвинутый участник форума

Продвинутый участник форума



Зарегистрирован: 25.11.2011
Сообщения: 81



СообщениеДобавлено: 07.12.2011 14:41     Цитата

Цитата:
Здрасти, как это не используется? Используется. Нет автоматического обновления - это да. А напрямую конечно можно работать. Получил его параметры через GetCanvas() и вперед.


Здрасти. А можно, пожалуйста, пример кода? Например, приложение рисования черного квадратика 100x100
И как обновить вручную?
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 07.12.2011 14:55     Цитата

Vanuan писал(а):
Здрасти. А можно, пожалуйста, пример кода? Например, приложение рисования черного квадратика 100x100
И как обновить вручную?


Пример кода не дам, думаю сами справитесь.

А порядок такой:
1. Получаем параметры фреймбуффера с помощию GetCanvas(). Там все параметры: высота, ширина, адрес памяти и т.д. Ну вобщем смотрите структурку icanvas из inkview.h
2. Рисуем все что хотим (там идет 1 байт на пиксель).
3. Делаем апдейт экрана: PartialUpdate(), PartialUpdateBW() или FullUpdate().

все.

А реальный это фреймбуффер или виртуальный какой-нибудь, меня не волнует. Я так думаю что в связи с появлением многозадачности точно появятся виртуальные буфера для каждой задачи.
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов The-eBook -> PocketBook -> PocketBook Free Часовой пояс: GMT + 4
На страницу Пред.  1, 2, 3, 4  След.
Страница 2 из 4

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

© The-eBook, 1999-2014. © Design by Prohorenkov
Syndicating News | Powered by phpBB © 2001, 2005 phpBB Group.
Хостинг предоставлен компанией DatForce     Яндекс.Метрика