BR112021005361A2 - aparelho para gerar um fluxo de vídeo de saída, método para gerar um fluxo de vídeo de saída, e produto de programa de computador - Google Patents

aparelho para gerar um fluxo de vídeo de saída, método para gerar um fluxo de vídeo de saída, e produto de programa de computador Download PDF

Info

Publication number
BR112021005361A2
BR112021005361A2 BR112021005361-1A BR112021005361A BR112021005361A2 BR 112021005361 A2 BR112021005361 A2 BR 112021005361A2 BR 112021005361 A BR112021005361 A BR 112021005361A BR 112021005361 A2 BR112021005361 A2 BR 112021005361A2
Authority
BR
Brazil
Prior art keywords
video stream
viewpoint
frames
view
output
Prior art date
Application number
BR112021005361-1A
Other languages
English (en)
Inventor
Bartolomeus Wilhelmus Damianus Sonneveldt
Christiaan Varekamp
Original Assignee
Koninklijke Philips N.V.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips N.V. filed Critical Koninklijke Philips N.V.
Publication of BR112021005361A2 publication Critical patent/BR112021005361A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/21805Source of audio or video content, e.g. local disk arrays enabling multiple viewpoints, e.g. using a plurality of cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/162User input
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/4728End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for selecting a Region Of Interest [ROI], e.g. for requesting a higher resolution version of a selected region

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)

Abstract

APARELHO PARA GERAR UM FLUXO DE VÍDEO DE SAÍDA, MÉTODO PARA GERAR UM FLUXO DE VÍDEO DE SAÍDA, E PRODUTO DE PROGRAMA DE COMPUTADOR. A presente invenção se refere a um aparelho que compreende um processador (301) que fornece uma pluralidade de fluxos de vídeo de referência para uma pluralidade de pontos de vista de referência para uma cena. Um receptor (305) recebe uma solicitação de ponto de vista de um cliente remoto, sendo que a solicitação de ponto de vista é indicativa de um ponto de vista solicitado. Um gerador (303) gera um fluxo de vídeo de saída que compreende um primeiro fluxo de vídeo com quadros a partir de um primeiro fluxo de vídeo de referência e um segundo fluxo de vídeo com quadros a partir de um segundo fluxo de vídeo de referência. Os quadros do segundo fluxo de vídeo são diferencialmente codificados em relação aos quadros do primeiro fluxo de vídeo. Um controlador (307) seleciona o fluxo de vídeo de referência para o primeiro e o segundo fluxos de vídeo em resposta à solicitação de ponto de vista e pode ser disposto para comutar os fluxos de vídeo de referência entre serem não diferencialmente codificados e serem diferencialmente codificados quando a solicitação de ponto de vista atende a um critério.

Description

