From 98dac54816771a260d710a95cb05598d437c7cc6 Mon Sep 17 00:00:00 2001 From: kimvde Date: Tue, 26 Mar 2024 10:01:55 -0700 Subject: [PATCH] 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 --- ...olume_then_sample_rf64.wav-highVolume.dump | 30 +++++++++---------- .../wav/sample.wav/highVolume.dump | 20 ++++++------- ..._clipped_then_sample_rf64_clipped.wav.dump | 30 +++++++++++++++++++ .../wav/sample.wav_then_sample_rf64.wav.dump | 30 +++++++++---------- 4 files changed, 70 insertions(+), 40 deletions(-) create mode 100644 libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav_clipped_then_sample_rf64_clipped.wav.dump diff --git a/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav-lowVolume_then_sample_rf64.wav-highVolume.dump b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav-lowVolume_then_sample_rf64.wav-highVolume.dump index be650bea2a..59ae5c1d42 100644 --- a/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav-lowVolume_then_sample_rf64.wav-highVolume.dump +++ b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav-lowVolume_then_sample_rf64.wav-highVolume.dump @@ -5,47 +5,47 @@ AudioSink: channelCount = 1 sampleRate = 44100 buffer #0: - time = 1000000000000 + time = 0 data = -264191391 buffer #1: - time = 1000000100000 + time = 100000 data = -1920445439 buffer #2: - time = 1000000200000 + time = 200000 data = 951798465 buffer #3: - time = 1000000300000 + time = 300000 data = 350069123 buffer #4: - time = 1000000400000 + time = 400000 data = -789481696 buffer #5: - time = 1000000500000 + time = 500000 data = -328820582 buffer #6: - time = 1000000600000 + time = 600000 data = -1158684771 buffer #7: - time = 1000000700000 + time = 700000 data = 1361756392 buffer #8: - time = 1000000800000 + time = 800000 data = 2024513349 buffer #9: - time = 1000000900000 + time = 900000 data = -651017745 buffer #10: - time = 1000001000000 + time = 1000000 data = -2109674252 buffer #11: - time = 1000001100000 + time = 1100000 data = 447771075 buffer #12: - time = 1000001200000 + time = 1200000 data = 1281436254 buffer #13: - time = 1000001300000 + time = 1300000 data = 868669345 buffer #14: - time = 1000001348616 + time = 1348616 data = 2450 diff --git a/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav/highVolume.dump b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav/highVolume.dump index 4fe75d75f2..b1af086971 100644 --- a/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav/highVolume.dump +++ b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav/highVolume.dump @@ -5,32 +5,32 @@ AudioSink: channelCount = 1 sampleRate = 44100 buffer #0: - time = 1000000000000 + time = 0 data = 1365664853 buffer #1: - time = 1000000100000 + time = 100000 data = -1466730976 buffer #2: - time = 1000000200000 + time = 200000 data = 1178728837 buffer #3: - time = 1000000300000 + time = 300000 data = -216459624 buffer #4: - time = 1000000400000 + time = 400000 data = 1990341112 buffer #5: - time = 1000000500000 + time = 500000 data = 1561236782 buffer #6: - time = 1000000600000 + time = 600000 data = 1146352887 buffer #7: - time = 1000000700000 + time = 700000 data = 1061204212 buffer #8: - time = 1000000800000 + time = 800000 data = 840187559 buffer #9: - time = 1000000900000 + time = 900000 data = -29240395 diff --git a/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav_clipped_then_sample_rf64_clipped.wav.dump b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav_clipped_then_sample_rf64_clipped.wav.dump new file mode 100644 index 0000000000..c936c31234 --- /dev/null +++ b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav_clipped_then_sample_rf64_clipped.wav.dump @@ -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 diff --git a/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav_then_sample_rf64.wav.dump b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav_then_sample_rf64.wav.dump index 5a439ad4c7..629c59dfe6 100644 --- a/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav_then_sample_rf64.wav.dump +++ b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sample.wav_then_sample_rf64.wav.dump @@ -5,47 +5,47 @@ AudioSink: channelCount = 1 sampleRate = 44100 buffer #0: - time = 1000000000000 + time = 0 data = -85819864 buffer #1: - time = 1000000100000 + time = 100000 data = 566487491 buffer #2: - time = 1000000200000 + time = 200000 data = -1256531710 buffer #3: - time = 1000000300000 + time = 300000 data = 793455796 buffer #4: - time = 1000000400000 + time = 400000 data = -268235582 buffer #5: - time = 1000000500000 + time = 500000 data = -8136122 buffer #6: - time = 1000000600000 + time = 600000 data = 1750866613 buffer #7: - time = 1000000700000 + time = 700000 data = -1100753636 buffer #8: - time = 1000000800000 + time = 800000 data = 507833230 buffer #9: - time = 1000000900000 + time = 900000 data = 1472467506 buffer #10: - time = 1000001000000 + time = 1000000 data = 1785344804 buffer #11: - time = 1000001100000 + time = 1100000 data = 458152960 buffer #12: - time = 1000001200000 + time = 1200000 data = -2129352270 buffer #13: - time = 1000001300000 + time = 1300000 data = 1572219123 buffer #14: - time = 1000001348616 + time = 1348616 data = -2263