کتابخانه‌ی استاندارد · کدگذاری و داده

صدا/ای‌یو audio/au

خواندن و نوشتن قالب ای‌یوی سان و نکست.

واردسازی audio.au

قالب ای‌یو ساده‌ترین پرونده صدای راستین است: سرآیندی بزرگ‌انتها به اندازه بیست و چهار بایت و سپس نمونه‌ها. از سان آمد، همان بود که /dev/audio می‌گفت، و هنوز راهی خوشایند برای دادن صدای خام میان برنامه‌هاست چون تقریبا چیزی نیست که بد از آب در بیاید.

رمزهای بیشتری از آنچه اندازه‌اش نشان می‌دهد با خود دارد: میولا و ای‌لا، پی‌سی‌ام علامتدار در هشت، شانزده، بیست و چهار و سی و دو بیت، و اعشاری آی‌تریپل‌ای در سی و دو و شصت و چهار. همه چیز بزرگ‌انتهاست.

دانستنی‌ها

  • پی‌سی‌ام هشت بیتی ای‌یو علامتدار است، آنجا که ویوی هشت بیتی بی‌علامت است. یاران مشترک در صدا آن را به شکل آرگومان می‌گیرند، پس هیچ‌یک از دو قالب ناچار به حدس زدن نیست.
  • پرونده فشرده‌شده به قطعه‌ای نشان‌دار با شانزده بیت کدگشایی می‌شود، چون میولا و ای‌لا به همان عمق بازسازی می‌شوند.
  • جای داده می‌تواند بزرگ‌تر از اندازه سرآیند باشد؛ آن فاصله یادداشتی متنی است و این بسته از رویش می‌گذرد.
  • اندازه داده برابر 0xFFFFFFFF یعنی نامشخص، که این بسته آن را همه چیز تا پایان پرونده می‌گیرد.

گونه‌ها

ساختار سرآیند
همه سرآیند یک ای‌یو: جای نمونه‌ها، چگونگی رمزشان و شکلشان.
نامانگلیسیگونهتوضیح
جای دادهdata_offsetصحیح = 0نمونه‌ها از کجا آغاز می‌شوند. دست کم اندازه سرآیند، و هر چه میان آن باشد یادداشتی متنی است.
اندازه دادهdata_sizeصحیح = 0چند بایت نمونه هست، نگه داشته درون پرونده.
رمزگذاریencodingصحیح = 0نمونه‌ها کدام شماره رمز را به کار می‌برند.
نرخrateصحیح = 0فریم در هر ثانیه.
کانال هاchannelsصحیح = 0چند کانال.
au-Read.salam
واردسازی صدا
واردسازی صدا.ای‌یو
واردسازی فشرده سازی
واردسازی مسیر پرونده
واردسازی ریاضی
واردسازی حافظه
واردسازی سیستم عامل

تابع ریشه:
    ناپایا کلیپ := صدا.جدید(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")
    دیرکن حافظه.آزادسازی(نبود برگردان تهی*)
    ای‌یو.بازکردن ای‌یو(نبود، رفته)
    سرچاپ رفته

    فشرده سازی.آزادسازی بافر(بافه)
    فشرده سازی.آزادسازی بافر(بافه۲)
    فشرده سازی.آزادسازی بافر(بافه۳)
    صدا.آزادسازی(کلیپ)
    صدا.آزادسازی(برگشته)
    صدا.آزادسازی(برگشته۲)
    صدا.آزادسازی(برگشته۳)
    صدا.آزادسازی(دیسکی)
پایان
خروجیtrue false au true true true 22050 1 128 true 22050 1 16 64 true true 64 16 0.5 true 32 true true 16 true false true 0 true true 64 22050 false

پایاها و متغیرها

اندازه سرآیند HeaderSize

پایا اندازه سرآیند: صحیح۳۲ = 24
بیست و چهار بایتی که سرآیند ای‌یو همیشه می‌گیرد، پیش از هر یادداشت متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: au-Read.salam

شماره‌های رمز Enc…

سرآیند ای‌یو کدام رمز را اعلام می‌کند.
نامانگلیسیمقدار
رمز میولاEncMuLaw1
رمز پی‌سی‌ام۸EncPcm82
رمز پی‌سی‌ام۱۶EncPcm163
رمز پی‌سی‌ام۲۴EncPcm244
رمز پی‌سی‌ام۳۲EncPcm325
رمز اعشار۳۲EncFloat326
رمز اعشار۶۴EncFloat647
رمز ای‌لاEncALaw27

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: 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