



    mthumbs 
    ------- 
           By byblo (2021)




    mthumbs is a WLX thumbnail and Lister/Quickview plugin to preview most of various existing Videos, Audios, Images, Comics and Albums formats.




- Various extensions are supported (Supporter version only): (more or less exhaustive list: maybe not all are properly supported, send me some feedback in that case)

Videos: 3g2, 3gp, 4xm, anm, apm, asf, av1, avi, avr, avs, bfi, bik, bik2, bk2, bmv, c93, cam, cdg, cdxl, cine, dash, dcr, dfa, dv, dxa, film_cpk, fits, flic, flv, frm, gdv, gif, gxf, h261, h263, h264, hevc, ivf, ivr, jps, jv, kux, lvf, lxf, m2t, m2ts, m4v, mj2, mjpeg, mkv, mod, mov, mp4, mpc, mpeg, mpg, mtv, mv, mvi, mxf, nsv, nut, nuv, ogm, paf, pmp, pns, pva, r3d, rl2, rm, roq, rpl, scc, ser, smk, sup, swf, thp, tmv, tod, ts, ty, vc1, vfw, vivo, vmd, vob, webm, wmv, wtv, wve, xmv, y4m, yop, yuv

Audios: 3ga, aa, aac, ac3, acm, act, adx, aea, afc, aif, aiff, aix, alaw, amr, apc, ape, au, bfstm, bit, brstm, caf, cdr, cpt, dsf, dss, dts, dtshd, eac3, flac, fsb, g722, g726, gsm, hca, hdp, ics, iff, ircam, it, m4a, mlp, mmf, mp3, musx, ogg, oma, opus, pvf, qcp, ram, raw, rf64, rso, sap, sbg, sds, sdx, sf, shn, sid, tak, tta, u8, vag, voc, vqf, w64, wav, wma, wv, xa, xwma

Images: 3fr, ai, apng, arw, b3d, blp, bmp, cgm, clp, cmx, cr2, crw, dcm, dcx, dds, dib, djvu, dng, dwg, dxf, ecw, emf, eps, erf, exr, fit, fpx, g3, ids, iiq, im1, im24, im32, im8, ima, img, iw44, j2k, jls, jng, jp2, jpc, jpe, jpeg, jpf, jpg, jpm, jxr, kdc, lbm, mng, mos, mpo, mrw, nef, nrw, orf, pbm, pcc, pcd, pcx, pdf, pdn, pef, pgm, plt, png, pnm, ppm, ps, psd, psp, raf, ras, rgb, rgba, rle, rw2, rwl, sff, sfw, sgi, srf, sun, svg, tga, tif, tiff, ttf, urt, wbc, wbmp, wbz, wdp, webp, wmf, wsq, x3f, xbm, xcf, xcfbz2, xcfgz, xpm

Comics: cbr, cbz (with shortest image path as output priority)

Albums/Archives: apk, epub, jar, rar, waz, zip (with '*cover*', '*folder*' and '*preview*' output priority)


- 3D and VR support with overlay (will show an unique picture instead of left/right or top/bottom)

- Optional sharpening and jpeg picture quality to get better visualization from thumbnails.

- An ini file that will be found in the plugin's folder can allow extensions and settings changes, on the fly (ini file changes is checked by filedate everytime a thumbnail is requested from the main app)

- Since it rely to external tools like Ffmpeg or Irfanview, it does not require any installed codecs on the system to work, while allowing quick updates for supporting new formats.

- Optional ADS support: It can save cached thumbnails using the NTFS ADS system, which gives volatile support, allowing various thumbnail sizes at once (%file%:preview.jpg and %file%:cache.ini. Or for e.g. %file%:p224x176.jpg in case of multiple sizes enabled from settings).

- ADS is also allowing automatic refresh from a thumbnail only when necessary, e.g. if the related format setting from the ini file or the plugin was changed since the last time.

