BRPI0813398B1 - Meio de armazenamento legível por computador e sistema para renderizar conteúdo demídia - Google Patents

Meio de armazenamento legível por computador e sistema para renderizar conteúdo demídia Download PDF

Info

Publication number
BRPI0813398B1
BRPI0813398B1 BRPI0813398-0A BRPI0813398A BRPI0813398B1 BR PI0813398 B1 BRPI0813398 B1 BR PI0813398B1 BR PI0813398 A BRPI0813398 A BR PI0813398A BR PI0813398 B1 BRPI0813398 B1 BR PI0813398B1
Authority
BR
Brazil
Prior art keywords
memory
media
amount
shareable
sample
Prior art date
Application number
BRPI0813398-0A
Other languages
English (en)
Inventor
Arthur William James Freeman
Olivier Colle
James C. Finger
Original Assignee
Microsoft Technology Licensing, Llc
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 Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BRPI0813398A2 publication Critical patent/BRPI0813398A2/pt
Publication of BRPI0813398B1 publication Critical patent/BRPI0813398B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements

Abstract

"meio de armazenamento legível por computador e sistema para renderizar conteúdo de mídia" técnicas de gerenciamento de memória envolvem criar um pool de memória (240) com uma quantidade de memória partilhável (244) e alocar dinamicamente a memória partilhável (244) de forma a gerir simultaneamente vários conjuntos de unidades sequenciadas de dados digitais. em um cenário exemplar, os conjuntos de unidades sequenciadas de dados digitais são conjuntos de amostras tempo ordenadas de mídia formando clipes de conteúdo de mídia, e as técnicas são aplicadas quando as amostras de mídia de dois ou mais clipes são simultaneamente apresentáveis a um usuário como fluxos independentemente controlados. quantidades variáveis de memória partilhável (244) são dinamicamente alocadas para a preparação de amostras de mídia iminentes para apresentação ao usuário. em uma possível implementação, uma razão de taxas médias de dados de fluxos individuais é calculada, e as quantidades de memória partilhável (244) são alocadas para renderizar cada fluxo com base na razão. então, a memória partilhável (244) alocada para renderizar fluxos individuais é reservada como necessário para preparar amostras de mídia iminentes particulares para apresentação ao usuário.

Description

MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR E SISTEMA PARA RENDERIZAR CONTEÚDO DE MÍDIA
FUNDAMENTO [001] O tratamento eficaz de dados digitais é, muitas vezes, dependente da utilização eficiente de recursos computacionais limitados, tais como memória. O termo memória pode abranger qualquer tipo de meio de armazenamento legível por computador, embora a memória usada por computadores no processamento de dados digitais seja, muitas vezes, a memória de acesso aleatório. Frequentemente, as quantidades fixas de memória para processamento de dados digitais são pré-alocadas. Às vezes, porém, tais alocações fixas de memória são ineficientes. Uma situação em que as ineficiências podem ocorrer é quando vários conjuntos de unidades sequenciadas de dádos digitais devem ser processados simultaneamente.
[002] É desejável promover a utilização eficiente de memória para o processamento de dados digitais sequenciados em geral, e para a renderização (rendering) de conteúdo de mídia digital em particular. Conteúdo de mídia digital é composto por amostras sequenciadas de vídeo, áudio, imagens, texto e / ou gráficos. Quando reprodutores (players) de conteúdo de mídia apresentam amostras sequenciadas para usuários, estes são chamados de fluxos de conteúdo de mídia.
[003] Reprodutores de conteúdo de mídia recentes são configurados para renderizar simultaneamente mais de um fluxo independentemente controlado de conteúdo de mídia (por exemplo, um filme principal, juntamente com características, tais como um comentário do diretor, biografias de atores ou publicidade). Tais reprodutores de conteúdo de mídia também podem ser capazes de renderizar objetos visíveis ou sonoros selecionáveis pelo usuário (por exemplo, vários menus, jogos, efeitos especiais ou outras opções) em simultâneo com um
Petição 870180166587, de 21/12/2018, pág. 4/48
2/32 ou mais fluxos de conteúdo de mídia. A renderização de conteúdo de mídia - fluxos de conteúdo de mídia independentemente controlados em particular simultaneamente à leitura - pode consumir quantidades significativas de recursos limitados do reprodutor, especialmente memória.
SUMÁRIO [004] Técnicas de gerenciamento de memória discutidas aqui envolvem criar um pool de memória com uma quantidade de memória partilhável e alocar dinamicamente a memória partilhável de forma a gerir simultaneamente vários conjuntos de unidades sequenciadas de dados digitais. Em um cenário exemplar, os conjuntos de unidades sequenciadas de dados digitais são conjuntos de amostras tempo ordenadas de mídia, tais como bits, quadros, grupos de fotos, unidades de objeto de vídeo, e semelhantes. No contexto de conteúdo de mídia, as técnicas discutidas aqui são geralmente aplicadas quando as amostras de mídia de dois ou mais conjuntos são simultaneamente apresentáveis a um usuário como fluxos independentemente controlados de conteúdo de mídia. Será apreciado, no entanto, que outros cenários são possíveis, e que as técnicas discutidas aqui são aplicáveis a quaisquer unidades sequenciadas contemporaneamente processadas de dados digitais.
[005] Técnicas de gerenciamento de memória específicas envolvem determinar um indicador de consumo de recurso associado ao processamento de algumas das unidades de dados digitais em um primeiro conjunto de unidades sequenciadas de dados digitais, e determinar outro indicador de consumo de recurso associado ao processamento de algumas das unidades de dados digitais em um segundo conjunto de unidades sequenciadas de dados digitais. O consumo de recursos pode variar com base em vários fatores, incluindo, mas não limitados a, fatores associados aos dados digitais, o sistema de comPetição 870180166587, de 21/12/2018, pág. 5/48
3/32 putação utilizado para processar os dados digitais, e entrada de usuário. Uma vez determinados, os indicadores de consumo de recurso são comparados e a memória partilhável é alocada dinamicamente com base na comparação.
[006] Às vezes, a memória partilhável disponível é insuficiente para a implementação imediata de uma alocação de memória desejada. Então, a memória partilhável disponível pode ser alocada em conformidade com um regime de prioridade para evitar falhas de processamento. Em um cenário, maior prioridade é dada à memória partilhável atribuída para atuar em associação com o processamento do(s) conjunto(s) de unidades de dados digitais com o maior consumo de recurso. O(s) conjunto(s) de unidades de dados digitais com um menor consumo de recurso pode ser obrigado a re-solicitar recursos repetidamente. Como alternativa, tais conjuntos podem ser atribuídos pendentes de solicitações de memória, aos quais é dada prioridade à medida que recursos de memória partilhável se tornarem disponíveis. Desta forma, é possível assegurar a alocação eficiente e dinâmica de memória partilhável quando vários conjuntos de unidades sequenciadas de dados digitais são simultaneamente processados.
[007] No caso de fluxos de conteúdo de mídia, os indicadores de consumo de recurso são taxas de dados (por exemplo, taxas de dados médias) associadas à renderização de fluxos individuais de conteúdo de mídia. Recursos de memória necessários para processar fluxos de conteúdo de mídia com certas taxas de dados (e para processar amostras de mídia particulares dentro de tais fluxos) podem variar com base em vários fatores, incluindo, mas não limitados a, fatores associados com as amostras de mídia próprias (por exemplo, fontes/ localizações de amostra de mídia, tamanhos de amostra de mídia, parâmetros de codificação e / ou decodificação, e parâmetros de criptografia, entre outros), o reprodutor de conteúdo de mídia (por exemplo, a ar
Petição 870180166587, de 21/12/2018, pág. 6/48
4/32 quitetura de reprodutor ou cargas de processamento dinâmico, entre outros), ou entrada de usuário (formatos de conteúdo de mídia selecionados pelo usuário ou velocidades de leitura selecionadas pelo usuário, tais como avanço rápido, avanço lento, reverso rápido, reverso lento, por exemplo). Uma razão de taxas de dados de fluxos individuais de conteúdo de mídia é calculada, e memória partilhável é alocada dinamicamente com base na comparação. Quando memória partilhável disponível é insuficiente para a implementação imediata de uma alocação de memória desejada, um regime de prioridade possível garante que a memória partilhável seja primeiro atribuída para atuar em associação com o processamento de fluxo de conteúdo de mídia, que atualmente tem menos do que sua porção alocada da memória partilhável.
[008] Este resumo é fornecido para a introdução de uma seleção de conceitos de forma simplificada. Os conceitos são adicionalmente descritos na seção Descrição Detalhada. Elementos ou etapas diferentes dos descritos neste Sumário são possíveis, e nenhum elemento ou etapa é necessariamente exigido. Este Sumário não se destina a identificar as principais características ou características essenciais do assunto reivindicado, nem se destina à utilização como um auxílio para determinar o escopo do assunto reivindicado. Além disso, o assunto reivindicado não se limita a implementações que solucionam uma ou todas as desvantagens observadas em qualquer parte deste documento.
BREVE DESCRIÇÃO DOS DESENHOS [009] A FIGURA 1 é um diagrama de blocos simplificado funcional de um reprodutor de conteúdo de mídia exemplar.
[0010] A FIGURA 2 é um diagrama de blocos simplificado funcional ilustrando aspectos dos blocos de gerenciamento de conteúdo de mídia da FIGURA 1 em mais detalhes.
Petição 870180166587, de 21/12/2018, pág. 7/48
5/32 [0011] A FIGURA 3 é um esquema que ilustra um cronograma de mídia associado a um conjunto de amostras de mídia, utilizáveis em conexão com certos aspectos do reprodutor de conteúdo de mídia mostrado na FIGURA 1 e / ou o método mostrado no fluxograma da FIGURA 4.
[0012] A FIGURA 4 é um fluxograma de um método para gerenciamento simultâneo de uma variedade de conjuntos de dados digitais que utilizam memória partilhada, tal como a memória partilhável mostrada na FIGURA 2.
[0013] A FIGURA 5 é um diagrama de blocos simplificado funcional de uma configuração exemplar da unidade de computação.
[0014] A FIGURA 6 é um diagrama de blocos de uma configuração exemplar de um ambiente operacional em que a totalidade ou parte do reprodutor de conteúdo de mídia mostrado na FIGURA 1, o método mostrado na FIGURA 4 e / ou a unidade de computação mostrada na FIGURA 5 pode ser implementado ou utilizado.
[0015] A FIGURA 7 é um diagrama de blocos simplificado funcional de uma arquitetura cliente-servidor, em que os aspectos do ambiente operacional mostrado na FIGURA 6 podem ser implementados ou utilizados.
DESCRIÇÃO DETALHADA [0016] Técnicas de gerenciamento de memória discutidas aqui alocam dinamicamente memória partilhável de um pool de memória para o processamento simultâneo de vários conjuntos de unidades sequenciadas de dados digitais. Para fins de exemplo e não como limitação, o processamento simultâneo de vários fluxos de conteúdo de mídia é discutido especificamente, e será apreciado que as técnicas discutidas aqui são aplicáveis a quaisquer unidades sequenciadas contemporaneamente processadas de dados digitais.
[0017] Certos reprodutores de conteúdo de mídia podem renderiPetição 870180166587, de 21/12/2018, pág. 8/48
6/32 zar dois fluxos de conteúdo de mídia independentemente controlados de uma só vez. Reprodutores de DVD de alta definição, por exemplo, são configurados para renderizar simultaneamente um fluxo de conteúdo de mídia principal (como um filme) e um fluxo de conteúdo de mídia secundário (por exemplo, uma característica especial, como comentários do diretor, uma biografia do ator, ou um anúncio). A entrada de usuário acidental determina se e / ou quando os fluxos de conteúdo de mídia individuais são apresentados.
[0018] Para evitar falhas perceptíveis ao usuário na apresentação do conteúdo de mídia, a renderização do conteúdo de mídia geralmente envolve a identificação e preparação para a apresentação de uma ou mais amostras de mídia iminentes a serem apresentadas a um usuário antes da hora programada de reprodução da(s) amostra(s) de mídia. Recursos de memória necessários para preparar uma amostra de mídia específica para apresentação não são sempre constantes de amostra para amostra. Alguns fatores que afetam os recursos de memória necessários estão associados com as amostras de mídia próprias (incluindo, mas não limitando a, fatores, como tamanho da amostra de mídia, fonte / localização da amostra de mídia, parâmetros de codificação e decodificação e parâmetros de criptografia), mas também podem estar associados ao reprodutor de conteúdo de mídia (por exemplo, a arquitetura do reprodutor ou cargas de processamento dinâmico, entre outros) ou entrada do usuário (formatos de conteúdo de mídia selecionados pelo usuário ou velocidades de leitura selecionadas pelo usuário, por exemplo).
[0019] Como aplicado à renderização de conteúdo de mídia, técnicas de gerenciamento de memória específicas discutidas aqui envolvem alocar dinamicamente quantidades variáveis de memória partilhável para preparar amostras de mídia iminentes particulares para apresentação. Uma vez que amostras de mídia particulares foram apresenPetição 870180166587, de 21/12/2018, pág. 9/48
7/32 tadas a um usuário, as quantidades alocadas de memória partilhável podem ser liberadas e colocadas à disposição para re-alocação.
[0020] Quando um fluxo de conteúdo de mídia único estiver sendo apresentado ao usuário, toda a memória partilhável disponível pode geralmente ser alocada para renderizar o fluxo de conteúdo de mídia único. À medida que o usuário independentemente inicia e interrompe outros fluxos de conteúdo de mídia, no entanto, a memória partilhável disponível é alocada a mais de um fluxo. Em um cenário, as alocações dinâmicas de memória partilhável para preparar amostras de mídia iminentes particulares de cada fluxo de apresentação são baseadas nas taxas de dados médias relativas dos fluxos de conteúdo de mídia individuais. Em uma execução exemplar, uma razão de taxas de dados (por exemplo, taxas de bits) dos fluxos de conteúdo de mídia individuais é calculada, e memória partilhável é dividida com base na razão de taxas de dados. Então, a memória partilhável alocada a um fluxo individual é reservada conforme necessário para preparar amostras de mídia iminentes particulares a partir desse fluxo.
[0021] Quando memória partilhável disponível é insuficiente para a implementação imediata de uma alocação de memória desejada e / ou a memória partilhável alocada a um fluxo individual não é suficiente para preparar amostras de mídia iminentes particulares a partir desse fluxo, um regime de prioridade possível garante que a memória partilhável seja primeiro determinada para atuar em associação com o processamento do fluxo de conteúdo de mídia que está sendo processado por um encadeamento de processamento de mídia que atualmente tem menos de sua parte alocada da memória partilhável, e uma solicitação de memória é opcionalmente determinada a outro fluxo de conteúdo de mídia. Quando memória partilhável se torna disponível, esta pode ser alocada ao fluxo de dados com uma solicitação de memória pendente.
Petição 870180166587, de 21/12/2018, pág. 10/48
8/32 [0022] Voltando aos desenhos, onde numerais iguais designam componentes iguais, a FIGURA 1 é um diagrama de blocos simplificado funcional de um reprodutor de conteúdo de mídia exemplar 100 que renderiza conteúdo de mídia, o qual é composto de sequências (em geral, o tempo ordenadas) amostras de vídeo, áudio, imagens, texto e / ou gráficos. Embora o reprodutor de conteúdo de mídia 100 possa ser qualquer sistema que renderiza conteúdo de mídia, incluindo, mas não limitado a, um reprodutor de mídia ótico, um computador, um reprodutor de áudio, um set-top box, um dispositivo de telecomunicações, um assistente pessoal digital, um gravador de imagem, ou um gravador de vídeo, como mostrado, o reprodutor de conteúdo de mídia 100 é um sistema de apresentação multimídia interativo (adiante designado Apresentação do Sistema 100).
[0023] O Sistema de Apresentação 100 inclui um gerenciador de conteúdo de mídia 102, um gerenciador de conteúdo interativo (IC) 104, um gerenciador de apresentações 106, um bloco de gerenciamento de sinal de tempo 108 e um misturador / processador 110. Em geral, as escolhas de projeto ditam como funções específicas do Sistema de Apresentação 100 são implementadas. Tais funções podem ser implementadas usando hardware, software ou firmware, ou combinações dos mesmos.
[0024] Em operação, o Sistema de Apresentação 100 suporta conteúdo de apresentação multimídia interativo (Conteúdo de Apresentação) 120. O Conteúdo de Apresentação 120 inclui um componente de conteúdo de mídia (componente de media) 122 e um componente de conteúdo interativo (componente IC) 124. O componente de mídia 122 e o componente IC 124 são, em geral, mas não necessariamente, tratados como fluxos de dados separados, pelo gerenciador de conteúdo de mídia 102 e de gerenciador IC 104, respectivamente.
[0025] O Sistema de Apresentação 100 também facilita a apresenPetição 870180166587, de 21/12/2018, pág. 11/48
9/32 tação de Conteúdo de Apresentação 120 para um usuário (não mostrado) como apresentação reproduzida 127. A apresentação reproduzida 127 representa informações visíveis e / ou sonoras associadas ao Conteúdo de Apresentação 120 que é produzido pelo misturador / processador 110 e recebível pelo usuário através de dispositivos, tais como monitores ou auto-falantes (não mostrados). Para fins de discussão, presume-se que o Conteúdo de Apresentação 120 e a apresentação reproduzida 127 representam aspectos de conteúdo de filme em DVD de alta definição, em qualquer formato. Será apreciado, no entanto, que o Conteúdo de Apresentação 120 e a apresentação reproduzida 127 podem ser configurados para apresentar qualquer tipo de apresentação de conteúdo de mídia atualmente conhecida ou posteriormente desenvolvida.
[0026] O componente de mídia 122 representa uma ou mais sequências (em geral, tempo ordenadas) de amostras (por exemplo, amostras de vídeo, áudio, imagens, texto e / ou gráficos) apresentáveis para os usuários como fluxos de conteúdo de mídia (fluxos de conteúdo de mídia 1 208 e 228 são apresentados e discutidos mais abaixo, em conexão com a FIGURA 2). Mais do que um fluxo de conteúdo de mídia independentemente controlado fluxo de conteúdo podem ser apresentados simultaneamente (por exemplo, um filme principal, juntamente com características, tais como o comentário de um diretor, biografias de atores, ou publicidade). Embora o componente de mídia 122 seja muitas vezes discutido no contexto de um filme, o componente de mídia 122 pode ser de fato vídeo, áudio, dados ou qualquer combinação dos mesmos.
[0027] Um filme geralmente tem uma ou mais versões (uma versão para o público adulto, e uma versão para o público mais jovem, por exemplo); um ou mais títulos 131 com um ou mais capítulos (não mostrados) associados a cada título (títulos são discutidos mais adianPetição 870180166587, de 21/12/2018, pág. 12/48
10/32 te, em conexão com o gerenciador de apresentações 106); uma ou mais faixas de áudio (por exemplo, o filme pode ser reproduzido em um ou mais idiomas, com ou sem legendas); e recursos extras, tais como comentários do diretor, cenas adicionais, biografias de atores, publicidade, trailers e similares. Será apreciado que as distinções entre títulos e capítulos são distinções puramente lógicas. Por exemplo, um único segmento de mídia percebido poderia ser parte de um único título / capítulo, ou poderia ser composto de vários títulos / capítulos. É a fonte de autoria de conteúdo que determina as distinções lógicas aplicáveis.
[0028] Conjuntos de amostras de mídia (por exemplo, conjuntos de vídeo, áudio, amostras de dados) que formam aspectos de componente de mídia 122 são comumente referidos como clipes 123 (clipes 123 são mostrados no componente de mídia 122 e lista de reprodução 128, e são também referidos na FIGURA 2 e discutidos mais adiante). Será apreciado, no entanto, que conjuntos de amostras de mídia podem ser agrupados e / ou referidos de qualquer forma desejável. Amostras de mídia podem ser representadas por qualquer unidade desejada, por exemplo, bits, quadros, pacotes de dados, grupos de fotos, unidades de objeto de vídeo melhoradas etc. Os conteúdos digitais de uma amostra de mídia particular exemplar (e também o tamanho de uma amostra de mídia particular) podem ser baseados em diversos fatores, tais como as características do vídeo, áudio ou o conteúdo de dados que compõe a amostra, ou um ou mais parâmetros associados com a fonte de mídia a partir da qual a amostra é derivada (por exemplo, identidade e / ou localização de fonte de mídia, parâmetros ou configurações de codificador / decodificador, ou parâmetros ou configurações de criptografia). Fontes de mídia são discutidas mais adiante, em conexão com a FIGURA 2.
[0029] Dados de mídia 132 são dados associados com o compo
Petição 870180166587, de 21/12/2018, pág. 13/48
11/32 nente de mídia 122 que foi preparado para renderização pelo gerenciador de conteúdo de mídia 102 e renderizado ao misturador / processador 110. Dados dos media 132 geralmente incluem, para cada clipe ativo 123, uma renderização de uma parte do clipe.
[0030] Referindo-se novamente ao Conteúdo de Apresentação 120, o componente IC 124 inclui objetos interativos 125, que são objetos visíveis ou sonoros selecionáveis pelo usuário, opcionalmente apresentáveis concomitantemente com o componente de mídia 122, juntamente com quaisquer instruções (mostradas como aplicações 155) para apresentar os objetos visíveis ou sonoros. Exemplos de objetos interativos incluem, entre outras coisas, amostras ou clipes de vídeo, amostras ou clipes de áudio, imagens, gráficos, texto e combinações dos mesmos.
[0031] Aplicações 155 fornecem o mecanismo pelo qual o Sistema de Apresentação 100 apresenta objetos interativos 125 para um usuário. Aplicações 155 representam qualquer método de processamento de sinais ou instrução(s) armazenada(s) que controla eletronicamente operações predeterminadas em dados.
[0032] O gerenciador IC 104 inclui um ou mais mecanismos de manipulação de instrução 181, que recebem, interpretam e organizam a execução de comandos associados com aplicações 155. À medida que a execução de aplicações 155 progride e a entrada de usuário 150 é recebida, o comportamento dentro apresentação reproduzida 127 pode ser acionado. A execução de certas instruções de aplicação 155, rotuladas como entrada de ICM 190, pode facilitar a comunicação ou a interoperabilidade com outras funcionalidades ou componentes dentro do Sistema de Apresentação 100. Como mostrado, a entrada 190 é recebida pelo gerenciador de conteúdo de mídia 102 (discutido mais adiante, em conexão com a FIGURA 2), mas outros componentes ou funções dentro do Sistema de Apresentação 100 também podem ser
Petição 870180166587, de 21/12/2018, pág. 14/48
12/32 sensíveis à entrada 190.
[0033] Dados de conteúdo interativo (dados IC) 134 são dados associados com o componente IC 124 que foi preparado para renderização pelo gerenciador IC 104 e renderizado ao misturador / processador 110.
[0034] O bloco de gerenciamento de sinal de tempo 108 produz vários sinais de tempo 158, que são usados para controlar o tempo de preparação e produção de dados de mídia 132 e dados IC 134 pelo gerenciador de conteúdo de mídia 102 e gerenciador IC 104, respectivamente. Por exemplo, o bloco de gerenciamento de sinal de tempo 108 geralmente é responsável por determinar taxas em que os dados de mídia 132 (taxa de apresentação de dados de mídia 307, mostrada e discutida em conexão com a FIGURA 3) e dados IC 134 são apresentados a um usuário. Em outro exemplo, sinais de tempo 158 são usados para atingir sincronização aproximada de dados de mídia 132 e dados IC 134 (por exemplo, a tempo/sincronização em uma base por quadro ou em outra base de tempo).
[0035] O misturador / processador renderiza dados de mídia 132 em um plano de vídeo (não mostrado), e renderiza dados IC 134 em um plano de gráficos (não apresentado). O plano de gráficos, em geral, mas não necessariamente, sobreposto para o plano de vídeo para produzir apresentação reproduzida 127 para o usuário.
[0036] O gerenciador de apresentação 106, que é configurado para comunicação com o gerenciador de conteúdo de mídia 102, gerenciador IC 104, misturador / processador 110, e o bloco de gerenciamento de sinal de tempo 108, facilita o suporte de Conteúdo de Apresentação 120 e apresentação da apresentação reproduzida 127 para o usuário. O gerenciador de apresentações 106 tem acesso a uma lista de execução 128. A lista de execução 128 inclui, entre outras coisas, um sequência clipes tempo ordenada 123 e aplicações 155 (incluindo
Petição 870180166587, de 21/12/2018, pág. 15/48
13/32 objetos interativos 125) que são apresentável para um usuário. Os clipes 123 e aplicações 155 / objetos interativos 125 podem ser organizados para formar um ou mais títulos 131. Como discutido acima, é possível que mais de um título independentemente controlado / fluxo de conteúdo de media seja simultaneamente reproduzido a um usuário.
[0037] O gerenciador de apresentação 106 utiliza uma lista de execução 128 para determinar um cronograma de apresentação 130 para um título particular 131. Conceitualmente, o cronograma de apresentação 130 indica os tempos dentro de título 131 quando clipes específicos 123 e aplicações 155 são apresentáveis a um usuário. Em determinadas circunstâncias, também é útil utilizar uma lista de execução 128 e / ou cronograma de apresentação 130 para determinar um ou mais cronogramas de conteúdo de mídia (cronograma(s) de mídia) 142 (um cronograma de mídia exemplar 142 é apresentado e discutido mais adiante, em conexão com a FIGURA 3).
[0038] Em operação, o gerenciador de apresentação 106 fornece informações, incluindo, mas não limitadas a, informações sobre o cronograma de apresentação 130 e / ou cronograma de mídia 142 para o gerenciador de conteúdo de mídia 102 e gerenciador IC 104. Com base na entrada do gerenciador de apresentação 106, o gerenciador de conteúdo de mídia 102 prepara dados de mídia 132 para renderização, e o gerenciador IC 104 prepara dados IC 134 para renderização.
[0039] A FIGURA 2 é um diagrama de blocos funcional simplificado ilustrando aspectos do gerenciador de conteúdo de mídia 102 em mais detalhes. O gerenciador de conteúdo de mídia 102 inclui um ou mais encadeamentos de processamento de mídia (dois encadeamentos de processamento de mídia são mostrados, encadeamento de processamento de mídia 1 202 e encadeamento de processamento de mídia 2 220, embora qualquer número de encadeamentos de proces
Petição 870180166587, de 21/12/2018, pág. 16/48
14/32 samento de mídia seja possível). Geralmente, o encadeamento de processamento de mídia 1 202 e o encadeamento de processamento de mídia 2 220 são usados para preparar fluxos de conteúdo de mídia independentemente controlados 208 e 228, respectivamente, para a apresentação a um usuário. Um encadeamento de processamento de mídia geralmente é responsável pela elaboração de um fluxo de conteúdo de mídia primário, tal como um filme, e outros encadeamentos de processamento de mídia são responsáveis pela preparação de um ou mais fluxos de conteúdo de mídia secundários, tais como comentários do diretor, biografias de atores, publicidade etc.). Será apreciado que o gerenciador de conteúdo de mídia 102 pode ter uma carga de processamento dinâmico com base na identidade e programação (predeterminado, ou com base em entrada de usuário repentina 150) dos vários clipes 123 compreendendo componente de mídia 122 e / ou componente IC 124.
[0040] Preparar simultaneamente amostras de mídia iminentes a partir de dois ou mais clipes pode consumir grandes quantidades de recursos computacionais, tais como memória (usadas para obter informações de buffer, por exemplo) de uma forma que não é facilmente previsível. Além disso, os recursos de memória necessários para preparar uma amostra de mídia específica para a apresentação não são sempre constantes de amostra para amostra ou de clipe para clipe. Alguns fatores que afetam os recursos de memória necessários estão associados com as próprias amostras de mídia (incluindo, mas não limitado a, fatores como tamanho de amostra de mídia, fonte / localização de amostra de mídia, parâmetros de codificação e decodificação, e parâmetros de criptografia). Outros fatores que afetam os recursos de memória necessários estão associados reprodutor de conteúdo de mídia (por exemplo, arquitetura de reprodutor ou cargas de processamento dinâmico, entre outros), enquanto ainda outros fatores que
Petição 870180166587, de 21/12/2018, pág. 17/48
15/32 afetam os recursos de memória necessários são associados com a entrada do usuário (conteúdo de mídia selecionado por usuário, formatos de conteúdo, ou velocidades de leitura, por exemplo).
[0041] Para evitar falhas perceptíveis ao usuário na apresentação de conteúdo de mídia, a renderização de conteúdo de mídia geralmente envolve cada identificação e preparação para apresentação de uma ou mais amostras de mídia iminentes a serem apresentadas a um usuário, antes da hora programada de reprodução do(s) conteúdo(s) de mídia. Preparar uma amostra de mídia iminente particular para apresentação a um usuário envolve várias etapas, incluindo, mas não limitadas a, identificar a amostra de mídia executável seguinte e ler a amostra de mídia executável seguinte a partir de uma fonte de mídia particular (discutido mais adiante). Porque o conteúdo de mídia é geralmente codificado, criptografado e / ou comprimido, a amostra de mídia executável seguinte pode ser desmultiplexada, decodificada e / ou descriptografada para obter conteúdo renderizável a partir de informações lidas a partir de uma fonte de mídia.
[0042] A etapa de identificação da amostra de mídia executável seguinte é discutida com referência cronograma de mídia exemplar 142 mostrado na FIGURA 3. Vários tempos de apresentação de amostra de mídia 302 são indicados no cronograma de mídia 142. Os tempos de apresentação de amostra de mídia 302 representam os tempos dentro do período de reprodução de um clipe particular em que uma ou mais amostras de mídia são apresentáveis como dados de mídia 132. Como mostrado, os tempos de apresentação de amostra de mídia 302 ocorrem em uma taxa baseada em uma taxa de apresentação de dados de mídia predeterminada 307, que podem variar de clipe para clipe. Note que não é necessário que a taxa de apresentação de dados de mídia 307 seja a mesmo que a taxa com que um clipe particular 123 foi codificado, embora a taxa de apresentação de dados mé
Petição 870180166587, de 21/12/2018, pág. 18/48
16/32 dia possa mudar de acordo com a taxa de codificação de um clipe particular. Determinada entrada de usuário 150 também pode afetar a velocidade de recuperação da amostra de mídia a partir de fontes de mídia e, consequentemente, afetar a taxa na qual os tempos de apresentação de amostra de mídia 302 ocorrem. Por exemplo, a apresentação reproduzida 127 pode continuar a avançar a uma velocidade normal e também pode avançar em ambos os sentidos direto e reverso em velocidades mais rápidas ou mais devagar do que a velocidade normal. Será apreciado que a velocidade normal é um termo relativo e que a velocidade normal pode variar de apresentação para apresentação e de clipe para clipe. Durante operações de retroceder rápido e avançar rápido, a reprodução de determinado conteúdo de mídia é frequentemente ignorado. A entrada de outro usuário pode fazer com que a execução de determinados conteúdos seja ignorada, tal como quando o usuário pula de uma parte do filme para outra.
[0043] Um tempo de reprodução decorrido atual 309 (da duração de reprodução) é mostrado no cronograma de mídia 142. Um tempo de apresentação de amostra de mídia apresentável seguinte 314 também é mostrado. Um tempo de apresentação de amostra de mídia apresentável seguinte 314 representa o tempo de apresentação de amostra de mídia 302 associado à(s) amostra(s) de mídia seguinte(s) (após a amostra de mídia atual associada ao tempo decorrido de reprodução atual 309) que é apresentável a um usuário. Será apreciado que a amostra de mídia apresentável seguinte pode ser a amostra de mídia consecutiva seguinte com base em lista de reprodução 128, ou pode ser uma amostra de mídia com um ou mais tempos de apresentação de amostra de mídia 302 longe da amostra de mídia associada ao tempo de reprodução decorrido atual 309.
[0044] Existem várias maneiras de determinar a amostra de mídia apresentável / tempo de apresentação de amostra de mídia seguinte
Petição 870180166587, de 21/12/2018, pág. 19/48
17/32
314, que não são discutidos em detalhes aqui. Geralmente, um tempo de reprodução decorrido previsto 320 e a amostra de mídia apresentável seguinte correspondente são determinados. O tempo de reprodução decorrido previsto 320 representa a quantidade de duração da reprodução (além do tempo de reprodução decorrido atual 309) que terá passada com base na velocidade de reprodução e taxa de quadro de mídia 307. O tempo de reprodução decorrido previsto é usado para localizar o tempo de apresentação de amostra de mídia particular 302, que será o tempo de apresentação de amostra de mídia apresentável seguinte 314, e a amostra de mídia apresentável seguinte pode ser identificada.
[0045] Referindo-se novamente à FIGURA 2, quando amostras de mídia de dois clipes são simultaneamente apresentáveis para um usuário, então, dentro do encadeamento de processamento de mídia 1 202, amostras de mídia iminentes associadas com um clipe particular 123 são identificadas e recuperadas a partir da fonte de mídia 1 204, e são desmultiplexadas, decodificadas e / ou descriptografadas no decodificador 206. Da mesma forma, dentro do encadeamento de processamento de mídia 2 220, amostras de mídia iminentes associadas a outro clipe particular 123 são identificadas recuperadas da fonte de mídia 2 224, e são desmultiplexadas, decodificadas e / ou descriptografadas no decodificador 2 226. Fontes de mídia são todos os dispositivos, locais, ou dados de que as amostras de mídia são provenientes ou obtidas. Decodificadores são todos os dispositivos, técnicas ou etapas utilizados para obter amostras de mídia renderizáveis a partir de informações recebidas de fontes de mídia. Apesar de um relacionamento um-para-um entre os decodificadores e fontes de mídia ser mostrado, será apreciado que um decodificador que pode servir várias fontes de mídia, e vice-versa.
[0046] Para eficientemente gerenciar a utilização dos recursos de
Petição 870180166587, de 21/12/2018, pág. 20/48
18/32 memória do Sistema de Apresentação 100, o gerenciador de conteúdo de mídia 102 inclui o gerenciador de alocação de memória (MAM) 205, que é sensível a encadeamentos de processamento mídia 202 e 220. MAM 205 é responsável por alocar dinamicamente quantidades variáveis de memória partilhável para preparar amostras de mídia iminentes particulares para apresentação. Em uma possível implementação, MAM 205 é um conjunto de instruções de executáveis por computador codificado em um meio de armazenamento legível por computador que, quando executado, executa aspectos do método apresentado e discutido mais adiante em conexão com a FIGURA 4. Pode ser desejável que o MAM 205 seja uma implementação de uma ou mais funções API (por exemplo, retornar locações de memória de pool de memória 240, discutido mais adiante), que são acessadas por autores de instruções para encadeamento de processamento de mídia 202 e 220. Em outras implementações, MAM 205 pode estar localizado em outros componentes físicos ou lógicos do Sistema de Apresentação 100.
[0047] O pool de memória 240 é uma representação abstrata de uma quantidade ou área (de qualquer tamanho ou configuração) de um determinado meio de armazenamento legível por computador que pode ser visto como tendo unidades podem ser alocadas separadamente, através do MAM 205, para utilização pelos encadeamentos de processamento de mídia 202 e 220, de acordo com determinados algoritmos (um algoritmo exemplar é apresentado e discutido a seguir, em conexão com a FIGURA 4). Uma parte do pool de memória 240 é referida como memória não-partilhada 241, que representa as unidades de memória que são restritas ao uso por qualquer um de encadeamento de processamento de mídia 1 202 ou encadeamento de processamento de mídia 2 220, mas não ambos. Outra parte do pool de memória 240 é referida como memória partilhável 244, que representa as unidades de memória que podem ser alocadas para utilização por
Petição 870180166587, de 21/12/2018, pág. 21/48
19/32 qualquer tanto pelo encadeamento de processamento de mídia 1 202 ou encadeamento de processamento de mídia 2 220 ou ambos (ou outros encadeamentos de processamento conforme o caso). Em um exemplo ilustrativo, o pool de memória 240 é de 40MB de RAM, memória partilhável 244 é de 30MB, e memória não-partilhada 241 é de 10MB, com 5 MB de memória não-partilhada restrita apenas para utilização pelo encadeamento de processamento de mídia 1 202 e 5 MB da memória não-partilhada restrito apenas para utilização apenas pelo encadeamento de processamento de mídia 2 220.
[0048] Alocação dinâmica de memória partilhada 1 246 representa uma quantidade total de memória partilhável 244 que tenha sido alocada (de acordo com os indicadores de consumo de recursos, tais como taxas de dados, discutidos mais adiante em conexão com a FIGURA 4), para utilização pelo encadeamento de processamento de mídia 1 202, e alocação dinâmica de memória partilhada 2 248 representa uma quantidade total de memória partilhável 244 que tenha sido alocada para utilização pelo encadeamento de processamento de mídia 2 220. Geralmente, quantidades variáveis de alocação de memória partilhada 1 246 são solicitadas e reservadas pelo encadeamento de processamento de mídia 1 202 para preparar amostras de mídia iminentes para apresentação, e como as amostras de mídia são reproduzidas a um usuário, as quantidades solicitadas / reservadas de alocação de memória partilhada 1 246 são liberadas. Da mesma forma, quantidades variáveis de alocação de memória partilhada 1 248 são solicitadas e reservadas pelo encadeamento de processamento de mídia 2 220 para preparar amostras de mídia iminentes para apresentação, e como as amostras de mídia são reproduzidas para o usuário, as quantidades solicitadas / reservadas de alocação de memória partilhada 2 248 são liberadas.
[0049] Com contínua referência às FIGURAS 1-3, a FIGURA 4 é
Petição 870180166587, de 21/12/2018, pág. 22/48
20/32 um fluxograma de um método para gerenciar simultaneamente uma variedade de conjuntos de dados digitais que utilizam memória partilhada, como conteúdo de mídia disposto em uma variedade de conjuntos (tais como clipes 123) de amostras de mídia sequenciadas que são gerenciadas por meio de memória partilhável 244.
[0050] O(s) processo(s) ilustrado(s) na FIGURA 4 pode(m) ser implementado^) em um ou mais processadores genéricos, multifuncionais ou de propósito específico, tal como o processador 502 discutido abaixo, em conexão com a FIGURA 5. A menos que especificado em contrário, os métodos descritos neste documento não são restritos a uma determinada ordem ou sequência. Além disso, alguns dos métodos ou elementos dos mesmos descritos podem ocorrer ou ser executados simultaneamente.
[0051] O método começa no bloco 400 e continua no bloco 402, onde uma quantidade de memória partilhada para o processamento de um primeiro conjunto de unidades digitais é reservada. No contexto do Sistema de Apresentação 100, o primeiro conjunto de unidades digitais pode ser considerado para um clipe particular 123 de um filme, renderizado (como fluxo de conteúdo de mídia 1 208), através encadeamentos de processamento de mídia 202. Quando fluxo de conteúdo de mídia 208 é o único fluxo de conteúdo de mídia fluxo que está sendo apresentado para o usuário, toda a memória disponível partilhável 244 pode geralmente ser atribuída, por MAM 202, para renderização de fluxo conteúdo de mídia 1 208.
[0052] Em seguida, no losango 404, é determinado se um segundo conjunto de unidades digitais deve ser processado simultaneamente ao primeiro conjunto de unidades digitais. No contexto do Sistema de Apresentação 100, o segundo conjunto de unidades digitais pode ser considerado como um fluxo de conteúdo de mídia secundário selecionado pelo usuário (renderizado como fluxo de conteúdo de mídia 2
Petição 870180166587, de 21/12/2018, pág. 23/48
21/32
228), como um comentário do diretor cena a cena, um anúncio, ou uma parte do filme renderizada em alta definição, entre outras coisas. Quando o fluxo de conteúdo de mídia 1 208 e o fluxo de conteúdo de mídia 2 228 estão sendo renderizados simultaneamente, a memória partilhável 244 geralmente será dividida, pelo MAM 205, entre a utilização de encadeamento de processamento de mídia 1 202 (para a identificação e decodificação de amostras de mídia iminentes a partir de fluxo de conteúdo de mídia 1 208) e utilização pelo encadeamento de processamento de mídia 2 220 (para a identificação e decodificação de amostras de mídia iminentes a partir de fluxo de conteúdo de mídia 2 228). Embora a memória partilhável 244 seja discutida especificamente, deve-se notar que os encadeamentos de processamento de mídia também geralmente têm acesso a quantidades de memória nãopartilhada 241, que geralmente é utilizada para iniciar a renderização de amostras de mídia (que podem ou não ser as primeiras amostras de mídia sequenciais) de um clipe particular / fluxo de conteúdo mídia, e acessar a memória partilhável 244 é, adicionalmente, para acesso à memória não-partilhada.
[0053] Como indicado no bloco 406, uma maneira de dividir a utilização de memória partilhada entre os atos associados ao processamento de dois conjuntos de unidades digitais simultaneamente é alocar a memória partilhada com base nas taxas de consumo de recurso relativas associadas ao processamento dos conjuntos de unidades digitais. No contexto do Sistema de Apresentação 100, uma taxa de consumo de recursos exemplar é uma taxa de dados média de um fluxo de conteúdo de mídia particular, e uma alocação exemplar é uma alocação com base em uma razão das taxas de dados médias.
[0054] Uma taxa de dados média de um fluxo de conteúdo de mídia particular, tal como fluxo de conteúdo de mídia 1 208 e fluxo de conteúdo de mídia 2 228, pode ser calculada dividindo o número total
Petição 870180166587, de 21/12/2018, pág. 24/48
22/32 de amostras atualmente sendo renderizadas a partir de um clipe particular (por exemplo, o tamanho de amostras sendo decodificadas ou que tenha sido decodificadas e protegidas, mas ainda não reproduzidas a um usuário) pelo tempo de reprodução total (determinado a partir do cronograma de mídia 142, por exemplo) do número total de amostras a serem processadas. As amostras de mídia iminentes são identificadas (utilizando cronograma de mídia 142, por exemplo) e memória partilhável é reservada com sucesso para renderizar as amostras de mídia iminentes identificadas, e também como amostras de mídia renderizadas são reproduzidas a um usuário e a memória é liberada com sucesso, a taxa de dados média pode ser atualizada. Por exemplo, supondo que, como discutido anteriormente, a memória partilhável 244 é de 30MB, que o fluxo de conteúdo de mídia 1 208 tem uma taxa de dados média de 40 MB/s, e que o fluxo de conteúdo de mídia 2 228 tem uma taxa de dados média de 20 MB/s, então, a razão de taxas de dados entre o fluxo de conteúdo de mídia 1 208 e fluxo de conteúdo de mídia 2 228 seria de 2:1, e a alocação de memória partilhável 244 com base na razão seria de 20MB para o encadeamento de processamento de mídia 1 202 para a renderização de fluxo conteúdo de mídia 1 208 e 10MB para encadeamento de processamento de mídia 2 220 para a renderização de fluxo de conteúdo de mídia 1 228.
[0055] Às vezes, conforme indicado no losango 407, pode não ser possível imediatamente alocar memória partilháveis 244 nas quantidades desejadas com base na razão calculada (por exemplo, um ou ambos os encadeamentos de processamento de mídia pode ter memória previamente reservada no bloco 412, como discutido abaixo, que ainda não tenha sido liberada). Se a alocação desejada não é atualmente possível, então, uma solução é atribuir memória partilhável disponível com base em um regime de prioridade, conforme indicado no bloco 418. Se uma prioridade de solicitação de memória for determinada,
Petição 870180166587, de 21/12/2018, pág. 25/48
23/32 como indicado no losango 420, então, como quantidades discretas de memória partilhável são liberadas (ver losango 424) no bloco 416, e as quantidades de memória partilhável são superiores à alocação desejada (com baseado na razão de taxas de dados média) para a liberação de encadeamento de processamento de mídia das mesmas, estas podem ser imediatamente re-alocadas de acordo com a prioridade de solicitação de memória pendente.
[0056] Supondo ser possível no losango 407 imediatamente alocar memória partilhável 244 nas quantidades desejadas com base na razão calculada no bloco 406, em seguida, no bloco 408, as etapas de solicitação e / ou reserva de quantidades particulares de memória partilhada alocada para partes de processamento dos conjuntos de unidades digitais são executadas. No contexto do Sistema de Apresentação 100, ambos encadeamento de processamento de mídia 1 202 e encadeamento de processamento de mídia 2 220 solicitam (de MAM 205, por exemplo) reservas de quantidades discretas de memória partilhável previamente alocada 244, que são necessárias para renderizar as amostras de mídia iminentes identificadas (identificadas com base no cronograma de mídia 142, por exemplo). Recursos de memória necessários para preparar amostras individuais de mídia não são sempre constantes de amostra para amostra ou de clipe para clipe, sendo afetados por fatores, tais como tamanho de amostra de mídia, localização ou identidade de fonte de mídia, parâmetros de codificação ou decodificação, formato de apresentação de amostra de mídia, parâmetros de compressão, parâmetros de criptografia, velocidade de leitura, cargas de processamento dinâmico do reprodutor de conteúdo de mídia, e outro fatores.
[0057] Se for determinado no losango 410 que existe memória partilhável não reservada suficiente 244 (alocado no bloco 206) para preencher uma solicitação por quantidade discreta de memória necessáPetição 870180166587, de 21/12/2018, pág. 26/48
24/32 ria para processar uma determinada amostra de mídia iminente de um fluxo de conteúdo de mídia / clipe, em seguida, a quantidade de memória solicitada é reservada (por MAM 205, por exemplo) em nome da solicitação de encadeamento de processamento de mídia, conforme indicado no bloco 412. Geralmente, a reserva reduz a quantidade de memória partilhável 244 (alocada no bloco 206) disponível para a solicitação de encadeamento de processamento de mídia. Deve-se notar que essa reserva pode também afetar de forma independente o cálculo no bloco 406 da taxa de dados média do fluxo de conteúdo de mídia aplicável.
[0058] Como indicado no bloco 416, quando o processamento (por exemplo, a apresentação a um usuário de dados de mídia 132) estiver concluído, as quantidades discretas de memória reservada no bloco 412 são liberadas pelo MAM 205. Geralmente, a liberação aumenta a quantidade de memória partilhável 244 (alocada no bloco 206) disponível para a liberação de encadeamento de processamento mídia. No caso em que, no bloco 406, a alocação desejada de memória partilhável 244 não puder ser implementada imediatamente e as quantidades de memória liberadas forem em excesso da alocação desejada para a liberação de encadeamento de conteúdo de mídia, então a memória liberada pode ser imediatamente re-atribuída de acordo com a alocação desejada calculada no bloco 406. Da mesma forma, se houver prioridades de solicitação de memória pendentes, como indicado no losango 414 (discutido mais adiante), as prioridades de solicitação de memória pendente são preenchidas.
[0059] Voltando ao losango 410, assume-se que a alocação desejada tenha sido implementada, mas é determinado (para um ou mais encadeamentos de processamento de mídia) que há memória partilhável não reservada insuficiente 244 (alocada no bloco 206) para atender uma solicitação para a quantidade discreta de memória nePetição 870180166587, de 21/12/2018, pág. 27/48
25/32 cessária para processar uma determinada amostra de mídia iminente, então a memória partilhável disponível é atribuída com base em um regime de prioridade, conforme indicado no bloco 418. Em um regime de prioridade possível, maior prioridade é dada à atribuição de memória partilhável para o encadeamento de processamento de mídia que atualmente tem menos de sua parte alocada da memória partilhável. Regimes alternativos são possíveis, por exemplo, dando maior prioridade à atribuição de memória partilhável para o encadeamento de processamento de mídia tendo o fluxo de conteúdo de mídia com a maior taxa de dados média. Por exemplo, assume-se que ambos os encadeamentos de processamento de mídia solicitaram memória partilhável em excesso de seus lotes calculados no bloco 406. Se, no bloco 420, uma prioridade de solicitação de memória é atribuída ao encadeamento de processamento de mídia que atualmente tem menos de sua parte alocada da memória partilhável, o outro encadeamento de processamento de mídia pode receber uma prioridade de solicitação de memória mais baixa ou nenhuma prioridade de solicitação de memória. Após receber uma prioridade de solicitação memória, o encadeamento de processamento de mídia espera, tal como indicado no bloco 422, até que memória suficiente seja liberada no bloco 416 (pelo encadeamento de processamento de mídia à espera ou por qualquer encadeamento de processamento de mídia), e a memória liberada é imediatamente reservada de acordo com a(s) prioridade(s) de solicitação de memória.
[0060] Em outro exemplo, assume-se que um encadeamento de processamento de mídia solicitou memória partilhável em excesso de sua atribuição calculada no bloco 406. Uma solução seria atribuir uma prioridade de solicitação de memória se o encadeamento de processamento de mídia atualmente tiver menos de sua parte alocada da memória partilhável, e não atribuir uma prioridade de solicitação de
Petição 870180166587, de 21/12/2018, pág. 28/48
26/32 memória se o encadeamento de processamento de mídia tiver a sua parte alocada da memória partilhável. Quando uma prioridade de solicitação de memória é atribuída, em seguida, o encadeamento de processamento de mídia espera, tal como indicado no bloco 422, até que memória suficiente seja liberada no bloco 416 por qualquer encadeamento de processamento de mídia, e a memória liberada é imediatamente reservada de acordo com a(s) prioridade(s) de solicitação de memória.
[0061] Como indicado no losango 420, quando prioridades de solicitação de memória não são determinadas, uma solução é fazer com que o encadeamento de processamento de mídia repetidamente resolicite quantidades discretas de memória até que a memória necessária esteja disponível (por exemplo, tanto a alocação calculada no bloco 406 altera e / ou outro encadeamento de processamento de memória libera memória em excesso de sua alocação atual).
[0062] Como indicado no losango 414, prioridades de solicitação de memória pendentes são atendidas, em geral, por prioridade ou ordem de tempo. Pode ser desejável restabelecer prioridades de solicitação de memória ao mesmo tempo em que a memória partilhável 244 é re-alocada no bloco 206. Tal re-alocação pode ocorrer em vários momentos independentemente dos tempos de apresentação de amostra de mídia ilustrados no cronograma de mídia 142. Se não houver nenhuma prioridade de solicitação de memória pendente e um fluxo de dados de mídia parar, o método retorna ao bloco 402, onde toda a memória disponível partilhável 244 está disponível para os outros fluxos de dados de mídia que sendo processados.
[0063] A FIGURA 5 é um diagrama de blocos de uma unidade de computação de propósito geral 500, ilustrando alguns componentes funcionais que podem ser usados para implementar, podem ser acessados por, ou podem ser incluídos dentro de, vários componentes funPetição 870180166587, de 21/12/2018, pág. 29/48
27/32 cionais do Sistema de Apresentação 100. Um ou mais componentes da unidade de computação 500 podem ser usados para implementar, ser acessíveis por, ou ser incluídos no, gerenciador IC 104, gerenciador de apresentação 106 e gerenciador de conteúdo de mídia 102. Por exemplo, um ou mais componentes da FIGURA 5 podem ser empacotados em conjunto ou separadamente para implementar funções do Sistema de Apresentação 100 (no todo ou em parte) de várias maneiras.
[0064] Um ou mais processadores 502 são sensíveis a meios legíveis por computador 504 e programas de computador 506. Processadores) 502, que podem ser físicos ou virtuais, controlam funções de um dispositivo eletrônico por instruções executáveis por computador. Processador(es) 502 podem executar instruções em conjunto, compilados, ou em nível de máquina para executar um determinado processo. Tais instruções podem ser criadas utilizando-se o código fonte ou qualquer outra ferramenta de criação de programa de computador conhecida.
[0065] Meios legíveis por computador 504 representam qualquer variedade e combinação de dispositivos locais ou remotos, sob qualquer forma, atualmente conhecida ou posteriormente desenvolvida, capaz de gravar, armazenar ou renderizar dados legíveis por computador, tais como as instruções executáveis pelo processador 502. Em particular, meios legíveis por computador 504 podem ser, ou podem incluir, uma memória de semicondutores (tal como uma memória somente de leitura (ROM), qualquer tipo de ROM programável (PROM), uma memória de acesso aleatório (RAM), ou uma memória flash, por exemplo); um dispositivo de armazenamento magnético (tal como uma unidade de disquetes, uma unidade de disco rígido, um tambor magnético, uma fita magnética ou um disco magneto-óptico); um dispositivo de armazenamento óptico (tal como como qualquer tipo
Petição 870180166587, de 21/12/2018, pág. 30/48
28/32 de disco compacto ou disco digital versátil); uma memória de bolhas; uma memória cachê; memória principal; uma memória holográfica; um cartão de memória; uma fita de papel; um cartão perfurado, ou qualquer combinação destes. Meios legíveis por computador 504 também podem incluir meios de renderização e dados a ele associados. Exemplos de meios / dados de renderização incluem, mas não estão limitados a, dados incorporados em qualquer forma de renderização com fio ou sem fio, tal como dados empacotados ou não empacotados transportados por um sinal portador modulado.
[0066] Os programas de computador 506 representam quaisquer métodos de processamento de sinal ou instruções armazenadas que controlam eletronicamente operações sobre dados predeterminados. Em geral, os programas de computador 506 computador são instruções executáveis por computador implementadas como componentes de software de acordo com práticas bem conhecidas de desenvolvimento de software baseado em componentes, e codificadas em meios legíveis por computador (tal como meio legível por computador 504). Os programas de computador podem ser combinados ou distribuídos de várias maneiras.
[0067] Funções / componentes descritos no contexto do Sistema de Apresentação 100 não estão limitados à implementação por quaisquer modalidades específicas de programas de computador. Ao contrário, as funções são processos que renderizam ou transformam dados, e podem geralmente ser implementadas por, ou executadas em, hardware, software, firmware ou qualquer combinação dos mesmos, localizada no, ou acessado por, qualquer combinação de elementos funcionais do Sistema de Apresentação 100.
[0068] Com referência contínua à FIGURA 5, a FIGURA 6 é um diagrama de blocos de uma configuração exemplar de um ambiente operacional 600 em que a totalidade ou parte da unidade de computaPetição 870180166587, de 21/12/2018, pág. 31/48
29/32 ção 500 ou Sistema de Apresentação 100 pode ser aplicada ou utilizada. O ambiente operacional 600 geralmente é indicativo de uma grande variedade de ambientes de computação de propósito geral ou de finalidade especial. O ambiente operacional 600 é apenas um exemplo de um ambiente operacional adequado e não pretende sugerir qualquer limitação quanto ao escopo de utilização quanto à funcionalidade do(s) sistema(s) e método(s) descrito(s) neste documento. Por exemplo, o ambiente operacional 600 pode ser um tipo de computador, tal como um computador pessoal, uma estação de trabalho, um servidor, um dispositivo portátil, um laptop, uma placa, ou qualquer outro tipo de aparelho eletrônico, tal como um reprodutor de mídia óptico ou outro tipo de reprodutor de mídia, atualmente conhecido ou desenvolvido posteriormente, ou qualquer aspecto dos mesmos. O ambiente operacional 600 também pode ser uma rede de computação distribuída ou um serviço da Web, por exemplo. Um exemplo específico de ambiente operacional 600 é um ambiente, tal como um reprodutor de DVD ou um sistema operacional associado ao mesmo, o que facilita a reprodução de filmes em DVD com alta definição.
[0069] Como mostrado, o ambiente operacional 600 inclui ou acessa componentes da unidade de computação 500, incluindo processador 502, meio legível por computador 504, e programas de computador 506. Um ou mais barramentos internos 620, os quais são elementos bem conhecidos e amplamente disponíveis, podem ser utilizados para renderizar dados, endereços, sinais de controle e outras informações dentro, para, ou a partir do ambiente de computação 600 ou elementos dos mesmos.
[0070] Interface(s) de entrada 608 fornecem entrada para o ambiente de computação 600. A entrada pode ser obtida utilizando qualquer tipo de interface atualmente conhecida ou posteriormente desenvolvida, tal como uma interface de usuário. Interfaces de usuário poPetição 870180166587, de 21/12/2018, pág. 32/48
30/32 dem ser dispositivos de entrada por toque, tais como controles remotos, monitores, mouses, pen drives, agulhas de gravação, dispositivo indicador, teclados, microfones, aparelhos de scanner, e todos os tipos de dispositivos que são utilizados para entrada de dados.
[0071] Interface(s) de comunicação externa 612 estão disponíveis para aumentar a capacidade do ambiente operacional 600 de receber informações de, ou de renderizar informações para, outra entidade através de um meio de comunicação, tal como um sinal de canal, um sinal de dados, ou um meio legível por computador. Interface(s) de comunicação externa 612 podem ser, ou podem incluir, elementos, tais como modems a cabo, equipamento de terminais de dados, reprodutores de mídia, dispositivos de armazenamento de dados, assistentes digitais pessoais, ou qualquer outro dispositivo ou componente / combinação dos mesmos, juntamente com os dispositivos e / ou software ou interfaces de suporte de rede associados. Hardware especializado 615 representa qualquer hardware ou firmware que implemente as funções de ambiente operacional 600, tais como transceptores, codecs, circuitos especializados, unidades de disco, e semelhantes.
[0072] A FIGURA 7 é um diagrama simplificado funcional de uma arquitetura cliente-servidor 700 em conexão com o qual o Sistema de Apresentação 100, a unidade de computação 500, ou o ambiente operacional 600 pode ser usado. Um ou mais aspectos do Sistema de Apresentação 100, unidade de computação 500 e / ou ambiente operacional 600 podem ser representados em um lado cliente 702 de arquitetura 700 ou em um lado servidor 704 de arquitetura 700. Como mostrado, o quadro de comunicação 703 (que pode ser qualquer rede pública ou privada de qualquer tipo, por exemplo, com ou sem fio) facilita a comunicação entre o lado cliente 702 o lado servidor 704.
[0073] No lado cliente 702, um ou mais clientes 706, os quais podem ser implementados em hardware, software, firmware ou qualquer
Petição 870180166587, de 21/12/2018, pág. 33/48
31/32 combinação dos mesmos, são sensíveis a memórias de dados de clientes 708. Memórias de dados de cliente 708 podem ser meio legível por computador 504, utilizado para armazenar local de informações para clientes 706. No lado servidor 704, um ou mais servidores 710 são sensíveis memórias de dados de servidor 712. Assim como memórias de dados de cliente 708, memórias de dados de servidor 712 podem incluir um ou mais meios legíveis por computador 504, utilizados para armazenar local de informações para servidores 710.
[0074] Vários aspectos de um sistema de apresentação que é utilizado para apresentar conteúdo interativo a um usuário de forma síncrona com o conteúdo de mídia foram descritos. Será entendido, no entanto, que todos os componentes descritos do sistema de apresentação não precisam ser usados, nem devem os componentes, quando utilizados, estar presentes simultaneamente. Funções / componentes descritos no contexto do Sistema de Apresentação 100 como sendo programas de computador não se limitam à implementação por quaisquer modalidades específicas de programas de computador. Ao contrário, funções são processos que renderizam ou transformam dados e podem geralmente ser implementadas por, ou executadas em, hardware, software, firmware ou qualquer combinação dos mesmos.
[0075] Embora o assunto tenha sido aqui descrito em uma linguagem específica para as características estruturais e / ou atos metodológicos, deve também ser entendido que o assunto definido nas reivindicações não é necessariamente limitado às características específicas ou atos descritos acima. Ao contrário, as características específicas e os atos acima descritos são divulgados como formas exemplares de implementação das reivindicações.
[0076] Será ainda entendido que quando um elemento é indicado como sendo sensível a outro elemento, os elementos podem ser direta ou indiretamente associados. As conexões aqui mencionadas podem
Petição 870180166587, de 21/12/2018, pág. 34/48
32/32 ser lógicas ou físicas na prática para conseguir uma ligação ou interface de comunicação entre os elementos. As conexões podem ser aplicadas, entre outras formas, como comunicações inter-processos entre processos de software, ou comunicações inter-máquinas entre computadores em rede.
[0077] A palavra exemplar é usada aqui no sentido de servir como um exemplo, circunstância ou ilustração. Qualquer aplicação ou aspecto da mesma aqui descrito como exemplar não deve necessariamente ser considerado como preferencial ou vantajoso sobre outras aplicações ou aspectos desta.
[0078] Como é entendido que modalidades outras que as modalidades específicas descritas acima podem ser concebidas sem se afastar do espírito e escopo das reivindicações anexas, entende-se que o escopo do presente assunto será regido pelas reivindicações que seguem.

