35#ifndef CouplerDeEmbedFilter_h
36#define CouplerDeEmbedFilter_h
46 , m_groupDelaySamples(0)
48 m_resampledSparamSines.SetName(
"CouplerSParameters.m_resampledSparamSines");
49 m_resampledSparamCosines.SetName(
"CouplerSParameters.m_resampledSparamCosines");
61 if( (m_magKey !=
wmag) || (m_angleKey != wang) )
83 m_resampledSparamCosines.
clear();
84 m_resampledSparamSines.
clear();
88 m_groupDelaySamples =
ceil( m_groupDelayFs / timescale );
92 if(
static_cast<size_t>(
llabs(m_groupDelaySamples)) >= npoints)
95 m_groupDelaySamples = 0;
117 double m_cachedBinSize;
129 virtual void Refresh(vk::raii::CommandBuffer& cmdBuf, std::shared_ptr<QueueHandle> queue)
override;
132 static std::string GetProtocolName();
139 vk::raii::CommandBuffer& cmdBuf,
150 vk::raii::CommandBuffer& cmdBuf,
151 std::unique_ptr<VulkanFFTPlan>&
plan,
168 std::string m_maxGainName;
176 float m_cachedMaxGain;
178 size_t m_cachedNumPoints;
190 std::unique_ptr<VulkanFFTPlan> m_vkForwardPlan;
191 std::unique_ptr<VulkanFFTPlan> m_vkForwardPlan2;
193 std::unique_ptr<VulkanFFTPlan> m_vkReversePlan;
Declaration of DeEmbedFilter.
Definition AcceleratorBuffer.h:204
void clear()
Resize the container to be empty (but don't free memory)
Definition AcceleratorBuffer.h:703
Encapsulates a Vulkan compute pipeline and all necessary resources to use it.
Definition ComputePipeline.h:55
Definition CouplerDeEmbedFilter.h:124
void GroupDelayCorrection(CouplerSParameters ¶ms, size_t &istart, size_t &iend, int64_t &phaseshift, bool invert)
Calculate bounds for the meaningful output data. Since we're phase shifting, there's gonna be some ga...
Definition CouplerDeEmbedFilter.cpp:361
virtual uint32_t GetExecutionCapabilitiesMask() override
Returns a bitmask of ExecutionCapabilities fields.
Definition CouplerDeEmbedFilter.cpp:141
void GenerateScalarOutput(vk::raii::CommandBuffer &cmdBuf, std::unique_ptr< VulkanFFTPlan > &plan, size_t istart, size_t iend, WaveformBase *refin, size_t stream, size_t npoints, int64_t phaseshift, AcceleratorBuffer< float > &samplesIn, AcceleratorBuffer< float > &samplesOut)
Generates a scalar output from a complex input.
Definition CouplerDeEmbedFilter.cpp:383
void ForwardPath(vk::raii::CommandBuffer &cmdBuf, AcceleratorBuffer< float > &samplesInP, AcceleratorBuffer< float > &samplesInN, AcceleratorBuffer< float > &samplesOut, CouplerSParameters ¶msA, CouplerSParameters ¶msB, CouplerSParameters ¶msC, size_t npoints, size_t nouts)
Forward de-embedding path.
Definition CouplerDeEmbedFilter.cpp:437
Definition CouplerDeEmbedFilter.h:41
void Refresh(WaveformBase *wmag, WaveformBase *wang, double bin_hz, bool invert, size_t nouts, float maxGain, int64_t timescale, size_t npoints)
Refresh the cached data.
Definition CouplerDeEmbedFilter.h:69
virtual int64_t GetGroupDelay()
Returns the max mid-band group delay of the channel.
Definition CouplerDeEmbedFilter.cpp:474
bool NeedUpdate(WaveformBase *wmag, WaveformBase *wang, double bin_hz)
Check to see if we need to refresh our cache.
Definition CouplerDeEmbedFilter.h:55
void InterpolateSparameters(WaveformBase *wmag, WaveformBase *wang, float bin_hz, bool invert, size_t nouts, float maxGain)
Recalculate the cached S-parameters (and clamp gain if requested)
Definition CouplerDeEmbedFilter.cpp:492
Abstract base class for all filter graph blocks which are not physical instrument channels.
Definition Filter.h:105
A single S-parameter array.
Definition SParameters.h:75