- Using the cm_ReloadSelThumbs on a thumbnail, allows rotating pictures on the fly (see PercentPosition ini entry), in case of an undesired picture is returned from a video (black or intro screen, ect...) If ADS is enabled, the lastest position will be remembered into the %file%:cache.ini file (when not matching the PercentPosition value)

- ADS save will be automatically canceled in case a file is from a read-only path. But if a file has simply a read-only attribute, ADS will work properly by restoring the RO attribute after saving the cached thumbnail.

- Can be also used through Symbolic links without problem.

- Some extra info like the video time, height in overlay is optional.




Installation and update:
-----------------------

- Install the plugin where you want to and register it to your main app as usual (TC, DC, ect...)

- Recommended: If you are updating, replace the existing file by the provided ones, including the ini files.

- Download and decompress the external tools (ffmpeg and irfanview) to the plugin's bin\ folders (download links can be found in the bin\*\install_url.txt)

- Remember to give the priority to this plugin: For TC, go to the menu: Configuration -> Plugins -> Configure button for WLX -> then move to the top the listed mthumbs.wlx filepath.

- Ensure the thumbnail filters are set correctly: For TC, go to the menu: Configuration -> Thumbnails -> Enable "Get from Lister plugins for:" and set editbox to: *.*

- For Lister and Quickview support, it is necessary for some extensions like MPG or WAV to add the detection string "MULTIMEDIA" to the detection string (automatic process if you freshly (re)installed the plugin, after 2021.04.01 versions)

- Recommended for Lister and Quickview support: for TC, go to the lister menu: Configuration -> Edit/View -> Configure internal viewer... -> Multimedia -> Check "Use plugins or load bitmap as graphics at startup"

- Check the mthumbs.ini file to see if changes are needed (!!!read first the section "Editing the plugin's settings (mthumbs.ini)" I have seem some people misunderstanding some of the ini entries in forums)

- IMPORTANT: ADS caching is disabled by default. ADS caching was made with volatility/portability and speed as main advantage. Thus if you decide to use it, it is recommended to TURN OFF the internal file manager's caching. (for TC, configuration -> Thumbnails -> Empty the database location) Note: ADS or not, if speed is important for you, i recommend you try to disable the custom fields and fields by type (unless they using some cache). They may be useful but often are way too slow for some formats. Give it a try :)

- Additional note: If you currently using the plugin cbxthumbs.wlx, you can uninstall it since mthumbs is the continuity and offers better functions: now support JPG, PNG, GIF and TGA + albums support.




Usage:
------

- Just turn on the thumbnail mode as usual on your file manager. Lister and Quickview for previewing the file.

- Important: It is recommended to not use your main ffmpeg or irfanview tools for this plugin. Since the needs are not the same, it is probably better to use separated thus dedicated versions. Just use the \bin\ folder from the plugin folder.

- Tip: When using the ffplay.exe on the lister, you can right click to jump at the percentage position. e.g. Right click at 90% horizontaly, to jump to 90% of the total playing time

- Tip: When using irfanview on the lister, left click to draw the zooming zone. You can also press CTRL+SHIFT while the mouse is above the picture to enable the magnifier (then mouse wheel to increase/decrease the magnifier magnitude)

- Tip: Some recommended value for thumbnails (hybrid ratio): 176x136 or 224x176 or 304x240




Editing the plugin's settings (mthumbs.ini)
------------------------------------------

- The ini file content is checked everytime (ini's filetime then reload if different from last check) a thumbnail or lister/quickview is requested. Thus, no need to restart the plugin after editing.

- Extensions can be added/removed by editing the ini file mthumbs.ini which can be located into the plugin's folder (supporter version only)

- On the ini file, leaving an entry empty will automatically restore its default value. In the case you want to keep it empty, type NULL instead. Work only for (chars) entries.

- Note that most of the ini values were finely set, so if you dont know what they are about, just do NOT change them :)


- The detailed ini file content:
  -----------------------------

