mirror of
				https://github.com/jojo61/vdr-plugin-softhdcuvid.git
				synced 2025-03-01 10:39:28 +00:00 
			
		
		
		
	README update
This commit is contained in:
		
							
								
								
									
										404
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										404
									
								
								README.md
									
									
									
									
									
								
							| @@ -1 +1,403 @@ | ||||
| # vdr-plugin-softhdcuvid | ||||
| @file README.txt		@brief A software HD output device for VDR | ||||
|  | ||||
| Copyright (c) 2011 - 2013 by Johns.  All Rights Reserved. | ||||
| Copyright (c) 2018 by jojo61.  All Rights Reserved. | ||||
|  | ||||
| Contributor(s): | ||||
|  | ||||
| jojo61  | ||||
|  | ||||
| License: AGPLv3 | ||||
|  | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU Affero General Public License as | ||||
| published by the Free Software Foundation, either version 3 of the | ||||
| License. | ||||
|  | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU Affero General Public License for more details. | ||||
|  | ||||
| $Id: 5267da021a68b4a727b479417334bfbe67bbba14 $ | ||||
|  | ||||
| A software and GPU emulated HD output device plugin for VDR. | ||||
|  | ||||
|     o Video decoder CPU / VDPAU | ||||
|     o Video output opengl | ||||
|     o Audio FFMpeg / Alsa / Analog | ||||
|     o Audio FFMpeg / Alsa / Digital | ||||
|     o Audio FFMpeg / OSS / Analog | ||||
|     o HDMI/SPDIF pass-through | ||||
|     o Software volume, compression, normalize and channel resample | ||||
|     o VDR ScaleVideo API | ||||
|     o CUDA deinterlacer  | ||||
|     o Autocrop | ||||
|     o Suspend / Dettach | ||||
|     o PIP (Picture-in-Picture) (not working yet) | ||||
|  | ||||
|  | ||||
| To compile you must have the 'requires' installed.  | ||||
|  | ||||
|  | ||||
| This is a fork of johns original softhddevice work and I reworked ist to support HEVC with CUDA and opengl output. | ||||
| Currently I have tested it with a GTX 1050 from NVIDIA. HD and UHD ist working, but SD ist instable. | ||||
|  | ||||
| Current Status NVIDA: | ||||
| The CUDA driver supports HEVC with 8 Bit and 10 Bit up to UHD resolution. Opengl is able to output also 10 Bit, but NVIDIA does not support to output 10 Bit via HDMI. | ||||
| Only via DisplayPort you can get 10 Bit output to a ompatible screen. Thias is a restriction from NVIDIA. | ||||
|  | ||||
|  | ||||
| You have to adapt the Makefile to your needs. I use FFMPEG 4.0  | ||||
| The Makefile expects the CUDA SDK in /usr/local/cuda. Currently it is tested with CUDA 9.1 | ||||
|  | ||||
| Unfortunatly FFMEG has a bug with deinterlacing cuda frames. So you have to patch the file in libavcodec/cuviddec.c | ||||
|  | ||||
| Somewhere near line 360 depending on your release: | ||||
| old: | ||||
|      ctx->frame_queue = av_fifo_alloc(ctx->nb_surfaces * sizeof(CuvidParsedFrame)); | ||||
|  | ||||
| new: | ||||
|      ctx->frame_queue = av_fifo_alloc((ctx->nb_surfaces + 2 ) * sizeof(CuvidParsedFrame)); | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| Good luck | ||||
| jojo61 | ||||
|  | ||||
| Quickstart: | ||||
| ----------- | ||||
|  | ||||
| Just type make and use. | ||||
|  | ||||
| Install: | ||||
| -------- | ||||
| 	1a) git | ||||
|  | ||||
| 	git clone git://github.com/jojo61/vdr-plugin-softhdcuvid.git | ||||
| 	cd vdr-plugin-softhdcuvid | ||||
| 	make | ||||
| 	make install | ||||
|  | ||||
| 	You can edit Makefile to enable/disable  Alsa / OSS | ||||
| 	support.  The default is to autodetect as much as possible. | ||||
|  | ||||
| 	You have to start vdr with -P 'softhdcuvid -d :0.0  ..<more option>..  -v cuvid' | ||||
|  | ||||
|  | ||||
| Setup:	environment | ||||
| ------ | ||||
| 	Following is supported: | ||||
|  | ||||
| 	DISPLAY=:0.0 | ||||
| 		x11 display name | ||||
|  | ||||
|     only if alsa is configured | ||||
| 	ALSA_DEVICE=default | ||||
| 		alsa PCM device name | ||||
| 	ALSA_PASSTHROUGH_DEVICE= | ||||
| 		alsa pass-though (AC-3,E-AC-3,DTS,...) device name | ||||
| 	ALSA_MIXER=default | ||||
| 		alsa control device name | ||||
| 	ALSA_MIXER_CHANNEL=PCM | ||||
| 		alsa control channel name | ||||
|  | ||||
|     only if oss is configured | ||||
| 	OSS_AUDIODEV=/dev/dsp | ||||
| 		oss dsp device name | ||||
| 	OSS_PASSTHROUGHDEV= | ||||
| 		oss pass-though (AC-3,E-AC-3,DTS,...) device name | ||||
| 	OSS_MIXERDEV=/dev/mixer | ||||
| 		oss mixer device name | ||||
| 	OSS_MIXER_CHANNEL=pcm | ||||
| 		oss mixer channel name | ||||
|  | ||||
| Setup: /etc/vdr/setup.conf | ||||
| ------ | ||||
| 	Following is supported: | ||||
|  | ||||
| 	softhddevice.MakePrimary = 0 | ||||
| 	0 = no change, 1 make softhddevice primary at start | ||||
|  | ||||
| 	softhddevice.HideMainMenuEntry = 0 | ||||
| 	0 = show softhddevice main menu entry, 1 = hide entry | ||||
|  | ||||
| 	softhddevice.Osd.Width = 0 | ||||
| 	0 = auto (=display, unscaled) n = fixed osd size scaled for display | ||||
| 	softhddevice.Osd.Height = 0 | ||||
| 	0 = auto (=display, unscaled) n = fixed osd size scaled for display | ||||
|  | ||||
| 	<res> of the next parameters is 576i, 720p, 1080i_fake or 1080i. | ||||
| 	1080i_fake is 1280x1080 or 1440x1080 | ||||
| 	1080i is "real" 1920x1080 | ||||
|  | ||||
| 	softhddevice.<res>.Scaling = 0 | ||||
| 	0 = normal, 1 = fast, 2 = HQ, 3 = anamorphic | ||||
|  | ||||
| 	softhddevice.<res>.Deinterlace = 0 | ||||
| 	0 = bob, 1 = weave, 2 = temporal, 3 = temporal_spatial, 4 = software | ||||
| 	(only 0, 1, 4 supported with VA-API) | ||||
|  | ||||
| 	softhddevice.<res>.SkipChromaDeinterlace = 0 | ||||
| 	0 = disabled, 1 = enabled (for slower cards, poor qualit<69>t) | ||||
|  | ||||
| 	softhddevice.<res>.InverseTelecine = 0 | ||||
| 	0 = disabled, 1 = enabled | ||||
|  | ||||
| 	softhddevice.<res>.Denoise = 0 | ||||
| 	0 .. 1000 noise reduction level (0 off, 1000 max) | ||||
|  | ||||
| 	softhddevice.<res>.Sharpness = 0 | ||||
| 	-1000 .. 1000 noise reduction level (0 off, -1000 max blur, | ||||
| 	    1000 max sharp) | ||||
|  | ||||
| 	softhddevice.<res>.CutTopBottom = 0 | ||||
| 	Cut 'n' pixels at at top and bottom of the video picture. | ||||
|  | ||||
| 	softhddevice.<res>.CutLeftRight = 0 | ||||
| 	Cut 'n' pixels at at left and right of the video picture. | ||||
|  | ||||
| 	softhddevice.AudioDelay = 0 | ||||
| 	+n or -n ms | ||||
| 	delay audio or delay video | ||||
|  | ||||
| 	softhddevice.AudioPassthrough = 0 | ||||
| 	0 = none, 1 = PCM, 2 = MPA, 4 = AC-3, 8 = EAC-3, -X disable | ||||
|  | ||||
| 	for PCM/AC-3/EAC-3 the pass-through device is used and the audio | ||||
| 	stream is passed undecoded to the output device. | ||||
| 	z.b. 12 = AC-3+EAC-3, 13 = PCM+AC-3+EAC-3 | ||||
| 	note: MPA/DTS/TrueHD/... aren't supported yet | ||||
| 	negative values disable passthrough | ||||
|  | ||||
| 	softhddevice.AudioDownmix = 0 | ||||
| 	0 = none, 1 = downmix | ||||
| 	Use ffmpeg/libav downmix of AC-3/EAC-3 audio to stereo. | ||||
|  | ||||
| 	softhddevice.AudioSoftvol = 0 | ||||
| 	0 = off, use hardware volume control | ||||
| 	1 = on, use software volume control | ||||
|  | ||||
| 	softhddevice.AudioNormalize = 0 | ||||
| 	0 = off, 1 = enable audio normalize | ||||
|  | ||||
| 	softhddevice.AudioMaxNormalize = 0 | ||||
| 	maximal volume factor/1000 of the normalize filter | ||||
|  | ||||
| 	softhddevice.AudioCompression = 0 | ||||
| 	0 = off, 1 = enable audio compression | ||||
|  | ||||
| 	softhddevice.AudioMaxCompression = 0 | ||||
| 	maximal volume factor/1000 of the compression filter | ||||
|  | ||||
| 	softhddevice.AudioStereoDescent = 0 | ||||
| 	reduce volume level (/1000) for stereo sources | ||||
|  | ||||
| 	softhddevice.AudioBufferTime = 0 | ||||
| 	0 = default (336 ms) | ||||
| 	1 - 1000 = size of the buffer in ms | ||||
|  | ||||
| 	softhddevice.AutoCrop.Interval = 0 | ||||
| 	0 disables auto-crop | ||||
| 	n each 'n' frames auto-crop is checked. | ||||
|  | ||||
| 	softhddevice.AutoCrop.Delay = 0 | ||||
| 	if auto-crop is over 'n' intervals the same, the cropping is | ||||
| 	used. | ||||
|  | ||||
| 	softhddevice.AutoCrop.Tolerance = 0 | ||||
| 	if detected crop area is too small, cut max 'n' pixels at top and | ||||
| 	bottom. | ||||
|  | ||||
| 	softhddevice.Background = 0 | ||||
| 	32bit RGBA background color | ||||
| 	(Red * 16777216 +  Green * 65536 + Blue * 256 + Alpha) | ||||
| 	or hex RRGGBBAA | ||||
| 	grey 127 * 16777216 + 127 * 65536 + 127 * 256 => 2139062016 | ||||
| 	in the setup menu this is entered as (24bit RGB and 8bit Alpha) | ||||
| 	(Red * 65536 +  Green * 256 + Blue) | ||||
|  | ||||
| 	softhddevice.StudioLevels = 0 | ||||
| 		0 use PC levels (0-255) with vdpau. | ||||
| 		1 use studio levels (16-235) with vdpau. | ||||
|  | ||||
| 	softhddevice.Suspend.Close = 0 | ||||
| 	1 suspend closes x11 window, connection and audio device. | ||||
| 	(use svdrpsend plug softhddevice RESU to resume, if you have no lirc) | ||||
|  | ||||
| 	softhddevice.Suspend.X11 = 0 | ||||
| 	1 suspend stops X11 server (not working yet) | ||||
|  | ||||
| 	softhddevice.60HzMode = 0 | ||||
| 	0 disable 60Hz display mode | ||||
| 	1 enable 60Hz display mode | ||||
|  | ||||
| 	softhddevice.SoftStartSync = 0 | ||||
| 	0 disable soft start of audio/video sync | ||||
| 	1 enable soft start of audio/video sync | ||||
|  | ||||
| 	softhddevice.BlackPicture = 0 | ||||
| 	0 disable black picture during channel switch | ||||
| 	1 enable black picture during channel switch | ||||
|  | ||||
| 	softhddevice.ClearOnSwitch = 0 | ||||
| 	0 keep video und audio buffers during channel switch | ||||
| 	1 clear video and audio buffers on channel switch | ||||
|  | ||||
| 	softhddevice.Video4to3DisplayFormat = 1 | ||||
| 	0 pan and scan | ||||
| 	1 letter box | ||||
| 	2 center cut-out | ||||
|  | ||||
| 	softhddevice.VideoOtherDisplayFormat = 1 | ||||
| 	0 pan and scan | ||||
| 	1 pillar box | ||||
| 	2 center cut-out | ||||
|  | ||||
| 	softhddevice.pip.X = 79 | ||||
| 	softhddevice.pip.Y = 78 | ||||
| 	softhddevice.pip.Width = 18 | ||||
| 	softhddevice.pip.Height = 18 | ||||
| 	PIP pip window position and size in percent. | ||||
|  | ||||
| 	softhddevice.pip.VideoX = 0 | ||||
| 	softhddevice.pip.VideoY = 0 | ||||
| 	softhddevice.pip.VideoWidth = 0 | ||||
| 	softhddevice.pip.VideoHeight = 0 | ||||
| 	PIP video window position and size in percent. | ||||
|  | ||||
| 	softhddevice.pip.Alt.X = 0 | ||||
| 	softhddevice.pip.Alt.Y = 50 | ||||
| 	softhddevice.pip.Alt.Width = 0 | ||||
| 	softhddevice.pip.Alt.Height = 50 | ||||
| 	PIP alternative pip window position and size in percent. | ||||
|  | ||||
| 	softhddevice.pip.Alt.VideoX = 0 | ||||
| 	softhddevice.pip.Alt.VideoY = 0 | ||||
| 	softhddevice.pip.Alt.VideoWidth = 0 | ||||
| 	softhddevice.pip.Alt.VideoHeight = 50 | ||||
| 	PIP alternative video window position and size in percent. | ||||
|  | ||||
|  | ||||
| Setup: /etc/vdr/remote.conf | ||||
| ------ | ||||
|  | ||||
| 	Add "XKeySym." definitions to /etc/vdr/remote.conf to control | ||||
| 	the vdr and plugin with the connected input device. | ||||
|  | ||||
| 	fe. | ||||
| 	XKeySym.Up	Up | ||||
| 	XKeySym.Down	Down | ||||
| 	... | ||||
|  | ||||
| 	Additional to the x11 input sends the window close button "Close". | ||||
|  | ||||
| 	fe. | ||||
| 	XKeySym.Power	Close | ||||
|  | ||||
| Commandline: | ||||
| ------------ | ||||
|  | ||||
| 	Use vdr -h to see the command line arguments supported by the plugin. | ||||
|  | ||||
|     -a audio_device | ||||
|  | ||||
| 	Selects audio output module and device. | ||||
| 	""		to disable audio output | ||||
| 	/...		to use oss audio module (if compiled with oss | ||||
| 			support) | ||||
| 	other		to use alsa audio module (if compiled with alsa | ||||
| 			support) | ||||
|  | ||||
| SVDRP: | ||||
| ------ | ||||
|  | ||||
| 	Use 'svdrpsend.pl plug softhddevice HELP' | ||||
| 	or 'svdrpsend plug softhddevice HELP' to see the SVDRP commands help | ||||
| 	and which are supported by the plugin. | ||||
|  | ||||
| Keymacros: | ||||
| ---------- | ||||
|  | ||||
| 	See keymacros.conf how to setup the macros. | ||||
|  | ||||
| 	This are the supported key sequences: | ||||
|  | ||||
| 	@softhdcuvid Blue 1 0		disable pass-through | ||||
| 	@softhdcuvid Blue 1 1		enable pass-through | ||||
| 	@softhdcuvid Blue 1 2		toggle pass-through | ||||
| 	@softhdcuvid Blue 1 3		decrease audio delay by 10ms | ||||
| 	@softhdcuvid Blue 1 4		increase audio delay by 10ms | ||||
| 	@softhdcuvid Blue 1 5		toggle ac3 mixdown | ||||
| 	@softhdcuvid Blue 2 0		disable fullscreen | ||||
| 	@softhdcuvid Blue 2 1		enable fullscreen | ||||
| 	@softhdcuvid Blue 2 2		toggle fullscreen | ||||
|  | ||||
| Running: | ||||
| -------- | ||||
|  | ||||
| 	Click into video window to toggle fullscreen/window mode, only if you | ||||
| 	have a window manager running. | ||||
|  | ||||
|  | ||||
| Known Bugs: | ||||
| ----------- | ||||
| 	SD Stream not working very well | ||||
| 	RESUME starts wirh black screen (channelswitch needed) | ||||
|  | ||||
| Requires: | ||||
| --------- | ||||
| 	media-video/vdr (version >=1.7.xx) | ||||
| 		Video Disk Recorder - turns a pc into a powerful set top box | ||||
| 		for DVB. | ||||
| 		http://www.tvdr.de/ | ||||
|  | ||||
| 	media-video/ffmpeg (version >=0.7) | ||||
| 		Complete solution to record, convert and stream audio and | ||||
| 		video. Includes libavcodec and libswresample. | ||||
| 		http://ffmpeg.org | ||||
| 	media-libs/alsa-lib | ||||
| 		Advanced Linux Sound Architecture Library | ||||
| 		http://www.alsa-project.org | ||||
|     or | ||||
| 	kernel support for oss/oss4 or alsa oss emulation | ||||
|  | ||||
| 	x11-libs/libva (deprecated) | ||||
| 		Video Acceleration (VA) API for Linux | ||||
| 		http://www.freedesktop.org/wiki/Software/vaapi | ||||
| 	x11-libs/libva-intel-driver | ||||
| 		HW video decode support for Intel integrated graphics | ||||
| 		http://www.freedesktop.org/wiki/Software/vaapi | ||||
|     or | ||||
| 	x11-libs/vdpau-video | ||||
| 		VDPAU Backend for Video Acceleration (VA) API | ||||
| 		http://www.freedesktop.org/wiki/Software/vaapi | ||||
|     or | ||||
| 	x11-libs/xvba-video | ||||
| 		XVBA Backend for Video Acceleration (VA) API | ||||
| 		http://www.freedesktop.org/wiki/Software/vaapi | ||||
|  | ||||
| 	x11-libs/libvdpau | ||||
| 		VDPAU wrapper and trace libraries | ||||
| 		http://www.freedesktop.org/wiki/Software/VDPAU | ||||
|  | ||||
| 	x11-libs/libxcb, | ||||
| 		X C-language Bindings library | ||||
| 		http://xcb.freedesktop.org | ||||
| 	x11-libs/xcb-util, | ||||
| 	x11-libs/xcb-util-wm, | ||||
| 	x11-libs/xcb-util-keysyms | ||||
| 		X C-language Bindings library | ||||
| 		http://xcb.freedesktop.org | ||||
| 		Only versions >= 0.3.8 are good supported | ||||
|  | ||||
| 	x11-libs/libX11 | ||||
| 		X.Org X11 library | ||||
| 		http://xorg.freedesktop.org | ||||
|  | ||||
| 	GNU Make 3.xx | ||||
| 		http://www.gnu.org/software/make/make.html | ||||
|  | ||||
| Optional: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user