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

nevcairiel
1st March 2011, 18:10
It doesn't really buffer anything. When it gets an input packet, it throws it into the input buffer, and then trys to decode the buffer. All PCM data is send downstream right away, there is no buffering at that end.
Only explanation could possibly be that the input buffer doesn't fill enough in that time, but that doesn't make any sense, the source filter should keep pushing data as fast as it can.

Considering fps is also using LAV Splitter, it even makes less sense, as it parses the audio frames so always full frames are delivered to the decoder, and no incomplete data (so the input buffer shouldn't be used much)

I also tried to reproduce it with various combinations of audio renderers, but i couldn't get it to break.
I'll think about this. Maybe something comes to mind. But you're the only one to report this problem, too. So, hm!

Edit:
@fps::
One thing i was just thinking about, how is CPU usage while playback? LAV Splitter sets the video delivery thread a higher priority then the audio thread, so if your system is too slow, it might cause the audio decoder to not get any decoding time (decoders typically stay on the same thread as the source filter). But for that to happen you would need to be at 100% usage all the time.

Also, which audio renderer did you use?

madshi
1st March 2011, 18:43
Maybe running audio and video pins at the same priority would work better for 100% CPU usage scenarios? I've no idea, I've no experience with writing video+audio splitters yet. But then, that would be a splitter change, so it wouldn't explain why fps has no problems when using a different decoder. <sigh>

fps
1st March 2011, 19:05
Ok, it seems to be an issue of the combination of splitter and audio renderer, indeed.
First of all cpu usage is about 33% no matter which combination of splitter/audio renderer/audio decoder.
In all my former log files I used the System Default audio renderer of MPCHC.
Changing it to speaker (Conexant High Def) or Default Wave Out Device reduces the stuttering considerably while using LAV Splitter -> LAV Audio Decoder.
According to the OSD there are no more dropped/delayed frames any more, but the playback isn't really smooth compared to when I use LAV Splitter -> ffdshow audio decoder -> system default audio renderer (or speaker (Conexant High Def), same result).

I think it might be a problem with the clock again, since the clock deviation is much more fluctuating when I use LAV audio decoder.
I made some more logs (http://www.mediafire.com/?76xbsaxit9fdkxs) with the different combinations of splitters + renderers. One thing that's strange is one log file is 4 times the size of the others although I let the player run about the same time. Maybe nothing special, but I thought worth mentioning at least.

nevcairiel
1st March 2011, 19:16
Can you try the MPC-HC internal decoder?
It uses approx. the same processing model as my decoder.

fps
1st March 2011, 19:31
Do you mean this renderer?
http://t1.pixhost.org/thumbs/1976/6059388_audio.png (http://www.pixhost.org/show/1976/6059388_audio.png)
In combination with LAV Audio decoder this renderer doesn't load on my PC. With ffdshow audio the MPC Audio Renderer gets used as it should.

In the case of LAV Audio Default Direct Sound Device is used instead with this pin info:

Filter : Audio Switcher - CLSID : {18C16B08-6497-420E-AD14-22D21C2CEAB7}

- Connected to:

CLSID: {79376820-07D0-11CF-A24D-0020AFD79767}
Filter: Default DirectSound Device
Pin: Audio Input pin (rendered)

- Connection media type:

Audio: WAVE_FORMAT_EXTENSIBLE 48000Hz 6ch 9216kbps

AM_MEDIA_TYPE:
majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}
subtype: MEDIASUBTYPE_IEEE_FLOAT {00000003-0000-0010-8000-00AA00389B71}
formattype: FORMAT_WaveFormatEx {05589F81-C356-11CE-BF01-00AA0055595A}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 24
cbFormat: 40

WAVEFORMATEX:
wFormatTag: 0xfffe
nChannels: 6
nSamplesPerSec: 48000
nAvgBytesPerSec: 1152000
nBlockAlign: 24
wBitsPerSample: 32
cbSize: 22 (extra bytes)

WAVEFORMATEXTENSIBLE:
wValidBitsPerSample: 32
dwChannelMask: 0x0000003f
SubFormat: {00000003-0000-0010-8000-00AA00389B71}

pbFormat:
0000: fe ff 06 00 80 bb 00 00 00 94 11 00 18 00 20 00 þÿ..€»...”.... .
0010: 16 00 20 00 3f 00 00 00 03 00 00 00 00 00 10 00 .. .?...........
0020: 80 00 00 aa 00 38 9b 71 €..ª.8›q

- Enumerated media type 0:

Set as the current media type

nevcairiel
1st March 2011, 19:31
The decoder, not the renderer. :) Just enable AC3 in the internal filter list.
The renderer does not work with float audio, which my decoder outputs by default on lossy formats.