Claims (15)

  1. REIVINDICAÇÕES
    1. Meio de armazenamento legível por computador (504) contendo um método (400) para gerenciar dados digitais, o método usando um pool de memória (240) tendo uma quantidade de memória partilhável (244), os dados digitais compreendendo uma pluralidade de conjuntos de unidades sequenciadas de dados digitais, o método compreendendo as etapas de:
    identificar um primeiro conjunto de unidades de dados digitais com uma primeira sequência (402);
    identificar um segundo conjunto de unidades de dados digitais com uma segunda sequência (404);
    caracterizado pelo fato de que, quando uma parte do primeiro conjunto for processado simultaneamente com uma parte do segundo conjunto, determinar (406) um primeiro indicador de consumo de recurso associado ao processamento de algumas das unidades de dados digitais na primeira sequência;
    determinar (406) um segundo indicador de consumo de recurso associado ao processamento de algumas das unidades de dados digitais na segunda sequência;
    calcular (406) uma razão do primeiro indicador de consumo de recurso em relação ao segundo indicador de consumo de recurso; e de acordo com a razão, alocar dinamicamente (406, 407, 408) a quantidade de memória partilhável (244) no pool de memória (240) entre os dois atos associados ao processamento do primeiro conjunto e os atos associados ao processamento do segundo conjunto.
  2. 2. Meio de armazenamento legível por computador (504), de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende:
    Petição 870190041082, de 02/05/2019, pág. 4/16
    2/9 quando uma parte do primeiro conjunto não é para ser (404) processada simultaneamente com uma parte do segundo conjunto, alocar dinamicamente a quantidade de memória partilhável (244) no pool de memória (240) para atuar tanto em associação ao processamento do primeiro conjunto ou para atuar em associação ao processamento do segundo conjunto, porém não ambos.
  3. 3. Meio de armazenamento legível por computador (504), de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro e o segundo indicador de consumo de recurso compreendem taxas de consumo de recurso médias associadas ao processamento do primeiro e do segundo conjunto de unidades de dados digitais, respectivamente, e em que tanto a primeira sequência ou a segunda sequência ou ambas são predeterminadas ou dinamicamente determinadas.
  4. 4. Meio de armazenamento legível por computador (504), de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende:
    quando uma parte do primeiro conjunto é configurada para ser processada simultaneamente com uma parte do segundo conjunto, determinar (407) que uma quantidade de memória partilhável (244) disponível é insuficiente para alocação de acordo com a razão;
    determinar uma prioridade (420) para atuar tanto em associação ao processamento do primeiro conjunto de unidades digitais como para atuar em associação ao processamento do segundo conjunto de unidades digitais; e alocar dinamicamente (418) a quantidade de memória partilhável (244) no pool de memória (240) com base na prioridade determinada.
  5. 5. Meio de armazenamento legível por computador (504), de acordo com a reivindicação 4, caracterizado pelo fato de que a
    Petição 870190041082, de 02/05/2019, pág. 5/16
    3/9 etapa de alocar a quantidade de memória partilhável (244) no pool de memória (240) com base na prioridade compreende:
    quando a prioridade for determinada para atuar em associação ao processamento do primeiro conjunto, alocar a quantidade de memória partilhável (244) no pool de memória (240) para atuar em associação ao processamento do primeiro conjunto, e quando a prioridade for determinada para atuar em associação ao processamento do segundo conjunto, alocar dinamicamente a quantidade de memória partilhável (244) no pool de memória (240) para atuar em associação ao processamento do segundo conjunto.
  6. 6. Sistema (100) para renderizar conteúdo de mídia disposto em uma pluralidade de conjuntos de amostras de mídia sequenciadas, caracterizado pelo fato de que compreende:
    um gerenciador de conteúdo de mídia (102) operável para organizar para renderização de um primeiro conjunto de amostras de mídia de uma primeira fonte de mídia e para renderização de um segundo conjunto de amostras de mídia de uma segunda fonte de mídia;
    um gerenciador de apresentação (106) configurado para comunicação com o gerenciador de conteúdo de mídia (102), o gerenciador de apresentação (106) operável para identificar quando uma primeira amostra de mídia do primeiro conjunto é para ser renderizada simultaneamente com a segunda amostra de mídia do segundo conjunto; e um gerenciador de alocação de memória (205) sensível ao gerenciador de conteúdo de mídia (102) e ao gerenciador de apresentação (106), o gerenciador de alocação de memória (205) gerenciando um pool de memória (240) partilhável e operável para determinar uma primeira taxa de dados associada à renderização do primeiro conjunto de amostras de mídia;
    determinar uma segunda taxa de dados associada à rendePetição 870190041082, de 02/05/2019, pág. 6/16
    4/9 rização do segundo conjunto de amostras de mídia;
    comparar a primeira taxa de dados com a segunda taxa de dados; e com base na comparação, alocar dinamicamente uma primeira quantidade de memória do pool de memória (240) partilhável para renderizar a primeira amostra de mídia do primeiro conjunto de amostras de mídia e uma segunda quantidade de memória do pool de memória (240) partilhável para renderização simultânea da segunda amostra de mídia do segundo conjunto de amostras de mídia.
  7. 7. Sistema (100), de acordo com a reivindicação 6, caracterizado pelo fato de que o sistema compreende um sistema operacional, e um reprodutor de mídia digital.
  8. 8. Sistema (100), de acordo com a reivindicação 6, caracterizado pelo fato de que o gerenciador de alocação de memória (205) ainda é operável para:
    identificar uma primeira amostra de mídia iminente do primeiro conjunto de amostras de mídia, identificar uma segunda amostra de mídia iminente do segundo conjunto de amostras de mídia, a segunda amostra de mídia iminente a ser simultaneamente renderizada com a primeira amostra de mídia iminente;
    determinar uma primeira quantidade de memória desejada para renderizar a primeira amostra de mídia iminente;
    determinar uma segunda quantidade de memória desejada para renderizar a segunda amostra de mídia iminente;
    quando uma quantidade de memória disponível do pool de memória (240) partilhável for suficiente para alocar dinamicamente ambas a primeira quantidade de memória desejada e a segunda quantidade de memória desejada,
    Petição 870190041082, de 02/05/2019, pág. 7/16
    5/9 alocar dinamicamente a primeira quantidade de memória desejada para renderizar a primeira amostra de mídia iminente e reduzir a quantidade de memória disponível do pool de memória (240) partilhável pela primeira quantidade de memória desejada, e alocar dinamicamente a segunda quantidade de memória desejada para renderizar a segunda amostra de mídia iminente e reduzir a quantidade de memória disponível do pool de memória (240) partilhável pela segunda quantidade de memória desejada; e quando uma quantidade de memória disponível do pool de memória (240) partilhável for insuficiente para alocar dinamicamente ambas a primeira quantidade de memória desejada e a segunda quantidade de memória desejada, alocar dinamicamente a primeira quantidade de memória desejada para renderizar a primeira amostra de mídia iminente e reduzir a quantidade de memória disponível do pool de memória (240) partilhável pela primeira quantidade de memória desejada, ou alocar dinamicamente a segunda quantidade de memória desejada para renderizar a segunda amostra de mídia iminente e reduzir a quantidade de memória disponível do pool de memória (240) partilhável pela segunda quantidade de memória desejada.
  9. 9. Sistema (100), de acordo com a reivindicação 8, caracterizado pelo fato de que o gerenciador de alocação de memória (205) ainda é operável para, quando uma quantidade de memória disponível do pool de memória (240) partilhável for insuficiente para alocar dinamicamente ambas a primeira quantidade de memória desejada e a segunda quantidade de memória dinâmica, alocar dinamicamente a primeira quantidade de memória desejada quando a primeira taxa de dados for maior do que a segunda taxa de dados, e alocar dinamicamente a segunda quantidade de memória
    Petição 870190041082, de 02/05/2019, pág. 8/16
    6/9 desejada quando a segunda taxa de dados for maior do que a primeira taxa de dados; ou determinar uma prioridade de alocação de memória à primeira quantidade de memória desejada quando a segunda quantidade de memória desejada for dinamicamente alocada, ou determinar uma prioridade de alocação à segunda quantidade de memória desejada quando a primeira quantidade de memória desejada for dinamicamente alocada;
    quando a prioridade de alocação for determinada à primeira quantidade de memória desejada e a quantidade de memória disponível do pool de memória (240) partilhável se tornar igual ou maior do que a primeira quantidade de memória desejada, automaticamente alocar dinamicamente a primeira quantidade de memória desejada do pool de memória (240) partilhável; e quando a prioridade de alocação for determinada à segunda quantidade de memória desejada e a quantidade de memória disponível do pool de memória (240) partilhável se tornar igual ou maior do que a segunda quantidade de memória desejada, automaticamente alocar dinamicamente a primeira quantidade de memória desejada do pool de memória (240) partilhável.
  10. 10. Sistema (100), de acordo com a reivindicação 8, caracterizado pelo fato de que o gerenciador de alocação de memória (205) ainda é operável para:
    quando a primeira quantidade de memória desejada tiver sido dinamicamente alocada, após a primeira amostra de mídia iminente ter sido renderizada, aumentar a quantidade de memória disponível do pool de memória (240) partilhável pela primeira quantidade de memória desejada; e quando a segunda quantidade de memória desejada tiver sido dinamicamente alocada, após a segunda amostra de mídia imi
    Petição 870190041082, de 02/05/2019, pág. 9/16
    7/9 nente ter sido renderizada, aumentar a quantida de de memória disponível do pool de memória (240) partilhável pela segunda quantidade de memória desejada.
  11. 11. Sistema (100), de acordo com a reivindicação 6, caracterizado pelo fato de que a primeira fonte de mídia é a mesma que ou diferente da segunda fonte de mídia, e em que as amostras de mídia são selecionadas do grupo que consiste em:
    bits;
    quadros;
    pacotes de dados;
    grupos de imagens; e unidades de objeto de vídeo melhoradas.
  12. 12. Sistema (100), de acordo com a reivindicação 6, caracterizado pelo fato de que o pool de memória (240) partilhável é operável para comparar através de realizar o cálculo de uma razão da primeira taxa de dados em relação à segunda taxa de dados, e em que o pool de memória (240) partilhável é operável para alocar dinamicamente através de realizar alocação dinâmica de acordo com a razão.
  13. 13. Sistema (100), de acordo com a reivindicação 6, caracterizado pelo fato de que a primeira taxa de dados compreende uma taxa de dados média calculada com base na informação selecionada do grupo que consiste em:
    uma velocidade de renderização do primeiro conjunto de amostras de mídia;
    uma característica do sistema de apresentação; e uma característica da primeira fonte de mídia, e em que a segunda taxa de dados compreende uma taxa de dados média calculada com base na informação selecionada do grupo
    Petição 870190041082, de 02/05/2019, pág. 10/16
    8/9 que consiste em:
    uma velocidade de renderização do segundo conjunto de amostras de mídia;
    uma característica do sistema de apresentação; e uma característica da segunda fonte de mídia.
  14. 14. Sistema (100), de acordo com a reivindicação 13, caracterizado pelo fato de que as características do sistema de apresentação são selecionadas do grupo que consiste em:
    um estado de leitura do primeiro conjunto de amostras de mídia ou do segundo conjunto de amostras de mídia ou de ambos;
    uma carga de processamento dentro do sistema de apresentação; e uma frequência de relógio associada ao sistema de apresentação; e em que as características da primeira e da segunda fonte de mídia são selecionadas do grupo que consiste em:
    parâmetros de pares de codificador-decodificador; e parâmetros de criptografia.
  15. 15. Sistema (100), de acordo com a reivindicação 13, caracterizado pelo fato de que o cálculo de uma taxa de dados média associada à renderização de amostras de mídia do primeiro conjunto compreende meios para determinar uma quantidade de memória do pool de memória (240) partilhável atualmente alocada para renderizar o primeiro conjunto de amostras de mídia, determinar um tamanho de uma primeira variedade de amostras de mídia do primeiro conjunto que estiver sendo atualmente renderizada, determinar uma primeira quantidade de tempo associado à divulgação a um usuário do primeiro número de amostras de mídia, e
    Petição 870190041082, de 02/05/2019, pág. 11/16
    9/9 dividir o tamanho da primeira variedade de amostras de mídia pela primeira quantidade de tempo, e em que o cálculo de uma taxa de dados média associada à renderização de amostras de mídia do segundo conjunto compreende meios para determinar uma quantidade de memória do pool de memória (240) partilhável atualmente alocada para renderizar o segundo conjunto de amostras de mídia, determinar um tamanho de um segundo número de amostras de mídia do segundo conjunto que estiver sendo atualmente renderizado, determinar uma segunda quantidade de tempo associado à divulgação a um usuário do segundo número de amostras de mídia, e dividir o tamanho do segundo número de amostras de mídia pela segunda quantidade de tempo.
