tor-browser

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

JavaCallbacksSupport.h (2069B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #ifndef JavaCallbacksSupport_h_
      6 #define JavaCallbacksSupport_h_
      7 
      8 #include "MediaCodec.h"
      9 #include "MediaResult.h"
     10 #include "mozilla/java/CodecProxyNatives.h"
     11 #include "mozilla/java/SampleBufferWrappers.h"
     12 #include "mozilla/java/SampleWrappers.h"
     13 
     14 namespace mozilla {
     15 
     16 class JavaCallbacksSupport
     17    : public java::CodecProxy::NativeCallbacks::Natives<JavaCallbacksSupport> {
     18 public:
     19  typedef java::CodecProxy::NativeCallbacks::Natives<JavaCallbacksSupport> Base;
     20  using Base::AttachNative;
     21  using Base::DisposeNative;
     22  using Base::GetNative;
     23 
     24  JavaCallbacksSupport() : mCanceled(false) {}
     25 
     26  virtual ~JavaCallbacksSupport() {}
     27 
     28  virtual void HandleInput(int64_t aTimestamp, bool aProcessed) = 0;
     29 
     30  void OnInputStatus(jlong aTimestamp, bool aProcessed) {
     31    if (!mCanceled) {
     32      HandleInput(aTimestamp, aProcessed);
     33    }
     34  }
     35 
     36  virtual void HandleOutput(java::Sample::Param aSample,
     37                            java::SampleBuffer::Param aBuffer) = 0;
     38 
     39  void OnOutput(jni::Object::Param aSample, jni::Object::Param aBuffer) {
     40    if (!mCanceled) {
     41      HandleOutput(java::Sample::Ref::From(aSample),
     42                   java::SampleBuffer::Ref::From(aBuffer));
     43    }
     44  }
     45 
     46  virtual void HandleOutputFormatChanged(
     47      java::sdk::MediaFormat::Param aFormat) {};
     48 
     49  void OnOutputFormatChanged(jni::Object::Param aFormat) {
     50    if (!mCanceled) {
     51      HandleOutputFormatChanged(java::sdk::MediaFormat::Ref::From(aFormat));
     52    }
     53  }
     54 
     55  virtual void HandleError(const MediaResult& aError) = 0;
     56 
     57  void OnError(bool aIsFatal) {
     58    if (!mCanceled) {
     59      HandleError(aIsFatal
     60                      ? MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__)
     61                      : MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR, __func__));
     62    }
     63  }
     64 
     65  void Cancel() { mCanceled = true; }
     66 
     67 private:
     68  Atomic<bool> mCanceled;
     69 };
     70 
     71 }  // namespace mozilla
     72 
     73 #endif