KinoAMP Change log
------------------

Versions from 0.24 are 26/32 bit neutral.

0.59 2024-05-17
 Fix missing parameter to OS_CallAVector in frontend which caused crash when ADFFS is present.
 Improve chunk logging.

0.58 2023-03-10
 Fixed crash when switching to full screen mode on some machines.
 Fixed internationalisation of "Go to" submenus.
 Prev/next buttons now work on chapters in DVDs (was only used in playlists).
 MPEG TS, ignore packets till a packet with a start flag is received.
 In DVDs, some chapters exists only to trigger a sequence of commands and are not intended
  to be played and do not define where to go afterwards, as a last resort now jump to root menu
  instead of giving up.
 Fixed lack of screen cleanup in full screen when menu is in 4:3 and title was in 16:9.
 Forgot to signal scale change to OSD when resizing the window so it would start acting
  on the wrong items in the on-screen controls.

0.57 2022-09-17
 Add AAC (ADTS) for MPEG TS files.
 Fix corner case causing internal memory corruption in multitasking mode.

0.56 2022-02-26
 Added on screen controls, shown when moving the mouse, useful for full-screen mode.
 Added neon YUV to RGB conversion routines, effects mainly noticable on Full-HD streams.
  On Pi3, 16-bit routine is about 25% faster, giving an overall fps increase of 20%.
  On Pi3, 32-bit routine is about 10% faster, giving an overall fps increase of 10%.
 Fixed (bi)linear scaling of ARGB15 and ABGR15 modes (i.e. 32K modes with 1-bit alpha channel).
 Added neon 16bpp (bi)linear scaling routines, highly noticable on scaling DVD to Full-HD.
  On Pi3, the routine is about 60%, giving an overall fps increase of 50%.
 Added neon YUV to YV16/YV12/NZ12/NZ21 conversion routines (overlays).
  On Pi3, the routine is about 250% faster, giving an overall fps increase of 20%.
 Fix DVD commands. Arithmetic is saturated.
 Fix DVD commands with resume cell.
 Fix DVD JumpSS_VTSM command (title part).
 Improved window resizing and size toggling.
 Fix issue where OSD is initially redrawn on background instead of overlay.

0.55 2021-07-28
 Added configuration of default language (in audio section).
 Play DVD directly from DVD drive (requires CDFSDriver 2.42 or a SCSI drive).
 Use cell duration for still cells without any still time.
 Fix IFO loading of titles without any menu.
 Support for interleaved VOBUs (like Star Wars opening scroll text in multiple languages).
  These are similar to multiple angles but without support for switching to another angle.
 Fix navigation issue (Star Wars bonus DVD in the photo gallery).
 Fix desync with PCI info causing long delays in menu buttons appeareance.
 Fix menu command LinkPTTN.
 Always started with angle 1 even when menu asked to start playing another angle.
 Menu may different button groups flagged for normal, wide, pan & scan and we must use
  the one flagged as normal.
  Subtitles/menus for widened/pan-scanned versions are overlays of the video
  in their corrected dimensions and aspect ration and since I just merge the subtitle/menu
  with the original image I always use the normal subtitle/menu, hence I must also
  use the matching button group.
 Define separate subtitles for subtitles with multiple delayed set of commands.
  This fixes 'Le ruban de Moebius' which fist shows the subtitle as invisible
  before showing it with its true colors.
 Fix to handle invisible menu buttons:
  Basically, A subtile is a 4 color image, with 4 transparency levels and with
  the 4 color codes mapped to YUV colors from a palette of 16 colors stored a title level.
  Now a menu is just a forced subtitle and buttons are rectangles within them
  that must be displayed when selected in their own 4 transparency levels and color mappings.
  So you just show the button that is selected, right?
  Wrong, you must also show the rest of the menu with his transparency levels/color mappings.
  This allows for menus where you mask/dim everything on the video except for
  the rectangle corresponding to the selected button by making that button invisible.
 Aspect ratio in DVD IFO overwrites aspect ratio of MPEG stream.
 Fix to display only a single forced subtitle when multiple languages are present.
 Fix for audio remaining muted if no audio in first VOBU.

0.54 2020-12-23
 DVD IFO structure is now decoded.
 Titles and chapters can now be selected and chapters are read in the correct order.
 DVD menus are working.
 Fix crash when toggling scrollbars on/off.

