Codificação de gráficos através do Protocolo de Ambiente de Trabalho Remoto
Os dados gráficos de uma sessão remota são transmitidos para um dispositivo local através do protocolo RDP (Remote Desktop Protocol). O processo envolve a codificação dos dados gráficos na máquina virtual remota antes de enviá-los para o dispositivo local. Cada quadro é processado com base em seu conteúdo, passando por processadores de imagem, um classificador e um codec, antes de ser entregue ao dispositivo local usando o transporte gráfico do RDP.
O objetivo de codificar e transmitir dados gráficos é fornecer desempenho e qualidade ideais, com uma experiência que é a mesma que usar um dispositivo localmente. Esse processo é importante ao usar a Área de Trabalho Virtual do Azure, os Cloud PCs no Windows 365 e o Microsoft Dev Box, onde os usuários esperam uma experiência de alta qualidade ao trabalhar remotamente.
O RDP usa uma variedade de recursos e técnicas para processar e transmitir dados gráficos que o tornam adequado para uma ampla gama de cenários, como produtividade de escritório, reprodução de vídeo e jogos. Esses recursos e técnicas incluem:
Codificação baseada em hardware e software: usa a CPU ou GPU para codificar dados gráficos.
Codificação de aceleração de hardware: descarrega o processamento da codificação gráfica da CPU para a GPU em uma máquina virtual remota com uma GPU discreta. Uma GPU oferece melhor desempenho para aplicativos com uso intensivo de gráficos, como modelagem 3D ou edição de vídeo de alta definição.
Codificação de software: usa a CPU para codificar dados gráficos a um baixo custo. A codificação de software é o perfil de codificação padrão usado em uma máquina virtual remota sem uma GPU discreta.
Modo misto: separa a codificação de texto e imagem usando codecs diferentes para fornecer a melhor qualidade e o menor custo de codificação para cada tipo de conteúdo. O modo misto só está disponível com codificação de software.
Gráficos adaptáveis: ajusta a qualidade da codificação com base na largura de banda disponível e no conteúdo da tela.
Codificação de vídeo em tela cheia: fornece uma taxa de quadros mais alta e uma melhor experiência do usuário.
Deteção delta e cache: reduz a quantidade de dados que precisam ser transmitidos.
Suporte a vários codecs: usa decodificadores de hardware em um dispositivo local. Os codecs incluem o codec de vídeo Advanced Video Coding (AVC), também conhecido como H.264, e o codec de vídeo High Efficiency Video Coding (HEVC), também conhecido como H.265. O suporte a HEVC/H.265 está em pré-visualização e requer uma máquina virtual remota compatível habilitada para GPU.
4:2:0 e 4:4:4 Chroma Subsampling: fornece um equilíbrio entre a qualidade da imagem e o uso da largura de banda.
Você pode usar uma combinação desses recursos e técnicas dependendo dos recursos disponíveis da sessão remota, do dispositivo local e da rede, e da experiência do usuário que deseja fornecer.
Este artigo descreve o processo de codificação e fornecimento de dados gráficos sobre RDP usando alguns desses recursos e técnicas.
Gorjeta
Recomendamos que você use o redirecionamento multimídia sempre que possível, o que redireciona a reprodução de vídeo para o dispositivo local. Redirecionamento multimídia fornece uma melhor experiência do usuário para reprodução de vídeo, enviando o fluxo de bits de dados de vídeo para o dispositivo local, onde decodifica e renderiza o vídeo no lugar correto na tela. Esse método também reduz o custo de processamento na máquina virtual remota, independentemente da configuração de codificação. Para saber mais, consulte Redirecionamento multimídia para reprodução de vídeo e chamadas em uma sessão remota.
Modo misto
Por padrão, os dados gráficos são separados dependendo de seu conteúdo. Texto e imagens são codificados usando uma combinação de codecs para obter um desempenho de codificação ideal em diferentes tipos de conteúdo ao usar apenas a codificação de software. Este processo é conhecido como modo misto.
Em média, aproximadamente 80% dos dados gráficos para uma sessão remota são texto. Para fornecer o menor custo de codificação e a melhor qualidade para texto, o RDP usa um codec personalizado otimizado para texto. Devido ao conteúdo da imagem ser mais difícil de codificar de forma eficaz, é fundamental usar um codec que se adapte bem à taxa de bits disponível.
O resto do conteúdo é separado para imagens e vídeo:
As imagens são codificadas por software com gráficos AVC/H.264 ou RemoteFX, dependendo das capacidades do dispositivo local e se o redirecionamento multimédia estiver ativado. A codificação AVC/H.264 de imagens não está disponível ao usar o redirecionamento multimídia.
O vídeo é um software codificado com AVC/H.264.
AVC / H.264 é um codec amplamente suportado que tem boa taxa de compressão para imagens, é capaz de codificação progressiva, e tem capacidade para ajustar a qualidade com base na taxa de bits. Ele depende do decodificador de hardware no dispositivo local, que é amplamente suportado em dispositivos modernos. Usar o decodificador de hardware no dispositivo local reduz o uso da CPU no dispositivo local e fornece uma melhor experiência ao usuário. Verifique com o fabricante do dispositivo se ele suporta a decodificação de hardware AVC/H.264.
O diagrama a seguir mostra o processo de codificação e entrega de dados gráficos em RDP usando o modo misto em um cenário de codificação de software:
Este processo é descrito da seguinte forma:
Um bitmap de quadro é processado primeiro detetando se ele contém vídeo. Se ele contiver vídeo, o quadro é enviado para o codec de vídeo, que em um cenário baseado em software é codificado com AVC / H.264 e, em seguida, o quadro passa para o canal gráfico.
Se o quadro não contiver vídeo, os processadores de imagem determinarão se há alterações delta, se o movimento é detetado ou se o conteúdo está disponível no cache. Se o conteúdo corresponder a determinados critérios, o quadro passa para o canal gráfico.
Se o quadro precisar de processamento adicional, o classificador de imagem determinará se ele contém texto ou imagens.
Texto e imagens são codificados usando diferentes codecs para fornecer a melhor qualidade e menor custo de codificação para cada tipo de conteúdo. Uma vez codificado, o quadro passa para o canal gráfico.
Em vez de usar dois codecs separados para texto e imagens com modo misto, você pode habilitar a codificação de vídeo em tela cheia para processar todo o conteúdo da tela usando o codec de vídeo AVC/H.264.
Codificação de vídeo em tela cheia
A codificação de vídeo em tela cheia é útil para cenários em que o conteúdo da tela é amplamente baseado em imagem e é usado como uma alternativa ao modo misto. A codificação de vídeo em tela cheia processa todos os dados gráficos com AVC/H.264 ou HEVC/H.265. Como resultado, ele tem um desempenho pior do que a codificação de modo misto quando o conteúdo da tela é em grande parte baseado em texto.
Um perfil de vídeo em tela cheia fornece uma taxa de quadros mais alta e uma melhor experiência do usuário, mas usa mais largura de banda de rede e recursos na máquina virtual remota e no dispositivo local. Beneficia aplicações como modelação 3D, CAD/CAM ou reprodução e edição de vídeo.
Se você ativar a aceleração de hardware HEVC/H.265 e AVC/H.264, mas HEVC/H.265 não estiver disponível no dispositivo local, o AVC/H.264 será usado. HEVC/H.265 permite 25-50% de compressão de dados em comparação com AVC / H.264, com a mesma qualidade de vídeo, ou qualidade melhorada, com a mesma taxa de bits.
Pode ativar a codificação de vídeo em ecrã inteiro com AVC/H.264 mesmo sem aceleração GPU, mas HEVC/H.265 requer uma máquina virtual remota compatível com GPU.
Para saber mais, consulte Habilitar aceleração de GPU para a Área de Trabalho Virtual do Azure.
Aceleração de GPU de hardware
A Área de Trabalho Virtual do Azure, os Cloud PCs no Windows 365 e a Microsoft Dev Box suportam a aceleração da unidade de processamento gráfico (GPU) na renderização e codificação para melhorar o desempenho e a escalabilidade da aplicação utilizando o Protocolo de Ambiente de Trabalho Remoto (RDP). A aceleração da GPU é crucial para aplicações com uso intensivo de gráficos, como as usadas por designers gráficos, editores de vídeo, modeladores 3D, analistas de dados ou especialistas em visualização.
Há dois componentes para a aceleração da GPU que trabalham juntos para melhorar a experiência do usuário:
Renderização de aplicativos acelerada por GPU: use a GPU para renderizar gráficos em uma sessão remota.
Codificação de quadros acelerada por GPU: RDP codifica todos os gráficos renderizados para transmissão para o dispositivo local. Quando parte do ecrã é frequentemente atualizada, é codificada com AVC/H.264.
Se o conteúdo da tela em suas cargas de trabalho for amplamente baseado em imagem, você também poderá habilitar a codificação de vídeo em tela cheia para processar todo o conteúdo da tela para fornecer uma taxa de quadros mais alta e uma melhor experiência do usuário.
Para saber mais, consulte Ativar aceleração de GPU.
Suporte de subamostragem Chroma para 4:2:0 e 4:4:4
O valor chroma determina o espaço de cor usado para codificação. Por padrão, o valor chroma é definido como 4:2:0, o que fornece um bom equilíbrio entre a qualidade da imagem e a largura de banda da rede. Quando utiliza o AVC/H.264, pode aumentar o valor do chroma para 4:4:4 para melhorar a qualidade da imagem, mas também aumenta a largura de banda da rede. Você não precisa usar a aceleração da GPU para alterar o valor do chroma.
Para saber mais, consulte Aumentar o valor do chroma para 4:4:4 usando o codec de vídeo AVC (Advanced Video Coding).