LSMASHSource

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
m (Requirements: small update)
(latest version update)
 
(44 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{FilterCat|External_filters|Source_filters|Plugins}}
+
{{FilterCat5|External_filters|Source_filters|Plugins|Plugins_x64|Deep_color_tools}}
 
{{Filter3
 
{{Filter3
| {{Author/VFR-maniac}}
+
| {{Author/VFR-maniac}}, HolyWu
| r728
+
| 20200728
 
| {{Plugin/LSMASHSource}}
 
| {{Plugin/LSMASHSource}}
 
| Source filters  
 
| Source filters  
Line 9: Line 9:
 
<br>
 
<br>
 
== Description ==
 
== Description ==
:LSMASHSource is a source plugin for AviSynth. It uses Libav ([http://en.wikipedia.org/wiki/Libav#Contained_codecs libavcodec]) to decode all supported A/V formats.
+
LSMASHSource is a source plugin for AviSynth/AviSynth+. It uses [http://en.wikipedia.org/wiki/FFmpeg FFmpeg] ([http://en.wikipedia.org/wiki/Libavcodec libavcodec]) to decode [http://en.wikipedia.org/wiki/FFmpeg#Codecs.2C_formats_and_protocols_supported all supported audio and video formats.] For a complete list see official [http://www.ffmpeg.org/general.html#Supported-File-Formats_002c-Codecs-or-Features FFmpeg documentation].
 +
<br>
 
<br>
 
<br>
 
 
== Requirements ==
 
== Requirements ==
:* [http://forum.doom9.org/showthread.php?t=168764 AviSynth 2.6.0 Alpha5] or later
+
* [x86]: [[AviSynth+]] or [http://forum.doom9.org/showthread.php?t=168764 AviSynth 2.6]
:* Supported color formats: [[RGB24]], [[RGB32]], [[YUY2]], [[Y8]]<span style="color:red">*</span>, [[YV12]], [[YV16]]<span style="color:red">*</span>, [[YV24]]<span style="color:red">*</span>, [[YV411]]<span style="color:red">*</span>
+
* [x64]: [[AviSynth+]]
:: <span style="color:red">*</span> These additional [[planar]] colorspaces are not available in AviSynth 2.5.8.
+
* Supported color formats: [[RGB24]], [[RGB32]], [[YUY2]], [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]
<br>
+
**AviSynth+: all [[planar]] formats (8/10/12/14/16-bit, Y, YUV(A), and RGB(A) are supported, also [[RGB48]] and [[RGB64]]
:* [http://www.microsoft.com/en-us/download/details.aspx?id=40784 Microsoft Visual C++ 2013 Redistributable Package (x86 / x64)]
+
::<span style="color:red">** </span><tt>vcredist_x86.exe</tt> is required for <tt>L-SMASH-Works-32bit</tt>
+
::<span style="color:red">** </span><tt>vcredist_x64.exe</tt> is required for <tt>L-SMASH-Works-64bit</tt>
+
  
 
<br>
 
<br>
Line 26: Line 23:
 
{{PluginFilterTable2}}
 
{{PluginFilterTable2}}
 
{{PluginFilterRow|LSMASHSource|LSMASHAudioSource|
 
{{PluginFilterRow|LSMASHSource|LSMASHAudioSource|
This function uses [http://en.wikipedia.org/wiki/Libav#Audio_codecs libavcodec] as an audio decoder and L-SMASH as a demuxer. Recommended for MP4, MOV, [http://en.wikipedia.org/wiki/ISO_base_media_file_format ISO Base Media] and its derived file formats.<br>
+
Uses libavcodec as an audio decoder and L-SMASH as a demuxer. Recommended for MP4, MOV, [http://en.wikipedia.org/wiki/ISO_base_media_file_format ISO Base Media] and its derived file formats.<br>
One advantage of LSMASHAudioSource is that it doesn't need to create an index file for its supported formats.
+
One advantage over '''LWLibavVideoSource''' and [[FFmpegSource]] is that it doesn't need to create an index file for its supported formats.
 
|
 
|
 
}}  
 
}}  
 
{{PluginFilterRow|LSMASHSource|LSMASHVideoSource|
 
{{PluginFilterRow|LSMASHSource|LSMASHVideoSource|
This function uses [http://en.wikipedia.org/wiki/Libav#Video_codecs libavcodec] as a video decoder and L-SMASH as a demuxer. Recommended for MP4, MOV, [http://en.wikipedia.org/wiki/ISO_base_media_file_format ISO Base Media] and its derived file formats.<br>
+
Uses libavcodec as a video decoder and L-SMASH as a demuxer. Recommended for MP4, MOV, [http://en.wikipedia.org/wiki/ISO_base_media_file_format ISO Base Media] and its derived file formats.<br>
One advantage of LSMASHVideoSource is that it doesn't need to create an index file for its supported 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]]
 
| [[RGB24]], [[RGB32]], [[YUY2]], [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]
 
}}
 
}}
 
{{PluginFilterRow|LSMASHSource|LWLibavAudioSource|
 
{{PluginFilterRow|LSMASHSource|LWLibavAudioSource|
This function uses [http://en.wikipedia.org/wiki/Libav#Audio_codecs libavcodec] as an audio decoder and libavformat as a demuxer.
+
Uses libavcodec as an audio decoder and libavformat as a demuxer.
 
|  
 
|  
 
}}
 
}}
 
{{PluginFilterRow|LSMASHSource|LWLibavVideoSource|
 
{{PluginFilterRow|LSMASHSource|LWLibavVideoSource|
This function uses [http://en.wikipedia.org/wiki/Libav#Video_codecs libavcodec] as a video decoder and libavformat as a demuxer.
+
Uses libavcodec as a video decoder and libavformat as a demuxer.<br>
 +
Supports video codecs '''LSMASHVideoSource''' does not &ndash; for example MPEG-4, UT Video, Lagarith, and animated GIF and PNG.
 
| [[RGB24]], [[RGB32]], [[YUY2]], [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]
 
| [[RGB24]], [[RGB32]], [[YUY2]], [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]
 
}}
 
}}
 +
|}
 +
<br>
 +
== Examples ==
 +
* Combining '''LSMASHVideoSource''' + '''LSMASHAudioSource'''
 +
<div {{BoxWidthIndent|56|1}} >
 +
#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 [[LSMASHSource/LSMASHVideoSource|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))
 +
}
 +
</div>
 +
* Combining '''LWLibavVideoSource''' + '''LWLibavAudioSource'''
 +
<div {{BoxWidthIndent|56|1}} >
 +
#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 [[LSMASHSource/LWLibavVideoSource|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))
 +
}
 +
</div>
 +
<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.
 +
 +
<div style="max-width:82em; min-width:42em;" >
 +
{|class="wikitable sortable" style="height:100px; width:100%" border="1" cellpadding="4"
 +
|-
 +
!class="unsortable" width=12%| Version
 +
!class="unsortable"| Changes
 +
|-
 +
|20200728
 +
|
 +
*VapourSynth: Fix alpha support.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1919597#post1919597 HolyWu]
 +
|-
 +
|20200726
 +
|
 +
*Update to FFmpeg 4.3.1.
 +
*Update to dav1d 0.7.1.
 +
*Update to libvpx 1.9.0-rc1.
 +
*Update to nv-codec-headers 10.0.26.0.
 +
*VapourSynth: Add support for YUVA, RGBA, and GBRA formats. The alpha channel is automatically outputted as a second clip.
 +
*AviSynth: Add support for YUVA and GBR(A) formats.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1919446#post1919446 HolyWu]
 +
|-
 +
|20200531
 +
|
 +
*Update to FFmpeg-20200530-4391289.
 +
*Update to dav1d 0.7.0.
 +
*AviSynth: Properly handle libdir in meson and plugin's entry point for non-Windows.
 +
*VideoSource: Try to fix more dropped frame cases in H.264 stream.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1914313#post1914313 HolyWu]
 +
|-
 +
|20200322
 +
|
 +
*Update to FFmpeg-20200322-ea46b45.
 +
*Update to dav1d 0.6.0.
 +
*AviSynth: Add Meson build system and fix compilation for non-Windows.
 +
*lwindex: Fix incorrect frame length being written into index file when decoding WMAv2.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1904692#post1904692 HolyWu]
 +
|-
 +
|20200207
 +
|
 +
*Update to FFmpeg-20200207-343ccfc.
 +
*LWLibav: Now only certain frames are marked as interlaced internally when enable repeat control. Although it had no effect on the decoded pictures whether the stream contain repeat flags or not, it did affect the value of frame property _FieldBased in VapourSynth for streams containing repeat flags.
 +
*LWLibav: Improve the logic of frame rate deduction.
 +
*LWLibav: Restore the functionality of opening index file as source.
 +
*AviSynth/LibavSMASH: Fix crash when open an invalid file path.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1898940#post1898940 HolyWu]
 +
|-
 +
|20200118
 +
|
 +
*VideoSource: Fix missing frames in some H264 streams.
 +
*LWLibav: Change the default of 'repeat' to true.
 +
*LWLibav: Fix VP8 decoding issue with alt-ref frames.n.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1896180#post1896180 HolyWu]
 +
|-
 +
|20200111
 +
|
 +
*Update to FFmpeg-20200110-c4c96d5.
 +
*lwindex: Don't write unneeded entries for audio streams in VideoSource.
 +
*Fix access violation caused by zlib in x86 version.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1895435#post1895435 HolyWu]
 +
|-
 +
|20191127
 +
|
 +
*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
 +
|
 +
*LibavSMASH: Fix access violation.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1890493#post1890493 HolyWu]
 +
|-
 +
|20191115
 +
|
 +
*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 [https://forum.doom9.org/showthread.php?p=1890409#post1890409 HolyWu]
 +
|-
 +
|20190917
 +
|
 +
*VideoSource: Add prefer_hw=3.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1885106#post1885106 HolyWu]
 +
|-
 +
|20190914
 +
|
 +
*VideoSource: Fix fallback to software decoder in prefer_hw.
 +
*LWLibav: Fix access violation in file name manipulation.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1884862#post1884862 HolyWu]
 +
|-
 +
|20190910
 +
|
 +
*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 [https://forum.doom9.org/showthread.php?p=1884446#post1884446 HolyWu]
 +
|-
 +
|20190903
 +
|
 +
*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 [https://forum.doom9.org/showthread.php?p=1883988#post1883988 HolyWu], includes MeteorRain's mods below. [https://forum.doom9.org/showthread.php?p=1884214#post1884214]
 +
|-
 +
|r935+34-20190829
 +
|
 +
*Stop indexing progress spamming
 +
**-- Now only refresh at every 1%.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1883670#post1883670 MeteorRain]
 +
|-
 +
|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.
 +
*A missing hash record will not force regenerating the index file as long as size and timestamp match.
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1883201#post1883201 MeteorRain]
 +
|-
 +
|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.
 +
*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.[https://forum.doom9.org/showthread.php?p=1882459#post1882459]
 +
*Change the printing of index progress from stdout to stderr so as to avoid corrupting pipe data accidentally[https://forum.doom9.org/showthread.php?p=1882223#post1882223]
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1882167#post1882167 HolyWu]
 +
|-
 +
|r935+26-20190811
 +
|
 +
* Update to FFmpeg 4.2.
 +
* Add parameter <tt>cachefile</tt>.
 +
* Changes by [https://forum.doom9.org/showthread.php?p=1881332#post1881332 HolyWu]
 +
|-
 +
|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]
 +
*Changes by [https://forum.doom9.org/showthread.php?p=1879029#post1879029 MeteorRain]
 
|}
 
|}
 
<br>
 
<br>
Line 48: Line 255:
 
== 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.mediafire.com/folder/17q7t31dib18t/LSMASH-Works MediaFire] - LSMASHSource for Windows XP [http://forum.doom9.org/showthread.php?t=167435&page=19#post1713408].
  
<br>
 
 
<br>
 
<br>
 
<br>
 
<br>
 
-----------------------------------------------
 
-----------------------------------------------
 
'''Back to [[External_filters#Source_Filters|External Filters]] &larr;'''
 
'''Back to [[External_filters#Source_Filters|External Filters]] &larr;'''

Latest revision as of 19:57, 6 August 2020

Abstract
Author VFR-maniac, HolyWu
Version 20200728
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


[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.
## @ 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))
}


[edit] 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
20200728
  • VapourSynth: Fix alpha support.
  • Changes by HolyWu
20200726
  • Update to FFmpeg 4.3.1.
  • Update to dav1d 0.7.1.
  • Update to libvpx 1.9.0-rc1.
  • Update to nv-codec-headers 10.0.26.0.
  • VapourSynth: Add support for YUVA, RGBA, and GBRA formats. The alpha channel is automatically outputted as a second clip.
  • AviSynth: Add support for YUVA and GBR(A) formats.
  • Changes by HolyWu
20200531
  • Update to FFmpeg-20200530-4391289.
  • Update to dav1d 0.7.0.
  • AviSynth: Properly handle libdir in meson and plugin's entry point for non-Windows.
  • VideoSource: Try to fix more dropped frame cases in H.264 stream.
  • Changes by HolyWu
20200322
  • Update to FFmpeg-20200322-ea46b45.
  • Update to dav1d 0.6.0.
  • AviSynth: Add Meson build system and fix compilation for non-Windows.
  • lwindex: Fix incorrect frame length being written into index file when decoding WMAv2.
  • Changes by HolyWu
20200207
  • Update to FFmpeg-20200207-343ccfc.
  • LWLibav: Now only certain frames are marked as interlaced internally when enable repeat control. Although it had no effect on the decoded pictures whether the stream contain repeat flags or not, it did affect the value of frame property _FieldBased in VapourSynth for streams containing repeat flags.
  • LWLibav: Improve the logic of frame rate deduction.
  • LWLibav: Restore the functionality of opening index file as source.
  • AviSynth/LibavSMASH: Fix crash when open an invalid file path.
  • Changes by HolyWu
20200118
  • VideoSource: Fix missing frames in some H264 streams.
  • LWLibav: Change the default of 'repeat' to true.
  • LWLibav: Fix VP8 decoding issue with alt-ref frames.n.
  • Changes by HolyWu
20200111
  • Update to FFmpeg-20200110-c4c96d5.
  • lwindex: Don't write unneeded entries for audio streams in VideoSource.
  • Fix access violation caused by zlib in x86 version.
  • Changes by HolyWu
20191127
  • Fix MPEG-2 decoding issue with RFF flags. (maki-rxrz)
  • Fix interlaced H.264 decoding issue in some files.
  • Changes by HolyWu
20191116
  • LibavSMASH: Fix access violation.
  • Changes by HolyWu
20191115
  • 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
  • VideoSource: Add prefer_hw=3.
  • Changes by HolyWu
20190914
  • VideoSource: Fix fallback to software decoder in prefer_hw.
  • LWLibav: Fix access violation in file name manipulation.
  • Changes by HolyWu
20190910
  • 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
  • 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
  • Stop indexing progress spamming
    • -- Now only refresh at every 1%.
  • Changes by MeteorRain
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.
  • A missing hash record will not force regenerating the index file as long as size and timestamp match.
  • Changes by MeteorRain
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.
  • 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]
  • Changes by HolyWu
r935+26-20190811
  • Update to FFmpeg 4.2.
  • Add parameter cachefile.
  • Changes by HolyWu
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.[4]
  • Changes by MeteorRain


[edit] 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
Personal tools