23 #if defined(MEDIA_HUB_HAVE_HYBRIS_MEDIA_COMPAT_LAYER)
24 #include <hybris/media/media_recorder_layer.h>
26 struct media::HybrisRecorderObserver::Private
30 std::weak_ptr<media::HybrisRecorderObserver::Private> wp;
34 static void on_media_recording_state_changed(
bool started,
void* context)
36 if (
auto holder = static_cast<Holder*>(context))
38 if (
auto sp = holder->wp.lock())
47 MediaRecorderObserver* observer
49 android_media_recorder_observer_new()
63 media::HybrisRecorderObserver::HybrisRecorderObserver() : d{
new Private{}}
65 android_media_recorder_observer_set_cb(
67 &Private::on_media_recording_state_changed,
68 d->holder =
new Private::Holder{d});
74 android_media_recorder_observer_set_cb(
76 &Private::on_media_recording_state_changed,
84 return d->recording_state;
91 #else // MEDIA_HUB_HAVE_HYBRIS_MEDIA_COMPAT_LAYER
94 throw std::logic_error
96 "Hybris-based recorder observer implementation not supported on this platform."
99 #endif // MEDIA_HUB_HAVE_HYBRIS_MEDIA_COMPAT_LAYER