mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	enhance workload when tone mapping with AMF
zscale filter is required.
This commit is contained in:
		
							parent
							
								
									db07510017
								
							
						
					
					
						commit
						2124bc2e18
					
				@ -859,29 +859,44 @@ namespace MediaBrowser.Controller.MediaEncoding
 | 
				
			|||||||
            else if (string.Equals(videoEncoder, "h264_amf", StringComparison.OrdinalIgnoreCase)
 | 
					            else if (string.Equals(videoEncoder, "h264_amf", StringComparison.OrdinalIgnoreCase)
 | 
				
			||||||
                || string.Equals(videoEncoder, "hevc_amf", StringComparison.OrdinalIgnoreCase))
 | 
					                || string.Equals(videoEncoder, "hevc_amf", StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                switch (encodingOptions.EncoderPreset)
 | 
					                var videoStream = state.VideoStream;
 | 
				
			||||||
 | 
					                var isColorDepth10 = IsColorDepth10(state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (isColorDepth10
 | 
				
			||||||
 | 
					                    && _mediaEncoder.SupportsHwaccel("opencl")
 | 
				
			||||||
 | 
					                    && encodingOptions.EnableTonemapping
 | 
				
			||||||
 | 
					                    && !string.IsNullOrEmpty(videoStream.VideoRange)
 | 
				
			||||||
 | 
					                    && videoStream.VideoRange.Contains("HDR", StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    case "veryslow":
 | 
					                    // Enhance quality and workload when tone mapping with AMF
 | 
				
			||||||
                    case "slow":
 | 
					                    param += "-quality quality -preanalysis true";
 | 
				
			||||||
                    case "slower":
 | 
					                }
 | 
				
			||||||
                        param += "-quality quality";
 | 
					                else
 | 
				
			||||||
                        break;
 | 
					                {
 | 
				
			||||||
 | 
					                    switch (encodingOptions.EncoderPreset)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        case "veryslow":
 | 
				
			||||||
 | 
					                        case "slow":
 | 
				
			||||||
 | 
					                        case "slower":
 | 
				
			||||||
 | 
					                            param += "-quality quality";
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    case "medium":
 | 
					                        case "medium":
 | 
				
			||||||
                        param += "-quality balanced";
 | 
					                            param += "-quality balanced";
 | 
				
			||||||
                        break;
 | 
					                            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    case "fast":
 | 
					                        case "fast":
 | 
				
			||||||
                    case "faster":
 | 
					                        case "faster":
 | 
				
			||||||
                    case "veryfast":
 | 
					                        case "veryfast":
 | 
				
			||||||
                    case "superfast":
 | 
					                        case "superfast":
 | 
				
			||||||
                    case "ultrafast":
 | 
					                        case "ultrafast":
 | 
				
			||||||
                        param += "-quality speed";
 | 
					                            param += "-quality speed";
 | 
				
			||||||
                        break;
 | 
					                            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    default:
 | 
					                        default:
 | 
				
			||||||
                        param += "-quality speed";
 | 
					                            param += "-quality speed";
 | 
				
			||||||
                        break;
 | 
					                            break;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (string.Equals(videoEncoder, "libvpx", StringComparison.OrdinalIgnoreCase)) // webm
 | 
					            else if (string.Equals(videoEncoder, "libvpx", StringComparison.OrdinalIgnoreCase)) // webm
 | 
				
			||||||
@ -2123,19 +2138,18 @@ namespace MediaBrowser.Controller.MediaEncoding
 | 
				
			|||||||
                    if (isSwDecoder || isD3d11vaDecoder)
 | 
					                    if (isSwDecoder || isD3d11vaDecoder)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        isScalingInAdvance = true;
 | 
					                        isScalingInAdvance = true;
 | 
				
			||||||
                        // Add scaling filter before tonemapping filter for performance.
 | 
					                        // Add zscale filter before tone mapping filter for performance.
 | 
				
			||||||
                        filters.AddRange(
 | 
					                        var (width, height) = GetFixedOutputSize(inputWidth, inputHeight, request.Width, request.Height, request.MaxWidth, request.MaxHeight);
 | 
				
			||||||
                            GetScalingFilters(
 | 
					                        if (width.HasValue && height.HasValue)
 | 
				
			||||||
                                state,
 | 
					                        {
 | 
				
			||||||
                                inputWidth,
 | 
					                            filters.Add(
 | 
				
			||||||
                                inputHeight,
 | 
					                                string.Format(
 | 
				
			||||||
                                threeDFormat,
 | 
					                                    CultureInfo.InvariantCulture,
 | 
				
			||||||
                                videoDecoder,
 | 
					                                    "zscale=s={0}x{1}",
 | 
				
			||||||
                                outputVideoCodec,
 | 
					                                    width.Value,
 | 
				
			||||||
                                request.Width,
 | 
					                                    height.Value));
 | 
				
			||||||
                                request.Height,
 | 
					                        }
 | 
				
			||||||
                                request.MaxWidth,
 | 
					
 | 
				
			||||||
                                request.MaxHeight));
 | 
					 | 
				
			||||||
                        // Convert to hardware pixel format p010 when using SW decoder.
 | 
					                        // Convert to hardware pixel format p010 when using SW decoder.
 | 
				
			||||||
                        filters.Add("format=p010");
 | 
					                        filters.Add("format=p010");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user