ES2869979T3 - Duplicación de pantalla de baja latencia - Google Patents

Duplicación de pantalla de baja latencia Download PDF

Info

Publication number
ES2869979T3
ES2869979T3 ES16724833T ES16724833T ES2869979T3 ES 2869979 T3 ES2869979 T3 ES 2869979T3 ES 16724833 T ES16724833 T ES 16724833T ES 16724833 T ES16724833 T ES 16724833T ES 2869979 T3 ES2869979 T3 ES 2869979T3
Authority
ES
Spain
Prior art keywords
frame
frames
graphics
graphics domain
source device
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
ES16724833T
Other languages
English (en)
Inventor
Mina Ayman Saleh Yanni Makar
Xiaodong Wang
Hongyu Jiang
Na Yu
Vijayalakshmi Raveendran
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2869979T3 publication Critical patent/ES2869979T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/006Details of the interface to the display terminal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/08Details of timing specific for flat panels, other than clock recovery
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/16Use of wireless transmission of display information
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/12Synchronisation between the display unit and other units, e.g. other display units, video-disc players
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Image Generation (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

Un dispositivo fuente (102, 600) que comprende: una interfaz de comunicaciones (604; 704); una memoria que almacena código ejecutable; y al menos un procesador acoplado comunicativamente a la interfaz de comunicaciones (604; 704) y a la memoria, en el que el al menos un procesador y la memoria están configurados para: capturar en la entrada de una unidad de procesador gráfico, GPU, (608) una pluralidad de tramas del dominio de gráficos, comprendiendo cada una de las tramas del dominio de gráficos uno o más tokens de comando de gráficos (214A-214N) y/o elementos de textura, en el que la pluralidad de las tramas del dominio de gráficos comprenden tramas no renderizadas, en el que una trama renderizada es una estructura de datos que representa una pluralidad de píxeles visualizables a través de un medio de visualización; comprimir la pluralidad de tramas del dominio de gráficos mediante una canalización de compresión adaptativa (800) configurada para seleccionar una técnica de compresión de: (a) transmisión de textura escalable (514), configurada para dividir una trama en una pluralidad de etapas que son más pequeñas que la trama, y (b) predicción basada en tramas (516) que usa ubicaciones codificadas diferencialmente para identificar porciones de tramas que contienen datos diferentes entre sí, basándose en una pluralidad de características de las tramas; transmitir las tramas comprimidas a través de la interfaz de comunicaciones (604; 704) a un dispositivo receptor (104; 700); y mostrar una imagen renderizada de al menos parte de la pluralidad de tramas del dominio de gráficos que utilizan dicha GPU (608) en una pantalla (622), en el que el dispositivo fuente y el dispositivo receptor están sincronizados en el tiempo con una referencia de tiempo y ambos dispositivos pueden mostrar al mismo tiempo una imagen renderizada dada de al menos algunas de la pluralidad de tramas del dominio de gráficos basándose en una marca de tiempo de cada una de las al menos algunas de la pluralidad de tramas del dominio de gráficos, en el que la marca de tiempo indica un tiempo específico en el que se mostrará la trama del dominio de gráficos correspondiente.

Description

DESCRIPCIÓN
Duplicación de pantalla de baja latencia
REFERENCIA CRUZADA A SOLICITUDES RELACIONADAS
[0001] La presente solicitud reivindica la prioridad y el beneficio de la solicitud provisional n.° 62/167.765 presentada en la Oficina de Patentes y Marcas de los EE. UU. el 28 de mayo de 2015, y la solicitud no provisional n.° 14/958.336 presentada en la Oficina de Patentes y Marcas de los EE. UU el 3 de diciembre de 2015.
CAMPO TÉCNICO
[0002] La tecnología que se analiza a continuación se refiere, en general, a la transmisión de datos de contenido de pantalla o vídeo desde un dispositivo fuente a un dispositivo receptor con baja latencia.
ANTECEDENTES
[0003] Con los dispositivos electrónicos modernos, a veces ocurre que un usuario desea mostrar contenido de forma inalámbrica, como contenido de vídeo, audio y/o gráficos, de un dispositivo electrónico en otro dispositivo electrónico. En muchos casos, también se desea la capacidad de transmitir el contenido de forma inalámbrica. En términos generales, en un sistema de visualización inalámbrico de este tipo, un "dispositivo fuente" de un primer dispositivo inalámbrico puede proporcionar contenido a través de un enlace inalámbrico a un "dispositivo receptor" de un segundo dispositivo inalámbrico donde el contenido se puede reproducir o visualizar. El contenido se puede reproducir tanto en una pantalla local del dispositivo fuente como en una pantalla del dispositivo receptor simultáneamente, también conocido como duplicación de visualización o de pantalla.
[0004] Al utilizar capacidades inalámbricas para formar una conexión inalámbrica entre los dos dispositivos, un dispositivo fuente puede aprovechar unas mejores capacidades de visualización y/o de audio de un dispositivo receptor (por ejemplo, un televisor digital, proyector, receptor de audio/vídeo, pantalla de alta resolución, etc.) para mostrar el contenido que se almacena inicialmente en el dispositivo fuente o que se transmite al mismo. A medida que la demanda de tales tecnologías continúa aumentando, la investigación y el desarrollo continúan avanzando y mejorando la experiencia del usuario.
[0005] Se llama la atención sobre el documento EP 2 804 094A1, que describe un sistema y procedimiento para reenviar un flujo de comandos de gráficos. Un renderizador de gráficos puede recibir un flujo de comandos de gráficos en el que el flujo de comandos de gráficos contiene información gráfica que se puede procesar como una imagen gráfica. El renderizador de gráficos puede procesar el flujo de comandos de gráficos recibido para generar un flujo de gráficos procesado donde el flujo de gráficos procesado contiene información gráfica equivalente a la información gráfica contenida en el flujo de comandos de gráficos. Un redirector fuente puede codificar el flujo de gráficos procesado para generar un flujo de gráficos formateado. Una pila de protocolos fuente puede enviar el flujo de gráficos formateado a un componente de gráficos de destino. Un redirector de destino puede recibir y decodificar el flujo de gráficos formateado. El redirector de destino puede procesar el flujo de gráficos formateado decodificado para generar un flujo de comandos de gráficos de destino donde el flujo de comandos de destino contiene información gráfica equivalente contenida en el flujo de gráficos formateado.
[0006] De acuerdo con la presente invención, se proporcionan un dispositivo fuente, un dispositivo receptor y procedimientos como se definen en las reivindicaciones independientes. Los modos de realización de la invención se definen en las reivindicaciones dependientes.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0007]
La FIG. 1 es un diagrama de bloques de un sistema de duplicación de pantalla de ejemplo en el que un dispositivo fuente está configurado para transmitir tramas del dominio de gráficos comprimidas, que incluyen comandos de gráficos, a un dispositivo receptor a través de un canal de comunicaciones, de acuerdo con uno o más aspectos de esta divulgación.
Las FIG. 2 y 3 son diagramas que ilustran un ejemplo de una trama de comandos de acuerdo con un aspecto de la divulgación.
La FIG. 4 es un gráfico que ilustra los tamaños de trama a lo largo del tiempo cuando se inicia la pantalla compartida o la duplicación de pantalla para una aplicación de acuerdo con un aspecto de la divulgación.
La FIG. 5 es un diagrama de flujo que ilustra un procedimiento de duplicación de pantalla que utiliza una canalización de compresión adaptativa de acuerdo con aspectos de la divulgación.
La FIG.6 es un diagrama de flujo que ilustra una canalización de compresión adaptativa de acuerdo con un aspecto de la divulgación.
La FIG. 7 es un diagrama de bloques que ilustra componentes seleccionados de un dispositivo fuente configurado para transmitir vídeo de acuerdo con aspectos de la divulgación.
La FIG. 8 es un diagrama de bloques que ilustra un flujo de datos de tramas de ejemplo dentro de un dispositivo fuente de acuerdo con un aspecto de la presente divulgación.
La FIG. 9 es un diagrama de bloques que ilustra componentes seleccionados de un dispositivo receptor configurado para realizar la duplicación de pantalla de acuerdo con un aspecto de la divulgación.
La FIG. 10 es un diagrama de flujo que ilustra un procedimiento de compresión de la canalización de gráficos de acuerdo con algunos aspectos de la divulgación.
La FIG. 11 es un diagrama de flujo que ilustra un procedimiento de descarte de tramas en un dispositivo fuente de acuerdo con un aspecto de la divulgación.
La FIG. 12 es un diagrama que ilustra un proceso de transmisión de textura escalable de una trama de acuerdo con un aspecto de la divulgación.
La FIG. 13 es un diagrama que ilustra dos tramas con la misma longitud y una estructura de trama de una trama utilizada en la predicción basada en tramas de acuerdo con un aspecto de la divulgación.
La FIG. 14 es un diagrama de flujo que ilustra un procedimiento de descarte de tramas del lado del receptor de acuerdo con un aspecto de la divulgación.
DESCRIPCIÓN DETALLADA
[0008] La descripción expuesta a continuación, en relación con los dibujos adjuntos, está prevista como una descripción de diversas configuraciones y no está prevista para representar las únicas configuraciones en las cuales pueden llevarse a la práctica los conceptos y los rasgos característicos descritos en el presente documento. La siguiente descripción incluye detalles específicos con el propósito de proporcionar un entendimiento minucioso de diversos conceptos. Sin embargo, resultará evidente para los expertos en la técnica que estos conceptos se pueden llevar a la práctica sin estos detalles específicos. En algunos casos, circuitos, estructuras, técnicas y componentes bien conocidos se muestran en forma de diagrama de bloques para no oscurecer los conceptos y los rasgos característicos descritos.
[0009] Los diversos conceptos y rasgos característicos presentados a lo largo de esta divulgación pueden implementarse a través de una amplia variedad de sistemas de comunicación inalámbrica, arquitecturas de red y estándares de comunicación. Refiriéndonos ahora a la FIG. 1, se ilustra un diagrama de un sistema de visualización inalámbrico 100 de ejemplo de acuerdo con una o más técnicas de la divulgación. El sistema de visualización inalámbrico 100 utiliza una canalización de compresión adaptativa para facilitar la transmisión inalámbrica de tramas del dominio de gráficos que contienen comandos de gráficos desde un dispositivo fuente 102 a un dispositivo receptor 104 a través de un canal de comunicaciones inalámbricas 106. La canalización de compresión adaptativa está configurada para reducir la latencia de la transmisión. Si bien varios aspectos de esta divulgación se ilustran con un sistema de visualización inalámbrico que utiliza un canal de comunicaciones inalámbricas, los conceptos no se limitan a un canal de comunicaciones inalámbricas y pueden implementarse con canales de comunicaciones no inalámbricas.
[0010] El dispositivo fuente 102 puede ser un dispositivo electrónico configurado para transmitir datos 108 de contenido de pantalla (por ejemplo, vídeo y medios audiovisuales) a un dispositivo receptor 104 a través de un canal de comunicaciones 106. Los ejemplos de un dispositivo fuente 102 incluyen, entre otros, dispositivos como teléfonos inteligentes u otros terminales móviles, tabletas electrónicas, ordenadores portátiles, lectores electrónicos, grabadoras de vídeo digital (DVR), ordenadores de escritorio, dispositivos informáticos ponibles (por ejemplo, relojes inteligentes, gafas inteligentes y similares) y/u otro dispositivo informático/de comunicación que se comunica, al menos parcialmente, a través de comunicaciones inalámbricas.
[0011] El dispositivo receptor 104 puede ser un dispositivo electrónico adaptado para recibir los datos 108 del contenido de la pantalla (por ejemplo, transmisión de vídeo o medios audiovisuales) transportados o transmitidos a través del canal de comunicaciones 106 desde el dispositivo fuente 102. Los ejemplos de un dispositivo receptor 104 pueden incluir, entre otros, dispositivos como teléfonos inteligentes u otros terminales móviles, tabletas electrónicas, ordenadores portátiles, lectores electrónicos, grabadoras de vídeo digital (DVR), ordenadores de escritorio, dispositivos informáticos ponibles (por ejemplo, relojes inteligentes, gafas inteligentes y similares), televisores, monitores y/u otros dispositivos informáticos/de comunicación con una pantalla visual y con capacidades de comunicación inalámbrica.
[0012] El canal de comunicaciones inalámbricas 106 puede incluir uno o más canales capaces de propagar señales comunicativas entre el dispositivo fuente 102 y el dispositivo receptor 104. En algunos ejemplos, el canal de comunicaciones 106 puede ser un canal de comunicaciones inalámbricas. Por ejemplo, el canal de comunicaciones inalámbricas 106 puede implementarse en comunicaciones de radiofrecuencia en una o más bandas de frecuencia, tales como la banda de 2,4 GHz, la banda de 5 GHz, la banda de 60 GHz u otras bandas de frecuencia con licencia o sin licencia. En algunos ejemplos, el canal de comunicaciones 106 puede cumplir con uno o más conjuntos de estándares, protocolos o tecnologías como bus serie universal inalámbrico (WUSB) (promovido por Wireless USB Promoter Group), Wi-Fi (promovido por Wi-Fi Alliance), WiGig (promovido por Wireless Gigabit Alliance) y/o el conjunto de estándares 802.11 del Institute of Electrical and Electronics Engineers (IEEE, Instituto de Ingenieros Eléctricos y Electrónicos) (por ejemplo, 802.11, 802.11a, 802.11b, 802.11g, 802.11n, 802.11ac, 802.11ad, 802.11mc, etc.), así como uno o más estándares, protocolos o tecnologías. Las bandas de frecuencia usadas, como las bandas de 2,4 GHz, 5 GHz y 60 GHz pueden definirse para los fines de esta divulgación tal como se entienden a la luz de los estándares de Wi-Fi, WiGig, uno o más protocolos IEEE 802.11, u otros estándares o protocolos aplicables.
[0013] Como se muestra en la FIG. 1, el dispositivo fuente 102 puede tener datos 108 de contenido de pantalla para ser transportados. El dispositivo fuente 102 puede transportar o transmitir los datos 108 de contenido de pantalla (por ejemplo, vídeo) a través del canal de comunicaciones inalámbricas 106 al dispositivo receptor 104, que puede mostrar los datos 109 de contenido de pantalla correspondientes. El dispositivo fuente 102 y el dispositivo receptor 104 pueden sincronizarse en el tiempo con una referencia de tiempo 110 de modo que los datos 108, 109 del contenido de la pantalla se puedan visualizar en ambos dispositivos de una manera sincronizada en el tiempo (por ejemplo, visualizarse simultáneamente).
[0014] En algunos aspectos de la divulgación, el dispositivo fuente 102 puede usar un procedimiento de transmisión del "dominio de gráficos" para transmitir los datos 108 de contenido de pantalla como tramas del dominio de gráficos deconstruidas al dispositivo receptor 104. Las transmisiones del dominio de gráficos se pueden lograr capturando los datos 108 de contenido de pantalla (por ejemplo, vídeo) en el dispositivo fuente (por ejemplo, en una entrada de una GPU del dispositivo fuente 102) en forma de tokens de comando de gráficos (por ejemplo, comandos de OpenGL) y/o elementos de textura, y transportar los tokens de comando y los elementos de textura al dispositivo receptor 104 a través del canal de comunicaciones 106.
[0015] Un ejemplo de estándar de transmisión del dominio de gráficos es OpenGL (Open Graphics Library) que es una especificación de una API (interfaz de programación de aplicaciones) para renderizar gráficos (por ejemplo, gráficos 2D y 3D, o vídeo). Las implementaciones de OpenGL proporcionan bibliotecas que implementan la API definida por la especificación, que es mantenida por OpenGL Architectural Review Board. Un token de comando es un grupo de bytes o datos correspondientes a un comando de OpenGL. El dispositivo receptor 104 (por ejemplo, una GPU en el dispositivo receptor 104) puede renderizar los tokens de comando y los elementos de textura en tramas que se pueden visualizar, y mostrar las tramas renderizadas en una pantalla del dispositivo receptor 104. Los elementos de textura se pueden mapear a las superficies correspondientes de los objetos en la imagen renderizada. Los elementos de textura pueden agregar varios detalles a los objetos tales como efectos de iluminación, colores, texturas, patrones, etc. Este procedimiento de transmisión del "dominio de gráficos" puede denominarse procedimiento de descarga de gráficos en esta divulgación.
[0016] En esta especificación, una trama que contiene tokens de comando de gráficos (por ejemplo, comandos de OpenGL) se denomina trama del dominio de gráficos que es diferente de una trama visualizable o trama renderizada que contiene gráficos o imágenes renderizados. Una imagen o trama renderizada contiene los datos de cada píxel de la imagen que se va a mostrar. Los ejemplos no limitativos de gráficos renderizados son gráficos rasterizados y gráficos en mapa de bits. En esta especificación, una trama renderizada es una estructura de datos que representa una pluralidad de píxeles visibles a través de una pantalla, monitor u otro medio de visualización. Sin embargo, en un procedimiento de transmisión del dominio de gráficos, el dispositivo receptor 104 recibe los tokens de comando de gráficos y los elementos de textura, y realiza una serie de cálculos y/o aproximación matemática para renderizar una imagen finalizada (por ejemplo, una trama visualizable) en base a los tokens de comando de gráficos recibidos. Durante este proceso de renderización, la información espacial, de textura y/o de iluminación de toda la imagen se combina para determinar el valor de color de cada píxel en la imagen mostrada.
[0017] Los procedimientos de transmisión del dominio de gráficos son diferentes de las transmisiones de imágenes renderizadas en varios aspectos. Por ejemplo, si el dispositivo receptor 104 emplea una pantalla con una resolución mayor que el dispositivo fuente 102, el dispositivo receptor 104 puede emplear los tokens de comando de gráficos (por ejemplo, tokens de comando de OpenGL) y elementos de textura para renderizar la trama del dominio de gráficos en una mayor resolución con calidad similar. Otro ejemplo incluye la capacidad de enviar un elemento de textura que puede usarse en múltiples tramas, permitiendo que el dispositivo fuente 102 envíe el elemento de textura una sola vez para que lo emplee el dispositivo receptor 104 para renderizar varias tramas diferentes. En algunos aspectos de la divulgación, el procedimiento de transmisión del dominio de gráficos puede utilizar una canalización de compresión adaptativa (por ejemplo, una canalización de compresión de gráficos) en el dispositivo fuente 102. La canalización de compresión adaptativa recibe y procesa comandos de gráficos (tramas del dominio de gráficos) y puede almacenar los comandos para un procesamiento futuro o ejecutar los comandos inmediatamente. Ejemplos de la canalización de compresión adaptativa se describirán en detalle a continuación.
[0018] Volviendo a la FIG. 2, se representa un diagrama de bloques, que ilustra un ejemplo de una trama del dominio de gráficos 200 que puede ser emitida por el dispositivo fuente 102 para transmitir datos de contenido de pantalla 108 (por ejemplo, vídeo o medios audiovisuales) al dispositivo receptor 104 usando un procedimiento de transmisión del dominio de gráficos, de acuerdo con al menos un ejemplo de la presente divulgación. Como se ilustra, la trama 200 del dominio de gráficos puede incluir un campo 202 de inicio de trama, un campo 204 de datos de trama y un campo 206 de final de trama. En un ejemplo particular, la trama 200 del dominio de gráficos puede ser una trama de comando de OpenGL.
[0019] El campo 202 de inicio de trama puede incluir un indicador 208 de inicio y un campo 212 de número de trama. El campo 202 de inicio de trama puede indicar el comienzo de una trama 200 del dominio de gráficos (por ejemplo, dentro de una transmisión o flujo de datos). El campo 212 de número de trama puede indicar un número de secuencia de la trama 200 del dominio de gráficos. El valor del campo 212 de número de trama puede incrementarse para tramas subsiguientes. Por ejemplo, el valor del campo 212 de número de trama puede ser f para una trama actual y f 1 para una trama siguiente (por ejemplo, f es un número entero no negativo).
[0020] El campo 204 de datos de trama puede incluir uno o más tokens de comando de gráficos 214A-214N (colectivamente, "tokens 214"). Cada uno de los tokens 214 puede corresponder a un token particular de un comando de gráficos. A continuación se proporcionan más detalles de un ejemplo de un token de los tokens 214 con referencia a la FIG. 3.
[0021] El campo 206 de final de trama puede incluir un indicador 216 de final y un campo 220 de número de trama. El indicador 216 de final puede indicar el comienzo del campo 206 de final de trama (por ejemplo, dentro de un flujo de datos). El campo 220 de número de trama puede indicar un número de secuencia de la trama 200 de comando. En un ejemplo, los campos 212 y 220 de número de trama pueden tener el mismo número de trama de modo que el receptor puede determinar el número de trama mirando uno o ambos campos.
[0022] La FIG. 3 es un diagrama que ilustra detalles adicionales de un ejemplo de un token de comando de gráficos, de acuerdo con uno o más aspectos de esta divulgación. Como se ilustra en la FIG. 3, el token 214 puede incluir un campo 302 de cabecera del token y un campo 304 de datos de token. El campo 302 de cabecera del token puede indicar una o más características del token 214. En algunos ejemplos, el campo 302 de cabecera del token puede tener una longitud fija, como 12 bytes o cualquier otra longitud adecuada. Como se ilustra en la FIG. 3, el campo 302 de cabecera del token puede incluir un campo 306 de tipo de token y un campo 308 de tamaño de datos de token. El campo 306 de tipo de token puede indicar qué comando de gráficos entre un conjunto de comandos de gráficos corresponde al token 214. Es decir, el campo 306 de tipo de token puede indicar de qué comando de gráficos es el token 214. El campo 308 de tamaño de datos del token puede indicar un tamaño del campo 304 de datos del token (por ejemplo, en bytes).
[0023] El campo 304 de datos del token puede indicar uno o más argumentos o datos para el token 214. Por ejemplo, si el tipo de comando de gráficos indicado por el campo 306 de tipo de token toma dos argumentos, el campo 304 de datos del token puede incluir los datos para los dos argumentos. El campo 304 de datos del token también puede incluir una marca de tiempo (por ejemplo, una marca de tiempo de presentación) que indica una hora específica en la que se mostrará la trama correspondiente.
[0024] Como se indicó anteriormente, las transmisiones del dominio de gráficos permiten que el dispositivo fuente 102 transmita tokens de comando de gráficos (por ejemplo, tokens de comando de OpenGL) y elementos de textura, donde los mismos elementos de textura pueden usarse en una o más tramas. Dichas transmisiones del dominio de gráficos pueden permitir que el dispositivo fuente 102 transmita el elemento de textura una sola vez para que lo emplee el dispositivo receptor 104 para renderizar varias tramas diferentes. En algunos casos, los elementos de textura pueden tener un tamaño relativamente grande, en comparación con los tokens de comando de gráficos. El tamaño relativamente grande de los elementos de textura puede resultar en picos de datos que son transmitidos por el dispositivo fuente 102.
[0025] Por ejemplo, la FIG. 4 es un gráfico que ilustra los tamaños de las tramas del dominio de gráficos a lo largo del tiempo cuando se realiza el uso compartido de pantalla o la duplicación de pantalla para una determinada aplicación. Por ejemplo, la aplicación puede ser un videojuego, transmisión de vídeo, presentación de diapositivas y similares. Como se muestra, hay varios picos de datos, por ejemplo, durante el juego o la transmisión de audio/vídeo. Por ejemplo, hay un pico 402 al comienzo de alrededor de 19 Megabytes (MB) de datos que se transmiten cuando se inicia el juego. Esto puede incluir varios elementos de textura, como el fondo del juego y diferentes objetos usados para renderizar las tramas en el juego. Típicamente, estos elementos de textura deben estar disponibles en el dispositivo receptor 104 antes de que pueda comenzar a mostrar el juego. Otros picos de datos 404 y 406 también pueden ocurrir durante otros momentos del juego. Fuera de los picos de datos relativamente más grandes, las otras tramas del dominio de gráficos (por ejemplo, con tokens de comando de gráficos) pueden ser de tamaño relativamente pequeño. En algunos casos, las tramas relativamente grandes en los picos de datos pueden provocar retardos en las transmisiones. Por ejemplo, suponiendo que un ancho de banda o tasa de bits disponible es de 200 Megabits por segundo (Mbps), habría un retardo significativo entre los datos transmitidos por el dispositivo fuente 102 y los datos recibidos por el dispositivo receptor 104.
[0026] El retardo descrito anteriormente entre los datos transmitidos en el dispositivo fuente 102 y los datos que llegan al dispositivo receptor 104 puede provocar una latencia entre el vídeo o las imágenes visualizadas en el dispositivo fuente y el del dispositivo receptor. Dicho retardo se denominará latencia de duplicación de pantalla en esta especificación. Una latencia de duplicación de pantalla indeseablemente larga puede afectar negativamente a determinadas aplicaciones, como las aplicaciones altamente interactivas y los videojuegos, por ejemplo.
[0027] De acuerdo con aspectos de la presente divulgación, un dispositivo fuente está configurado para descargar la renderización de gráficos a un dispositivo receptor que utiliza una canalización de compresión adaptativa que puede realizar una duplicación de pantalla con una latencia de pantalla a pantalla nula o pequeña (por ejemplo, no perceptible). Por ejemplo, una latencia de pantalla a pantalla pequeña o no perceptible puede ser de 5 milisegundos o menos. La latencia de pantalla a pantalla (o latencia de visualización a visualización) se refiere a la latencia o retardo de tiempo entre una trama que se muestra en el dispositivo fuente y la trama correspondiente que se muestra en el dispositivo receptor. La canalización de compresión adaptativa puede configurarse para utilizar selectivamente diversas herramientas o técnicas de compresión para reducir la latencia de pantalla a pantalla. Algunos ejemplos de estas herramientas de compresión incluyen la transmisión de texturas escalables, la predicción basada en tramas, el descarte de tramas y las técnicas de compresión sin pérdidas o con pérdidas. La aplicación de estas herramientas y técnicas de compresión se describirá con más detalle a continuación.
[0028] Las FIG. 5 y 6 son diagramas de flujo que ilustran un procedimiento 500 de duplicación de pantalla que utiliza una canalización de compresión adaptativa de acuerdo con aspectos de la presente divulgación. El procedimiento 500 de duplicación de pantalla puede realizarse mediante un dispositivo fuente ilustrado en cualquiera de las FIG. 1, 7 y/u 8, o cualquier aparato adecuado. En el bloque 502, el dispositivo fuente captura una pluralidad de tramas del dominio de gráficos de datos de contenido de pantalla o datos de vídeo. Por ejemplo, una o más aplicaciones (por ejemplo, los módulos de aplicaciones 620 de la FIG. 6) que operan en el dispositivo fuente pueden generar uno o más tokens de comando de gráficos (por ejemplo, tokens de comando de OpenGL) y texturas. Estos tokens de comando de gráficos pueden almacenarse y/o agruparse en una o más tramas del dominio de gráficos para su posterior procesamiento. Aquí, cada trama capturada incluye uno o más tokens de comando de gráficos y/o texturas. Por ejemplo, los datos del contenido de la pantalla pueden ser los datos de vídeo 108 de la FIG. 1 o cualquier dato multimedia de transmisión adecuado. El dispositivo fuente puede utilizar un módulo de transmisión de datos 610 para capturar una trama del dominio de gráficos reteniendo, transmitiendo, transportando y/o almacenando los correspondientes tokens de comando de gráficos y/o texturas de la trama en la entrada de una GPU (por ejemplo, la GPU 608 de las FIG. 7 y 8) del dispositivo fuente. Las tramas del dominio de gráficos capturadas pueden almacenarse en un almacenamiento de memoria (por ejemplo, el medio de almacenamiento 606 de la FIG. 7) para su posterior procesamiento.
[0029] En el bloque 504, el dispositivo fuente utiliza una canalización de compresión adaptativa para procesar o comprimir la pluralidad de tramas del dominio de gráficos basándose en una o más características de las tramas. Por ejemplo, el dispositivo fuente puede implementar la canalización de compresión adaptativa mostrada en la FIG. 6. La canalización de compresión adaptativa puede procesar o comprimir las tramas mediante al menos uno de transmisión de textura escalable, predicción basada en tramas, descarte de tramas y/o compresión de datos con pérdidas/sin pérdidas. Refiriéndose a la FIG. 6, en el bloque 510, el dispositivo fuente puede utilizar una lógica 624 de transmisión de datos (ver la FIG. 8) para determinar las características de las tramas. Los ejemplos no limitativos de las características incluyen el número de trama, la longitud de la trama, las diferencias y/o similitudes de datos entre tramas adyacentes, la presencia de texturas, la cantidad de tokens de comando contenidos en una trama y la marca de tiempo de la presentación. En función de las características de las tramas, el dispositivo fuente puede comprimir las tramas utilizando transmisión de textura escalable (bloque 514), predicción basada en tramas (bloque 516), descarte de tramas (bloque 518) o compresión de datos con pérdidas/sin pérdidas (bloque 520). El dispositivo fuente puede utilizar cada una de estas herramientas y técnicas de compresión para comprimir o reducir el tamaño de las tramas, y se describirán con más detalle a continuación.
[0030] Volviendo a la FIG. 5, en el bloque 506, el dispositivo fuente transmite las tramas del dominio de gráficos comprimidas a través de una interfaz de comunicaciones a un dispositivo receptor. El dispositivo receptor puede ser el dispositivo receptor 104 de la FIG. 1 o cualquier aparato adecuado. En un ejemplo, el dispositivo fuente puede utilizar un transmisor 614 (FIG. 7 y 8) para transmitir las tramas comprimidas. Las tramas comprimidas pueden cargarse en un búfer del transmisor 614 y procesarse (por ejemplo, conversión de digital a analógico, modulación y conversión de frecuencia) en una señal adecuada para su transmisión a través de un canal de comunicaciones inalámbricas.
[0031] En el bloque 508, el dispositivo fuente muestra una imagen renderizada de las tramas del dominio de gráficos en sincronización de tiempo con una imagen renderizada correspondiente de las tramas comprimidas mostradas en el dispositivo receptor. Las imágenes renderizadas se consideran sincronizadas en el tiempo cuando el desfase de tiempo entre las imágenes visualizadas está dentro de un umbral predeterminado (por ejemplo, 5 milisegundos o menos). En un ejemplo particular, las imágenes renderizadas pueden mostrarse simultáneamente. Por ejemplo, el dispositivo fuente puede renderizar las tramas del dominio de gráficos utilizando una GPU 608 (FIG. 8) y muestra la imagen renderizada en una pantalla 622 (FIG. 8). El dispositivo fuente y el dispositivo receptor pueden sincronizarse en el tiempo con una referencia de tiempo común de modo que ambos dispositivos puedan mostrar la imagen deseada sustancialmente al mismo tiempo, por ejemplo, de acuerdo con la marca de tiempo de presentación de las tramas.
[0032] De acuerdo con el procedimiento 500 descrito con referencia a las FIG. 5 y 6, la canalización de compresión adaptativa descrita permite que las tramas del dominio de gráficos (es decir, las tramas que incluyen tokens de comando) se compriman y transmitan a través del canal de comunicaciones en menos tiempo en relación con las tramas sin comprimir. Por lo tanto, es posible reducir la latencia de la duplicación de pantalla. La latencia reducida de la canalización de gráficos facilita la visualización sincronizada de las tramas del dominio de gráficos tanto en el dispositivo fuente como en el dispositivo receptor sin un retardo perceptible entre los dispositivos.
[0033] La FIG. 7 es un diagrama de bloques que ilustra componentes seleccionados de un dispositivo fuente 600 de acuerdo con un aspecto de la divulgación. El dispositivo fuente 600 incluye circuitos de procesamiento 602 operativamente acoplados a, o dispuestos en comunicación eléctrica con una interfaz de comunicaciones 604 y un medio de almacenamiento 606. Los circuitos de procesamiento 602 incluyen circuitos dispuestos para obtener, procesar y/o enviar datos, controlar el acceso y almacenamiento de datos, emitir comandos y controlar otras operaciones deseadas. Los circuitos de procesamiento 602 pueden incluir circuitos adaptados para implementar la programación deseada proporcionada por medios apropiados, y/o circuitos adaptados para realizar una o más funciones y procesos descritos en esta divulgación, por ejemplo, en las FIG. 5, 6 y 8-13.
[0034] Por ejemplo, los circuitos de procesamiento 602 pueden implementarse como uno o más procesadores, uno o más controladores y/u otra estructura configurada para ejecutar software, programación, códigos ejecutables y/o ejecutar funciones específicas. Ejemplos de los circuitos de procesamiento 602 pueden incluir un procesador de propósito general, un procesador de señales digitales (DSP), un circuito integrado específico de la aplicación (ASIC), una matriz de puertas programables in situ (FPGA) u otro componente de lógica programable, lógica de transistores o de puertas discretas, componentes de hardware discretos o cualquier combinación de los mismos diseñada para realizar las funciones descritas en el presente documento. Un procesador de propósito general puede incluir un microprocesador, así como cualquier procesador, controlador, microcontrolador o máquina de estados convencional. Los circuitos de procesamiento 602 también pueden implementarse como una combinación de componentes informáticos, tal como una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores junto con un núcleo de DSP, un ASIC y un microprocesador o cualquier otra pluralidad de configuraciones variables. Estos ejemplos de circuitos de procesamiento 602 son con fines de ilustración y también se contemplan otras configuraciones adecuadas dentro del alcance de la presente divulgación.
[0035] Los circuitos de procesamiento 602 pueden incluir circuitos adaptados para procesar datos, incluyendo la ejecución de programación o código, que se puede almacenar en el medio de almacenamiento 606. Como se usa en el presente documento, el término "programación" se debe interpretar ampliamente para incluir sin limitación instrucciones, conjuntos de instrucciones, código, segmentos de código, código de programa, programas, subprogramas, módulos de software, aplicaciones, aplicaciones de software, paquetes de software, rutinas, subrutinas, objetos, ejecutables, hilos de ejecución, procedimientos, funciones, etc., independientemente de si se denomina software, firmware, middleware, microcódigo, lenguaje de descripción de hardware o de otro modo.
[0036] En algunos casos, los circuitos de procesamiento 602 pueden incluir una unidad de procesamiento de gráficos (GPU) 608 y/o un circuito o módulo de transmisión de datos de vídeo 610. La GPU 608 incluye, en general, circuitos y/o programación (por ejemplo, programación almacenada en el medio de almacenamiento 606) adaptados para procesar datos gráficos y renderizar tramas de gráficos o datos de contenido de pantalla basándose en uno o más tokens de comando de gráficos y/o elementos de textura para mostrar mediante una interfaz de usuario, pantalla, monitor o un dispositivo de salida.
[0037] El circuito/módulo de transmisión de datos 610 puede incluir circuitos y/o programación (por ejemplo, programación almacenada en el medio de almacenamiento 606) adaptados para transmitir datos de vídeo o datos de contenido de pantalla en forma de tokens de comando de gráficos y elementos de textura a un dispositivo receptor. En algunos ejemplos, el circuito/módulo de transmisión de datos 610 puede encapsular el uno o más tokens de comando de gráficos y/o texturas en una trama de comando, tal como la trama del dominio de gráficos 200 de la FIG.
2. En algunos ejemplos, el circuito/módulo de transmisión de datos 610 puede capturar los tokens de comando de gráficos y/o los elementos de textura en una entrada de la GPU 608 u otros circuitos de procesamiento de gráficos. En algunos ejemplos, el circuito/módulo de transmisión de datos 610 puede implementar una canalización de compresión adaptativa configurada para comprimir tramas de comando de gráficos utilizando uno o más de transmisión de textura escalable, predicción basada en tramas, descarte de tramas y/o compresión de datos con pérdidas/sin pérdidas, basándose en las características de las tramas, como se describe con más detalle a continuación en el presente documento. Como se usa en el presente documento, la referencia a los circuitos y/o la programación asociada con el dispositivo fuente 600 y los procesos realizados pueden denominarse, en general, como lógica (por ejemplo, puertas lógicas y/o lógica de estructura de datos).
[0038] La interfaz de comunicaciones 604 está configurada para facilitar las comunicaciones inalámbricas del dispositivo fuente 600. Por ejemplo, la interfaz de comunicaciones 604 puede incluir circuitos y/o programación adaptados para facilitar la comunicación de información bidireccionalmente con respecto a uno o más dispositivos receptores. La interfaz de comunicaciones 604 puede acoplarse a una o más antenas (no mostradas) e incluye circuitos transceptores inalámbricos, que incluyen al menos un receptor 612 (por ejemplo, una o más cadenas de receptores) y/o al menos un transmisor 614 (por ejemplo, una o más cadenas de transmisores). En algunos aspectos de la divulgación, la interfaz de comunicaciones 604 puede incluir transmisores y receptores adecuados para comunicaciones por cable (por ejemplo, bus universal en serie (USB), Ethernet, PCI Express, Thunderbolt, etc.)
[0039] El medio de almacenamiento 606 puede representar uno o más dispositivos legibles por procesador para almacenar programación, tal como código o instrucciones ejecutables por procesador (por ejemplo, software, firmware), datos electrónicos, bases de datos u otra información digital. El medio de almacenamiento 606 también puede usarse para almacenar datos (por ejemplo, datos de contenido de pantalla, indicador de flujo escalable, tramas) que son manipulados o procesados por los circuitos de procesamiento 602 cuando se ejecuta programación o código, tal como operaciones de canalización de compresión 618. El medio de almacenamiento 606 puede ser cualquier medio disponible al que se pueda acceder mediante un procesador de propósito general o de propósito especial, incluyendo dispositivos de almacenamiento portátiles o fijos, dispositivos de almacenamiento ópticos y otros medios diversos que puedan almacenar, contener y/o transportar programación o código. A modo de ejemplo y no de limitación, el medio de almacenamiento 606 puede incluir un medio de almacenamiento legible por procesador no transitorio tal como un dispositivo de almacenamiento magnético (por ejemplo, un disco duro, un disco flexible, una cinta magnética), un medio de almacenamiento óptico (por ejemplo, un disco compacto (CD), un disco versátil digital (DVD)), una tarjeta inteligente, un dispositivo de memoria flash (por ejemplo, una tarjeta, una memoria o dispositivo USB), una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una ROM programable (PROM), una PROM borrable (EPROM), una PROM eléctricamente borrable (EEPROM), un registro, un disco extraíble y/u otros medios para almacenar programación, así como cualquier combinación de los mismos.
[0040] El medio de almacenamiento 606 puede estar acoplado a los circuitos de procesamiento 602 de modo que al menos alguno de los circuitos de procesamiento 602 pueda leer información de, y escribir información en el medio de almacenamiento 606. Es decir, el medio de almacenamiento 606 puede acoplarse a los circuitos de procesamiento 602 de modo que al menos pueda accederse al medio de almacenamiento 606 por los circuitos de procesamiento 602, incluyendo ejemplos donde el medio de almacenamiento 606 es una parte integrante de los circuitos de procesamiento 602 y/o ejemplos donde el medio de almacenamiento 606 está separado de los circuitos de procesamiento 602 (por ejemplo, residente en el dispositivo fuente 600, es externo al dispositivo fuente 600 o está distribuido en múltiples entidades).
[0041] El medio de almacenamiento 606 puede incluir programación o código almacenados en el mismo. Dicha programación, cuando es ejecutada por los circuitos de procesamiento 602, puede hacer que los circuitos de procesamiento 602 realicen una o más de las diversas funciones y/o etapas de proceso descritas en el presente documento, por ejemplo, en las FIG. 1, 5, 6 y 10-13. En al menos algunos ejemplos, el medio de almacenamiento 606 puede incluir operaciones de transmisión de datos 616. Las operaciones de transmisión de datos 616 están adaptadas para hacer que los circuitos de procesamiento 602 transmitan datos de contenido de pantalla (por ejemplo, datos de vídeo) en forma de tramas del dominio de gráficos que contienen tokens de comando de gráficos y elementos de textura a un dispositivo receptor a través de la interfaz de comunicaciones 604. En algunos ejemplos, las operaciones de transmisión de datos 616 pueden incluir operaciones de canalización de compresión 618 adaptadas para hacer que los circuitos de procesamiento 602 compriman de forma adaptativa las tramas que contienen tokens de comando de gráficos y texturas basándose en una o más características de las tramas, utilizando uno o más de transmisión de textura escalable, predicción basada en tramas, descarte de tramas o compresión de datos con pérdidas/sin pérdidas, como se describe con más detalle a continuación en el presente documento. El medio de almacenamiento 606 también puede incluir datos que son generados o utilizados por las operaciones de transmisión de datos. Por ejemplo, el medio de almacenamiento 606 puede tener un indicador de flujo escalable para indicar si se debe aplicar o no flujo escalable a la trama.
[0042] El medio de almacenamiento 606 también puede incluir módulos de aplicación 620, cada uno de los cuales puede representar una aplicación proporcionada por una entidad que fabrica el dispositivo fuente 600, operando la programación en el dispositivo fuente 600, y/o una aplicación desarrollada por un tercero para su uso con el dispositivo fuente 600. Ejemplos de módulos de aplicación 620 pueden incluir aplicaciones para juegos, compras, rutas de viaje, mapas, presentación de audio y/o vídeo, procesamiento de texto, hojas de cálculo, voz y/o llamadas, clima, etc. Uno o más módulos de aplicación 620 pueden incluir o generar elementos de textura (texturas) asociados con los módulos de aplicación y las aplicaciones.
[0043] En un ejemplo, donde una aplicación de juego de los módulos de aplicación 620 implica el corte de la fruta que cae (por ejemplo, sandías, aguacates, piñas, etc.), puede haber elementos de textura asociados con la aplicación de juego que pueden incluir una representación gráfica de cada tipo de fruta, así como fondos. Dichos elementos de textura pueden almacenarse en diferentes espacios de color y con diferentes profundidades de bits de sus correspondientes canales de color.
[0044] De acuerdo con uno o más aspectos de la presente divulgación, los circuitos de procesamiento 602 están adaptados para llevar a cabo (junto con el medio de almacenamiento 606 o de forma independiente) cualquiera o todos los procesos, funciones, etapas y/o rutinas para alguno o todos los dispositivos fuente descritos en el presente documento. Tal y como se usa en el presente documento, el término "adaptado" o "configurado" en relación con los circuitos de procesamiento 602 puede referirse a que los circuitos de procesamiento 602 están configurados, se utilizan, están implementados y/o están programados (junto con el medio de almacenamiento 606) para llevar a cabo un proceso, función, etapa y/o rutina particular de acuerdo con diversos rasgos característicos descritos en el presente documento, por ejemplo, en las FIG. 5, 6 y 10-13.
[0045] La FIG. 8 es un diagrama de bloques que ilustra un flujo de datos de ejemplo dentro del dispositivo fuente 600 de acuerdo con un aspecto de la presente divulgación. El dispositivo fuente 600 puede ser el mismo que el dispositivo fuente 110 de la FIG. 7. Como se muestra, uno o más de los módulos de aplicación 620 del dispositivo fuente 600 pueden enviar tramas del dominio de gráficos que contienen tokens de comando de gráficos y texturas, por ejemplo, a la GPU 608. En algunos ejemplos, la GPU 608 puede renderizar estas tramas y enviar el vídeo o las imágenes renderizados a una pantalla 622 o un dispositivo de salida. En algunos ejemplos, la GPU 608 puede no renderizar las tramas del dominio de gráficos, sino que las transmite a un dispositivo receptor. De acuerdo con uno o más aspectos de esta divulgación, una lógica 624 de transmisión de datos (por ejemplo, implementada por el circuito/módulo de transmisión de datos 610 y/o las operaciones de transmisión de datos 616) puede capturar las tramas del dominio de gráficos en una entrada de la GPU 608. Las tramas capturadas pueden almacenarse en el medio de almacenamiento 606 o almacenarse en búfer en la lógica 624 de transmisión de datos. La lógica 624 de transmisión de datos puede comprimir las tramas del dominio de gráficos utilizando una canalización de compresión adaptativa implementada para realizar al menos uno de transmisión de textura escalable, predicción basada en tramas, descarte de tramas y/o compresión de datos con pérdidas/sin pérdidas, en función de las características de la tramas. Las tramas comprimidas se envían al transmisor 614. En un ejemplo, la lógica 624 de transmisión de datos puede generar tokens de comando de gráficos y texturas comprimidos asociados con una pluralidad de tramas que componen una secuencia de tramas. El transmisor 614 puede enviar las tramas comprimidas que contienen tokens de comando de gráficos y texturas a un dispositivo receptor (por ejemplo, el dispositivo receptor 700 de la FIG. 9).
[0046] La FIG. 9 es un diagrama de bloques que ilustra componentes seleccionados de un dispositivo receptor 700 configurado para realizar la duplicación de pantalla de acuerdo con un aspecto de la divulgación. El dispositivo receptor 700 incluye circuitos de procesamiento 702 acoplados a o dispuestos en comunicación eléctrica con una interfaz de comunicaciones 704 y un medio de almacenamiento 706. Los circuitos de procesamiento 702 incluyen circuitos dispuestos para obtener, procesar, transmitir y/o recibir datos, controlar el acceso y almacenamiento de datos, emitir comandos y controlar otras operaciones deseadas. Los circuitos de procesamiento 702 pueden incluir circuitos adaptados para implementar la programación deseada proporcionada por medios apropiados, y/o circuitos adaptados para realizar una o más funciones descritas en esta divulgación, por ejemplo, en las FIG. 1 y 14. Algunos componentes del dispositivo receptor 700 son similares a los del dispositivo fuente 600, y se omitirá la descripción redundante por brevedad.
[0047] En algunos casos, los circuitos de procesamiento 702 pueden incluir una unidad de procesamiento de gráficos (GPU) 708 y/o un circuito o módulo de transmisión de datos 710. La GPU 708 incluye, en general, circuitos y/o programación (por ejemplo, programación almacenada en el medio de almacenamiento 706) adaptada para procesar datos gráficos y renderizar tramas del dominio de gráficos de datos de vídeo o datos de contenido de pantalla basándose en uno o más tokens de comando de gráficos y elementos de textura para su visualización mediante una pantalla 711 o dispositivo de salida.
[0048] El circuito/módulo de transmisión de datos 710 puede incluir circuitos y/o programación (por ejemplo, programación almacenada en el medio de almacenamiento 706) adaptada para recibir tramas del dominio de gráficos (por ejemplo, tramas 200 de la FIG. 2) que contienen tokens de comando de gráficos y/o texturas de un dispositivo fuente (por ejemplo, el dispositivo fuente 600). El circuito/módulo de transmisión de datos 710 puede proporcionar las tramas del dominio de gráficos que contienen tokens de comando de gráficos y/o texturas a una GPU 708, que hace que las tramas sean mostradas por la pantalla 711. En algunos ejemplos, el circuito/módulo de transmisión de datos 710 puede incluir circuitos configurados para descartar una o más tramas en base a la marca de tiempo de presentación de las tramas.
[0049] La interfaz de comunicaciones 704 está configurada para facilitar las comunicaciones inalámbricas del dispositivo fuente. Por ejemplo, la interfaz de comunicaciones 704 puede incluir circuitos y/o programación adaptados para facilitar las comunicaciones de información bidireccionalmente con respecto a uno o más dispositivos fuente 600. La interfaz de comunicaciones 704 puede acoplarse a una o más antenas (no mostradas) e incluye circuitos transceptores inalámbricos, que incluyen al menos un receptor 712 (por ejemplo, una o más cadenas de receptores) y/o al menos un transmisor 714 (por ejemplo, una o más cadenas de transmisores).
[0050] El medio de almacenamiento 706 puede representar uno o más dispositivos legibles por procesador para almacenar programación, tal como código o instrucciones ejecutables por procesador (por ejemplo, software, firmware), datos electrónicos, bases de datos u otra información digital. El medio de almacenamiento 706 también puede usarse para almacenar datos (por ejemplo, tramas del dominio de gráficos recibidas desde un dispositivo fuente) que son manipulados por los circuitos de procesamiento 702 cuando se ejecuta la programación o el código.
El medio de almacenamiento 706 puede ser cualquier medio disponible al que se pueda acceder mediante un procesador de propósito general o de propósito especial, incluyendo dispositivos de almacenamiento portátiles o fijos, dispositivos de almacenamiento ópticos y otros medios diversos que puedan almacenar, contener y/o transportar programación o código. A modo de ejemplo y no de limitación, el medio de almacenamiento 706 puede incluir un medio de almacenamiento legible por procesador no transitorio tal como un dispositivo de almacenamiento magnético (por ejemplo, un disco duro, un disco flexible, una cinta magnética), un medio de almacenamiento óptico (por ejemplo, un disco compacto (CD), un disco versátil digital (DVD)), una tarjeta inteligente, un dispositivo de memoria flash (por ejemplo, una tarjeta, una memoria o dispositivo USB), una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una ROM programable (PROM), una PROM borrable (EPROM), una PROM eléctricamente borrable (EEPROM), un registro, un disco extraíble y/u otros medios para almacenar programación, así como cualquier combinación de los mismos.
[0051] El medio de almacenamiento 706 puede incluir programación almacenada en el mismo. Dicha programación, cuando es ejecutada por los circuitos de procesamiento 702, puede hacer que los circuitos de procesamiento 702 realicen una o más de las diversas funciones y/o etapas de proceso descritas en el presente documento. En al menos algunos ejemplos, el medio de almacenamiento 706 puede incluir operaciones de transmisión de datos 716. Las operaciones de transmisión de datos 716 están adaptadas para hacer que los circuitos de procesamiento 702 reciban flujo de datos de vídeo o datos de contenido de pantalla en forma de tramas que contienen tokens de comando de gráficos y elementos de textura desde un dispositivo fuente a través de la interfaz de comunicaciones 704.
[0052] El medio de almacenamiento 706 también puede incluir módulos de aplicación 720 que pueden representar cada uno una aplicación proporcionada por una entidad que fabrica el dispositivo receptor 700, programación que opera en el dispositivo receptor 700, y/o una aplicación desarrollada por terceros para su uso con el dispositivo receptor 700. Ejemplos de módulos de aplicación 720 pueden incluir aplicaciones para juegos, compras, rutas de viaje, mapas, presentaciones de audio y/o vídeo, procesamiento de texto, hojas de cálculo, voz y/o llamadas, clima, etc.
[0053] De acuerdo con uno o más aspectos de la presente divulgación, los circuitos de procesamiento 702 están adaptados para llevar a cabo (junto con el medio de almacenamiento 706 o de forma independiente) cualquiera o todos los procesos, funciones, etapas y/o rutinas para alguno o todos los dispositivos receptores descritos en el presente documento. Tal y como se usa en el presente documento, el término "adaptado" o "configurado" en relación con los circuitos de procesamiento 702 puede referirse a que los circuitos de procesamiento 702 están configurados, se utilizan, están implementados y/o están programados (junto con el medio de almacenamiento 706) para llevar a cabo un proceso, función, etapa y/o rutina particular de acuerdo con diversos rasgos característicos descritos en el presente documento, por ejemplo, en la FIG. 14.
[0054] La FIG. 10 es un diagrama que ilustra una canalización de compresión adaptativa 800 de acuerdo con algunos aspectos de la divulgación. Esta canalización de compresión adaptativa 800 puede implementarse en un dispositivo fuente ilustrado en cualquiera de las FIG. 1, 7 y 8 o cualquier aparato adecuado. En un ejemplo particular, el dispositivo fuente 600 puede configurarse para utilizar la canalización de compresión adaptativa 800 para procesar o comprimir tramas del dominio de gráficos (en el bloque 504) mientras se realiza el procedimiento de duplicación de pantalla 500 de la FIG. 5. Cuando llega una trama del dominio de gráficos que contiene tokens de comando de gráficos y/o texturas (por ejemplo, una trama de OpenGL), la canalización de compresión adaptativa 800 puede comprimir o reducir de forma adaptativa el tamaño de la trama utilizando varias herramientas o técnicas de compresión para que la trama pueda ser transmitida a un dispositivo receptor en menos tiempo para reducir la latencia de la transmisión.
[0055] En el bloque de decisión 802, el dispositivo fuente puede utilizar sus circuitos de procesamiento 602 para determinar si se aplica o no el descarte de tramas a la trama. Si la trama cumple con ciertos criterios, la trama puede descartarse en el bloque 804. Cuando se descarta una trama, no se transmite al dispositivo receptor, pero aún puede procesarse y/o mostrarse en el dispositivo fuente. Refiriéndose a la FIG. 11, se puede descartar una trama si se cumplen todas o algunas de las siguientes condiciones. En el bloque 902, se determina si la trama es o no una de las primeras m tramas de un flujo de vídeo. En un ejemplo, el valor de m puede ser igual a 2 o más, o cualquier valor adecuado. En el bloque 904, se determina si la trama contiene texturas o elementos de textura. Por ejemplo, las texturas pueden proporcionar el detalle, la textura de la superficie o el color de la superficie de un objeto en las tramas renderizadas. En el bloque 906, se determina si la trama tiene o no los mismos tokens de comando de gráficos que su trama anterior. Por ejemplo, una trama número f puede tener los mismos tokens de comando de gráficos que la trama número f + 1. En el bloque 908, se determina si se descartó o no al menos una trama de las q tramas anteriores. Por ejemplo, el valor de q puede ser igual a 2 o más, o cualquier número adecuado. En el bloque 910, se determina si un retardo de comunicaciones entre el dispositivo fuente y el dispositivo receptor es mayor o no que un cierto umbral. En un ejemplo, el umbral (es decir, el retardo máximo permitido de pantalla a pantalla) puede ser de 5 milisegundos. En un aspecto de la divulgación, el dispositivo fuente puede determinar el retardo comparando la marca de tiempo de presentación de la trama actual que se enviará con la hora actual del sistema en el dispositivo fuente. Esto proporciona una buena heurística para el cálculo del retardo de pantalla a pantalla cuando se tiene en cuenta el retardo de la transmisión.
[0056] En un ejemplo particular, cuando se cumplen todas las condiciones de la FIG. 11, la trama puede descartarse; de lo contrario, la trama no se descarta. En algunos ejemplos, cuando solo se cumplen algunas condiciones de la FIG.
11, es posible descartar la trama. Las condiciones de la FIG. 11 se pueden comprobar en cualquier orden en secuencia y/o en paralelo, sin limitarse al orden particular que se muestra en la figura. En algunos aspectos de la divulgación, se pueden omitir algunas de las condiciones y se pueden agregar otras condiciones. Se puede encontrar más información sobre el descarte de tramas en la solicitud de patente en trámite número 14/589.481 presentada ante la Oficina de patentes y marcas de los Estados Unidos el 5 de enero de 2015.
[0057] Volviendo a la FIG. 10, en el bloque de decisión 806, el dispositivo fuente puede utilizar sus circuitos de procesamiento 602 para determinar si la trama del dominio de gráficos tiene o no texturas. Si la trama tiene texturas, el dispositivo fuente pasa al bloque de decisión 808; de lo contrario, el dispositivo fuente pasa al bloque de decisión 818. En el bloque 808, el dispositivo fuente puede utilizar sus circuitos de procesamiento 602 para decidir si aplicar o no compresión de datos con pérdidas a la trama que contiene texturas. En el bloque 810, el dispositivo fuente puede utilizar sus circuitos de procesamiento 602 para aplicar compresión con pérdidas a los datos de la trama correspondientes a texturas y compresión sin pérdidas a los otros datos de la trama. Por ejemplo, el dispositivo fuente puede comprimir las texturas utilizando un formato JPEG (Joint Photographic Experts Group) con pérdidas.
[0058] En los gráficos, un píxel puede estar representado por tres canales para rojo, verde y azul (RGB) y un canal alfa. El canal alfa especifica la transparencia, que define cómo los colores R, G y B de un píxel se fusionan con otro píxel cuando los dos se superponen, uno encima del otro. En un ejemplo particular, el dispositivo fuente separa una imagen RGB (canales RGB) de una trama de un canal alfa y comprime la imagen RGB como una imagen JPEG. En un ejemplo, el tamaño de la imagen JPEG comprimida se puede representar en 23 bits. El dispositivo fuente puede comprimir selectivamente el canal alfa basándose en el contenido del canal alfa. Por ejemplo, si el canal alfa contiene todo unos (es decir, bits de datos todos iguales a 1), el dispositivo fuente puede transmitir una trama que incluye un indicador alfa con un valor de 0 (o un valor predeterminado) al dispositivo receptor, pero no enviando los datos del canal alfa. Si el canal alfa no contiene todo unos (es decir, datos de unos y ceros), el dispositivo fuente puede comprimir el canal alfa a una imagen JPEG en escala de grises y transmitir la trama, incluida la imagen JPEG en escala de grises y un indicador alfa con un valor de 1 (o un valor predeterminado) al dispositivo receptor.
[0059] En el bloque de decisión 812, el dispositivo fuente puede utilizar sus circuitos de procesamiento 602 para decidir si se aplica o no la transmisión de textura escalable en base a un indicador de transmisión escalable mantenido por el dispositivo fuente. Por ejemplo, el indicador de transmisión escalable puede establecerse en un primer valor (por ejemplo, indicador de transmisión escalable = 1) para habilitar la transmisión de textura escalable, o establecerse en un segundo valor (por ejemplo, indicador de transmisión escalable = 0) para deshabilitar la transmisión de textura escalable. El indicador de transmisión escalable puede establecerse basándose en el ancho de banda de comunicaciones entre el dispositivo fuente y el dispositivo receptor, y/o cualquier retroalimentación proporcionada por el dispositivo receptor. Por ejemplo, cuando el ancho de banda está por debajo de un cierto umbral, el dispositivo fuente puede habilitar la transmisión de textura escalable. En un ejemplo, cuando la calidad de renderización en el dispositivo receptor no es satisfactoria (por ejemplo, artefactos de renderización excesivos), el dispositivo fuente puede inhabilitar la transmisión de textura escalable. Un ejemplo de transmisión de textura escalable se describirá a continuación en la FIG. 12.
[0060] En el bloque 814, el dispositivo fuente puede utilizar sus circuitos de procesamiento 602 para realizar una transmisión de textura escalable de acuerdo con un aspecto de la divulgación. Refiriéndose a la FIG. 12, en la transmisión de textura escalable, el dispositivo fuente puede dividir una trama 1002 en una serie de pequeñas etapas 1004 o capas. Cada una de las pequeñas etapas 1004 es más pequeña que la trama original 1002 en tamaño de datos. Luego, el dispositivo fuente transmite las pequeñas etapas 1004 por separado en secuencia al dispositivo receptor a través de un canal de comunicaciones (por ejemplo, canal Wi-Fi, conexión celular). El dispositivo receptor puede reconstruir o renderizar una imagen o trama 1006 de baja calidad de la trama 1002 original basándose en la primera etapa recibida. Por ejemplo, la imagen 1006 de baja calidad puede tener una resolución más baja que la trama original. Las etapas posteriores proporcionan bits o datos de refinamiento al dispositivo receptor de modo que se puedan construir imágenes de calidad progresivamente mejor (por ejemplo, imágenes 1008 y 1010). En un ejemplo, el dispositivo receptor puede aplicar interpolaciones sucesivas a las etapas para generar las imágenes. Finalmente, la calidad de una trama 1012 construida con todas las etapas puede aproximarse o tener sustancialmente la misma calidad de imagen que la trama 1002 original.
[0061] Volviendo a la FIG. 10, en el bloque 816, el dispositivo fuente puede utilizar sus circuitos de procesamiento 602 para aplicar compresión sin pérdidas a los datos (por ejemplo, tokens de comando) de la trama del dominio de gráficos que no contiene texturas cuando el indicador de transmisión escalable no está activado. En algunos ejemplos, se pueden utilizar técnicas de compresión de datos sin pérdidas generalmente conocidas, como zlib, LZ4 y LZO (Lempel-Ziv-Oberhumer). Si bien la aplicación de compresión de datos puede reducir la latencia de transmisión al transmitir tramas más pequeñas, realizar la compresión de datos puede aumentar el tiempo de procesamiento. Por lo tanto, el dispositivo fuente puede aplicar selectivamente compresión (por ejemplo, zlib, LZ4 y LZO) en base a varios criterios tales como el ancho de banda del canal y el tiempo de procesamiento para realizar la compresión. En general, el dispositivo fuente puede seleccionar aplicar compresión de datos si puede reducir la latencia general teniendo en cuenta el tiempo de procesamiento para realizar la compresión y el tiempo de transmisión de la trama comprimida.
[0062] En el bloque de decisión 818, el dispositivo fuente puede utilizar sus circuitos de procesamiento 602 para decidir si realizar o no una predicción basada en tramas en base a la longitud de la trama del dominio de gráficos. En un aspecto de la divulgación, si una trama actual (por ejemplo, la trama f+1) y su trama anterior (por ejemplo, trama f) tienen la misma longitud, el dispositivo fuente puede utilizar sus circuitos de procesamiento 602 para realizar predicciones basadas en tramas para comprimir o reducir el tamaño de la trama actual en el bloque 820. La FIG. 13 es un diagrama que ilustra la predicción basada en tramas en dos tramas consecutivas 1102 y 1104 (tramas f y tramas f 1) que tienen la misma longitud. En un ejemplo ilustrativo, las ubicaciones en las que las dos tramas contienen datos diferentes pueden ser las ubicaciones de bytes 70, 71, 72, 80, 113, 114, 158, 159, 160, 161 y 188. En un aspecto de la divulgación, el dispositivo fuente puede codificar diferencialmente estas ubicaciones como 70, 1, 1, 8, 33, 1, 44, 1, 1, 1 y 27. En este ejemplo particular, debido a que la primera ubicación es la ubicación 70, la segunda ubicación 71 puede codificarse como 1 (es decir, 71 = 70 1). De manera similar, la tercera ubicación 72 puede codificarse como 1 (es decir, 72 = 71 1), la cuarta ubicación 80 puede codificarse como 8 (es decir, 80 = 72 8), y así sucesivamente. En otros aspectos de la divulgación, pueden usarse otros esquemas de codificación.
[0063] En varios aspectos de la divulgación, el dispositivo fuente puede codificar las ubicaciones diferenciales (es decir, las mismas ubicaciones de las tramas que tienen datos diferentes) usando cualquier esquema de codificación adecuado. En un ejemplo particular, el dispositivo fuente puede codificar las ubicaciones diferenciales usando codificación exponencial de Golomb. En un ejemplo particular, las ubicaciones diferenciales codificadas se convierten en 0000001000110 (es decir, ubicación 70), 1, 1, 0001000, 00000100001, 1, etc. Después de la codificación, el dispositivo fuente transmite una trama 1106 (FIG. 13) con las ubicaciones diferenciales codificadas y los datos nuevos/diferentes de estas ubicaciones al dispositivo receptor.
[0064] Refiriéndose a la FIG. 13, en la predicción basada en tramas, la estructura 1106 de la trama del dominio de gráficos incluye una cabecera 1108 de la trama, un campo 1110 de tamaño, un campo 1112 de ubicaciones codificadas diferencialmente y un campo 1114 de nuevos datos. La cabecera 1108 de la trama marca el comienzo de la trama e indica la aplicación de la compresión de tramas (por ejemplo, predicción basada en tramas) aplicada a esta trama. El campo 1110 de tamaño indica el tamaño de las ubicaciones codificadas. En un ejemplo específico, el tamaño del campo 1110 de tamaño puede ser de dos bytes (2B). Las propias ubicaciones codificadas pueden tener una longitud variable. Estos dos bytes ayudan al decodificador del dispositivo receptor a analizar sintácticamente el número de bytes que contienen las ubicaciones codificadas diferencialmente. El campo 1112 de ubicaciones codificadas diferencialmente indica las ubicaciones donde la trama contiene datos nuevos (es decir, datos diferentes). El campo 1114 de nuevos datos proporciona los valores de los nuevos datos. Por consiguiente, el dispositivo receptor puede construir la trama f+1 basándose en la trama f anterior y la trama 1106, que contiene las ubicaciones de los datos nuevos/diferentes. La trama 1106 puede tener un tamaño o longitud menor que la trama f 11104, de modo que se puede reducir la latencia de transmisión.
[0065] Volviendo a la FIG. 10, en el bloque de decisión 818, si el dispositivo fuente decide no realizar una predicción basada en tramas, puede realizar una compresión sin pérdidas en la trama en el bloque 816 como se describe anteriormente. Las herramientas y técnicas de compresión de tramas de comando de gráficos ilustradas en las FIG.
10-13 no son exhaustivas. En algunos aspectos de la divulgación, un dispositivo fuente puede no implementar algunas de estas herramientas de compresión de tramas y puede incluir otras herramientas adecuadas de compresión de tramas dentro del alcance de la presente divulgación.
[0066] Para lograr una latencia cero o una duplicación de pantalla de latencia no perceptible, el dispositivo fuente y el dispositivo receptor pueden sincronizarse con una fuente de reloj global (por ejemplo, la referencia de tiempo 110 de la FIG. 1) de modo que los dispositivos puedan regular y controlar el tiempo en que una trama en particular se renderiza y/o muestra en una pantalla. En algunos ejemplos, el dispositivo receptor puede obtener el tiempo de los datos recibidos del dispositivo fuente. En esta divulgación, la duplicación de pantalla de latencia no perceptible puede tener una latencia inferior a 5 milisegundos o una latencia en la que un espectador humano no puede percibir un retardo evidente entre las imágenes mostradas por los dispositivos fuente y receptor. En un ejemplo, el dispositivo fuente y el dispositivo receptor pueden sincronizarse con una fuente de reloj adecuada usando el Protocolo de tiempo de red (NTP). En un ejemplo, el dispositivo fuente y el dispositivo receptor pueden sincronizarse con una fuente de reloj usando la función de sincronización de tiempo (TSF) de la misma red Wi-Fi a la que están conectados ambos dispositivos. En un aspecto de la divulgación, si las tramas tienen componentes de audio y vídeo, el componente de audio puede capturarse antes en el lado de la fuente en la capa de aplicación. Cuando los datos de audio llegan al lado del receptor, se sincronizan con la misma fuente de reloj global usada para sincronizar la reproducción de vídeo. La fuente de reloj global puede basarse en NTP, TSF o Wi-Fi.
[0067] La FIG. 14 es un diagrama de flujo que ilustra un procedimiento 1200 de descarte de tramas del lado del receptor de acuerdo con un aspecto de la divulgación. El procedimiento 1200 de descarte de tramas del lado del receptor puede ser realizado por el dispositivo receptor 700 de la FIG. 9 o cualquier aparato adecuado. En el bloque 1202, el dispositivo receptor puede utilizar su interfaz de comunicaciones 704 (FIG. 9) para recibir una o más tramas del dominio de gráficos desde un dispositivo fuente (por ejemplo, el dispositivo fuente 102 de la FIG. 1). Por ejemplo, cada una de las tramas puede incluir un token de comando de gráficos y/o texturas más similares a la trama 200 ilustrada en la FIG. 2. Las tramas pueden comprimirse en el dispositivo fuente mediante una canalización de compresión adaptativa similar a la descrita en las FIG. 6 y 10. La canalización de compresión adaptativa se puede configurar para comprimir o procesar las tramas usando transmisión de textura escalable, predicción basada en tramas, descarte de tramas o compresión de datos con pérdidas/sin pérdidas como se describe anteriormente en las FIG. 10-13.
[0068] En el bloque 1204, el dispositivo receptor renderiza las tramas del dominio de gráficos para su visualización, por ejemplo, utilizando sus circuitos de procesamiento 602 y/o la GPU 608 (FIG. 7). En el bloque de decisión 1206, si la trama llega después de su marca de tiempo de presentación, el dispositivo receptor no muestra esta trama en el bloque 1208; de lo contrario, el dispositivo receptor muestra la trama en el bloque 1210. Cuando el dispositivo receptor se abstiene de mostrar la trama descartada (por ejemplo, no mostrada, abandonada o descartada), el dispositivo receptor todavía puede ejecutar los comandos de gráficos de la trama descartada, por ejemplo, mediante su GPU.
[0069] Aunque los aspectos, disposiciones y modos de realización analizados anteriormente se analizan con detalles y particularidad específicos, pueden redisponerse uno o más de los componentes, etapas, rasgos característicos y/o funciones ilustrados en las FIG. 1-14 y/o combinarse en un único componente, etapa, rasgo característico o función o incorporarse en varios componentes, etapas o funciones. Elementos, componentes, etapas y/o funciones adicionales también se pueden añadir o no utilizarse sin apartarse de la presente divulgación. El aparato, dispositivos y/o componentes ilustrados en las FIG. 1, 7, 8 y/o 9 se pueden configurar para realizar o emplear uno o más de los procedimientos, rasgos característicos, parámetros y/o etapas descritos en las FIG. 1, 5, 6 y/o 10-14. Los algoritmos y procedimientos novedosos descritos en el presente documento también se pueden implementar eficazmente en software y/o incorporarse en hardware, o una combinación de los mismos.
[0070] Aunque los rasgos característicos de la presente divulgación pueden haberse descrito con respecto a determinados modos de realización y figuras, todos los modos de realización de la presente divulgación pueden incluir uno o más de los rasgos característicos ventajosos analizados en el presente documento. En otras palabras, aunque uno o más modos de realización se pueden haber analizado como que tienen determinados rasgos característicos ventajosos, también se pueden usar uno o más de dichos rasgos característicos de acuerdo con cualquiera de los diversos modos de realización analizados en el presente documento. De forma similar, aunque los modos de realización a modo de ejemplo se pueden haber analizado en el presente documento como modos de realización de dispositivo, sistema o procedimiento, se debe entender que dichos modos de realización ejemplares se pueden implementar en diversos dispositivos, sistemas y procedimientos.
[0071] Asimismo, cabe destacar que al menos algunas implementaciones se han descrito como un proceso que se representa como un organigrama, un diagrama de flujo, un diagrama estructural o un diagrama de bloques. Aunque un organigrama puede describir las operaciones como un proceso secuencial, muchas de las operaciones pueden realizarse en paralelo o simultáneamente. Además, el orden de las operaciones puede redisponerse. Un proceso se termina cuando se acaban sus operaciones. Un proceso puede corresponder a un procedimiento, una función, una subrutina, un subprograma, etc. Cuando un proceso corresponde a una función, su finalización corresponde a un retorno de la función a la función de llamada o a la función principal. Los diversos procedimientos descritos en el presente documento se pueden implementar parcial o totalmente mediante programación (por ejemplo, instrucciones y/o datos) que se puedan almacenar en un medio de almacenamiento legible por procesador, y ejecutarse por uno o más procesadores, máquinas y/o dispositivos.
[0072] Los expertos en la técnica apreciarían, además, que los diversos bloques lógicos, módulos, circuitos y etapas de algoritmo ilustrativos descritos en relación con los modos de realización divulgados en el presente documento pueden implementarse como hardware, software, firmware, middleware, microcódigo o cualquier combinación de los mismos. Para ilustrar claramente esta intercambiabilidad, anteriormente se han descrito, en general, diversos componentes, bloques, módulos, circuitos y etapas ilustrativos, en términos de su funcionalidad. Que dicha funcionalidad se implemente como hardware o software depende de la aplicación y las restricciones de diseño en particular impuestas al sistema global.
[0073] Los diversos rasgos característicos asociados a los ejemplos descritos en el presente documento y mostrados en los dibujos adjuntos pueden implementarse en diferentes ejemplos e implementaciones sin apartarse del alcance de la presente divulgación.

