summaryrefslogtreecommitdiff
path: root/asdcplib/src/blackwave.cpp
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-01-05 15:32:10 +0000
committerCarl Hetherington <cth@carlh.net>2016-01-05 15:32:10 +0000
commit3ec4338ce90ea0549409312f24f8b28c07a5d2da (patch)
tree09aaaff66dd860abbeacc20793145e1a27f4defd /asdcplib/src/blackwave.cpp
parent342aad2ddf893aaaafa9a2c9980579d2dc4ec125 (diff)
asdcplib 2.5.11
Diffstat (limited to 'asdcplib/src/blackwave.cpp')
-rw-r--r--asdcplib/src/blackwave.cpp32
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) )