fps
1st March 2011, 19:38
System Default Audio Renderer + internal AC3 decoder works without any problems.

nevcairiel
1st March 2011, 19:40
Ok, thanks. I'll check some things then.

madshi
1st March 2011, 19:57
@fps, the "big" log actually contains multiple video starts. It seems you forgot to delete/clear the log file before starting the real logging.

I've compared the LAV Splitter -> LAV Audio Decoder log with the LAV Splitter -> ffdshow Audio Decoder log. Here are the results:

LAV Audio Decoder:

00001197 RefClock->GetTime: 437247650000
00001257 RefClock->GetTime: 437248240000, tick dif: 60, time dif: 59.0000
00001264 RefClock->GetTime: 437248320000, tick dif: 7, time dif: 8.0000
00001277 RefClock->GetTime: 437248410000, tick dif: 13, time dif: 9.0000
00001280 RefClock->GetTime: 437248410000, tick dif: 3, time dif: 0.0000
00001291 RefClock->GetTime: 437248410000, tick dif: 11, time dif: 0.0000
00001375 RefClock->GetTime: 437248997709, tick dif: 84, time dif: 58.7709
00001385 RefClock->GetTime: 437249097709, tick dif: 10, time dif: 10.0000
00001388 RefClock->GetTime: 437249097709, tick dif: 3, time dif: 0.0000
00001403 RefClock->GetTime: 437249281459, tick dif: 15, time dif: 18.3750
00001414 RefClock->GetTime: 437249311459, tick dif: 11, time dif: 3.0000
00001417 RefClock->GetTime: 437249311459, tick dif: 3, time dif: 0.0000
00001434 RefClock->GetTime: 437249601042, tick dif: 17, time dif: 28.9583
00001456 RefClock->GetTime: 437249821042, tick dif: 22, time dif: 22.0000
00001482 RefClock->GetTime: 437249971042, tick dif: 26, time dif: 15.0000
00001528 RefClock->GetTime: 437250532084, tick dif: 46, time dif: 56.1042
00001563 RefClock->GetTime: 437250572084, tick dif: 35, time dif: 4.0000
00001630 RefClock->GetTime: 437251541250, tick dif: 67, time dif: 96.9166
00001660 RefClock->GetTime: 437251851250, tick dif: 30, time dif: 31.0000
00001677 RefClock->GetTime: 437251891250, tick dif: 17, time dif: 4.0000
00001743 RefClock->GetTime: 437252464375, tick dif: 66, time dif: 57.3125
00001793 RefClock->GetTime: 437253070209, tick dif: 50, time dif: 60.5834
00001826 RefClock->GetTime: 437253512500, tick dif: 33, time dif: 44.2291
00001861 RefClock->GetTime: 437253762500, tick dif: 35, time dif: 25.0000
00001910 RefClock->GetTime: 437254358334, tick dif: 49, time dif: 59.5834
00001943 RefClock->GetTime: 437254683959, tick dif: 33, time dif: 32.5524
00001977 RefClock->GetTime: 437255013959, tick dif: 34, time dif: 33.0000
00002026 RefClock->GetTime: 437255517292, tick dif: 49, time dif: 50.3333
00002060 RefClock->GetTime: 437255667292, tick dif: 34, time dif: 15.0000

ffdshow Audio Decoder:

00001219 RefClock->GetTime: 422939980000
00001257 RefClock->GetTime: 422939980000, tick dif: 38, time dif: 0.0000
00001262 RefClock->GetTime: 422939980000, tick dif: 5, time dif: 0.0000
00001288 RefClock->GetTime: 422939980000, tick dif: 26, time dif: 0.0000
00001299 RefClock->GetTime: 422939980000, tick dif: 11, time dif: 0.0000
00001324 RefClock->GetTime: 422939980000, tick dif: 25, time dif: 0.0000
00001327 RefClock->GetTime: 422939980000, tick dif: 3, time dif: 0.0000
00001367 RefClock->GetTime: 422940220625, tick dif: 40, time dif: 24.0625
00001389 RefClock->GetTime: 422940450625, tick dif: 22, time dif: 23.0000
00001394 RefClock->GetTime: 422940500625, tick dif: 5, time dif: 5.0000
00001418 RefClock->GetTime: 422940740625, tick dif: 24, time dif: 24.0000
00001475 RefClock->GetTime: 422941305834, tick dif: 57, time dif: 56.5209
00001518 RefClock->GetTime: 422941733959, tick dif: 43, time dif: 42.8125
00001551 RefClock->GetTime: 422942057292, tick dif: 33, time dif: 32.3333
00001600 RefClock->GetTime: 422942557292, tick dif: 49, time dif: 50.0000
00001635 RefClock->GetTime: 422942903750, tick dif: 35, time dif: 34.6458
00001667 RefClock->GetTime: 422943233750, tick dif: 32, time dif: 33.0000
00001717 RefClock->GetTime: 422943733750, tick dif: 50, time dif: 50.0000
00001750 RefClock->GetTime: 422944053542, tick dif: 33, time dif: 31.9792
00001801 RefClock->GetTime: 422944573542, tick dif: 51, time dif: 52.0000
00001834 RefClock->GetTime: 422944891250, tick dif: 33, time dif: 31.7708
00001884 RefClock->GetTime: 422945391250, tick dif: 50, time dif: 50.0000
00001917 RefClock->GetTime: 422945721250, tick dif: 33, time dif: 33.0000
00001967 RefClock->GetTime: 422946221667, tick dif: 50, time dif: 50.0417
00002017 RefClock->GetTime: 422946731667, tick dif: 50, time dif: 51.0000
00002050 RefClock->GetTime: 422947062292, tick dif: 33, time dif: 33.0625
00002100 RefClock->GetTime: 422947562292, tick dif: 50, time dif: 50.0000
00002133 RefClock->GetTime: 422947894792, tick dif: 33, time dif: 33.2500
00002167 RefClock->GetTime: 422948224792, tick dif: 34, time dif: 33.0000
As you can see, the reference clock behaves very differently. With ffdshow, it sits still until 125ms after playback start. But then the reference clock progresses very near to the system clock. With the LAV Audio Decoder, the reference clock starts moving at once, but it moves in a very weird way, sometimes too fast, sometimes too slow. The jitter is so extremely high that madVR constantly changes its decisions on which video frames to display at which VSyncs.

fps
1st March 2011, 20:06
OK, interesting to hear.
Thanks for all the quick input to both of you :).

nevcairiel
1st March 2011, 20:06
Wonder if float output somehow confuses the audio renderer.

Try configuring ffdshow to only output Float, and try that.

fps
1st March 2011, 20:14
Also works flawless.

nevcairiel
1st March 2011, 20:21
Well then, i'm fresh out of ideas. I'll go through the code some.

Mercury_22
1st March 2011, 22:33
Fps it's not the only one having "not smooth playback" with LAVAudio
.....

Also when using LAVCAudio the playback it's NOT as smooth as when using MPC-HC's decoders (watch the green line in stats) !

But I'm using EVRCP

