renderer/decoder: simplified audio PCM transcode

Turned the two-step PCM transcode into one step and simplified/removed much of
the unnecessary infrastructure that supported it. This makes the code cleaner
and generally improves the code paths.
This commit is contained in:
itsmattkc
2020-05-03 16:07:10 +10:00
parent a925476c3f
commit e4c3b6bf7b
28 changed files with 275 additions and 763 deletions
+6 -3
View File
@@ -134,7 +134,6 @@ public:
virtual bool Probe(Footage *f, const QAtomicInt *cancelled) override;
virtual bool Open() override;
virtual RetrieveState GetRetrieveState(const rational &time) override;
virtual FramePtr RetrieveVideo(const rational &timecode, const int& divider) override;
virtual SampleBufferPtr RetrieveAudio(const rational &timecode, const rational &length, const AudioRenderingParams& params) override;
virtual void Close() override;
@@ -144,8 +143,8 @@ public:
virtual bool SupportsVideo() override;
virtual bool SupportsAudio() override;
virtual void ProxyVideo(const QAtomicInt* cancelled, int divider) override;
virtual void ProxyAudio(const QAtomicInt* cancelled) override;
virtual bool ProxyVideo(const QAtomicInt* cancelled, int divider) override;
virtual bool ConformAudio(const QAtomicInt* cancelled, const AudioRenderingParams& p) override;
private:
/**
@@ -176,6 +175,10 @@ private:
static int GetScaledDimension(int dim, int divider);
static PixelFormat::Format GetNativePixelFormat(AVPixelFormat pix_fmt);
static uint64_t ValidateChannelLayout(AVStream *stream);
SwsContext* scale_ctx_;
int scale_divider_;
AVPixelFormat src_pix_fmt_;