 09c9686498
			
		
	
	
		09c9686498
		
			
		
	
	
	
	
		
			
			* misc: Uses official names for NVDEC registers * Address gdkchan's comment * Address comments
		
			
				
	
	
		
			33 lines
		
	
	
		
			No EOL
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			No EOL
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Ryujinx.Graphics.Nvdec.FFmpeg.Vp8;
 | |
| using Ryujinx.Graphics.Nvdec.Image;
 | |
| using Ryujinx.Graphics.Nvdec.Types.Vp8;
 | |
| using Ryujinx.Graphics.Video;
 | |
| using System;
 | |
| 
 | |
| namespace Ryujinx.Graphics.Nvdec
 | |
| {
 | |
|     static class Vp8Decoder
 | |
|     {
 | |
|         public static void Decode(NvdecDecoderContext context, ResourceManager rm, ref NvdecRegisters state)
 | |
|         {
 | |
|             PictureInfo pictureInfo = rm.Gmm.DeviceRead<PictureInfo>(state.SetDrvPicSetupOffset);
 | |
|             ReadOnlySpan<byte> bitstream = rm.Gmm.DeviceGetSpan(state.SetInBufBaseOffset, (int)pictureInfo.VLDBufferSize);
 | |
| 
 | |
|             Decoder decoder = context.GetVp8Decoder();
 | |
| 
 | |
|             ISurface outputSurface = rm.Cache.Get(decoder, 0, 0, pictureInfo.FrameWidth, pictureInfo.FrameHeight);
 | |
| 
 | |
|             Vp8PictureInfo info = pictureInfo.Convert();
 | |
| 
 | |
|             uint lumaOffset = state.SetPictureLumaOffset[3];
 | |
|             uint chromaOffset = state.SetPictureChromaOffset[3];
 | |
| 
 | |
|             if (decoder.Decode(ref info, outputSurface, bitstream))
 | |
|             {
 | |
|                 SurfaceWriter.Write(rm.Gmm, outputSurface, lumaOffset, chromaOffset);
 | |
|             }
 | |
| 
 | |
|             rm.Cache.Put(outputSurface);
 | |
|         }
 | |
|     }
 | |
| } |