mthumbs Version (internal only: do not modify)= Required for internal purpose. Do NOT edit.

Videos extension list (chars)= List of extensions to support by the videos & 3d pictures functions.

Audios extension list (chars)= List of extensions to support by the audios functions.

Images extension list (chars)= List of extensions to support by the images functions.

Comics extension list (chars)= List of extensions to support by the comics functions.

Albums extension list (chars)= List of extensions to support by the albums functions.

ffmpegPath (chars)= path of the ffmpeg.exe executable

ffprobePath (chars)= path of the ffprobe.exe executable

ffplayPath (chars)= path of the ffpplay.exe executable (required for Lister and Quickview)

irfanviewPath (chars)= path of the i_view64.exe executable

ListerSupport (bool)= enable Lister and Quickview support

ffmpegVideoPreInputParams (chars)= this should not be edited but still available for advanced usage

ffmpegVideoPostInputParams (chars)= this should not be edited but still available for advanced usage

ffmpegSharpenInputParams (chars)= edit the smartblur=lr=0.62 value to decrease or increase the sharpening of videos thumbnails. It is finely tuned and it is not recommended to change it.

ffmpegAudioPostInputParams (chars)= edit the -qscale:v 1 to change the jpeg output quality

ffplayListerVideoPreInputParams (chars)= Parameters that will be used for on Lister and Quickview for videos

ffplayListerVideoOSDInputParams (chars)= Parameters that will be used for on Lister and Quickview for videos with OSD

ffplayListerAudioPreInputParams (chars)= Parameters that will be used for on Lister and Quickview for audios

irfanviewMidInputParam (chars)= edit the /sharpen=16 and /jpgq=91 to change sharpening and jpeg output quality. Sharpening is finely tuned and it is not recommended to change it.

irfanviewListerPreInputParams (chars)= Parameters that will be used for on Lister and Quickview for images

ffmpegVideo_LR (chars)= this should not be edited but still available for advanced usage

ffmpegVideo_TB (chars)= this should not be edited but still available for advanced usage

ffmpegVideo_VR_LR (chars)= this should not be edited but still available for advanced usage

ffmpegVideo_VR_TB (chars)= this should not be edited but still available for advanced usage

ffmpegVideo_VR_180 (chars)= this should not be edited but still available for advanced usage

ffmpegVideo_VR_360 (chars)= this should not be edited but still available for advanced usage

AudioCoverHasPriority (bool)= If set to 1, will give priority to the embedded cover/preview from audios or video format without a valid video stream.

AudioColorLeft (chars)= left channel's color

AudioColorRight (chars)= right channel's color

AudioTimeMaxInSecs (double)= duration in seconds before skipping the ending of a audio file, and this to avoid too much waiting at thumbnail generation (in the case the audio waveform is skipped, the right of the thumbnail will show big verticals lines to represent the skipped part)

AudioShowFadeInOut (bool)= showing fade in and out on the bottom of the thumbnail. This should be very useful to quickly figure out if a track is looped, continuous (from the previous and next tracks) or standalone with proper fades.

AudioIdealFadeInOutInSecs (double)= length in seconds for each fade preview

AudioSeparatorThickness (int)= thickness of the lines separating the audios waveforms

ffmpegAudioSmoothen (bool)= will return smoother audio preview, which allowing to see more details while having a more blurry picture

OverlayInfo (bool)= Show or not the overlay like duration of video or audios, 3D or VR tags ect...

ffmpegVideoDrawTextAdditional (chars)= font styles, colors and shadows for the text overlay

OverlayHideHoursIfZero (bool)= if true, will show times with zero hour like 35:29, instead of 00:35:29. Note that days are always not shown when equal to zero.

FontSize (int)= overlay font size

FontSizeLine2 (int)= overlay font size for line 2

FontSizeLine3 (int)= overlay font size for line 3

FontColor (chars)= overlay font color

TextLine1XPos (int)= overlay x position of text1 (duration) in percent