0.53 2020-11-27
 Add option to prevent usage of overlays in multitasking mode.
 Finer seek positionning.
 Use wheel mouse to control volume.
 Fix a NPE caused by subtitles.
 Fix for some TS streams failing to loop.
 Fix slight shaking of image in Blend (x2) deinterlacing mode.
 Switch to another subtitle channel didn't show active subtitle, was waiting for the next one.
 Fix broken angle support.

0.52 2020-04-05
 Fix "Could not find a starting point in audio/video" error on slow starting medias like DVDs.
 Subtitles from non-displayed channels were not discarded once expired.
 Handle VOBs with interleaved angles (use Ctrl+Shift+Tab to cycle).

0.51 2020-03-25
 Add neon version of (bi)linear interpolation in 16M colors.
 Read DVD subtitles (use Ctrl+Tab to cycle). Limitation: colors info not known.
 Drop VIDEO_TS folder to read main VOBS of DVD as a single one.
 Add pane flag to toolbar to prevent RISC OS from continuously attempting to bring the window
  before its toolbar while dragging the title bar.

0.50 2019-08-19
 Optimise de-interlacing.
 Add neon versions of idct, motion compensation and de-interlacing.
 Some of the previous changes where limiting the display rate while preforming speed tests
  with the display all frames options.
 Fix ZeroPain for .ts streams without program table.
 Fix in frame timestamps, most where lost in TS streams.
 Fix libmpeg2 aspect ratio, ignore display extention since we show everything.
 Fix rounding of chroma motion vectors.
 Improve a little bit handling of corrupted streams.

0.49 2019-08-04
 Support for MPEG-TS streams (MPEG-1/2 video only, MP2/MP3/AC3/LPCM audio only).
 Fix 420 chroma issue in blend deinterlacing routines.
 Cope with aspect ratio and image size changes.
 Internal buffer increased from 1.75MB to 4MB to cope with larger spacing between audio packets
  on HD streams.
 Try to spend more time on decoding next frame(s) instead of waiting to display current frame.
 Improve frame/field dropping decision in x2 deinterlacing modes.
 Fix issue with output frozen on start due to absence of timestamp on first image (while
  sound as timestamp).
 Fix issue with player massively dropping frames at beginning thinking he is far too late.
 Fix issue with player not always rendering the 1 or 2 last frames.
 Faster output to yuv overlays.
 Fix issue with aspect ratio when resizing window with overlays.
 Fix issue in playlist with videos stopping to use overlays after playing a video where only
  the sound part is supported.
 Initialise chroma planes to 0x80 to make skipped blocks at the beggining of corrupted streams
  less visible (green blocks).
 Redesign slightly libmpeg2's slice.c to better detect and report out of bounds motion vectors.

0.48 2018-08-26
 Add support for NV12, NV21, UYVY, YUY2, YV12, YV16, (A|T) (RGB|BGR) (12|15|16|32) overlays.
 Add support for screen modes with alpha channel (A (RGB|BGR) (12|15|32)).
 Fix for using the first configuration (i.e. non-alpha one) when more than one is possible
  for a given screen resolution.
 Slight improvement of bilinear scaler for 16M modes by inverting scaling order.
 Improved linear scaler speed.
 Fix incorrect required video memory size.
 Restore current desktop mode on exit instead of configured wimp mode.
 Fix zoom reset when rewinding/fast forwarding.

0.47 2018-03-03
 Replaced blend deinterlacing algorythm with a better one.
 Added aspect ratio alteration with pan & scan or stretching.
 Improved fullscreen performance: old code was to switch banks and wait for VSync just
  after plotting the screen as it is not safe to write to the screen againt before a VSync
  occurs. Now instead of waiting for the VSync we save the VSync counter
  (OS_Byte 176) and just before plotting the next image we wait for the VSync counter to change,
  which likely already occured while decoding the next image.
 Refresh buttons state in control panel when switching to multitasking mode.
 Added time spent waiting for VSync to logged statistics.
 Update TimerMod to version 4.17 for compatibility with latest machines.
 Increased circular input buffer from 1MB to 1.75MB otherwise audio packets are read to late
  for HDTV.
 Fixed crash caused by alignment issue in (bi)linear scalers for 16-bit colour modes.
 Fixed redraw issues when menu displayed over part of the image when bi(linear) scaler is used
  with vertical scaling = 100%.
 Fixed flashing while zooming in full screen, previous image was not cleared in all screen banks
 Fixed flashing in full screen with IntelDMA active (DMA transfer list changes with screen bank)
 Fixed long standing scrolling issues.
 Fixed banner not displayed in full screen due to screen banking.

