彁 – Telegram
30 subscribers
215 photos
40 videos
82 files
445 links
そのこころがなにかおもうとき
それはきっといのちをもつ
けれどもこころのもちぬしは

[ /彁]
Download Telegram
Cambio di programma
Oggi ci avventuriamo nella codebase di telegram desktop per capire perche' mai su Linux la musica non viene mandata come tale ma come file, mentre su Windows va
Cambio di programma Oggi ci avventuriamo nella codebase di telegram desktop per capire perche' mai su Linux la musica non viene mandata come tale ma come file, mentre su Windows va
Il codice di TG Desktop e' fottuto su piu' livelli
Prima di morirci dentro per il resto della mia vita, ho pensato di attivare il log di debug:

[17:46:50.281 02-0002011] Audio Read Error: Found video stream in file '<snip>/[2015.08.15] Evil People As True Object of Salvation/(08) [Demetori] 空中に沈む輝針城 ~ Counter-Clock World.flac', data size '0', error 1, Success (media_audio.cpp : 1536)


media_audio.cpp:1536 e' cosi' (link):

int videostreamid = av_find_best_stream(fmtcontext, avmedia_type_video, -1, -1, &codec, 0);
if (videostreamid >= 0) {
debug_log(("audio read error: found video stream in file '%1', data size '%2', error %3, %4").arg(_file.name()).arg(_data.size()).arg(videostreamid).arg(av_make_error_string(err, sizeof(err), streamid)));
return false;
}


La classe FFMpegAttributesReader e' chiamata da Player::PrepareForSending poco sotto, alla riga 1634 (link):
FileMediaInformation::Song PrepareForSending(const QString &fname, const QByteArray &data) {
auto result = FileMediaInformation::Song();
FFMpegAttributesReader reader(FileLocation(fname), data);
const auto positionMs = crl::time(0);
if (reader.open(positionMs) && reader.samplesCount() > 0) {
result.duration = reader.samplesCount() / reader.samplesFrequency();
result.noscript = reader.noscript();
result.performer = reader.performer();
result.cover = reader.cover();
}
return result;
}


Siccome riconosce che c'e' una traccia per il video (che sia la cover art?) allora non decodifica i metadati
La cover art viene vista come traccia video; quel comando ammazza tutte le tracce video e mantiene quella audio
Pero', perche' su Windows va senza fare sta roba?
La saga non e' finita
Il binario statico ufficiale funziona; pare che il problema sia qualche cambiamento di API tra ffmpeg 3.x e 4.x

Questo fix e' teoricamente corretto (anche se un hack bruttino) per le distro che compilano TG con ffmpeg 4.x
La saga non e' finita Il binario statico ufficiale funziona; pare che il problema sia qualche cambiamento di API tra ffmpeg 3.x e 4.x Questo fix e' teoricamente corretto (anche se un hack bruttino) per le distro che compilano TG con ffmpeg 4.x
0003-Ignore-additional-video-streams-inside-an-audio-file.patch
1.5 KB
La patch aggiornata, ora e' meno un hack
E' stata approvata per la prossima release ufficiale, se vi ho rotto TG sapete chi cazziare

patch -p0 < questo_file

Su Void potete ficcarlo direttamente nella cartella patches per telegram-desktop in void-packages e ricompilate
Per Arch dovete modificare il PKGBUILD
Si puo' applicare almeno alle ultime 2 versioni di TG, poi boh
Vabbo', chiusa questa parentesi (spero per sempre) rimando tutti i file sistemati
Tengo i vecchi messaggi (audio inclusi) per motivi storici, magari a qualcuno e' interessata sta roba
Detto questo, e' in sconto Rabi-Ribi su Steam al 55%
Fanservice a parte, e' un metroidvania carino
0003-Ignore-additional-video-streams-inside-an-audio-file.patch
Telegram Desktop 2.4.5 ha la mia patch quindi questo file non serve piu'

Buon halloween