Claims (1)

  1. REIVINDICACIONES
    Un dispositivo fuente (102, 600) que comprende:
    una interfaz de comunicaciones (604; 704);
    una memoria que almacena código ejecutable; y
    al menos un procesador acoplado comunicativamente a la interfaz de comunicaciones (604; 704) y a la memoria,
    en el que el al menos un procesador y la memoria están configurados para:
    capturar en la entrada de una unidad de procesador gráfico, GPU, (608) una pluralidad de tramas del dominio de gráficos, comprendiendo cada una de las tramas del dominio de gráficos uno o más tokens de comando de gráficos (214A-214N) y/o elementos de textura, en el que la pluralidad de las tramas del dominio de gráficos comprenden tramas no renderizadas, en el que una trama renderizada es una estructura de datos que representa una pluralidad de píxeles visualizables a través de un medio de visualización;
    comprimir la pluralidad de tramas del dominio de gráficos mediante una canalización de compresión adaptativa (800) configurada para seleccionar una técnica de compresión de:
    (a) transmisión de textura escalable (514), configurada para dividir una trama en una pluralidad de etapas que son más pequeñas que la trama, y
    (b) predicción basada en tramas (516) que usa ubicaciones codificadas diferencialmente para identificar porciones de tramas que contienen datos diferentes entre sí, basándose en una pluralidad de características de las tramas;
    transmitir las tramas comprimidas a través de la interfaz de comunicaciones (604; 704) a un dispositivo receptor (104; 700); y
    mostrar una imagen renderizada de al menos parte de la pluralidad de tramas del dominio de gráficos que utilizan dicha GPU (608) en una pantalla (622),
    en el que el dispositivo fuente y el dispositivo receptor están sincronizados en el tiempo con una referencia de tiempo y ambos dispositivos pueden mostrar al mismo tiempo una imagen renderizada dada de al menos algunas de la pluralidad de tramas del dominio de gráficos basándose en una marca de tiempo de cada una de las al menos algunas de la pluralidad de tramas del dominio de gráficos, en el que la marca de tiempo indica un tiempo específico en el que se mostrará la trama del dominio de gráficos correspondiente.
    El dispositivo fuente (102; 600) según la reivindicación 1, en el que una técnica de compresión adicional que puede seleccionarse mediante la canalización de compresión adaptativa es el descarte de tramas, en la que, para el descarte de tramas (518), el al menos un procesador y la memoria se configuran, además, para descartar una primera trama de la pluralidad de tramas del dominio de gráficos en relación con una condición predeterminada que comprende al menos uno de:
    la primera trama sigue a un número predeterminado de segundas tramas encabezando la pluralidad de tramas del dominio de gráficos;
    la primera trama no comprende texturas;
    la primera trama y una trama anterior de la primera trama comprenden un mismo token de comando; no se descarta al menos una trama de un número predeterminado de tramas previas de la primera trama; o
    un retardo de comunicaciones entre el dispositivo fuente (102; 600) y el dispositivo receptor (104; 700) no es mayor que una duración umbral.
    El dispositivo fuente (102; 600) según la reivindicación 1, en el que, para la transmisión de textura escalable (bloque 514), el al menos un procesador y la memoria están configurados, además, para:
    dividir una primera trama de la pluralidad de tramas del dominio de gráficos en una pluralidad de etapas, en el que la primera trama comprende texturas; y
    transmitir las tramas comprimidas que comprenden la pluralidad de etapas en secuencia al dispositivo receptor (104; 700), en el que la primera trama está configurada para ser renderizada en el dispositivo receptor (104; 700) por interpolación sucesiva de las etapas.
    4. El dispositivo fuente (102; 600) según la reivindicación 1, en el que, para la predicción basada en tramas (bloque 516), el al menos un procesador y la memoria están configurados, además, para:
    si dos tramas consecutivas de la pluralidad de tramas del dominio de gráficos tienen la misma longitud: determinar una o más ubicaciones iguales de las dos tramas consecutivas donde las mismas ubicaciones tienen datos diferentes;
    codificar las ubicaciones correspondientes a los diferentes datos; y
    transmitir las tramas comprimidas que comprenden las ubicaciones codificadas y los diferentes datos al dispositivo receptor (104; 700).
    5. El dispositivo fuente (102; 600) según la reivindicación 1, en el que, si una primera trama de la pluralidad de tramas del dominio de gráficos comprende texturas, el al menos un procesador y la memoria están configurados, además, para:
    separar una imagen roja, verde y azul, RGB, de un canal alfa de las texturas;
    comprimir la imagen RGB utilizando compresión con pérdidas; y
    comprimir selectivamente el canal alfa mediante una compresión con pérdidas basándose en un contenido del canal alfa.
    6. El dispositivo fuente (102; 600) según la reivindicación 1, en el que los tokens de comando de gráficos (214A-214N) comprenden tokens de comando de Open Graphics Library, OpenGL.
    7. Un dispositivo receptor (104, 700) que comprende:
    una interfaz de comunicaciones (604; 704);
    una memoria que comprende código ejecutable; y
    al menos un procesador acoplado comunicativamente a la interfaz de comunicaciones (604; 704) y a la memoria,
    en el que el al menos un procesador y la memoria están configurados para:
    recibir una pluralidad de tramas del dominio de gráficos desde un dispositivo fuente (102; 600) a través de la interfaz de comunicaciones (604; 704), en el que la pluralidad de tramas del dominio de gráficos comprende tramas no renderizadas, en el que una trama renderizada es una estructura de datos que representa una pluralidad de píxeles visualizables a través de un medio de visualización, en el que cada una de las tramas del dominio de gráficos comprende uno o más tokens de comando de gráficos (214A-214N) y/o elementos de textura, y la pluralidad de tramas del dominio de gráficos se comprime mediante una canalización de compresión adaptativa (800) configurada para seleccionar una técnica de compresión de (a) transmisión de textura escalable (514) configurada para dividir una trama en una pluralidad de etapas que son más pequeñas que la trama, y (b) predicción basada en tramas (516) que usa ubicaciones codificadas diferencialmente para identificar porciones de tramas que contienen diferentes datos unas de otras; y
    mostrar una imagen renderizada de al menos algunas de la pluralidad de tramas del dominio de gráficos en base a una marca de tiempo de cada una de al menos algunas de la pluralidad de tramas del dominio de gráficos en una pantalla (711), indicando la marca de tiempo un tiempo predeterminado para mostrar la correspondiente trama del dominio de gráficos, en el que el dispositivo fuente y el dispositivo receptor están sincronizados en el tiempo con una referencia de tiempo.
    8. El dispositivo receptor (104; 700) según la reivindicación 7, en el que el al menos un procesador y la memoria están configurados, además, para abstenerse de mostrar una primera trama de la pluralidad de tramas del dominio de gráficos si la primera trama se recibe después de la marca de tiempo de la primera trama.
    9. El dispositivo receptor (104; 700) según la reivindicación 8, en el que el al menos un procesador y la memoria están configurados, además, para renderizar la primera trama.
    10. El dispositivo receptor (104; 700) según la reivindicación 7, en el que el al menos un procesador y la memoria están configurados, además, para abstenerse de mostrar una trama de la pluralidad de tramas del dominio de gráficos si la trama llega al dispositivo receptor (104; 700) después de una marca de tiempo de la trama. 11. El dispositivo receptor (104; 700) según la reivindicación 7, en el que el uno o más tokens de comando de gráficos (214A-214N) comprenden tokens de comando de Open Graphics Library, OpenGL.
    12. Un procedimiento (500) de duplicación de pantalla en un dispositivo fuente (102; 600), que comprende: capturar (502), a la entrada de una unidad de procesador gráfico, GPU, (608), una pluralidad de tramas del dominio de gráficos de contenido de pantalla, comprendiendo cada una de las tramas uno o más tokens de comando de gráficos y/o elementos de textura, en el que la pluralidad de las tramas del dominio de gráficos comprende tramas no renderizadas, en el que una trama renderizada es una estructura de datos que representa una pluralidad de píxeles visualizables a través de un medio de visualización;
    comprimir (504) la pluralidad de tramas del dominio de gráficos mediante una canalización de compresión adaptativa (800) configurada para seleccionar una técnica de compresión de:
    (a) transmisión de textura escalable (514), configurada para dividir una trama en una pluralidad de etapas que son más pequeñas que la trama,
    y
    (b) predicción basada en tramas (516) que usa ubicaciones codificadas diferencialmente para identificar porciones de tramas que contienen datos diferentes entre sí,
    basándose en una pluralidad de características de las tramas;
    transmitir (506) las tramas comprimidas a través de una interfaz de comunicaciones del dispositivo fuente a un dispositivo receptor; y
    mostrar (508) una imagen renderizada de al menos algunas de la pluralidad de tramas del dominio de gráficos que utilizan dicha GPU (608) en una pantalla (622),
    en el que el dispositivo fuente y el dispositivo receptor están sincronizados en el tiempo con una referencia de tiempo y ambos dispositivos pueden mostrar al mismo tiempo una imagen renderizada dada de al menos algunas de la pluralidad de tramas del dominio de gráficos basándose en una marca de tiempo de cada una de las al menos algunas de la pluralidad de tramas del dominio de gráficos, en el que la marca de tiempo indica un tiempo específico en el que se mostrará la trama del dominio de gráficos correspondiente.
    13. El procedimiento (500) según la reivindicación 12, en el que una técnica de compresión adicional que puede seleccionarse mediante la canalización de compresión adaptativa es el descarte de tramas, en la que, para el descarte de tramas, utilizar la canalización de compresión adaptativa comprende descartar una primera trama de la pluralidad de tramas del dominio de gráficos en relación con una condición predeterminada que comprende al menos uno de:
    la primera trama sigue un número predeterminado de segundas tramas encabezando la pluralidad de tramas;
    la primera trama no comprende texturas;
    la primera trama y una trama anterior de la primera trama comprenden un mismo token de comando; no se descarta al menos una trama de un número predeterminado de tramas previas de la primera trama; o
    un retardo de comunicaciones entre el dispositivo fuente y el dispositivo receptor es mayor que una duración de umbral.
    14. El procedimiento (500) según la reivindicación 12, en el que, para la transmisión de textura escalable, la utilización de la canalización de compresión adaptativa comprende:
    dividir una primera trama de la pluralidad de tramas del dominio de gráficos en una pluralidad de etapas, en el que la primera trama comprende texturas; y
    transmitir las tramas comprimidas que comprenden la pluralidad de etapas en secuencia al dispositivo receptor, en el que la primera trama se renderiza en el dispositivo receptor por interpolación sucesiva de las etapas.
    15. Un procedimiento (1200) de duplicación de pantalla de un dispositivo receptor (104), que comprende:
    recibir (1202) una pluralidad de tramas del dominio de gráficos desde un dispositivo fuente (102) a través de una interfaz de comunicaciones del dispositivo receptor, en el que la pluralidad de tramas del dominio de gráficos comprende tramas no renderizadas, en el que una trama renderizada es una estructura de datos que representa una pluralidad de píxeles visualizables a través de un medio de visualización,
    en el que cada una de las tramas del dominio de gráficos comprende uno o más tokens de comando de gráficos y/o elementos de textura, y la pluralidad de tramas del dominio de gráficos se comprime en el dispositivo fuente mediante una canalización de compresión adaptativa configurada para seleccionar una técnica de compresión de (a) transmisión de textura escalable (514) configurada para dividir una trama en una pluralidad de etapas que son más pequeñas que la trama, y (b) predicción basada en tramas (516) que usa ubicaciones codificadas diferencialmente para identificar porciones de tramas que contienen datos diferentes entre sí; y
    mostrar (1210) una imagen renderizada de al menos algunas de la pluralidad de tramas del dominio de gráficos basándose en una marca de tiempo de cada una de al menos algunas de la pluralidad de tramas del dominio de gráficos en una pantalla (711), indicando la marca de tiempo un tiempo específico en que se visualizará la trama del dominio de gráficos correspondiente, en el que el dispositivo fuente y el dispositivo receptor están sincronizados en el tiempo con una referencia de tiempo.
