From 9fd0a94c9f85e2dbec6ff8ac3f219332abf95ebd Mon Sep 17 00:00:00 2001 From: Exuvo Date: Fri, 11 Mar 2022 13:37:27 +0100 Subject: [PATCH] Add support for vp9 and av1 encoding --- src/zm_videostore.cpp | 2 ++ web/skins/classic/views/js/monitor.js | 12 ++++++++++++ web/skins/classic/views/monitor.php | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/src/zm_videostore.cpp b/src/zm_videostore.cpp index 249ff222a..777d7a81a 100644 --- a/src/zm_videostore.cpp +++ b/src/zm_videostore.cpp @@ -56,6 +56,8 @@ VideoStore::CodecData VideoStore::codec_data[] = { { AV_CODEC_ID_H264, "h264", "libx264", AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV420P }, { AV_CODEC_ID_MJPEG, "mjpeg", "mjpeg", AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ422P }, #endif + { AV_CODEC_ID_VP9, "vp9", "libvpx-vp9", AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV420P, AV_HWDEVICE_TYPE_NONE }, + { AV_CODEC_ID_AV1, "av1", "libsvtav1", AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV420P, AV_HWDEVICE_TYPE_NONE }, }; VideoStore::VideoStore( diff --git a/web/skins/classic/views/js/monitor.js b/web/skins/classic/views/js/monitor.js index daeedc5aa..262725113 100644 --- a/web/skins/classic/views/js/monitor.js +++ b/web/skins/classic/views/js/monitor.js @@ -189,12 +189,24 @@ function initPage() { encoder_dropdown[0].options[0].selected = 1; option.selected = false; } + } else if ( this.value == 167 /* vp9 */ ) { + option.disabled = !(option.value.includes('vp9')); + if ( option.disabled && option.selected ) { + encoder_dropdown[0].options[0].selected = 1; + option.selected = false; + } } else if ( this.value == 173 /* hevc */ ) { option.disabled = !(option.value.includes('hevc') || option.value.includes('265') ); if ( option.disabled && option.selected ) { encoder_dropdown[0].options[0].selected = 1; option.selected = false; } + } else if ( this.value == 226 /* av1 */ ) { + option.disabled = !(option.value.includes('av1')); + if ( option.disabled && option.selected ) { + encoder_dropdown[0].options[0].selected = 1; + option.selected = false; + } } else { option.disabled = false; } diff --git a/web/skins/classic/views/monitor.php b/web/skins/classic/views/monitor.php index 52cbe0807..557e24922 100644 --- a/web/skins/classic/views/monitor.php +++ b/web/skins/classic/views/monitor.php @@ -1039,6 +1039,8 @@ $videowriter_codecs = array( '0' => translate('Auto'), '27' => 'h264', '173' => 'h265/hevc', + '167' => 'vp9', + '226' => 'av1', ); echo htmlSelect('newMonitor[OutputCodec]', $videowriter_codecs, $monitor->OutputCodec()); ?> @@ -1058,6 +1060,8 @@ $videowriter_encoders = array( 'libx265' => 'libx265', 'hevc_nvenc' => 'hevc_nvenc', 'hevc_vaapi' => 'hevc_vaapi', + 'libvpx-vp9' => 'libvpx-vp9', + 'libsvtav1' => 'libsvtav1', ); echo htmlSelect('newMonitor[Encoder]', $videowriter_encoders, $monitor->Encoder());?>