AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
wavewriter.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef AJAWAVEWRITER_H
9 #define AJAWAVEWRITER_H
10 
11 #include "public.h"
12 #include "ajabase/system/file_io.h"
13 
14 
16 {
17 public:
18  AJAWavWriterAudioFormat(const int inChannelCount = 2, const int inSampleRate = 48000, const int inSampleSizeBits = 16)
19  : channelCount (inChannelCount),
20  sampleRate (inSampleRate),
21  sampleSize (inSampleSizeBits)
22  {
23  }
27 };
28 
29 
31 {
32 public:
33  AJAWavWriterVideoFormat() { rateDuration = 30000; rateScale = 1001; }
34  uint32_t rateDuration;
35  uint32_t rateScale;
36 };
37 
38 
40 {
43 };
44 
45 
47 {
48 
49 public:
50  AJAWavWriter(const std::string & name,
51  const AJAWavWriterAudioFormat & audioFormat = AJAWavWriterAudioFormat(),
52  const AJAWavWriterVideoFormat & videoFormat = AJAWavWriterVideoFormat(),
53  const std::string & startTimecode = "00:00:00;00", AJAWavWriterChunkFlag flags = AJAWavWriterChunkFlagStandard,
54  bool useFloatNotPCM = false);
55  bool open();
56  void close();
57 
58  uint32_t write(const char* data, uint32_t len);
59 
60 protected:
61  AJAStatus Open(const std::string& fileName, int flags, AJAFileProperties properties);
62  AJAStatus Close(void);
63 
64 private:
65  uint32_t writeRawData(const char* data,uint32_t len);
66  uint32_t writeRawData(char* data,uint32_t len);
67  uint32_t writeRaw_uint8_t(uint8_t value, uint32_t count=1);
68  uint32_t writeRaw_uint16_t(uint16_t value, uint32_t count=1);
69  uint32_t writeRaw_uint32_t(uint32_t value, uint32_t count=1);
70 
71  void writeHeader();
72 
73  std::string mFileName;
74  AJAWavWriterAudioFormat mAudioFormat;
76  std::string mStartTimecode;
77  AJAWavWriterChunkFlag mFlags;
78  bool mLittleEndian;
79  int32_t mSizeOfHeader;
80  bool mUseFloatData;
81 };
82 
83 #endif // AJAWAVEWRITER_H
AJAStatus
Definition: types.h:380
#define AJA_EXPORT
Definition: export.h:34
AJAFileProperties
Definition: file_io.h:37
mVideoFormat
Definition: ntv2vcam.cpp:801
Master header for the ajabase library.
Declares the AJAFileIO class.
AJAWavWriterChunkFlag
Definition: wavewriter.h:39
AJAStatus Open(const std::string &fileName, const int flags, const int properties)
Definition: file_io.cpp:201
AJAWavWriterAudioFormat(const int inChannelCount=2, const int inSampleRate=48000, const int inSampleSizeBits=16)
Definition: wavewriter.h:18
AJAStatus Close()
Definition: file_io.cpp:281