weltenwort / frigate-synology-dsm7

Dockerfile and docker-compose file to enable google coral USB accelerators in containers on Synology DSM 7
MIT License
119 stars 18 forks source link

Update docker-compose.yml #55

Closed Caros2017 closed 2 years ago

Caros2017 commented 2 years ago

It can solve hwacl problem is the iHD driver isn't working correcly with jellyfin-ffmpeg (issue: https://github.com/blakeblackshear/frigate/issues/3227). Seem to occur on Intel based processors, which are most seen in Synology.

weltenwort commented 2 years ago

Thanks for this and the extensive investigation that was required to arrive at this solution. I wonder if it would make sense to include the env var in the docker image definition itself. :thinking: Any pros/cons that you can think of?

baylanger commented 2 years ago

Thanks for this and the extensive investigation that was required to arrive at this solution. I wonder if it would make sense to include the env var in the docker image definition itself. 🤔 Any pros/cons that you can think of?

I'm not sure what CPU / hwaccel is available in all Synology variants... but was able to find the official list from Synology. [edit] Actually GPU information is what is needed here, not CPU.

Is there a command that can be run to determine what's available? While this variable is required for the 720/920, I'm just not 100% positive i965 is the answer to all Synology.

baylanger commented 2 years ago

Actually... as reporter by @Caros2017 in the other thread - is "vainfo" the answer?

It's on stderr ...

# vainfo > /dev/null
libva info: VA-API version 1.15.0
libva info: User environment variable requested driver 'i965'
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_15
libva info: va_openDriver() returns 0

Is that "return 0" enough? We'd need a non i965 NAS to test?

baylanger commented 2 years ago

^^^ Edited ^^^

Second thought... the previous line "vaDriverInit_1_15" - that means the driver was able to get initialized. Seems the next line would not return 0 if that vaDriverInit_1_15 had failed. 🤔

Caros2017 commented 2 years ago

It returns a -1 on error. 0 somehow is good here

Caros2017 commented 2 years ago

Thanks for this and the extensive investigation that was required to arrive at this solution. I wonder if it would make sense to include the env var in the docker image definition itself. 🤔 Any pros/cons that you can think of?

I was doubting also if this was the right place. I can also make it as comment and that you need to uncomment it if you are running into problems.

I don't have really other places here to put it otherwise. I already made a PR for the beta Frigate documentation.

There will be processors (in the future or now already) which will work on iHD ofcourse. But the main question is: don't they also work on i965?

weltenwort commented 2 years ago

Good points. I suspect auto-detection might be too brittle to be of real benefit. Maybe the compose file is the correct place after all as this is the easiest way for the user to try it out. When we hear about models for which i965 is not the correct driver we can add a model compatibility table to the README or provide specialized compose files.

As it stands I think merging this makes sense. So thanks again and let me know if you can think of any further improvement!