Codificação gráfica pelo protocolo RDP
Os dados gráficos de uma sessão remota são transmitidos para um dispositivo local por meio do protocolo RDP. 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 de gráficos do RDP.
O objetivo de codificar e transmitir dados gráficos é fornecer um desempenho e qualidade ideais, com uma experiência que seja a mesma 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 Centro de Desenvolvimento Microsoft, onde os usuários esperam uma experiência de alta qualidade ao trabalhar remotamente.
O protocolo RDP usa uma variedade de recursos e técnicas para processar e transmitir dados gráficos que os tornam adequados para uma ampla variedade de cenários, como produtividade do 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 a 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 fornece 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 com 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 melhor qualidade e menor custo de codificação para cada tipo de conteúdo. O modo misto só está disponível com codificação de software.
Elementos gráficos adaptáveis: ajusta a qualidade de codificação com base na largura de banda disponível e no conteúdo da tela.
Codificação de vídeo em tela inteira: fornece uma taxa de quadros mais alta e uma melhor experiência do usuário.
Detecção e cache delta: reduz a quantidade de dados que precisam ser transmitidos.
Suporte a vários codec: usa decodificadores de hardware em um dispositivo local. Os codecs incluem o codec de vídeo AVC (Advanced Video Coding), também conhecido como H.264, e o codec de vídeo HEVC (High Efficiency Video Coding), também conhecido como H.265. O suporte a HEVC/H.265 está em versão prévia e requer uma máquina virtual remota habilitada para GPU compatível.
Subamostragem 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 e da experiência do usuário que você deseja fornecer.
Este artigo descreve o processo de codificação e entrega de dados gráficos por meio de protocolo RDP usando alguns desses recursos e técnicas.
Dica
É recomendável usar o redirecionamento multimídia sempre que possível, o que redireciona a reprodução de vídeo para o dispositivo local. O 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 em que ele 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 o 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 o desempenho ideal de codificação 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 fornecer 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 desafiador para codificar com eficiência, é fundamental usar um codec que se adapte bem à taxa de bits disponível.
O restante do conteúdo é separado para imagens e vídeos:
As imagens são um software codificado com elementos gráficos AVC/H.264 ou RemoteFX, dependendo dos recursos do dispositivo local e se o redirecionamento multimídia estiver habilitado. 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.
O AVC/H.264 é um codec amplamente compatível que tem uma boa taxa de compactação para imagens, é capaz de codificação progressiva e tem a 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 para garantir que 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 meio do protocolo RDP usando o modo misto em um cenário de codificação de software:
Esse processo é descrito da seguinte maneira:
Um bitmap de quadro é processado pela primeira vez detectando se ele contém vídeo. Caso contenha o 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.
Caso o quadro não contenha vídeo, os processadores de imagem determinarão se há alterações delta, se foi detectado movimento ou se o conteúdo está disponível no cache. Se o conteúdo atender a determinados critérios, o quadro passará 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 codecs diferentes para fornecer a melhor qualidade e o menor custo de codificação para cada tipo de conteúdo. Depois de 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 inteira 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 em cenários nos quais o conteúdo da tela é em grande parte baseado em imagem e é usado como uma alternativa ao modo misto. A codificação de vídeo em tela inteira 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 é baseado em texto em grande parte.
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. Ele beneficia aplicativos 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. A HEVC/H.265 permite a compactação de 25 a 50% dos dados em comparação com a AVC/H.264, mantendo a qualidade de vídeo ou qualidade aprimorada na mesma taxa de bits.
Você pode habilitar a codificação de vídeo em tela inteira com a 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 aceleração de GPU para a Área de Trabalho Virtual do Azure.
Aceleração de hardware de GPU
A Área de Trabalho Virtual do Azure, os PCs na nuvem no Windows 365 e o Computador de Desenvolvimento da Microsoft oferecem suporte à aceleração da GPU (unidade de processamento gráfico) na renderização e na codificação para melhorar o desempenho e a escalabilidade do aplicativo usando o protocolo RDP. A aceleração de GPU é crucial para aplicativos com uso intensivo de gráficos, como os usados por designers gráficos, editores de vídeo, modeladores 3D, analistas de dados ou especialistas em visualização.
Há dois componentes para aceleração de GPU que funcionam juntos para melhorar a experiência do usuário:
Renderização de aplicativo acelerada por GPU: use a GPU para renderizar gráficos em uma sessão remota.
Codificação de quadro acelerada por GPU: o RDP codifica todos os gráficos renderizados para transmissão para o dispositivo local. Quando parte da tela é atualizada com frequência, ela é codificada com o 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, confira Habilitar aceleração de GPU.
Suporte à subamostragem chroma para 4:2:0 e 4:4:4
O valor do croma determina o espaço de cor usado para codificação. Por padrão, o valor do 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. Ao usar o AVC/H.264, você pode aumentar o valor do croma 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 de GPU para alterar o valor de croma.
Para saber mais, confira Aumentar o valor do croma para 4:4:4 usando o codec de vídeo AVC (Advanced Video Coding).