0.46 2017-03-09
 Fixed issues with selection of RGB screen modes.

0.45 2017-03-02
 Fixed issues with selection of RGB screen modes.
 Rewrote deinterlacing with 4 methods: None, Blend, Blend (x2), Fields (x2).
 Added new scaler methods: Linear & Bilinear.
 Use tripple-buffering (memory permitting) and VSync screen updates in full-screen modes,
  which is a little bit slower but eliminate tearing effets (if rendering is not too slow).
 Improved speed of internal scaler in 4K, 32K, 64K on post RISC-PC machines.
 
0.44 2016-05-29
 Read in chunks of 128K instead of 64K as it seems to make playing over LanManFS less jerky.
 Sound could become out of sync by several seconds when large delays occured and sound buffer
  became empty.
 When fitting to full screen and a 1:1 pixel aspect ratio, if AnyMode is present, instead
  of zooming use image size as screen mode size and let the hardware do the resizing for us.
 Fixed aspect pixel ratio in multitasking mode when size is not locked to window size.
 Activate bug fixed stacking of decoded frames.
 Reorganized player.h to work around a bug in C compiler 5.61.
 Improved speed of internal scaler.
 Added deinterlacing by doubling frame rate (update odd lines, then even lines, ...).
 Updated defaults to be more appropriate for newer machines.

0.43 2015-12-03
 Support for 4K colour modes.
 Automatic detection of inverted colour order (RISC OS 5.21+).
 Sprites with inverted colour order are now save using the appropriate RISC OS 5.21+ mode words.
 Fixed crashes in mono 32K fast zoom x4.
 Fixed for incorrect initial pane position.
 Fixed null pointer dereference on startup.
 Invert RGB and BGR in doc (!Paint signals RISC PC compatible sprites as BGR).

0.42 2010-12-19
 Configuration read/write rewritten to use common h.config and c.config files
  in both KinoAmp and KinoFront.
 Split front end configuration setting in several windows.
 Use 4 replay modes (multitasking, desktop, full-screen, manual) with
  individual settings (scaler, monochrome, dither, ....).
 Use F5 to F8 to switch from one replay mode to another.
 Allow default fast zoom (50%, 100%, ... 400%) other than 100% in each mode.
 Allow best fit zoom in full-screen mode to select the most appropriate
  fast zoom (50%, 100%, ... 400%) for the played file (small pictures are zoomed
  to fill the screen, pictures larged than the screen are displayed at 50%).
 Some corrections to ensure that more combinations of replay modes, scalers,
  fast zoom and hardware acceleration modes work correctly.
 For unsupported colour depth or less than 256 colours, decode to 256 greyscale
  sprite and plot with system scaler (OS_SpriteOp 52), instead of returning
  an error.
 Added an option to take into account pixel aspect when lock aspect ratio
  is active (only with 'lock size to window' or 'fit screen').
 Fixed YUV444 in 64K modes.
 Added switch to output RGB as BGR.

0.41 2009-11-15
 Modified compilation options to avoid using rotated halfword haligned LDR
  which is not ARMv7 compatible.
 In assembler parts, use LDRH/STRH instructions when available and working (A9, Iyonix, ...).

0.40 2009-01-13
 Added support for 64K colour modes.
 Fixed crash when switching from colour to monochrome with OSD volume bar visible.
 Fixed sound become muted when looping (AMPlayer only).
 Ensure logging is off by default to allow multiple windows.

0.39 2008-06-07
 Fixed bug truncating skin names introduced in previous version.
 Altered behaviour of Previous/Next in Random mode.
 
0.38 2008-05-25
 Extended internal filename buffers to 1024 chars and leafnames to 256 chars.
 Various string/filename buffer overflow fixes.
 Added full screen/desktop toggle with Select double-click.