APARELHO PARA GERAR UM FLUXO DE VÍDEO DE SAÍDA, MÉTODO PARA GERAR UM FLUXO DE VÍDEO DE SAÍDA, E PRODUTO DE PROGRAMA DE COMPUTADOR CAMPO DA INVENÇÃO
[001] A invenção se refere à geração e renderização de um fluxo de vídeo e em particular, mas não exclusivamente, à geração e renderização de um fluxo de vídeo para uma aplicação de realidade virtual.
ANTECEDENTES DA INVENÇÃO
[002] A variedade e o alcance de aplicações de imagem e vídeo aumentaram substancialmente nos últimos anos com novos serviços e maneiras de usar e consumir vídeo sendo continuamente desenvolvidos e introduzidos.
[003] Por exemplo, um serviço cada vez mais popular é o fornecimento de sequências de imagens de tal forma que o observador seja capaz de interagir de maneira ativa e dinâmica com o sistema para alterar parâmetros da renderização. Um recurso muito interessante em muitas aplicações é a capacidade de alterar a posição de visualização e a direção de visualização efetivas do observador, por exemplo, possibilitando que o mesmo se mova e “olhe ao redor” na cena que está sendo apresentada.
[004] Esse recurso pode, especificamente, possibilitar que uma experiência de realidade virtual seja fornecida a um usuário. Isso pode possibilitar que o usuário se mova de forma (relativamente) livre em um ambiente virtual e altere dinamicamente sua posição e a direção na qual ele está olhando. Geralmente, tais aplicações de realidade virtual são baseadas em um modelo tridimensional da cena, com o modelo sendo calculado dinamicamente para fornecer a visualização específica solicitada. Essa abordagem é também bem conhecida, por exemplo, em aplicações de jogos, como na categoria de atiradores em primeira pessoa, para computadores e consoles.
[005] É também desejável, em particular, para aplicações de realidade virtual, que a imagem que é apresentada seja uma imagem tridimensional. De fato, para otimizar a imersão do espectador, é geralmente preferencial que o usuário experimente a cena apresentada como uma cena tridimensional. De fato, uma experiência de realidade virtual deve, de preferência, possibilitar que um usuário selecione sua própria posição, ponto de visualização da câmera e momento no tempo em relação a um mundo virtual.
[006] Tipicamente, aplicações de realidade virtual são inerentemente limitadas na medida em que elas se baseiam em um modelo predeterminado da cena, e geralmente em um modelo artificial de um mundo virtual. Seria desejável se uma experiência de realidade virtual pudesse ser fornecida com base na captura do mundo real. No entanto, em muitos casos, tal abordagem é muito restrita ou tende a exigir que um modelo virtual do mundo real seja construído a partir das capturas do mundo real. A experiência de realidade virtual é então gerada por meio da avaliação desse modelo.
[007] Contudo, as abordagens atuais tendem a ser subótimas e frequentemente tendem a ter elevada demanda de recursos computacionais ou de comunicação e/ou proporcionar ao usuário uma experiência subótima, por exemplo com qualidade reduzida ou liberdade limitada.
[008] Como exemplo de uma aplicação, óculos de realidade virtual foram introduzidos no mercado. Tais óculos possibilitam que os espectadores tenham uma experiência de vídeo capturado em 360 graus (panorâmico) ou em 180 graus. Esses vídeos em 360 graus são frequentemente pré-capturados com o uso de equipamentos de câmera onde imagens individuais são unidas em um único mapeamento esférico. Os formatos estereoscópicos comuns para vídeo 180 ou 360 são superior/inferior e esquerda/direita. De forma similar ao vídeo estéreo não panorâmico, as imagens do olho esquerdo e do olho direito são compactadas como parte de um único fluxo de vídeo H.264. Depois de decodificar um único quadro, o observador gira a cabeça para ver o mundo em torno dele. Um exemplo é uma gravação onde os observadores podem ter a experiência de um efeito de “olhar ao redor” em 360 graus, e podem alternar de maneira descontínua entre fluxos de vídeo gravados de diferentes posições. Ao alternar, outro fluxo de vídeo é carregado, o que faz com que a experiência seja interrompida.
[009] Uma desvantagem da abordagem de vídeo panorâmico estéreo é que o observador não pode mudar de posição no mundo virtual. A codificação e transmissão de um mapa de profundidade panorâmico além do vídeo estéreo panorâmico poderia possibilitar a compensação de pequenos movimentos translacionais do observador no lado do cliente, mas tais compensações seriam inerentemente limitadas a pequenas variações e movimentos e não seriam capazes de fornecer uma experiência de realidade virtual imersiva e livre.
[010] Uma tecnologia relacionada é o vídeo de ponto de visualização livre, no qual múltiplos pontos de visualização com mapas de profundidade são codificados e transmitidos em um único fluxo de vídeo. Entretanto, essa abordagem exige uma taxa de bits alta e pode ser restritiva em termos das imagens que podem ser geradas.
[011] Um exemplo de um sistema de captura e reprodução para visualização de ponto de vista livre é ilustrado na Figura 1. No lado de captura (lado servidor SRV), uma cena 101 é capturada por uma matriz de câmeras bidimensional 103. Cada câmera tem uma localização de ancoragem/referência diferente e observa a cena a partir de uma perspectiva ligeiramente diferente. Em um lado de reprodução remota (lado do cliente CLNT), um observador 104 olha o conteúdo capturado em uma tela 3D 107 ou usa óculos de realidade virtual. As localizações dos olhos do espectador, e portanto, sua perspectiva de visualização, são medidas com o uso, por exemplo, de um rastreador de olhos 109. O sinal de câmera correspondente é selecionado e recuperado de um servidor 105 que transmite o conteúdo através de uma rede 111. O conteúdo pode ser enviado ao vivo ou a partir do sistema de arquivos de servidores. No lado do cliente (CLNT), um receptor 113 compreende um decodificador que pode decodificar o fluxo de conteúdo/imagem/vídeo recebido para gerar um fluxo decodificado. Um controlador de tela 115 gera, então, as imagens de vista adequadas e as renderiza no visor 107. No sistema, dependendo da perspectiva/pose detectada pelo observador, um subconjunto de fluxos de câmera é selecionado e usado para gerar as imagens renderizadas.
[012] Uma abordagem em que a vista apresentada muda dinamicamente em correspondência ao movimento da cabeça é chamada de “paralaxe de movimento”. De preferência, a paralaxe do movimento é consistente com a estereopsia 3D em que cada olho recebe uma vista em perspectiva diferente da cena. Quando os dados de visualização da câmera são acompanhados por informações de profundidade (ou disparidade estimada), os pontos de vista entre os pontos de vista reais da câmera podem ser sintetizados. Isso é usado para uma reprodução suave. Também permite extrapolação limitada além dos pontos de vista capturados. No sistema da Figura 1, os dados são transferidos de um servidor 105 através de uma rede 111 para um ou mais clientes. Para fazer isso de maneira eficaz, pode-se usar uma codificação de imagens do vídeo (múltiplas visualizações) e mapas de profundidade.
[013] O aplicativo descrito é um sistema interativo. Um fluxo de câmera é selecionado em resposta ao movimento de cabeça do espectador. Qualquer latência na parte interativa faz com que as vistas percebidas tenham um atraso e degradem a experiência visual. Com o uso de síntese de visão baseada em profundidade, é possível compensar pequenas latências.
[014] Podem ser considerados dois componentes de latência principais que influenciam a interatividade (alternância de visão):
1. Latência de transmissão da rede. O sinal de “seleção” é enviado a montante para o servidor e as vistas corretas da câmera são transmitidas a jusante para o local de visualização. O tempo de envio de sinal mais o tempo que leva para receber confirmação de que o sinal foi recebido (RTT - “round-trip time”) do canal ou da rede determinam uma primeira parte da latência.
2. Latência de decodificação. Codecs de vídeo eficientes codificam um conjunto de múltiplos quadros de vídeo em sequência no tempo diferencialmente juntos em um “grupo de imagens” (GOP - “Group of Pictures”). Alguns quadros precisam,
então, fazer referência a quadros transmitidos anteriormente. GOPs grandes têm benefícios de eficiência (largura de banda) de codificação. No entanto, grandes GOPs também aumentam a latência de decodificação. Isso impede a comutação instantânea entre fluxos codificados.
[015] A codificação diferencial é bem conhecida para codificação de vídeo e é aplicada de muitas maneiras diferentes, sendo possível tanto a codificação diferencial temporal quanto espacial. Por exemplo, em vez de codificar uma imagem inteira independentemente (intraquadro), apenas as diferenças em relação a quadros de outras instâncias de tempo são codificadas. Por exemplo, o padrão High Efficiency Video Coding (HEVC) e seus antecessores usam isso extensivamente. Quadros de outros pontos de vista da câmera também podem ser diferencialmente codificados. Isso é descrito, por exemplo, em MV-HEVC, que é a extensão em múltiplas vistas de HEVC.
[016] A latência de transmissão da rede é mais frequentemente um dado parâmetro que não pode ser facilmente modificado pelo aplicativo. Ela pode variar ao longo do tempo, dependendo, por exemplo, da carga da rede. A latência de decodificação, por outro lado, é uma consideração de design. Escolher um GOP de tamanho pequeno reduz a latência, mas ao mesmo tempo reduz a eficiência de codificação.
[017] É desejável reduzir a latência tanto quanto possível a fim de fornecer uma experiência de uso aprimorada e, especialmente, proporcionar uma experiência mais dinamicamente adaptativa. A abordagem direta para resolver este problema de latência seria codificar e transmitir todas as vistas da câmera juntas ou como fluxos separados. No local da visualização, é possível então decidir instantaneamente qual vista usar. No entanto, essa abordagem resultaria em uma taxa de dados muito alta e exigiria uma largura de banda da rede alta, o que seria altamente indesejável em muitas aplicações. De fato, embora essa abordagem possa possivelmente, em alguns cenários, ser viável para um baixo número de câmeras, ela não se porta bem para um número maior de fluxos/câmeras, e é impraticável em muitas aplicações. Além disso por causa da latência do decodificador, todas as vistas devem ser continuamente codificadas e isso requer um alto recurso computacional no cliente.
[018] Portanto, uma abordagem aprimorada seria vantajosa. Em particular, seria vantajosa uma abordagem que permitisse uma operação melhorada, maior flexibilidade, taxas de dados reduzidas, distribuição facilitada, complexidade reduzida, implementação facilitada, requisitos computacionais reduzidos, latência reduzida, uma melhor experiência de uso e/ou um melhor desempenho e/ou operação.
SUMÁRIO DA INVENÇÃO
[019] Consequentemente, a invenção busca, de preferência, mitigar, aliviar ou eliminar uma ou mais das desvantagens mencionadas acima, individualmente ou em qualquer combinação.
[020] De acordo com um aspecto da invenção, é fornecido um aparelho para gerar um fluxo de vídeo de saída, sendo que o aparelho compreende: um processador para fornecer uma pluralidade de fluxos de vídeo de referência para uma pluralidade de pontos de vista de referência para uma cena; um receptor para receber uma solicitação de ponto de vista de um cliente remoto, sendo a solicitação de ponto de vista indicativa de um ponto de vista solicitado da cena para o fluxo de vídeo de saída; um gerador para gerar um fluxo de vídeo de saída que compreende um primeiro fluxo de vídeo compreendendo primeiros quadro de saída a partir de um primeiro fluxo de vídeo de referência dentre a pluralidade de fluxos de vídeo de referência para um primeiro ponto de vista e um segundo fluxo de vídeo compreendendo segundos quadros de saída a partir de um segundo fluxo de vídeo de referência dentre a pluralidade de fluxos de vídeo de referência para um segundo ponto de vista de referência, sendo que os segundos quadros de saída são codificados diferencialmente em relação aos primeiros quadros de saída e sendo que os primeiros quadros de saída não são codificados diferencialmente em relação aos segundos quadros de saída; um controlador para determinar o primeiro ponto de vista e o segundo ponto de vista como pontos de vista da pluralidade de pontos de vista de referência em resposta à solicitação de ponto de vista; sendo que o controlador é disposto para, em resposta a uma detecção durante a geração do fluxo de vídeo de saída de uma alteração na solicitação de ponto de vista que satisfaz um critério, alterar o primeiro ponto de vista de ser um primeiro ponto de vista de referência dentre a pluralidade de pontos de vista de referência e o segundo ponto de vista de ser um segundo ponto de vista de referência dentre a pluralidade de pontos de vista de referência para o primeiro ponto de vista ser o segundo ponto de vista de referência e o segundo ponto de vista ser o primeiro ponto de vista de referência; sendo que o aparelho é disposto de modo a incluir vários fluxos de vídeo adicionais no fluxo de vídeo de saída, sendo que cada fluxo de vídeo adicional compreende quadros de saída de um fluxo de vídeo de referência adicional dentre a pluralidade de fluxos de vídeo de referência codificados diferencialmente em relação aos primeiros quadros de saída; e sendo que o controlador é disposto de modo a determinar o número de fluxos de vídeo adicionais em resposta a ao menos uma dentre: uma medida de variação para a solicitação de ponto de vista e uma medida de latência para um canal de comunicação para transmitir o fluxo de vídeo de saída.
[021] A invenção pode fornecer uma geração aprimorada e/ou mais útil de um fluxo de vídeo representando uma cena. Ela pode fornecer informações adicionais ou redundantes que podem suportar ou facilitar a síntese remota de imagens com base no fluxo de vídeo de saída. A abordagem pode permitir um suporte eficiente de um serviço de RV e/ou pode reduzir a taxa de dados total ao mesmo tempo que mantém um alto grau de flexibilidade para síntese de imagens.
[022] A abordagem pode dar suporte, por exemplo, a um serviço de RV baseado em servidor de cliente melhorado, sendo que a síntese final das imagens é executada no lado do cliente.
[023] Em particular, a abordagem pode reduzir os artefatos de transição quando se comuta entre diferentes pontos de vista de ancoragem. Por exemplo, quando se comuta de um ponto de vista de ancoragem para outro, ambos os fluxos de vídeo de ancoragem podem ser continuamente fornecidos antes, durante e após a comutação apenas com a codificação dessa alteração.
[024] O sistema pode ser disposto para executar dinamicamente as operações a fim de fornecer uma adaptação dinâmica do fluxo de vídeo de saída.
[025] De acordo com um recurso opcional da invenção, os primeiros quadros de saída são codificados sem referência a quadros para outros pontos de vista de referência que não o primeiro ponto de vista.
[026] Isso pode proporcionar uma operação aprimorada em muitas modalidades.
[027] De acordo com um recurso opcional da invenção, os primeiros quadros de saída são intracodificados.
[028] Isso pode proporcionar uma operação aprimorada em muitas modalidades e pode, especificamente, reduzir a latência, visto que a latência de decodificação pode ser reduzida. Um quadro intracodificado pode ser um quadro codificado independentemente de todos os outros quadros.
[029] De acordo com um recurso opcional da invenção, alguns dentre os primeiros quadros de saída são codificados diferencialmente em relação a outros quadros dentre os primeiros quadros de saída.
[030] Isso pode proporcionar um desempenho aprimorado em muitas modalidades e pode, especificamente, reduzir a taxa de dados total para o fluxo de vídeo de saída.
[031] De acordo com um recurso opcional da invenção, o gerador de saída é disposto para gerar os segundos quadros de saída ao codificar diferencialmente os quadros do segundo fluxo de vídeo de referência em relação aos primeiros quadros de saída.
[032] Isso pode proporcionar uma operação eficiente e adaptável e pode, em particular, ser adequado para aplicações em tempo real, como aplicações de multidifusão em tempo real.
[033] De acordo com um recurso opcional da invenção, o processador é disposto para armazenar diferencialmente versões codificadas de ao menos alguns fluxos de vídeo dentre a pluralidade de fluxos de vídeo de referência, uma versão diferencialmente codificada de um fluxo de vídeo de referência compreendendo quadros diferencialmente codificados em relação a quadros de um outro fluxo de vídeo de referência; e o gerador é disposto para gerar o segundo fluxo de vídeo em resposta à recuperação de uma versão diferencialmente codificada do segundo fluxo de vídeo de referência ser uma versão do segundo fluxo de vídeo compreendendo quadros diferencialmente codificados em relação a quadros do primeiro fluxo de vídeo de referência.
[034] Isso pode proporcionar uma operação mais eficiente em muitas modalidades e pode reduzir especificamente a complexidade computacional e os requisitos de recursos. Isso pode ser particularmente adequado para aplicações nas quais o aparelho gera diferentes fluxos de vídeo de saída para vários clientes.
[035] Em algumas modalidades, o processador pode ser disposto para armazenar a pluralidade de fluxos de vídeo de ancoragem e vários fluxos de vídeo de ancoragem codificados diferencialmente de ao menos um dentre a pluralidade de fluxos de vídeo que são diferencialmente codificados em relação aos fluxos de vídeo para outros pontos de vista; e o gerador pode ser disposto de modo a gerar o primeiro fluxo de bits a partir de um fluxo de vídeo recuperado selecionado a partir da pluralidade de fluxos de vídeo com base na solicitação de ponto de vista e gerar o segundo fluxo de bits a partir de um fluxo de vídeo codificado diferencialmente recuperado, que é diferencialmente codificado em relação a um ponto de vista do fluxo de vídeo recuperado.
[036] De acordo com um recurso opcional da invenção, o processador é disposto para armazenar a pluralidade de fluxos de vídeo de referência como arquivos, e o controlador é disposto para selecionar o primeiro fluxo de vídeo de referência e o segundo fluxo de vídeo de referência em resposta a uma solicitação de recuperação de arquivo da solicitação de ponto de vista, sendo que a solicitação de recuperação de arquivo é indicativa de um arquivo armazenado que compreende um fluxo de vídeo de referência.
[037] Em muitas modalidades, isso pode proporcionar uma implementação eficiente e de baixa complexidade.
[038] De acordo com um recurso opcional da invenção, o controlador é disposto a fim de alterar o primeiro ponto de vista em resposta a distâncias entre o ponto de vista solicitado e a pluralidade de pontos de vista de referência.
[039] Em muitas modalidades, isso pode fornecer operação altamente vantajosa.
[040] De acordo com um recurso opcional da invenção, o controlador é disposto para alterar o primeiro ponto de vista em resposta a uma taxa de alteração para o ponto de vista solicitado.
[041] Em muitas modalidades, isso pode fornecer operação altamente vantajosa.
[042] De acordo com um recurso opcional da invenção, o controlador é disposto para alterar o primeiro ponto de vista em resposta a uma medida de latência.
[043] Em muitas modalidades, isso pode fornecer operação altamente vantajosa.
[044] A medição de latência pode ser indicativa de uma medição de latência para que o canal de comunicação transmita o fluxo de vídeo de saída. A medição de latência pode ser indicativa de uma latência do processamento do aparelho e pode ser uma indicação de um atraso entre receber uma solicitação de ponto de vista e adaptar o fluxo de vídeo de saída com base naquela solicitação de ponto de vista.
[045] O aparelho é disposto de modo a incluir vários fluxos de vídeo adicionais no fluxo de vídeo de saída, sendo que cada fluxo de vídeo adicional compreende quadros de saída de um fluxo de vídeo de referência adicional dentre a pluralidade de fluxos de vídeo de referência codificados diferencialmente em relação aos primeiros quadros de saída; e sendo que o controlador é disposto para determinar o número de fluxos de vídeo adicionais em resposta a uma medida de latência para que um canal de comunicação transmita o fluxo de vídeo de saída.
[046] Isso pode proporcionar um desempenho aprimorado em muitas modalidades e pode fornecer, especificamente, uma adaptação dinâmica melhorada da taxa de dados em relação às condições atuais.
[047] O aparelho é disposto de modo a incluir vários fluxos de vídeo adicionais no fluxo de vídeo de saída, sendo que cada fluxo de vídeo adicional compreende quadros de saída de um fluxo de vídeo de referência adicional dentre a pluralidade de fluxos de vídeo de referência codificados diferencialmente em relação aos primeiros quadros de saída; e sendo que o controlador é disposto para determinar o número de fluxos de vídeo adicionais em resposta a uma medida de variação para a solicitação de ponto de vista.
[048] Isso pode proporcionar um desempenho aprimorado em muitas modalidades e pode fornecer, especificamente, uma adaptação dinâmica melhorada da taxa de dados em relação às condições atuais.
[049] O aparelho para renderizar um fluxo de vídeo pode compreender: um receptor para receber o fluxo de vídeo, sendo que o fluxo de vídeo compreende um primeiro fluxo de vídeo que compreende primeiros quadros que representam quadros para um primeiro ponto de vista de uma cena e um segundo fluxo de vídeo que compreende segundos quadros para a cena a partir de um segundo ponto de vista, sendo que os segundos quadros são diferencialmente codificados em relação aos primeiros quadros e os primeiros quadros não são diferencialmente codificados em relação aos segundos quadros; um renderizador para renderizar imagens de vista de saída para um ponto de vista em resposta aos primeiros quadros de vídeo e aos segundos quadros de vídeo; um detector para detectar uma alteração no fluxo de vídeo do primeiro ponto de vista correspondendo a um primeiro ponto de vista de referência e do segundo ponto de vista correspondendo a um segundo ponto de vista de referência para o primeiro ponto de vista correspondendo ao segundo ponto de vista de referência e o segundo ponto de vista correspondendo ao primeiro ponto de vista de referência; e um adaptador para adaptar a renderização em resposta à detecção.
[050] O renderizador pode ser disposto para sintetizar as imagens de vista usando o deslocamento de ponto de vista aplicado a pelo menos um dentre os primeiros quadros e os segundos quadros.
[051] O adaptador pode ser disposto de modo a adaptar o deslocamento de ponto de vista para compensar uma mudança de ponto de vista para ao menos um dentre os primeiros quadros e os segundos quadros.
[052] De acordo com um aspecto da invenção, é fornecido um método para gerar um fluxo de vídeo de saída, sendo que o método compreende: fornecer uma pluralidade de fluxos de vídeo de referência para uma pluralidade de pontos de vista de referência para uma cena; receber uma solicitação de ponto de vista de um cliente remoto, sendo a solicitação de ponto de vista indicativa de um ponto de vista solicitado da cena para o fluxo de vídeo de saída; gerar um fluxo de vídeo de saída que compreende um primeiro fluxo de vídeo compreendendo primeiros quadros de saída a partir de um primeiro fluxo de vídeo de referência dentre a pluralidade de fluxos de vídeo de referência para um primeiro ponto de vista e um segundo fluxo de vídeo compreendendo segundos quadros de saída a partir de um segundo fluxo de vídeo de referência dentre a pluralidade de fluxos de vídeo de referência para um segundo ponto de vista de referência, sendo que os segundos quadros de saída são codificados diferencialmente em relação aos primeiros quadros de saída e sendo que os primeiros quadros de saída não são codificados diferencialmente em relação aos segundos quadros de saída; determinar o primeiro ponto de vista e o segundo ponto de vista como pontos de vista dentre a pluralidade de pontos de vista de referência em resposta à solicitação de ponto de vista; e sendo que a determinação do primeiro ponto de vista e do segundo ponto de vista compreende fazer com que, em resposta a uma detecção durante a geração do fluxo de vídeo de saída de uma mudança na solicitação de ponto de vista que satisfaz um critério, o primeiro ponto de vista deixe de ser um primeiro ponto de vista de referência dentre a pluralidade de pontos de vista de referência e o segundo ponto de vista deixe de ser um segundo ponto de vista de referência dentre a pluralidade de pontos de vista de referência para o primeiro ponto de vista ser o segundo ponto de vista de referência e o segundo ponto de vista ser o primeiro ponto de vista de referência, sendo que o método compreende adicionalmente incluir vários fluxos de vídeo adicionais no fluxo de vídeo de saída, cada fluxo de vídeo adicional compreendendo quadros de saída de um fluxo de vídeo de referência adicional dentre a pluralidade de fluxos de vídeo de referência diferencialmente codificados em relação aos primeiros quadros de saída; e determinar o número de fluxos de vídeo adicionais em resposta a ao menos uma dentre: uma medida de variação para a solicitação de ponto de vista e uma medida de latência para que um canal de comunicação transmita o fluxo de vídeo de saída.
[053] Um método para renderizar um fluxo de vídeo pode compreender: receber o fluxo de vídeo, sendo que o fluxo de vídeo compreende um primeiro fluxo de vídeo que compreende primeiros quadros que representam quadros para um primeiro ponto de vista de uma cena, e um segundo fluxo de vídeo que compreende segundos quadros para a cena a partir de um segundo ponto de vista, sendo que os segundos quadros são diferencialmente codificados em relação aos primeiros quadros e os primeiros quadros não são diferencialmente codificados em relação aos segundos quadros; renderizar imagens de vista de saída para um ponto de vista em resposta aos primeiros quadros de vídeo e aos segundos quadros de vídeo; detectar uma mudança no fluxo de vídeo a partir do primeiro ponto de vista correspondendo a um primeiro ponto de vista de referência e do segundo ponto de vista correspondendo a um segundo ponto de vista de referência para o primeiro ponto de vista correspondendo ao segundo ponto de vista de referência e o segundo ponto de vista correspondendo ao primeiro ponto de vista de referência; e adaptar a renderização em resposta à detecção.
[054] Esses e outros aspectos, recursos e vantagens da invenção ficarão evidentes e serão elucidados com referência às uma ou mais modalidades descritas a seguir.
BREVE DESCRIÇÃO DOS DESENHOS
[055] As modalidades da invenção serão descritas, apenas a título de exemplo, com referência aos desenhos, nos quais: a Figura 1 ilustra um exemplo de um sistema de captura e reprodução para visualização de ponto de vista livre; a Figura 2 ilustra um exemplo de uma disposição de cliente-servidor para fornecer uma experiência de realidade virtual; a Figura 3 ilustra um exemplo de elementos de um aparelho servidor de acordo com algumas modalidades da invenção; a Figura 4 ilustra um exemplo de elementos de um aparelho cliente de acordo com algumas modalidades da invenção; a Figura 5 ilustra um exemplo de uma abordagem de codificação para fluxos de vídeo gerados por um aparelho servidor, de acordo com algumas modalidades da invenção; e a Figura 6 ilustra um exemplo de uma abordagem de codificação para fluxos de vídeo gerados por um aparelho servidor, de acordo com algumas modalidades da invenção.
DESCRIÇÃO DETALHADA DE ALGUMAS MODALIDADES DA INVENÇÃO
[056] As experiências virtuais que permitem que um usuário se mova em um mundo virtual estão se tornando cada vez mais populares e estão sendo desenvolvidos serviços para satisfazer tal demanda. No entanto, a prestação de serviços eficientes de realidade virtual é muito desafiadora, em particular se a experiência se basear em uma captura de um ambiente do mundo real ao invés de um mundo artificial totalmente gerado virtualmente.
[057] Em muitas aplicações de realidade virtual, uma entrada de pose do espectador é determinada pela reflexão da pose de um espectador virtual na cena virtual. O aparelho/sistema/aplicação de realidade virtual gera então uma ou mais imagens correspondentes às vistas e janelas de visão da cena virtual para um espectador correspondente à pose do espectador.
[058] Tipicamente, a aplicação de realidade virtual gera uma saída tridimensional na forma de imagens de visualização separadas para os olhos esquerdo e direito. Essas podem, então, ser apresentadas ao usuário por meios adequados, como, por exemplo, indicações individuais de olho esquerdo e direito de um headset de RV. Em outras modalidades, uma ou mais imagens de visualização podem, por exemplo, ser apresentadas em uma tela autoestereoscópica ou, de fato, em algumas modalidades, apenas uma única imagem bidimensional pode ser gerada (por exemplo, com o uso de uma tela bidimensional convencional).
[059] A entrada de pose do observador pode ser determinada de modos diferentes em diferentes aplicações. Em muitas modalidades, o movimento físico de um usuário pode ser diretamente rastreado. Por exemplo, uma câmera inspecionando uma área de usuário pode detectar e rastrear a cabeça do usuário (ou mesmo seus olhos). Em muitas modalidades, o usuário pode usar um headset de RV que pode ser rastreado por meios externos e/ou internos. Por exemplo, o headset pode compreender acelerômetros e giroscópios que fornecem informações sobre o movimento e a rotação do headset e, dessa forma, sobre a cabeça. Em alguns exemplos, o headset de RV pode transmitir sinais ou incluir identificadores (por exemplo, visuais) que possibilitam que um sensor externo determine a posição do headset de RV.
[060] Em alguns sistemas, a pose de observador pode ser fornecida por meios manuais, por exemplo, quando o usuário controla manualmente um joystick ou entrada manual similar. Por exemplo, o usuário pode mover manualmente o observador virtual pela cena virtual mediante o controle de um primeiro joystick analógico com uma mão e o controle manual da direção na qual o observador virtual está olhando ao mover manualmente uma segunda alavanca analógica com a outra mão.
[061] Em algumas aplicações, uma combinação de abordagens manuais e automatizadas pode ser usada para gerar a pose de entrada do observador. Por exemplo, um headset pode rastrear a orientação da cabeça e o movimento/posição do observador na cena pode ser controlado pelo usuário mediante o uso de um joystick.
[062] A geração de imagens tem por base uma representação adequada do mundo/ambiente/cena virtual. Em muitos sistemas, a cena pode ser representada por dados de imagem correspondentes a vistas capturadas a partir de diferentes poses de captura. Por exemplo, para uma pluralidade de poses de captura, uma sequência de vídeo ou imagem pode ser capturada ou armazenada. Como um exemplo, um evento esportivo pode ser capturado para radiodifusão como uma experiência de realidade virtual (ou para apoiar tal experiência) por uma pluralidade de câmeras que capturam o evento a partir de diferentes posições (ou poses) e geram sequências de vídeo capturadas. O conjunto de sequências de vídeo pode ser transmitido em tempo real ou pode ser armazenado, por exemplo, para recuperação em um estágio posterior. Em sistemas em que a cena é descrita/mencionada por dados de vista armazenados para pontos de vista de referência/posições/poses distintos, esses estão no campo também chamado de pontos de vista/posições/poses de ancoragem, e a seguir, os termos “referência” e “ancoragem” serão usados como equivalentes/idênticos. Tipicamente, quando um ambiente do mundo real é capturado a partir de imagens de diferentes pontos/posições/poses, estes pontos/posições/poses de captura são também a referência/os pontos de ancoragem/as posições/as poses.
[063] No campo, os termos “posicionamento” e “pose” são usados como um termo comum para posição e/ou direção/orientação. A combinação da posição e da direção/orientação, por exemplo de um objeto, uma câmera, uma cabeça ou uma vista, pode ser chamada de uma pose ou posicionamento. O termo “ponto de vista” é também genericamente usado na técnica para indicar a origem de uma vista. O termo é frequentemente usado para indicar uma posição a partir da qual a vista é visualizada, mas também inclui tipicamente uma orientação e, de fato, pode ser apenas uma orientação. Dessa forma, a pose ou o posicionamento que fornecem a base para uma vista ou imagem são genericamente chamados de ponto de vista da vista ou imagem.
[064] Dessa forma, uma indicação de posicionamento ou pose para um objeto pode compreender seis valores/componentes/graus de liberdade com cada valor/componente tipicamente descrevendo uma propriedade individual da posição/localização ou da orientação/direção do objeto correspondente. Se o objeto for a base de uma vista, por exemplo, representa uma câmera ou um observador (virtual ou real), o ponto de vista do objeto pode ser representado pela pose ou pelo posicionamento correspondente do objeto.
[065] Certamente, em muitas situações, um posicionamento, uma pose ou um ponto de vista podem ser considerados ou representados com menos componentes, por exemplo, se um ou mais componentes forem considerados fixos ou irrelevantes (por exemplo, se todos os objetos forem considerados como estando na mesma altura e tiverem uma orientação horizontal, quatro componentes podem fornecer uma representação completa da pose de um objeto). No texto a seguir, os termos “pose” e “ponto de vista” são usados para fazer referência a uma posição e/ou orientação que podem ser representadas por um a seis valores (correspondendo aos graus máximos possíveis de liberdade).
[066] Um sistema ou entidade baseado no fornecimento do grau máximo de liberdade para o observador é tipicamente chamado como tendo 6 graus de liberdade (6 DoF - “Degrees of Freedom”). Muitos sistemas e entidades fornecem apenas uma orientação ou posição e estas são tipicamente conhecidas por ter 3 Graus de Liberdade (3 DoF).
[067] Em muitas implementações, a aplicação de RV é distribuída por diferentes entidades/dispositivos e, especificamente, pode ser implementada usando uma configuração de servidor cliente. Por exemplo, um dispositivo local para o usuário pode detectar/receber dados de movimento/pose que são processados para gerarem a pose do observador, que é, então, transmitida para o dispositivo remoto. O dispositivo remoto pode então gerar imagens de visualização adequadas para a pose do espectador com base nos dados da cena que descrevem os dados da cena. Por exemplo, ele pode selecionar um dos pontos de ancoragem mais próximos da pose do observador e transmitir isso ao dispositivo cliente local que pode possivelmente apresentar diretamente o fluxo de vídeo recebido.
[068] Um servidor pode ser considerado uma função, um processo, método, aparelho, computador ou programa de computador que gerencia o acesso a um recurso ou serviço centralizado em uma rede, como, no caso específico, fornecendo acesso a fluxos de vídeo que representam uma cena. Um cliente pode ser considerado uma função, um processo, método, aparelho, computador ou programa de computador que é capaz de obter informações e aplicações de um servidor, como, no caso específico, obtendo fluxos de vídeo que representam uma cena.
[069] A Figura 2 ilustra tal exemplo de um sistema de RV em que um servidor remoto de RV 203 se comunica com um dispositivo de RV cliente 201 por meio de, por exemplo, uma rede 205, como a Internet. O servidor de RV remoto 203 pode ser disposto para suportar simultaneamente um número potencialmente grande de dispositivos de RV clientes 201. O sistema da Figura 1 pode ser usado especificamente para implementar a abordagem da Figura 1 e a descrição a seguir será baseada em tal sistema.
[070] Tal abordagem, como a da Figura 2, pode, em muitos cenários, proporcionar um melhor acordo, por exemplo,
entre a complexidade e as exigências de recursos para diferentes dispositivos, requisitos de comunicação, etc. Por exemplo, o ponto de vista atual do observador e os dados de cena correspondentes podem ser transmitidos com intervalos maiores com o dispositivo local processando o ponto de vista e os dados de cena recebidos localmente para fornecer uma experiência de tempo real com pouco atraso. Isso pode, por exemplo, reduzir substancialmente a largura de banda de comunicação necessária, possibilitando ao mesmo tempo que os dados de cena sejam centralmente armazenados, gerados e mantidos. Ela pode ser adequada, por exemplo, para aplicações nas quais é fornecida uma experiência de RV a uma pluralidade de dispositivos remotos, como, por exemplo, serviços ou aplicações de radiodifusão de RV, como, por exemplo, a radiodifusão de um evento esportivo como um serviço de RV no qual o usuário pode mudar a posição.
[071] No entanto, conforme anteriormente descrito, tais sistemas podem introduzir latências. Por exemplo, se o ponto de vista mudar de próximo para uma primeira pose de ancoragem para uma segunda pose de ancoragem, isso resultará em o servidor mudar o fornecimento do fluxo de vídeo para a primeira pose de ancoragem para o fluxo de vídeo para a segunda pose de ancoragem. Entretanto, do ponto de vista do cliente, a alteração de um fluxo de vídeo para outro fluxo de vídeo ocorre com uma latência que depende tanto do atraso da rede (round-trip) quanto de qualquer atraso de decodificação. Tais atrasos podem ser substanciais e muito perceptíveis. Por exemplo, quando se move para causar um deslocamento do ponto de vista do usuário de uma pose de ancoragem para outra, o deslocamento pode realmente ocorrer com um atraso significativo e perceptível. Mesmo em abordagens em que o deslocamento de vista local é realizado com base no ponto de vista atual e no fluxo de vídeo recebido (e na pose disso), o deslocamento de vista aumentado necessário causará uma redução de qualidade. Abordar a questão da latência com o servidor que transmite múltiplos fluxos de vídeo aumentou substancialmente o uso de recursos e a largura de banda.
[072] A seguir, será descrita uma abordagem com referência à Figura 2 (e Figura 1) que pode, em muitos cenários, fornecer uma latência reduzida ao mesmo tempo que mantém uma baixa largura de banda e poucos requisitos de recursos. A abordagem pode utilizar especificamente fluxos de vídeo redundantes com uma abordagem de codificação dinamicamente adaptativa para fornecer um melhor equilíbrio entre latência e os requisitos de recurso/largura de banda.
[073] A Figura 3 ilustra um exemplo de elementos do servidor 201, e a Figura 4 ilustra exemplos de elementos do cliente 203 de tal modalidade.
[074] No exemplo, o servidor 201 compreende um processador 301 para fornecer uma pluralidade de fluxos de vídeo de ancoragem para uma pluralidade de pontos de vista de ancoragem para uma dada cena. Dessa forma, para cada um dentre uma pluralidade de pontos de vista de ancoragem, o processador 301 pode fornecer um fluxo de vídeo de ancoragem que representa as vistas da cena desse ponto de vista. Será entendido que o termo ancoragem no campo é meramente um rótulo que não tem qualquer outra implicação além de fazer referência à pluralidade de fluxos de vídeo (isto é, ele corresponde a descrever que o processador 301 pode fornecer uma pluralidade de fluxos de vídeo para uma pluralidade de pontos de vista para uma dada cena, e que, certamente, o termo ancoragem pode ser substituído por outro rótulo, como, por exemplo, o termo
“primeiro”). Entretanto, em muitas modalidades, os pontos de vista de ancoragem e os fluxos de vídeo podem ser pontos de vista de captura e fluxos de vídeo de captura gerados pela captura de fluxos de vídeo dos pontos de vista de captura. Eles podem ser especificamente pontos de vista para câmeras que capturam um evento em tempo real.
[075] O servidor 201 compreende adicionalmente um gerador de saída 303 que é disposto de modo a gerar um fluxo de vídeo (dados) de saída compreendendo um vídeo que representa a cena. O fluxo de vídeo de saída pode ser transmitido ao cliente 203 que pode prosseguir para renderizar um vídeo da cena, possivelmente renderizando diretamente o fluxo de vídeo de saída recebido (ou possivelmente após executar primeiro alguma manipulação, como, por exemplo, executar algum deslocamento de ponto de vista).
[076] O servidor 201 compreende adicionalmente um receptor 305 que é disposto para receber uma solicitação de ponto de vista do cliente 203, sendo que a solicitação de ponto de vista é indicativa de um ponto de vista solicitado da cena para o fluxo de vídeo de saída. Dessa forma, o cliente 203 pode determinar dinamicamente um ponto de vista a partir do qual se deseja que a cena seja vista, isto é, um ponto de vista a partir do qual as imagens renderizadas devem ser geradas. Uma solicitação de ponto de vista é, então, gerada para indicar o ponto de vista desejado e isso é então transmitido para o servidor 201, o que é indicativo do ponto de vista desejado.
[077] O servidor 201 está disposto de modo a gerar o fluxo de vídeo de saída em resposta à solicitação de ponto de vista recebida. Especificamente, o aparelho compreende um controlador 307 que é acoplado ao receptor 305,
ao gerador de saída 303 e ao processador 301. O controlador 307 é especificamente disposto de modo a selecionar fluxos de vídeo de ancoragem a partir da pluralidade de fluxos de vídeo de ancoragem em resposta à solicitação de ponto de vista e controlar a representação disso no fluxo de vídeo de saída.
[078] O servidor 201 da Figura 2 é disposto de modo a gerar dinamicamente o fluxo de vídeo de saída para compreender ao menos dois dentre os fluxos de vídeo de ancoragem, sendo que um dos fluxos de vídeo de ancoragem é codificado em relação ao outro. Especificamente, o fluxo de vídeo de saída é gerado para incluir quadros de um primeiro fluxo de vídeo de ancoragem e quadros de um segundo fluxo de vídeo de ancoragem, sendo que os quadros do segundo fluxo de vídeo de ancoragem são codificados em relação aos quadros do primeiro fluxo de vídeo. No entanto, os quadros do primeiro fluxo de vídeo de ancoragem não são codificados em relação aos quadros do segundo fluxo de vídeo de ancoragem (embora, em algumas modalidades, eles possam ser codificados em relação a outros quadros do próprio fluxo de vídeo de ancoragem ou mesmo em relação a quadros de outro fluxo de vídeo de ancoragem).
[079] Em muitas modalidades, o fluxo de vídeo de saída é especialmente gerado de modo a compreender um primeiro fluxo de vídeo (dados/bit) que é codificado sem ser relativo a nenhum outro fluxo de vídeo (dados/bit), isto é, ele é codificado de modo não diferencial em relação a qualquer outro fluxo de vídeo compreendido no fluxo de vídeo de saída. Esse primeiro fluxo de vídeo será chamado de fluxo de vídeo principal. Além disso, o fluxo de vídeo de saída é gerado de modo a compreender ao menos um segundo fluxo de vídeo que é codificado em relação ao fluxo de vídeo principal. Este fluxo de vídeo será chamado de fluxo de vídeo diferencial e pode ser especificamente um fluxo de vídeo que é codificado diferencialmente em relação ao fluxo de vídeo principal. Em algumas modalidades, o fluxo de vídeo de saída pode compreender fluxos de vídeo adicionais e pode compreender especificamente fluxos de vídeo diferenciais que tenham sido codificados em relação ao fluxo de bits principal.
[080] Será reconhecido que diferentes abordagens para codificar diferencialmente os fluxos de bits diferenciais podem ser usadas em diferentes modalidades. Como um exemplo específico de baixa complexidade, um quadro residual pode ser gerado para um fluxo de vídeo diferencial por uma subtração de pixel do quadro correspondente do fluxo de vídeo principal do quadro a ser codificado. O quadro residual ou de erro resultante pode, então, ser codificado. Como os valores residuais tenderão a ser significativamente menores que os valores originais (visto que é provável que os quadros se pareçam muito um com o outro, já que estão visualizando a mesma cena a partir de pontos de vista relativamente próximos), a codificação pode ser executada com uma taxa de dados significativamente reduzida.
[081] Será entendido que na maior parte dos esquemas de codificação diferencial práticos, podem ser usadas abordagens mais avançadas, incluindo, por exemplo, segmentos correlacionados nos diferentes quadros e determinação dos valores residuais pela subtração de segmentos correlacionados, etc. Tal abordagem pode ser usada, por exemplo, para refletir deslocamentos de paralaxe entre fluxos de vídeo de ancoragem a fim de fornecer uma codificação mais eficiente. Os dados codificados podem incluir, em adição aos valores residuais,
informações sobre o deslocamento relativo entre diferentes segmentos (por exemplo, representados por vetores).
[082] O controlador 307 pode ser disposto para selecionar dinamicamente um primeiro fluxo dentre os fluxos de vídeo de ancoragem a partir do qual se gera o fluxo de vídeo principal. Tipicamente, o controlador 307 selecionará o fluxo de vídeo de ancoragem para o ponto de vista de ancoragem que corresponda mais proximamente à solicitação de ponto de vista. O fluxo de vídeo principal é gerado de modo a compreender os quadros do primeiro fluxo de vídeo de ancoragem selecionado e pode ser gerado especificamente incluindo diretamente o primeiro fluxo de vídeo selecionado no fluxo de vídeo de saída, embora será reconhecido que em algumas modalidades os quadros podem ser modificados (por exemplo, mudança de faixa dinâmica ou resolução), e em algumas modalidades o fluxo de vídeo principal pode ser gerado tendo mais ou menos quadros do que o primeiro fluxo de vídeo de ancoragem selecionado (por exemplo, por interpolação ou seleção de subconjunto).
[083] Além disso, o controlador 307 pode selecionar dinamicamente um segundo fluxo dentre os fluxos de vídeo de ancoragem a partir do qual se gera o fluxo de vídeo diferencial (ou, em algumas modalidades, pode-se selecionar uma pluralidade de fluxos de vídeo de ancoragem para diferentes fluxos de vídeo diferenciais). Tipicamente, o controlador 307 selecionará o segundo fluxo de vídeo de ancoragem como um vizinho do primeiro fluxo de vídeo de ancoragem (que foi selecionado para o fluxo de vídeo principal).
[084] Consequentemente, o fluxo de vídeo diferencial é gerado para compreender quadros do segundo fluxo de vídeo de ancoragem. Quanto ao fluxo de vídeo principal, algumas modificações podem ser introduzidas (como conversão de taxa de quadro, mudança de faixa dinâmica ou resolução), mas na maioria das modalidades, quadros do fluxo de vídeo diferencial são tipicamente gerados para corresponderem diretamente aos quadros do segundo fluxo de vídeo de ancoragem.
[085] Entretanto, os quadros para o fluxo de vídeo diferencial são codificados em relação aos quadros do fluxo de vídeo principal. Dessa forma, os quadros do segundo fluxo de vídeo de ancoragem são incluídos no fluxo de vídeo de saída em um formato diferencialmente codificado em relação aos quadros do primeiro fluxo de vídeo de ancoragem. O primeiro fluxo de vídeo de ancoragem é para um primeiro ponto de vista de ancoragem, e o segundo fluxo de vídeo de ancoragem é para um segundo ponto de vista de ancoragem, e, assim, o fluxo de vídeo de saída é gerado com um fluxo de vídeo principal correspondendo ao primeiro ponto de vista de ancoragem e um fluxo de vídeo diferencial com quadros diferencialmente codificados correspondendo ao segundo ponto de vista de ancoragem.
[086] O controlador 307 pode, dessa forma, ser disposto para, dinamicamente e em resposta à solicitação de ponto de vista, selecionar qual fluxo de vídeo de ancoragem é codificado como o fluxo de vídeo (não diferencialmente codificado) principal e qual dos fluxos de vídeo de ancoragem é(são) codificado(s) diferencialmente em relação ao fluxo de vídeo principal.
[087] Adicionalmente, o controlador 307 é disposto de modo a adaptar dinamicamente a seleção para mudar em resposta a alterações na solicitação de ponto de vista. Especificamente, o controlador 307 pode selecionar inicialmente o fluxo de vídeo de captura para que o fluxo de vídeo principal seja o primeiro fluxo de ancoragem, porque o primeiro ponto de vista de ancoragem é o ponto de vista de ancoragem mais próximo da solicitação de ponto de vista. Adicionalmente, o segundo fluxo de vídeo de ancoragem é selecionado para o fluxo de vídeo diferencial porque o segundo ponto de vista é um ponto de vista vizinho do primeiro ponto de vista, e tipicamente ele pode ser o vizinho mais próximo (ou pertencer a um conjunto de um número predeterminado de vizinhos; por exemplo, para os pontos de vista de ancoragem que são dispostos em uma linha, os dois pontos de vista mais próximos podem ser selecionados para a geração de fluxos de vídeo diferenciais).
[088] No entanto, se a solicitação de ponto de vista mudar agora para mais próximo do segundo ponto de vista, o controlador 307 pode, em algum ponto, comutar de tal modo que o fluxo de vídeo principal seja selecionado de modo a corresponder ao segundo ponto de vista, isto é, o segundo fluxo de vídeo de ancoragem será usado para o fluxo de vídeo principal. Dessa forma, o controlador 307 comutará o fluxo de vídeo principal do primeiro para o segundo fluxo de vídeo de ancoragem, comutando-o, assim, para um fluxo de vídeo de ancoragem que esteja mais próximo do ponto de vista atual solicitado e que, consequentemente, forneça uma melhor base para a renderização no cliente 203. Além disso, o controlador 307 altera o fluxo de vídeo diferencial para ser baseado no fluxo de vídeo de ancoragem para o segundo ponto de vista ser para o primeiro ponto de vista. Dessa forma, o controlador 307 pode efetivamente alternar entre qual dos fluxos de vídeo de captura é fornecido como um fluxo de vídeo não diferencialmente codificado e qual é codificado como um fluxo de vídeo relativo.
[089] O servidor 201 pode, dessa forma, fornecer continuamente fluxos de vídeo durante a alteração para os mesmos dois pontos de vista de ancoragem, mas mudará qual deles é representado diferencialmente. Dessa forma, o fluxo de vídeo de saída é gerado continuamente durante a transição de modo a incluir tanto o fluxo de vídeo de ancoragem inicial quanto o fluxo de vídeo de ancoragem de destino, mas com esses alternando entre ser o fluxo de vídeo principal e o fluxo de vídeo diferencial, isto é, alternando entre quais são codificados diferencialmente e não diferencialmente. A abordagem de manutenção da presença de ambos os fluxos de vídeo no fluxo de vídeo de saída, mas alternando entre qual será o fluxo de vídeo principal e qual será o fluxo de vídeo diferencial, pode fornecer um desempenho aprimorado em muitas modalidades. Em particular, isso pode proporcionar uma maior consistência e uma renderização melhorada e/ou facilitada no lado do cliente. De fato, para a renderização, os mesmos fluxos de vídeo estão continuamente presentes e, assim, a mesma base para a renderização de síntese de vista está disponível. Em um caso em que, por exemplo, um ponto de vista está se movendo de maneira lenta e gradual do ponto de vista de um fluxo de vídeo para o ponto de vista do fluxo de vídeo vizinho, é possível obter uma transição muito suave e eficiente tipicamente sem efeitos colaterais perceptíveis quando se alterna entre os fluxos de vídeo.
[090] A Figura 4 ilustra um exemplo de elementos do cliente 203. O cliente 203 está no exemplo implementado em um dispositivo cliente que pode ser disposto de modo a renderizar dinamicamente imagens recebidas do servidor 201.
[091] O cliente 203 compreende um receptor 401 que é disposto para receber o fluxo de vídeo de saída do servidor 201. Dessa forma, é recebido um fluxo de vídeo que compreende pelo menos um fluxo de vídeo principal que compreende quadros para um ponto de vista e um fluxo de vídeo diferencial que compreende quadros para um segundo ponto de vista e sendo que os quadros são diferencialmente codificados em relação aos quadros do fluxo de vídeo principal.
[092] O cliente compreende adicionalmente um renderizador 403 que é disposto de modo a renderizar imagens de vista de saída com base nos fluxos de vídeo recebidos. As imagens de vista de saída podem ser fornecidas especificamente em um formato que permita que elas sejam exibidas diretamente em uma tela adequada. Por exemplo, as imagens de vista de saída podem ser geradas e incluídas em um fluxo de bits de acordo com um padrão adequado, como, por exemplo, de acordo com o padrão HDMI ou DisplayPort.
[093] O renderizador 403 é disposto para gerar imagens de vista de saída que correspondem a um ponto de vista de renderização. Tipicamente, o ponto de vista de renderização não corresponderá diretamente a um ponto de vista de um dos fluxos de vídeo recebidos e, portanto, o renderizador 403, na maioria das modalidades, compreenderá uma funcionalidade que é disposta para executar uma síntese de imagem na qual uma imagem/um quadro para o ponto de vista de renderização são gerados a partir de ao menos um dos quadros do fluxo de vídeo principal e do fluxo de vídeo diferencial, isto é, com base em um quadro de imagem do ponto de vista de ancoragem principal ou do ponto de vista de ancoragem diferencial. Tipicamente, a imagem é sintetizada com base em imagens/quadros de ambos os pontos de vista, isto é, com base tanto no fluxo de vídeo principal quanto no fluxo de vídeo diferencial.
[094] Consequentemente, o renderizador 403 pode ser disposto para executar um deslocamento de ponto de vista, etc., para sintetizar uma imagem a partir de um novo ponto de vista. Será entendido que o versado na técnica estará ciente de muitas abordagens e algoritmos diferentes para tal síntese/deslocamento de vista e que qualquer abordagem adequada pode ser usada.
[095] O renderizador 403 compreende adicionalmente um meio para decodificar o fluxo de vídeo de saída recebido e o fluxo de vídeo principal e o fluxo de vídeo diferencial, conforme for adequado. Dessa forma, especificamente, o renderizador 403 é disposto para executar uma decodificação diferencial para gerar os quadros do fluxo de vídeo diferencial com base nos quadros do fluxo de vídeo principal.
[096] Na maioria das modalidades, o ponto de vista de renderização pode mudar dinamicamente e o cliente 203 compreende uma entrada de ponto de vista 405 que recebe uma entrada e gera o ponto de vista de renderização. Tipicamente, a entrada pode ser uma informação inserida pelo usuário como uma entrada manual de um dispositivo para inserção de dados pelo usuário, por exemplo, um controlador de jogos, que pode ser usado por um usuário para mudar de modo manual e dinâmico e controlar o ponto de vista de renderização. Como outro exemplo, a entrada de ponto de vista 405 pode compreender uma funcionalidade de rastreamento de olho ou, por exemplo, pode receber informações de movimento de um headset de RV e, em resposta, pode gerar o ponto de vista de renderização.
[097] Dessa forma, o ponto de vista de renderização pode ser continuamente atualizado e alterado para refletir as mudanças no ponto de vista desejado para o usuário, por exemplo, pela adaptação para seguir o movimento do usuário. Os dados do ponto de vista de renderização são alimentados no renderizador 403 de modo que isso mude dinamicamente para gerar as imagens de saída que correspondem ao ponto de vista de renderização atual.
[098] A informação inserida pelo usuário 405 é adicionalmente acoplada a um transmissor 407 que é disposto para gerar uma solicitação de ponto de vista e transmitir isso para o servidor 201. Em muitas modalidades, o transmissor 407 pode ser disposto simplesmente para transmitir diretamente o ponto de vista de renderização atual para o servidor 201. O servidor 201 pode, então, comparar diretamente este ponto de vista de renderização com o ponto de vista de ancoragem para selecionar os pontos de vista de ancoragem, respectivamente, para o fluxo de vídeo principal e o(s) fluxo(s) de vídeo diferencial(is).
[099] Em outras modalidades, o cliente 203 pode, por exemplo, solicitar diretamente um dos fluxos de vídeo de ancoragem como o fluxo de vídeo de ancoragem principal, e o servidor 201 pode fornecer diretamente o fluxo de vídeo de ancoragem solicitado como um fluxo de vídeo principal e suplementar o mesmo com fluxos de vídeo diferenciais, conforme for adequado. Por exemplo, quando o serviço for configurado, o servidor 201 pode fornecer dados de todos os pontos de vista de ancoragem para o cliente 203 e o cliente pode prosseguir para comparar o ponto de vista de renderização atual com os pontos de vista de ancoragem e solicitar o fluxo de vídeo de ancoragem para o ponto de vista de ancoragem mais próximo.
[100] Dessa forma, o cliente 203 recebe o fluxo de vídeo de saída que compreende o fluxo de vídeo principal e ao menos um fluxo de vídeo diferencial e a partir disso ele gera localmente imagens de saída para o ponto de vista de renderização atual. No entanto, conforme anteriormente descrito, a seleção dos fluxos de vídeo de ancoragem para os fluxos de vídeo principal e diferencial não é fixo, mas pode mudar dinamicamente.
[101] Consequentemente, o cliente 203 compreende um detector 409 que é disposto para detectar quando o fluxo de vídeo de ancoragem selecionado para o fluxo de vídeo principal e o fluxo de vídeo de ancoragem selecionado para o fluxo de vídeo diferencial pelo servidor 201 muda.
[102] Tipicamente, o fluxo de vídeo de saída recebido compreenderá dados indicativos de quais fluxos de vídeo de ancoragem ou pontos de vista de ancoragem são selecionados, respectivamente, para o fluxo de vídeo principal e o fluxo de vídeo diferencial, e o detector 415 pode simplesmente avaliar esses metadados para detectar quando ocorre uma mudança. Em outras modalidades, esses dados não podem ser fornecidos e o detector 415 pode ser disposto, por exemplo, para detectar um deslocamento súbito nas imagens, o que pode corresponder a um deslocamento de paralaxe. Por exemplo, em uma modalidade em que o cliente 203 solicita diretamente um fluxo de vídeo de ancoragem como o fluxo de vídeo principal, o detector 415 pode ser informado pelo transmissor 407 quando um novo fluxo de vídeo de ancoragem é solicitado. Ele pode, então, prosseguir para monitorar os quadros do fluxo de vídeo principal e/ou do fluxo de vídeo diferencial para detectar quando segmentos/objetos de imagem parecem se deslocar subitamente entre quadros consecutivos, visto que isso pode indicar a mudança na paralaxe quando ocorre uma mudança no ponto de vista. A detecção pode considerar especificamente tanto o fluxo de vídeo principal quanto o fluxo de vídeo diferencial para detectar situações nas quais deslocamentos súbitos nos dois fluxos têm correspondência entre si, mas têm sinais opostos, visto que isso refletirá que o deslocamento de paralaxe no fluxo de vídeo principal é o oposto ao do no fluxo de vídeo diferencial, visto que os pontos de vista dos dois fluxos de vídeo são trocados.
[103] Em modalidades em que a lógica de seleção de vista é implementada no cliente 203, então o detector 415 pode determinar implicitamente a alteração com base apenas em informações locais. Nesse caso, o cliente 203 conhece sua posição/pose em relação às posições/poses de ancoragem e pode simplesmente recuperar dados diferentes do servidor 201 dependendo da posição/pose. Nesse caso, a comutação é totalmente implementada no cliente e a única coisa que pode ser presumida quanto a dados do servidor é como a área é organizada (por exemplo, com vistas laterais redundantes), permitindo que o cliente 203 selecione o fluxo de vídeo adequado. Em tal caso, o detector 415 pode detectar diretamente a alteração em resposta ao cliente 203 solicitar ele próprio um novo fluxo de vídeo, por exemplo, com um atraso para refletir o “round-trip time”.
[104] O detector 409 é acoplado a um adaptador 411 que é acoplado adicionalmente ao renderizador 403. O adaptador 411 é disposto para adaptar a renderização em resposta à detecção da ocorrência de uma alteração nos pontos de vista do fluxo de vídeo principal e do fluxo de vídeo diferencial. Especificamente, ele é disposto para adaptar a operação de síntese de modo que isso leve em conta que os pontos de vista para o fluxo de vídeo principal e para o fluxo de vídeo diferencial mudaram. Ele pode fazer isso, por exemplo, alterando a renderização/síntese para que se baseiem no fluxo de vídeo principal ao invés de no fluxo de vídeo diferencial.
[105] Em muitas modalidades, isso pode corresponder especificamente a mudar da execução do deslocamento de ponto de vista com base no fluxo de vídeo diferencial para ser com base no fluxo de vídeo principal. Por exemplo, se o ponto de vista de renderização se mover gradualmente do ponto de vista do fluxo de vídeo principal, digamos, ponto de vista 2, em direção ao ponto de vista do fluxo de vídeo diferencial, digamos, ponto de vista 3, o renderizador 403 mudará, em algum ponto, da sintetização da imagem a partir dos quadros do fluxo de vídeo principal para a sintetização dela com base nos quadros do fluxo de vídeo diferencial, uma vez que estes são de um ponto de vista mais próximo. Ele pode, consequentemente, começar a decodificar o fluxo de vídeo diferencial além de decodificar o fluxo de vídeo principal (visto que isso ainda é necessário para decodificar o fluxo de vídeo diferencial).
[106] O servidor 201 pode adicionalmente detectar que a solicitação de ponto de vista indica agora um ponto de vista mais perto do ponto de vista do fluxo de vídeo diferencial (ponto de vista 3) do que do fluxo de vídeo principal (ponto de vista 2). Consequentemente, é possível comutar de tal modo que o fluxo de vídeo principal seja agora gerado a partir dos quadros do fluxo de vídeo de ancoragem do ponto de vista 3.
Adicionalmente, o fluxo de vídeo diferencial será gerado a partir dos quadros do fluxo de vídeo de ancoragem para o ponto de vista
2.
[107] O detector 409 pode detectar quando essa mudança alcança o cliente 203 e, em resposta a essa detecção, o adaptador 411 pode controlar o renderizador 403 para mudar da sintetização da imagem de saída com base no fluxo de vídeo diferencial para que seja com base no fluxo de vídeo principal. Adicionalmente, como o fluxo de vídeo diferencial agora corresponde ao ponto de vista anterior (ponto de vista 2), esse fluxo de vídeo de ancoragem ainda é fornecido ao cliente 203 por meio do fluxo de vídeo diferencial e, assim, pode ser prontamente recuperado se o ponto de vista de renderização desejado voltar para o ponto de vista 2.
[108] No sistema, o controlador 307 é, dessa forma, disposto para fazer com que o primeiro ponto de vista deixe de ser um primeiro ponto de vista de referência dentre a pluralidade de pontos de vista de referência e o segundo ponto de vista deixe de ser um segundo ponto de vista de referência dentre a pluralidade de pontos de vista de referência para o primeiro ponto de vista ser o segundo ponto de vista de referência e o segundo ponto de vista ser o primeiro ponto de vista de referência. O controlador 307 é disposto para efetuar essa mudança em resposta a uma detecção durante a geração do fluxo de vídeo de saída de uma alteração na solicitação de ponto de vista que satisfaça a um critério.
[109] Será entendido que as abordagens descritas podem ser usadas com qualquer critério para alteração entre qual fluxo de vídeo/ponto de vista é usado como o fluxo de vídeo/ponto de vista principal e qual é usado como um fluxo de vídeo/ponto de vista diferencial.
[110] Em muitas modalidades, o critério pode compreender uma consideração de uma distância entre os pontos de vista de referência e a solicitação de ponto de vista (atual). Especificamente, em algumas modalidades, a solicitação de ponto de vista pode ser diretamente uma solicitação que identifica um dos pontos de vista de referência, e uma alteração entre pontos de vista/fluxos de vídeo diferenciais e principais pode resultar simplesmente da solicitação de ponto de vista mudar para uma solicitação de um ponto de vista diferente.
[111] Em muitas modalidades, a solicitação de ponto de vista pode ser uma indicação de um ponto de vista como uma posição em um sistema de coordenadas que também compreende os pontos de vista de referência (por exemplo, um sistema de coordenadas para uma cena da realidade virtual). Em tais modalidades, o critério pode incluir uma consideração da distância até cada um dos pontos de vista de referência, e o controlador 307 pode ser disposto para selecionar no momento o ponto de vista de referência mais próximo, de acordo com um critério de distância adequado. Dessa forma, se o controlador 307 selecionar continuamente o ponto de vista de referência mais próximo como o ponto de vista principal, um critério para mudar o ponto de vista principal pode ser simplesmente que o ponto de vista solicitado esteja mais perto de um ponto de vista de referência diferente.
[112] Em muitas modalidades, o controlador 307 pode executar um algoritmo que inclui aplicar um critério ou uma regra para selecionar o ponto de vista principal. A detecção da alteração na solicitação de ponto de vista que satisfaça um critério pode corresponder a uma detecção de que o critério para a seleção do ponto de vista principal resultou na seleção de um ponto de vista diferente do ponto de vista principal. Em outras palavras, o critério usado para detectar que ocorreu uma mudança na solicitação de ponto de vista e que deve ser executada uma mudança nos pontos de vista de referência pode ser uma avaliação de se o critério para selecionar o ponto de vista de referência resultou na seleção de um ponto de vista diferente. Especificamente, selecionar e usar continuamente um ponto de vista de referência atual com base em um dado critério ou algoritmo considerando as solicitações de ponto de vista pode também, inerentemente, ser um critério para detectar quando deve ocorrer uma mudança no ponto de vista selecionado para o ponto de vista de referência de um primeiro ponto de vista para um segundo ponto de vista.
[113] Dessa forma, em muitas modalidades, a seleção e a mudança do ponto de vista principal e do ponto de vista diferencial podem ser baseadas em, ou considerar, proximidade (espacial). Por exemplo, um critério simples pode ser usado: Se o olho do observador (conforme indicado pela solicitação de ponto de vista) estiver espacialmente mais próximo a um ponto de vista de referência A do que ao ponto de vista de referência B, então o ponto de vista de referência A é selecionado como a primeira referência e o ponto de vista B é codificado em relação ao ponto de vista A.
[114] Em algumas modalidades, algoritmos mais complexos podem ser levados em conta.
[115] Por exemplo, um modelo de predição pode ser gerado com base em solicitações de ponto de vista e um modelo razoável para movimentos dos olhos é usado para predizer a direção de alterações dos pontos de vista do usuário. A alternância pode, então, ser baseada nessa previsão em vez de em medições de posições observadas originais. Isso pode fornecer uma alternância mais rápida e preventiva.
[116] Em algumas modalidades, o critério para alternância pode incluir uma consideração de uma taxa de alteração das solicitações de ponto de vista. Por exemplo, se o olho se mover em uma velocidade alta, isso resultará em uma alta taxa de alteração para as solicitações de ponto de vista. Neste caso, pode ser desejável predizer futuras solicitações de ponto de vista e, devido à velocidade mais alta, a alternância pode ser feita antes.
[117] Em algumas modalidades, a latência de sistema/comunicação pode ser levada em conta. A latência pode desempenhar uma função indireta e pode ser levada em conta no critério de seleção/alternância. Isso pode ser tipicamente combinado com a consideração da posição atual e taxa de mudança atual das solicitações de ponto de vista.
[118] A medição de latência pode ser indicativa de uma medição de latência para que o canal de comunicação transmita o fluxo de vídeo de saída. A medição de latência pode ser indicativa de uma latência do processamento do aparelho e pode ser uma indicação de um atraso entre receber uma solicitação de ponto de vista e adaptar o fluxo de vídeo de saída com base naquela solicitação de ponto de vista.
[119] Por exemplo, em um cenário em que são usados três fluxos de vídeo dos quais o segundo e o terceiro são codificados diferentemente em relação ao primeiro fluxo de vídeo, uma latência de transmissão poderia ser alta demais para permitir uma alternância de ponto de vista suficientemente rápida. Em detrimento de uma largura de banda mais alta, o sistema pode decidir, em vez disso, enviar 5, 7, 9 ou mais vistas. Agora apenas o hardware decodificador precisa ser suficientemente rápido, mas os dados já foram recebidos. Em tais situações, a alternância de fluxos de vídeo de referência pode ser menos frequente quando é detectada uma alta latência de comunicação do que quando uma baixa latência de comunicação é detectada.
[120] A abordagem pode fornecer um melhor equilíbrio entre taxa de dados, largura de banda, requisitos de recursos por um lado, e a possível qualidade de renderização para alterar pontos de vista de renderização.
[121] O sistema pode utilizar (pelo menos parcialmente) fluxos de vídeo redundantes para resolver problemas de latência no lado do cliente. Isso pode fornecer vistas de ancoragem vizinhas diferencialmente codificadas para cada vista principal para compensar o atraso de transmissão e decodificação. As vistas vizinhas podem ser diferencialmente codificadas uma em relação à outra em uma estrutura em que o número de etapas de decodificação (complexidade de decodificação) é baixo quando se alterna entre vistas. A abordagem pode reduzir a latência no lado do cliente em detrimento da eficiência de codificação de múltiplas vistas no lado do servidor, mantendo, ao mesmo tempo, o uso de largura de banda sob controle.
[122] Um exemplo da abordagem pode ser descrito com referência à Figura 5. Neste exemplo, o fluxo de vídeo principal é intracodificado de modo que cada quadro do fluxo de vídeo principal possa ser decodificado sem qualquer referência a qualquer outro quadro, seja para o mesmo ponto de vista ou a partir de outro ponto de vista. O exemplo é baseado em um conjunto de pontos de vista de ancoragem (que pode ser especificamente as posições da câmera quando a cena foi capturada) dispostos em uma linha reta.
[123] No exemplo, os pacotes de vídeo são gerados pela seleção de quadros e pacotes de vídeo a partir dos fluxos de vídeo de ancoragem. O controlador 307 seleciona um dos pontos de vista de câmeras/captura como o ponto de vista principal. Especificamente, ele seleciona dinamicamente o ponto de vista mais próximo da solicitação de ponto de vista. Os pacotes de vídeo para esse ponto de vista principal estão incluídos no fluxo de vídeo de saída como pacotes/quadros intracodificados (indicados por I na Figura 5), isto é, como o fluxo de vídeo principal. Além disso, os dois pontos de vista vizinhos são selecionados como pontos de vista diferenciais, e pacotes/quadros de vídeo dos dois fluxos de vídeo de ancoragem correspondentes também estão incluídos no fluxo de vídeo de saída como fluxos de vídeo diferenciais. No entanto, para estes pontos de vista, os pacotes/quadros de vídeo codificados são codificados diferencialmente com relação aos pacotes/quadros de vídeo do ponto de vista principal (e são indicados por D na Figura 5). Consequentemente, é gerada uma estrutura de grupo de figuras (GOP) que é espacial (verticalmente ilustrada na Figura 5) em vez de temporal. Dessa forma, esses pontos de vista/fluxos de vídeo são representados por fluxos de vídeo codificados de maneira mais eficiente.
[124] A seleção dos pontos de vista principais, e consequentemente, dos pontos de vista diferenciais, é atualizada dinamicamente para refletir mudanças na solicitação de ponto de vista recebida. Por exemplo, na Figura 5, a situação inicial (em t = t0) é que o cliente 203 solicita um ponto de vista correspondente ao ponto de vista 2. E, consequentemente, recebe um quadro intracodificado para o ponto de vista 2 e quadros diferencialmente codificados para pontos de vista 1 e 3. A codificação diferencial dos pontos de vista 1 e 3 são relativas no que diz respeito ao ponto de vista 2. Isso permite uma comutação de ponto de vista de baixa latência já que apenas uma etapa de decodificação adicional é necessária para gerar imagens para a vista 1 ou 3 uma vez que os dados para as mesmas são fornecidos como parte do fluxo de vídeo de saída a partir do servidor 201.
[125] No exemplo, o ponto de vista desejado pode mudar do ponto de vista 2 para o ponto de vista 3 (ou do mais próximo do ponto de vista 2 para estar mais próximo do ponto de vista 3). No exemplo da Figura 4, pode ocorrer uma alteração do ponto de vista 2 para o ponto de vista 3 em t1 e, consequentemente, a solicitação de ponto de vista transmitida para o servidor 201 pode mudar de uma solicitação para o ponto de vista 2 para uma solicitação para o ponto de vista 3.
[126] Quando o servidor 201 recebe essa solicitação de ponto de vista alterada, ele prossegue para selecionar o ponto de vista de ancoragem 3 como o ponto de vista principal. Consequentemente, ele muda de modo que o fluxo de vídeo principal agora corresponde ao fluxo de vídeo de ancoragem para o ponto de vista 3, em vez de para o ponto de vista 2, e assim os pacotes/quadros de vídeo para o ponto de vista 3 estão agora incluídos no fluxo de vídeo de saída como pacotes/quadros de vídeo intracodificados. Entretanto, além disso, o ponto de vista principal anterior é agora selecionado como um dos pontos de vista diferenciais, e os pacotes/quadros de vídeo para ponto de vista 2 ainda estão incluídos no fluxo de vídeo de saída, mas eles são agora codificados diferencialmente em relação aos pacotes/quadros de vídeo do ponto de vista 3. Dessa forma, os dois fluxos comutaram entre intracodificados e relativamente/diferencialmente codificados. Além disso, o controlador 307 comuta para selecionar o ponto de vista 4 como um ponto de vista diferencial em vez do ponto de vista 1. Após as alterações, o fluxo de vídeo principal corresponde, consequentemente, ao ponto de vista 3 com os fluxos de vídeo diferenciais correspondendo aos pontos de vista 2 e 4.
[127] No entanto, devido ao atraso de rede de ida e volta (round-trip time), as mudanças não atingem o cliente 203 até um instante de tempo mais tarde t2. No entanto, esse não é um grande problema já que o fluxo de vídeo solicitado, a saber, o do ponto de vista 3, pode ser recriado com base nos dados recebidos decodificando-se primeiro os quadros para o ponto de vista 2 e, então, gerando os quadros para o ponto de vista 3 por uma decodificação diferencial dos pacotes diferenciais para o ponto de vista 3. Quando o primeiro quadro intracodificado para o ponto de vista 3 é, então, recebido em t2, o cliente 203 pode comutar para prosseguir para decodificar os quadros para o ponto de vista 3 diretamente e sem precisar de um processo de decodificação de dois estágios.
[128] Dessa forma, a abordagem pode permitir uma transição suave e eficiente entre diferentes fluxos de vídeo e pontos de vista de ancoragem. Qualquer latência de rede associada a um deslocamento pode ser mitigada mediante a execução de uma decodificação diferencial. Adicionalmente, os pontos de vista representados podem ser cuidadosamente selecionados de modo que ocorram transições eficientes e suaves sem a necessidade de transmitir dados de vídeo para todos os pontos de ancoragem. A abordagem fornece um equilíbrio altamente eficiente entre taxa de dados e desempenho. A transição entre dois pontos de vista de ancoragem é especificamente realizada de modo que haja consistência ao longo de toda a transição. Os fluxos de vídeo para ambos os pontos de vista estão disponíveis para o cliente 203 ao longo de toda a transição e, de fato, ambos os fluxos de vídeo são fornecidos ao cliente 203 antes, durante e após a transição. As mudanças não são em quais dentre os fluxos de vídeo são fornecidos ao cliente 203, mas sim em como eles são codificados. O comportamento típico em muitos usos e sistemas práticos é que os usuários frequentemente ficam para lá e para cá entre diferentes posições, assim os cenários ocorrem com frequência onde existe uma mudança repetida entre dois pontos de vista específicos. A abordagem descrita pode ser particularmente vantajosa em tais cenários, já que ela fornece continuamente ambos os fluxos de vídeo ao cliente 203.
[129] No exemplo acima, os quadros para o fluxo de vídeo principal e ponto de vista são codificados sem referência a quadros para outros pontos de vista que não são o primeiro ponto de vista e, de fato, sem referência a quaisquer outros quadros. Ao invés disso, cada quadro do fluxo de vídeo principal é individualmente codificado com base apenas nas informações dentro daquele quadro (intracodificado).
[130] Entretanto, em algumas modalidades, a previsão dos quadros do fluxo de vídeo principal pode ser usada e, de fato, alguns dos quadros do fluxo de vídeo principal podem ser codificados diferencialmente. Em algumas modalidades, a codificação diferencial pode ser possivelmente relativa a quadros de outros fluxos de vídeo do fluxo de vídeo de saída, mas eles não serão diferencialmente codificados em relação aos quadros do fluxo de vídeo diferencial. Dessa forma, enquanto a previsão espacial e a codificação diferencial podem ser usadas em algumas modalidades também para os quadros do fluxo de vídeo principal, a maioria das modalidades não incluirá qualquer codificação diferencial dos quadros do fluxo de vídeo principal com base em qualquer outro fluxo de vídeo, isto é, nenhuma codificação diferencial espacial de quadros do fluxo de vídeo principal é tipicamente incluída.
[131] Em muitas modalidades, alguns dos quadros do fluxo de vídeo principal podem ser diferencialmente codificados em relação a outros quadros do fluxo de vídeo principal. Em tal exemplo, o fluxo de vídeo principal pode, por exemplo, ser codificado com alguns quadros intracodificados e alguns quadros diferencialmente codificados que são diferencialmente codificados em relação a um quadro intracodificado. Os quadros do fluxo de vídeo diferencial ainda são codificados diferencialmente em relação ao quadro do fluxo de vídeo principal para o mesmo instante no tempo, mesmo que esse quadro seja, ele próprio, diferencialmente codificado. Especificamente, o gerador de saída 303 pode, primeiro, codificar diferencialmente um quadro do fluxo de vídeo principal. Ele pode então, com base na codificação, gerar um quadro de referência decodificado pela decodificação dos dados de codificação gerados. Esse quadro (que se correlaciona diretamente àquele que será gerado no cliente 203) é usado, então, como um quadro de referência para a codificação diferencial do fluxo de vídeo diferencial pelo mesmo tempo.
[132] Um exemplo de tal abordagem é mostrado na Figura 6. No exemplo, alguns dos quadros do fluxo de vídeo principal são, consequentemente, também intercodificados a fim de reduzir a taxa de bits resultante.
[133] A fim de decodificar esses quadros, um quadro intracodificado anterior precisa estar disponível para o codificador. Isto introduz uma latência adicional, uma vez que é necessário que um quadro I seja recebido para o novo fluxo de vídeo principal antes da decodificação. Essa latência adicional pode ser compensada, por exemplo, mediante a inclusão de mais vistas vizinhas. No exemplo da Figura 6, é gerado o fluxo de vídeo de saída para compreender um fluxo de vídeo principal e quatro fluxos de vídeo diferenciais. Conforme ilustrado, é criado um GOP que inclui mais quadros e que tem tanto uma extensão espacial quanto temporal.
[134] Em muitas modalidades, o aparelho pode ser disposto para codificar dinamicamente o fluxo de vídeo de saída. Por exemplo, o processador 301 pode receber os fluxos de vídeo de ancoragem em tempo real e eles podem ser fornecidos ao gerador de saída 303, onde um fluxo de vídeo de ancoragem é selecionado como o fluxo de vídeo principal sob o controle do controlador 307. O fluxo de vídeo principal selecionado pode, então, ser codificado, por exemplo, com todos os quadros sendo quadros intracodificados ou com alguns quadros sendo previstos com base em outros quadros do fluxo de vídeo principal. Em algumas modalidades, essa codificação do fluxo de vídeo principal pode ser uma transcodificação se o fluxo de vídeo de ancoragem estiver em um formato de codificação diferente, ou em algumas modalidades, o fluxo de vídeo principal pode ser gerado diretamente como o fluxo de vídeo de ancoragem sem qualquer recodificação.
[135] O controlador 307 pode selecionar adicionalmente um segundo fluxo de vídeo de ancoragem que é codificado como o fluxo de vídeo diferencial. Os quadros desse fluxo de vídeo de ancoragem são, assim, dinâmica e diferencialmente codificados em tempo real em relação aos quadros do fluxo de vídeo principal. Essa codificação diferencial pode incluir, por exemplo, decodificar primeiro o fluxo de vídeo de ancoragem para gerar um fluxo de vídeo decodificado que é, então, diferencialmente codificado em relação aos quadros do fluxo de vídeo principal.
[136] Essa abordagem pode implementar, por exemplo, um servidor de radiodifusão em tempo real que suporta uma experiência de RV.
[137] Em outras modalidades, os fluxos de vídeo de ancoragem podem ser armazenados e o processador 301 pode ser disposto para recuperar o fluxo de vídeo de ancoragem selecionado, e o gerador de saída 303 pode codificar (transcodificar) os fluxos de vídeo recuperados de modo similar ao que foi descrito para a implementação em tempo real.
[138] Em algumas modalidades, a codificação dos diferentes fluxos de vídeo não é realizada dinamicamente durante a operação, mas pode ser realizada previamente. Especificamente, o processador 301 pode armazenar todos os fluxos de vídeo de ancoragem. Além disso, o processador 301 pode armazenar diferencialmente versões codificadas dos fluxos de vídeo de ancoragem.
[139] Por exemplo, para cada fluxo de vídeo de ancoragem, o processador 301 pode armazenar uma versão codificada de modo não diferencial do fluxo de vídeo de ancoragem, bem como várias versões diferencialmente codificadas, sendo que cada versão é diferencialmente codificada em relação a um outro fluxo de vídeo de ancoragem. Por exemplo, se o fluxo de vídeo de saída for gerado de modo a incluir um fluxo de vídeo principal e dois fluxos de vídeo diferenciais, o processador 301 pode, para cada fluxo de vídeo de ancoragem, além da versão codificada não diferencialmente, armazenar uma versão diferencialmente codificada em relação ao fluxo de vídeo de ancoragem vizinho mais próximo em uma direção e uma versão diferencialmente codificada em relação ao fluxo de vídeo de ancoragem vizinho mais próximo na outra direção (para um exemplo em que os pontos de vista de ancoragem estão em uma linha reta).
[140] Em tais exemplos, o gerador de saída 303 pode não gerar o fluxo de vídeo de saída codificando seletivamente os fluxos de vídeo de ancoragem, mas pode recuperar diretamente as versões armazenadas adequadas e inclui-las no fluxo de vídeo de saída. Especificamente, o gerador de saída 303 pode recuperar a versão não diferencialmente codificada para o fluxo de vídeo de ancoragem que é selecionado atualmente para o fluxo de vídeo principal, e para o conjunto de fluxos de vídeo diferenciais, ele pode extrair as versões dos fluxos de vídeo de ancoragem selecionados que são diferencialmente codificados com relação ao fluxo de vídeo de ancoragem selecionado para o fluxo de vídeo principal. Essas versões podem, então, ser incluídas diretamente no fluxo de vídeo de saída.
[141] Por exemplo, se o fluxo de vídeo principal for gerado para o ponto de vista 2, o processador 301 pode extrair a versão codificada de modo não diferencial do fluxo de vídeo de ancoragem para o ponto de vista 2 e as versões diferencialmente codificadas dos fluxos de vídeo de ancoragem para os pontos de vista 1 e 3, que são diferencialmente codificadas com relação ao ponto de vista de ancoragem para o ponto de vista 2.
[142] Essa abordagem pode fornecer um desempenho muito eficiente em muitas modalidades e pode ser especialmente adequada para abordagens em que o servidor 201 está suportando múltiplos clientes, como, por exemplo, para serviços de radiodifusão.
[143] Em modalidades em que os fluxos de vídeo de ancoragem são armazenados em arquivos (quer seja em versões diferentes ou não), a solicitação de ponto de vista recebida do cliente 203 pode indicar diretamente um arquivo específico que é solicitado para que seja fornecido como o fluxo de vídeo principal.
[144] Por exemplo, em vez de o cliente 203 enviar continuamente uma indicação do ponto de vista de renderização atual e de o servidor 201 identificar o ponto de vista de ancoragem mais próximo, o cliente 203 pode determinar diretamente e solicitar um fluxo de vídeo de arquivo/ancoragem. Por exemplo, quando o serviço é iniciado, o servidor 201 pode transmitir informações dos pontos de vista de ancoragem para os quais os fluxos de vídeo de ancoragem são armazenados no servidor 201. O cliente 203 pode, então,
avaliar dinamicamente o ponto de vista de renderização e determinar o fluxo de vídeo de ancoragem desejado atualmente para gerar localmente imagens correspondentes ao ponto de vista de renderização. O cliente 203 pode, então, gerar uma solicitação de ponto de vista que indica diretamente o arquivo desejado. Em resposta, o servidor 201 pode recuperar o arquivo selecionado. Ele pode também recuperar os arquivos dos fluxos de vídeo de ancoragem vizinhos que são codificados diferencialmente em relação ao fluxo de vídeo de ancoragem solicitado e pode inclui-los no fluxo de vídeo de saída.
[145] Tal abordagem pode, em muitas modalidades, fornecer uma abordagem muito eficiente. Por exemplo, em vez de exigir que uma solicitação de ponto de vista dinâmico seja transmitida e atualizada continuamente, o cliente 203 pode transmitir uma nova solicitação de ponto de vista/arquivo apenas quando for solicitada uma mudança no fluxo de vídeo de ancoragem selecionado.
[146] Nos exemplos anteriores, o servidor 201 é disposto para gerar um fluxo de vídeo de saída que compreende um número predeterminado de fluxos de vídeo diferenciais, como especificamente os dois ou quatro vizinhos mais próximos (nos exemplos das Figuras 5 e 6).
[147] Entretanto, em algumas modalidades, o servidor 201 pode ser disposto para adaptar dinamicamente o número de fluxos de vídeo diferenciais. Dessa forma, o número de fluxos de vídeo de ancoragem selecionados para serem incluídos no fluxo de vídeo de saída como diferencialmente codificados em relação ao fluxo de vídeo principal pode variar dependendo das condições de operação.
[148] Em algumas modalidades, o número de fluxos de vídeo diferenciais pode ser adaptado em resposta a uma medida de latência para o canal de comunicação usado para transmitir o fluxo de vídeo de saída e, especificamente, em resposta à latência entre o servidor 201 e o cliente 203. A latência pode ser determinada como um atraso de comunicação e, especificamente, como atraso de rede.
[149] O atraso de rede pode ser determinado, por exemplo, por pacotes de dados transmitidos ao cliente 203 que são marcados com data e hora e com o cliente 203 determinando o atraso mediante a comparação da marcação de data e hora com a hora do recebimento. Como outro exemplo, o cliente 203 pode medir o tempo a partir da transmissão de uma solicitação de ponto de vista que resulta em uma alteração no ponto de vista de ancoragem principal selecionado até a mudança ser detectada, e esse atraso pode ser usado como uma medida de latência. A medida de latência determinada pode, então, ser transmitida ao servidor 201, que pode, assim, determinar o número de fluxos de vídeo diferenciais.
[150] Em muitas modalidades, o servidor 201 pode ser disposto para aumentar o número de fluxos de vídeo diferenciais para uma maior latência. Por exemplo, o servidor 201 pode usar uma função predeterminada entre a latência e o número de fluxos de vídeo diferenciais que aumenta para uma latência crescente (uma função monotonicamente crescente).
[151] Tal abordagem pode permitir uma adaptação flexível da taxa de dados às condições atuais. Para latências maiores, a probabilidade de o ponto de vista de renderização mudar para requerer um fluxo de vídeo de ancoragem adicional do ponto de vista de ancoragem principal aumenta, e, de fato,
para mudanças mais rápidas, a mudança no fluxo de vídeo de ancoragem fornecido pode não ser rápida o suficiente. Por exemplo, se o ponto de vista de renderização puder mudar por uma distância de, por exemplo, dois pontos de vista de ancoragem no tempo de atraso de ida e volta (round-trip time), é necessário que não apenas o primeiro, mas também o próximo fluxo de vídeo de ancoragem mais próximo sejam incluídos no fluxo de vídeo de saída.
[152] Em algumas modalidades, o servidor 201 pode ser disposto para determinar o número de fluxos de vídeo adicionais em resposta a uma medida de variação para a solicitação de ponto de vista.
[153] Por exemplo, para uma solicitação de ponto de vista que tem muitas e grandes variações, pode ser desejável incluir um número maior de fluxos de vídeo diferenciais do que quando existem menos variações para aumentar a probabilidade de o fluxo de vídeo de ancoragem necessário no cliente 203, em qualquer dado momento, ser de fato fornecido a este.
[154] O servidor 201 pode ser disposto especificamente para adaptar o número de fluxos de vídeo diferenciais em resposta à velocidade da variação/alteração na solicitação de ponto de vista. Especificamente, se a solicitação de ponto de vista indicar um ponto de vista em rápida mudança, o servidor 201 pode aumentar o número de fluxos de vídeo diferenciais que são incluídos em relação a quando a solicitação de ponto de vista indicar uma variação lenta.
[155] A abordagem pode, assim, permitir uma adaptação variável da taxa de dados às condições atuais.
[156] Deve-se considerar que, para maior clareza, a descrição acima descreveu as modalidades da invenção com referência a diferentes circuitos, unidades e processadores funcionais. Entretanto, ficará evidente que qualquer distribuição adequada de funcionalidade entre os diferentes circuitos, unidades ou processadores funcionais pode ser usada sem se desviar da invenção. Por exemplo, a funcionalidade ilustrada a ser executada por processadores ou controladores separados pode ser executada pelo mesmo processador ou pelos mesmos controladores. Por isso, as referências a unidades ou circuitos funcionais específicos devem ser consideradas apenas como referências a meios adequados para fornecer a funcionalidade descrita e não como indicativas de uma estrutura ou organização lógica ou física estrita.
[157] A invenção pode ser implementada em qualquer forma adequada, incluindo hardware, software, firmware ou qualquer combinação dos mesmos. A invenção pode, opcionalmente, ser implementada ao menos parcialmente como software de computador que é executado em um ou mais processadores de dados e/ou processadores de sinal digital. Os elementos e componentes de uma modalidade da invenção podem ser física, funcional e logicamente implementados de qualquer forma adequada. De fato, a funcionalidade pode ser implementada em uma unidade única, em uma pluralidade de unidades ou como parte de outras unidades funcionais. Assim, a invenção pode ser implementada em uma unidade única ou pode ser distribuída física e funcionalmente entre diferentes unidades, circuitos e processadores.
[158] Embora a presente invenção tenha sido descrita em conexão com algumas modalidades, não se pretende limitá-la à forma específica aqui apresentada. Ao invés disso,
o escopo da presente invenção é limitado apenas pelas reivindicações em anexo. Adicionalmente, embora possa parecer que um recurso é descrito em conexão com modalidades específicas, o versado na técnica reconhecerá que vários recursos das modalidades descritas podem ser combinados de acordo com a invenção. Nas reivindicações, o termo “que compreende” não exclui a presença de outros elementos ou outras etapas.
[159] Além disso, embora individualmente mencionados, uma pluralidade de meios, elementos, circuitos ou etapas de métodos podem ser implementados, por exemplo, por meio de um único circuito, uma única unidade ou um único processador. Adicionalmente, embora recursos individuais possam estar incluídos em reivindicações diferentes, eles podem ser vantajosamente combinados, e sua inclusão em reivindicações diferentes não implica que uma combinação de recursos não seja viável e/ou vantajosa. Além disso, a inclusão de um recurso em uma categoria de reivindicações não implica na limitação a tal categoria, mas, ao invés disso, indica que o recurso é igualmente aplicável a outras categorias das reivindicações, conforme for adequado. Além disso, a ordem dos recursos nas reivindicações não implica em nenhuma ordem específica na qual os recursos precisam ser trabalhados e, em particular, a ordem das etapas individuais em uma reivindicação de método não implica que as etapas precisam ser executadas nessa ordem. As etapas podem, na verdade, ser executadas em qualquer ordem adequada. Além disso, referências no singular não excluem uma pluralidade. Dessa forma, as referências a “um(a)”, “uns/umas”, “primeiro(a)”, “segundo(a)” etc., não excluem uma pluralidade. Os sinais de referência nas reivindicações são fornecidos meramente como exemplos esclarecedores e não devem ser interpretados como limitadores do escopo das reivindicações de forma alguma.
[160] De acordo com algumas modalidades da invenção, pode ser fornecido:
1. Um aparelho para gerar um fluxo de vídeo de saída, sendo que o aparelho compreende: um processador (301) para fornecer uma pluralidade de fluxos de vídeo de referência para uma pluralidade de pontos de vista de referência para uma cena; um receptor (305) para receber uma solicitação de ponto de vista de um cliente remoto, sendo a solicitação de ponto de vista indicativa de um ponto de vista solicitado da cena para o fluxo de vídeo de saída; um gerador (303) para gerar um fluxo de vídeo de saída que compreende um primeiro fluxo de vídeo compreendendo primeiros quadros de saída a partir de um primeiro fluxo de vídeo de referência da pluralidade de fluxos de vídeo de referência para um primeiro ponto de vista e um segundo fluxo de vídeo compreendendo segundos quadros de saída a partir de um segundo fluxo de vídeo de referência da pluralidade de fluxos de vídeo de referência para um segundo ponto de vista de referência, sendo que os segundos quadros de saída são codificados diferencialmente em relação aos primeiros quadros de saída e sendo que os primeiros quadros de saída não são codificados diferencialmente em relação aos segundos quadros de saída; e um controlador (307) para determinar o primeiro ponto de vista e o segundo ponto de vista como pontos de vista dentre a pluralidade de pontos de vista de referência em resposta à solicitação de ponto de vista; sendo que o controlador (307) é disposto para, em resposta a uma detecção durante a geração do fluxo de vídeo de saída, de uma alteração na solicitação de ponto de vista que satisfaz um critério, alterar o primeiro ponto de vista de ser um primeiro ponto de vista de referência dentre a pluralidade de pontos de vista de referência e o segundo ponto de vista de ser um segundo ponto de vista de referência dentre a pluralidade de pontos de vista de referência para o primeiro ponto de vista ser o segundo ponto de vista de referência e o segundo ponto de vista ser o primeiro ponto de vista de referência.
[161] Em algumas, mas não em todas as modalidades, os primeiros quadros de saída são codificados sem referência a quadros para outros pontos de vista de referência que não o primeiro ponto de vista.
[162] Em algumas, mas não em todas as modalidades, os primeiros quadros de saída são intracodificados.
[163] Em algumas, mas não em todas as modalidades, alguns dentre os primeiros quadros de saída são codificados diferencialmente em relação a outros quadros dentre os primeiros quadros de saída.
[164] Em algumas, mas não em todas as modalidades, o gerador de saída (303) é disposto de modo a gerar os segundos quadros de saída ao codificar diferencialmente os quadros do segundo fluxo de vídeo de referência em relação aos primeiros quadros de saída.
[165] Em algumas, mas não em todas as modalidades, o processador (301) é disposto para armazenar versões diferencialmente codificadas de ao menos alguns dentre a pluralidade de fluxos de vídeo de referência, uma versão codificada diferencialmente de um fluxo de vídeo de referência compreendendo quadros diferencialmente codificados em relação a quadros de outro fluxo de vídeo de referência; e o gerador (303) é disposto para gerar o segundo fluxo de vídeo em resposta à recuperação de uma versão diferencialmente codificada do segundo fluxo de vídeo de referência que é uma versão do segundo fluxo de vídeo compreendendo quadros diferencialmente codificados em relação a quadros do primeiro fluxo de vídeo de referência.
[166] Em algumas, mas não em todas as modalidades, o processador (301) é disposto para armazenar a pluralidade de fluxos de vídeo de referência como arquivos, e o controlador (307) é disposto para selecionar o primeiro fluxo de vídeo de referência e o segundo fluxo de vídeo de referência em resposta a uma solicitação de recuperação de arquivo da solicitação de ponto de vista, sendo que a solicitação de recuperação de arquivo é indicativa de um arquivo armazenado que compreende um fluxo de vídeo de referência.
[167] Em algumas, mas não em todas as modalidades, o aparelho é adicionalmente disposto de modo a incluir vários fluxos de vídeo adicionais no fluxo de vídeo de saída, sendo que cada fluxo de vídeo adicional compreende quadros de saída de um fluxo de vídeo de referência adicional dentre a pluralidade de fluxos de vídeo de referência diferencialmente codificados em relação aos primeiros quadros de saída; e sendo que o controlador (307) é disposto para determinar o número de fluxos de vídeo adicionais em resposta a uma medida de latência para um canal de comunicação para transmitir o fluxo de vídeo de saída.
[168] Em algumas, mas não em todas as modalidades, o aparelho é adicionalmente disposto de modo a incluir vários fluxos de vídeo adicionais no fluxo de vídeo de saída, sendo que cada fluxo de vídeo adicional compreende quadros de saída de um fluxo de vídeo de referência adicional dentre a pluralidade de fluxos de vídeo de referência codificados diferencialmente em relação aos primeiros quadros de saída; e sendo que o controlador (307) é disposto para determinar o número de fluxos de vídeo adicionais em resposta a uma medida de variação para a solicitação de ponto de vista.
[169] Um aparelho para renderizar um fluxo de vídeo, sendo que o aparelho compreende: um receptor (401) para receber o fluxo de vídeo, sendo que o fluxo de vídeo compreende um primeiro fluxo de vídeo que compreende primeiros quadros que representam quadros para um primeiro ponto de vista de uma cena, e um segundo fluxo de vídeo que compreende segundos quadros para a cena a partir de um segundo ponto de vista, sendo que os segundos quadros são diferencialmente codificados em relação aos primeiros quadros e os primeiros quadros não são diferencialmente codificados em relação aos segundos quadros; um renderizador (403) para renderizar imagens de vista de saída para um ponto de vista em resposta aos primeiros quadros de vídeo e aos segundos quadros de vídeo; um detector (409) para detectar uma mudança no fluxo de vídeo do primeiro ponto de vista correspondente a um primeiro ponto de vista de referência e o segundo ponto de vista correspondendo a um segundo ponto de vista de referência para o primeiro ponto de vista correspondendo ao segundo ponto de vista de referência e o segundo ponto de vista correspondendo ao primeiro ponto de vista de referência; e um adaptador (411) para adaptar a renderização em resposta à detecção.
[170] Em algumas, mas não em todas as modalidades, o renderizador (403) é disposto de modo a sintetizar as imagens de vista usando o deslocamento de ponto de vista aplicado a pelo menos um dentre os primeiros quadros e os segundos quadros.
[171] Em algumas, mas não em todas as modalidades, o adaptador é disposto para adaptar o deslocamento de ponto de vista para compensar uma mudança no ponto de vista para ao menos um dentre os primeiros quadros e os segundos quadros.
[172] Um método para gerar um fluxo de vídeo de saída, sendo que o método compreende: fornecer uma pluralidade de fluxos de vídeo de referência para uma pluralidade de pontos de vista de referência para uma cena; receber uma solicitação de ponto de vista de um cliente remoto, sendo a solicitação de ponto de vista indicativa de um ponto de vista solicitado da cena para o fluxo de vídeo de saída; gerar um fluxo de vídeo de saída que compreende um primeiro fluxo de vídeo compreendendo primeiros quadros de saída a partir de um primeiro fluxo de vídeo de referência dentre a pluralidade de fluxos de vídeo de referência para um primeiro ponto de vista e um segundo fluxo de vídeo compreendendo segundos quadros de saída a partir de um segundo fluxo de vídeo de referência dentre a pluralidade de fluxos de vídeo de referência para um segundo ponto de vista de referência, sendo que os segundos quadros de saída são codificados diferencialmente em relação aos primeiros quadros de saída e sendo que os primeiros quadros de saída não são codificados diferencialmente em relação aos segundos quadros de saída; determinar o primeiro ponto de vista e o segundo ponto de vista como pontos de vista dentre a pluralidade de pontos de vista de referência em resposta à solicitação de ponto de vista; e sendo que determinar o primeiro ponto de vista e o segundo ponto de vista compreende alterar, em resposta a uma detecção durante a geração do fluxo de vídeo de saída de uma alteração na solicitação de ponto de vista que atende a um critério, o primeiro ponto de vista de ser um primeiro ponto de vista de referência dentre a pluralidade de pontos de vista de referência e o segundo ponto de vista de ser um segundo ponto de vista de referência dentre a pluralidade de pontos de vista de referência para o primeiro ponto de vista ser o segundo ponto de vista de referência e o segundo ponto de vista ser o primeiro ponto de vista de referência.
[173] Um método de renderização de um fluxo de vídeo, sendo que o método compreende: receber o fluxo de vídeo, sendo que o fluxo de vídeo compreende um primeiro fluxo de vídeo que compreende primeiros quadros que representam quadros para um primeiro ponto de vista de uma cena, e um segundo fluxo de vídeo que compreende segundos quadros para a cena a partir de um segundo ponto de vista, sendo que os segundos quadros são diferencialmente codificados em relação aos primeiros quadros e os primeiros quadros não são diferencialmente codificados em relação aos segundos quadros; renderizar imagens de vista de saída para um ponto de vista em resposta aos primeiros quadros de vídeo e aos segundos quadros de vídeo;
detectar uma mudança no fluxo de vídeo a partir do primeiro ponto de vista correspondendo a um primeiro ponto de vista de referência e do segundo ponto de vista correspondendo a um segundo ponto de vista de referência para o primeiro ponto de vista correspondendo ao segundo ponto de vista de referência e o segundo ponto de vista correspondendo ao primeiro ponto de vista de referência; e e adaptar a renderização em resposta à detecção.

Claims (12)

REIVINDICAÇÕES
1. APARELHO PARA GERAR UM FLUXO DE VÍDEO DE SAÍDA, caracterizado por compreender: um processador (301) para fornecer uma pluralidade de fluxos de vídeo de referência para uma pluralidade de pontos de vista de referência para uma cena; um receptor (305) para receber uma solicitação de ponto de vista de um cliente remoto, sendo a solicitação de ponto de vista indicativa de um ponto de vista solicitado da cena para o fluxo de vídeo de saída; um gerador (303) para gerar um fluxo de vídeo de saída que compreende um primeiro fluxo de vídeo que compreende primeiros quadros de saída a partir de um primeiro fluxo de vídeo de referência dentre a pluralidade de fluxos de vídeo de referência para um primeiro ponto de vista e um segundo fluxo de vídeo que compreende segundos quadros de saída a partir de um segundo fluxo de vídeo de referência dentre a pluralidade de fluxos de vídeo de referência para um segundo ponto de vista de referência, sendo que os segundos quadros de saída são codificados diferencialmente em relação aos primeiros quadros de saída e sendo que os primeiros quadros de saída não são codificados diferencialmente em relação aos segundos quadros de saída; e um controlador (307) para determinar o primeiro ponto de vista e o segundo ponto de vista como pontos de vista dentre a pluralidade de pontos de vista de referência em resposta à solicitação de ponto de vista; sendo que o controlador (307) é disposto para, em resposta a uma detecção durante a geração do fluxo de vídeo de saída, de uma alteração na solicitação de ponto de vista que satisfaz um critério, alterar o primeiro ponto de vista de ser um primeiro ponto de vista de referência dentre a pluralidade de pontos de vista de referência e o segundo ponto de vista de ser um segundo ponto de vista de referência dentre a pluralidade de pontos de vista de referência para o primeiro ponto de vista ser o segundo ponto de vista de referência e o segundo ponto de vista ser o primeiro ponto de vista de referência; sendo que o aparelho é disposto de modo a incluir vários fluxos de vídeo adicionais no fluxo de vídeo de saída, sendo que cada fluxo de vídeo adicional compreende quadros de saída de um fluxo de vídeo de referência adicional dentre a pluralidade de fluxos de vídeo de referência codificados diferencialmente em relação aos primeiros quadros de saída; e sendo que o controlador (307) é disposto para determinar o número de fluxos de vídeo adicionais em resposta a pelo menos um dentre uma medida de variação para as solicitações de ponto de vista, e uma medida de latência para um canal de comunicação para a transmissão do fluxo de vídeo de saída.
2. APARELHO, de acordo com a reivindicação 1, caracterizado pelos primeiros quadros de saída serem codificados sem referência a quadros para outros pontos de vista de referência além do primeiro ponto de vista.
3. APARELHO, de acordo com a reivindicação 2, caracterizado pelos primeiros quadros de saída serem intracodificados.
4. APARELHO, de acordo com a reivindicação 2, caracterizado por alguns dentre os primeiros quadros de saída serem codificados diferencialmente em relação a outros quadros dentre os primeiros quadros de saída.
5. APARELHO, de acordo com qualquer das reivindicações 1 a 4, caracterizado pelo gerador de saída (303) ser disposto para gerar os segundos quadros de saída codificando diferencialmente os quadros do segundo fluxo de vídeo de referência em relação aos primeiros quadros de saída.
6. APARELHO, de acordo com qualquer das reivindicações 1 a 5, caracterizado pelo processador (301) ser disposto para armazenar versões diferencialmente codificadas de ao menos alguns dentre a pluralidade de fluxos de vídeo de referência, uma versão diferencialmente codificada de um fluxo de vídeo de referência que compreende quadros diferencialmente codificados com relação a quadros de um outro fluxo de vídeo de referência; e pelo gerador (303) ser disposto para gerar o segundo fluxo de vídeo em resposta à recuperação de uma versão diferencialmente codificada do segundo fluxo de vídeo de referência que é uma versão do segundo fluxo de vídeo compreendendo quadros diferencialmente codificados em relação a quadros do primeiro fluxo de vídeo de referência.
7. APARELHO, de acordo com qualquer das reivindicações 1 a 6, caracterizado pelo processador (301) ser disposto para armazenar a pluralidade de fluxos de vídeo de referência como arquivos e o controlador (307) ser disposto para selecionar o primeiro fluxo de vídeo de referência e o segundo fluxo de vídeo de referência em resposta a uma solicitação de recuperação de arquivo da solicitação de ponto de vista, sendo que a solicitação de recuperação de arquivo é indicativa de um arquivo armazenado que compreende um fluxo de vídeo de referência.
8. APARELHO, de acordo com qualquer das reivindicações 1 a 7, caracterizado pelo controlador (307) ser disposto para alterar o primeiro ponto de vista em resposta às distâncias entre o ponto de vista solicitado e a pluralidade de pontos de vista de referência.
9. APARELHO, de acordo com qualquer das reivindicações 1 a 8, caracterizado pelo controlador (307) ser disposto para alterar o primeiro ponto de vista em resposta a uma taxa de alteração para o ponto de vista solicitado.
10. APARELHO, de acordo com qualquer das reivindicações 1 a 9, caracterizado pelo controlador (307) ser disposto para alterar o primeiro ponto de vista em resposta a uma medição de latência.
11. MÉTODO PARA GERAR UM FLUXO DE VÍDEO DE SAÍDA, caracterizado por compreender: fornecer uma pluralidade de fluxos de vídeo de referência para uma pluralidade de pontos de vista de referência para uma cena; receber uma solicitação de ponto de vista de um cliente remoto, sendo a solicitação de ponto de vista indicativa de um ponto de vista solicitado da cena para o fluxo de vídeo de saída; gerar um fluxo de vídeo de saída que compreende um primeiro fluxo de vídeo compreendendo primeiros quadros de saída a partir de um primeiro fluxo de vídeo de referência dentre a pluralidade de fluxos de vídeo de referência para um primeiro ponto de vista e um segundo fluxo de vídeo compreendendo segundos quadros de saída a partir de um segundo fluxo de vídeo de referência dentre a pluralidade de fluxos de vídeo de referência para um segundo ponto de vista de referência, sendo que os segundos quadros de saída são codificados diferencialmente em relação aos primeiros quadros de saída e sendo que os primeiros quadros de saída não são codificados diferencialmente em relação aos segundos quadros de saída; determinar o primeiro ponto de vista e o segundo ponto de vista como pontos de vista dentre a pluralidade de pontos de vista de referência em resposta à solicitação de ponto de vista; e sendo que determinar o primeiro ponto de vista e o segundo ponto de vista compreende alterar, em resposta a uma detecção durante a geração do fluxo de vídeo de saída de uma alteração na solicitação de ponto de vista que atende a um critério, o primeiro ponto de vista de ser um primeiro ponto de vista de referência da pluralidade de pontos de vista de referência e o segundo ponto de vista de ser um segundo ponto de vista de referência da pluralidade de pontos de vista de referência para o primeiro ponto de vista ser o segundo ponto de vista de referência e o segundo ponto de vista ser o primeiro ponto de vista de referência; sendo que o método compreende adicionalmente incluir vários fluxos de vídeo adicionais no fluxo de vídeo de saída, sendo que cada fluxo de vídeo adicional compreende quadros de saída de um fluxo de vídeo de referência adicional da pluralidade de fluxos de vídeo de referência codificados diferencialmente em relação aos primeiros quadros de saída; e determinar o número de fluxos de vídeo adicionais em resposta a pelo menos um dentre uma medida de variação para as solicitações de ponto de vista e uma medida de latência para um canal de comunicação para a transmissão do fluxo de vídeo de saída.
12. PRODUTO DE PROGRAMA DE COMPUTADOR, caracterizado por compreender meios de código de programa de computador adaptados para executar todas as etapas conforme definidas na reivindicação 11, quando o dito programa é executado em um computador.
BR112021005361-1A 2018-09-25 2019-09-16 aparelho para gerar um fluxo de vídeo de saída, método para gerar um fluxo de vídeo de saída, e produto de programa de computador BR112021005361A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP18196433.9A EP3629584A1 (en) 2018-09-25 2018-09-25 Apparatus and method for generating and rendering a video stream
EP18196433.9 2018-09-25
PCT/EP2019/074606 WO2020064376A1 (en) 2018-09-25 2019-09-16 Apparatus and method for generating and rendering a video stream

