Re: chromium + foreign-cdm not working?

From: Jung-uk Kim <jkim_at_FreeBSD.org>
Date: Fri, 06 Oct 2023 20:15:32 UTC
On 23. 10. 4., Jung-uk Kim wrote:
> On 23. 10. 3., jonc@chen.org.nz wrote:
>> Hi,
>>
>> I noticed the inclusion of foreign-cdm support to www/chromium, and 
>> decided to try this out. However, any effort to play content from 
>> Netflix results in a failure. I've got: linux_enable="YES" in 
>> /etc/rc.conf, and the port pulls in linux-base-c7 as well. The 
>> chromium logs from stdout all end with:
>>
>> lib.cpp:80: info: CreateSessionAndGenerateRequest; promise_id = 3; 
>> session_type = 0; init_data_type = 0; init_data = 1bb11863200; 
>> init_data_size = 52
>> worker.cpp:240: info: createSessionAndGenerateRequest
>> *** Fatal uncaught kj::Exception: worker.cpp:546: unimplemented: 
>> CreateFileIO
>> *** Fatal uncaught kj::Exception: capnp/rpc.c++:2778: disconnected: 
>> Peer disconnected.
>> stack: 1bb18037f18 1bb1802c580 1bb1816a310
>> [34603:-692588544:1004/072526.678703:ERROR:mojo_cdm.cc(118)] Remote 
>> CDM connection error: custom_reason=0, description=""
>>
>> Any ideas on how to get this working?
> 
> It seems foreign-cdm is missing many important functions.  For example, 
> Amazon Prime Video and Disney+ require GetStatusForPolicy and Netflix 
> requires CreateFileIO.
> 
> https://github.com/shkhln/foreign-cdm/blob/760e440839f4456373460dcb61cfa8e36618d310/src/lib.cpp#L65
> https://github.com/shkhln/foreign-cdm/blob/760e440839f4456373460dcb61cfa8e36618d310/src/worker.cpp#L545
FYI, the author added the missing wrappers.  With the latest upstream 
version, Amazon Prime Video, Disney+, Hulu, and Netflix are working fine 
for me now.

https://github.com/shkhln/foreign-cdm/issues/3

https://github.com/shkhln/foreign-cdm/commit/4a4990d92731a05b2395cb17cad21d9f684e5355
https://github.com/shkhln/foreign-cdm/commit/71711f1876fc966ef6712e6ee91ecc25a1bda0ce
https://github.com/shkhln/foreign-cdm/commit/e953bc0d35344b7e4474969ed37f4e0f9be01451

Jung-uk Kim