O que exatamente o ponto e vírgula no timecode indica
Quando o último separador do timecode passa de dois-pontos para ponto e vírgula, isso costuma estar sinalizando “esta string está exibida com marcador de drop-frame”. O problema que ele resolve é o desvio de longo prazo entre a contagem de quadros e o relógio humano em certas taxas de quadros não inteiras. Mas, ao receber um arquivo de entrega, o ponto e vírgula só serve como indício e não prova sozinho que os números de quadro já foram convertidos pela regra de drop-frame. O marcador de exibição e o algoritmo de contagem precisam ser conferidos separadamente.
O ponto e vírgula diz que “esta string quer expressar uma escrita de drop-frame”; ele não diz automaticamente que “estes números de quadro já foram calculados pela regra de drop-frame”.
Por que existe uma escrita de contagem drop-frame
Numa taxa de quadros não inteira como 29.97, a quantidade de quadros que realmente avança por segundo não tem exatamente o mesmo ritmo da numeração de timecode feita com o inteiro 30. Se a exibição continuar usando números de quadro inteiros consecutivos sem compensação, a leitura do timecode vai ficando progressivamente atrasada em relação ao relógio de parede.
Calculando pela fórmula, uma contagem consecutiva como a de 29.97 acumula, ao longo de um dia, algo na ordem de um minuto e meio. Por isso a contagem drop-frame não consiste em descartar de fato quadros de vídeo: ela pula alguns números na numeração do timecode, seguindo uma regra, para aproximar de novo o relógio exibido do tempo realmente decorrido.
A convenção de texto mais comum escreve o último separador como ponto e vírgula, por exemplo 01:00:00;00. Esse símbolo é útil, porque a parte receptora percebe de imediato que o arquivo está expressando uma forma de marcador de drop-frame. Mas o símbolo continua sendo só uma parte da string.
Marcador de exibição e conversão dos números de quadro são duas coisas
O cálculo verdadeiro de drop-frame precisa executar a regra de pular números ao converter entre a numeração de quadros e as casas de hora, minuto, segundo e quadro. Trocar simplesmente o último : por ; só muda a aparência, sem mudar a posição de quadro que aquela sequência de números já representava.
Nos arquivos de entrega do SlateX, essas duas convenções ocupam células distintas. Uma string de ponto de entrada ou de saída que já está registrada segue um de dois caminhos: uma leitura captada pela cadeia de gravação no instante da parada é reescrita como endereço drop-frame válido, porque trocar apenas o separador produziria valores como ;00 ou ;01 que o SMPTE não define; uma leitura transcrita da tela da máquina ou de um painel permanece dígito por dígito, e só o último separador é trocado por ponto e vírgula. Quando a origem não está declarada, não se chuta: os dígitos ficam intactos e a tabela Reconcile do fim do dia nomeia a declaração ausente como TC_SOURCE_UNDECLARED. Duration é o intervalo exato em quadros entre as duas leituras, sem contar o quadro final; nas linhas que declaram DF, aquela célula é escrita em forma de ponto e vírgula.
Essa é a fronteira rígida deste texto: ao ver ;, dá para saber que a camada de entrega marcou aquela string como escrita de drop-frame; mas só com esse símbolo não se pode julgar se aqueles números foram ou não obtidos antes pela regra de drop-frame.
Um valor próximo de 29.97 não declara drop-frame
Uma taxa de quadros próxima de 29.97 não é, por si só, prova de que toda a cadeia use uma mesma convenção de contagem. Valores na borda merecem atenção especial: o que a tela mostra e o que o arquivo de entrega escreve podem cair em classificações diferentes. O que dá para conferir é o que aquela célula finalmente diz no arquivo, e se o FPS real da linha, a string de timecode e a mídia batem entre si.
O que a parte receptora precisa verificar é como uma mídia real corresponde ao timecode, e não só com que aparência vem o separador.
A exibição em tempo real do app e o arquivo de entrega não são a mesma representação
O timecode ao vivo mostrado na tela é uma string só com dois-pontos, sem ponto e vírgula. Por isso, o que aparece ao vivo no app e o que pode surgir depois num arquivo de entrega vêm de regras de representação diferentes.
Um ponto e vírgula que aparece depois num arquivo de entrega não permite deduzir que a exibição ao vivo já seguia a mesma regra de contagem.
Na recepção, essas duas camadas devem ficar separadas: qual string foi lida na tela, qual string o arquivo de entrega escreve, se numa string existente só o separador foi trocado e se as posições finais da mídia realmente batem. Faltando uma dessas verificações, o ponto e vírgula não basta como conclusão de aceitação.
Como conferir na prática um timecode com ponto e vírgula
Veja primeiro se o FPS daquela linha bate com a mídia e com o registro do set, depois escolha uma mídia localizada e confronte o ponto de entrada real e o tempo decorrido. O ponto de saída é uma leitura transcrita, então o que se confere naquela célula é “se ela foi transcrita ou não”; o intervalo calculado é Duration, e conferi-lo exige voltar às duas leituras de início e fim e à regra de contagem usada quando foram lidas.
Se o ponto de entrada ou o ponto de saída for uma string já existente, não olhe apenas se ela tem um ponto e vírgula. A parte receptora deve verificar se os próprios números de quadro conseguem corresponder à mídia. Uma string em que só o símbolo foi trocado pode visualmente parecer um timecode drop-frame correto, mas os seus números ainda podem vir de outro modo de contagem.
Por isso, o ponto e vírgula serve bem como o indício de “aqui é preciso verificar o critério de drop-frame”, e não como a etiqueta de “esta linha já está verificada”.
FAQ
Se o último separador do timecode é ponto e vírgula, dá para confirmar que ele foi calculado pela regra de drop-frame?
Não. O ponto e vírgula pode ser só um marcador da camada de exibição. Nos caminhos de entrega atuais, uma string de timecode já existente pode ter apenas o seu último separador substituído, sem recálculo das posições de quadro.
Drop-frame quer dizer que quadros reais de vídeo foram apagados?
Não é esse o sentido discutido aqui. A contagem drop-frame ajusta a regra de numeração do timecode, para compensar o desvio de longo prazo entre a numeração consecutiva e o relógio de parede nas taxas de quadros não inteiras.
Por que o mesmo valor de taxa de quadros pode cair de modo diferente?
A exibição na tela e o arquivo de entrega pertencem a duas etapas diferentes, então um valor na borda pode cair de modo diferente. Confira o arquivo e a mídia reais, e leia o que aquela célula finalmente diz.
O timecode em tempo real na tela do app também usa ponto e vírgula?
A cadeia em tempo real atual emite strings com todos os dois-pontos e não produz representação com ponto e vírgula. O ponto e vírgula do arquivo de entrega pertence à representação de outra etapa, e não se pode inferir dele que a cadeia em tempo real também adotou a mesma contagem drop-frame.
Axiom One LLC — SlateX