Publications (1)

Publication Number Publication Date
BR112021005361A2 true BR112021005361A2 (pt) 2021-06-15

Family

ID=63787718

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021005361-1A BR112021005361A2 (pt) 2018-09-25 2019-09-16 aparelho para gerar um fluxo de vídeo de saída, método para gerar um fluxo de vídeo de saída, e produto de programa de computador

Country Status (8)

Country Link
US (1) US11317124B2 (pt)
EP (2) EP3629584A1 (pt)
JP (1) JP7378465B2 (pt)
KR (1) KR20210065151A (pt)
CN (1) CN112753224B (pt)
BR (1) BR112021005361A2 (pt)
TW (1) TWI824016B (pt)
WO (1) WO2020064376A1 (pt)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7291224B2 (ja) * 2019-07-26 2023-06-14 富士フイルム株式会社 情報処理装置、情報処理方法、及びプログラム
CN111988596B (zh) * 2020-08-23 2022-07-26 咪咕视讯科技有限公司 虚拟视点合成方法、装置、电子设备及可读存储介质
US20220322306A1 (en) * 2021-03-31 2022-10-06 Tencent America LLC Method and apparatus for defining egest configuration and protocols in 5g uplink streaming
KR102510454B1 (ko) * 2022-09-02 2023-03-16 주식회사 솔디아 전송량을 저감시킨 동영상 전송 시스템

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5091143B2 (ja) 2005-10-07 2012-12-05 韓國電子通信研究院 多重カメラシステムにおける自由な基本設定ビューの符号化/復号化方法及びその装置
CN100496121C (zh) 2007-04-11 2009-06-03 宁波大学 一种交互式多视点视频系统的图像信号处理方法
JP5121367B2 (ja) * 2007-09-25 2013-01-16 株式会社東芝 映像を出力する装置、方法およびシステム
RU2522984C2 (ru) * 2008-08-26 2014-07-20 Ксир Способ переключения от кодированного видеопотока источника к кодированному видеопотоку пункта назначения
WO2012147621A1 (ja) * 2011-04-28 2012-11-01 ソニー株式会社 符号化装置および符号化方法、並びに、復号装置および復号方法
US9286711B2 (en) * 2011-09-30 2016-03-15 Microsoft Technology Licensing, Llc Representing a location at a previous time period using an augmented reality display
CN104396251A (zh) * 2012-04-23 2015-03-04 三星电子株式会社 使用用于多视点视频预测的参考列表对多视点视频进行编码的方法及其装置以及使用用于多视点视频预测的参考列表对多视点视频进行解码的方法及其装置
KR102106536B1 (ko) * 2012-04-25 2020-05-06 삼성전자주식회사 다시점 비디오 예측을 위한 참조픽처세트를 이용하는 다시점 비디오 부호화 방법 및 그 장치, 다시점 비디오 예측을 위한 참조픽처세트를 이용하는 다시점 비디오 복호화 방법 및 그 장치
KR102186605B1 (ko) 2012-09-28 2020-12-03 삼성전자주식회사 다시점 영상 부호화/복호화 장치 및 방법
RU2667605C2 (ru) * 2013-05-10 2018-09-21 Конинклейке Филипс Н.В. Способ кодирования сигнала видеоданных для использования с многовидовым устройством визуализации
US9942474B2 (en) * 2015-04-17 2018-04-10 Fotonation Cayman Limited Systems and methods for performing high speed video capture and depth estimation using array cameras
JP2017135464A (ja) 2016-01-25 2017-08-03 キヤノン株式会社 映像送信装置、映像送信システム、映像送信方法、及びプログラム

