Commit 34c63378 authored by Max Kellermann's avatar Max Kellermann

pcm/Export: add GetInputBlockSize(), GetOutputBlockSize()

parent 2093e536
...@@ -46,6 +46,20 @@ public: ...@@ -46,6 +46,20 @@ public:
rest_buffer.Reset(); rest_buffer.Reset();
} }
/**
* @return the size of one input block in bytes
*/
size_t GetInputBlockSize() const noexcept {
return rest_buffer.GetInputBlockSize();
}
/**
* @return the size of one output block in bytes
*/
size_t GetOutputBlockSize() const noexcept {
return 2 * GetInputBlockSize();
}
ConstBuffer<uint32_t> Convert(ConstBuffer<uint8_t> src) noexcept; ConstBuffer<uint32_t> Convert(ConstBuffer<uint8_t> src) noexcept;
}; };
......
...@@ -44,6 +44,20 @@ public: ...@@ -44,6 +44,20 @@ public:
rest_buffer.Reset(); rest_buffer.Reset();
} }
/**
* @return the size of one input block in bytes
*/
size_t GetInputBlockSize() const noexcept {
return rest_buffer.GetInputBlockSize();
}
/**
* @return the size of one output block in bytes
*/
size_t GetOutputBlockSize() const noexcept {
return GetInputBlockSize();
}
ConstBuffer<uint16_t> Convert(ConstBuffer<uint8_t> src) noexcept; ConstBuffer<uint16_t> Convert(ConstBuffer<uint8_t> src) noexcept;
}; };
......
...@@ -44,6 +44,20 @@ public: ...@@ -44,6 +44,20 @@ public:
rest_buffer.Reset(); rest_buffer.Reset();
} }
/**
* @return the size of one input block in bytes
*/
size_t GetInputBlockSize() const noexcept {
return rest_buffer.GetInputBlockSize();
}
/**
* @return the size of one output block in bytes
*/
size_t GetOutputBlockSize() const noexcept {
return GetInputBlockSize();
}
ConstBuffer<uint32_t> Convert(ConstBuffer<uint8_t> src) noexcept; ConstBuffer<uint32_t> Convert(ConstBuffer<uint8_t> src) noexcept;
}; };
......
...@@ -144,6 +144,52 @@ PcmExport::GetOutputFrameSize() const noexcept ...@@ -144,6 +144,52 @@ PcmExport::GetOutputFrameSize() const noexcept
return GetInputFrameSize(); return GetInputFrameSize();
} }
size_t
PcmExport::GetInputBlockSize() const noexcept
{
#ifdef ENABLE_DSD
switch (dsd_mode) {
case DsdMode::NONE:
break;
case DsdMode::U16:
return dsd16_converter.GetInputBlockSize();
case DsdMode::U32:
return dsd32_converter.GetInputBlockSize();
break;
case DsdMode::DOP:
return dop_converter.GetInputBlockSize();
}
#endif
return GetInputFrameSize();
}
size_t
PcmExport::GetOutputBlockSize() const noexcept
{
#ifdef ENABLE_DSD
switch (dsd_mode) {
case DsdMode::NONE:
break;
case DsdMode::U16:
return dsd16_converter.GetOutputBlockSize();
case DsdMode::U32:
return dsd32_converter.GetOutputBlockSize();
break;
case DsdMode::DOP:
return dop_converter.GetOutputBlockSize();
}
#endif
return GetOutputFrameSize();
}
unsigned unsigned
PcmExport::Params::CalcOutputSampleRate(unsigned sample_rate) const noexcept PcmExport::Params::CalcOutputSampleRate(unsigned sample_rate) const noexcept
{ {
......
...@@ -199,6 +199,18 @@ public: ...@@ -199,6 +199,18 @@ public:
size_t GetOutputFrameSize() const noexcept; size_t GetOutputFrameSize() const noexcept;
/** /**
* @return the size of one input block in bytes
*/
gcc_pure
size_t GetInputBlockSize() const noexcept;
/**
* @return the size of one output block in bytes
*/
gcc_pure
size_t GetOutputBlockSize() const noexcept;
/**
* Export a PCM buffer. * Export a PCM buffer.
* *
* @param src the source PCM buffer * @param src the source PCM buffer
......
...@@ -48,6 +48,13 @@ public: ...@@ -48,6 +48,13 @@ public:
size = 0; size = 0;
} }
/**
* @return the size of one input block in #T samples
*/
size_t GetInputBlockSize() const noexcept {
return capacity;
}
unsigned GetChannelCount() const noexcept { unsigned GetChannelCount() const noexcept {
return capacity / n_frames; return capacity / n_frames;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment