tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

AudioTrimmer.h (2028B)


      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim:set ts=2 sw=2 sts=2 et cindent: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #if !defined(AudioTrimmer_h_)
      8 #  define AudioTrimmer_h_
      9 
     10 #  include "PlatformDecoderModule.h"
     11 #  include "mozilla/Mutex.h"
     12 
     13 namespace mozilla {
     14 
     15 DDLoggedTypeDeclNameAndBase(AudioTrimmer, MediaDataDecoder);
     16 
     17 class AudioTrimmer final : public MediaDataDecoder {
     18 public:
     19  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(AudioTrimmer, final);
     20 
     21  explicit AudioTrimmer(already_AddRefed<MediaDataDecoder> aDecoder)
     22      : mDecoder(aDecoder) {}
     23 
     24  RefPtr<InitPromise> Init() override;
     25  RefPtr<DecodePromise> Decode(MediaRawData* aSample) override;
     26  bool CanDecodeBatch() const override { return mDecoder->CanDecodeBatch(); }
     27  RefPtr<DecodePromise> DecodeBatch(
     28      nsTArray<RefPtr<MediaRawData>>&& aSamples) override;
     29  RefPtr<DecodePromise> Drain() override;
     30  RefPtr<FlushPromise> Flush() override;
     31  RefPtr<ShutdownPromise> Shutdown() override;
     32  nsCString GetDescriptionName() const override;
     33  nsCString GetProcessName() const override;
     34  nsCString GetCodecName() const override;
     35  bool IsHardwareAccelerated(nsACString& aFailureReason) const override;
     36  void SetSeekThreshold(const media::TimeUnit& aTime) override;
     37  bool SupportDecoderRecycling() const override;
     38  bool ShouldDecoderAlwaysBeRecycled() const override;
     39  ConversionRequired NeedsConversion() const override;
     40 
     41 private:
     42  ~AudioTrimmer() = default;
     43 
     44  // Apply trimming information on decoded data.
     45  RefPtr<DecodePromise> HandleDecodedResult(
     46      DecodePromise::ResolveOrRejectValue&& aValue);
     47  void PrepareTrimmers(MediaRawData* aRaw);
     48  const RefPtr<MediaDataDecoder> mDecoder;
     49  nsCOMPtr<nsISerialEventTarget> mThread;
     50  AutoTArray<Maybe<media::TimeInterval>, 2> mTrimmers;
     51 };
     52 
     53 }  // namespace mozilla
     54 
     55 #endif  // AudioTrimmer_h_