Fix negative position for clipped media

With this CL:
- The large timestamp offset added by ExoPlayer so that decoders
don't see any negative timestamps is removed before passing the
timestamp to the AudioGraph.
- Clipped media timestamps are offset by the clipping start position
before being passed to the AudioGraph.
- The offset added to the audio buffer timestamps is removed when
computing the audio sink position, to convert them back to the
timestamps passed by the player.

PiperOrigin-RevId: 619225990
This commit is contained in:
kimvde 2024-03-26 10:01:55 -07:00 committed by Copybara-Service
parent 8d65b75185
commit 98dac54816
4 changed files with 70 additions and 40 deletions

View file

@ -5,47 +5,47 @@ AudioSink:
channelCount = 1 channelCount = 1
sampleRate = 44100 sampleRate = 44100
buffer #0: buffer #0:
time = 1000000000000 time = 0
data = -264191391 data = -264191391
buffer #1: buffer #1:
time = 1000000100000 time = 100000
data = -1920445439 data = -1920445439
buffer #2: buffer #2:
time = 1000000200000 time = 200000
data = 951798465 data = 951798465
buffer #3: buffer #3:
time = 1000000300000 time = 300000
data = 350069123 data = 350069123
buffer #4: buffer #4:
time = 1000000400000 time = 400000
data = -789481696 data = -789481696
buffer #5: buffer #5:
time = 1000000500000 time = 500000
data = -328820582 data = -328820582
buffer #6: buffer #6:
time = 1000000600000 time = 600000
data = -1158684771 data = -1158684771
buffer #7: buffer #7:
time = 1000000700000 time = 700000
data = 1361756392 data = 1361756392
buffer #8: buffer #8:
time = 1000000800000 time = 800000
data = 2024513349 data = 2024513349
buffer #9: buffer #9:
time = 1000000900000 time = 900000
data = -651017745 data = -651017745
buffer #10: buffer #10:
time = 1000001000000 time = 1000000
data = -2109674252 data = -2109674252
buffer #11: buffer #11:
time = 1000001100000 time = 1100000
data = 447771075 data = 447771075
buffer #12: buffer #12:
time = 1000001200000 time = 1200000
data = 1281436254 data = 1281436254
buffer #13: buffer #13:
time = 1000001300000 time = 1300000
data = 868669345 data = 868669345
buffer #14: buffer #14:
time = 1000001348616 time = 1348616
data = 2450 data = 2450

View file

@ -5,32 +5,32 @@ AudioSink:
channelCount = 1 channelCount = 1
sampleRate = 44100 sampleRate = 44100
buffer #0: buffer #0:
time = 1000000000000 time = 0
data = 1365664853 data = 1365664853
buffer #1: buffer #1:
time = 1000000100000 time = 100000
data = -1466730976 data = -1466730976
buffer #2: buffer #2:
time = 1000000200000 time = 200000
data = 1178728837 data = 1178728837
buffer #3: buffer #3:
time = 1000000300000 time = 300000
data = -216459624 data = -216459624
buffer #4: buffer #4:
time = 1000000400000 time = 400000
data = 1990341112 data = 1990341112
buffer #5: buffer #5:
time = 1000000500000 time = 500000
data = 1561236782 data = 1561236782
buffer #6: buffer #6:
time = 1000000600000 time = 600000
data = 1146352887 data = 1146352887
buffer #7: buffer #7:
time = 1000000700000 time = 700000
data = 1061204212 data = 1061204212
buffer #8: buffer #8:
time = 1000000800000 time = 800000
data = 840187559 data = 840187559
buffer #9: buffer #9:
time = 1000000900000 time = 900000
data = -29240395 data = -29240395

View file

@ -0,0 +1,30 @@
AudioSink:
buffer count = 8
config:
pcmEncoding = 2
channelCount = 1
sampleRate = 44100
buffer #0:
time = 0
data = 793455796
buffer #1:
time = 100000
data = -268235582
buffer #2:
time = 200000
data = -8136122
buffer #3:
time = 300000
data = 1750866613
buffer #4:
time = 400000
data = -1100753636
buffer #5:
time = 500000
data = 458152960
buffer #6:
time = 600000
data = -2129352270
buffer #7:
time = 700000
data = 961

View file

@ -5,47 +5,47 @@ AudioSink:
channelCount = 1 channelCount = 1
sampleRate = 44100 sampleRate = 44100
buffer #0: buffer #0:
time = 1000000000000 time = 0
data = -85819864 data = -85819864
buffer #1: buffer #1:
time = 1000000100000 time = 100000
data = 566487491 data = 566487491
buffer #2: buffer #2:
time = 1000000200000 time = 200000
data = -1256531710 data = -1256531710
buffer #3: buffer #3:
time = 1000000300000 time = 300000
data = 793455796 data = 793455796
buffer #4: buffer #4:
time = 1000000400000 time = 400000
data = -268235582 data = -268235582
buffer #5: buffer #5:
time = 1000000500000 time = 500000
data = -8136122 data = -8136122
buffer #6: buffer #6:
time = 1000000600000 time = 600000
data = 1750866613 data = 1750866613
buffer #7: buffer #7:
time = 1000000700000 time = 700000
data = -1100753636 data = -1100753636
buffer #8: buffer #8:
time = 1000000800000 time = 800000
data = 507833230 data = 507833230
buffer #9: buffer #9:
time = 1000000900000 time = 900000
data = 1472467506 data = 1472467506
buffer #10: buffer #10:
time = 1000001000000 time = 1000000
data = 1785344804 data = 1785344804
buffer #11: buffer #11:
time = 1000001100000 time = 1100000
data = 458152960 data = 458152960
buffer #12: buffer #12:
time = 1000001200000 time = 1200000
data = -2129352270 data = -2129352270
buffer #13: buffer #13:
time = 1000001300000 time = 1300000
data = 1572219123 data = 1572219123
buffer #14: buffer #14:
time = 1000001348616 time = 1348616
data = -2263 data = -2263