Bug 1493

Summary: GLMediaPlayer/GraphUI: Support Displaying Text/ASS Subtitles
Product: [JogAmp] Jogl Reporter: Sven Gothel <sgothel>
Component: graphAssignee: Sven Gothel <sgothel>
Status: RESOLVED FIXED    
Severity: normal CC: sgothel
Priority: P4    
Version: 2.6.0   
Hardware: All   
OS: all   
Type: FEATURE SCM Refs:
6c67d73dc6b9e49bdd406902e533be91db1a3b0a f92f72adef6abc76dce7eecf6c058e8d43d3add9 0f30aa0995aed0afa610efd49ab8f7ea26fa6db0 9aeff8cb3113729adcb5910061015a88ac827002 28e5b66e6e201259c6ad240552045314d2072595 c5bca1f0dba2540088e8e2a90d720fdbc4870b30 3e95c1994d363bc137ffcf548fd3751ac500ac7b 9a21e23b3296eb481bcb407d740e822ad11ac7cd 020f998cad685ce2267751196528b31ce939764c 020f998cad685ce2267751196528b31ce939764c 7928ed90104f71fb53ae8201b3140b8e347b83ee 4ba099b97df41be220c4b2816c728e6b8cc1b037 gluegen 36f595b37220976125222f7f5b3dbfc74df163e0 gluegen d9604cf4687c3f4e14967ee748749c784fd1578f 119a9bf8c474ec8d7db11235f90a3e266c911e1e
Workaround: ---
Bug Depends on: 1492    
Bug Blocks: 805    

Description Sven Gothel 2024-01-31 10:54:26 CET
Text/ASS & Bitmap Subtitles shall be made available via FFMPEGMediaPlayer implementation and utilized via GraphUI MediaButton as well as via the full feature widget MediaPlayer.
Comment 1 Sven Gothel 2024-01-31 10:58:58 CET
Will address bitmap'ed subtitles in a followup issue.

+++

commit 6c67d73dc6b9e49bdd406902e533be91db1a3b0a

    GLMediaPlayer/FFMPEGMediaPlayer: Add working subtitle (text + ass/saa) support via FFMpeg
    
    TODO:
    - We may want to refine subtitle PTS handling
    - We may want to support bitmapped subtitles

+++

commit f92f72adef6abc76dce7eecf6c058e8d43d3add9

    GraphUI MediaButton/MediaPlayer-Widget: Add working subtitle (text + ass/saa) support via GLMediaPlayer/FFMPEGMediaPlayer


+++

commit 0f30aa0995aed0afa610efd49ab8f7ea26fa6db0

    FFMPEGMediaPlayer (native): Set used sid to none if not selected (missed)

+++

commit 9aeff8cb3113729adcb5910061015a88ac827002

    FFMPEGMediaPlayer (native): Simplify subtitle handling in readNextPacket0()

+++

commit 28e5b66e6e201259c6ad240552045314d2072595

    GraphUI MediaButton: Clear cached subtitle data on uninit and init from GLMediaPlayer

+++

commit c5bca1f0dba2540088e8e2a90d720fdbc4870b30

    Cleanup GLMediaPlayer.EventMask.Bit handling in GLMediaEventListener implementations: Either Uninit, Init, Pause or Play (exclusive)


++

commit 3e95c1994d363bc137ffcf548fd3751ac500ac7b

    FFMPEGMediaPlayer/GraphUI MediaButton: AVSubtitles's start/end are relative to pts [ms] (fixed); Use ASSEventLine packets within proper pts only.


+++
Comment 2 Sven Gothel 2024-01-31 11:02:34 CET
commit 9a21e23b3296eb481bcb407d740e822ad11ac7cd (HEAD -> jausoft_01)

    GraphUI MediaButton: Add blending below subtitle, allow setting color/blending and subLineDY; MediaPlayer: Add full infoLine toggle with click on infoBox
Comment 3 Sven Gothel 2024-02-02 12:12:28 CET
commit 020f998cad685ce2267751196528b31ce939764c (HEAD -> jausoft_01, jordan/jausoft_01)

    Bug 1493 - Text/ASS Subtitle via MediaButton/MediaPlayer Alignment defaults to CenterHoriz, also support Left.
    
    MediaButton: Also cleanup local vars in layout
Comment 4 Sven Gothel 2024-02-03 03:04:23 CET
commit 020f998cad685ce2267751196528b31ce939764c (jordan/jausoft_01)

    Bug 1493 - Text/ASS Subtitle via MediaButton/MediaPlayer Alignment defaults to CenterHoriz, also support Left.
    
    MediaButton: Also cleanup local vars in layout

+++

commit 7928ed90104f71fb53ae8201b3140b8e347b83ee

    Bug 1493: Supply language code to SubtitleEvent, perhaps allowsing player to select font for ASS/Text rendering; Remove GLMediaPlayer's getStreamLang() as replaced by getLang()

+++

commit 4ba099b97df41be220c4b2816c728e6b8cc1b037

    Graph/GraphUI: Move getDefault*() to FontFactory and add {get,set}FallbackFont() + Font.getBestCoverage(..); Use fallback-font in MediaButton in case chosen font doesn't match (foreign languages, e.g. 'zho' Chinese .. )
Comment 5 Sven Gothel 2024-02-05 11:58:29 CET
GlueGen:

commit 36f595b37220976125222f7f5b3dbfc74df163e0

    Adding StringUtil, containing basic utility functions as well as unicode space (whitespace) and full- and halfwidth tests.

+++

commit d9604cf4687c3f4e14967ee748749c784fd1578f 

    Rename StringUtil.strip() -> StringUtil.trim(), refine API doc



+++
Comment 6 Sven Gothel 2024-02-05 11:59:07 CET
commit 119a9bf8c474ec8d7db11235f90a3e266c911e1e

    Bug 1493: Enhance Text/ASS subtitle layout: Split too wide text into multiple lines (max 4) fitting into box, trimming it beforehand
    
    Not always are Text/ASS subtitles well formed with newline character.
    Use new StringUtil to re-layout if their width doesn't fit into the box,
    by trimming all whitespace and splitting them into up-to 4 lines.