LSMASHSource
m (→Archived Downloads: add new version) |
(Update page to match latest version (20200322)) |
||
Line 1: | Line 1: | ||
{{FilterCat4|External_filters|Source_filters|Plugins|Plugins_x64}} | {{FilterCat4|External_filters|Source_filters|Plugins|Plugins_x64}} | ||
{{Filter3 | {{Filter3 | ||
− | | {{Author/VFR-maniac}} | + | | {{Author/VFR-maniac}}, HolyWu |
− | | | + | | 20200322 |
| {{Plugin/LSMASHSource}} | | {{Plugin/LSMASHSource}} | ||
| Source filters | | Source filters | ||
Line 13: | Line 13: | ||
<br> | <br> | ||
== Requirements == | == Requirements == | ||
− | * [http:// | + | * [x86]: [[AviSynth+]] or [http://forum.doom9.org/showthread.php?t=168764 AviSynth 2.6] |
+ | * [x64]: [[AviSynth+]] | ||
* Supported color formats: [[RGB24]], [[RGB32]], [[YUY2]], [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]] | * Supported color formats: [[RGB24]], [[RGB32]], [[YUY2]], [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]] | ||
− | + | **AviSynth+: all YUV planar formats (8/10/12/14/16bit) are supported, also [[RGB48]] | |
− | * | + | |
− | + | ||
− | + | ||
<br> | <br> | ||
Line 52: | Line 50: | ||
## @ atrack - audio track number. Default auto. If -2, ignore audio. | ## @ atrack - audio track number. Default auto. If -2, ignore audio. | ||
## @ fpsnum, fpsden - framerate. Default auto. | ## @ fpsnum, fpsden - framerate. Default auto. | ||
− | |||
− | |||
## @ format - force specified output pixel format. Default auto. | ## @ format - force specified output pixel format. Default auto. | ||
## (see [[LSMASHSource/LSMASHVideoSource|documentation]] for valid color formats) | ## (see [[LSMASHSource/LSMASHVideoSource|documentation]] for valid color formats) | ||
− | ## | + | ## |
## | ## | ||
function LSmashSource2(string path, int "atrack", | function LSmashSource2(string path, int "atrack", | ||
\ int "fpsnum", int "fpsden", | \ int "fpsnum", int "fpsden", | ||
− | \ string "format | + | \ string "format") |
{ | { | ||
atrack = Default(atrack, 0) | atrack = Default(atrack, 0) | ||
fpsnum = Default(fpsnum, 0) | fpsnum = Default(fpsnum, 0) | ||
fpsden = Default(fpsden, 1) | fpsden = Default(fpsden, 1) | ||
− | |||
format = Default(format, "") | format = Default(format, "") | ||
− | |||
video = LSMASHVideoSource(path, | video = LSMASHVideoSource(path, | ||
\ fpsnum=fpsnum, fpsden=fpsden, | \ fpsnum=fpsnum, fpsden=fpsden, | ||
− | \ format=format, | + | \ format=format, |
return (atrack==-2) ? video: AudioDub(video, | return (atrack==-2) ? video: AudioDub(video, | ||
\ LSMASHAudioSource(path, track=atrack)) | \ LSMASHAudioSource(path, track=atrack)) | ||
Line 83: | Line 77: | ||
## @ atrack - audio track number. Default auto. If -2, ignore audio. | ## @ atrack - audio track number. Default auto. If -2, ignore audio. | ||
## @ fpsnum, fpsden - framerate. Default auto. | ## @ fpsnum, fpsden - framerate. Default auto. | ||
− | |||
− | |||
## @ format - force specified output pixel format. Default auto. | ## @ format - force specified output pixel format. Default auto. | ||
## (see [[LSMASHSource/LWLibavVideoSource|documentation]] for valid color formats) | ## (see [[LSMASHSource/LWLibavVideoSource|documentation]] for valid color formats) | ||
− | |||
## @ cache - if true (the default), create an index file. | ## @ cache - if true (the default), create an index file. | ||
+ | ## | ||
## | ## | ||
function LibavSource2(string path, int "atrack", | function LibavSource2(string path, int "atrack", | ||
\ int "fpsnum", int "fpsden", | \ int "fpsnum", int "fpsden", | ||
− | \ string "format | + | \ string "format", bool "cache") |
{ | { | ||
atrack = Default(atrack, -1) | atrack = Default(atrack, -1) | ||
fpsnum = Default(fpsnum, 0) | fpsnum = Default(fpsnum, 0) | ||
fpsden = Default(fpsden, 1) | fpsden = Default(fpsden, 1) | ||
− | |||
cache = Default(cache, true) | cache = Default(cache, true) | ||
format = Default(format, "") | format = Default(format, "") | ||
− | |||
video = LWLibavVideoSource(path, | video = LWLibavVideoSource(path, | ||
\ fpsnum=fpsnum, fpsden=fpsden, format=format, | \ fpsnum=fpsnum, fpsden=fpsden, format=format, | ||
− | \ | + | \ cache=cache) |
return (atrack==-2) ? video: AudioDub(video, | return (atrack==-2) ? video: AudioDub(video, | ||
\ LWLibavAudioSource(path, stream_index=atrack, cache=cache)) | \ LWLibavAudioSource(path, stream_index=atrack, cache=cache)) | ||
Line 111: | Line 101: | ||
</div> | </div> | ||
<br> | <br> | ||
− | == | + | == Changelog == |
<span style="color:red">'''Note:'''</span> the following versions are dual interface, they support both AviSynth and [[VapourSynth]]. Also, it now supports [[Avisynthplus_color_formats|native high bit-depth]] in [[AviSynth+]], the <tt>"stacked"</tt> parameter has been removed. Starting with r935+26-20190811, parameter <tt>"cachefile"</tt> has been added to both LWLibavAudioSource and LWLibavVideoSource. | <span style="color:red">'''Note:'''</span> the following versions are dual interface, they support both AviSynth and [[VapourSynth]]. Also, it now supports [[Avisynthplus_color_formats|native high bit-depth]] in [[AviSynth+]], the <tt>"stacked"</tt> parameter has been removed. Starting with r935+26-20190811, parameter <tt>"cachefile"</tt> has been added to both LWLibavAudioSource and LWLibavVideoSource. | ||
Line 118: | Line 108: | ||
|- | |- | ||
!class="unsortable" width=12%| Version | !class="unsortable" width=12%| Version | ||
− | !class="unsortable" | + | !class="unsortable"| Changes |
− | + | ||
|- | |- | ||
|20200322 | |20200322 | ||
− | |||
| | | | ||
*Update to FFmpeg-20200322-ea46b45. | *Update to FFmpeg-20200322-ea46b45. | ||
Line 131: | Line 119: | ||
|- | |- | ||
|20200207 | |20200207 | ||
− | |||
| | | | ||
*Update to FFmpeg-20200207-343ccfc. | *Update to FFmpeg-20200207-343ccfc. | ||
Line 141: | Line 128: | ||
|- | |- | ||
|20200118 | |20200118 | ||
− | |||
| | | | ||
*VideoSource: Fix missing frames in some H264 streams. | *VideoSource: Fix missing frames in some H264 streams. | ||
Line 149: | Line 135: | ||
|- | |- | ||
|20200111 | |20200111 | ||
− | |||
| | | | ||
*Update to FFmpeg-20200110-c4c96d5. | *Update to FFmpeg-20200110-c4c96d5. | ||
Line 157: | Line 142: | ||
|- | |- | ||
|20191127 | |20191127 | ||
− | |||
| | | | ||
*Fix MPEG-2 decoding issue with RFF flags. (maki-rxrz) | *Fix MPEG-2 decoding issue with RFF flags. (maki-rxrz) | ||
Line 164: | Line 148: | ||
|- | |- | ||
|20191116 | |20191116 | ||
− | |||
| | | | ||
*LibavSMASH: Fix access violation. | *LibavSMASH: Fix access violation. | ||
Line 170: | Line 153: | ||
|- | |- | ||
|20191115 | |20191115 | ||
− | |||
| | | | ||
*Update to FFmpeg-20191114-73ee53f. | *Update to FFmpeg-20191114-73ee53f. | ||
Line 182: | Line 164: | ||
|- | |- | ||
|20190917 | |20190917 | ||
− | |||
| | | | ||
*VideoSource: Add prefer_hw=3. | *VideoSource: Add prefer_hw=3. | ||
Line 188: | Line 169: | ||
|- | |- | ||
|20190914 | |20190914 | ||
− | |||
| | | | ||
*VideoSource: Fix fallback to software decoder in prefer_hw. | *VideoSource: Fix fallback to software decoder in prefer_hw. | ||
Line 195: | Line 175: | ||
|- | |- | ||
|20190910 | |20190910 | ||
− | |||
| | | | ||
*Update to FFmpeg 4.2.1. | *Update to FFmpeg 4.2.1. | ||
Line 206: | Line 185: | ||
|- | |- | ||
|20190903 | |20190903 | ||
− | |||
| | | | ||
*Fix abnormal loading time. | *Fix abnormal loading time. | ||
Line 218: | Line 196: | ||
|- | |- | ||
|r935+34-20190829 | |r935+34-20190829 | ||
− | |||
| | | | ||
*Stop indexing progress spamming | *Stop indexing progress spamming | ||
Line 225: | Line 202: | ||
|- | |- | ||
|r935+33-20190826 | |r935+33-20190826 | ||
− | |||
| | | | ||
*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 232: | Line 208: | ||
|- | |- | ||
|r935+31-20190820 | |r935+31-20190820 | ||
− | |||
| | | | ||
*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 243: | Line 218: | ||
|- | |- | ||
|r935+26-20190811 | |r935+26-20190811 | ||
− | |||
| | | | ||
* Update to FFmpeg 4.2. | * Update to FFmpeg 4.2. | ||
Line 250: | Line 224: | ||
|- | |- | ||
|r935+26-20190712 | |r935+26-20190712 | ||
− | |||
| | | | ||
*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] | ||
Line 259: | Line 232: | ||
== External Links == | == External Links == | ||
*[http://forum.doom9.org/showthread.php?t=167435 Doom9 Forum] - LSMASHSource discussion. | *[http://forum.doom9.org/showthread.php?t=167435 Doom9 Forum] - LSMASHSource discussion. | ||
− | *[http://github.com/VFR-maniac/L-SMASH-Works/tree/master/AviSynth GitHub] - Source code repository. | + | *[http://github.com/VFR-maniac/L-SMASH-Works/tree/master/AviSynth GitHub] - Source code repository, original (VFR-maniac) |
+ | *[https://github.com/HolyWu/L-SMASH-Works GitHub] - Source code repository, updated (HolyWu) | ||
*[http://www.dropbox.com/sh/3i81ttxf028m1eh/AAABkQn4Y5w1k-toVhYLasmwa?dl=0 Dropbox] - Download repository by [http://forum.doom9.org/showpost.php?p=1689573&postcount=250 the_weirdo], <strike>also includes LSMASHSource compiled against Libav, see [http://forum.doom9.org/showpost.php?p=1693941&postcount=263 here] for more information (no longer updated).</strike> | *[http://www.dropbox.com/sh/3i81ttxf028m1eh/AAABkQn4Y5w1k-toVhYLasmwa?dl=0 Dropbox] - Download repository by [http://forum.doom9.org/showpost.php?p=1689573&postcount=250 the_weirdo], <strike>also includes LSMASHSource compiled against Libav, see [http://forum.doom9.org/showpost.php?p=1693941&postcount=263 here] for more information (no longer updated).</strike> | ||
*[http://www.mediafire.com/folder/17q7t31dib18t/LSMASH-Works MediaFire] - LSMASHSource for Windows XP [http://forum.doom9.org/showthread.php?t=167435&page=19#post1713408]. | *[http://www.mediafire.com/folder/17q7t31dib18t/LSMASH-Works MediaFire] - LSMASHSource for Windows XP [http://forum.doom9.org/showthread.php?t=167435&page=19#post1713408]. |
Revision as of 16:06, 30 March 2020
Abstract | |
---|---|
Author | VFR-maniac, HolyWu |
Version | 20200322 |
Download | L-SMASH-Works |
Category | Source filters |
License | ISC / binaries are GPL or LGPL |
Discussion | Doom9 Thread |
Contents |
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.
Requirements
- [x86]: AviSynth+ or AviSynth 2.6
- [x64]: AviSynth+
- Supported color formats: RGB24, RGB32, YUY2, Y8, YV12, YV16, YV24, YV411
- AviSynth+: all YUV planar formats (8/10/12/14/16bit) are supported, also RGB48
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. |
|
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. |
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. |
RGB24, RGB32, YUY2, Y8, YV12, YV16, YV24, YV411 |
Examples
- Combining LSMASHVideoSource + LSMASHAudioSource
#LoadPlugin("LSMASHSource.dll") ################################## ## @ atrack - audio track number. Default auto. If -2, ignore audio. ## @ fpsnum, fpsden - framerate. Default auto. ## @ format - force specified output pixel format. Default auto. ## (see documentation for valid color formats) ## ## function LSmashSource2(string path, int "atrack", \ int "fpsnum", int "fpsden", \ string "format") { atrack = Default(atrack, 0) fpsnum = Default(fpsnum, 0) fpsden = Default(fpsden, 1) format = Default(format, "") video = LSMASHVideoSource(path, \ fpsnum=fpsnum, fpsden=fpsden, \ format=format, 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. ## @ format - force specified output pixel format. Default auto. ## (see documentation for valid color formats) ## @ cache - if true (the default), create an index file. ## ## function LibavSource2(string path, int "atrack", \ int "fpsnum", int "fpsden", \ string "format", bool "cache") { atrack = Default(atrack, -1) fpsnum = Default(fpsnum, 0) fpsden = Default(fpsden, 1) cache = Default(cache, true) format = Default(format, "") video = LWLibavVideoSource(path, \ fpsnum=fpsnum, fpsden=fpsden, format=format, \ cache=cache) return (atrack==-2) ? video: AudioDub(video, \ LWLibavAudioSource(path, stream_index=atrack, cache=cache)) }
Changelog
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 | Changes |
---|---|
20200322 |
|
20200207 |
|
20200118 |
|
20200111 |
|
20191127 |
|
20191116 |
|
20191115 |
|
20190917 |
|
20190914 |
|
20190910 |
|
20190903 |
|
r935+34-20190829 |
|
r935+33-20190826 |
|
r935+31-20190820 |
|
r935+26-20190811 |
|
r935+26-20190712 |
|
External Links
- Doom9 Forum - LSMASHSource discussion.
- GitHub - Source code repository, original (VFR-maniac)
- GitHub - Source code repository, updated (HolyWu)
- 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 ←