diff --git a/src/app/app_settings.h b/src/app/app_settings.h index 546dccdcf..dfbf2ce1c 100644 --- a/src/app/app_settings.h +++ b/src/app/app_settings.h @@ -49,6 +49,7 @@ typedef struct app_settings_t { bool syskey_capture; bool hdr; bool hevc; + bool av1; char *conf_dir; char *ini_path; diff --git a/src/app/stream/session.c b/src/app/stream/session.c index cbe8bce07..e7f5c0532 100644 --- a/src/app/stream/session.c +++ b/src/app/stream/session.c @@ -231,6 +231,12 @@ void session_config_init(app_t *app, session_config_t *config, const SERVER_DATA config->stream.supportedVideoFormats |= VIDEO_FORMAT_H265_MAIN10; } } + if (app_config->av1 && video_cap.codecs & SS4S_VIDEO_AV1) { + config->stream.supportedVideoFormats |= VIDEO_FORMAT_AV1_MAIN8; + if (app_config->hdr && video_cap.hdr) { + config->stream.supportedVideoFormats |= VIDEO_FORMAT_AV1_MAIN10; + } + } config->stream.colorSpace = COLORSPACE_REC_709/* TODO: get from video capabilities */; config->stream.colorRange = video_cap.fullColorRange ? COLOR_RANGE_FULL : COLOR_RANGE_LIMITED; #if FEATURE_SURROUND_SOUND diff --git a/src/app/stream/video/session_video.c b/src/app/stream/video/session_video.c index 4896c15e3..1483aac11 100644 --- a/src/app/stream/video/session_video.c +++ b/src/app/stream/video/session_video.c @@ -87,6 +87,10 @@ int vdec_delegate_setup(int videoFormat, int width, int height, int redrawRate, case VIDEO_FORMAT_H265_MAIN10: info.codec = SS4S_VIDEO_H265; break; + case VIDEO_FORMAT_AV1_MAIN8: + case VIDEO_FORMAT_AV1_MAIN10: + info.codec = SS4S_VIDEO_AV1; + break; default: { commons_log_error("Session", "Unsupported codec %s", vdec_stream_info.format); return CALLBACKS_SESSION_ERROR_VDEC_UNSUPPORTED; diff --git a/third_party/ss4s b/third_party/ss4s index 6945a584f..a94ea21af 160000 --- a/third_party/ss4s +++ b/third_party/ss4s @@ -1 +1 @@ -Subproject commit 6945a584f735f4d5e857bb861dce4d8dbc99d0e9 +Subproject commit a94ea21af3bdfd3157dc8fbd7697cf2484d845ea