AJA NTV2 SDK  17.5.0.1242
NTV2 SDK 17.5.0.1242
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;
75  AJAWavWriterVideoFormat mVideoFormat;
76  std::string mStartTimecode;
77  AJAWavWriterChunkFlag mFlags;
78  bool mLittleEndian;
79  int32_t mSizeOfHeader;
80  bool mUseFloatData;
81 };
82 
83 #endif // AJAWAVEWRITER_H
AJAWavWriterAudioFormat::channelCount
int channelCount
Definition: wavewriter.h:24
AJAWavWriterChunkFlagStandard
@ AJAWavWriterChunkFlagStandard
Definition: wavewriter.h:41
AJA_EXPORT
#define AJA_EXPORT
Definition: export.h:34
AJAWavWriterAudioFormat::sampleSize
int sampleSize
Definition: wavewriter.h:26
AJAWavWriterVideoFormat::rateDuration
uint32_t rateDuration
Definition: wavewriter.h:34
public.h
Master header for the ajabase library.
AJAWavWriterAudioFormat
Definition: wavewriter.h:15
AJAFileIO::Open
AJAStatus Open(const std::string &fileName, const int flags, const int properties)
Definition: file_io.cpp:201
AJAStatus
AJAStatus
Definition: types.h:378
AJAWavWriterAudioFormat::sampleRate
int sampleRate
Definition: wavewriter.h:25
AJAWavWriterChunkFlag
AJAWavWriterChunkFlag
Definition: wavewriter.h:39
AJAWavWriterVideoFormat
Definition: wavewriter.h:30
file_io.h
Declares the AJAFileIO class.
AJAWavWriterVideoFormat::rateScale
uint32_t rateScale
Definition: wavewriter.h:35
AJAFileIO::Close
AJAStatus Close()
Definition: file_io.cpp:281
AJAFileProperties
AJAFileProperties
Definition: file_io.h:37
AJAWavWriterVideoFormat::AJAWavWriterVideoFormat
AJAWavWriterVideoFormat()
Definition: wavewriter.h:33
AJAFileIO
Definition: file_io.h:64
AJAWavWriter
Definition: wavewriter.h:46
AJAWavWriterAudioFormat::AJAWavWriterAudioFormat
AJAWavWriterAudioFormat(const int inChannelCount=2, const int inSampleRate=48000, const int inSampleSizeBits=16)
Definition: wavewriter.h:18
AJAWavWriterChunkFlagBextV1
@ AJAWavWriterChunkFlagBextV1
Definition: wavewriter.h:42