Blast from the past: a new version of Odyssey browser for AmigaOS4
Date 3-Jan-2022 11:27:54
Topic: software OS4
|Odyssey 1.23 rev.5 for AmigaOS4|
About 5 years passed since the last os4depot release of the AmigaOS4 port of Odyssey browser originally written for MorphOS.
For that time there were few spikes of additional work done on port and beta-versions were released on amigans.net for those who were brave enough.
But now (at last) after some small updates done lately there is a normal os4depot release so everyone can use the new version.
And if by some luck there will be some newbies they will have the latest version of what we can give at the moment.
Grab it from the os4depot while it is hot!
!! NOTE !! FRESH INSTALLATION IS A MUST !! NO "overwrite" WAY !!
Read more for changes...
The changes are massive in all the areas. That is what is new in 1.23 r5 in comparison with the older 1.23 r4 release:
-- Source code with all amigaos4 specific changes and custom 3d party linker libraries are on GitHub now: https://github.com/kas1e/Odyssey/.
All kinds of instructions and how-to are there as well so everyone can compile it and contribute.
-- Refactoring and cleaning of sources such as:
-- proper starnard debugging everywhere : added cross-platform D(bug("...")) define (see Base/debug.h), thus on OS4 always use DebugPrintF() instead of kprintf() and get rid of Clib2's libdebug.a
-- get rid of libaos4deps.a, which contain sttcpy() and DoSuperNew() realisations, those functions now in separate object.
-- get rid of CyberGraphics everywhere in favor of graphics.library (c) Capehill
-- Rewritten DoSuperNew() function to use DoSuperMethodA() directly instead of DoSuperMethod(), as the later internally do call the same DoSuperMethodA().
So we skip that step to make DoSuperNew() be more efficient with less stack space in use. Thanks to Thore for the hint and Oliver for explaining.
-- a bit better locale_cleanup (c)
-- move opening of asyncio.library to main.cpp same as other libraries, just to make things be cleaner (thanks to Javier for an idea)
-- Application.library previously got v1 of the interface, but for some time it should be 2, fixed.
-- actual build dates for $VER everywhere (version, aboutbox, and about.html)
-- WebKit revision number is now presented in AboutBox too
-- Bunch of other small changes. See GitHub commit logs for details.
-- Recompiled Odyssey with GCC 11.1.0 and latest aos4 SDK 53.34 (2021-12-25). That means new MUI, DOS, Exec, pthreads, and co.
As one of the positive results is the size of the unstripped binary starts to be smaller on 3MB (60MB instead of 63MB). Stripped one is 49MB.
-- Added support of compositing video in fullscreen mode. Work done by Ami603 with help from Capehill & Hans De Ruiter.
- You can have as many videos in different tabs as you wish in fullscreen, not just one as with overlay (be it P96 or CGX5).
- Capehill also rewrote the media player's AHI part to use AHI device API, instead of AHI library API: No exclusive locks of audio hardware from Odyssey anymore with any AHI settings.
So now you can play many accelerated videos in different tabs and run your AmigaAMP or Tunenet if there are needs.
- Changed a bit backfill code, so when we are in compositing video mode and hit f11 to go to real fullscreen, then no left/right and bottom (when hit middle mouse button to hide player's GUI) borders visibly.
- Mimic usual video-players behavior: if we are in full-window playback, and mouse cursor over the video, then after 2 seconds of inactivity we hide mouse pointer.
Moving mouse or clicking mouse buttons made the cursor be visible again.
- When we in accelerated full-window playback, then we disable screen blankers and enable them back once we exit from full-window playback.
- And some additional fixes there and there which are not worthy of note.
-- Major changes in whole Video/Audio support:
- Thanks to Frank from AmiBoing/EntwicklerX Odyssey now uses Frank's real amiga shared libs for all FFmpeg parts handling video/audio in the browser. That in comparison with my older static FFmpeg compile mean:
- We have now FFmpeg 2.2.16 instead of an older 2.2.1 (why not 3.x and 4.x ? Because since 2.2.16 some decoders start to be slower).
- Binary of Odyssey is smaller on 5MB now, as no FFmpeg code is built-in, that code is in the shared libs instead.
- Frank's version recognize Altivec unit and if available, uses the Altivec code automatically (so theoretically those ones who has Altivec machines can have better speed in video playback)
All the shared libs are also placed in the LIBS folder of Odyssey and will be used from there now, so users will have no issues. But of course, you can move them all to system LIBS: directory if you wish: AmigaOS4 will
firstly search libs in the LIBS: directory of Odyssey, and if nothing is found then the system's one.
- incorporated fix for memory leak in ac_free_video_decoder done by Piru on "acinerella" (ffmpeg wrapper simplifying work with FFmpeg: https://github.com/astoeckel/acinerella/)
- incorporated some change which Deadwood did for 1.25 version back in past named "Improved audio/video sync code in MediaPlayer"
-- Enabled WebP support.
-- Fixed bug in Odyssey with WebP rendering being in blue color (Cairo expect ARGB, no needs for byteswap) (c) Petrol.
-- added APNG (animated png) support. Code taken from today's WebKit source code and adapted to our version + added .apng mime-type as well.
For test visit https://en.wikipedia.org/wiki/APNG and see if animation works
-- Fixed dangling pointer issue with WebPreferences, which was responsible for the "Conf" directory string becoming random garbage (c) Hans de Ruiter
The issue was here for a long time, just with older GCC we were lucky enough to not step in.
-- Fixed lame crash on exit happens when you use a beta of MUI and it brings you an "expire" window.
-- Major improvements in spoofing area by Javier: new Spoofing preferences. Together with inbuild (and not editable) default Odyssey's user-agent, you can now add/edit your own ones.
You also can choose what user agents you want to show on the menu and which didn't.
All the user-agents saves in the 'useragents.prefs' placed in Conf , just like 'userscripts.prefs' or 'searchengines.prefs'.
Also added a bunch of new and up2date user agents to "spoof as" by default (le iPhone OS 12.4 Nintendo Wii etc)
-- Old version of Cairo we use till now didn't use Semaphores, but pthreads instead. Removed pthreads usage in favor of os4 semaphores.
That theoretically can bring some speed and may have some impact on MediaPlayer. Also recompiled Cairo with libpng16 now.
-- Changed in prefs/media "webm (vp8)" on "webm (vp8, vp9)" as we can play both.
-- add functionality to disable audio/video MP4 support in Preferences/Media (handy when one wants to save mp4 instead of playing in-browser) from 1.25 (c) Deadwood.
Enabled by default same as before.
-- In the prefs/media enabled by default WebM, Flv, and Ogg (before they were disabled), so everything works out of the box.
If users wish to not have video/audio be played in the browser but to have downloads instead, then those options can be disabled.
-- Added option in prefs/secure to allow unauthorized self-signed certs (while not secure it is still HTTPS).
-- Added support for 4th and 5th mouse buttons for stepping backward (4th) and forward (5th) through the browser history (like in IBrowse).
-- Fixed bug in Cairo library caused skippable DSI on some sites in cairo_clip_intersect_rectangle_box() by adding related patches from the latest version of Cairo.
-- Replaced old, statically linked, Pixman library v0.32.4 by newer v0.36.0 from Salas00: https://github.com/salass00/pixman_lib
Salas00's version is a real amiga native shared library and has AOS4 native TLS (thread-local storage) implementation, which means that rendering is done now not from the same thread, but from different ones, => things can be faster.
New pixman-1.library coming with release archive in the LIBS directory, so no action needs, all continue to work out of the box. Thanks, Salas00!
-- Fixed nasty bug with missing TAG_DONE in the Dtpic object creation. Before it works by pure luck: If the memory following the unterminated tag list contains 'lucky' or invalid tag values then nothing bad happens.
But a single 'unlucky' (but valid and possibly dangerous if not used correctly) tag value may cause unpredictable havoc (c) Thore.
-- incorporated some change which Deadwood did for 1.25 version back in past named "Free locale regardless of application creation".
-- Added script from Walkero to fix GitHub a little so it didn't look _that_ broken on our old WebKit core.
-- new scripts for youtube from MorphOS guys (c) Andrea (?), so to make accelerated video player works again with changed youtube.
1). Delete in your scripts Youtube Fullscreen Fix and Youtube HTML5 Converter. Restart Odyssey and add again but this time new scripts (so allowed sites and stuff will be new ones)
2). Add to URL preferences http://youtube.com with spoof as Ipad 6.1. So it will always switch to the mobile version
3). Now on any video when you click on any part of the video, you will have in the right/bottom area gadget to expand the video: clicking on it will bring our accelerated media player back.
-- Notification titles are now localized as well, see OWB.cd for MSG_NOTIFY_DL_COMPLETED, MSG_NOTIFY_DL_CANCELLED and MSG_NOTIFY_DL_FAILED (c) Javier.
-- Updated catalogs
-- Updated curl-ca-bundle.crt (https://curl.haxx.se/ca/cacert.pem , 26 Oct 2021)
-- Updated codesets.library to the latest one (6.21, 16 Jan 2018)
-- Updated to Curl 7.80.0 (10th of November 2021)
-- Updated to OpenSSL 1.1.1m (14-Dec-2021) (thans MicJT)
-- Updated to RTMP 2.4
-- Updated to SQLite 3.34.0 (2020-12-01) instead of old v3.7.5 (2011-02-01). AmigaOS4 port by Steffen Gutmann.
-- Updated to libFreeType2 2.11.1 (02-Dec-2021)
-- Updated to libXML2 2.9.12 (13-May-2021)
-- Updated to libXSLT 1.1.34 (30-Oct-2019)
-- Updated to libWebP v1.2.2-rc1 (18-Dec-2021)
-- Updated to libPNG 1.6.37