Skip to content

Releases: dreamboxone/piip

PIIP 1.0.6 — FFmpeg gave up before the delayed picture arrived

Choose a tag to compare

@dreamboxone dreamboxone released this 23 Sep 21:03

The black picture on OE-Alliance images, traced to its cause.

What was happening

1.0.5 picked the right FFmpeg graph, and the log showed it — but the picture
stayed black and the muxer error stayed:

Fixed

The input is given room to show what it carries: a larger probe, a longer
analyse window, and no -scan_all_pmts, for the same reason the capture chain
already leaves it out. A healthy stream stops probing the moment it knows its
codecs, so this costs it nothing.

A worker that dies now names itself and its exit code in /tmp/piip_dub.log.
A pipeline restarting in a loop otherwise reports only that it restarted.

Install

scp enigma2-plugin-extensions-piip_1.0.6_all.ipk root@RECEIVER_IP:/tmp/
ssh root@RECEIVER_IP "opkg install /tmp/enigma2-plugin-extensions-piip_1.0.6_all.ipk"

or, on DreamOS:

ssh root@RECEIVER_IP "dpkg -i /tmp/enigma2-plugin-extensions-piip_1.0.6_all.deb"

Checksums (SHA-256)

ecc8030c0d79fecead42c19c6b6c1ea46f776920ea37dae956050ec4bdad53fc  enigma2-plugin-extensions-piip_1.0.6_all.deb
b812da3500a7ee4c7bc38adb1d9c17ae53ec5e2dcf65687d91205f6d434bfc70  enigma2-plugin-extensions-piip_1.0.6_all.ipk

فارسی

تصویر سیاه روی ایمیج‌های OE-Alliance، این بار تا ریشه دنبال شد.

اصلاح: به ورودی فرصت داده می‌شود محتوایش را نشان دهد — probe بزرگ‌تر،
پنجرهٔ تحلیل طولانی‌تر، و حذف -scan_all_pmts به همان دلیلی که مسیر ضبط
قبلاً ثبتش کرده. روی استریم سالم هیچ هزینه‌ای ندارد، چون ffmpeg به‌محض
شناختن کدک‌ها probe را تمام می‌کند.

ضمناً هر پردازهٔ کمکی که بمیرد، حالا نام خودش و کد خروجش را در
/tmp/piip_dub.log می‌نویسد.

PIIP 1.0.5 — black picture on OE-Alliance images

Choose a tag to compare

@dreamboxone dreamboxone released this 23 Sep 20:07

IPTV channels opening to a black picture on OE-Alliance images, and four
faults found beside it.

Fixed

The wrong FFmpeg graph on OE-Alliance images. Playback was always built
the DreamOS way — two audio tracks for Enigma2 to switch between — because the
flag saying otherwise was hardcoded. An OE-Alliance image refuses that command
line outright:

[out#0] Error initializing the muxer for pipe:1: Invalid argument
Error opening output files: Invalid argument

and the viewer gets a black picture. The image is now detected and given the
single mixed AAC track it wants. The detection reads the package database,
not a stray /usr/bin/opkg, which a DreamOS receiver carries while managing
everything with dpkg — the first attempt got that wrong on real hardware.

The playback command line is now logged as well. "Error initializing the
muxer" never said which option it meant.

A dialog during screen construction killed the player. onLayoutFinish
still runs inside the screen's construction, where Enigma2 refuses a modal
dialog: RuntimeError: Modal open are allowed only from a screen which is modal. The engine's error box raised it and took the whole player screen
down — another black picture. Dialogs now wait one main-loop tick. The resume
prompt for films went through the same door.

The category list came back empty after a screen closed. Its loader read
self.kind on the worker thread, and closing a screen clears its attributes
on some images, so a fetch already in flight died with AttributeError
instead of finishing. Everything it needs is now read before the slow call.

Posters that nothing could draw. Artwork is named after what actually
arrived rather than what the address claimed — providers serve PNG from .jpg
addresses — and a WebP poster is refused rather than cached as a file Enigma2
will not open.

A passthrough regression from 1.0.3. The metrics loop still expected the
mixer that 1.0.3 correctly took away from passthrough, and died each time the
engine started.

Install

scp enigma2-plugin-extensions-piip_1.0.5_all.ipk root@RECEIVER_IP:/tmp/
ssh root@RECEIVER_IP "opkg install /tmp/enigma2-plugin-extensions-piip_1.0.5_all.ipk"

or, on DreamOS:

ssh root@RECEIVER_IP "dpkg -i /tmp/enigma2-plugin-extensions-piip_1.0.5_all.deb"

Checksums (SHA-256)

519aec2581509fefd74e40d97500d4e22db5167cc553e2cd64e77535baa04080  enigma2-plugin-extensions-piip_1.0.5_all.deb
9d3f5b595d118dd9c301f27a62bcc4040859a871b13d921be96fcdf6c2ae2783  enigma2-plugin-extensions-piip_1.0.5_all.ipk

فارسی

باز نشدن کانال‌های IPTV و تصویر سیاه روی ایمیج‌های OE-Alliance — و چهار ایراد
دیگر که کنارش پیدا شد.

گراف اشتباه FFmpeg روی OE-Alliance. پخش همیشه به شکل DreamOS ساخته
می‌شد (دو تِرَک صدا) چون آن پرچم در کد ثابت روی «خیر» بود. ایمیج OE-Alliance
این دستور را رد می‌کند («Error initializing the muxer») و بیننده تصویر سیاه
می‌بیند. حالا نوع ایمیج تشخیص داده می‌شود — از روی دیتابیس بسته‌ها، نه
فایل /usr/bin/opkg که یک دریم‌باکس هم آن را دارد در حالی که همه‌چیز را با
dpkg مدیریت می‌کند؛ تلاش اول دقیقاً همین‌جا روی سخت‌افزار واقعی اشتباه کرد.
دستور پخش هم در لاگ نوشته می‌شود، چون پیام خطا هرگز نمی‌گفت کدام گزینه.

باز کردن دیالوگ حین ساخت صفحه، پخش‌کننده را می‌کشت. انیگما۲ دیالوگ را در
آن لحظه رد می‌کند و آن RuntimeError کل صفحهٔ پخش را پایین می‌آورد — یک
تصویر سیاه دیگر. حالا دیالوگ‌ها یک تیک صبر می‌کنند. پرسش «ادامه از محل قطع»
هم از همان در رد می‌شد.

خالی شدن فهرست دسته‌ها. بارگذارِ دسته‌ها روی نخ کارگر self.kind را
می‌خواند، و بستن صفحه در بعضی ایمیج‌ها صفت‌های آن را پاک می‌کند؛ پس یک
دریافت در جریان با خطا می‌مرد به‌جای اینکه تمام شود.

پوسترهایی که قابل نمایش نبودند. تصویر با نام نوع واقعی‌اش ذخیره می‌شود نه
پسوندی که آدرس ادعا کرده، و پوستر WebP به‌جای ذخیره شدن به‌عنوان فایل
غیرقابل‌نمایش، رد می‌شود.

یک رگرسیون از ۱.۰.۳: حلقهٔ متریک در حالت passthrough هنوز انتظار میکسر
داشت و هر بار می‌مرد.

PIIP 1.0.4 — verified on a Python 2.7 receiver

Choose a tag to compare

@dreamboxone dreamboxone released this 23 Sep 19:32

The 1.0.3 changes, verified on a real Python 2.7.13 receiver — which found two
things a desktop could not.

Fixed

The mixer's new pure-Python backend used Python 3 spellings.
array.tobytes and array.frombytes do not exist on Python 2.7, where they
are tostring and fromstring. Receivers on 2.7 never reach that backend —
they still have audioop — but the code must be correct on both.

The list-template capability probe reported nothing under test on 2.7.
from package import submodule reads the package attribute on Python 2.7 and
never consults sys.modules, unlike 3.7 and later. The probe now reaches the
module by name on either Python, and the test stub registers submodules as
attributes as well.

The shipped test suite now passes on the receiver itself: 1582 checks.

python /usr/lib/enigma2/python/Plugins/Extensions/PIIP/tests/run_all.py

Also verified on hardware

  • The source engine of the dub pipeline starts and answers passthrough: true
    — the path that could not start at all on Python 3.14.
  • A dying engine's reason is captured and reported, instead of the silent
    failure that made the last three releases necessary.

Install

scp enigma2-plugin-extensions-piip_1.0.4_all.ipk root@RECEIVER_IP:/tmp/
ssh root@RECEIVER_IP "opkg install /tmp/enigma2-plugin-extensions-piip_1.0.4_all.ipk"

or, on DreamOS:

ssh root@RECEIVER_IP "dpkg -i /tmp/enigma2-plugin-extensions-piip_1.0.4_all.deb"

Checksums (SHA-256)

6ebfd75ab573173fc834dcc1e7d1a10c008e68a58df4c484e679141fdae27d91  enigma2-plugin-extensions-piip_1.0.4_all.deb
d2b57bac991ac204e11345e27e5b2088c44a6714cf0913a4619a34a45c6433b5  enigma2-plugin-extensions-piip_1.0.4_all.ipk

فارسی

تغییرات ۱.۰.۳ روی یک گیرندهٔ واقعی با پایتون ۲.۷.۱۳ راستی‌آزمایی شد — و دو
چیز را پیدا کرد که کامپیوتر نمی‌توانست.

بک‌اند تازهٔ میکسر از املای پایتون ۳ استفاده می‌کرد. توابع
array.tobytes و array.frombytes در پایتون ۲.۷ وجود ندارند (آنجا
tostring و fromstring هستند). گیرنده‌های ۲.۷ هرگز به آن بک‌اند نمی‌رسند
چون audioop دارند، ولی کد باید روی هر دو درست باشد.

تشخیص‌دهندهٔ قابلیت قالب فهرست، زیر تست روی ۲.۷ هیچ چیزی گزارش نمی‌کرد.
در پایتون ۲.۷ دستور from package import submodule فقط صفت پکیج را می‌خواند و
به sys.modules کاری ندارد — برخلاف ۳.۷ به بعد. حالا ماژول با نام گرفته
می‌شود و روی هر دو پایتون کار می‌کند.

مجموعهٔ تست همراه بسته حالا روی خود گیرنده سبز است: ۱۵۸۲ بررسی.

روی سخت‌افزار تأیید شد: موتور منبعِ مسیر دوبله بالا می‌آید و
passthrough: true جواب می‌دهد — همان مسیری که روی پایتون ۳.۱۴ اصلاً شروع
نمی‌شد؛ و دلیل مرگ موتور حالا گزارش می‌شود، به‌جای آن شکست بی‌صدایی که سه
نسخهٔ اخیر را لازم کرد.

PIIP 1.0.3 — works on Python 3.13+ images (openATV 8, Python 3.14)

Choose a tag to compare

@dreamboxone dreamboxone released this 23 Sep 19:07

Playback and translation on images built with Python 3.13 or later — openATV 8 ships Python 3.14, where this release is the first that works.

Fixed

The stdlib audioop module was removed in Python 3.13, and a receiver image does not carry numpy either, so the mixer had no backend. The engine built a mixer even in passthrough mode, where it mixes nothing at all, and that is the mode the dub pipeline runs its source in — so playback failed before anything else could be tried.

  • Passthrough no longer builds a mixer. The path the player uses needs no audio backend of any kind.
  • The mixer has a pure Python backend for the four operations it needs, so translation works on these images with nothing to install. It costs about 30 ms of CPU per second of 48 kHz stereo audio.

Failures are no longer silent. The engine's stderr went to /dev/null. An engine that dies during its own imports has not opened its log yet, which is exactly why the failure arrived as one line with an empty log. The reason now reaches /tmp/piip_engine_stderr.log, the dub log, and the error box on screen.

Install

scp enigma2-plugin-extensions-piip_1.0.3_all.ipk root@RECEIVER_IP:/tmp/
ssh root@RECEIVER_IP "opkg install /tmp/enigma2-plugin-extensions-piip_1.0.3_all.ipk"

or, on DreamOS:

ssh root@RECEIVER_IP "dpkg -i /tmp/enigma2-plugin-extensions-piip_1.0.3_all.deb"

Settings, saved servers, bouquets and your API key are kept.

Checksums (SHA-256)

d95f8b0ea46144945614b6c0d4912661a013a0ec8d96e62033b7b96911086a4b  enigma2-plugin-extensions-piip_1.0.3_all.deb
176c94cec5eec7f60edd9f36db764a123a16776822e24e583d0930fbb32b9761  enigma2-plugin-extensions-piip_1.0.3_all.ipk

PIIP 1.0.2 — lists draw on images with an older MultiContent

Choose a tag to compare

@dreamboxone dreamboxone released this 23 Sep 16:31

The category and group lists were invisible on images with an older
Components.MultiContent.

Fixed

A list that loads but does not appear. The Stalker category screen showed
its title, 152 category(s) found and 7792 channels, with nothing between
them. A TemplatedMultiContent template is evaluated as one expression, so a
single argument the image does not recognise leaves the whole listbox empty
while the rest of the screen draws normally.

Two arguments were at fault on such an image:

  • MultiContentTemplateColor, which older builds do not have at all;
  • scale_flags on the pixmap entry, which they take as flags=BT_SCALE.

Both are now written into the template only where the image accepts them, and
what was detected is recorded in /tmp/piip_ui.log (list templates: colour=… scaling=…) so a future report names it directly.

This affects the Xtream and Stalker category screens, the M3U group screen and
the poster grid for films and series.

Install

scp enigma2-plugin-extensions-piip_1.0.2_all.deb root@RECEIVER_IP:/tmp/
ssh root@RECEIVER_IP "dpkg -i /tmp/enigma2-plugin-extensions-piip_1.0.2_all.deb"

or, on opkg images:

ssh root@RECEIVER_IP "opkg install /tmp/enigma2-plugin-extensions-piip_1.0.2_all.ipk"

Settings, saved servers, bouquets and your API key are kept.

Checksums (SHA-256)

d9fda7ea1052e0278de9d355c2ccffeb50c5b62c4b9a31c9f93ce955cfd0c689  enigma2-plugin-extensions-piip_1.0.2_all.deb
aecf840ea0c175c30515b1383f403041713384737c121505d9e3af07357bf83d  enigma2-plugin-extensions-piip_1.0.2_all.ipk

فارسی

فهرستی که بارگذاری می‌شود ولی دیده نمی‌شود. در صفحهٔ دسته‌های Stalker عنوان
و «۱۵۲ دسته» و «۷۷۹۲ کانال» نمایش داده می‌شد ولی وسط صفحه خالی بود. قالب فهرست
در انیگما۲ به‌صورت یک عبارت واحد ارزیابی می‌شود، پس تنها یک آرگومان که ایمیج
نشناسد، کل فهرست را خالی می‌کند در حالی که بقیهٔ صفحه سالم کشیده می‌شود.

دو آرگومان مقصر بودند: MultiContentTemplateColor که ایمیج‌های قدیمی‌تر اصلاً
ندارند، و scale_flags که آن‌ها به‌جایش flags=BT_SCALE می‌گیرند. حالا هر دو
فقط روی ایمیج‌هایی نوشته می‌شوند که قبولشان دارند، و نتیجهٔ تشخیص در
/tmp/piip_ui.log ثبت می‌شود تا در گزارش بعدی مستقیم معلوم باشد.

این اصلاح روی صفحهٔ دسته‌های Xtream و Stalker، صفحهٔ گروه‌های M3U و شبکهٔ
پوستر فیلم و سریال اثر دارد.

نصب: فایل را با scp در /tmp بگذارید و dpkg -i (یا opkg install)
بزنید. تنظیمات، سرورها، بوکه‌ها و کلید API حفظ می‌شوند.

PIIP 1.0.1 — works on images without sqlite3, and artwork on older images

Choose a tag to compare

@dreamboxone dreamboxone released this 22 Sep 18:59

Compatibility fixes for receiver images that could not run 1.0.

Fixed

Opening Live TV, Movies or Series did nothing on images without sqlite3.
Some python3 builds ship python3-core without python3-sqlite3. The
catalogue cache imported it at module level, so the whole list-screen import
chain raised ModuleNotFoundError: No module named 'sqlite3' and no list
would open. The cache is now optional: it reports itself unavailable and the
lists load from the provider as usual.

No artwork at all on images with an older Tools.LoadPixmap.
Every picture raised LoadPixmap() got an unexpected keyword argument 'size',
so backgrounds, icons, posters and channel logos were all missing. Artwork is
now loaded without that argument where the image does not accept it.

Both paths are covered by a new test suite, tests/test_image_compat.py.

Install

scp enigma2-plugin-extensions-piip_1.0.1_all.deb root@RECEIVER_IP:/tmp/
ssh root@RECEIVER_IP "dpkg -i /tmp/enigma2-plugin-extensions-piip_1.0.1_all.deb"

or, on opkg images:

ssh root@RECEIVER_IP "opkg install /tmp/enigma2-plugin-extensions-piip_1.0.1_all.ipk"

Settings, saved servers, bouquets and your API key are kept.

Checksums (SHA-256)

7feccdbcd1f7f8d3902de0db49f1c400e190b47473422780a3d998fcb8487ed1  enigma2-plugin-extensions-piip_1.0.1_all.deb
b15001d7c220e6adf00062ec88c54ac265d340a72329e50a96f74dd755436fd8  enigma2-plugin-extensions-piip_1.0.1_all.ipk

فارسی

اصلاح سازگاری برای ایمیج‌هایی که نسخهٔ ۱.۰ روی آن‌ها کار نمی‌کرد.

باز نشدن Live TV، Movies و Series روی ایمیج‌های بدون sqlite3. بعضی
ایمیج‌های پایتون ۳ بستهٔ python3-sqlite3 را ندارند. حافظهٔ نهان کاتالوگ این
ماژول را در بالای فایل import می‌کرد، پس کل زنجیرهٔ باز شدن صفحه‌های فهرست با
خطای ModuleNotFoundError می‌شکست و هیچ فهرستی باز نمی‌شد. حالا این حافظهٔ
نهان اختیاری است و فهرست‌ها مثل همیشه از سرویس‌دهنده خوانده می‌شوند.

نبودن هیچ تصویری روی ایمیج‌هایی با نسخهٔ قدیمی‌تر Tools.LoadPixmap. هر
تصویر با خطای LoadPixmap() got an unexpected keyword argument 'size' رد
می‌شد، پس پس‌زمینه‌ها، آیکون‌ها، پوسترها و لوگوی کانال‌ها هیچ‌کدام نمایش داده
نمی‌شدند. حالا در این ایمیج‌ها تصویر بدون آن آرگومان بارگذاری می‌شود.

نصب: فایل را با scp در /tmp بگذارید و dpkg -i (یا opkg install)
بزنید. تنظیمات، سرورهای ذخیره‌شده، بوکه‌ها و کلید API شما حفظ می‌شوند.

PIIP 1.0 — live translation for Enigma2 IPTV

Choose a tag to compare

@dreamboxone dreamboxone released this 21 Sep 16:31

IPTV on your Enigma2 receiver, translated into your language while you watch.

This is the first public release of PIIP. It plays M3U, Xtream Codes and Stalker
sources, and translates the channel audio live into Persian, Arabic, English or
Turkish through the Gemini Live API.

Which file do I need?

Your image File
DreamOS — Dreambox One / Two, DM900, DM920 .deb
OpenPLi, OpenATV, OpenViX, VTi, Zgemma and most others .ipk

Both are Architecture: all — one file installs on arm64, armhf and mipsel.

Install

scp enigma2-plugin-extensions-piip_1.0_all.deb root@RECEIVER_IP:/tmp/
ssh root@RECEIVER_IP "dpkg -i /tmp/enigma2-plugin-extensions-piip_1.0_all.deb"

or, on opkg images:

ssh root@RECEIVER_IP "opkg install /tmp/enigma2-plugin-extensions-piip_1.0_all.ipk"

The receiver restarts itself. Then open Menu → Plugins → PIIP.

Never done this before? The Getting Started guide
explains every step, including SSH and the API key.

In this release

  • Live speech translation with two independent volumes over the original sound.
  • Drift control: the translation engine speaks more slowly than dense live
    speech arrives, so it falls behind on talkative channels. PIIP now measures
    the backlog once a minute and clears it, keeping the translation with the
    picture instead of minutes behind it.
  • Silence is no longer sent to the model, which gives it the programme's own
    pauses to catch up in.
  • Nothing captured while a translation session is being negotiated is replayed
    afterwards, so a reconnect no longer leaves a permanent offset.
  • The information panel now fades five seconds after the picture appears — and
    stays up while a channel is still opening, so you can see what the receiver is
    doing.
  • A larger decoder buffer to absorb the short stalls that caused a few seconds
    of black picture every several minutes.
  • Films and series with resume, programme guide, bouquet export, subtitle
    download from OpenSubtitles and SubDL.

Space and memory, measured on a real receiver

16 MB installed. About 30 MB of RAM while playing, about 115 MB while
translating. Video is never re-encoded, so a 4K channel costs no more CPU than
an SD one. Full breakdown

Documentation

English ·
فارسی

Checksums (SHA-256)

93934c4fc09fda829d126d7326e28a929ded0cfa68dad99bec33c3998eccbf49  enigma2-plugin-extensions-piip_1.0_all.deb
85e97f04093d0abcecf9aa235a5108f138be0cf87e217baf5153647c4b9eca78  enigma2-plugin-extensions-piip_1.0_all.ipk

فارسی

آی‌پی‌تی‌وی روی رسیور Enigma2 شما، ترجمه‌شده به زبان خودتان در همان لحظهٔ تماشا.

این اولین انتشار عمومی PIIP است. منابع M3U، Xtream Codes و Stalker را پخش می‌کند
و صدای کانال را به‌صورت زنده به فارسی، عربی، انگلیسی یا ترکی ترجمه می‌کند.

کدام فایل؟ برای رسیورهای DreamOS فایل .deb و برای ایمیج‌های OE-Alliance
(OpenPLi، OpenATV، زگما و…) فایل .ipk. هر دو با معماری all هستند؛ یعنی یک
فایل روی arm64، armhf و mipsel نصب می‌شود.

نصب: فایل را با scp در /tmp رسیور بگذارید و dpkg -i (یا
opkg install) بزنید. رسیور خودش ری‌استارت می‌شود. بعد:
Menu ← Plugins ← PIIP

تا حالا این کار را نکرده‌اید؟
راهنمای شروع از صفر
همه‌چیز را قدم‌به‌قدم توضیح می‌دهد.

در این نسخه: ترجمهٔ زنده با دو ولوم مستقل، جبران خودکار عقب‌افتادگی ترجمه
(هر دقیقه اندازه‌گیری و پاک‌سازی می‌شود تا ترجمه همگام با تصویر بماند)، نفرستادن
سکوت برای مدل، محو خودکار پنل اطلاعات پنج ثانیه بعد از آمدن تصویر، بافر بزرگ‌تر
دیکدر برای جلوگیری از قطعی‌های چندثانیه‌ای، فیلم و سریال با ادامهٔ پخش، جدول
پخش، بوکه و دانلود زیرنویس.

فضا و حافظه: ۱۶ مگابایت روی رسیور، حدود ۳۰ مگابایت رم هنگام پخش و حدود ۱۱۵
مگابایت هنگام ترجمه. تصویر هرگز دوباره کدگذاری نمی‌شود، پس کانال ۴K بیشتر از SD
هزینه ندارد.
جزئیات