LAV Audio (http://img192.imageshack.us/i/lavaudio.png/)

MPC-HC Audio (http://img14.imageshack.us/f/mpchcaudio.png//)

Ger
2nd March 2011, 00:09
I see the same thing in the EVR-CP graphs. The EVR-CP graph looks messy with LAVAudio, but has a symmetrical sawtooth or flat pattern (depending on how well the frame rate/refresh rate matches I guess) with ffdshow audio.

I only switched back to EVR-CP recently to see if an old bug which forced me to EVR Sync in the past is still present. Now, if I use my old renderer, EVR Sync with the option "Sync video to display (http://www.ostrogothia.com/?page_id=1216)", there is no immediately noticeable difference in the graph between LAVAudio and other decoders.

pirlouy
2nd March 2011, 00:35
When using LAV 0.17, seeking is quite impossible for mpeg splitter with mpeg1 video (old videos). When using MPC-HC MPEG splitter, all is ok.

dann23
2nd March 2011, 06:36
@nevcairiel
you said that you're planning to make lav splitter compatible with media foundation. when do you plan to do this?

VenomousNinja
2nd March 2011, 07:43
When using LAV 0.17, seeking is quite impossible for mpeg splitter with mpeg1 video (old videos). When using MPC-HC MPEG splitter, all is ok.
Me too. I've tried some huge *.vob files - won't seek at all. But the built-in MPC-HC seeks well. My system Win 7 SP1 x64, and MPC-HC x64 build 1.5.1.2958.

nevcairiel
2nd March 2011, 08:18
@nevcairiel
you said that you're planning to make lav splitter compatible with media foundation. when do you plan to do this?
Media Foundation support has been put on hold until i find someone that is willing to work on some other components in the playback graph. I can provide splitter and audio decoder, but i cannot write a working video decoder, video renderer and proper player as well. Until i see more support from other developers for Media Foundation, i don't think i'll continue in that direction.

When using LAV 0.17, seeking is quite impossible for mpeg splitter with mpeg1 video (old videos). When using MPC-HC MPEG splitter, all is ok.

MPEG Seeking problems are ffmpegs fault, there isn't much i can do about that at this time.

I see the same thing in the EVR-CP graphs. The EVR-CP graph looks messy with LAVAudio, but has a symmetrical sawtooth or flat pattern (depending on how well the frame rate/refresh rate matches I guess) with ffdshow audio.


I could reproduce the issue on my work laptop, and found the issue. Its been fixed for the next version.

The problem was that the duration of audio packets was being calculated wrong, which apparently confused the audio renderer because it would then receive overlapping packages. A video renderer would start dropping frames, the audio renderer just screwed up his timings.. interesting to note that you didn't "hear" the problem.

Thanks for everyones input on the problem!

dann23
2nd March 2011, 12:55
Media Foundation support has been put on hold until i find someone that is willing to work on some other components in the playback graph. I can provide splitter and audio decoder, but i cannot write a working video decoder, video renderer and proper player as well. Until i see more support from other developers for Media Foundation, i don't think i'll continue in that direction.


I didn't asked for video renderer or player. Just the splitter. WMP12 is good enough as player. I'm sure there are people who will need only need the splitter. I tried with divx but subtitles don't work.

nevcairiel
2nd March 2011, 13:04
There is no video decoder or renderer with subtitle support for Media Foundation.

dann23
2nd March 2011, 13:23
There is no video decoder or renderer with subtitle support for Media Foundation.

are you saying that it's not tehnically possbile? if so, how can I insert subtitles when I user wmp12?

nevcairiel
2nd March 2011, 13:36
You can't, unless someone codes a video decoder that supports them, or something like vsfilter that patches them onto a decoded video frame.

Microsoft does not have support for subtitles in their media foundation components. If you happen to get subtitles in WMP12, its much more likely that it did fallback to DirectShow for some reason.

dann23
2nd March 2011, 14:14
this sucks in a way but I found this plugin for wmp.
http://sourceforge.net/projects/wmpsub/
So if it'n not very difficult to make lav splitter compatible with media foundation, then I'm willing to test it.
the only problem is hardware acceleration and for which formats it's enabled in wmp. does anyone know this?

Midzuki
2nd March 2011, 14:43
this sucks in a way but I found this plugin for wmp.
http://sourceforge.net/projects/wmpsub/

http://forum.doom9.org/showthread.php?p=1478847#post1478847

nevcairiel
2nd March 2011, 14:48
So if it'n not very difficult to make lav splitter compatible with media foundation, then I'm willing to test it.

If it would be so trivial, it would've been done already. :rolleyes:

I am all for Media Foundation, but i cannot use it without proper support. I don't like WMP, and the default EVR Renderer is rather crappy. I even wrote a prototype player some time ago, until i noticed how bad the default EVR is. Until someone at least comes up with a proper renderer for media foundation, i have no personal motivation to work on it anymore, because i just would not use it.

I realize that someone has to start somewhere, but its really a bad situation. You cannot build a player just around the MS tools, because the EVR is seriously bad (the one WMP uses is different then the one 3rd party apps can access), and no-one is going to work on a renderer without a player that could actually use it ... so unless enough people come together for a joint project, i don't see much going on in that direction.

Virtual_ManPL
2nd March 2011, 15:35
@ nevcairiel - could you please look in bug # 31 - Frame dropping in some certain files (https://github.com/Nevcairiel/LAVFSplitter/issues#issue/31) if you will have some spare time
it's the main problem for me right now, making LAV Splitter unusable in my case, because I see frame dropping in many MKV files

dann23
2nd March 2011, 17:31
Seems I hit a dead end. subtitles works if they are external files but the ones embedded in the mkv container are useless. It seems I'm stuck with ffdshow and lav splitter unless anyone has a better ideea.

pirlouy
2nd March 2011, 19:12
MPEG Seeking problems are ffmpegs fault, there isn't much i can do about that at this time.

So how does the MPC-HC splitter ? it does not use ffmpeg ? Or it uses a trick ?

nevcairiel
2nd March 2011, 19:13
the mpc-hc splitter does not use ffmpeg.

In fact, LAV Splitter is the only DS splitter that does. (known to me)

Mercury_22
2nd March 2011, 19:51
Your fix for LAV Audio it's working !
Now there is a "smooth" playback :p:thanks:

P.S. Will you consider opening a MPC-HC branch with LAV filters integrated (as an option to MPC-HC's internal)? Cause I think will bring more testers for your filters

EDIT: Small request in LAV Audio -> Properties->Status->Channel Output I think it will make more sens to use this order L, C, R, SL, SR, BL, BR, LFE instead of the current one

nevcairiel
2nd March 2011, 20:28
P.S. Will you consider opening a MPC-HC branch with LAV filters integrated (as an option to MPC-HC's internal)? Cause I think will bring more testers for your filters
I'll do this at some point, yes. But i don't know when.


EDIT: Small request in LAV Audio -> Properties->Status->Channel Output I think it will make more sens to use this order L, C, R, SL, SR, BL, BR, LFE instead of the current one

The order is the same as the data is send in the PCM packets, and that will not change. Would be overly complicated to remap that anyway :D

josey_wells
3rd March 2011, 00:40
I just want to say that the LAV Video splitter is fantastic. I was having issue with Blu-ray m2ts files in MPC Home Cinema and Zoom Player with Haili and Gabtest with jumpy video and video/audio sync.

The LAV splitter fixed everything and allowed smooth hi-def playback.

Keep up the good work.

fastplayer
3rd March 2011, 10:54
Keep up the good work.
I agree! :)
Seeking has never been more fun than it is right now with LAV! :thanks:

Aleksoid1978
5th March 2011, 02:19
Hi to ALL.
I have issue with LAV + VC1 + Cyberlink Decoder + MKV.

MKV+VC1+LAV+CyberlinkDecoder:
http://img683.imageshack.us/img683/9513/vc1cyberlinkdecoder.th.png (http://img683.imageshack.us/i/vc1cyberlinkdecoder.png/)

MKV+VC1+LAV+MPCDecoder:
http://img844.imageshack.us/img844/4885/vc1mpcdecoder.th.png (http://img844.imageshack.us/i/vc1mpcdecoder.png/)

mindbomb
5th March 2011, 02:39
turn on frame time correction

leeperry
5th March 2011, 04:24
Hi, I did some tests w/ the audio decoder...but its performance lacks quite a bit for me. Is it still a very early alpha/beta? I get a lot of random sound cuts(I've got an o/c Q9450)...everything's fine w/ ffdshow.

There's a genius plan in progress to remove all 32fp AC3/DTS decoders from ffdshow, so I would very much like to be able to use your decoder...otherwise I'll be stuck w/ an old ffdshow beta build until the end of days. Besides sansnom05's has managed to unlock 32fp in libavcodec(using madshi's patch) for DTS but for AC3, 2 channels are swapped.

Aleksoid1978
5th March 2011, 05:06
turn on frame time correction

But with MPCVideoDecoder don't have this issue.

P.S. AVSplitter from russain play fine in MPC-HC - MKV+VC1+Cyberlink without enable "Frame time correction".
link - http://www.multiupload.com/DG5LP37XCN

nevcairiel
6th March 2011, 15:53
I have issue with LAV + VC1 + Cyberlink Decoder + MKV.


The problem is that VC-1 timestamps are so screwed up. I added some code to LAV Splitter to fix those timestamps, so ffdshow, MPCVideoDec and the MS DMO Decoder work properly with it.
Sadly, Cyberlink expects the timestamps "unfixed", and fixes them again.
The next version will have a fix for that, to disable the timestmap fixing when the Cyberlink Decoder is in use.

Hi, I did some tests w/ the audio decoder...but its performance lacks quite a bit for me. Is it still a very early alpha/beta? I get a lot of random sound cuts(I've got an o/c Q9450)...everything's fine w/ ffdshow.
There was a bug in 0.17 (and prior) that potentially caused this. Check back with 0.18 once its out.

I just read up on the arguments on the ffdshow thread, and removing the other third-party libs is a good thing, imho. Why he refuses to accept simple patches to output fp32 from avcodec, i don't understand. The patches are so super simple, give me a list of important codecs, and i can make you patches for them, assuming they decode to float internally anyway.
If he seriously waits for ffmpeg to disable the forced sample conversion to int16 ... good luck. They are working on the audio API currently, but only on the user-frontend, not anything decoding or processing related.

mindbomb
6th March 2011, 20:42
so, in the next version, you don't need frame time correction for vc-1 and/or mpeg2 anymore?

clsid
6th March 2011, 20:46
There's a genius plan in progress to remove all 32fp AC3/DTS decoders from ffdshow, so I would very much like to be able to use your decoder...otherwise I'll be stuck w/ an old ffdshow beta build until the end of days. Besides sansnom05's has managed to unlock 32fp in libavcodec(using madshi's patch) for DTS but for AC3, 2 channels are swapped.The swapped channels is a bug in madshi's path. There is a new test build in the ffdshow topic for fp32.

nevcairiel
6th March 2011, 20:46
so, in the next version, you don't need frame time correction for vc-1 and/or mpeg2 anymore?

At least for VC-1, you should've never needed it when using LAV Splitter, at least when running with ffdshow or MPC Video Dec (or MS DMO Decoder, but that sometimes had some other problems)
The change in the next version is only for Cyberlink (and potentially ArcSoft - untested) decoders.

I didn't even know mpeg-2 had the same issue, never noticed it.


The swapped channels is a bug in madshi's path. There is a new test build in the ffdshow topic for fp32.
It indeed is. I created new patches for this, all available in my ffmpeg repository that i use for LAV Splitter/Audio Decoder, also includes a patch for AAC. Feel free to use them (also up-to-date for nearly latest ffmpeg (2 weeks ago or so, not much changed since then))
http://git.1f0.de/gitweb?p=ffmpeg.git;a=summary

leeperry
6th March 2011, 21:33
OK, thanks for the infos! and indeed clsid, your patch passes 32fp for both AC3 & DTS...please commit \o/

I still could use an external decoder for the very reason that some 5.1 AC3 streams are apparently tagged as stereo...here's a sample: http://www.mediafire.com/?mn23gioeoug

This makes my automatic profiles in ffdshow fail...it loads the stereo profile http://forum-images.hardware.fr/icones/ohwell.gif

I also had the problem that many(most?) DS audio decoders first tell a dummy number of channels at the first connection, then disconnect/reconnect and give the right one..that also fubars my ffdshow audio automatic profiles big time. AC3Filter and Gabest's MPC audio decoder say 5.1 even if it's stereo, madFlac never lies...neither does Sonic 4.2(but you can't disable DRC in Sonic).

So if your audio decoder could always provide the right number of channels, this might become my new foolproof 32fp AC3/DTS solution..even for wrongly tagged AC3's http://forum-images.hardware.fr/icones/smilies/love.gif

nevcairiel
6th March 2011, 21:37
For the initial connection, the channel count provided by the source/splitter is used, because i just don't have any data packages to confirm if its correct (except if the codec has private data thats being submitted with the media type that contains this information - ac3 doesn't have this, afaik).
In theory, LAV Splitter should always get that right though, because it decodes a few packages to get all relevant information out of the stream.

The Sample you linked up there, for example, is properly being detected as 5.1 by LAV Splitter. (Note, however, that it does not usually load for raw .ac3 files, you can make it load the file in GraphStudio to confirm, though.)
As noticed earlier in this thread, my main goal is to provide a nearly perfect environment if using all of my filters. I just have to rely on some information the splitter gives me, and if the splitter is buggy, well, can't help it.

madshi
6th March 2011, 21:45
The swapped channels is a bug in madshi's path. There is a new test build in the ffdshow topic for fp32.
It indeed is. I created new patches for this, all available in my ffmpeg repository that i use for LAV Splitter/Audio Decoder, also includes a patch for AAC.
Sorry for the bug in my patch. I didn't notice it since eac3to remaps all channels, anyway.

And my cheers to clsid and nevcairiel. I'm very glad that you guys care about audio quality and are willing to do something about it... :)

leeperry
6th March 2011, 21:46
For the initial connection, the channel count provided by the source/splitter is used [..]

The Sample you linked up there, for example, is properly being detected as 5.1 by LAV Splitter. (Note, however, that it does not usually load for raw .ac3 files, you can make it load the file in GraphStudio to confirm, though.)
Ideally, I'd like to stick to HMS..I would only need a 32fp AC3/DTS decoder that states the number of channels to ffdshow audio(that I've forced) after actually checking. If this kind of wrongly tagged AC3 could come up as 5.1 to ffdshow, this would be fantastic. IIRC, Sonic 4.2(using HMS) tells 5.1 to ffdshow for this very sample.

I just read up on the arguments on the ffdshow thread, and removing the other third-party libs is a good thing, imho.

There's a "-3dB dialog normalization" bug in ffdshow's liba52 implementation(I've provided proofs for this in this thread (https://forum.doom9.org/showthread.php?t=156966)), but better get -3dB 32fp than 16int http://img690.imageshack.us/img690/8138/icecreamt.gif

nevcairiel
6th March 2011, 21:48
The whole DirectShow filtergraph is already setup before the decoder sees ANY data to decode. If the splitter sends the data wrong, there is nothing the decoder can do, sorry. (Excluding the cases where it can decode the private data in the media type)

madshi
6th March 2011, 21:56
The whole DirectShow filtergraph is already setup before the decoder sees ANY data to decode. If the splitter sends the data wrong, there is nothing the decoder can do, sorry. (Excluding the cases where it can decode the private data in the media type)
The decoder can at any time do a dynamic format change. See here:

http://msdn.microsoft.com/en-us/library/dd388731%28v=vs.85%29.aspx

I know this cause I had to implement support for this in madVR... :p ffdshow supports dynamic format changes, too, AFAIK.

nevcairiel
6th March 2011, 21:59
The decoder can at any time do a dynamic format change. See here:

http://msdn.microsoft.com/en-us/library/dd388731%28v=vs.85%29.aspx

I know this cause I had to implement support for this in madVR... :p ffdshow supports dynamic format changes, too, AFAIK.

I support this just fine, the problem he has is with ffdshow profiles, which are only based on the initial connection, so he needs that to be correct.

madshi
6th March 2011, 22:01
Ah ok, didn't know that the profiles are based on the initial connection, only.