Make unpack_aecdump optionally unpack render/capture call order

It is stored in a text file as a stream of 'r' and 'c' characters - render and capture.
This is the format output by APM with apm_debug_dump on, and it is readable by audioproc_f.

Bug: webrtc:9252
Change-Id: I01e9e104ed7e3fb45e623730343a0c2addc81d1b
Reviewed-on: https://webrtc-review.googlesource.com/75502
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23213}
This commit is contained in:
Sam Zackrisson
2018-05-11 11:34:49 +02:00
committed by Commit Bot
parent 8a150d9c21
commit f61475dfcf

View File

@ -38,6 +38,9 @@ DEFINE_string(delay_file, "delay.int32", "The name of the delay file.");
DEFINE_string(drift_file, "drift.int32", "The name of the drift file."); DEFINE_string(drift_file, "drift.int32", "The name of the drift file.");
DEFINE_string(level_file, "level.int32", "The name of the level file."); DEFINE_string(level_file, "level.int32", "The name of the level file.");
DEFINE_string(keypress_file, "keypress.bool", "The name of the keypress file."); DEFINE_string(keypress_file, "keypress.bool", "The name of the keypress file.");
DEFINE_string(callorder_file,
"callorder",
"The name of the render/capture call order file.");
DEFINE_string(settings_file, "settings.txt", "The name of the settings file."); DEFINE_string(settings_file, "settings.txt", "The name of the settings file.");
DEFINE_bool(full, false, DEFINE_bool(full, false,
"Unpack the full set of files (normally not needed)."); "Unpack the full set of files (normally not needed).");
@ -64,6 +67,8 @@ using audioproc::ReverseStream;
using audioproc::Stream; using audioproc::Stream;
using audioproc::Init; using audioproc::Init;
namespace {
void WriteData(const void* data, size_t size, FILE* file, void WriteData(const void* data, size_t size, FILE* file,
const std::string& filename) { const std::string& filename) {
if (fwrite(data, size, 1, file) != 1) { if (fwrite(data, size, 1, file) != 1) {
@ -72,6 +77,15 @@ void WriteData(const void* data, size_t size, FILE* file,
} }
} }
void WriteCallOrderData(const bool render_call,
FILE* file,
const std::string& filename) {
const char call_type = render_call ? 'r' : 'c';
WriteData(&call_type, sizeof(call_type), file, filename.c_str());
}
} // namespace
int do_main(int argc, char* argv[]) { int do_main(int argc, char* argv[]) {
std::string program_name = argv[0]; std::string program_name = argv[0];
std::string usage = "Commandline tool to unpack audioproc debug files.\n" std::string usage = "Commandline tool to unpack audioproc debug files.\n"
@ -104,6 +118,9 @@ int do_main(int argc, char* argv[]) {
std::unique_ptr<RawFile> input_raw_file; std::unique_ptr<RawFile> input_raw_file;
std::unique_ptr<RawFile> output_raw_file; std::unique_ptr<RawFile> output_raw_file;
std::stringstream callorder_raw_name;
callorder_raw_name << FLAG_callorder_file << ".char";
FILE* callorder_char_file = OpenFile(callorder_raw_name.str(), "wb");
FILE* settings_file = OpenFile(FLAG_settings_file, "wb"); FILE* settings_file = OpenFile(FLAG_settings_file, "wb");
while (ReadMessageFromFile(debug_file, &event_msg)) { while (ReadMessageFromFile(debug_file, &event_msg)) {
@ -143,6 +160,10 @@ int do_main(int argc, char* argv[]) {
reverse_wav_file.get(), reverse_wav_file.get(),
reverse_raw_file.get()); reverse_raw_file.get());
} }
if (FLAG_full) {
WriteCallOrderData(true /* render_call */, callorder_char_file,
FLAG_callorder_file);
}
} else if (event_msg.type() == Event::STREAM) { } else if (event_msg.type() == Event::STREAM) {
frame_count++; frame_count++;
if (!event_msg.has_stream()) { if (!event_msg.has_stream()) {
@ -205,6 +226,8 @@ int do_main(int argc, char* argv[]) {
} }
if (FLAG_full) { if (FLAG_full) {
WriteCallOrderData(false /* render_call */, callorder_char_file,
FLAG_callorder_file);
if (msg.has_delay()) { if (msg.has_delay()) {
static FILE* delay_file = OpenFile(FLAG_delay_file, "wb"); static FILE* delay_file = OpenFile(FLAG_delay_file, "wb");
int32_t delay = msg.delay(); int32_t delay = msg.delay();
@ -340,6 +363,10 @@ int do_main(int argc, char* argv[]) {
output_wav_file.reset(new WavWriter(output_name.str(), output_wav_file.reset(new WavWriter(output_name.str(),
output_sample_rate, output_sample_rate,
num_output_channels)); num_output_channels));
std::stringstream callorder_name;
callorder_name << FLAG_callorder_file << frame_count << ".char";
callorder_char_file = OpenFile(callorder_name.str(), "wb");
} }
} }
} }