Audio, -decoder og player

Tags:    c++

Hej allesammen!

Jeg har kastet mig ud i et lille (stort...) projekt om at skrive en "audio-engine", indtil videre kun til afspilning af .ogg da det var noget af det bedst dokumenterede jeg kunne finde. (.flac kan også overvejes).
Mit problem er dog at jeg vil opfinde den dybe tallerken fra scratch. Jeg vil ikke have hjælp fra API'er eller frameworks, så det jeg vil igang med er vel egentlig at skrive et codec?

Ihvertfald er mit mål: At skrive en applikation (i C++), som kan afspille .ogg filer. Nogle ideer om hvordan jeg skal starte? Har læst lidt om bit-formateringen i .ogg filer, men er ikke sikker på at jeg har forstået det hele korrekt, da det simpelthen er lidt for low level. Kan nogle henvise til en tutorial?



7 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Du skal nok læse følgende to:
http://www.ietf.org/rfc/rfc3533.txt
og
http://www.xiph.org/ogg/doc/

Jeg tror, at du måske har sat dig et liiiidt for stort mål, for komprimerede lyd formater er bestemt ikke noget for hverken begyndere eller fortsættere.

Når det er sagt, så lad ingen fortælle dig, at det er dumt at genopfinde den dybe tallerken.
Hvis det færdige produkt er målet, så vil det være smartest at basere sig på eksisterende libraries, men det ér sgu ved at lege, at man lærer mest. Så held og lykke med det :)



Tak.. Nu hvor jeg har fundet ud af lidt mere, og har downloadet .ogg sourcen har jeg fundet ud af, at jeg bare vil genbruge .ogg codecet (som de selv har releaset..).

Det var faktisk mere det at afspille lyden. Nogen ideer? Vil stadig gerne prøve at klare det selv, uden libraries. Er det noget med kontakt til hardwaren? og i så fald hvordan?



Tak.. Nu hvor jeg har fundet ud af lidt mere, og har downloadet .ogg sourcen har jeg fundet ud af, at jeg bare vil genbruge .ogg codecet (som de selv har releaset..).

Det var faktisk mere det at afspille lyden. Nogen ideer? Vil stadig gerne prøve at klare det selv, uden libraries. Er det noget med kontakt til hardwaren? og i så fald hvordan?


Du har i moderne operativ systemer ikke adgang til hardwaren. Alt skal igennem operativ systemet, som via drivere, kan tilgå hardwaren.

Dét codecet gør, er at tage en bytestrøm af en type, som codecet kan forstå (i dit tilfælde ogg), og dekode det til en ukomprimeret strøm, som så kan afspilles. Denne strøm gives så videre til operativ systemets lyd afspilnings rutiner, som så vil sende det til lydkortets driver, som så igen vil sende det til hardwaren.

Jeg programmerer stort set aldrig under Windows, så jeg har ikke prøvet at programmere lyd, men jeg vil gætte på, at du skal ud i noget med DirectSound: http://msdn.microsoft.com/en-us/library/bb219818(VS.85).aspx



Mange tak! Jeg vil kigge på lidt omkring det.. Hvad med Linux og Mac OS X? Og point?



Det jeg skal gøre, er det egentlig at oversætte .ogg, til .wav og så afspille en .wav resource?



Jeg selv bruger Open Sound System, men der findes et andet API, kaldet ALSA.

http://manuals.opensound.com/developer/
http://www.alsa-project.org/main/index.php/Main_Page

Og ja, de accepterer wav data, og det gør DirectSound til Windows sandsynligvis også.

Jeg bruger ikke points, så behold dem bare selv.



Ok, mange tak for hjælpen!



t