webrtc/modules/audio_coding/neteq/tools
Alessio Bazzica 8f319a3472 Reland "Reland "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker.""
This reverts commit fab3460a82.

Reason for revert: fix downstream instead

Original change's description:
> Revert "Reland "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker.""
> 
> This reverts commit 9973933d2e.
> 
> Reason for revert: breaking downstream projects and not reviewed by direct owners
> 
> Original change's description:
> > Reland "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker."
> > 
> > This reverts commit 24192c267a.
> > 
> > Reason for revert: Analyzed the performance regression in more detail.
> > 
> > Most of the regression comes from the extra RtpPacketInfos-related memory allocations in every `NetEq::GetAudio()` call. Commit 1796a820f6 has removed roughly 2/3rds of the extra allocations from the impacted perf tests. Remaining perf impact is expected to be about "8 microseconds of CPU time per second" on the Linux benchmarking machines and "15 us per second" on Windows/Mac.
> > 
> > There are options to optimize further but they are unlikely worth doing. Note for example that `NetEqPerformanceTest` uses the PCM codec while the real-world use cases would likely use the much heavier Opus codec. The numbers from `OpusSpeedTest` and `NetEqPerformanceTest` suggest that Opus decoding is about 10x as expensive as NetEq overall.
> > 
> > Original change's description:
> > > Revert "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker."
> > >
> > > This reverts commit 3e8ef940fe.
> > >
> > > Reason for revert: This CL causes a performance regression in NetEq, see https://bugs.chromium.org/p/chromium/issues/detail?id=982260.
> > >
> > > Original change's description:
> > > > Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker.
> > > >
> > > > This change adds the plumbing of RtpPacketInfo from ChannelReceive::OnRtpPacket() to ChannelReceive::GetAudioFrameWithInfo() for audio. It is a step towards replacing the non-spec compliant ContributingSources that updates itself at packet-receive time, with the spec-compliant SourceTracker that will update itself at frame-delivery-to-track time.
> > > >
> > > > Bug: webrtc:10668
> > > > Change-Id: I03385d6865bbc7bfbef7634f88de820a934f787a
> > > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/139890
> > > > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > > > Reviewed-by: Minyue Li <minyue@webrtc.org>
> > > > Commit-Queue: Chen Xing <chxg@google.com>
> > > > Cr-Commit-Position: refs/heads/master@{#28434}
> > >
> > > TBR=kwiberg@webrtc.org,stefan@webrtc.org,minyue@webrtc.org,chxg@google.com
> > >
> > > Bug: webrtc:10668, chromium:982260
> > > Change-Id: I5e2cfde78c59d1123e21869564d76ed3f6193a5c
> > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145339
> > > Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
> > > Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#28561}
> > 
> > TBR=kwiberg@webrtc.org,stefan@webrtc.org,ivoc@webrtc.org,minyue@webrtc.org,chxg@google.com
> > 
> > # Not skipping CQ checks because original CL landed > 1 day ago.
> > 
> > Bug: webrtc:10668, chromium:982260
> > Change-Id: Ie375a0b327ee368317bf3a04b2f1415c3a974470
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146707
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Commit-Queue: Chen Xing <chxg@google.com>
> > Cr-Commit-Position: refs/heads/master@{#28664}
> 
> TBR=kwiberg@webrtc.org,stefan@webrtc.org,ivoc@webrtc.org,minyue@webrtc.org,chxg@google.com
> 
> Change-Id: I652cb0814d83b514d3bee34e65ca3bb693099b22
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:10668, chromium:982260
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146712
> Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
> Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28671}

TBR=alessiob@webrtc.org,kwiberg@webrtc.org,stefan@webrtc.org,ivoc@webrtc.org,minyue@webrtc.org,chxg@google.com

Change-Id: Id43b7b3da79b4f48004b41767482bae1c1fa1e16
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10668, chromium:982260
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146713
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28672}
2019-07-24 16:47:13 +00:00
..
audio_checksum.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
audio_loop.cc Delete unused includes of assert.h 2018-10-04 14:01:44 +00:00
audio_loop.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
audio_sink.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
audio_sink.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
constant_pcm_packet_source.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
constant_pcm_packet_source.h Format almost everything. 2019-07-08 13:45:15 +00:00
DEPS Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
encode_neteq_input.cc Let NetEq use the PLC output from a decoder 2018-09-14 07:05:20 +00:00
encode_neteq_input.h Enable clang::find_bad_constructs for audio_coding (part 1/2). 2018-07-20 13:07:47 +00:00
fake_decode_from_file.cc Adding DTX logic to FakeDecodeFromFile (used be NetEqTest). 2019-04-15 15:03:39 +00:00
fake_decode_from_file.h Adding DTX logic to FakeDecodeFromFile (used be NetEqTest). 2019-04-15 15:03:39 +00:00
input_audio_file.cc 2nd reland of https://webrtc-review.googlesource.com/c/src/+/114883 2019-02-22 09:59:01 +00:00
input_audio_file.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
input_audio_file_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
neteq_delay_analyzer.cc Fix no_global_constructors/no_exit_time_destructors in Neteq. 2018-09-11 06:39:14 +00:00
neteq_delay_analyzer.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
neteq_event_log_input.cc Handle event log parsing errors without crashing. 2019-04-24 07:49:23 +00:00
neteq_event_log_input.h Allow passing an event log as string to NetEqSimulator. 2019-03-20 10:27:14 +00:00
neteq_input.cc Make fewer copies when using StringBuilder. 2018-09-24 09:39:19 +00:00
neteq_input.h Remove unnecessary includes of common_types.h 2018-12-07 21:21:13 +00:00
neteq_packet_source_input.cc RtcEventLogSource no longer uses deprecated parsing functions. 2018-10-11 16:13:17 +00:00
neteq_packet_source_input.h RtcEventLogSource no longer uses deprecated parsing functions. 2018-10-11 16:13:17 +00:00
neteq_performance_test.cc Reland "Reland "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker."" 2019-07-24 16:47:13 +00:00
neteq_performance_test.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
neteq_quality_test.cc Reland "Reland "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker."" 2019-07-24 16:47:13 +00:00
neteq_quality_test.h Reland "Reland "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker."" 2019-07-24 16:47:13 +00:00
neteq_replacement_input.cc Avoid wrong parsing of padding length and its use in NetEq simulation. 2018-09-12 11:23:03 +00:00
neteq_replacement_input.h Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
neteq_rtpplay.cc Make force_fieldtrials persistent string during entire program live. 2019-07-10 16:26:50 +00:00
neteq_rtpplay_test.sh Reland "NetEQ RTP Play: Optionally write output audio file" 2019-03-13 15:33:29 +00:00
neteq_stats_getter.cc Implement newly standardized stats 2019-04-25 08:58:23 +00:00
neteq_stats_getter.h Adding NetEq lifetime stats to event log visualizer. 2018-06-26 11:27:09 +00:00
neteq_stats_plotter.cc Format almost everything. 2019-07-08 13:45:15 +00:00
neteq_stats_plotter.h Restructure neteq_rtpplay into a library with small executable wrapper. 2018-09-03 10:42:40 +00:00
neteq_test.cc Reland "Reland "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker."" 2019-07-24 16:47:13 +00:00
neteq_test.h Reland "Reland "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker."" 2019-07-24 16:47:13 +00:00
neteq_test_factory.cc Migrate WebRTC test infra to ABSL_FLAG. 2019-07-19 06:54:04 +00:00
neteq_test_factory.h Allow passing an event log as string to NetEqSimulator. 2019-03-20 10:27:14 +00:00
output_audio_file.h Format almost everything. 2019-07-08 13:45:15 +00:00
output_wav_file.h 2nd reland of https://webrtc-review.googlesource.com/c/src/+/114883 2019-02-22 09:59:01 +00:00
packet.cc Reland "Replace RTPHeader memset with assignment from a fresh object." 2019-03-26 14:06:17 +00:00
packet.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
packet_source.cc RtcEventLogSource no longer uses deprecated parsing functions. 2018-10-11 16:13:17 +00:00
packet_source.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
packet_unittest.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
README.md Reland "NetEQ RTP Play: Optionally write output audio file" 2019-03-13 15:33:29 +00:00
resample_input_audio_file.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
resample_input_audio_file.h Allow neteq_quality_test to read a complete file 2019-06-03 10:25:29 +00:00
rtc_event_log_source.cc Format almost everything. 2019-07-08 13:45:15 +00:00
rtc_event_log_source.h Allow passing an event log as string to NetEqSimulator. 2019-03-20 10:27:14 +00:00
rtp_analyze.cc Migrate WebRTC test infra to ABSL_FLAG. 2019-07-19 06:54:04 +00:00
rtp_encode.cc Migrate WebRTC test infra to ABSL_FLAG. 2019-07-19 06:54:04 +00:00
rtp_file_source.cc RtcEventLogSource no longer uses deprecated parsing functions. 2018-10-11 16:13:17 +00:00
rtp_file_source.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
rtp_generator.cc Format almost everything. 2019-07-08 13:45:15 +00:00
rtp_generator.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
rtp_jitter.cc Format almost everything. 2019-07-08 13:45:15 +00:00
rtpcat.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00

NetEQ RTP Play tool

Testing of the command line arguments

The command line tool neteq_rtpplay can be tested by running neteq_rtpplay_test.sh, which is not use on try bots, but it can be used before submitting any CLs that may break the behavior of the command line arguments of neteq_rtpplay.

Run neteq_rtpplay_test.sh as follows from the src/ folder:

src$ ./modules/audio_coding/neteq/tools/neteq_rtpplay_test.sh  \
  out/Default/neteq_rtpplay  \
  resources/audio_coding/neteq_opus.rtp  \
  resources/short_mixed_mono_48.pcm

You can replace the RTP and PCM files with any other compatible files. If you get an error using the files indicated above, try running gclient sync.

Requirements: awk and md5sum.