0.37 2008-02-25
 New rewrite of frame skipping process, fixes some rare instances of attempting to decode
 frames where the reference frames were skipped, and fixes "small pauses" seen on some systems.

0.36 2008-01-26
 Added dynamic start/stop of audio saving (key Ctrl+A).
 Added dynamic colour/monochrome switching option (key C).
 Added frame rate to OSD timing info.
 Fix to avoid infinite waits due to corrupted stream timing info.
 Better sound stability, increased stack fifo from 256 to 1024 packets
  and refined frame skipping process.

0.35 2007-03-11
 Added support for the very rare MPEG-2 YUV444 colorspace.
 Added extra checks on MPEG stream corruptions.
 Fixed looping boundary in libmpeg2/slice.c which sometimes caused
  the non-decoding of the last block in the slice.
 Modified handling of corrupted streams to avoid the error
  "Decoding waiting indefinitely after audio/video".

0.34 2006-02-27
 Reorganised the code to be able to add support for other file formats,
  needs more reorganisation though for non-streaming formats (AVI, ...).
 Code grouped by sections: main code, colorspace, codecs, libmpeg2.
 Added switch (See Doc.BuildSwitches) to use 1/100s standard timer instead of higher resolution
  ones (timer1 or Iyonix HAL), non of which being available for Select-32 at the moment.

 Set palette to 256 greys in full screen 8bpp when Monochrome options is set.
 Added monochrome colour conversion routines for 8bpp and 8bpp-grey.
 Added support for brightness and contrast in all monochrome color conversions.
 Modified 8bpp and 8bpp-grey colour conversions for best fit of palette
  in YUV space instead of in RGB space (build switch).
 Fixed YUV422 to 16bpp conversions at 50% and 300%.
 Fixed YUV422 to 32bpp conversion at 50%.

 Libmpeg2 now totally ignore chroma blocks when Monochrome options is set
  to give a large performance boost.
 Libmpeg2 API rewritten to move calls to display functions out of the library
  with new sanity checks to avoid crashes after seeking to a new position.
 Take account of MPEG fields repetitions for frame duration (30->24 fps adaptation).

 Display the 'NoVideo' drawfile if audio supported but not video part.
 Playlist option Random added to the control panel.
 Reorganised OSD, display msgs, must use 'T' to toggle timecode on/off.
 Modified audio code to pass messages to OSD instead of displaying annoying msg box.
 Added stream selection in the window menu.
 Added 'Fit to Screen' option for an automatic zoom to the screen dimension
  in non-multitasking rendering.
 Modified audio-video sync to take into account of large gaps between polls
  caused by desktop activity.
 Added 'Scaler' and 'Force use of Scaler' options for machines with hardware accelerated cards.
 Iyonix specific code for accelerated display at 100% zoom with the help of IntelDMA module.
 

0.33 2004-09-25
 Data loading now uses OS calls directly instead of c library functions.
 This removes a stage of buffering and gives a noticable speed increase for
  larger picture sizes with high bitrate streams.
 Also a small optimisation to the idct functions.
 Thanks again Andr.


0.32 2004-06-02
 Thanks to Andr Timmermans for this release.
 Fixed bug that caused pts to be sometimes associated to the wrong frame.
 Rewrote PES demuxer to stack both video and audio packets to avoid
  loosing audio packets when player buffers are full.
 Rewrote PES demuxer buffer filling and packet unstacking so that buffer remains
  as filled as possible.
 Rewrote audio handling to support both AMPlayer and DiskSample.
 Rewrote debugger logging for a neater display, added bits 8 to 12
 to -d debugging options:
   bit value
    8  0x0100  : print demux buffering stats.
    9  0x0200  : print demux video stats.
   10  0x0400  : print demux audio stats.
   11  0x0800  : print demux ignored packets warnings.
   12  0x1000  : print remaining demux stats.
   option -d0x0020 is equivalent to -d0x1f00.
 PES demuxer extended to look out for other audio formats like AC3, DTS
  or linear PCM in the hope that DiskSample supports them one day.
 Added automatic audio channel selection for streams that start with non-zero channel number.
 Fixed position bar handling.
 Multiple player windows now optional.
 Audio modules checked and loaded on demand.

