This mostly works for me over DLNA with a Mac.
It does occasionally crash. The crash is IN the Dirac plugin.
I tested to a local zone, an Id and my Oppo 103.
I'm using the Audiophile 24 Bit Dac template for the DLNA server.
Set the DSP studio in there to use the Dirac plugin.
Put in a test filter that makes the sound obviously bad.
Right click on my Oppo zone, choose DLNA Controller options and Associate that Oppo zone with the Audiophile 24 Bit Dac DLNA server.
My audio path works for the most part, but not always, but the effect is applied every time.
Attached is a playback screenshot. Also the crash info in case that does anyone that writes that plugin any good.
Process: Media Center 28 [4170]
Path: /Applications/Media Center 28.app/Contents/MacOS/Media Center 28
Identifier: com.jriver.MediaCenter28
Version: 28.0.41 (2245)
Code Type: X86-64 (Native)
Parent Process: ? [1]
Responsible: Media Center 28 [4170]
User ID: 501
Date/Time: 2021-07-16 17:25:22.483 -0500
OS Version: Mac OS X 10.15.7 (19H114)
Report Version: 12
Anonymous UUID: 9E60EB76-5E84-83BA-CCA0-970EA74AE025
Time Awake Since Boot: 25000 seconds
System Integrity Protection: enabled
Crashed Thread: 40
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000098
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [4170]
....
Thread 40 Crashed:
0 com.dirac.plugin.DiracLiveProcessor 0x0000000119c3db01 asio::detail::kqueue_reactor::start_op(int, int, asio::detail::kqueue_reactor::descriptor_state*&, asio::detail::reactor_op*, bool, bool) + 97
1 com.dirac.plugin.DiracLiveProcessor 0x0000000119c5bb15 asio::detail::reactive_socket_service_base::start_accept_op(asio::detail::reactive_socket_service_base::base_implementation_type&, asio::detail::reactor_op*, bool, bool) + 165
2 com.dirac.plugin.DiracLiveProcessor 0x0000000119c5b40b (anonymous namespace)::ServerImpl::do_accept() + 395
3 com.dirac.plugin.DiracLiveProcessor 0x0000000119c5c165 asio::detail::binder1<(anonymous namespace)::ServerImpl::do_accept()::'lambda'(std::__1::error_code), std::__1::error_code>::operator()() + 37
4 com.dirac.plugin.DiracLiveProcessor 0x0000000119c5bd72 asio::detail::reactive_socket_accept_op<asio::basic_socket<asio::ip::tcp, asio::execution::any_executor<asio::execution::context_as_t<asio::execution_context&>, asio::execution::detail::blocking::never_t<0>, asio::execution::prefer_only<asio::execution::detail::blocking::possibly_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::tracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::untracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::fork_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::continuation_t<0> > > >, asio::ip::tcp, (anonymous namespace)::ServerImpl::do_accept()::'lambda'(std::__1::error_code), asio::execution::any_executor<asio::execution::context_as_t<asio::execution_context&>, asio::execution::detail::blocking::never_t<0>, asio::execution::prefer_only<asio::execution::detail::blocking::possibly_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::tracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::untracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::fork_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::continuation_t<0> > > >::do_complete(void*, asio::detail::scheduler_operation*, std::__1::error_code const&, unsigned long) + 514
5 com.dirac.plugin.DiracLiveProcessor 0x0000000119c35f96 asio::detail::scheduler::do_run_one(asio::detail::conditionally_enabled_mutex::scoped_lock&, asio::detail::scheduler_thread_info&, std::__1::error_code const&) + 806
6 com.dirac.plugin.DiracLiveProcessor 0x0000000119c35a92 asio::detail::scheduler::run(std::__1::error_code&) + 226
7 com.dirac.plugin.DiracLiveProcessor 0x0000000119c5cc24 std::__1::__async_assoc_state<void, std::__1::__async_func<(anonymous namespace)::ServerImpl::ServerImpl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::'lambda'()> >::__execute() + 52
8 com.dirac.plugin.DiracLiveProcessor 0x0000000119c5cd3e void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (std::__1::__async_assoc_state<void, std::__1::__async_func<(anonymous namespace)::ServerImpl::ServerImpl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::'lambda'()> >::*)(), std::__1::__async_assoc_state<void, std::__1::__async_func<(anonymous namespace)::ServerImpl::ServerImpl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::'lambda'()> >*> >(void*) + 62
9 libsystem_pthread.dylib 0x00007fff6ba12109 _pthread_start + 148
10 libsystem_pthread.dylib 0x00007fff6ba0db8b thread_start + 15