Update dependent libs for VideoViewer

This commit is contained in:
ema
2024-12-08 04:23:01 +08:00
parent 92778e6dcf
commit a3e0a58a3f
70 changed files with 501 additions and 6558 deletions

View File

@@ -1,5 +1,170 @@
LAV DirectShow Filters Changelog
===================================
0.79.2 - 2024/04/08
LAV Splitter
- Fixed: Buffering media from a high latency source was slower then expected (since 0.79)
LAV Audio
- Fixed: Bitstream AC3 audio could fallback to PCM on streams that start with a corrupt audio frame (since 0.78)
- Fixed: Resolved a memory leak when bitstreaming AC3
0.79.1 - 2024/03/28
LAV Video
- Fixed: Resolved a glitch when playing HEVC video
0.79.0 - 2024/03/25
LAV Splitter
- NEW: Support for demuxing VVC video
- Changed: Updated language lists to support all relevant language codes
- Changed: Improved resilience of streaming HLS
- Changed: Tweaked frame rate detection logic
LAV Video:
- NEW: Support for decoding VVC video
0.78.0 - 2023/10/25
LAV Splitter
- NEW: Added identification of DTS:X in DTS HD-HRA streams
- NEW: Support for various stream flags in Matroska containers (Hearing Impaired, and more)
- Changed: Text-based subtitle selection now uses case-insensitive matches (ASCII characters only)
- Fixed: Many stream titles in MP4 files weren't being read properly
LAV Video
- NEW: Support for decoding SMC video
- Fixed: HLG video streams could have their HLG flag overriden in some circumstances
LAV Audio
- Fixed: TrueHD bitstreaming of Atmos tracks could cause output timestamps to be off, confusing some audio renderers
0.77.2 - 2023/03/08
LAV Splitter
- NEW: Added identification for spatial/immersive audio extensions (Atmos, DTS:X)
- Changed: More reasonable rounding for odd aspect ratios, avoiding issues with some video pipelines
- Fixed: Improved compatibility with some FTP servers
LAV Audio
- Fixed: Restored the default channel layouts for 5.1 and 7.1 to the correct layout (accidentally changed in 0.77, causing some playback issues)
- Fixed: Some TrueHD files would not decode correctly
- Fixed: Clipping protection did not engage when using Integer output
0.77.1 - 2022/11/15
LAV Splitter
- Fixed: More MP4 keyframe information fixes
0.77.0 - 2022/11/10
LAV Splitter
- Fixed: Improved handling of multichannel PCM channel assignments
- Fixed: MP4 Keyframe information could be wrong
LAV Audio
- NEW: Support for audio with more then 8 channel, including automatic downmixing if required
0.76.1 - 2022/02/28
LAV Splitter
- Changed: When requesting a HTTP URL, the URL itself is send as a referrer to increase compatibility
- Fixed: The priority of "Default" subtitle tracks in MKV files was wrong when a forced track was present
LAV Video
- Changed: Improved color reporting for DVD menus/subtitles
- Fixed: D3D11 surface clearing did not work properly on Intel GPUs
0.76.0 - 2022/01/22
LAV Splitter
- NEW: Added an option to re-evaluate subtitle stream selection when the audio language changes
- NEW: Improved advanced subtitle selection syntax with negated flags (positive and negative flags can now be combined for more flexible selection)
- Changed: Improved variant/stream selection in DASH and HLS streams
- Changed: Video streams with the highest bitrate are preferred (if equal resolution)
LAV Video
- NEW: Support for passing DoVi metadata to video renderers
- NEW: BobWeaver (BWDIF) software deinterlacer (a blend of YADIF and Weston, focusing on their individual strengths)
- NEW: Support for FIC screen capture video
- Changed: D3D11 video surfaces are flushed to black before decoding, avoiding green artifacts
- Changed: D3D11 devices are created up to feature level 12.1
LAV Audio
- Fixed: TrueHD bitstreaming could result in A/V sync issues or drop-outs
- Removed: Support for the external DTS decoder (dtsdecoderdll.dll) has been removed
0.75.1 - 2021/06/21
LAV Splitter
- Changed: AV1 files with no extradata will now generate a format header with stream information for decoders to use
- Fixed: Improved stream selection when multiple "default" video tracks are present
LAV Video
- Changed: Updated dav1d for significant improvements in AV1 10-bit decoding performance
- Changed: AV1 hardware decoding will more reliably engage when provided with additional stream information from the demuxer
LAV Audio
- Fixed: Opus decoding had audible artifacts in some files in 0.75
0.75.0 - 2021/03/30
LAV Splitter
- NEW: Support for DASH streaming
- NEW: WebVTT support in Matroska/WebM
- Changed: Improved Font support from Matroska files
- Fixed: Large queue size limits could result in the wrong limit being applied
- Fixed: Resolved a memory leak in Matroska demuxing
- Fixed: Avoid selecting a stream with only a single video frame in MP4 files, which is often a cover art
- Fixed: Seeking in Matroska files with only audio cue points did not function
- Fixed: Seeking to the beginning of certain HLS streams did not work properly
- Fixed: Duration information in Matroska files is more reliable
LAV Video
- NEW: AV1 DXVA2/D3D11 hardware decoding support
- NEW: ProRes 4444 XQ support
- Faster: Updated dav1d decoder and improved thread configuration for significantly improved AV1 decoding speed
- Fixed: Added a workaround for VP9 hardware decoding on AMD video cards
- Fixed: H.264 streams exceeding the Level 5.1 DPB limit will no longer be hardware decoded
- Fixed: Improved handling of missing reference frames in H.264 streams with hardware decoding
- Fixed: HEVC streams encoding 8-bit video in a Main10 profile can be properly hardware decoded
- Deprecated: NVIDIA CUVID and Intel QuickSync have been deprecated for future removal/replacement
LAV Audio
- Fixed: Resolved an issue with glitching TrueHD bitstreaming on seamless-branching titles
- Fixed: Resolved a compatibility issue with some playback applications
- Deprecated: Support for the binary DTS decoder (dtsdecoderdll.dll) has been deprecated for future removal
0.74.1 - 2019/03/19
LAV Video
- Fixed: VP9 video could produce wrong timestamps, resulting in a black screen or other playback disruptions
- Fixed: Decoding VP9 from a non-keyframe (ie. after a seek, or badly cut file) would not always recover properly once a keyframe was encountered
0.74.0 - 2019/03/16
LAV Splitter
- Changed: Using GnuTLS for HTTPS and other TLS protocols, improving performance and compatibility with a lot of web streaming services (ie. YouTube Live Streams through youtube-dl, and more)
- Fixed: Keyframes in MP4 files were being reported with a slightly offset timestamp, resulting in slow keyframe seeking
- Fixed: Subtitles that stretch over chapter boundaries could be lost in Ordered Chapter MKV files
- Fixed: Fonts embedded in MKVs without a proper mimetype were not being imported (now it checks the file extensions for .ttf/.otf as well)
LAV Video
- NEW: Initial support for parsing HDR10+ (SMPTE ST 2094-40) metadata, and passing it to the video renderer
- NEW: Using the dav1d AV1 decoder for significantly improved AV1 decoding performance
- Changed: Re-enabled experimental hardware acceleration for H.264 MVC 3D decoding on Intel GPUs, disabled by default
- Changed: Updated Intel MediaSDK dispatchers to the latest Media SDK, fixing compatibility with newer runtimes in the Intel DCH drivers
- Changed: Improved support for additional UtVideo subtypes
LAV Audio
- Changed: Added an option to disable the PCM fallback when bitstreaming is requested
- Fixed: Further improvements to TrueHD Bitstreaming, resolving glitching on more new titles (particularly seamless branching titles)
- Fixed: Automatic fallback from bitstreaming to PCM could crash in some situations
0.73.1 - 2018/10/11
LAV Video
- Fixed: Container-provided color information will only overwrite video bitstream color information if its set and valid
LAV Audio
- Fixed: Certain multi-channel AAC streams did not decode in 0.73
0.73.0 - 2018/10/05
LAV Splitter
- Changed: Export the description of cover art and attachments for use by players
- Fixed: Properly marked the packet allocator as providing read-only packets, to avoid crashes with in-place transform filters
LAV Video
- NEW: Support for AV1 decoding using libaom
- Changed: Enabled VP9 hardware acceleration by default
- Fixed: The aspect ratio of certain WMV/VC-1 files was not being properly respected in the WMV9 MFT decoder
0.72.0 - 2018/06/19
LAV Video
@@ -24,7 +189,7 @@ LAV Video
- Fixed: HDR metadata was not properly communicated to madVR in DXVA2-Native mode
- Fixed: Anamorphic WMV9/VC-1 videos were not being played back with the correct aspect ratio in all cases
- Fixed: Changing certain settings while playback was paused could result in a deadlock
- Fixed: Playing severly corrupted HEVC streams with hardware decoding could result in playback failing entirely, instead of skipping over the corruption
- Fixed: Playing severely corrupted HEVC streams with hardware decoding could result in playback failing entirely, instead of skipping over the corruption
LAV Audio
- NEW: Basic support for AAC 960 streams (common in DVB radio streams)
@@ -441,7 +606,7 @@ LAV Splitter
LAV Video
- Basic support for playing DVDs in different playback rates
- Fixed DXVA2 resource cleanup which may have caused a crash in some situations with DXVA2-Native
- Fixed A/V Sync when using the WMV9 DMO decoder (especially noticable after seeking)
- Fixed A/V Sync when using the WMV9 DMO decoder (especially noticeable after seeking)
LAV Audio
- Improved AC3 decoding quality (thanks to madshi for the patch in ffmpeg)
@@ -452,7 +617,7 @@ General
LAV Splitter
- Added an option to disable quality-based audio stream selection (selects the first stream matching the language preferences)
- Removed Bitrate from audio quality criterias, because its too unreliable at this point.
- Removed Bitrate from audio quality criteria, because its too unreliable at this point.
LAV Video
- Fixed YADIF deinterlacing (broken after a ffmpeg update on 0.55)
@@ -805,7 +970,7 @@ LAV Video
0.42 - 2011/11/30
LAV Splitter
- Fixed a timestamping bug in the new MKV demuxer
- Futher enhancements to explorer thumbnail generation
- Further enhancements to explorer thumbnail generation
0.41 - 2011/11/29
LAV Splitter
@@ -1025,7 +1190,7 @@ LAV Audio
- Support for 1.1.0.0
- Try to reverse any channel upmixing done by the decoder, outputting the audio as close to the original source as possible.
- New Channel Mapping functionality
- Output only "standard" channel layouts (Mono, Stereo, 5.1, 6.1, 7.1), filling non-existant channels with silence. Required by some HDMI receivers with "odd" source layouts. (default)
- Output only "standard" channel layouts (Mono, Stereo, 5.1, 6.1, 7.1), filling non-existent channels with silence. Required by some HDMI receivers with "odd" source layouts. (default)
- Convert Mono to Stereo (simply double the audio channel)
- Convert 6.1 to 7.1 (Back Center gets doubled into both back channels)
@@ -1181,7 +1346,7 @@ LAV Splitter
- Improved MPEG-TS duration calculations.
- The settings will now always be properly saved and loaded.
- Disabled the limit of 20 Streams per file.
- Fixed two seperate issues that caused files to not start playing.
- Fixed two separate issues that caused files to not start playing.
LAV Audio Decoder
- Property Page for Configuration and Status has been added
@@ -1279,4 +1444,4 @@ LAVCAudio
- Fixed overflow in timestamp calculation causing AVIs to play too fast
0.1 - 2010/08/14
- Initial Release
- Initial Release

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type='win32' name='LAVFilters.Dependencies' version='1.0.0.0' />
<file name="avutil-lav-56.dll" />
<file name="avresample-lav-4.dll" />
<file name="avcodec-lav-58.dll" />
<file name="avformat-lav-58.dll" />
<file name="swscale-lav-5.dll" />
<file name="avfilter-lav-7.dll" />
<file name="avutil-lav-59.dll" />
<file name="swresample-lav-5.dll" />
<file name="avcodec-lav-61.dll" />
<file name="avformat-lav-61.dll" />
<file name="swscale-lav-8.dll" />
<file name="avfilter-lav-10.dll" />
<file name="libbluray.dll" />
</assembly>