0.31 2004-04-10
 Fixed bug that caused erronous audio resync due to zero pts in audio packets.
  Effect was regular pauses in play with re-sync option on.
 Path variable used in Obey files to overcome command line length restriction
  on pre RO4 systems.
 Reads desktop mode before changing to full screen so correct mode is restored
  if it was changed after starting the player.
 
0.30 2003-11-16
 Fixed small bug introduced in 0.28 that made the player fail to find
  the sequence header for a few files.
 
0.29 2003-10-18
 All files created by the player and front end are now stored in
  the Choices directory. The front end no longer needs to write the
 RunKino file as all options are passed to the player via the choices
  file. Minor corrections to application Obey files.
 Linked using StubsG to no longer force the use of the 32 bit libraries on older machines.
 A few minor changes to positions in choices window.
 
0.28 2003-10-12
Player:
 Demux code changed to avoid buffer and fifo overflow errors.
 AV sync code changed as a result of the demux changes.
 Full screen - desktop switch.
 No longer quits to run a file dragged to the player window.
 Basic playlist support.
 Interactive help.
Front End:
 Playlists dragged to iconbar icon are passed to the player.
 Simple playlist creation facility added.
 Interactive help.
 
0.27 2003-04-28
Player:
 Correct positioning of control panel for different toolsprite sizes.
 Divide by zero fixed for zero sized window drags.
 New option 'Auto exit' to stop the player exiting if required.
 Minimum screen size can now be set for auto mode.
 Minor changes to menu.
Front End:
 Auto exit and loop options added.
 Resolution menu enabled for auto mode to set minimum screen size.
 Minor changes to menu.
 
0.26 2003-03-29
Player:
 Major changes to the video decoder to support mpeg2 field pictures and to
  bring it in line with the latest libmpeg2 version. Additional video drivers
 to support field pictures.
 The above work was by Andr Timmermans.
 Dynamic area usage reduced.
 Fast forward and rewind functions.
 Simple control panel when multitasking.
 Set volume option.
 Read options directly from Choices file with -f option.
 Save current settings (choices). 
Front End:
 Support for selecting control panel skin added. Changed the
  options window shape as it was getting a bit too tall.
 Set starting values for volume,brightness,contrast,colour.
 Runkino obey file now uses -f option.
 Reload choices after player updates choices file.
Docs:
 Updated with extra options above.
 
0.25 2002-12-28
 Interim release to fix problem with some mpeg2 sequences.
 
0.24 2002-12-22
Player:
 32 bit compatibility. TimerMod now used instead of hardware Timer1.
 AMPlayer instance now created to allow multiple clips to be played when multitasking.
 Removed setting of frame drawer from display initialisation as
  it was being performed by the colour table building functions.
 Audio mute added.
Front End:
 32 bit compatibility.
Docs:
 -m option description added. Not sure how it got missed.
 Angle brackets now display correctly in html guide.
 Audio mute added.
 
0.23 2002-11-23
Player:
 Improved multitasking support using an additional frame plotting function
  which allows plotting of redraw rectangles correctly and as a bonus, also
  supports variable x/y scaling. No need for different levels of multitasking
  as it now works correctly.
 Restart film and Loop commands added.
Front end:
 Support for single multitasking switch and aspect/size switches.
 
0.22 2002-11-05
Player:
 Multitasking whilst waiting enabled with a separate option to multitask
  when paused. 32k dithering support added with Hi-Q 200% mode. Both these
  by Henrik Bjerregaard Pedersen.
 Extra multitask option on player's menu.
Front end:
 Extra multitask option added.
 Dither option added.
 
0.21 2002-07-17
Player:
 Main buffer empty routine now does not check for valid PTS.
 Main buffer increased to 1Mb and uses dynamic area.
 Following by Henrik Bjerregaard Pedersen.
 Multitask while paused.
 On-screen display gives playing time and frame count.
 Draw file named 'banner' displayed prior to play when multitasking.
Front end:
 Multitask option added.
See the Changes021 file in the source distribution for details.
 
0.20 2002-06-27
Player:
 File information is saved to <Kino$Dir>.Info on exit.
Front end:
 Menu option to open a window that displays information for the last file played.