BRPI0813398-0A 2007-06-28 2008-06-17 Meio de armazenamento legível por computador e sistema para renderizar conteúdo demídia BRPI0813398B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/823.510 2007-06-28
US11/823,510 US7698528B2 (en) 2007-06-28 2007-06-28 Shared memory pool allocation during media rendering
PCT/US2008/067252 WO2009006016A2 (en) 2007-06-28 2008-06-17 Digital data management using shared memory pool

Publications (2)

Publication Number Publication Date
BRPI0813398A2 BRPI0813398A2 (pt) 2014-12-30
BRPI0813398B1 true BRPI0813398B1 (pt) 2019-08-20

Family

ID=40162136

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0813398-0A BRPI0813398B1 (pt) 2007-06-28 2008-06-17 Meio de armazenamento legível por computador e sistema para renderizar conteúdo demídia

Country Status (13)

Country Link
US (1) US7698528B2 (pt)
EP (1) EP2160685B1 (pt)
JP (1) JP5513381B2 (pt)
KR (1) KR101475544B1 (pt)
CN (1) CN101689137B (pt)
AU (1) AU2008270802B2 (pt)
BR (1) BRPI0813398B1 (pt)
CA (1) CA2689585A1 (pt)
IL (1) IL202618A (pt)
MX (1) MX2009013843A (pt)
RU (1) RU2466451C2 (pt)
TW (1) TWI368875B (pt)
WO (1) WO2009006016A2 (pt)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101259015B1 (ko) * 2008-02-29 2013-04-29 삼성전자주식회사 재생 방법 및 장치
NO329425B1 (no) * 2009-03-17 2010-10-18 Microsoft Internat Holdings B System og fremgangsmate til a forbedre konfigurasjon og kostnadseffektivitet for databehandlingsoppgaver
US8423088B2 (en) * 2009-07-22 2013-04-16 Microsoft Corporation Aggregated, interactive communication timeline
CN101883153B (zh) * 2010-07-22 2015-05-13 中兴通讯股份有限公司 一种基于云计算的信息呈现方法、系统及终端设备
KR20140038408A (ko) 2011-05-10 2014-03-28 톰슨 라이센싱 동기화된 컨텐트 공유 기술
KR102277258B1 (ko) * 2014-02-27 2021-07-14 엘지전자 주식회사 디지털 디바이스 및 상기 디지털 디바이스에서 애플리케이션 처리 방법
CN105701019A (zh) 2014-11-25 2016-06-22 阿里巴巴集团控股有限公司 一种内存管理方法以及装置
US9882960B2 (en) * 2014-12-30 2018-01-30 Airwatch Llc Security framework for media playback
CN108573162A (zh) * 2017-05-31 2018-09-25 北京金山云网络技术有限公司 数据拷贝系统、方法及装置
WO2019139955A1 (en) 2018-01-10 2019-07-18 Idac Holdings, Inc. Methods for identifying resources of a new radio physical downlink control channel which have been preempted by ultra-reliable low latency communication
US10838868B2 (en) 2019-03-07 2020-11-17 International Business Machines Corporation Programmable data delivery by load and store agents on a processing chip interfacing with on-chip memory components and directing data to external memory components

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2842738B2 (ja) * 1992-08-25 1999-01-06 富士通株式会社 オンライン処理システム
US6205522B1 (en) 1998-04-15 2001-03-20 Diamond Multimedia Systems, Inc. DSP code swapping with continuous DSP execution
US6490250B1 (en) * 1999-03-09 2002-12-03 Conexant Systems, Inc. Elementary stream multiplexer
JP2001043616A (ja) * 1999-07-30 2001-02-16 Sharp Corp 記録方法、記録媒体及び記録装置
KR100407494B1 (ko) 1999-10-29 2003-12-01 엘지전자 주식회사 스트림 사양정보의 기록 및 이의 제공방법
TW522379B (en) 2000-05-26 2003-03-01 Cyberlink Corp DVD playback system for displaying two types of captions and the playback method
US6578109B1 (en) 2000-06-29 2003-06-10 Sony Corporation System and method for effectively implementing isochronous processor cache
AU2002258135A1 (en) * 2001-05-10 2002-11-18 Polycom Israel Ltd. Control unit for multipoint multimedia/audio system
US7266132B1 (en) * 2002-10-24 2007-09-04 Cisco Technology, Inc. Flexible memory allocation for data transmission
JP3990257B2 (ja) * 2002-11-08 2007-10-10 シャープ株式会社 デジタル符号化情報記録再生装置
CA2422252C (en) 2003-03-14 2008-09-02 Ibm Canada Limited - Ibm Canada Limitee Reduced synchronization reservation system and method for a shared memory buffer
US7472246B2 (en) * 2003-04-30 2008-12-30 International Business Machines Corporation Method and system for automated memory reallocating and optimization between logical partitions
JP2005004581A (ja) * 2003-06-13 2005-01-06 Matsushita Electric Ind Co Ltd メディア処理装置及びメディア処理方法
US20050030971A1 (en) 2003-08-08 2005-02-10 Visionflow, Inc. Adaptive bandwidth allocation over a heterogeneous system interconnect delivering true bandwidth-on-demand
EP1784708A1 (en) * 2004-06-29 2007-05-16 Koninklijke Philips Electronics N.V. Method and circuit for buffering a stream of data
US20060041895A1 (en) 2004-08-04 2006-02-23 Microsoft Corporation Systems and methods for interfacing with codecs across an architecture optimized for audio
US7380038B2 (en) 2005-02-04 2008-05-27 Microsoft Corporation Priority registers for biasing access to shared resources
US7769274B2 (en) 2005-05-06 2010-08-03 Mediatek, Inc. Video processing and optical recording using a shared memory
KR20070014945A (ko) 2005-07-29 2007-02-01 엘지전자 주식회사 기록매체, 데이터 재생방법 및 재생장치와 데이터 기록방법및 기록장치
US20080049036A1 (en) * 2006-08-24 2008-02-28 Mediatek Inc. Multimedia Playback System, FIFO Memory System, and Method for Storing Multimedia Data

