Log in

View Full Version : LAV Filters - DirectShow Media Splitter and Decoders


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508

VipZ
18th April 2011, 21:27
Thanks Mercury for supplying me with test builds :)

Regarding the lip sync issue, I think it may be fine with the build Nevcairiel-LAVFSplitter-0.22-29-g5ce415f, though its the kind of thing if you look to hard you can possibly think you seeing an issue.

I will update to latest and continue testing.

nlnl
19th April 2011, 07:17
Plays fine.

Will you please try MPC splitter.
I have this issue (mono lpcm in m2ts) using MPC splitter fo ages! Haali works good.

And I do have the same issue using LAV :(.

nevcairiel
19th April 2011, 07:19
Maybe your decoder is broken. The file plays just perfectly for me. I didn't try the MPC Splitter - whats the point, its working for me.
Try using LAV Audio as well, thats what i use for LPCM decoding.

nlnl
19th April 2011, 07:38
Maybe your decoder is broken. The file plays just perfectly for me. I didn't try the MPC Splitter - whats the point, its working for me.
Try using LAV Audio as well, thats what i use for LPCM decoding.

nevcairiel
Thank you:thanks: !

You are right! MPC+LAV audio+LAV splitter work brilliant!

The problem (mono LPCM) is MPC LPCM decoder !?

Have you plans to add bitstreaming (DTS HD MA, Dolby True HD) to LAV audio?

webs0r
19th April 2011, 12:48
OK I just installed this and tested it with an .mkv that Haali used to report strange fps' on... and..... it works! :)

My problem - LAV splitter does not load for .AVI files.

Haali has been uninstalled. I've boosted LAV's priority to highest....

MPC-HC reports that some AVI splitter (low merit) gets loaded instead.

Has anyone else encountered this? (Windows 7) Any tips?

nevcairiel
19th April 2011, 12:52
AVI is currently broken in 0.22, it'll be fixed in 0.23.

But AVI isn't all that special, using the default splitter in the time being should be fine. :)

hoborg
19th April 2011, 12:55
But AVI isn't all that special, using the default splitter in the time being should be fine. :)

I have problem with default OS AVI splitter and AVIs with multiple audio tracks - graphstudio/player crash when video stop.
Of cousre it is working just fine with LAVF :)

nevcairiel
19th April 2011, 12:58
I was more referring to the MPC-HC splitter, but sure. 0.23 will be out soon enough.

webs0r
19th April 2011, 13:01
AVI is currently broken in 0.22, it'll be fixed in 0.23.

But AVI isn't all that special, using the default splitter in the time being should be fine. :)

Ahh thanks for the info, I was starting to turn things upside down to figure out what was going on.

I would prefer LAV to load rather than the default :) Both in MPC-HC and in Mediaportal.

nevcairiel
19th April 2011, 13:05
I have one thing to finish to implement, and then some testing and cleaning, then 0.23 should be out. Hopefully i can finish it before the easter weekend.

Hypernova
20th April 2011, 06:37
First, I want to say I'm sorry if I report a known problem again. I don't really watching the thread closely.

I set my mouse wheel to Jump Forward/Backward (medium) in MPC-HC. LAV Spliter almost always get "stuck" when I do forward 2-3 times consecutively. It does not jump forward but jump back to the same point. On somehow related note, there are problems like video and audio getting out of sync after seeked as well. I tested with madVR and EVR Sync. I didn't have this problem last time I tried LAVSpliter. I'm not sure, but I think that was 0.19.

I remember read it somewhere that I supposed to use a special build of ffdshow but cannot find it anymore. Is that still true? Maybe that's the cause?

disto
20th April 2011, 12:33
Hello.Please separate LAVF Splitter from LAVAudio.If posiible could you provide two packages one for LAVF Splitter and one for LAVFAudio.Thank you in advance.

nevcairiel
20th April 2011, 13:02
Hello.Please separate LAVF Splitter from LAVAudio.If posiible could you provide two packages one for LAVF Splitter and one for LAVFAudio.Thank you in advance.

Why?
The splitter and the decoder themself are tiny, the libraries are big, and both use them. So if i create two packages, i would have to double the libraries, thats double the size - i don't see how that is better in any known universe.

SamuriHL
20th April 2011, 13:21
No, I'm not in favor of separating them, either.

Sebastiii
20th April 2011, 20:25
me too :)