View File

@@ -9,12 +9,11 @@ Install
=============================
- Unpack
- Register (install_*.bat files)
Registering requires administrative rights.
On Vista/7 also make sure to start it in an elevated shell.
Registering requires administrative rights, and an elevated shell ("Run as Administrator")
Using it
=============================
By default the splitter will register for all media formats that have been
By default, the splitter will register for all media formats that have been
tested and found working at least partially.
This currently includes (but is not limited to)
MKV/WebM, AVI, MP4/MOV, TS/M2TS/MPG, FLV, OGG, BluRay (.bdmv and .mpls)
@@ -24,7 +23,7 @@ to use them. The Haali Media Splitter is one of those, and to give priority
to the LAVFSplitter you have to either uninstall Haali or rename its .ax file
at least temporarily.
The Audio and Video Decoder will register with a relatively high merit, which should make
The Audio and Video Decoder will register with relatively high merit, which should make
it the preferred decoder by default. Most players offer a way to choose the preferred
decoder however.
@@ -35,18 +34,18 @@ The selection of video streams is not configurable, and LAV Splitter will quite
pick the one with the best quality.
Audio stream selection offers some flexibility, specifically you can configure your preferred languages.
The language configuration is straight forward. Just enter a list of 3-letter language codes (ISO 639-2),
The language configuration is straightforward. Just enter a list of 3-letter language codes (ISO 639-2),
separated by comma or space.
For example: "eng ger fre". This would try to select a stream matching one of these languages,
in the order you specified them. First check if an English track is present, and only if not,
in the order you specified them. First, check if an English track is present, and only if not,
go to German, and after that, go to French.
If multiple audio tracks match one language, the choice is based on the quality. The primary attribute here
is the number of channels, and after that the codec used. PCM and lossless codecs have a higher priority
then lossy codecs.
is the number of channels, and after that is the codec used. PCM and lossless codecs have a higher priority
than lossy codecs.
Subtitle selection offers the most flexibility.
There is 4 distinct modes of subtitle selection.
There are 4 distinct modes of subtitle selection.
"No Subtitles"
This mode is simple, by default subtitles will be off.
@@ -56,7 +55,7 @@ This mode will only pre-select subtitles flagged with the "forced" flag. It'll a
"Default"
The default mode will select subtitles matching your language preference. If there is no match, or you didn't configure
languages, no subtitles will be activated. In addion, subtitles flagged "default" or "forced" will always be used.
languages, no subtitles will be activated. In addition, subtitles flagged "default" or "forced" will always be used.
"Advanced"
The advanced mode lets you write your own combinations of rules with a special syntax. It also allows selecting subtitles
@@ -67,26 +66,50 @@ In this example, LAV Splitter would select German subtitles if English audio was
Instead of language codes, the advanced mode supports two special cases: "*" and "off".
When you specify "*" for a language code, it'll match everything. For example "*:eng" will activate English subtitles, independent
of the audio language. The reverse is also possible: "eng:*" will activate any subtitles when the audio is english.
of the audio language. The reverse is also possible: "eng:*" will activate any subtitles when the audio is English.
The "off" flag is only valid for the subtitle language, and it instructs LAV Splitter to turn the subtitles off.
So "eng:off" means that when the audio is english, the subtitles will be deactivated.
So "eng:off" means that when the audio is English, the subtitles will be deactivated.
Additionally to the syntax above, two flags are supported to enhance the subtitle selection.
Specifically, LAV Splitter understands the flag "d" for default subtitles, the flag "f" for forced subtitles,
the flag "h" for hearing impaired, and the flag "n" for normal streams (not default, forced, or impaired).
In addition, flags can be negated with a leading "!" before the whole flags block - "!h" becomes "dfn", etc.
Flags are appended to the subtitle language, separated by a pipe symbol ("|"). Example: "*:*|f"
This token specifys that on any audio language, you want any subtitle that is flagged forced.
The advanced rukes can be combined into a complete logic for subtitle selection by just appending them, separated with a comma or a space.
Additionally to the syntax above, the following flags can be appended to the subtitle token separated by a pipe symbol ("|"):
- "d" for default subtitles
- "f" for forced subtitles
- "h" for hearing impaired
- "n" for normal streams (not default, forced, or impaired).
In addition, you can also check for the absence of flags by preceding the flags with a "!".
The advanced rules can be combined into a complete logic for subtitle selection by just appending them, separated with a comma or a space.
The rules will always be parsed from left to right, the first match taking precedence.
Consider the following rule set:
"eng:eng|f eng:ger|f eng:off *:eng *:ger"
This rule means the following:
If audio is english, load an english or a german forced subtitle track, otherwise turn subtitles off.
If audio is not english, load english or german subtitles.
Finally, the rules can match the name of a stream, with some limitations. Only single words can be matched, as spaces are a separator for the next token.
A text match can be added to the end of the token with an @ sign.
Example: (basic flag usage)
"*:*|f"
Explanation:
On any audio language, load any subtitles that are flagged forced.
Example: (basic ruleset)
"eng:eng|f eng:ger|f eng:off *:eng *:ger"
Explanation:
If the audio is English, load an English or a German forced subtitle track, otherwise, turn subtitles off.
If the audio is not English, load English or German subtitles.
Example: (flag usage with negation)
"jpn:ger|d!f"
Explanation:
In the Japanese language, load German subtitles that have the default-flag but not together with forced-flag.
This is useful when you have files where the default and forced flags are set together.
Example: (advanced ruleset for files with multiple audio and subtitle-tracks)
"jpn:ger|d!f jpn:ger|!f jpn:ger ger:ger|f ger:eng|f ger:*|f"
Explanation:
On Japanese audio, try to load German full subs (default but not forced), then unforced, and at last any german subs if there are no unforced subs.
On German audio load only forced subs in the following order: German, English, any.
Example: (text match)
"*:eng@Forced"
Explanation:
On any audio, select english subtitle streams with "Forced" in the stream title.
BluRay Support
=============================
@@ -96,31 +119,30 @@ and start playing.
Alternatively, you can also open a playlist file (*.mpls, located in BDMV/PLAYLIST), and LAV Splitter
will then play that specific title.
In future versions you'll be able to choose the title from within the player, as well.
In future versions, you'll be able to choose the title from within the player, as well.
Compiling
=============================
Compiling is pretty straight forward using VC++2015 U1 (included project files).
Older versions of Visual Studio are not supported.
Compiling is pretty straightforward using VS2019 (included project files).
Older versions of Visual Studio are not officially supported, but may still work.
It does, however, require that you build your own ffmpeg and libbluray.
You need to place the full ffmpeg package in a directory called "ffmpeg" in the
main source directory (the directory this file was in). There are scripts to
You need to place the full ffmpeg package in a directory called "ffmpeg" in the
main source directory (the directory this file was in). There are scripts to
build a proper ffmpeg included.
I recommend using my fork of ffmpeg, as it includes additional patches for
I recommend using my fork of ffmpeg, as it includes additional patches for
media compatibility:
http://git.1f0.de/gitweb?p=ffmpeg.git;a=summary
https://gitea.1f0.de/LAV/FFmpeg
libbluray is compiled with the MSVC project files, however a specially modified
libbluray is compiled with the MSVC project files, however, a specially modified
version of libbluray is required. Similar to ffmpeg, just place the full tree
inside the "libbluray" directory in the main directory.
You can get the modified version here:
http://git.1f0.de/gitweb?p=libbluray.git;a=summary
https://gitea.1f0.de/LAV/libbluray
Feedback
=============================
GitHub Project: https://github.com/Nevcairiel/LAVFilters
Doom9: http://forum.doom9.org/showthread.php?t=156191
You can, additionally, reach me on IRC in the MPC-HC channel on freenode (#mpc-hc)
Doom9: https://forum.doom9.org/showthread.php?t=156191

View File

@@ -0,0 +1,2 @@
cd /d "%~dp0"
regsvr32.exe LAVAudio.ax

View File

@@ -0,0 +1,2 @@
cd /d "%~dp0"
regsvr32.exe LAVSplitter.ax

View File

@@ -0,0 +1,2 @@
cd /d "%~dp0"
regsvr32.exe LAVVideo.ax

View File

@@ -1,5 +1,170 @@
LAV DirectShow Filters Changelog
===================================
0.79.2 - 2024/04/08
LAV Splitter
- Fixed: Buffering media from a high latency source was slower then expected (since 0.79)
LAV Audio
- Fixed: Bitstream AC3 audio could fallback to PCM on streams that start with a corrupt audio frame (since 0.78)
- Fixed: Resolved a memory leak when bitstreaming AC3
0.79.1 - 2024/03/28
LAV Video
- Fixed: Resolved a glitch when playing HEVC video
0.79.0 - 2024/03/25
LAV Splitter
- NEW: Support for demuxing VVC video
- Changed: Updated language lists to support all relevant language codes
- Changed: Improved resilience of streaming HLS
- Changed: Tweaked frame rate detection logic
LAV Video:
- NEW: Support for decoding VVC video
0.78.0 - 2023/10/25
LAV Splitter
- NEW: Added identification of DTS:X in DTS HD-HRA streams
- NEW: Support for various stream flags in Matroska containers (Hearing Impaired, and more)
- Changed: Text-based subtitle selection now uses case-insensitive matches (ASCII characters only)
- Fixed: Many stream titles in MP4 files weren't being read properly
LAV Video
- NEW: Support for decoding SMC video
- Fixed: HLG video streams could have their HLG flag overriden in some circumstances
LAV Audio
- Fixed: TrueHD bitstreaming of Atmos tracks could cause output timestamps to be off, confusing some audio renderers
0.77.2 - 2023/03/08
LAV Splitter
- NEW: Added identification for spatial/immersive audio extensions (Atmos, DTS:X)
- Changed: More reasonable rounding for odd aspect ratios, avoiding issues with some video pipelines
- Fixed: Improved compatibility with some FTP servers
LAV Audio
- Fixed: Restored the default channel layouts for 5.1 and 7.1 to the correct layout (accidentally changed in 0.77, causing some playback issues)
- Fixed: Some TrueHD files would not decode correctly
- Fixed: Clipping protection did not engage when using Integer output
0.77.1 - 2022/11/15
LAV Splitter
- Fixed: More MP4 keyframe information fixes
0.77.0 - 2022/11/10
LAV Splitter
- Fixed: Improved handling of multichannel PCM channel assignments
- Fixed: MP4 Keyframe information could be wrong
LAV Audio
- NEW: Support for audio with more then 8 channel, including automatic downmixing if required
0.76.1 - 2022/02/28
LAV Splitter
- Changed: When requesting a HTTP URL, the URL itself is send as a referrer to increase compatibility
- Fixed: The priority of "Default" subtitle tracks in MKV files was wrong when a forced track was present
LAV Video
- Changed: Improved color reporting for DVD menus/subtitles
- Fixed: D3D11 surface clearing did not work properly on Intel GPUs
0.76.0 - 2022/01/22
LAV Splitter
- NEW: Added an option to re-evaluate subtitle stream selection when the audio language changes
- NEW: Improved advanced subtitle selection syntax with negated flags (positive and negative flags can now be combined for more flexible selection)
- Changed: Improved variant/stream selection in DASH and HLS streams
- Changed: Video streams with the highest bitrate are preferred (if equal resolution)
LAV Video
- NEW: Support for passing DoVi metadata to video renderers
- NEW: BobWeaver (BWDIF) software deinterlacer (a blend of YADIF and Weston, focusing on their individual strengths)
- NEW: Support for FIC screen capture video
- Changed: D3D11 video surfaces are flushed to black before decoding, avoiding green artifacts
- Changed: D3D11 devices are created up to feature level 12.1
LAV Audio
- Fixed: TrueHD bitstreaming could result in A/V sync issues or drop-outs
- Removed: Support for the external DTS decoder (dtsdecoderdll.dll) has been removed
0.75.1 - 2021/06/21
LAV Splitter
- Changed: AV1 files with no extradata will now generate a format header with stream information for decoders to use
- Fixed: Improved stream selection when multiple "default" video tracks are present
LAV Video
- Changed: Updated dav1d for significant improvements in AV1 10-bit decoding performance
- Changed: AV1 hardware decoding will more reliably engage when provided with additional stream information from the demuxer
LAV Audio
- Fixed: Opus decoding had audible artifacts in some files in 0.75
0.75.0 - 2021/03/30
LAV Splitter
- NEW: Support for DASH streaming
- NEW: WebVTT support in Matroska/WebM
- Changed: Improved Font support from Matroska files
- Fixed: Large queue size limits could result in the wrong limit being applied
- Fixed: Resolved a memory leak in Matroska demuxing
- Fixed: Avoid selecting a stream with only a single video frame in MP4 files, which is often a cover art
- Fixed: Seeking in Matroska files with only audio cue points did not function
- Fixed: Seeking to the beginning of certain HLS streams did not work properly
- Fixed: Duration information in Matroska files is more reliable
LAV Video
- NEW: AV1 DXVA2/D3D11 hardware decoding support
- NEW: ProRes 4444 XQ support
- Faster: Updated dav1d decoder and improved thread configuration for significantly improved AV1 decoding speed
- Fixed: Added a workaround for VP9 hardware decoding on AMD video cards
- Fixed: H.264 streams exceeding the Level 5.1 DPB limit will no longer be hardware decoded
- Fixed: Improved handling of missing reference frames in H.264 streams with hardware decoding
- Fixed: HEVC streams encoding 8-bit video in a Main10 profile can be properly hardware decoded
- Deprecated: NVIDIA CUVID and Intel QuickSync have been deprecated for future removal/replacement
LAV Audio
- Fixed: Resolved an issue with glitching TrueHD bitstreaming on seamless-branching titles
- Fixed: Resolved a compatibility issue with some playback applications
- Deprecated: Support for the binary DTS decoder (dtsdecoderdll.dll) has been deprecated for future removal
0.74.1 - 2019/03/19
LAV Video
- Fixed: VP9 video could produce wrong timestamps, resulting in a black screen or other playback disruptions
- Fixed: Decoding VP9 from a non-keyframe (ie. after a seek, or badly cut file) would not always recover properly once a keyframe was encountered
0.74.0 - 2019/03/16
LAV Splitter
- Changed: Using GnuTLS for HTTPS and other TLS protocols, improving performance and compatibility with a lot of web streaming services (ie. YouTube Live Streams through youtube-dl, and more)
- Fixed: Keyframes in MP4 files were being reported with a slightly offset timestamp, resulting in slow keyframe seeking
- Fixed: Subtitles that stretch over chapter boundaries could be lost in Ordered Chapter MKV files
- Fixed: Fonts embedded in MKVs without a proper mimetype were not being imported (now it checks the file extensions for .ttf/.otf as well)
LAV Video
- NEW: Initial support for parsing HDR10+ (SMPTE ST 2094-40) metadata, and passing it to the video renderer
- NEW: Using the dav1d AV1 decoder for significantly improved AV1 decoding performance
- Changed: Re-enabled experimental hardware acceleration for H.264 MVC 3D decoding on Intel GPUs, disabled by default
- Changed: Updated Intel MediaSDK dispatchers to the latest Media SDK, fixing compatibility with newer runtimes in the Intel DCH drivers
- Changed: Improved support for additional UtVideo subtypes
LAV Audio
- Changed: Added an option to disable the PCM fallback when bitstreaming is requested
- Fixed: Further improvements to TrueHD Bitstreaming, resolving glitching on more new titles (particularly seamless branching titles)
- Fixed: Automatic fallback from bitstreaming to PCM could crash in some situations
0.73.1 - 2018/10/11
LAV Video
- Fixed: Container-provided color information will only overwrite video bitstream color information if its set and valid
LAV Audio
- Fixed: Certain multi-channel AAC streams did not decode in 0.73
0.73.0 - 2018/10/05
LAV Splitter
- Changed: Export the description of cover art and attachments for use by players
- Fixed: Properly marked the packet allocator as providing read-only packets, to avoid crashes with in-place transform filters
LAV Video
- NEW: Support for AV1 decoding using libaom
- Changed: Enabled VP9 hardware acceleration by default
- Fixed: The aspect ratio of certain WMV/VC-1 files was not being properly respected in the WMV9 MFT decoder
0.72.0 - 2018/06/19
LAV Video
@@ -24,7 +189,7 @@ LAV Video
- Fixed: HDR metadata was not properly communicated to madVR in DXVA2-Native mode
- Fixed: Anamorphic WMV9/VC-1 videos were not being played back with the correct aspect ratio in all cases
- Fixed: Changing certain settings while playback was paused could result in a deadlock
- Fixed: Playing severly corrupted HEVC streams with hardware decoding could result in playback failing entirely, instead of skipping over the corruption
- Fixed: Playing severely corrupted HEVC streams with hardware decoding could result in playback failing entirely, instead of skipping over the corruption
LAV Audio
- NEW: Basic support for AAC 960 streams (common in DVB radio streams)
@@ -441,7 +606,7 @@ LAV Splitter
LAV Video
- Basic support for playing DVDs in different playback rates
- Fixed DXVA2 resource cleanup which may have caused a crash in some situations with DXVA2-Native
- Fixed A/V Sync when using the WMV9 DMO decoder (especially noticable after seeking)
- Fixed A/V Sync when using the WMV9 DMO decoder (especially noticeable after seeking)
LAV Audio
- Improved AC3 decoding quality (thanks to madshi for the patch in ffmpeg)
@@ -452,7 +617,7 @@ General
LAV Splitter
- Added an option to disable quality-based audio stream selection (selects the first stream matching the language preferences)
- Removed Bitrate from audio quality criterias, because its too unreliable at this point.
- Removed Bitrate from audio quality criteria, because its too unreliable at this point.
LAV Video
- Fixed YADIF deinterlacing (broken after a ffmpeg update on 0.55)
@@ -805,7 +970,7 @@ LAV Video
0.42 - 2011/11/30
LAV Splitter
- Fixed a timestamping bug in the new MKV demuxer
- Futher enhancements to explorer thumbnail generation
- Further enhancements to explorer thumbnail generation
0.41 - 2011/11/29
LAV Splitter
@@ -1025,7 +1190,7 @@ LAV Audio
- Support for 1.1.0.0
- Try to reverse any channel upmixing done by the decoder, outputting the audio as close to the original source as possible.
- New Channel Mapping functionality
- Output only "standard" channel layouts (Mono, Stereo, 5.1, 6.1, 7.1), filling non-existant channels with silence. Required by some HDMI receivers with "odd" source layouts. (default)
- Output only "standard" channel layouts (Mono, Stereo, 5.1, 6.1, 7.1), filling non-existent channels with silence. Required by some HDMI receivers with "odd" source layouts. (default)
- Convert Mono to Stereo (simply double the audio channel)
- Convert 6.1 to 7.1 (Back Center gets doubled into both back channels)
@@ -1181,7 +1346,7 @@ LAV Splitter
- Improved MPEG-TS duration calculations.
- The settings will now always be properly saved and loaded.
- Disabled the limit of 20 Streams per file.
- Fixed two seperate issues that caused files to not start playing.
- Fixed two separate issues that caused files to not start playing.
LAV Audio Decoder
- Property Page for Configuration and Status has been added
@@ -1279,4 +1444,4 @@ LAVCAudio
- Fixed overflow in timestamp calculation causing AVIs to play too fast
0.1 - 2010/08/14
- Initial Release
- Initial Release

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type='win32' name='LAVFilters.Dependencies' version='1.0.0.0' />
<file name="avutil-lav-56.dll" />
<file name="avresample-lav-4.dll" />
<file name="avcodec-lav-58.dll" />
<file name="avformat-lav-58.dll" />
<file name="swscale-lav-5.dll" />
<file name="avfilter-lav-7.dll" />
<file name="avutil-lav-59.dll" />
<file name="swresample-lav-5.dll" />
<file name="avcodec-lav-61.dll" />
<file name="avformat-lav-61.dll" />
<file name="swscale-lav-8.dll" />
<file name="avfilter-lav-10.dll" />
<file name="libbluray.dll" />
</assembly>

View File

@@ -9,12 +9,11 @@ Install
=============================
- Unpack
- Register (install_*.bat files)
Registering requires administrative rights.
On Vista/7 also make sure to start it in an elevated shell.
Registering requires administrative rights, and an elevated shell ("Run as Administrator")
Using it
=============================
By default the splitter will register for all media formats that have been
By default, the splitter will register for all media formats that have been
tested and found working at least partially.
This currently includes (but is not limited to)
MKV/WebM, AVI, MP4/MOV, TS/M2TS/MPG, FLV, OGG, BluRay (.bdmv and .mpls)
@@ -24,7 +23,7 @@ to use them. The Haali Media Splitter is one of those, and to give priority
to the LAVFSplitter you have to either uninstall Haali or rename its .ax file
at least temporarily.
The Audio and Video Decoder will register with a relatively high merit, which should make
The Audio and Video Decoder will register with relatively high merit, which should make
it the preferred decoder by default. Most players offer a way to choose the preferred
decoder however.
@@ -35,18 +34,18 @@ The selection of video streams is not configurable, and LAV Splitter will quite
pick the one with the best quality.
Audio stream selection offers some flexibility, specifically you can configure your preferred languages.
The language configuration is straight forward. Just enter a list of 3-letter language codes (ISO 639-2),
The language configuration is straightforward. Just enter a list of 3-letter language codes (ISO 639-2),
separated by comma or space.
For example: "eng ger fre". This would try to select a stream matching one of these languages,
in the order you specified them. First check if an English track is present, and only if not,
in the order you specified them. First, check if an English track is present, and only if not,
go to German, and after that, go to French.
If multiple audio tracks match one language, the choice is based on the quality. The primary attribute here
is the number of channels, and after that the codec used. PCM and lossless codecs have a higher priority
then lossy codecs.
is the number of channels, and after that is the codec used. PCM and lossless codecs have a higher priority
than lossy codecs.
Subtitle selection offers the most flexibility.
There is 4 distinct modes of subtitle selection.
There are 4 distinct modes of subtitle selection.
"No Subtitles"
This mode is simple, by default subtitles will be off.
@@ -56,7 +55,7 @@ This mode will only pre-select subtitles flagged with the "forced" flag. It'll a
"Default"
The default mode will select subtitles matching your language preference. If there is no match, or you didn't configure
languages, no subtitles will be activated. In addion, subtitles flagged "default" or "forced" will always be used.
languages, no subtitles will be activated. In addition, subtitles flagged "default" or "forced" will always be used.
"Advanced"
The advanced mode lets you write your own combinations of rules with a special syntax. It also allows selecting subtitles
@@ -67,26 +66,50 @@ In this example, LAV Splitter would select German subtitles if English audio was
Instead of language codes, the advanced mode supports two special cases: "*" and "off".
When you specify "*" for a language code, it'll match everything. For example "*:eng" will activate English subtitles, independent
of the audio language. The reverse is also possible: "eng:*" will activate any subtitles when the audio is english.
of the audio language. The reverse is also possible: "eng:*" will activate any subtitles when the audio is English.
The "off" flag is only valid for the subtitle language, and it instructs LAV Splitter to turn the subtitles off.
So "eng:off" means that when the audio is english, the subtitles will be deactivated.
So "eng:off" means that when the audio is English, the subtitles will be deactivated.
Additionally to the syntax above, two flags are supported to enhance the subtitle selection.
Specifically, LAV Splitter understands the flag "d" for default subtitles, the flag "f" for forced subtitles,
the flag "h" for hearing impaired, and the flag "n" for normal streams (not default, forced, or impaired).
In addition, flags can be negated with a leading "!" before the whole flags block - "!h" becomes "dfn", etc.
Flags are appended to the subtitle language, separated by a pipe symbol ("|"). Example: "*:*|f"
This token specifys that on any audio language, you want any subtitle that is flagged forced.
The advanced rukes can be combined into a complete logic for subtitle selection by just appending them, separated with a comma or a space.
Additionally to the syntax above, the following flags can be appended to the subtitle token separated by a pipe symbol ("|"):
- "d" for default subtitles
- "f" for forced subtitles
- "h" for hearing impaired
- "n" for normal streams (not default, forced, or impaired).
In addition, you can also check for the absence of flags by preceding the flags with a "!".
The advanced rules can be combined into a complete logic for subtitle selection by just appending them, separated with a comma or a space.
The rules will always be parsed from left to right, the first match taking precedence.
Consider the following rule set:
"eng:eng|f eng:ger|f eng:off *:eng *:ger"
This rule means the following:
If audio is english, load an english or a german forced subtitle track, otherwise turn subtitles off.
If audio is not english, load english or german subtitles.
Finally, the rules can match the name of a stream, with some limitations. Only single words can be matched, as spaces are a separator for the next token.
A text match can be added to the end of the token with an @ sign.
Example: (basic flag usage)
"*:*|f"
Explanation:
On any audio language, load any subtitles that are flagged forced.
Example: (basic ruleset)
"eng:eng|f eng:ger|f eng:off *:eng *:ger"
Explanation:
If the audio is English, load an English or a German forced subtitle track, otherwise, turn subtitles off.
If the audio is not English, load English or German subtitles.
Example: (flag usage with negation)
"jpn:ger|d!f"
Explanation:
In the Japanese language, load German subtitles that have the default-flag but not together with forced-flag.
This is useful when you have files where the default and forced flags are set together.
Example: (advanced ruleset for files with multiple audio and subtitle-tracks)
"jpn:ger|d!f jpn:ger|!f jpn:ger ger:ger|f ger:eng|f ger:*|f"
Explanation:
On Japanese audio, try to load German full subs (default but not forced), then unforced, and at last any german subs if there are no unforced subs.
On German audio load only forced subs in the following order: German, English, any.
Example: (text match)
"*:eng@Forced"
Explanation:
On any audio, select english subtitle streams with "Forced" in the stream title.
BluRay Support
=============================
@@ -96,31 +119,30 @@ and start playing.
Alternatively, you can also open a playlist file (*.mpls, located in BDMV/PLAYLIST), and LAV Splitter
will then play that specific title.
In future versions you'll be able to choose the title from within the player, as well.
In future versions, you'll be able to choose the title from within the player, as well.
Compiling
=============================
Compiling is pretty straight forward using VC++2015 U1 (included project files).
Older versions of Visual Studio are not supported.
Compiling is pretty straightforward using VS2019 (included project files).
Older versions of Visual Studio are not officially supported, but may still work.
It does, however, require that you build your own ffmpeg and libbluray.
You need to place the full ffmpeg package in a directory called "ffmpeg" in the
main source directory (the directory this file was in). There are scripts to
You need to place the full ffmpeg package in a directory called "ffmpeg" in the
main source directory (the directory this file was in). There are scripts to
build a proper ffmpeg included.
I recommend using my fork of ffmpeg, as it includes additional patches for
I recommend using my fork of ffmpeg, as it includes additional patches for
media compatibility:
http://git.1f0.de/gitweb?p=ffmpeg.git;a=summary
https://gitea.1f0.de/LAV/FFmpeg
libbluray is compiled with the MSVC project files, however a specially modified
libbluray is compiled with the MSVC project files, however, a specially modified
version of libbluray is required. Similar to ffmpeg, just place the full tree
inside the "libbluray" directory in the main directory.
You can get the modified version here:
http://git.1f0.de/gitweb?p=libbluray.git;a=summary
https://gitea.1f0.de/LAV/libbluray
Feedback
=============================
GitHub Project: https://github.com/Nevcairiel/LAVFilters
Doom9: http://forum.doom9.org/showthread.php?t=156191
You can, additionally, reach me on IRC in the MPC-HC channel on freenode (#mpc-hc)
Doom9: https://forum.doom9.org/showthread.php?t=156191

View File

@@ -0,0 +1,2 @@
cd /d "%~dp0"
regsvr32.exe LAVAudio.ax

View File

@@ -0,0 +1,2 @@
cd /d "%~dp0"
regsvr32.exe LAVSplitter.ax

View File

@@ -0,0 +1,2 @@
cd /d "%~dp0"
regsvr32.exe LAVVideo.ax

View File

@@ -75,10 +75,10 @@
<Content Include="EVRPresenter64.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="LAVFilters-0.72-x64\**">
<Content Include="LAVFilters-x64\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="LAVFilters-0.72-x86\**">
<Content Include="LAVFilters-x86\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="MediaInfo-x64\MediaInfo.dll">
@@ -93,58 +93,6 @@
<Resource Include="Resources\empty.png" />
</ItemGroup>
<ItemGroup>
<None Include="LAVFilters-0.72-x64\COPYING">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x64\LAVAudio.ax">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x64\LAVAudio.ax.bak">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x64\LAVFilters.Dependencies.manifest">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x64\LAVSplitter.ax">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x64\LAVSplitter.ax.bak">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x64\LAVVideo.ax">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x64\LAVVideo.ax.bak">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x86\COPYING">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x86\LAVAudio.ax">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x86\LAVAudio.ax.bak">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x86\LAVFilters.Dependencies.manifest">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x86\LAVSplitter.ax">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x86\LAVSplitter.ax.bak">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x86\LAVVideo.ax">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LAVFilters-0.72-x86\LAVVideo.ax.bak">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\QLV.reg" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\GitVersion.cs">
<Link>Properties\GitVersion.cs</Link>

View File

@@ -1,17 +1,17 @@
// Copyright © 2017 Paddy Xu
//
//
// This file is part of QuickLook program.
//
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
@@ -44,7 +44,7 @@ namespace QuickLook.Plugin.VideoViewer
{
private readonly ContextObject _context;
private BitmapSource _coverArt;
private bool _hasVideo;
private bool _isPlaying;
private bool _wasPlaying;
@@ -60,7 +60,7 @@ namespace QuickLook.Plugin.VideoViewer
_context = context;
mediaElement.MediaUriPlayer.LAVFilterDirectory =
IntPtr.Size == 8 ? "LAVFilters-0.72-x64\\" : "LAVFilters-0.72-x86\\";
IntPtr.Size == 8 ? "LAVFilters-x64\\" : "LAVFilters-x86\\";
//ShowViedoControlContainer(null, null);
viewerPanel.PreviewMouseMove += ShowViedoControlContainer;
@@ -74,7 +74,7 @@ namespace QuickLook.Plugin.VideoViewer
buttonPlayPause.Click += TogglePlayPause;
buttonLoop.Click += ToggleShouldLoop;
buttonTime.Click += (sender, e) => buttonTime.Tag = (string) buttonTime.Tag == "Time" ? "Length" : "Time";
buttonTime.Click += (sender, e) => buttonTime.Tag = (string)buttonTime.Tag == "Time" ? "Length" : "Time";
buttonMute.Click += (sender, e) => volumeSliderLayer.Visibility = Visibility.Visible;
volumeSliderLayer.MouseDown += (sender, e) => volumeSliderLayer.Visibility = Visibility.Collapsed;
@@ -88,7 +88,7 @@ namespace QuickLook.Plugin.VideoViewer
if (_wasPlaying) mediaElement.Play();
};
PreviewMouseWheel += (sender, e) => ChangeVolume((double) e.Delta / 120 * 0.04);
PreviewMouseWheel += (sender, e) => ChangeVolume((double)e.Delta / 120 * 0.04);
}
public bool HasVideo
@@ -178,10 +178,10 @@ namespace QuickLook.Plugin.VideoViewer
private void MediaFailed(object sender, MediaFailedEventArgs e)
{
((MediaUriElement) sender).Dispatcher.BeginInvoke(new Action(() =>
((MediaUriElement)sender).Dispatcher.BeginInvoke(new Action(() =>
{
_context.ViewerContent =
new Label {Content = e.Exception, VerticalAlignment = VerticalAlignment.Center};
new Label { Content = e.Exception, VerticalAlignment = VerticalAlignment.Center };
_context.IsBusy = false;
}));
}
@@ -201,14 +201,14 @@ namespace QuickLook.Plugin.VideoViewer
else
{
IsPlaying = false;
mediaElement.Pause();
}
}
private void ShowViedoControlContainer(object sender, MouseEventArgs e)
{
var show = (Storyboard) videoControlContainer.FindResource("ShowControlStoryboard");
var show = (Storyboard)videoControlContainer.FindResource("ShowControlStoryboard");
if (videoControlContainer.Opacity == 0 || videoControlContainer.Opacity == 1)
show.Begin();
}
@@ -221,7 +221,7 @@ namespace QuickLook.Plugin.VideoViewer
if (videoControlContainer.IsMouseOver)
return;
var hide = (Storyboard) videoControlContainer.FindResource("HideControlStoryboard");
var hide = (Storyboard)videoControlContainer.FindResource("HideControlStoryboard");
hide.Begin();
}
@@ -233,6 +233,7 @@ namespace QuickLook.Plugin.VideoViewer
case PlayerState.Playing:
IsPlaying = true;
break;
case PlayerState.Paused:
case PlayerState.Stopped:
case PlayerState.Closed:
@@ -290,6 +291,7 @@ namespace QuickLook.Plugin.VideoViewer
// A change in amplitude by a factor of 10 corresponds to a 20 dB change
private const double DecibelAmplitudeMult = 20.0;
public double LinearVolume
{
// mediaElement.Volume returns [0,1] where 0 = -100db, 1 = 0db

File diff suppressed because it is too large Load Diff