TextLine1YPos (int)= overlay y position of text1 (duration) in percent

TextLine2XPos (int)= overlay x position of text2 (other) in percent. Note: You can use value higher than 100 to start from the right. Thus, 102 means 2% from the right. Works only for Xpos ATM

TextLine2YPos (int)= overlay y position of text2 (other) in percent

TextLine3XPos (int)= overlay x position of text3 (video height) in percent

TextLine3YPos (int)= overlay y position of text3 (video height) in percent

3DSupport (bool)= Show only 1 picture (left or top) from 3D pictures and videos, and apply some eyefish effect to get better visibility in the case of VR.

PercentPosition (double)= Video total time position in percent at where to grab the preview as thumbnail. By default 17.4% to avoid full black intro screens, but also spoils.

UserRefreshTimeout (double)= timeout in seconds before ignoring user's thumbnail rotation request (see also PercentRotationStep)

PercentRotationStep (double)= Video total time position in percent to add to each rotation before returning to default position (see PercentPosition). For e.g. 12.5 will rotate the video preview steps to 0, 12.5, 25, 37.5, 50, 62.5, 75, 87.5, default, 0, ect... Values recommended: 12.5 or 25.0 or 50.0

ListerDirectorySupport (bool)= Enable blank support for directories, to make things faster. This will prevent the file manager or any other plugin to calculate directories sizes in Lister and Quickview modes.

ListerCloseTempFileSleepTimeInMS (int)= Waiting time in milliseconds after closing a temporary preview file from archive on Lister and Quickview, to give time to the file manager to delete properly the temporary file

ADS (bool)= is set, enable the ADS caching, where the preview is saved into %file%:preview.jpg and %file:cache.ini% (the cache.ini file contains some useful infos like the date or the pseudocrc of some parts of the command that generated the thumbnail)

ADS RefreshIfFileTimeChanged (bool)= if set to 1, will refresh automatically the thumbnail in the case the main file got its filedate changed since the last thumbnail generation, by comparing it with the filedate saved previously into the %file%:cache.ini)

ADS RefreshIfCmdChanged (bool)= if set to 1, will refresh automatically the thumbnail in the case parts of the command to get that thumbnail format has changed since, by comparing it with the pseudocrc number saved previously into the %file%:cache.ini

ADS AlwaysSaveCache (bool)= to save into %file%:cache.ini no matter what, even if both "ADS RefreshIfFileTimeChanged" or "ADS RefreshIfCmdChanged" are set to 0. Not recommended to disable.

ADS Multiple Thumbnail Sizes (bool)= Allow multiple thumbnail sizes at the same time for a same file. Instead of %file:preview.jpg%, ADS cached thumbnail will be saved to %file%:pWIDTHxHEIGTH.jpg, e.g. %file%:p224x176.jpg

ADS force refresh (bool)= For debugging purpose only.

ADS Ignore ADS Warning (bool)= In the case that ADS cached file cannot be saved (file on a read-only path or drive), overlay will turn to red and !ADS text should be visible on the top right. Work only Video and Audio formats ATM.

Debug (bool)= For debugging purpose only.

Lister extension exclusion(!) list (chars)= extension to ignore on Lister/Quickview. This allowing to support some extensions on thumbnails only




Changelog:
---------


v20210405
- Added Lister and Quickview (still experimental) support for videos, audio and images. (maybe comics and albums will be supported later. still undecided what to preview for thoses)

- Finalized (more or less) the supported video extension list: 3g2, 3gp, 4xm, anm, apm, asf, av1, avi, avr, avs, bfi, bik, bik2, bk2, bmv, c93, cam, cdg, cdxl, cine, dash, dcr, dfa, dv, dxa, film_cpk, fits, flic, flv, frm, gdv, gif, gxf, h261, h263, h264, hevc, ivf, ivr, jps, jv, kux, lvf, lxf, m2t, m2ts, m4v, mj2, mjpeg, mkv, mod, mov, mp4, mpc, mpeg, mpg, mtv, mv, mvi, mxf, nsv, nut, nuv, ogm, paf, pmp, pns, pva, r3d, rl2, rm, roq, rpl, scc, ser, smk, sup, swf, thp, tmv, tod, ts, ty, vc1, vfw, vivo, vmd, vob, webm, wmv, wtv, wve, xmv, y4m, yop, yuv

