"MÉTODO E DISPOSITIVO PARA MANTER O SINCRONISMO ENTRE UM FLUXO DE TRANSPORTE MPEG-2 QUE CHEGA E UM DECODTFICADOR DE FLUXO DE PROGRAMA" Campo Técnico A presente invenção refere-se, de forma geral, a comunicações de dados digitais e, em particular, ao fluxo de transporte MPEG-2 para a conversão do fluxo de programa.
Descrição do Antecedente Atualmente, o comitê MPEG-2 especificou dois mecanismos diferentes para distribuir programas de áu-dio/visuais, o fluxo de transporte e o fluxo de programa. O fluxo de transporte é planejado para ser usado nas aplicações de difusão e contém vários esquemas de recuperação de erro na transmissão, junto com guias de programa de múltiplos canais e outros dados apropriados de difusão. Por outro lado, o fluxo· de programa é planejado para uso em sistemas de distribuição não isócronos, tais como DVD e outros sistemas baseados em arquivos. A maior parte das aplicações sem difusão, por exemplo a maior parte do hardware de MPEG-2 com base etn computador, aceita somente fluxos de programa como entrada para decodificar e retransmitir o conteúdo de áu-dio/vldeo, Se um sistema que utiliza uma tal solução tem entradas de áudio/visuais no formato do fluxo de transporte, torna-se necessário converter a sintaxe e semântica do fluxo de transporte na sintaxe e semântica apropriadas do fluxo de programa. No caso geral, isso pode não ser possível devido a restrições de conflito entre as especificações do fluxo de transporte e do fluxo do programa. Dessa maneira, seria de- sejãvel e altamente vantajoso ter um método para transcodi-fxcar, ou converter da sintaxe e semântica do fluxo de transporte para a sintaxe do fluxo de programa equivalente. Além do mais, também seria desejável e altamente vantajoso ter um método para executar algumas transformações não triviais, tal como descontinuidades de tempo, com relação à transcodificaçâo.
Sumário Da Invenção Os problemas mencionados acima, bem como outros problemas relacionados da técnica anterior, são resolvidos pela presente invenção, a conversão do fluxo de transporte MPEG-2 para fluxo de programa. A invenção filtra os pacotes do fluxo de transporte que chegam, coleta todos os pacotes relevantes para um programa solicitado do fluxo de transporte e converte para um fluxo de programa válido. Vantajosamente, a presente invenção inclui mecanismos especiais para lidar com os fluxos de transporte que foram pré-filtrados para remover os pacotes, para lidar com as descontinuidades de tempo e para manter o sincronismo entre o fluxo de transporte distribuído de modo isócrono e o decodificador.
De acordo com um aspecto da presente invenção, é proporcionado um método para manter o sincronismo entre um fluxo de transporte e um decodi£icador de fluxo de programa durante uma conversão do fluxo de transporte para um fluxo de programa. Uma referência de relógio do sistema íSCR) é calculada a partir do fluxo de transporte. Uma taxa do mul-tiplexador é calculada para o fluxo do programa. 0 fluxo do programa é formado pela raultiplexaçâo dos pacotes do fluxo elementar em pacotes (PES) correspondendo com o fluxo de transporte usando a taxa do multiplexador.
Esses e outros aspectos, características e vantagens da presente invenção se tornarão evidentes a partir da descrição detalhada seguinte das modalidades preferidas, que é para ser lida em conjunto com os desenhos acompanhantes.
Breve Descrição dos Desenhos A FIG. IA é um diagrama em bloco ilustrando um sistema 100 para traduzir um fluxo de transporte MPEG-2 em um fluxo de programa MPEG-2, de acordo com uma modalidade ilustrativa da presente invenção; A FIG. 1B é um diagrama em bloco de alto nível ilustrando etapas/elementos para traduzir um fluxo de transporte MPEG-2 em um fluxo de programa MPEG-2, de acordo com uma modalidade ilustrativa da presente invenção; A FIG. 1C é um diagrama de fluxo ilustrando um método de tradução do fluxo de transporte para fluxo de programa executado· pelo transcodif icador 1.20 da FIG. IA, de acordo com uma modalidade ilustrativa da presente invenção; A FIG. 2 é um diagrama de fluxo de um método implementado pelo bloco 110 (anulação de pacote do fluxo de transporte) da FIG, 1, de acordo com uma modalidade ilustrativa da presente invenção; A FIG. 3 é um diagrama de fluxo de um método implementado pelo bloco 120 (filtragem do pacote do PES) da FIG. 1, de acordo com uma modalidade ilustrativa da presente invenção; A FIG. 4 é um diagrama de fluxo de um método implementado pelo bloco 130 (montagem do fluxo de programa) da FIG. 1, de acordo com uma modalidade ilustrativa da presente invenção; A FIG. 5 é um diagrama de fluxo ilustrando um método para manter o sincronismo entre o fluxo de transporte distribuído de modo isócrono que chega e o decodificador, de acordo com uma modalidade ilustrativa da presente invenção; A FIG. 6 é um diagrama de fluxo ilustrando um método para controlar as descontínuidades do tempo em uma conversão de um fluxo de transporte MPEG-2 para um fluxo de programa, de acordo com uma modalidade ilustrativa da presente invenção; A FIG. 7 é um diagrama de fluxo ilustrando um método para determinar a SCR e os valores da taxa do multiple-xador, de acordo com uma modalidade ilustrativa da presente invenção,- A FIG. 8 é um diagrama de fluxo ilustrando um método para determinar a SCR e os valores da taxa do multiple-xador, de acordo com uma outra modalidade ilustrativa da presente invenção; e A FIG. 9 é um diagrama em bloco de alto nível ilustrando etapas/elementos para traduzir um fluxo de transporte MPEG-2 para um fluxo de programa MPEG-2, de acordo com uma outra modalidade ilustrativa da presente invenção.
Descrição Detalhada das Modalidades Preferidas É para ser entendido que a presente invenção pode ser implementada em várias formas de hardware, software, programação em hardware, processadores de uso especial ou uma combinação desses. De preferência, a presente invenção é implementada como uma combinação de ambos hardware e software, o software sendo um programa de aplicação personificado de modo tangível, em um dispositivo de armazenamento de programa. O programa de aplicação pode ser transferido para, e executado por, uma máquina que compreenda qualquer arquitetura adequada. De preferência, a máquina é implementada em uma plataforma de computador tendo hardware tal como uma ou mais unidades de processamento central {CPU}, uma memória de acesso aleatório {RAM} e interfaces de entrada/saída (1/0). A plataforma de computador também inclui um sistema operacional e código de microinstrução. Os vários processos e funções descritos aqui podem ser parte do código de microinstrução ou parte do programa de aplicação (ou uma combinação desses) que é executado via o sistema operacional. Além do que, vários outros dispositivos periféricos podem ser conectados na plataforma do computador, tal como um dispositivo de armazenamento de dados adicional. É para ser adicionalmente entendido que, pelo fato de que alguns dos componentes do sistema constituinte representados nas Figuras acompanhantes podem ser implementados em software, as conexões reais entre os componentes do sistema podemi diferir dependendo da maneira na qual a presente invenção é programada. Dado os ensinamentos aqui, alguém de conhecimento comum na técnica relacionada será capaz de considerar essas implementações ou configurações e similares da presente invenção.
Uma descrição geral da presente invenção será agora proporcionada para introduzir o leitor nos conceitos e princípios da invenção. Subseqüentemente, descrições mais detalhadas dos vários aspectos da invenção serão fornecidas com relação as FIGs, 1 até 9. A presente invenção extrai um programa de um fluxo de transporte e o converte em um fluxo de programa válido. A presente invenção filtra os pacotes de fluxo de transporte que chegam, coleta os pacotes relevantes para o programa solicitado e coloca novamente em pacotes os pacotes em um fluxo de programa. Único a esse método é pelo menos o seguinte: um mecanismo especial para lidar com os fluxos de transporte que foram pré-filtrados para remover os pacotes, um método para lidar com as deseontinuidades de tempo e um método para manter o sincronismo entre o fluxo de transporte distribuído de modo isócrono e o decodificador. A FIG. IA é um diagrama em bloco ilustrando um sistema 100 para traduzir um fluxo de transporte MPEG-2 em um fluxo de programa MPEG-2, de acordo com uma modalidade ilustrativa da presente invenção. O sistema 100 inclui: um sintonizador de difusão ou sistema de distribuição isócrono 102, um transcodificador de fluxo de transporte para fluxo de programa 104, e hardware ou software de retransmissão audiovisual do fluxo de programa em tempo real 106. O sintonizador de difusão ou sistema de distribuição isócrono 102 recebe o fluxo de transporte a ser traduzido. O fluxo de transporte é então traduzido em um fluxo de programa pelo transcodificador de fluxo de transporte para fluxo de pro- grama 104. O fluxo do programa é então retransmitido em tempo real pelo hardware ou software de retransmissão audiovisual de fluxo de programa em tempo real 106. A FIG. 1B é um diagrama em bloco de alto nível ilustrando etapas/elementos para traduzir um fluxo de transporte MPEG-2 em um fluxo de programa MPEG-2, de acordo com uma modalidade ilustrativa da presente invenção. O bloco 110 corresponde à anulação de pacote do fluxo de transporte. O bloco 120 corresponde à filtragem do pacote do fluxo elementar em pacotes (PES). O bloco 130 corresponde à montagem do fluxo de programa. A FIG. 1C é um diagrama de fluxo ilustrando um método de tradução· de fluxo de transporte para fluxo de programa executado pelo t ranscodi f icador 120 da FIG. IA, de acordo com uma modalidade ilustrativa da presente invenção. É para ser verificado que o método da FIG. 1C expande os elementos/etapas mostrados na FIG. 1B.
Um fluxo de transporte é analisado por um analisa-dor para obter pacotes de PES (etapa 1105). É determinado se um pacote de PES atual é o último pacote do fluxo de transporte (etapa 1110). Se afirmativo, então o método prossegue para a etapa 1155. De outra forma, os pacotes de PES são coletados para identificadores de pacote (PIDs) relevantes em memórias intermediárias de PES separadas (etapa 1115). É determinado se o pacote de PES está completo (etapa 1120). Se não, então o método retorna para a etapa 1105. De outra forma, o pacote de PES completo é movido para a memória intermediária de pacotes (etapa 1125). É determinado se a memória intermediária de pacotes está completa (etapa 11.30) . Se não, então o método retorna para a etapa 1105. De outra forma, é determinado se o pacote completo é o primeiro pacote completo do fluxo de transporte (etapa 1135). Se afirmativo, então o cabeçalho de partida do fluxo de programa é fornecido como saída (etapa 1140) . De outra forma, o cabeçalho do pacote do pacote completo é fornecido como saida (etapa 1145). Os conteúdos da memória intermediária de pacotes são fornecidos como saida (etapa 1150) e o método retorna para a etapa 1105.
Na etapa 1155, quaisquer bytes restantes das memórias intermediárias do FES são movidos para a memória intermediária de pacotes. Os cabeçalhos do sistema do fluxo de programa sâo adicionados nos conteúdos da memória intermediária de pacotes (etapa 1160) . 0 fluxo do programa é então fornecido como saída (etapa 1165). A FIG. 2 é um diagrama de fluxo de um método implementado pelo bloco 110 (anulação de pacote do fluxo de transporte) da FIG. 1B, de acordo com uma modalidade ilustrativa da presente invenção. É para ser verificado que embora o método da FIG. 2 seja descrito com relação a um único pacote de transporte por finalidades de clareza, o método é repetido para todos os pacotes de transporte do fluxo de transporte.
Na etapa 210, um pacote de transporte é extraído do fluxo de transporte. Na etapa 220, quaisquer marcas de tempo estendido são extraídas do pacote de transporte. As marcas de tempo estendido permitem o cálculo apropriado do tempo relativo que um byte deve chegar no decodificador, especialmente se os pacotes do fluxo de transporte distribuídos para o transcodificador não compreendem todos os pacotes no fluxo de transporte original (isto é, um único programa foi extraído do fluxo original por um demultiplexador do fluxo de transporte MPEG-2). A marca de tempo deve ser prefixada com um identificador único de modo a reconhecê-lo como uma marca de tempo estendido e não ser confundido com um pacote de transporte padrão. É para ser verificado que uma marca de tempo estendido é compreendido do valor de um relógio de tempo real que corresponde ao tempo de distribuição real para um byte predeterminado (por exemplo, o primeiro byte) de um pacote de transporte. Hormalmente, os valores de PCR seriam suficientes em um fluxo· de transporte completo. Entretanto, pode ser razoavelmente esperado que porções do fluxo sejam removidas antes de apresentar o fluxo para o transcodificador. Se isso ocorre, então o tempo em que um pacote ocorre entre os carimbos da PCR é perdido na transferência, tornando os cálculos da SCR e taxa de multiplexador incorretos. Se o erro nesses cálculos é grande o suficiente, então eles podem violar as restrições entre os valores de SCR e DTS/FTS (marca de tempo da decodificação/marca de tempo da apresentação) no fluxo MPEG-2 básico. Em um tal caso, um decodificador pode produzir descontinuidades na retransmissão de áudio e/ou vídeo. Como é conhecido·, PCRs correspondem ao fluxo de transporte e SCRs correspondem ao fluxo de programa.
Na etapa 230# a informação relevante é extraída do cabeçalho do pacote do pacote de transporte. Tal informação relevante pode incluir# mas não é limitada ao seguinte: os campos de base da PCR e extensão, o valor do PI D do pacote, o indicador de partida unitário, o indicador de descontinui-dade, a carga útil do pacote (dados do programa MPEG-2), o número de bytes úteis na carga útil e o valor do relógio da marca de tempo estendido. Isto é, a informação relevante pode incluir qualquer informação correspondendo com o programa, como é facilmente verificado por alguém de conhecimento comum na técnica relevante. Na etapa 240, uma contagem é mantida do número de bytes da última referência do relógio do programa (PCR) encontrada. A FIG. 3 é um diagrama de fluxo de um método implementado pelo bloco 120 (filtragem do pacote do PES) da FIG. 1B, de acordo com uma modalidade ilustrativa da presente invenção. É para ser verificado que embora o método da FIG. 3 seja descrito com relação a um único pacote de transporte com finalidades de clareza, o método é repetido para todos os pacotes de transporte do fluxo de transporte.
Na etapa 310, é determinado se existe uma marca de tempo estendido apensa ao pacote de transporte (isto é, era uma marca de tempo estendido extraída do pacote de transporte na etapa 220 do método da FIG. 2) . Se a marca de tempo estendido está apenso ao pacote de transporte, então o tempo do relógio do sistema (PCR) é calculado com base na marca de tempo estendido (etapa 320) . De outra forma, se a marca de tempo estendido nâo está apensa ao pacote de transporte, en- tão os tempos do pacote são interpelados usando as marcas de tempo do PCR disponíveis (etapa 330). Observe que sérias imprecisões de tempo podem resultar se os pacotes foram removidos do fluxo de transporte original. Isso seria típico se o fluxo de transporte fosse uma extração de um uníco canal (programa) por um sintonizador MPEG-2 {demultiplexador).
Na etapa 340, quaisquer pacotes não relevantes são identificados dos pacotes de transporte, tal como pacotes com valores de PID que não são usados pelo transcodificador e descartados. A FIG. 4 é um diagrama de fluxo de um método implementado pelo bloco 130 (montagem do fluxo de programa) da FIG. 1B, de acordo com uma modalidade ilustrativa da presente invenção.
Na etapa 410, a informação do PÉS que pode ser coletada das memórias intermediárias do PES (áudio e vídeo) é identificada. Na etapa 420, a informação da referência do relógio do sistema (SCR) é calculada a partir dos dados da PCR. Na etapa 430, um PES é montado para cada ID de PES relevante. Na etapa 440, é determinado se um pacote de PES está completo. Se afirmativo, então o pacote de PES completo é copiado para a memória intermediária do pacote (etapa 450) . De outra forma, o método retorna para a etapa 410.
Na etapa 470, é determinado se a memória intermediária do pacote esta completa. Se afirmativo, então a taxa do muliiplexador é calculada, cabeçalhos são adicionados no pacote do PES na memória intermediária do pacote, pacotes de PES são multiplexados usando a taxa do raultiplexador, e o fluxo do programa (PS) é fornecido como saida (etapa 480) . De outra forma, o método retorna para a etapa 410, Para manter o sincronismo entre o fluxo de transporte distribuído de modo isócrono que chega e o decodifica-dor, os valores de SCR são calculados com precisão tomando os valores de PCR antes e depois de um pacote de PES com seu indicador de partida unitária ajustado verdadeiro. A FIG. 5 é um diagrama de fluxo ilustrando um método para manter o sincronismo entre o fluxo de transporte distribuído de modo isócrono que chega e o decodificador, de acordo com uma modalidade ilustrativa da presente invenção. É determinado se o pacote tem marcas de tempo estendido (etapa 510), Se o pacote não tem marcas de tempo estendido, então a SCR é calculada como segue (etapa 520): tempo delta = diferença entre os valores de PCR taxa de transporte = "número de bytes entre PCRs"/"tempo delta" SCR - ["no. de bytes entre o pacote de partida unitária e pacote de PCR"/"taxa de transporte"] + "PCR antes da partida unitária" Entretanto, se o pacote tem marcas de tempo estendido, então a SCR é calculada como segue (etapa 530): SCR = ["tempo delta na partida unitãria"/"tempo delta para pacote atual"] + "PCR antes da partida unitária" A taxa do muitiplexador é calculada como segue (etapa 540): SCR delta = "SCR no fim do pacote" - "SCR no início do pacote" Taxa do multiplexador = ["no. de bytes para saída" + "27.000.000 de pulsos"]/"50 bytes"/"SCR delta" Como é conhecido, uma partida unitária corresponde a um indicador para pacotes que começam um quadro.
As descontínuidades da PCR podem ocorrer no fluxo de transporte, resultando em descontInuidades da SCR. As descontinuidades da PCR ocorrem por causa da alternação do programa (mudança do canal), estouro da PCR e assim por diante. Se uma descontinuidade da SCR ocorre, então a taxa do multiplexador não será calculada e a taxa do multiplexador previamente calculada é mantida. A FIG. 6 é um diagrama de fluxo ilustrando um método para controlar as descontinuidades de tempo em uma conversão de um fluxo de transporte MPEG-2 para um fluxo de programa, de acordo com uma modalidade ilustrativa da presente invenção.
Na etapa 610, uma descontinuidade da SCR é detectada. É então determinado se o decodificador usa um cabeçalho do· sistema para restaurar o relógio de referência interno (etapa 620).
Se o decodificador realmente usa o cabeçalho do sistema para restaurar o relógio de referência interno, então, na descontinuidade, o pacote atual é descartado (etapa 630) e um cabeçalho do sistema é adicionado no cabeçalho do pacote subsequente para informar o decodificador para ajustar o relógio de referência interno de modo que o relógio de referência interno não ficará fora de sincronismo (etapa 640).
Entretanto, se o decodificador nâo usa o cabeçalho do sistema para restaurar o relógio de referência interno, então o decodificador pode restaurar o relógio de referência interno desativando a decodificaçâo da marca de tempo através da descontínuídade (etapa 650). Isso pode ser realizado, por exemplo·, alternando o modo de pequeno retardo do decodi-fieador entre ligado e desligado na descontinuídade (etapa 650a). O método real depende do controle do relógio de referência proporcionado por um decodificador de hardware ou software particular. Isto é, dado os ensinamentos da presente invenção fornecidos aqui, uma pessoa de conhecimento comum na técnica relacionada considerará esses e vários outros métodos para desativar a decodificação da marca de tempo através da descontinuidade, enquanto mantendo o espirito e escopo da presente invenção.
Se um fluxo de transporte é pré-filtrado para remover alguns pacotes, então o transcodificador não pode determinar com precisão a SCR e os valores da taxa do multi-plexador a partir do fluxo filtrado. Duas soluções ilustrativas para esse problema serão agora descritas com referência as FIGs. 7 e 8. A FIG. 7 é um diagrama de fluxo ilustrando um método para determinar a SCR e os valores da taxa do multiple-xador, de acordo com uma modalidade ilustrativa da presente invenção. A FIG. 8 é um diagrama de fluxo ilustrando um método para determinar a SCR e os valores da taxa do multiple-xador, de acordo com uma outra modalidade ilustrativa da presente invenção. Os métodos das FIGs. 7 e 8 são utilizados no caso quando um fluxo de transporte é pré-fi1trado para remover alguns pacotes e o transcodificador não pode determinar com precisão a SCR e os valores da taxa do multiplexa-dor a partir do fluxo filtrado.
Com referência à FIG. 7, uma marca de tempo é adicionada em cada pacote de transporte (etapa 710). Isto é, um cabeçalho é adicionado no pacote de transporte original contendo o tempo no qual o primeiro byte do pacote foi recebido. A SCR e a taxa do mu1tiplexador podem ser calculadas com precisão usando as carimbos de tempo adicionadas e o método da FIG. 5 (etapa 720).
Com referência à FIG. 8, uma contagem do número de bytes baixados entre os pacotes é determinada (etapa 810). A contagem é incluída nos cálculos pelo método da FIG. 5 para permitir que o posicionamento do tempo do byte (SCR e taxa do multiplexador) seja apropriadamente calculado para os bytes que devem ser incluídos no fluxo do programa (etapa 820) . É para ser verificado que qualquer método (FIG. 7 ou 8) pode ser usado, mas ambos os métodos incluem modificações no analisador do fluxo de transporte para extrair a nova informação e passá-la adiante para o processamento subsequente . Um desses métodos é selecionado para manter o sin-cronismo entre o fluxo que chega e o decodificador para evitar condições de estouro ou estouro negativo da memória intermediária. Uma pessoa de conhecimento comum na técnica considerará esses e vários outros métodos para determinar a SCR e os valores da taxa do multiplexador a partir do fluxo filtrado, enquanto mantendo o espírito e escopo da presente invenção. A FIG. 9 é um diagrama em bloco de alto nível ilustrando etapas/elementos para traduzir um fluxo de transporte MPEG-2 para um fluxo de programa MPEG-2, de acordo com uma outra modalidade ilustrativa da presente invenção.
Na etapa 910, o fluxo de transporte de entrada é recebido e um pacote de fluxo de transporte (TS) é acumulado na memória intermediária de pacotes. Na etapa 920, o cabeçalho do pacote é analisado para determinar se o pacote corresponde a áudio ou vídeo. Se o pacote corresponde a áudio, então o pacote de áudio do ΡΕΞ e referências PCR são coletados na memória intermediária do áudio do PES 999 (etapa 930) . Entretanto, se o pacote corresponde a vídeo, então o pacote de vídeo do PES e as referências PCR são coletados na memória intermediária de vídeo do PES 998 (etapa 940). Na etapa 950, os pacotes do PES são intercalados em um pacote de fluxo de programa (PS) e colocados na memória intermediária de pacotes do PS 997. Na etapa 960, a SCR é calculada e o cabeçalho do pacote é adicionado no pacote do PS. Na etapa 970, o pacote do PS é fornecido como saída como o fluxo do programa de saída.
Embora as modalidades ilustrativas tenham sido descritas aqui com referência aos desenhos acompanhantes, é para ser entendido que os presentes sistema e método não são limitados a essas modalidades precisas, e que várias outras mudanças e modificações podem ser efetuadas neles por alguém perito na técnica sem se afastar do escopo ou espírito da invenção. Todas tais mudanças e modificações são planejadas para serem incluídas dentro do escopo da invenção como definido pelas reivindicações anexas.
REIVIMDlCAÇÕES