Wenn man den Syncbereich (-25 … 55) in VdpauSyncDecoder() verkleinert, gibt es unnütze dupes und drops.
Deshalb wurde der ja mal vergrössert.
Wenn es die nicht gäbe, könnte man besser synchronisieren.
So sieht das aus:
Code
dVA: 47 dV: 60 dA: 40 dT: 40 V: 63309870 A: 63309868 T: 19002560 AudioD: 335
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63309890 A: 63309888 T: 19002580 AudioD: 315
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63309910 A: 63309908 T: 19002600 AudioD: 415
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63309930 A: 63309928 T: 19002620 AudioD: 395
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63309950 A: 63309948 T: 19002640 AudioD: 375
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63309970 A: 63309968 T: 19002660 AudioD: 355
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63309990 A: 63309988 T: 19002680 AudioD: 335
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63310010 A: 63310008 T: 19002700 AudioD: 411
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63310030 A: 63310028 T: 19002720 AudioD: 391
dVA: 90 dV: 20 dA: -23 dT: 20 V: 63310050 A: 63310005 T: 19002740 AudioD: 414
******************* DUPE
dVA: 27 dV: 20 dA: 83 dT: 40 V: 63310070 A: 63310088 T: 19002780 AudioD: 331
dVA: 27 dV: 20 dA: 20 dT: 20 V: 63310090 A: 63310108 T: 19002800 AudioD: 407
dVA: 27 dV: 20 dA: 20 dT: 20 V: 63310110 A: 63310128 T: 19002820 AudioD: 387
dVA: 27 dV: 20 dA: 20 dT: 20 V: 63310130 A: 63310148 T: 19002840 AudioD: 367
******************* DROP
dVA: 47 dV: 60 dA: 40 dT: 40 V: 63310190 A: 63310188 T: 19002880 AudioD: 327
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63310210 A: 63310208 T: 19002900 AudioD: 427
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63310230 A: 63310228 T: 19002920 AudioD: 407
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63310250 A: 63310248 T: 19002940 AudioD: 387
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63310270 A: 63310268 T: 19002960 AudioD: 367
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63310290 A: 63310288 T: 19002980 AudioD: 347
dVA: 47 dV: 20 dA: 20 dT: 20 V: 63310310 A: 63310308 T: 19003000 AudioD: 423
Alles anzeigen
Man sieht, das der völlig überflüssige dupe/drop vom kaputten Audio Pts kommt.
Wieso ist der kaputt?
Mit mehr debug Ausgaben sieht man, wie die RingBufferWrites das AudioDelay (welches zum RingBufferFüllstand proportional ist) erhöhen, und die alsa: wrote es vermindern.
Code
dVA: 49 dV: 20 dA: 20 dT: 20 V: 70354859 A: 70354855 T: 22594417 AudioD: 420
RingBufferWrite T: 22594421
RingBufferWrite T: 22594421
RingBufferWrite T: 22594422
RingBufferWrite T: 22594422
audio/alsa: wrote 2046/2046 frames T: 22594431
dVA: 49 dV: 20 dA: 20 dT: 20 V: 70354879 A: 70354875 T: 22594437 AudioD: 496
audio/alsa: wrote 1026/1026 frames T: 22594453
dVA: 49 dV: 20 dA: 20 dT: 20 V: 70354899 A: 70354895 T: 22594457 AudioD: 476
dVA: 49 dV: 20 dA: 20 dT: 20 V: 70354919 A: 70354915 T: 22594477 AudioD: 456
audio/alsa: wrote 2047/2047 frames T: 22594496
dVA: 49 dV: 20 dA: 20 dT: 20 V: 70354939 A: 70354935 T: 22594497 AudioD: 436
dVA: 71 dV: 20 dA: -2 dT: 20 V: 70354959 A: 70354933 T: 22594517 AudioD: 438
audio/alsa: wrote 1025/1025 frames T: 22594517
******************* DUPE ******************************************************
RingBufferWrite T: 22594523
RingBufferWrite T: 22594523
RingBufferWrite T: 22594524
RingBufferWrite T: 22594524
RingBufferWrite T: 22594524
dVA: 29 dV: 20 dA: 62 dT: 40 V: 70354979 A: 70354995 T: 22594557 AudioD: 496
Alles anzeigen
Wie kommt die Erhöhung von AudioD(elay) 436 -> 438 zustande???
Irgendwas läuft da schief, aber was?
Jedenfalls ist das der Grund für den negativen AudioPtsUnterschied, der den unnötigen dupe verursacht.
Anbei der Patch, der den debug erzeugt hat.