صدا/اییو audio/au
خواندن و نوشتن قالب اییوی سان و نکست.
واردسازی audio.au
قالب اییو سادهترین پرونده صدای راستین است: سرآیندی بزرگانتها به اندازه بیست و چهار بایت و سپس نمونهها. از سان آمد، همان بود که /dev/audio میگفت، و هنوز راهی خوشایند برای دادن صدای خام میان برنامههاست چون تقریبا چیزی نیست که بد از آب در بیاید.
رمزهای بیشتری از آنچه اندازهاش نشان میدهد با خود دارد: میولا و ایلا، پیسیام علامتدار در هشت، شانزده، بیست و چهار و سی و دو بیت، و اعشاری آیتریپلای در سی و دو و شصت و چهار. همه چیز بزرگانتهاست.
دانستنیها
- پیسیام هشت بیتی اییو علامتدار است، آنجا که ویوی هشت بیتی بیعلامت است. یاران مشترک در صدا آن را به شکل آرگومان میگیرند، پس هیچیک از دو قالب ناچار به حدس زدن نیست.
- پرونده فشردهشده به قطعهای نشاندار با شانزده بیت کدگشایی میشود، چون میولا و ایلا به همان عمق بازسازی میشوند.
جای دادهمیتواند بزرگتر ازاندازه سرآیندباشد؛ آن فاصله یادداشتی متنی است و این بسته از رویش میگذرد.- اندازه داده برابر 0xFFFFFFFF یعنی نامشخص، که این بسته آن را همه چیز تا پایان پرونده میگیرد.
گونهها
سرآیند Header
ساختار سرآیند| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| جای داده | data_offset | صحیح = 0 | نمونهها از کجا آغاز میشوند. دست کم اندازه سرآیند، و هر چه میان آن باشد یادداشتی متنی است. |
| اندازه داده | data_size | صحیح = 0 | چند بایت نمونه هست، نگه داشته درون پرونده. |
| رمزگذاری | encoding | صحیح = 0 | نمونهها کدام شماره رمز را به کار میبرند. |
| نرخ | rate | صحیح = 0 | فریم در هر ثانیه. |
| کانال ها | channels | صحیح = 0 | چند کانال. |
واردسازی صدا
واردسازی صدا.اییو
واردسازی فشرده سازی
واردسازی مسیر پرونده
واردسازی ریاضی
واردسازی حافظه
واردسازی سیستم عامل
تابع ریشه:
ناپایا کلیپ := صدا.جدید(22050، 1، 64)
صدا.تنظیم نمونه(کلیپ، 3، 0، 0.5)
بافه := اییو.کدگذاری اییو با رمز(کلیپ، اییو.رمز پیسیام۱۶)
سرچاپ اییو.اییو است(بافه.data، بافه.len)، اییو.اییو است(بافه.data، 8)
سرچاپ صدا.نام قالب(صدا.شناسایی قالب(بافه.data، بافه.len))
ناپایا سر := اییو.سرآیند {}
سرچاپ اییو.خواندن سرآیند(بافه.data، بافه.len، سر)
سرچاپ سر.جای داده برابر اییو.اندازه سرآیند، سر.رمزگذاری برابر اییو.رمز پیسیام۱۶
سرچاپ سر.نرخ، سر.کانال ها، سر.اندازه داده
ناپایا درستی := نادرست
آگاه := اییو.بررسی اییو(بافه.data، بافه.len، درستی)
سرچاپ درستی، آگاه.نرخ، آگاه.کانال ها، آگاه.بیت ها، آگاه.فریم ها، آگاه.بی اتلاف
ناپایا درستی۲ := نادرست
برگشته := اییو.کدگشایی اییو(بافه.data، بافه.len، درستی۲)
سرچاپ درستی۲، برگشته.فریم ها، برگشته.بیت ها، صدا.نمونه(برگشته، 3، 0)
بافه۲ := اییو.کدگذاری اییو با رمز(کلیپ، اییو.رمز اعشار۳۲)
ناپایا درستی۳ := نادرست
برگشته۲ := اییو.کدگشایی اییو(بافه۲.data، بافه۲.len، درستی۳)
سرچاپ درستی۳، برگشته۲.بیت ها، صدا.نمونه(برگشته۲، 3، 0) برابر صدا.نمونه(کلیپ، 3، 0)
بافه۳ := اییو.کدگذاری اییو با رمز(کلیپ، اییو.رمز میولا)
ناپایا درستی۴ := نادرست
برگشته۳ := اییو.کدگشایی اییو(بافه۳.data، بافه۳.len، درستی۴)
سرچاپ درستی۴، برگشته۳.بیت ها، ریاضی.قدرمطلق(صدا.نمونه(برگشته۳، 3، 0) - 0.5) کوچکتر 0.02
ناپایا درستی۵ := نادرست
سرچاپ اییو.بررسی اییو(بافه۳.data، بافه۳.len، درستی۵).بی اتلاف
سرچاپ فشرده سازی.طول بافر(بافه۳) برابر اییو.اندازه سرآیند + 64
سرچاپ فشرده سازی.طول بافر(اییو.کدگذاری اییو با رمز(کلیپ، 99))
نشانی := مسیر پرونده.پیوند(سیستم عامل.پوشه موقت()، "salam_au_example.au")
دیرکن حافظه.آزادسازی(نشانی برگردان تهی*)
سرچاپ اییو.ذخیره اییو(کلیپ، نشانی)
ناپایا درستی۶ := نادرست
دیسکی := اییو.بازکردن اییو(نشانی، درستی۶)
سرچاپ درستی۶، دیسکی.فریم ها، دیسکی.نرخ
ناپایا رفته := نادرست
نبود := مسیر پرونده.پیوند(سیستم عامل.پوشه موقت()، "salam_au_none.au")
دیرکن حافظه.آزادسازی(نبود برگردان تهی*)
اییو.بازکردن اییو(نبود، رفته)
سرچاپ رفته
فشرده سازی.آزادسازی بافر(بافه)
فشرده سازی.آزادسازی بافر(بافه۲)
فشرده سازی.آزادسازی بافر(بافه۳)
صدا.آزادسازی(کلیپ)
صدا.آزادسازی(برگشته)
صدا.آزادسازی(برگشته۲)
صدا.آزادسازی(برگشته۳)
صدا.آزادسازی(دیسکی)
پایانپایاها و متغیرها
اندازه سرآیند HeaderSize
پایا اندازه سرآیند: صحیح۳۲ = 24نمونهی این مورد همراه با موارد بالاتر آمده است: au-Read.salam
شمارههای رمز Enc…
| نام | انگلیسی | مقدار |
|---|---|---|
| رمز میولا | EncMuLaw | 1 |
| رمز پیسیام۸ | EncPcm8 | 2 |
| رمز پیسیام۱۶ | EncPcm16 | 3 |
| رمز پیسیام۲۴ | EncPcm24 | 4 |
| رمز پیسیام۳۲ | EncPcm32 | 5 |
| رمز اعشار۳۲ | EncFloat32 | 6 |
| رمز اعشار۶۴ | EncFloat64 | 7 |
| رمز ایلا | EncALaw | 27 |
نمونهی این مورد همراه با موارد بالاتر آمده است: au-Read.salam
تابعها
اییو است IsAU
تابع اییو است(p: تهی*، n: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: au-Read.salam
خواندن سرآیند ReadHeader
تابع خواندن سرآیند(p: تهی*، n: صحیح، out &: سرآیند): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: au-Read.salam
بررسی اییو ProbeAU
تابع بررسی اییو(p: تهی*، n: صحیح، ok &: منطقی): audio.Infoنمونهی این مورد همراه با موارد بالاتر آمده است: au-Read.salam
کدگشایی اییو DecodeAU
تابع کدگشایی اییو(p: تهی*، n: صحیح، ok &: منطقی): audio.Clipنمونهی این مورد همراه با موارد بالاتر آمده است: au-Read.salam
کدگذاری اییو با رمز EncodeAUEncoding
تابع کدگذاری اییو با رمز(c: audio.Clip، encoding: صحیح): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: au-Read.salam
کدگذاری اییو EncodeAU
تابع کدگذاری اییو(c: audio.Clip): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: au-Read.salam
بازکردن اییو OpenAU
تابع بازکردن اییو(path: رشته، ok &: منطقی): audio.Clipنمونهی این مورد همراه با موارد بالاتر آمده است: au-Read.salam
ذخیره اییو SaveAU
تابع ذخیره اییو(c: audio.Clip، path: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: au-Read.salam