ES16724833T 2015-05-28 2016-05-13 Duplicación de pantalla de baja latencia Active ES2869979T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562167765P 2015-05-28 2015-05-28
US14/958,336 US10255021B2 (en) 2015-05-28 2015-12-03 Low latency screen mirroring
PCT/US2016/032530 WO2016191136A1 (en) 2015-05-28 2016-05-13 Low latency screen mirroring

Publications (1)

Publication Number Publication Date
ES2869979T3 true ES2869979T3 (es) 2021-10-26

Family

ID=56072479

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16724833T Active ES2869979T3 (es) 2015-05-28 2016-05-13 Duplicación de pantalla de baja latencia

Country Status (10)

Country Link
US (1) US10255021B2 (es)
EP (1) EP3304277B1 (es)
JP (1) JP6595006B2 (es)
KR (1) KR102043962B1 (es)
CN (1) CN107660280B (es)
BR (1) BR112017025374A2 (es)
CA (1) CA2983447A1 (es)
ES (1) ES2869979T3 (es)
TW (1) TW201710883A (es)
WO (1) WO2016191136A1 (es)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170124043A1 (en) 2015-11-02 2017-05-04 Microsoft Technology Licensing, Llc Sound associated with cells in spreadsheets
US11157689B2 (en) * 2015-11-02 2021-10-26 Microsoft Technology Licensing, Llc Operations on dynamic data associated with cells in spreadsheets
US10510317B2 (en) 2016-06-03 2019-12-17 Apple Inc. Controlling display performance with target presentation times
US10706604B2 (en) 2016-06-03 2020-07-07 Apple Inc. Controlling display performance using display system hints
CA2942257C (en) * 2016-09-19 2022-09-06 Pleora Technologies Inc. Methods and systems for balancing compression ratio with processing latency
US10895954B2 (en) * 2017-06-02 2021-01-19 Apple Inc. Providing a graphical canvas for handwritten input
US10719286B2 (en) * 2018-03-29 2020-07-21 Microsoft Technology Licensing, Llc Mechanism to present in an atomic manner a single buffer that covers multiple displays
US11957975B2 (en) * 2018-05-24 2024-04-16 Microsoft Technology Licensing, Llc Dead reckoning and latency improvement in 3D game streaming scenario
CN108810554B (zh) * 2018-06-15 2021-06-22 腾讯科技(深圳)有限公司 虚拟场景的场景图像传输方法、计算机设备及存储介质
WO2020006291A1 (en) * 2018-06-28 2020-01-02 Apple Inc. Priority-based video encoding and transmission
KR20210035976A (ko) * 2019-09-25 2021-04-02 삼성전자주식회사 끊김 없이 이미지를 표시하는 전자 장치 및 그의 동작 방법
US11308648B2 (en) * 2020-09-23 2022-04-19 Advanced Micro Devices, Inc. Compressing texture data on a per-channel basis
TWI778604B (zh) * 2021-04-29 2022-09-21 大陸商北京集創北方科技股份有限公司 幀顯示信號同步方法、顯示裝置及資訊處理裝置
CN113556595B (zh) * 2021-06-16 2023-06-06 珠海全志科技股份有限公司 基于Miracast的回放方法及装置
KR20230046801A (ko) * 2021-09-30 2023-04-06 삼성전자주식회사 디스플레이 장치 및 그 동작 방법
TWI783729B (zh) * 2021-10-14 2022-11-11 財團法人資訊工業策進會 分散式資料傳輸容錯系統及其動態資源調整方法
US11706497B1 (en) * 2022-02-11 2023-07-18 Microsoft Technology Licensing, Llc Ultra-low latency video streaming
US11736552B1 (en) 2022-09-21 2023-08-22 Microsoft Technology Licensing, Llc Sender based adaptive bit rate control

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3339284B2 (ja) 1996-01-29 2002-10-28 三菱電機株式会社 大画面表示方式
JPH11340938A (ja) * 1998-05-28 1999-12-10 Sony Corp データ多重化装置及び方法
US8234577B1 (en) * 2005-05-23 2012-07-31 Glance Networks, Inc. Method and apparatus for the transmission of changed host display information
US7548657B2 (en) * 2005-06-25 2009-06-16 General Electric Company Adaptive video compression of graphical user interfaces using application metadata
US8890874B2 (en) * 2007-12-14 2014-11-18 Microsoft Corporation Changing visual content communication
EP2293192B1 (en) * 2008-01-27 2021-03-31 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
US8886206B2 (en) * 2009-05-01 2014-11-11 Digimarc Corporation Methods and systems for content processing
US8171154B2 (en) 2009-09-29 2012-05-01 Net Power And Light, Inc. Method and system for low-latency transfer protocol
US9525998B2 (en) 2012-01-06 2016-12-20 Qualcomm Incorporated Wireless display with multiscreen service
KR101918040B1 (ko) 2012-02-20 2019-01-29 삼성전자주식회사 스크린 미러링 방법 및 그 장치
US9307225B2 (en) * 2012-10-25 2016-04-05 Citrix Systems, Inc. Adaptive stereoscopic 3D streaming
US9257148B2 (en) * 2013-03-15 2016-02-09 JBF Interlude 2009 LTD System and method for synchronization of selectably presentable media streams
US20140333640A1 (en) * 2013-05-13 2014-11-13 Qnx Software Systems Limited System and method for forwarding a graphics command stream
EP2804094A1 (en) 2013-05-13 2014-11-19 2236008 Ontario Inc. A system and method for forwarding a graphics command stream
KR102133531B1 (ko) 2013-08-23 2020-07-13 삼성전자주식회사 컨텐츠 재생 방법 및 그에 따른 단말, 그에 따른 시스템
KR102071579B1 (ko) 2013-09-02 2020-01-30 삼성전자주식회사 화면 미러링을 이용한 서비스 제공 방법 및 그 장치
US9412332B2 (en) 2013-12-20 2016-08-09 Blackberry Limited Method for wirelessly transmitting content from a source device to a sink device

