diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-01-05 15:32:10 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-01-05 15:32:10 +0000 |
| commit | 3ec4338ce90ea0549409312f24f8b28c07a5d2da (patch) | |
| tree | 09aaaff66dd860abbeacc20793145e1a27f4defd /asdcplib/src/blackwave.cpp | |
| parent | 342aad2ddf893aaaafa9a2c9980579d2dc4ec125 (diff) | |
asdcplib 2.5.11
Diffstat (limited to 'asdcplib/src/blackwave.cpp')
| -rw-r--r-- | asdcplib/src/blackwave.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/asdcplib/src/blackwave.cpp b/asdcplib/src/blackwave.cpp index 8498655b..0ae901b0 100644 --- a/asdcplib/src/blackwave.cpp +++ b/asdcplib/src/blackwave.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2009, John Hurst +Copyright (c) 2005-2012, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file wavsplit.cpp - \version $Id: blackwave.cpp,v 1.10 2010/02/16 18:40:57 jhurst Exp $ + \version $Id: blackwave.cpp,v 1.15 2015/10/16 16:55:33 jhurst Exp $ \brief Black WAV file generator */ @@ -56,7 +56,7 @@ banner(FILE* stream = stderr) { fprintf(stream, "\n\ %s (asdcplib %s)\n\n\ -Copyright (c) 2005-2009 John Hurst\n\n\ +Copyright (c) 2005-2012 John Hurst\n\n\ %s is part of asdcplib.\n\ asdcplib may be copied only under the terms of the license found at\n\ the top of every file in the asdcplib distribution kit.\n\n\ @@ -73,7 +73,8 @@ USAGE: %s [-v|-h[-d]] <filename>\n\ \n\ -V - Show version\n\ -h - Show help\n\ - -d <duration> - Number of 2k-sample frames to process, default 1440\n\ + -d <duration> - Number of edit units to process, default 1440\n\ + -9 - Make a 96 kHz file (default 48 kHz)\n\ \n\ Other Options:\n\ -v - Verbose, show extra detail during run\n\ @@ -94,16 +95,17 @@ public: bool verbose_flag; // true if the verbose option was selected bool version_flag; // true if the version display option was selected bool help_flag; // true if the help display option was selected + bool s96_flag; // true if the samples should be at 96 kHz ui32_t duration; // number of frames to be processed const char* filename; // filename prefix for files written by the extract mode CommandOptions(int argc, const char** argv) : - error_flag(true), verbose_flag(false), version_flag(false), help_flag(false), + error_flag(true), verbose_flag(false), version_flag(false), help_flag(false), s96_flag(false), duration(1440), filename(0) { for ( int i = 1; i < argc; i++ ) { - if ( argv[i][0] == '-' && isalpha(argv[i][1]) && argv[i][2] == 0 ) + if ( argv[i][0] == '-' && ( isalpha(argv[i][1]) || isdigit(argv[i][1]) ) && argv[i][2] == 0 ) { switch ( argv[i][1] ) { @@ -113,7 +115,11 @@ public: case 'd': TEST_EXTRA_ARG(i, 'd'); - duration = atoi(argv[i]); // TODO: test for negative value, should use strtol() + duration = Kumu::xabs(strtol(argv[i], 0, 10)); + break; + + case '9': + s96_flag = true; break; default: @@ -153,12 +159,12 @@ make_black_wav_file(CommandOptions& Options) PCM::AudioDescriptor ADesc; ADesc.EditRate = Rational(24,1); - ADesc.AudioSamplingRate = ASDCP::SampleRate_48k; + ADesc.AudioSamplingRate = Options.s96_flag ? ASDCP::SampleRate_96k : ASDCP::SampleRate_48k; ADesc.Locked = 0; ADesc.ChannelCount = 1; ADesc.QuantizationBits = 24; ADesc.BlockAlign = 3; - ADesc.AvgBps = 14400; + ADesc.AvgBps = ADesc.BlockAlign * ADesc.AudioSamplingRate.Quotient(); ADesc.LinkedTrackID = 1; ADesc.ContainerDuration = Options.duration; @@ -169,8 +175,8 @@ make_black_wav_file(CommandOptions& Options) if ( Options.verbose_flag ) { - fprintf(stderr, "48Khz PCM Audio, %s fps (%u spf)\n", "24", - PCM::CalcSamplesPerFrame(ADesc)); + fprintf(stderr, "%s kHz PCM Audio, 24 fps (%u spf)\n", + (Options.s96_flag?"96":"48"), PCM::CalcSamplesPerFrame(ADesc)); fputs("AudioDescriptor:\n", stderr); PCM::AudioDescriptorDump(ADesc); } @@ -181,8 +187,8 @@ make_black_wav_file(CommandOptions& Options) if ( ASDCP_SUCCESS(result) ) { - Wav::SimpleWaveHeader WavHeader(ADesc); - result = WavHeader.WriteToFile(OutFile); + RF64::SimpleRF64Header WavHeader(ADesc); + result = WavHeader.WriteToFile(OutFile); } if ( ASDCP_SUCCESS(result) ) |