- Finalized (more or less) the supported audio extension list: 3ga, aa, aac, ac3, acm, act, adx, aea, afc, aif, aiff, aix, alaw, amr, apc, ape, au, bfstm, bit, brstm, caf, cdr, cpt, dsf, dss, dts, dtshd, eac3, flac, fsb, g722, g726, gsm, hca, hdp, ics, iff, ircam, it, m4a, mlp, mmf, mp3, musx, ogg, oma, opus, pvf, qcp, ram, raw, rf64, rso, sap, sbg, sds, sdx, sf, shn, sid, tak, tta, u8, vag, voc, vqf, w64, wav, wma, wv, xa, xwma

- Finalized (more or less) the supported images extension list: 3fr, ai, apng, arw, b3d, blp, bmp, cgm, clp, cmx, cr2, crw, dcm, dcx, dds, dib, djvu, dng, dwg, dxf, ecw, emf, eps, erf, exr, fit, fpx, g3, ids, iiq, im1, im24, im32, im8, ima, img, iw44, j2k, jls, jng, jp2, jpc, jpe, jpeg, jpf, jpg, jpm, jxr, kdc, lbm, mng, mos, mpo, mrw, nef, nrw, orf, pbm, pcc, pcd, pcx, pdf, pdn, pef, pgm, plt, png, pnm, ppm, ps, psd, psp, raf, ras, rgb, rgba, rle, rw2, rwl, sff, sfw, sgi, srf, sun, svg, tga, tif, tiff, ttf, urt, wbc, wbmp, wbz, wdp, webp, wmf, wsq, x3f, xbm, xcf, xcfbz2, xcfgz, xpm

- Finalized (more or less) the supported albums extension list: apk, epub, jar, rar, waz, zip

- Added a third text line in video preview, showing the video height in pixels.

- Now the plugin will return the string "MULTIMEDIA" on file manager detection string request. (required by TC to support some extension like MPG, WAV, ect...) If you got the plugin previously installed, it is recommended that you add the "MUTIMEDIA" string manually.

- Added new ini entries: mthumbs Version (internal only: do not modify), Lister extension exclusion(!) list (chars), ffplayPath (chars), ListerSupport (bool), ffplayListerVideoPreInputParams (chars), ffplayListerAudioPreInputParams (chars), irfanviewListerPreInputParams (chars), FontSizeLine3 (int), TextLine3XPos (int), TextLine3YPos (int), ListerDirectorySupport (bool), ListerCloseTempFileSleepTimeInMS (int)

- Fixed a problem to cmd.exe with the /S switch, where before it could not handle spaces properly for external apps like ffpmeg.exe (thanks to DaZoB from TC forum for finding and reporting the problem)

- Some code clearing/optimisation and some small fixes here and there.


v20210205
- First release.




Supporting my work:
------------------

As usual since 20 years of various releases on the internet, my work was and will remain free for all.

This said, I decided to make advanced supporter versions as rewards for people supporting my work.

In this case, some functions and major updates will be reserved as rewards to my supporters.

You will found the supporter versions for few bucks, in addition to my others works, at my patreon webpage: https://www.patreon.com/byblo

If you cannot use patreon, you can alternatively send me an email at byblo@hotmail.com with the "MTHUMBS.WLX" as title.

From my side, that should encouraging me to keep working on tools and plugins, to eat more hamburgers, but also to buy some english grammar and dictionaries books.

You can also send me feedback, that will allow me to fix the problems encountered.




Enjoy !

     byblo.



