Windows lendo todo o arquivo de áudio em aberto

2

Vi um comportamento um pouco estranho enquanto brincava com alguns arquivos MP3 no Windows 7 (32 bits) que comprei recentemente na Amazon. Eles são armazenados em um compartilhamento de rede (Samba) e, em essência, parecia haver um atraso significativo ao iniciar a reprodução deles. Eu tinha assumido, desde que eu estava usando meu próprio software aqui, que era mais do que provável algo que eu estava fazendo; no entanto, o atraso está surgindo na fopenchamada real (estendendo isso ainda mais, isso também acontece com o diálogo GetOpenFileName, há uma pausa perceptível após o arquivo ser selecionado, antes que o diálogo seja fechado e o controle seja retornado ao código). Este último comportamento sugere o compilador / toolchain é irrelevante aqui desde que esta é uma chamada nativa do Win32 sendo feita.

Um rastreio rápido do Wireshark mostra que a chamada aberta (ou GetOpenFileName) está acionando a leitura do arquivo inteiro. O problema também aparece se o arquivo está localizado em outra caixa do Windows (por isso não é uma peculiaridade do Samba aqui). Parece estar relacionado aos metadados anexados ao arquivo; se eu despir, o arquivo abre quase instantaneamente. De interesse é que em um arquivo que não apresenta esse problema, o Wireshark mostra que, mesmo assim, o Windows lerá ~ 64K na frente do arquivo e, em seguida, ~ 32K no final. Considerando que você pode ter tags ID3 no início e no final do arquivo, parece que o Windows está pré-lendo a tag para seus próprios fins e, por algum motivo, as tags nesses arquivos particulares estão fazendo com que ele verifique todo o arquivo.

Meu googling até agora me levou a olhar para os manipuladores de propriedade, e especificamente este link tinha muita informação útil sobre o assunto. Um pequeno problema - eu não tenho nenhum manipulador de propriedade definido para .mp3, ou qualquer outro conteúdo de áudio, portanto, estou com uma pequena perda para explicar esse comportamento.

Eu tinha um pensamento que possivelmente essa era uma tag ID3v4, já que me lembro de que isso poderia (em teoria) estar espalhado por todo o arquivo, o que explicaria o raciocínio de por que o Windows leria o arquivo inteiro. Não é, é ID2v3.

imã de geladeira
fonte
1
Pode ajudar se você identificou / descreveu seu ambiente de desenvolvimento (ou seja, qual compilador está usando). Por favor, não responda nos comentários; edite sua pergunta para torná-la mais clara e completa.
Scott
Eu acho que o próprio windows adiciona alguns manipuladores. Se você pode adicionar uma coluna como taxa de bits a uma janela do explorador na visualização detalhada clicando com o botão direito no cabeçalho, tem que haver um manipulador presente.
LotPings
Pode certamente adicionar taxa de bits à vista, não fica com a mente preenchida. Eu entendo que tudo isso está me dizendo, então, é que há um manipulador em algum lugar que pode gerar essa informação, mas isso não significa necessariamente que é para o conteúdo de áudio.
geladeiramagnet
No caso de ações, buscar o final do arquivo pode resultar em uma transferência completa, não é? Em outras palavras: "o samba suporta fseek"?
Yorik
Note que eu mencionei "O problema também aparece se o arquivo está localizado em outra caixa do Windows (então não é uma peculiaridade do Samba aqui)". Também para arquivos que não exibem esse problema, você ainda vê uma leitura do início e fim do arquivo ocorrendo no rastreamento.
geladeiramagnet