try this?

вс, 27 авг. 2023 г., 19:10 Andrea paz <gamberucci.and...@gmail.com>:

> I tried to install the two patches but failed. It tells me:
> Failed do not recognize patch format
>
> Could you post them as a .patch?
>
From 55af487ef138e1cba24a4d08ff0e1025ee94d6cb Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <randrianas...@gmail.com>
Date: Sun, 27 Aug 2023 19:03:16 +0300
Subject: [PATCH] Add selectable vaapi devices

---
 cinelerra-5.1/cinelerra/ffmpeg.C | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C
index 4923eded..e95cc87e 100644
--- a/cinelerra-5.1/cinelerra/ffmpeg.C
+++ b/cinelerra-5.1/cinelerra/ffmpeg.C
@@ -1160,7 +1160,14 @@ int FFVideoStream::decode_hw_format(AVCodec *decoder, AVHWDeviceType type)
 	if( hw_pix_fmt >= 0 ) {
 		hw_pixfmt = hw_pix_fmt;
 		avctx->get_format  = get_hw_format;
+		const char *drm_node = getenv("CIN_DRM_DEC");
+		if(drm_node && type==AV_HWDEVICE_TYPE_VAAPI) {
+		    ret = av_hwdevice_ctx_create(&hw_device_ctx, type, drm_node, 0, 0);
+		}
+		else {
 		ret = av_hwdevice_ctx_create(&hw_device_ctx, type, 0, 0, 0);
+		}
+
 		if( ret >= 0 ) {
 			avctx->hw_device_ctx = av_buffer_ref(hw_device_ctx);
 			ret = 1;
@@ -1176,6 +1183,7 @@ int FFVideoStream::decode_hw_format(AVCodec *decoder, AVHWDeviceType type)
 
 AVHWDeviceType FFVideoStream::encode_hw_activate(const char *hw_dev)
 {
+	const char *drm_node_enc = getenv("CIN_DRM_ENC");
 	AVBufferRef *hw_device_ctx = 0;
 	AVBufferRef *hw_frames_ref = 0;
 	AVHWDeviceType type = AV_HWDEVICE_TYPE_NONE;
@@ -1187,7 +1195,12 @@ AVHWDeviceType FFVideoStream::encode_hw_activate(const char *hw_dev)
 		}
 	}
 	if( type != AV_HWDEVICE_TYPE_NONE ) {
-		int ret = av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_VAAPI, 0, 0, 0);
+		int ret = 0;
+		if (drm_node_enc) {
+		ret = av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_VAAPI, drm_node_enc, 0, 0);
+		} else {
+		ret = av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_VAAPI, 0, 0, 0);
+		}
 		if( ret < 0 ) {
 			ff_err(ret, "Failed to create a HW device.\n");
 			type = AV_HWDEVICE_TYPE_NONE;
-- 
2.35.7

-- 
Cin mailing list
Cin@lists.cinelerra-gg.org
https://lists.cinelerra-gg.org/mailman/listinfo/cin

Reply via email to