Codificação de gráficos pelo Protocolo de Área de Trabalho Remota

Os dados gráficos de uma sessão remota são transmitidos para um dispositivo local por meio do protocolo RDP. O processo envolve codificar os dados gráficos na máquina virtual remota antes de enviá-los ao 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 é o mesmo que usar um dispositivo localmente. Esse processo é importante ao usar a Área de Trabalho Virtual do Azure, PCs na nuvem no Windows 365 e o Microsoft Dev Box, em que 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 variedade de cenários, como produtividade de escritório, produção de vídeo, design e reprodução de vídeo. 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 acelerada por hardware: descarrega o processamento de codificação gráfica da CPU para a GPU em uma máquina virtual remota equipada com uma GPU capaz. Uma GPU fornece melhor desempenho para aplicativos com uso intensivo de gráficos, como modelagem 3D ou edição de vídeo de alta definição. As GPUs compatíveis também incluem mecanismos de codificação de vídeo especializados que o RDP pode aproveitar para codificar o conteúdo da sessã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, imagem e vídeo usando diferentes codecs para fornecer a melhor qualidade e o menor custo de codificação para cada tipo de conteúdo detectado. 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 melhor experiência do usuário em cenários com alto conteúdo de imagem/vídeo.

  • Detecçã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 requer uma máquina virtual remota habilitada para GPU compatível.

  • Subamostragem de croma 4:2:0 e 4:4:4: 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, para fornecer a experiência ao usuário que você deseja fornecer.

Este artigo descreve o processo de codificação e fornecimento de dados gráficos por RDP usando alguns desses recursos e técnicas.

Dica

Recomendamos que você use o redirecionamento de multimídia sempre que possível, o que redireciona a reprodução de vídeo para o dispositivo local. O redirecionamento de 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 local 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 de 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, imagens e vídeos são codificados usando uma combinação de codecs para obter o desempenho de codificação ideal em diferentes tipos de conteúdo ao usar apenas a codificação de software. Esse processo é conhecido como modo misto.

Em média, aproximadamente 80% dos dados gráficos de uma sessão remota são texto. Para oferecer o menor custo de codificação e a melhor qualidade para texto, o RDP usa um codec personalizado otimizado para texto. Como o conteúdo da imagem é mais difícil de codificar com eficácia, é fundamental usar um codec que se adapte bem à taxa de bits disponível.

O restante do conteúdo é separado em imagens e vídeo:

  • As imagens são codificadas por software com gráficos AVC/H.264 ou RemoteFX, dependendo dos recursos do dispositivo local. A codificação padrão do conteúdo de imagem detectado usa AVC/H.264 quando há suporte na configuração do ponto de extremidade de sessão.

  • O vídeo é codificado por software com AVC/H.264.

AVC/H.264 é um codec amplamente suportado que possui boa taxa de compactação para imagens, é capaz de codificação progressiva e tem capacidade de ajustar a qualidade com base na taxa de bits. Ele depende do decodificador de hardware no dispositivo local, que é amplamente compatível com dispositivos modernos. O uso do decodificador de hardware no dispositivo local reduz o uso da CPU no dispositivo local e fornece uma melhor experiência do usuário. Verifique com o fabricante do dispositivo se ele dá suporte à decodificação de hardware AVC/H.264.

O diagrama a seguir mostra o processo de codificação e entrega de dados gráficos por RDP usando o modo misto em um cenário de codificação de software:

Um diagrama mostrando o processo de codificação e entrega de dados gráficos por RDP usando o modo misto.

Esse processo é descrito da seguinte maneira:

  1. Um bitmap de quadro é processado primeiro detectando se ele contém vídeo. Se contiver vídeo, o quadro será 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.

  2. Se o quadro não contiver vídeo, os processadores de imagem determinarão se há alterações delta, se há movimento detectado ou se há conteúdo disponível no cache. Se o conteúdo corresponder a determinados critérios, o quadro será passado para o canal de gráficos.

  3. Se o quadro precisar de processamento adicional, o classificador de imagem determinará se ele contém texto ou imagens.

  4. Texto e imagens são codificados usando codecs diferentes para fornecer a melhor qualidade e o 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 inteira

A codificação de vídeo em tela inteira é ú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 é amplamente baseado em texto.

Um perfil de vídeo em tela inteira 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 modelagem 3D, CAD/CAM ou reprodução e edição de vídeo.

Se você habilitar a aceleração de hardware HEVC/H.265 e AVC/H.264, mas o HEVC/H.265 não estiver disponível no dispositivo local, o AVC/H.264 será usado em seu lugar. O HEVC/H.265 permite compactação de dados de 25 a 50% em comparação com o AVC/H.264, com a mesma qualidade de vídeo ou qualidade aprimorada, com a mesma taxa de bits.

Você pode habilitar a codificação de vídeo em tela inteira com AVC/H.264 mesmo sem aceleração de GPU, mas o HEVC/H.265 requer uma máquina virtual remota habilitada para GPU compatível.

Para saber mais, confira Habilitar a 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, PCs na nuvem no Windows 365 e o Microsoft Dev Box dão suporte à aceleração de GPU (unidade de processamento gráfico) na renderização e codificação para melhorar o desempenho e a escalabilidade do aplicativo usando o RDP (Protocolo de Área de Trabalho Remota). A aceleração de GPU é crucial para aplicativos com uso intensivo de gráficos, como aqueles usados por designers gráficos, editores de vídeo, modeladores 3D, analistas de dados ou especialistas em visualização.

Existem dois componentes para a aceleração de 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: O RDP codifica todos os gráficos renderizados para transmissão ao dispositivo local. Quando parte da tela é atualizada com frequência, ela é 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 inteira 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 Habilitar aceleração de GPU.

Suporte à subamostragem de croma para 4:2:0 e 4:4:4

O valor de croma determina o espaço de cores usado para codificar. Por padrão, o valor do croma é definido como 4:2:0, o que fornece um bom equilíbrio entre qualidade de imagem e largura de banda de rede. Para melhorar a qualidade da imagem, você pode aumentar o valor do chroma para 4:4:4 habilitando a codificação de tela inteira AVC/H.264 e definindo a Qualidade da Imagem como Alta por meio da política de grupo. Você não precisa usar a aceleração de GPU para alterar o valor do chroma. No entanto, um valor de chroma 4:4:4 usará mais largura de banda para os mesmos quadros usando 4:2:0.

Para saber mais, consulte Aumentar o valor de croma para 4:4:4 usando o codec de vídeo AVC (Advanced Video Coding).