LSMASHSource

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
(Archived Downloads: add newer version)
m (Archived Downloads: remove things)
 
(One intermediate revision by one user not shown)
Line 119: Line 119:
 
!class="unsortable" width=12%| Version
 
!class="unsortable" width=12%| Version
 
!class="unsortable" width=25%| Download
 
!class="unsortable" width=25%| Download
!class="unsortable" width=25%| Mirror
 
 
!class="unsortable"| Comments
 
!class="unsortable"| Comments
 
|-
 
|-
|20191116
+
|20191127
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
 
|
 
|
 +
*Fix MPEG-2 decoding issue with RFF flags. (maki-rxrz)
 +
*Fix interlaced H.264 decoding issue in some files.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1891512#post1891512 HolyWu]
 +
|-
 +
|20191116
 +
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
 
|
 
|
 
*LibavSMASH: Fix access violation.
 
*LibavSMASH: Fix access violation.
Line 131: Line 136:
 
|20191115
 
|20191115
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
|
 
 
|
 
|
 
*Update to FFmpeg-20191114-73ee53f.
 
*Update to FFmpeg-20191114-73ee53f.
Line 144: Line 148:
 
|20190917
 
|20190917
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
|
 
 
|
 
|
 
*VideoSource: Add prefer_hw=3.
 
*VideoSource: Add prefer_hw=3.
Line 151: Line 154:
 
|20190914
 
|20190914
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
|
 
 
|
 
|
 
*VideoSource: Fix fallback to software decoder in prefer_hw.
 
*VideoSource: Fix fallback to software decoder in prefer_hw.
Line 159: Line 161:
 
|20190910
 
|20190910
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
|
 
 
|
 
|
 
*Update to FFmpeg 4.2.1.
 
*Update to FFmpeg 4.2.1.
Line 171: Line 172:
 
|20190903
 
|20190903
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
 
