Αναπαραγωγή χωρίς κενά στο MP3 Player

mp3 player woman 150x96 Αναπαραγωγή χωρίς κενά στο MP3 PlayerΈνα ιδιαίτερο πρόβλημα που αντιμετωπίζουν οι περισσότεροι χρήστες φορητών συσκευών MP3 Player, είναι η αδυναμία συνεχούς αναπαραγωγής χωρίς κενό διάστημα μεταξύ των τραγουδιών. Για παράδειγμα, σε ενα μουσικό έργο που στο CD δεν υπάρχουν ακουστικά κενά μεταξύ των τραγουδιών -υπάρχουν όμως tracks- το να υπάρχει κενό όταν αυτό παίζει στο προσωπικό και αγαπημένο MP3 Player είναι το λιγότερο…σπαστικό.

Αυτό το πρόβλημα, γίνεται ακόμα ποιο ενοχλητικό, όταν το MP3 Player χρησιμοποιείται και για ποιο επαγγελματικούς σκοπούς πέρα της προσωπικής ακρόασης μουσικής.

Γιατί συμβαίνει όμως αυτό το πρόβλημα;

Ο πρώτος παράγοντας στον οποίο οφείλεται το πρόβλημα, προέρχεται απο το ίδιο το στανταρ κωδικοποίησης των απωλεστικών αλγόριθμων συμπίεσης (mp3, musepack κλπ). Όταν αποφασίστηκαν τα στάνταρ συμπίεσης, θεωρήθηκε σκόπιμο να υπάρχει στην αρχή κάθε συμπιεσμένου μουσικού αρχείου ενα «κενό» ή αλλιώς padding. Σε αυτό το κενό υπάρχουν πληροφορίες αποκωδικοποίησης και άλλα στοιχεία ελέγχου, τα οποία «διαβάζει» το εκάστοτε player και προχωράει στην αναπαραγωγή του αρχείου. Τα Media Players, κατα την αλλαγή απο τραγούδι σε τραγούδι, διαβάζουν αυτές τις πληροφορίες απο τον τομέα padding και εκεί ακριβώς γίνεται και το στιγμιαίο «κενό» αναπαραγωγής.

Όπως γίνεται αντιληπτό, θα πρέπει το πρόγραμμα ή συσκευή αναπαραγωγής να μπορεί να διαβάζει αυτό τον τομέα του αρχείου, ενω ακόμα παίζει το προηγούμενο αρχείο, ωστε κατα την αλλαγή, να «μπεί» κατευθείαν στο κομμάτι χωρίς κενό… Αυτό όμως στο 99% των περιπτώσεων δεν συμβαίνει. Διότι για να συμβεί κάτι τέτοιο, θα πρέπει το DAC Converter (hardware chip ή software) να διαθέτει δύο threads (σα να λέμε διπύρηνο CPU) όπου το ενα thread παίζει το παρών τραγούδι και το δεύτερο, προετοιμάζει το επόμενο.

Ακόμα όμως και αν θεωρήσουμε πως έχουμε δημιουργήσει ενα απωλεστικό αρχείο mp3 χωρίς το padding, δηλαδή χωρίς κενό, οι περισσότεροι players θα δημιουργήσουν και πάλι κάποιο στοιχειώδες «κενό». Αυτό θα συμβεί, διότι ο τρόπος λειτουργίας τους είναι τέτοιος όπου πρόσβαση στην προσωρινή μνήμη (buffer) είναι αποκλειστική για μια και μόνο διεργασία. Άρα, με το τέλος του πρώτου τραγουδιού, το buffer πρέπει να αδειάσει (flush), το player πρέπει να εντοπίσει το επόμενο track, να γεμίσει το buffer με τα πρώτα δευτερόλεπτα του τραγουδιού και τότε να αρχίσει το playback… Δυστυχώς, σειριακά.

Οι λύσεις που έχουν δωθεί μέχρι τώρα.

Για το πρώτο πρόβλημα, της ένθεσης padding, υπάρχουν κάποια codecs τα οποία διαθέτουν μεν το padding, όμως εκεί υπάρχει αναφορά «skip silence«. Έτσι, κατα την αναπαραγωγή, το media player θα προχωρήσει κατευθείαν στο «ζουμί» ξεπερνώντας το padding. Τέτοια codecs είναι το Ogg Vorbis, το MusePack, το Speex και το Windows Media Audio (κι όμως!).

Υπάρχουν και τρόποι προσθήκης αυτής της πληροφορίας σε αρχεία AAC και MP3 με χρήση κατάλληλου (εκτός προδιαγραφών) codec όπως ο LAME για την περίπτωση των MP3. Όμως σε αυτή την περίπτωση, θα πρέπει και ο player να είναι συμβατός με αυτές τις εκτός προδιαγραφών προσθήκες… Μπέρδεμα!

Τι κάνει λοιπόν κάποιος που θέλει απαραιτήτως Gapless Playback; Χρησιμοποιεί μια εκ των παρακάτω υλοποιήσεων οι οποίες υποστηρίζουν Gapless Playback σε συγκεκριμένες κωδικοποιήσεις.

Αυτή η λίστα δεν είναι πλήρης και βασίζεται στο WikiPedia και άλλες πηγές. Το θέμα είναι πως το Gapless Playback είναι ενα feature το οποίο ίσως θα πρέπει να αναφέρεται στις τεχνικές προδιαγραφές των Media Players.

Αναρτήστε το σχόλιο σας