audio_sampler.h 834 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #pragma once
  2. #include "defs.h"
  3. namespace ffmpeg {
  4. /**
  5. * Class transcode audio frames from one format into another
  6. */
  7. class AudioSampler : public MediaSampler {
  8. public:
  9. explicit AudioSampler(void* logCtx);
  10. ~AudioSampler() override;
  11. // MediaSampler overrides
  12. bool init(const SamplerParameters& params) override;
  13. int sample(const ByteStorage* in, ByteStorage* out) override;
  14. void shutdown() override;
  15. int sample(AVFrame* frame, ByteStorage* out);
  16. private:
  17. // close resources
  18. void cleanUp();
  19. // helper functions for rescaling, cropping, etc.
  20. int numOutputSamples(int inSamples) const;
  21. int sample(
  22. const uint8_t* inPlanes[],
  23. int inNumSamples,
  24. ByteStorage* out,
  25. int outNumSamples);
  26. private:
  27. SwrContext* swrContext_{nullptr};
  28. void* logCtx_{nullptr};
  29. };
  30. } // namespace ffmpeg