// Copyright © 2021-present 650 Industries, Inc. (aka Expo) #pragma once #include #include #include namespace expo { namespace av { namespace jni = facebook::jni; using SampleBufferCallback = std::function, double)>; class JPlayerData : public jni::HybridClass { public: static auto constexpr kJavaDescriptor = "Lexpo/modules/av/player/PlayerData;"; static auto constexpr TAG = "JPlayerData"; static jni::local_ref initHybrid(jni::alias_ref jThis); static void registerNatives(); void setSampleBufferCallback(const SampleBufferCallback &&sampleBufferCallback); void unsetSampleBufferCallback(); private: friend HybridBase; jni::global_ref javaPart_; SampleBufferCallback sampleBufferCallback_; void sampleBufferCallback(jni::alias_ref sampleBuffer, jdouble positionSeconds); void setEnableSampleBufferCallback(bool enable); explicit JPlayerData(jni::alias_ref jThis) : javaPart_(jni::make_global(jThis)), sampleBufferCallback_(nullptr) {} }; } // namespace av } // namespace expo