RobertinoM
20th April 2011, 22:12
When I am using Graphstudio and I am rendering a file..

I don't see LAV Splitter? Just for Audio I can see it. But not for Video... Is this correct?

And please keep it in one package, that keeps it simple... (to be honest, I have no idea if it is enough to extract it into one dir e.g. c:\LAV\ and then register the splitter)

Regards Robertino

sneaker_ger
21st April 2011, 01:45
I set my mouse wheel to Jump Forward/Backward (medium) in MPC-HC. LAV Spliter almost always get "stuck" when I do forward 2-3 times consecutively. It does not jump forward but jump back to the same point. On somehow related note, there are problems like video and audio getting out of sync after seeked as well. I tested with madVR and EVR Sync. I didn't have this problem last time I tried LAVSpliter. I'm not sure, but I think that was 0.19.

I remember read it somewhere that I supposed to use a special build of ffdshow but cannot find it anymore. Is that still true? Maybe that's the cause?

Sorry, I don't have an answer to your question, but I tested it myself and found it funny that when "jumping" in MPC-HC LAV Splitter would seek to arbitrary frames instead of nearest preceding keyframe, which I asked about recently:

I don't know the technical details, although I understand that the decoder needs the previous frames in case I'm not seeking to an I-Frame. But this works just fine using Haali and Gabest. If I seek to the end of a 10 second GOP with Haali, seeking might take a fraction of a second on my quad core. With your splitter I have to watch the entire GOP from start. This also means that you can't seek to chapter starts exactly if they don't start on an I-Frame (for whatever reason).

This can now (I swear I tested it some time ago and it didn't work for some reason, probably stupidity) be done by deactivating MPC-HC's "fast seek(on keyframe)" "tweak".
So I hereby withdraw my feature request, as it can already be done. And it's even better then Haali, because it can be turned on and off.

robpdotcom
21st April 2011, 03:32
This isn't really a feature request, just curiosity:

Will LAVSplitter eventually be able to display the forced subs only from PGS subtitle streams? Is that even something a splitter could do, or would that be something for the subtitle renderer?

Hypernova
21st April 2011, 06:58
Sorry, I don't have an answer to your question, but I tested it myself and found it funny that when "jumping" in MPC-HC LAV Splitter would seek to arbitrary frames instead of nearest preceding keyframe, which I asked about recently:



This can now (I swear I tested it some time ago and it didn't work for some reason, probably stupidity) be done by deactivating MPC-HC's "fast seek(on keyframe)" "tweak".
So I hereby withdraw my feature request, as it can already be done. And it's even better then Haali, because it can be turned on and off.

I think I understand about 70% of what you said, which make me know even less about the details, but disable fast seek like you said works great! :thanks:

Edit: A/V out of sync after seeked still happen though.
Edit2: Forcing LAV Audio Decoder solved the problem. :)

nevcairiel
21st April 2011, 07:01
This can now (I swear I tested it some time ago and it didn't work for some reason, probably stupidity) be done by deactivating MPC-HC's "fast seek(on keyframe)" "tweak".
So I hereby withdraw my feature request, as it can already be done. And it's even better then Haali, because it can be turned on and off.

All i do is offer the information about those cue points to the player, if it uses them to do faster (yet inaccurate) seeks, its out of my hands.

MPC-HC enabled that option by default some time ago, which already caused some issues, but hey.


Will LAVSplitter eventually be able to display the forced subs only from PGS subtitle streams? Is that even something a splitter could do, or would that be something for the subtitle renderer?
Thats something a sub renderer should be doing. I don't interpret any streams, i just send them to the decoders to do their magic with.

Personally, i have only seen BluRays where the forced subs are in their separate track, though. (Sadly, you cannot detect if they are forced subs just from the track. <.<)

Hypernova
21st April 2011, 07:26
Short question: the splitter still doesn't support ordered chapter right? I did a search and only find info about a patch.

nevcairiel
21st April 2011, 07:27
No it does not.

Hypernova
21st April 2011, 07:35
No it does not.

Thanks. Now I'll go sit and wait in the corner. :)

nevcairiel
21st April 2011, 10:13
I do plan to work on this sometime soon, as its a feature i would like to be able to use (also a challenge to get it working). At the latest, i want it ready when the new LOTR BluRay sets come out - the movies are split on two discs each, and my goal is to combine them in one flawless MKV, with theatrical and extended in one file. :) Normally i would just keep them on the disc, but with being split on two discs .. rather combine them! :)