Also Published As

Publication number Publication date
RU2009148525A (ru) 2011-06-27
JP5513381B2 (ja) 2014-06-04
RU2466451C2 (ru) 2012-11-10
TWI368875B (en) 2012-07-21
KR20100036256A (ko) 2010-04-07
EP2160685A2 (en) 2010-03-10
WO2009006016A3 (en) 2009-04-23
MX2009013843A (es) 2010-03-10
TW200912754A (en) 2009-03-16
CN101689137A (zh) 2010-03-31
US7698528B2 (en) 2010-04-13
JP2010532056A (ja) 2010-09-30
AU2008270802A1 (en) 2009-01-08
EP2160685A4 (en) 2011-01-26
WO2009006016A2 (en) 2009-01-08
EP2160685B1 (en) 2016-12-14
BRPI0813398A2 (pt) 2014-12-30
CA2689585A1 (en) 2009-01-08
IL202618A0 (en) 2010-06-30
AU2008270802B2 (en) 2012-07-05
KR101475544B1 (ko) 2014-12-22
CN101689137B (zh) 2015-07-29
US20090006771A1 (en) 2009-01-01
IL202618A (en) 2014-12-31

Similar Documents

Publication Publication Date Title
BRPI0813398B1 (pt) Meio de armazenamento legível por computador e sistema para renderizar conteúdo demídia
JP5394375B2 (ja) デジタルメディア処理用インターフェース
US8099548B2 (en) Power efficient media playback on general purpose portable devices
US9336147B2 (en) Cache and memory allocation for virtual machines
US8477852B2 (en) Uniform video decoding and display
BR112013013944B1 (pt) Método e sistema para transferir conteúdo de vídeo digital
EP2241965B1 (en) Media processing system having resource partitioning
WO2021159770A1 (zh) 视频播放方法、装置、设备和存储介质
WO2007005268A2 (en) Synchronization aspects of interactive multimedia presentation management
KR20090082888A (ko) 대화형 멀티미디어 프리젠테이션을 재생하는 방법을 수행하는 컴퓨터 실행가능 명령어들이 인코딩된 컴퓨터 판독가능 매체, 및 대화형 멀티미디어 프리젠테이션을 재생하는 프리젠테이션 시스템 및 장치
TW201342096A (zh) 用於硬體加速視頻系統中策略察知之裝置及方法
JP2005339262A (ja) ファイルシステムおよびその制御方法
JPWO2008146473A1 (ja) フォーマット装置
US9547612B2 (en) Method and architecture for data channel virtualization in an embedded system
WO2013181756A1 (en) System and method for generating and disseminating digital video
KR100673093B1 (ko) 휴대형 멀티미디어 재생기에서 다중 파일 캐싱을 이용한리얼타임 멀티미디어 파일 재생 방법
CN115918095A (zh) 用于视图优化的360度虚拟现实视频流的系统及方法
KR20050122251A (ko) 파일 저장을 위한 할당등급 선택
Revel et al. Adaptive prefetching for device-independent file I/O
Anderson Device reservation in audio/video editing systems
Le Moal et al. A real-time file system for constrained quality of service applications
CN116781923A (zh) 视频处理方法及其装置
Nam Prototyping object-based ubiquitous multimedia contents storage for mobile devices
KR100534668B1 (ko) 비디오 메모리 확보를 위한 디스플레이 디바이스드라이버의 서피스 할당 방법
RU2388071C2 (ru) Устройство воспроизведения и способ сохранения видеоданных

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B06T Formal requirements before examination [chapter 6.20 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 20/08/2019, OBSERVADAS AS CONDICOES LEGAIS. (CO) 10 (DEZ) ANOS CONTADOS A PARTIR DE 20/08/2019, OBSERVADAS AS CONDICOES LEGAIS