Also Published As

Publication number Publication date
CN107660280A (zh) 2018-02-02
KR20180013921A (ko) 2018-02-07
US20160350056A1 (en) 2016-12-01
EP3304277A1 (en) 2018-04-11
JP6595006B2 (ja) 2019-10-23
US10255021B2 (en) 2019-04-09
CA2983447A1 (en) 2016-12-01
BR112017025374A2 (pt) 2018-08-07
EP3304277B1 (en) 2021-03-17
WO2016191136A1 (en) 2016-12-01
JP2018523356A (ja) 2018-08-16
KR102043962B1 (ko) 2019-11-12
CN107660280B (zh) 2020-10-23
TW201710883A (zh) 2017-03-16

Similar Documents

Publication Publication Date Title
ES2869979T3 (es) Duplicación de pantalla de baja latencia
US10951914B2 (en) Reliable large group of pictures (GOP) file streaming to wireless displays
US11245939B2 (en) Generating and transmitting metadata for virtual reality
US20170092226A1 (en) Device and method for transmitting and receiving data using hdmi
JP2018523356A5 (es)
KR102646030B1 (ko) 영상제공장치, 그의 제어 방법 및 영상제공시스템
US9955173B2 (en) Transparency information retention
US20170026439A1 (en) Devices and methods for facilitating video and graphics streams in remote display applications
CN104866381A (zh) 一种信息处理方法及第一电子设备
CN105721934A (zh) 视频的无线传输设备、视频播放设备、方法及系统
WO2018072337A1 (zh) 用于虚拟现实的无线传输方法、装置、终端和头显设备
US9432556B2 (en) Devices and methods for facilitating frame dropping in remote display applications
EP2312859A2 (en) Method and system for communicating 3D video via a wireless communication link
EP3039668A1 (en) Transmission apparatus, method of transmitting image data with wide color gamut, reception apparatus, method of receiving image data with wide color gamut, and program
US20180220190A1 (en) Methods and devices for encoding/decoding videos
CN114424552A (zh) 一种低延迟信源信道联合编码方法及相关设备
CN104038816A (zh) 一种视频同步方法及系统
EP2477408A1 (en) 3D image generation device, method and program
CN114079823A (zh) 基于Flutter的视频渲染方法、装置、设备及介质
US10595047B2 (en) Wireless display subsystem and system-on-chip
CN113450293A (zh) 视频信息处理方法、装置、系统、电子设备及存储介质
US20230370620A1 (en) Server and control method thereof
US11418797B2 (en) Multi-plane transmission
KR20220083553A (ko) 홀로렌즈를 위한 압축된 4d 메쉬 데이터 전송 및 디코딩 방법
CN112165633A (zh) 一种显示信号远传的方法、设备及多屏笔记本电脑