This means i want to support editions/ordered chapters, what will not be supported right away is external segment linking - that is chapters in external files. I do not know when/how/if that will ever be worked on, it adds a whole extra layer of complexity - and i think its silly to begin with.

Since this is a rather big undertaking - i basically have to rewrite the MKV demuxer completly, or even a new one - i cannot guarantee anything.
Personally, i'm even doubtful that i can make it work in that given timespan.. but we'll see!

Maybe i can also join those two discs in one BluRay structure ..mmm..wonder if that works with some of the free BD authoring tools .. mmm.

SamuriHL
21st April 2011, 13:15
Sure. That's a piece of cake. :) I was already planning on doing 2 MKV's myself for the LOTR extended editions. But reauthoring...not an issue. :)

nevcairiel
21st April 2011, 13:42
Two MKVs would be the fallback solution, one for each edition. Not that i really care about the space used, but implementing that MKV features is one of the ultimate goals too (and i like a challenge)

SamuriHL
21st April 2011, 14:00
That'd definitely be nice. I've never made an mkv like that before.

robpdotcom
21st April 2011, 15:56
what will not be supported right away is external segment linking - that is chapters in external files.

What about the other type of segment linking, where the linking is done via header info? Is that any easier?

nevcairiel
21st April 2011, 16:51
For those building their own versions, i just commited a new properties page that lets you control the formats that LAV Splitter will demux (its alot, i already filtered and grouped some, but still alot formats in ffmpeg). It would be great if you could give it a quick whirl and see if it works.

I grouped raw audio formats (aac, ac3, dts, etc) and raw video format (.h264, .vc1, etc) into one configuration each, which did seem like a good idea at the time to keep the list shorter. Would anyone want to configure those formats separately? Is there any use-case in that? (note that raw video formats currently do not work very well anyway due to missing timestamps)

You will need to re-register the splitter to get the page to show up.
Now only left tuning the installer a bit to work with the new configuration, then i'll name it .23 and work on new things.

PS: The list is sorted by simple comparison of the name, i hope to do some sorting by importance later (have all the "cool" formats on top)

Sebastiii
21st April 2011, 18:16
Thanks :)

SamuriHL
21st April 2011, 18:35
Looks good, Nev.

neoufo51
21st April 2011, 19:33
Can't wait to get back AVI support.

nevcairiel
21st April 2011, 20:06
LAV Filters 0.23

General
- There is now an installer available in addition to the trusted old .zip files!

LAV Splitter
- Added support for using the "File Source (Async)" (and others) together with LAV Splitter
- This is the new default mode for improved compatibility!
- Check release notes for additional informations.
- Added configuration which input formats will be demuxed
- Improved VC-1 in MKV playback

LAV Audio
- Fixed playback of lossless formats with huge sample sizes
- Improved A/V sync with TrueHD (and possibly others)
- FLAC decoding is now disabled by default, because the decoder is not 100% working