0.19 2002-06-20
Player:
 Zoom adjustable whilst playing, 'z':increase, 'x':decrease.
 50%, 300%, 400% zoom modes added.
 OSD fixed for pictures that are too large for the screen.
Front end:
 Zoom selection now a menu to more easily accomodate more than 2 options.
 Mono option sets -b100,100,0 switch to force 256 modes to use greyscale
  drivers from startup.
 Separate zoom settings for Desktop and Manual modes.
 Opening choices window when already open brings it to the stack top.
 Iconbar-Adjust opens 'Saved' directory.
 Main window Menu opens Iconbar menu.

0.18 2002-05-29
Player:
 256 colour sprites are now saved with a palette.
 The maximum colour depth can be set for Auto mode. Separate colour settings
 for Auto and Manual.
Front End:
 Maximum colour depth in auto as for player.
 
0.17 2002-05-23
Player:
 (Most of these were by Andr Timmermans and Henrik Bjerregaard Pedersen)
 Improvements to speed of motion compensation, video, and idct code.
 Correction of inability to sync on certain clips.
 Addition of volume control.
 Option of additional sync tracking.
 Auto screen aspect ratio allowed range increased from 5:4-3:2 to 6:5-3:2.
 For 256 colour modes: faster draw routine with dithering, zoom, and
  sprite save.
 Faster idct routine.
 On screen display for control of Brightness, Contrast, Colour, Volume
 Monochrome video drivers.
 Numerous other corrections and improvements, see the Changes file in
 the 0.17 source code distribution.
Front end:
 Clears comment and debug strings before reloading choices file.
 Addition of audio re-sync and mono options.
(6.10secs 24.27fps)

0.16 2002-03-22
Zoom disabled when in Full Screen Auto mode.
"Setup..." changed to "Choices..." in Iconbar menu.

0.15 2002-03-04
Save frame as sprite added for 16bpp and 32 bpp. Both sprites and soundtrack
 saved to <KinoSave$Dir> set in the !Boot file.
Full screen auto mode added.

0.14 2002-03-02
Speed-up's to Video, and Motion. New routines for idct add and copy. Zoom
 mode. All courtesy of Andr Timmermans.
"-d1" now does not wait if frame is early, so that true speed of video decoder
 can be determined for small pictures.
Addition of separate setup application to avoid editing the Run file.
Some motion functions process 2 bytes at a time.
(7.05secs 20.85fps)

0.13 2002-02-19
Screen Blanker restore fixed (stronghelp manual mutter mutter).
Skips B and P frames as required without the need for a video speed control.
Critical arrays now quad word aligned.
Minor motion compensation speed up.
(7.43secs 19.79fps)

0.12 2002-02-09
Screen Blanker disabled.
Cursor disabled for full screen modes.
File check and error handling improved.
Demux rewritten to handle widely differing packet sizes.
Video fifo now uses input buffer instead of separate allocation.
Audio channel selection added.
Motion checks for word aligned source for put8/16
(7.50secs 19.60fps)

0.11 2002-02-02
Increased number of video fifo's to 128 to cope with clips with a long lead in.

0.10 2002-02-02
Motion compensation now accesses destination as words.
(7.60secs 19.35fps)

0.09 2002-01-18
Allow -d1 in the desktop.
Use timer for AMPlayer shutdown delay.
Added call to obtain buffer usage from AMPlayer.
(8.39secs 17.53fps)

0.08 2002-01-10
Stream buffering fifo's, correct time stamp usage.
256 colour mode supported. (Naff)
(8.70secs 17.01fps)

0.07 2002-01-01
Video initialisation rewritten.
(8.79secs 16.83fps)

0.06 2001-12-27
16 bit vars changed to 32 bit for the DCT arrays.
(9.11secs 16.25fps)

0.05 2001-12-24
Video structures simplified.
(9.66secs 15.31fps Using my video drivers)
(11.45secs 12.92fps Using the original yuv2rgb drivers.
This will be similar to the original for speed.)

0.04 2001-12-17
16/32bpp full screen and desktop operation.
Mode selection via command line.
     
0.03 2001-12-06
Video output rewritten.

0.02 2001-11-20
Replaced mpg123 with AMPlayer.

0.01 2001-11-20
Removal of unused code.
     
0.00 2001-11-06
No changes from Kino 0.3 except to compile under my gcc setup.