|[https://github.com/HolyWu/L-SMASH-Works/releases/ GitHub]
|
 
 
|
 
|
 
*Fix abnormal loading time.
 
*Fix abnormal loading time.
Line 184: Line 184:
 
|r935+34-20190829
 
|r935+34-20190829
 
|[https://down.7086.in/AviSynthPlus%20Filters/LSMASHSource-r935%2B34.zip LSMASHSource-Release_r935+34.zip]
 
|[https://down.7086.in/AviSynthPlus%20Filters/LSMASHSource-r935%2B34.zip LSMASHSource-Release_r935+34.zip]
|
 
 
|
 
|
 
*Stop indexing progress spamming
 
*Stop indexing progress spamming
Line 191: Line 190:
 
|-
 
|-
 
|r935+33-20190826
 
|r935+33-20190826
|[https://down.7086.in/AviSynthPlus%20Filters/LSMASHSource-Release_r935%2B33.zip LSMASHSource-Release_r935+33.zip]
+
|LSMASHSource-Release_r935+33.zip
|
+
 
|
 
|
 
*I have changed the logic. If size and timestamp match, assume unchanged. If size matches but not timestamp, hash (first 1MiB + last 1MiB) and compare with recorded hash. If file is too small, only first up to 1MiB counts. Hash method is xxhash which is extremely fast.
 
*I have changed the logic. If size and timestamp match, assume unchanged. If size matches but not timestamp, hash (first 1MiB + last 1MiB) and compare with recorded hash. If file is too small, only first up to 1MiB counts. Hash method is xxhash which is extremely fast.
Line 199: Line 197:
 
|-
 
|-
 
|r935+31-20190820
 
|r935+31-20190820
|[https://www.mediafire.com/file/o5clk4p049srbs5/L-SMASH-Works-r935+31-20190820.7z/file L-SMASH-Works-r935+31-20190820.7z]
+
|L-SMASH-Works-r935+31-20190820.7z
|
+
 
|
 
|
 
*LWLibavVideoSource no longer indexes audio streams. It reduces both the file size and parsing time of the index file. LWLibavAudioSource will re-create the index file for the source file which was already indexed by LWLibavVideoSource so as to index audio streams.
 
*LWLibavVideoSource no longer indexes audio streams. It reduces both the file size and parsing time of the index file. LWLibavAudioSource will re-create the index file for the source file which was already indexed by LWLibavVideoSource so as to index audio streams.
Line 212: Line 209:
 
|r935+26-20190811
 
|r935+26-20190811
 
|L-SMASH-Works-r935+26-20190811.7z
 
|L-SMASH-Works-r935+26-20190811.7z
|
 
 
|
 
|
 
* Update to FFmpeg 4.2.
 
* Update to FFmpeg 4.2.
Line 219: Line 215:
 
|-
 
|-
 
|r935+26-20190712
 
|r935+26-20190712
|[https://down.7086.in/AviSynthPlus%20Filters/LSMASHSource-Release_r935%2B26.zip LSMASHSource-Release_r935+26.zip]
+
|LSMASHSource-Release_r935+26.zip
|
+
 
|
 
|
 
*Integrated patches from multiple forks. The same patch set HolyWu used, which was copied from enccc, and one more patch to use swresample instead of avresample, which was copied from l33tmeatwad.[https://forum.doom9.org/showthread.php?p=1879042#post1879042]  
 
*Integrated patches from multiple forks. The same patch set HolyWu used, which was copied from enccc, and one more patch to use swresample instead of avresample, which was copied from l33tmeatwad.[https://forum.doom9.org/showthread.php?p=1879042#post1879042]  

Latest revision as of 23:44, 30 November 2019

Abstract
Author VFR-maniac
Version r929 (24-Feb-2017)
Download L-SMASH-Works
Category Source filters
License ISC / binaries are GPL or LGPL
Discussion Doom9 Thread


Contents

[edit] Description

LSMASHSource is a source plugin for AviSynth/AviSynth+. It uses FFmpeg (libavcodec) to decode all supported audio and video formats. For a complete list see official FFmpeg documentation.

[edit] Requirements


** vcredist_x86.exe is required for L-SMASH-Works-32bit
** vcredist_x64.exe is required for L-SMASH-Works-64bit


[edit] Filters

Filter Description Color format
LSMASHAudioSource

Uses libavcodec as an audio decoder and L-SMASH as a demuxer. Recommended for MP4, MOV, ISO Base Media and its derived file formats.
One advantage over LWLibavVideoSource and FFmpegSource is that it doesn't need to create an index file for its supported formats.

LSMASHVideoSource

Uses libavcodec as a video decoder and L-SMASH as a demuxer. Recommended for MP4, MOV, ISO Base Media and its derived file formats.
One advantage over LWLibavAudioSource and FFmpegSource is that it doesn't need to create an index file for its supported formats.

RGB24, RGB32, YUY2, Y8, YV12, YV16, YV24, YV411
LWLibavAudioSource

Uses libavcodec as an audio decoder and libavformat as a demuxer.

LWLibavVideoSource

Uses libavcodec as a video decoder and libavformat as a demuxer.
Supports video codecs LSMASHVideoSource does not – for example MPEG-4, UT Video, Lagarith, and animated GIF and PNG.

RGB24, RGB32, YUY2, Y8, YV12, YV16, YV24, YV411


[edit] Examples

  • Combining LSMASHVideoSource + LSMASHAudioSource
#LoadPlugin("LSMASHSource.dll")
##################################
## @ atrack  - audio track number. Default auto. If -2, ignore audio.
## @ fpsnum, fpsden - framerate. Default auto.
## @ stacked - if true, return Stack16 format.
##    (note, stacked=true requires a 16-bit color format)
## @ format  - force specified output pixel format. Default auto.
##    (see documentation for valid color formats)
##    (if stacked = true, default "YUV420P16")
##
function LSmashSource2(string path, int "atrack", 
\          int "fpsnum", int "fpsden",
\          string "format", bool "stacked") 
{
    atrack   = Default(atrack, 0)
    fpsnum   = Default(fpsnum, 0)
    fpsden   = Default(fpsden,  1)
    stacked  = Default(stacked, false)

    format   = Default(format, "")
    format   = (format=="" && stacked==true) ? "YUV420P16" : ""

    video = LSMASHVideoSource(path, 
    \               fpsnum=fpsnum, fpsden=fpsden, 
    \               format=format, stacked=stacked)
    return (atrack==-2) ? video: AudioDub(video, 
   \    LSMASHAudioSource(path, track=atrack))
}
  • Combining LWLibavVideoSource + LWLibavAudioSource
#LoadPlugin("LSMASHSource.dll")
##################################
## @ atrack  - audio track number. Default auto. If -2, ignore audio.
## @ fpsnum, fpsden - framerate. Default auto.
## @ stacked - if true, return Stack16 format.
##    (note, stacked=true requires a 16-bit color format)
## @ format  - force specified output pixel format. Default auto.
##    (see documentation for valid color formats)
##    (if stacked = true, default "YUV420P16")
## @ cache - if true (the default), create an index file.
##
function LibavSource2(string path, int "atrack", 
\          int "fpsnum", int "fpsden",
\          string "format", bool "stacked", bool "cache") 
{
    atrack   = Default(atrack, -1)
    fpsnum   = Default(fpsnum, 0)
    fpsden   = Default(fpsden,  1)
    stacked  = Default(stacked, false)
    cache    = Default(cache, true)

    format   = Default(format, "")
    format   = (format=="" && stacked==true) ? "YUV420P16" : ""

    video = LWLibavVideoSource(path, 
    \               fpsnum=fpsnum, fpsden=fpsden, format=format,
    \               stacked=stacked, cache=cache)
    return (atrack==-2) ? video: AudioDub(video, 
   \    LWLibavAudioSource(path, stream_index=atrack, cache=cache))
}


[edit] Archived Downloads

Note: the following versions are dual interface, they support both AviSynth and VapourSynth. Also, it now supports native high bit-depth in AviSynth+, the "stacked" parameter has been removed. Starting with r935+26-20190811, parameter "cachefile" has been added to both LWLibavAudioSource and LWLibavVideoSource.

Version Download Comments
20191127 GitHub
  • Fix MPEG-2 decoding issue with RFF flags. (maki-rxrz)
  • Fix interlaced H.264 decoding issue in some files.
  • Changes by HolyWu
20191116 GitHub
  • LibavSMASH: Fix access violation.
  • Changes by HolyWu
20191115 GitHub
  • Update to FFmpeg-20191114-73ee53f.
  • VapourSynth: Export mastering display metadata and content light level in frame properties.
  • VideoSource: Improve capability check in prefer_hw.
  • LWLibav: Fix VP9 decoding issue with superframes.
  • VideoSource: Enable AV1 decoding via libdav1d.
  • Add parameter ff_loglevel.
  • LWLibav: Adjust the structure of index file to reduce file size.
  • Changes by HolyWu
20190917 GitHub
  • VideoSource: Add prefer_hw=3.
  • Changes by HolyWu
20190914 GitHub
  • VideoSource: Fix fallback to software decoder in prefer_hw.
  • LWLibav: Fix access violation in file name manipulation.
  • Changes by HolyWu
20190910 GitHub
  • Update to FFmpeg 4.2.1.
  • VideoSource: Add parameter prefer_hw to conveniently switch between software and hardware decoder. Consult README for details.
  • Fix seeking issue in CUVID decoding.
  • Fix hardware decoder outputting YUV420P8 by default on high bit depth clip.
  • Optimize P010->YUV420P10 conversion for hardware decoder by SSE2.
  • LWLibav: Fix access violation in avi file when seeking randomly.
  • Changes by HolyWu
20190903 GitHub
  • Fix abnormal loading time.
  • Improve progress printing.
  • Use both file size and partial checksum (xxhash) for file signature comparison in index file.
  • LWLibav: Fix inaccurate framerate in some files.
  • VapourSynth: Replace configure with Meson build system.
  • VapourSynth: Fix missing setError invocation when there is an error.
  • Fix frame corruption in some VC-1 files by a workaround. Tested Atak_Snajpera's sample by seek-test.py and confirmed to be frame accurate.
  • Changes by HolyWu, includes MeteorRain's mods below. [1]
r935+34-20190829 LSMASHSource-Release_r935+34.zip
  • Stop indexing progress spamming
    • -- Now only refresh at every 1%.
  • Compiled by MeteorRain
r935+33-20190826 LSMASHSource-Release_r935+33.zip
  • I have changed the logic. If size and timestamp match, assume unchanged. If size matches but not timestamp, hash (first 1MiB + last 1MiB) and compare with recorded hash. If file is too small, only first up to 1MiB counts. Hash method is xxhash which is extremely fast.
  • A missing hash record will not force regenerating the index file as long as size and timestamp match.
  • Compiled by MeteorRain
r935+31-20190820 L-SMASH-Works-r935+31-20190820.7z
  • LWLibavVideoSource no longer indexes audio streams. It reduces both the file size and parsing time of the index file. LWLibavAudioSource will re-create the index file for the source file which was already indexed by LWLibavVideoSource so as to index audio streams.
  • Print indexing progress to stdout.
  • Tell lavf to discard unwanted packets so they needn't be demuxed.
  • Remove InputFilePath field from the index file. It's unnecessary and troublesome when users rename or move the source file.
  • Automatically re-create the index file when the file size of the source file doesn't match.[2]
  • Change the printing of index progress from stdout to stderr so as to avoid corrupting pipe data accidentally[3]
  • Compiled by HolyWu | Modifications are here
r935+26-20190811 L-SMASH-Works-r935+26-20190811.7z
  • Update to FFmpeg 4.2.
  • Add parameter cachefile.
  • Compiled by HolyWu
r935+26-20190712 LSMASHSource-Release_r935+26.zip
  • Integrated patches from multiple forks. The same patch set HolyWu used, which was copied from enccc, and one more patch to use swresample instead of avresample, which was copied from l33tmeatwad.[4]
  • Compiled by MeteorRain


[edit] External Links

  • Doom9 Forum - LSMASHSource discussion.
  • GitHub - Source code repository.
  • Dropbox - Download repository by the_weirdo, also includes LSMASHSource compiled against Libav, see here for more information (no longer updated).
  • MediaFire - LSMASHSource for Windows XP [5].




Back to External Filters
Personal tools