Download: Installer (both x86/x64) (http://files.1f0.de/lavf/LAVFilters-0.23.exe) -- Zips: 32-bit (http://files.1f0.de/lavf/LAVFilters-0.23.zip) & 64-bit (http://files.1f0.de/lavf/LAVFilters-0.23-x64.zip)

I liked doing the statistic the last time around, so here goes again!

37 files changed, 1383 insertions(+), 259 deletions(-)

First, thanks to clsid for his contributions on the installer script!

Now, the first important point. LAV Splitter and the "File Source (Async)".
You might want to start reading this post: http://forum.doom9.org/showpost.php?p=1491938&postcount=1583

I'll outline the most important facts here again, anyhow:
- Using the File Source (Async) is "better". It lets a dedicated filter do the File I/O, which is probably far more efficient. Also, its the way a splitter was designed to function (in Media Foundation, there is no other way then this).
- It'll allow you to use LAV Splitter with all files it supports, without manual media type hacking or whatnot. MPC-HC, for example, always creates a "File Source (Async)" filter, if it cannot find a dedicated file source, for all files.
- It allows more fine-grained control of which formats to use.

To adapt to these changes:
- If your player supports assigning source filters to file types, then you can still simply assign "LAV Splitter Source" to the file type, no changes for you (MPC-HC doesn't do this)
- In MPC-HC, you can add the "File Source (Async)" in the external filter list as preferred, as well as "LAV Splitter", which will ensure that they'll always be used.
- Disable all other source filters (Haali, MPC-HC internal filters), then the "File Source (Async)" will automatically take over, and LAV Splitter gets used.
- You can manually assign extensions to the "LAV Splitter Source", as a last resort.

In general, it really shouldn't be a problem, unless you have many different source filters installed, which are fighting out who gets used.

If you have problems with this, or questions, just ask.
Anyway, this will fix the AVI problem that hit 0.21 and 0.22, also fix the MPEG-TS MediaType problem Blight reported.

On the installer - its still very simple, and i'm open to any suggestions.

On the input format configuration in LAV Splitter - the list is simply sorted alphabetically, i do plan to put the important formats on top at some point. But cosmetcs .. meh, not important! :)

If you encounter any issues, as always, please report them!

PS:
As always, i recommend unregistering the old version, and re-registering the new version after installation!

jeremy33
21st April 2011, 21:07
Thank you nevcairiel !

Just a little question, in mpchc we have to add the "File Source (Async)" in the external filter list before or after "LAV Splitter" ?

nevcairiel
21st April 2011, 21:11
The order doesn't matter. You can also just try first, and see if LAV Splitter maybe "just loads".

BTW, i fixed a bug in MPC-HC that fixed the external filter list behaviour when adding the file source, you might need at least 3032 for that. But again, if you only install LAV Splitter, and disable the internal filters, it'll just work. All these things are only needed if you have multiple source filters installed. :)

janos666
22nd April 2011, 00:18
Sorry for the stupid question but the search function didn't help to find the answer:
Does this decoder really decodes the full DTS-HD MA track or does it only decodes the simple DTS "core" (like FFDShow does)?

Snowknight26
22nd April 2011, 01:09
Line 148 of demuxer/LAVSplitter/SettingsProp.cpp could be changed to
addHint(IDC_SUBSTREAMS, L"Controls if sub-streams should be exposed as a separate stream.\nSub-streams are typically streams for backwards compatibility, for example the AC3 part of TrueHD streams on Blu-rays.");
for consistency.

mindbomb
22nd April 2011, 01:55
Does this decoder really decodes the full DTS-HD MA track or does it only decodes the simple DTS "core" (like FFDShow does)?

the decoder doesnt afaik, but the splitter does work well with decoders that do.

anyway, i can't get it to work by just adding the file source async and lav splitter to preferred in external filters. I'm finding that I have to make sure the internal source filters are disabled.

Also, is file source (async) supposed to be in the filters list? I just see lav splitter.

CruNcher
22nd April 2011, 03:09
Hmm nev i didn't tested that yet though it's on my todo but in File Source Sync mode wouldn't it be impossible to work with locked files which are still data is written to, as it might be possible todo with lav splitter as source filter (depending if its aware of it) ?
also another test broke with the newer versions now nev that was (indirectly) related to the Video Stream Parsing sync issue :(

http://www.mediafire.com/?iye63xy9l5lmbq9 (black screen with new version, like as Video Stream Parsing is disabled in 0.22)

nevcairiel
22nd April 2011, 05:52
Also, is file source (async) supposed to be in the filters list? I just see lav splitter.
In MPC-HC, you won't see it by name. But if you have one entry saying "LAV Splitter", and one entry which is just the name of the file, then that one is the "File Source (Async)". Before 0.23, that entry with just the file name would've been LAV Splitter, now you see it as a separate filter.



Does this decoder really decodes the full DTS-HD MA track or does it only decodes the simple DTS "core" (like FFDShow does)?
Since its based on ffmpeg (like ffdshow), it cannot decode more then the DTS core.


http://www.mediafire.com/?iye63xy9l5lmbq9 (black screen with new version, like as Video Stream Parsing is disabled in 0.22)

The file seems to be broken. ffplay doesn't play it properly either, and it outputs some interesting warnings on the console.

I updated ffmpeg since 0.22, which might as well have broken this. :p

webs0r
22nd April 2011, 06:26
Installed 0.23.

Thankyou!!

Sebastiii
22nd April 2011, 10:32
Installer is great :)
Thanks.

edison
22nd April 2011, 11:46
is that possible add seamless playback support ? :)

VipZ
22nd April 2011, 11:55
0.23 works very well and have now disabled my forced registry entries since no longer needed, so long to many hours of making a custom installer for filters to choose the best filter :)

Regards to sync issues in MKV, I think its a non issue now.

