View Full Version : LAV Filters - DirectShow Media Splitter and Decoders
khanmein
25th April 2019, 13:58
It's hard to give advice because there isn't really much of a difference between "internal" and external LAV. Personally, I have deleted the LAV Filters subfolder within the MPC-HC folder and disabled all transform filters to make sure I only have 1 set of LAV/LAV settings.
Yeah, same too. I always created another folder for the LAV installation. Greatly appreciated.
coolgit
26th April 2019, 09:07
It's hard to give advice because there isn't really much of a difference between "internal" and external LAV. Personally, I have deleted the LAV Filters subfolder within the MPC-HC folder and disabled all transform filters to make sure I only have 1 set of LAV/LAV settings.
The way to do it successfully is to instal your player of choice and then install k-lite codec last and this will make the lav filter your system default. Disable internal and enable external and pointing to k-lite lav directory isn't necessary. This is what I did with Kmplayer and have no issues whatsoever.
bluesky507
29th April 2019, 10:21
hello
I want add output pin for audio and video on lav splitter.
how can do it in c#?
thanks
ryrynz
30th April 2019, 08:44
/me wanders over to Videolan, wonder how dav1d is going with commits.
dav1d 0.3.0 released, wooop!
el Filou
1st May 2019, 22:30
It's dramatic how much more difficult it is to decode 10-bit AV1 in software compared to 8-bit!
On my antique Core 2 Duo with Netflix Chimera test clip in 768x432 at the same 1,1 Mbps:
8-bit: 169 fps
10-bit: 52 fps :eek:
sneaker_ger
1st May 2019, 22:40
Yeah, the dav1d devs haven't really worked on optimizing >= 10 bit yet. It will become much faster in the future.
nevcairiel
1st May 2019, 22:58
Indeed. 10-bit isn't used in the real world yet, while YouTube at least already sends out 8-bit. So it wasn't a development priority. It'll be worked on next now that 8-bit is almost done.
bluesky507
9th May 2019, 09:52
hello
how lav splitter can get stream from DVB-T USB ?
el Filou
9th May 2019, 16:02
You need a player app that can access a BDA tuner for that.
Try MPC-HC. Options => Playback; Capture and then Open Device
bluesky507
9th May 2019, 18:38
thanks for your response
I develop my own program in c#.
so need to know how can connect lav filter to BDA filter.
NikosD
11th May 2019, 17:39
@nevcairiel
Hello.
I was just playing around with NVDEC video decoder of my Turing card and I realized that NVCUVID works very nicely under Win 10.
It works for legacy codecs like MPEG4 ASP (DivX/ Xvid) which is exposed to LAV Video control panel, but even for not exposed ones like the ancient MPEG1.
I was wondering how much trouble is for you to add VP8 to NVCUVID (not DXVA2/D3D11 which could be difficult/ impossible), just NVCUVID.
Not that there is some special need for this, but just because Turing NVDEC can accelerate VP8 in HW.
NVEncC, a transcoding app which uses both NVDEC and NVENC to accelerate transcoding in HW, can decode VP8 in HW using NVDEC.
Thanks!
Update:
I've just seen that WMV3 also doesn't work for NVCUVID.
Weird.
pandy
14th May 2019, 22:18
@nevcairiel
Thx Hendrik for a great piece of software, very appreciated!
Any chance to add HRTF (SOFAlizer) to audio mixer in near future?
TIA, Cheers,
PA
bluesky507
19th May 2019, 10:54
Hello
how i can set input pin in lav splitter ?
filler56789
19th May 2019, 13:46
Hello
how i can set input pin in lav splitter ?
If you don't want to use LAV Splitter Source then you should open the media file with File Source Async and then connect this filter to LAV Splitter.
supercoolman
20th May 2019, 09:27
not sure if it's expected, but re-mixed 5.1 into stereo only has sound on 1 speaker while regular stereo audio has sound on both speakers
clsid
20th May 2019, 15:42
Must be something wrong on your end, because mixing works correctly for everybody else.
supercoolman
22nd May 2019, 09:05
Must be something wrong on your end, because mixing works correctly for everybody else.
comparing with turned off mixing while have the 2 speakers put far away from each other, it seems that most of the sound are concentrated on one speaker when mixing to stereo. maybe this particular bluray's 5.1ch just happens to be like this. checked and confirmed another bluray's 5.1ch doesn't have sounds concentrate on one speaker when mixing to stereo
el Filou
22nd May 2019, 16:11
Try with a test file like this: https://www.demo-world.eu/download-2d-trailers/?file=dts_hd_master_audio_sound_check_7_1_lossless-DWEU.mkv&pic=dts_hd_master_audio_sound_check_7_1_lossless.jpg
bluesky507
23rd May 2019, 07:30
hi
thanks for answer
i dont used file as input ,i used usb dvb
but lav splitter dont have input pin!
so cant connect BDA filter to input pin of LAV splitter.
how i can create input pin for LAV Splitter?
Thanks
bluesky507
23rd May 2019, 08:09
If you don't want to use LAV Splitter Source then you should open the media file with File Source Async and then connect this filter to LAV Splitter.
hi
thanks for answer
i dont used file as input ,i used usb dvb
but lav splitter dont have input pin!
so cant connect BDA filter to input pin of LAV splitter.
how i can create input pin for LAV Splitter?
Thanks
filler56789
24th May 2019, 16:58
i dont used file as input ,i used usb dvb
but lav splitter dont have input pin!
so cant connect BDA filter to input pin of LAV splitter.
how i can create input pin for LAV Splitter?
You really should have said that before.
Hopefully someone with more knowledge than I will chime in soon.
baker99uk
30th May 2019, 21:02
I reported an issue over in the madVR thread and said I'd give feedback over here.
I completely uninstalled all versions of MPC-HC, LAV filters and madVR then reinstalling from scratch. Then ensured all the internal filters were switched off for x265, x264 and m2ts after installing LAV 0.74.1-18.
The result is everything seems to be working perfectly now! I guess it was a mixture of user error and various versions of MPC-HC etc. conflicting.
nevcairiel
30th May 2019, 21:24
Good to know, thanks for calling back. :)
stax76
11th June 2019, 05:08
@nev
Maybe you like this idea too:
https://forum.doom9.org/showthread.php?p=1876802#post1876802
nevcairiel
11th June 2019, 07:34
No, I do not. The installer is intentionally an one-size-fits-all package for everyone.
GCRaistlin
16th June 2019, 10:10
I have a video file that probably has an issue with key frames. The symptoms are:
It can be played with LAV (MPC-HC/MPC-BE) but any attempt to go to a timestamp or switching tracks after the playback was started causes freezing the playback.
Splitting it with mkvmerge fails (the whole file is being written). mkvmerge makes decisions about splitting at key frame positions.
Splitting it with tsmuxer is possible but the duration of the output file is invalid (https://mir.cr/1KNYS00V).
Though VLC, as well as MPC-BE with its internal filters, can play this file (and the example file above) without any issue: jumping to a timestamp works, the duration is valid.
Can LAV be made "compatible" with such files?
manolito
16th June 2019, 12:37
I can confirm your issues, LAV Filters for me always had such problems when dealing with HD transport streams. It looks like DirectShow is simply not good at seeking within transport streams... :mad:
Just to make sure that your clip was not corrupted I ran it through TSDoctor, and it came out fine without any complaints. My usual workaround for HD transport streams is to repack them into an MKV container. I either use MKVMerge or ffmpeg (using the dmMediaConverter GUI) for this, and the resulting MKVs play with just about any player and have no problems with seeking.
Cheers
manolito
nevcairiel
16th June 2019, 13:22
This particular stream seems to lack proper recovery information, or has them in a way that FFmpeg doesn't support. No IDR frames, and no Recovery Point SEI. As such, the decoder doesn't know when the image is "clean" and not just artifacts.
I would recommend to report this to ffmpeg, since thats what its based on.
This has really nothing to do with being MPEG-TS - although in general its always nice to keep in mind that MPEG-TS is not designed for file-based playback or seeking - its a broadcast format. Thats why Blu-rays keep a seperate index for seeking, which you of course lose if you just take one .m2ts file from the disc.
manolito
16th June 2019, 14:06
When I said that I have the same problems with HD transport streams I am talking about the German DVB-T2 broadcasts. They are transmitted with HEVC video and E-AC3 or AAC-LATM audio, and they are not really seekable with DirectShow based source filters.
I did not analyze the transmitted streams if they have IDR frames or Recovery Point SEIs. All I know is that they play well in VLC, but in MPC-HC and Tiny Player they are not seekable. And this time it is not my underperforming hardware, this is on a Core i5 third generation with 8GB RAM under Win7-64.
sneaker_ger
16th June 2019, 15:03
I have the same problems with HD transport streams I am talking about the German DVB-T2 broadcasts. They are transmitted with HEVC
Really the same problems? IIRC LAV does seek in HEVC/ts but doesn't wait for keyframes so the image looks corrupted unless you wait for a keyframe. So I guess is handles AVC/TS and HEVC/TS differently because otherwise the sample posted by GCRaistlin should be seekable (albeit with corruption until next I frame).
Mkvmerge has the option --engage all_i_slices_are_key_frames for such files. But interestingly enabling that option breaks seeking for the resulting mkv, then. :confused:
GCRaistlin
17th June 2019, 11:58
manolito
Muxing to MKV (with mkvmerge) didn't help.
I don't understand about FFmpeg - how does my issue concern to it?
v0lt
17th June 2019, 12:35
@nevcairiel
Does the D3D11 decoder work in Windows 8?
nevcairiel
17th June 2019, 12:45
@nevcairiel
Does the D3D11 decoder work in Windows 8?
It should if the drivers implement all the required things.
bigboyman
17th June 2019, 19:51
Hello everyone. While it might sound a bit stupid, I have a question about LAV.
Recenlty I've been wondering how to check if LAV Video Decoder is working properly. I ask because when I open the OSD (https://imgur.com/a/rQCBzmg) (EVR (CP)), while it says it's using LAV, it also says it's not using DXVA (which I am using on LAV). GPU activity also doesn't report usage for decoding. So what gives?
Asmodian
17th June 2019, 20:06
If you are playing a file your GPU cannot decode in hardware LAV will fallback to software decoding.
10 bit H.264 is probably the most common video format that GPUs cannot decode. If you open LAV Video config while it is playing it will show you what it is using but it is probably working properly.
bigboyman
17th June 2019, 20:25
If you are playing a file your GPU cannot decode in hardware LAV will fallback to software decoding.
10 bit H.264 is probably the most common video format that GPUs cannot decode. If you open LAV Video config while it is playing it will show you what it is using but it is probably working properly.
Here's the pin info (what I assume you meant by config). It is H.264, but other than that I really can't tell if it's working properly. Not to mention I have H.264 enabled in HW codecs.
Filter : LAV Video Decoder - CLSID : {EE30215D-164F-4A92-A4EB-9D4C13390F9F}
- Connected to:
CLSID: {B98D13E7-55DB-4385-A33D-09FD1BA26338}
Filter: LAV Splitter Source (internal)
Pin: Video
- Connection media type:
Video: MPEG4 Video (H264) 1456x1080 23.976fps
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Video {73646976-0000-0010-8000-00AA00389B71}
subtype: Unknown GUID Name {31435641-0000-0010-8000-00AA00389B71}
formattype: FORMAT_MPEG2_VIDEO {E06D80E3-DB46-11CF-B4D1-00805F6CBBEA}
bFixedSizeSamples: 0
bTemporalCompression: 1
lSampleSize: 1
cbFormat: 173
VIDEOINFOHEADER:
rcSource: (0,0)-(1456,1080)
rcTarget: (0,0)-(1456,1080)
dwBitRate: 0
dwBitErrorRate: 0
AvgTimePerFrame: 417083
VIDEOINFOHEADER2:
dwInterlaceFlags: 0x00000000
dwCopyProtectFlags: 0x00000000
dwPictAspectRatioX: 182
dwPictAspectRatioY: 135
dwControlFlags: 0x00000000
dwReserved2: 0x00000000
MPEG2VIDEOINFO:
dwStartTimeCode: 0
cbSequenceHeader: 41
dwProfile: 0x0000006e
dwLevel: 0x00000032
dwFlags: 0x00000004
BITMAPINFOHEADER:
biSize: 40
biWidth: 1456
biHeight: 1080
biPlanes: 1
biBitCount: 15
biCompression: AVC1
biSizeImage: 2950560
biXPelsPerMeter: 0
biYPelsPerMeter: 0
biClrUsed: 0
biClrImportant: 0
pbFormat:
0000: 00 00 00 00 00 00 00 00 b0 05 00 00 38 04 00 00 ........°...8...
0010: 00 00 00 00 00 00 00 00 b0 05 00 00 38 04 00 00 ........°...8...
0020: 00 00 00 00 00 00 00 00 3b 5d 06 00 00 00 00 00 ........;]......
0030: 00 00 00 00 00 00 00 00 b6 00 00 00 87 00 00 00 ........¶...‡...
0040: 00 00 00 00 00 00 00 00 28 00 00 00 b0 05 00 00 ........(...°...
0050: 38 04 00 00 01 00 0f 00 41 56 43 31 a0 05 2d 00 8.......AVC1 .-.
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0070: 00 00 00 00 29 00 00 00 6e 00 00 00 32 00 00 00 ....)...n...2...
0080: 04 00 00 00|00 1e 67 6e 00 32 a6 c7 28 44 05 b0 ......gn.2¦Ç(D.°
0090: 22 7e 59 a8 10 10 0a 00 00 07 d2 00 01 77 01 1e "~Y¨......Ò..w..
00a0: 30 63 08 c0 00 07 68 e8 43 82 72 c8 b0 0c.À..hèC‚rȰ
sneaker_ger
17th June 2019, 20:42
Video: MPEG4 Video (H264)
dwProfile: 0x0000006e
biBitCount: 15
biCompression: AVC1
Seems to be 10 bit H.264 like Asmodian suspected. (6e = High 10 Profile, 4:2:0 10 bits per sample equal 15 bits per pixel on average)
In general you can see if/what decoder is used by LAV by opening the activate LAV Video instance's settings during playback. In the first tab it shows "Active Decoder:" and "Active Hardware Accelerator:".
huhn
17th June 2019, 20:43
biBitCount: 15
should be a 10 bit file so lavfilter has to fallback to software decoding "avcodec".
bigboyman
17th June 2019, 22:54
should be a 10 bit file so lavfilter has to fallback to software decoding "avcodec".
It is (with hardware acc. at "<none>"). Now the question is what can I do so it uses hardware instead.
Is it even feasible or good for performance?
sneaker_ger
17th June 2019, 23:05
No PC GPU supports H.264 10 bit decoding. Nothing you can no.
But also not necessary. 10 bit H.264 1456x1080 23.976fps is a piece of cake for any half-decent CPU.
el Filou
17th June 2019, 23:09
You can't, it's not supported by the fixed function decode block of the GPU.
Maybe you can try to find some other filter that would be able to use shaders to decode it but IMO it's not worth it, just use LAV with the CPU.
lvqcl
17th June 2019, 23:49
By the way: according to https://en.wikipedia.org/wiki/Nvidia_PureVideo, your videocard has only VDPAU Feature Set E. Which means that it cannot decode VP9, and doesn't have hardware HEVC decoder. It uses hybrid CPU/GPU decoding for 8-bit HEVC, and cannot decode 10-bit HEVC.
Hardware video decoder in your CPU (i7-6700HQ, Skylake) is probably more powerful.
bigboyman
17th June 2019, 23:53
You can't, it's not supported by the fixed function decode block of the GPU.
Maybe you can try to find some other filter that would be able to use shaders to decode it but IMO it's not worth it, just use LAV with the CPU.
Tried some different files and the gain is not huge. CPU and GPU loads are relatively small, so no big deal.
However, what IS pretty interesting is that some H.264 files actually support hardware acc. while other H.264 as well as non-H.264 files don't. Anyone want to crack that mystery?
Here's some snaps (https://imgur.com/a/3L2uRK1) and the log:
Filter : LAV Video Decoder - CLSID : {EE30215D-164F-4A92-A4EB-9D4C13390F9F}
- Connected to:
CLSID: {B98D13E7-55DB-4385-A33D-09FD1BA26338}
Filter: LAV Splitter Source (internal)
Pin: Video
- Connection media type:
Video: MPEG4 Video (H264) 1920x1080 23.976fps
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Video {73646976-0000-0010-8000-00AA00389B71}
subtype: Unknown GUID Name {31435641-0000-0010-8000-00AA00389B71}
formattype: FORMAT_MPEG2_VIDEO {E06D80E3-DB46-11CF-B4D1-00805F6CBBEA}
bFixedSizeSamples: 0
bTemporalCompression: 1
lSampleSize: 1
cbFormat: 167
VIDEOINFOHEADER:
rcSource: (0,0)-(1920,1080)
rcTarget: (0,0)-(1920,1080)
dwBitRate: 0
dwBitErrorRate: 0
AvgTimePerFrame: 417084
VIDEOINFOHEADER2:
dwInterlaceFlags: 0x00000000
dwCopyProtectFlags: 0x00000000
dwPictAspectRatioX: 16
dwPictAspectRatioY: 9
dwControlFlags: 0x00000000
dwReserved2: 0x00000000
MPEG2VIDEOINFO:
dwStartTimeCode: 0
cbSequenceHeader: 35
dwProfile: 0x00000064
dwLevel: 0x00000028
dwFlags: 0x00000004
BITMAPINFOHEADER:
biSize: 40
biWidth: 1920
biHeight: 1080
biPlanes: 1
biBitCount: 12
biCompression: AVC1
biSizeImage: 3110400
biXPelsPerMeter: 0
biYPelsPerMeter: 0
biClrUsed: 0
biClrImportant: 0
pbFormat:
0000: 00 00 00 00 00 00 00 00 80 07 00 00 38 04 00 00 ........€...8...
0010: 00 00 00 00 00 00 00 00 80 07 00 00 38 04 00 00 ........€...8...
0020: 00 00 00 00 00 00 00 00 3c 5d 06 00 00 00 00 00 ........<]......
0030: 00 00 00 00 00 00 00 00 10 00 00 00 09 00 00 00 ................
0040: 00 00 00 00 00 00 00 00 28 00 00 00 80 07 00 00 ........(...€...
0050: 38 04 00 00 01 00 0c 00 41 56 43 31 00 76 2f 00 8.......AVC1.v/.
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0070: 00 00 00 00 23 00 00 00 64 00 00 00 28 00 00 00 ....#...d...(...
0080: 04 00 00 00|00 1a 67 64 00 28 ac d9 40 78 02 27 ......gd.(¬Ù@x.'
0090: e5 c0 44 00 00 03 01 f4 00 00 5d aa 3c 60 c6 58 åÀD....ô..]ª<`ÆX
00a0: 00 05 68 e9 3b 2c 8b ..hé;,‹
bigboyman
17th June 2019, 23:54
By the way: according to https://en.wikipedia.org/wiki/Nvidia_PureVideo, your videocard has only VDPAU Feature Set E. Which means that it cannot decode VP9, and doesn't have hardware HEVC decoder. It uses hybrid CPU/GPU decoding for 8-bit HEVC, and cannot decode 10-bit HEVC.
Hardware video decoder in your CPU (i7-6700HQ, Skylake) is probably more powerful.
You mean integrated graphics? Because it's the only way I can select the GPU in LAV, and it's pretty weak.
sneaker_ger
18th June 2019, 00:02
However, what IS pretty interesting is that some H.264 files actually support hardware acc. while other H.264 as well as non-H.264 files don't. Anyone want to crack that mystery?
dwProfile: 0x00000064
biBitCount: 12
64 = High Profile (8 bit)
8 bits per sample 4:2:0 = 12 bits per pixel
Well supported by hardware for many years.
No mystery.
LigH
18th June 2019, 07:27
Some hardware decoder chipsets are picky about the video resolutions. Videos in common standard resolutions have best chances; arbitrarily cropped videos may fail.
And even more, hardware decoder chips have complexity limits. They may not support the whole range of Profile@Level combinations and long GOPs, and a few more constraints do exist.
Asmodian
18th June 2019, 22:53
long GOPs
Long GOPs too? I have been using the max length GOPs for all my "hardware compatible" (level 4.1) encodes. :(
Siso
18th June 2019, 23:40
A question about mixing to stereo, is it better to let lav audio decoder do the mixing or mpc-be's sound processing?
LigH
19th June 2019, 08:40
@Asmodian:
"May". I won't guarantee that all decoder chips made by all GPU vendors do. I have only limited experience with some Nvidia chipsets, they don't mind.
nevcairiel
19th June 2019, 08:50
GOP size should be pretty irrelevant for any DXVA decoders, since it doesn't even get told about such things. The only thing hat matters is number of reference frames, dimension, and sticking to a supported profile.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.