Also Published As

Publication number Publication date
US11317124B2 (en) 2022-04-26
EP3857898A1 (en) 2021-08-04
CN112753224A (zh) 2021-05-04
CN112753224B (zh) 2023-07-11
KR20210065151A (ko) 2021-06-03
JP2022514140A (ja) 2022-02-10
TW202027510A (zh) 2020-07-16
EP3857898B1 (en) 2022-02-09
TWI824016B (zh) 2023-12-01
US20220053222A1 (en) 2022-02-17
EP3629584A1 (en) 2020-04-01
WO2020064376A1 (en) 2020-04-02
JP7378465B2 (ja) 2023-11-13

Similar Documents

Publication Publication Date Title
BR112021005361A2 (pt) aparelho para gerar um fluxo de vídeo de saída, método para gerar um fluxo de vídeo de saída, e produto de programa de computador
CN112738010B (zh) 数据交互方法及系统、交互终端、可读存储介质
EP2490179B1 (en) Method and apparatus for transmitting and receiving a panoramic video stream
CN112738534B (zh) 数据处理方法及系统、服务器和存储介质
CN106063277A (zh) 用于对内容进行流传输的方法和装置
CN112738495B (zh) 虚拟视点图像生成方法、系统、电子设备及存储介质
US11282169B2 (en) Method and apparatus for processing and distributing live virtual reality content
TWI831796B (zh) 用於產生場景之影像的設備及方法
Gül et al. Cloud rendering-based volumetric video streaming system for mixed reality services
BR112020025897A2 (pt) Aparelho e método para gerar um fluxo de dados de imagem representando vistas de uma cena tridimensional
US10553029B1 (en) Using reference-only decoding of non-viewed sections of a projected video
RU2760228C2 (ru) Формирование изображений по видео
CN112738009B (zh) 数据同步方法、设备、同步系统、介质和服务器
CN112738646B (zh) 数据处理方法、设备、系统、可读存储介质及服务器
CN116097652A (zh) 基于视口变化的双流动态gop访问
US10609356B1 (en) Using a temporal enhancement layer to encode and decode stereoscopic video content
EP4013059A1 (en) Changing video tracks in immersive videos
CN112734821B (zh) 深度图生成方法、计算节点及计算节点集群、存储介质
CN116848840A (zh) 多视图视频流式传输