How does the settings in the property page affect registration, If I had to make custom options in my installer, would it make a difference if the options were in registry before or after ax registration?

Sebastiii
22nd April 2011, 11:58
is that possible add seamless playback support ? :)

If it's was for BD, it's already working :)

v0lt
22nd April 2011, 18:35
@nevcairiel

fix for support for little-endian int ('in24', 'in32') and float ('fl32', 'fl64') in .MOV's
CMediaType CLAVFAudioHelper::initAudioType(CodecID codecId, unsigned int &codecTag)
{
...
case CODEC_ID_PCM_DVD:
mediaType.subtype = MEDIASUBTYPE_DVD_LPCM_AUDIO;
break;
// support for little-endian int: 'in24', 'in32' (used reverse GUIDs)
case CODEC_ID_PCM_S24LE:
if (codecTag == MKTAG('i', 'n', '2', '4')) mediaType.subtype = MEDIASUBTYPE_PCM_IN24_le;
break;
case CODEC_ID_PCM_S32LE:
if (codecTag == MKTAG('i', 'n', '3', '2')) mediaType.subtype = MEDIASUBTYPE_PCM_IN32_le;
break;
// support for little-endian float: 'fl32', 'fl64' (used reverse GUIDs)
case CODEC_ID_PCM_F32LE:
if (codecTag == MKTAG('f', 'l', '3', '2')) mediaType.subtype = MEDIASUBTYPE_PCM_FL32_le;
break;
case CODEC_ID_PCM_F64LE:
if (codecTag == MKTAG('f', 'l', '6', '4')) mediaType.subtype = MEDIASUBTYPE_PCM_FL64_le;
break;
}
return mediaType;
}
http://samples.mplayerhq.hu/mov/qtaudio/

nevcairiel
22nd April 2011, 20:22
How does the settings in the property page affect registration, If I had to make custom options in my installer, would it make a difference if the options were in registry before or after ax registration?

Registration is not affected at all by the registry settings.

@nevcairiel

fix for support for little-endian int ('in24', 'in32') and float ('fl32', 'fl64') in .MOV's


Little Endian formats don't need decoding - they are just plain PCM, the same the decoder would output. Well except 64-bit float, i don't think any audio renderer supports those.

It would be much better to actually generate a proper PCM media type for those, so that no decoder is needed.

BTW, just use LAV Audio, and you'll never need to setup silly media types again - ever!

Ger
22nd April 2011, 22:58
What cosmetic issue?
Says "mpeg2video main, yuv420p, 544x576, 15000 kb/s" for me.


Weird. Looks different for me:
http://i.imgur.com/diHgm.png
Don't worry about the window AR, I stretched it out to fit the filters menu in the window screenshot.

All(?) my MPEG-2 seem to have various weird characters now. Not sure when it started, but I used to see "mpeg2video" before too. Maybe it's some other weirdness going on with my system or a locale/cp/unicode issue, but h264 looks normal for some reason.

The screenshot is with BE mod, but I tried the regular MPC-HC trunk as well with the same results. Seems purely cosmetic though. Playback is fine. So no biggie.

EDIT: Actually, in case it helps, the third "weird" character, the "q" in that screenshot, changes. I can reopen the same file and it's something different. Character 1, 2 and 4 seems constant. Tested with MPEG-2 in .vob and .ts and a couple of different decoders.

EDIT2: Rebooted and now the fourth character is different as well. Only the first two seem to be constant. :confused:

pankov
22nd April 2011, 23:53
I confirm the "weird" character issue.
I'm using ZoomPlayer and with v0.23 I get the same strange characters in the video stream name for MPEG2 in .ts container. For other formats or when using v0.22 everything is fine - I get "mpeg2video main".

v0lt
23rd April 2011, 05:34
Little Endian formats don't need decoding - they are just plain PCM, the same the decoder would output.
But the LAV Splitter makes a header that is not handled correctly.

Well except 64-bit float, i don't think any audio renderer supports those.
The MpaDecFilter produces the sound on 64-bit float stream.:cool:

BTW, just use LAV Audio, and you'll never need to setup silly media types again - ever!
Check out these examples (http://www.mediafire.com/?d5l9yas32fplup2). Half of the sample noise in LAV Audio and MpaDecFilter. After my patch, most samples (except 64-bit float) are played without any problems in LAV Audio, and MpaDecFilter plays back all tracks. :p