cd-paranoia(1) General Commands Manual cd-paranoia(1)

cd-paranoia - ابزار خواندن سی‌دی صوتی به همراه قابلیت‌های اضافی اعتبارسنجی داده‌ها

cd-paranoia [options] span [outfile]

دستور cd-paranoia ترک‌های صوتی را از درایوهای CD-ROM با قابلیت CDDA استخراج می‌کند. داده‌ها را می‌توان در یک فایل ذخیره کرد یا با قالب‌های WAV، AIFF، AIFF-C یا raw به خروجی استاندارد هدایت نمود. اکثر درایوهای CD-ROM از نوع ATAPI، SCSI و چندین مدل اختصاصی پشتیبانی می‌شوند؛ cd-paranoia می‌تواند تشخیص دهد که آیا درایو هدف قابلیت CDDA را دارد یا خیر.

علاوه بر خواندن ساده، cd-paranoia قابلیت‌های اعتبارسنجی بسیار قدرتمند داده‌ها، همگام‌سازی، مدیریت خطا و بازسازی نواحی خط‌خورده را اضافه می‌کند.

این نسخه از کتابخانه libcdio برای تعامل با درایو CD-ROM استفاده می‌کند. با این حال، تصحیح پرش (jitter) و تصحیح خطا همانند مواردی است که در cdparanoia متعلق به Xiph به کار رفته است.

اجرا و ثبت یک تحلیل کامل از رفتار حافظه موقت (caching)، زمان‌بندی و خواندن درایو؛ بررسی می‌کند که آیا cdparanoia رفتار خواندن و کش درایو خاص را به درستی مدل‌سازی می‌کند یا خیر. این گزینه شامل -vQL نیز می‌شود.
نمایش جزئیات کامل و بیش‌ازحد فرایند تشخیص خودکار (autosensing) و خواندن. مناسب برای راه‌اندازی و اشکال‌زدایی.
عدم چاپ هرگونه اطلاعات مربوط به پیشرفت یا خطا در طول فرایند خواندن.
اجبار خروجی اطلاعات پیشرفت به stderr (مناسب برای اسکریپت‌های پوششی/wrapper).
چاپ نسخه برنامه و خروج.
انجام تشخیص خودکار درایو CD-ROM، استعلام و چاپ فهرست محتویات (TOC) دیسک، و سپس خروج.
چاپ خلاصه‌ای کوتاه از نحوه استفاده و گزینه‌های cd-paranoia.
ذخیره خلاصه نتایج در file.
ذخیره خروجی دقیق اشکال‌زدایی و تشخیص خودکار دستگاه در یک فایل.
خروجی داده‌های بدون هدر به صورت داده‌های خام ۱۶ بیتی PCM با نمونه‌های درهم‌تنیده (interleaved) و با ترتیب بایت میزبان (host byte order). برای اجبار ترتیب بایت little endian یا big endian، از -r یا -R به نحوی که در زیر شرح داده شده استفاده کنید.
خروجی داده‌های بدون هدر به صورت داده‌های خام ۱۶ بیتی PCM با نمونه‌های درهم‌تنیده با ترتیب بایت LSB first (کم‌ارزش‌ترین بایت در ابتدا).
خروجی داده‌های بدون هدر به صورت داده‌های خام ۱۶ بیتی PCM با نمونه‌های درهم‌تنیده با ترتیب بایت MSB first (پرارزش‌ترین بایت در ابتدا).
خروجی داده‌ها در قالب Microsoft RIFF WAV (توجه داشته باشید که داده‌های WAV همواره با ترتیب بایت LSB first هستند).
خروجی داده‌ها در قالب Apple AIFF (توجه داشته باشید که داده‌های AIFC همواره با ترتیب بایت MSB first هستند).
خروجی داده‌ها در قالب فشرده‌نشده Apple AIFF-C (توجه داشته باشید که داده‌های AIFF-C همواره با ترتیب بایت MSB first هستند).

پرچم خروجی دسته‌ای به سبک cdda2wav؛ دستور cd-paranoia خروجی را در مرزهای هر ترک به چندین فایل تقسیم می‌کند. نام فایل‌های خروجی با پیشوند «track#.» نام‌گذاری می‌شوند.

برخی درایوهای CD-ROM ترتیب بایت (endianness) خود را نادرست گزارش می‌دهند (یا اصلاً گزارش نمی‌دهند)؛ ممکن است cd-paranoia آن را اشتباه حدس بزند. از -c استفاده کنید تا cd-paranoia مجبور شود درایو را به عنوان یک دستگاه little endian در نظر بگیرد.
همانند بالا، اما cd-paranoia را مجبور می‌کند که با درایو به عنوان یک دستگاه big endian رفتار کند.
بک‌اند رابط را مجبور می‌کند تا در هر بار خواندن، خواندن‌های اتمیک (atomic reads) به اندازه n سکتور انجام دهد. این عدد می‌تواند گمراه‌کننده باشد؛ هسته اغلب درخواست‌های خواندن را به چندین خواندن اتمیک تقسیم می‌کند (کد خودکار Paranoia از این موضوع آگاه است) یا تنها اجازه خواندن در یک محدوده اندازه معین را می‌دهد. عموماً نباید از این گزینه استفاده شود.
بک‌اند رابط را مجبور می‌کند تا به جای اولین درایو CD-ROM قابل خواندنی که حاوی دیسک CD-DA است، از device بخواند. این گزینه می‌تواند برای تعیین دستگاه‌هایی از هر نوع رابط معتبر (ATAPI، SCSI یا اختصاصی) استفاده شود.
این گزینه نام مستعاری برای -d است و جهت حفظ سازگاری نگه‌داشته شده است.
از این گزینه به صورت صریح برای تنظیم نرخ خواندن درایو CD (در صورت پشتیبانی) استفاده کنید. این کار می‌تواند کمبود بافر (underruns) را در سیستم‌های دارای دیسک‌های کند یا حافظه کم کاهش دهد.
از این گزینه برای وادار کردن آدرس‌دهی LBA کل دیسک به جابه‌جایی به مقدار مشخص‌شده استفاده کنید؛ این مقدار به آفست‌های آغازین در TOC اضافه می‌شود. این کار می‌تواند برای جابه‌جایی دستی مرزهای ترک برای کل دیسک با دانه‌بندی سکتور استفاده شود. گزینه بعدی کار مشابهی انجام می‌دهد...
برخی درایوها (معمولاً مدل‌های خاصی از توشیبا) مقادیر واقعی آفست شروع ترک را در TOC گزارش می‌دهند، اما سپس برای تمامی عملیات خواندن، شروع ترک ۱ نمایه ۱ را به عنوان سکتور ۰ در نظر می‌گیرند. این امر باعث می‌شود که به نظر برسد همه ترک‌ها خیلی دیر شروع می‌شوند (از دست رفتن بخشی از شروع و خواندن بخشی از ترک بعدی). گزینه -T این رفتار را جبران می‌کند. توجه داشته باشید که این گزینه باعث می‌شود cd-paranoia تلاش کند سکتورهای قبل یا بعد از محدوده شناخته‌شده داده‌های کاربر دیسک را بخواند، که منجر به خطاهای خواندن در لبه‌های دیسک در اکثر درایوها و احتمالاً حتی قفل شدن سخت‌افزاری در برخی سخت‌افزارهای دارای ایراد می‌شود.
برخی درایوهای CD-ROM/CD-R هنگام خواندن داده‌های صوتی، آفستی به موقعیت اضافه می‌کنند. این مقدار معمولاً هنگام خواندن در حدود ۵۰۰ تا ۷۰۰ نمونه صوتی (حدود ۱/۷۵ ثانیه) است. بنابراین هنگامی که cd-paranoia سکتور خاصی را درخواست می‌کند، ممکن است دقیقاً همان سکتور را دریافت نکند، بلکه با مقداری جابه‌جایی دریافت کند.

از این گزینه برای وادار کردن کل دیسک به جابه‌جایی خروجی موقعیت نمونه به مقدار داده‌شده استفاده کنید؛ این گزینه می‌تواند برای جابه‌جایی دستی مرزهای ترک برای کل دیسک با دانه‌بندی نمونه به کار رود. توجه داشته باشید اگر در حال استخراج بخشی شامل انتهای CD هستید (مثلاً کل دیسک)، این گزینه باعث می‌شود cd-paranoia تلاش کند سکتورهای جزئی را قبل یا بعد از ناحیه شناخته‌شده داده‌های کاربر بخواند، که احتمالاً باعث خطاهای خواندن در اکثر درایوها و حتی قفل شدن سخت‌افزاری در برخی سخت‌افزارهای معیوب خواهد شد.

اجبار به خواندن مازاد (overreading) در بخش lead-out دیسک. این گزینه تنها هنگام استفاده از گزینه -O با مقدار آفست نمونه مثبت کاربرد دارد. بسیاری از درایوها توانایی خواندن این بخش از دیسک را ندارند و اقدام به این کار در این درایوها خطاهای خواندن و احتمالاً قفل سخت‌افزاری ایجاد خواهد کرد.
غیرفعال‌سازی تمام ویژگی‌های اعتبارسنجی و تصحیح داده‌ها. هنگام استفاده از -Z، برنامه cd-paranoia داده‌ها را دقیقاً مانند cdda2wav با تنظیم همپوشانی (overlap) صفر می‌خواند. این گزینه به این معنی است که -Y نیز فعال است.
هیچ پرشی را قبول نکن؛ در صورت نیاز تا ابد دوباره تلاش کن. یک حداکثر تعداد اختیاری برای دفعات تلاش مجدد قابل تعیین است؛ جهت مقایسه، مقدار پیش‌فرض بدون -z در حال حاضر ۲۰ است.
اعتبارسنجی درون-خواندن (intra-read) داده‌ها را غیرفعال می‌کند؛ تنها بررسی همپوشانی در مرزهای خواندن انجام می‌شود. در صورت وقوع خطا در ناحیه همپوشانی، ممکن است برنامه گیر کند (wedge). توصیه نمی‌شود.
اگر خواندن به دلیل داده‌های معیوب، خط و خش، یا هر چیز دیگری پرش داشته باشد، خواندن این ترک را متوقف کن. اگر خروجی در یک فایل ذخیره می‌شود، فایل نیمه‌کاره حذف خواهد شد.
شبیه‌سازی خطاهای خواندن CD. این گزینه در آزمون‌های رگرسیون استفاده می‌شود، اما کاربرد دیگر آن می‌تواند بررسی عملکرد CD-ROM در شرایط خرابی (شبیه‌سازی‌شده) CD باشد. مقدار mask انواع خطاهای مصنوعی را برای اعمال مشخص می‌کند؛ با اعمال عملگر OR بین مقادیر زیر، نوع خطای مشخص‌شده شبیه‌سازی می‌شود.


0x10 - Simulate under-run reading


:-)
عملکرد عادی، پرش (jitter) کم یا بدون پرش

:-|
عملکرد عادی، پرش قابل توجه

:-/
انحراف در خواندن (Read drift)

:-P
از دست رفتن گزارش‌نشده جریان داده (streaming) در عملیات خواندن اتمیک

8-|
یافتن مشکلات خواندن در همان نقطه حین بازخوانی؛ تصحیح دشوار است

:-0
خطای انتقال SCSI/ATAPI

:-(
خط و خش شناسایی شد

;-(
صرف‌نظر از ادامه تلاش برای تصحیح

8-X
توقف خواندن به دلیل خطای شناخته‌شده و غیرقابل تصحیح

:^D
پایان استخراج

<space>
بدون نیاز به تصحیح

-
نیاز به تصحیح پرش (jitter)

+
از دست رفتن گزارش‌نشده استریمینگ/خطای دیگر در خواندن

!
خطاهایی پس از مرحله اول تصحیح یافت شد؛ درایو در چندین بازخوانی مکرر همان خطا را تکرار می‌کند و cd-paranoia در تشخیص آن‌ها با مشکل مواجه است.
خطای انتقال SCSI/ATAPI (تصحیح شد)
خطای تصحیح‌نشده/پرش

آرگومان span مشخص می‌کند که کدام ترک، ترک‌ها یا زیربخش‌هایی از ترک‌ها خوانده شوند. این آرگومان الزامی است. نکته: مگر در مواردی که span یک عدد ساده باشد، عموماً بهتر است آرگومان span را در علامت نقل‌قول قرار دهید تا از تفسیر آن توسط پوسته جلوگیری شود.

آرگومان span می‌تواند یک شماره ترک ساده یا مشخصات یک آفست/محدوده باشد. ساختار نحوی آفست/محدوده به این شکل کلی است:

1[ww:xx:yy.zz]-2[aa:bb:cc.dd]

در اینجا، 1 و 2 شماره‌های ترک هستند؛ اعداد درون براکت‌ها آفست دقیق‌تری را در یک ترک مشخص تعیین می‌کنند. [aa:bb:cc.dd] در قالب ساعت/دقیقه/ثانیه/سکتور است. نیازی به تعیین فیلدهای صفر نیست: [::20]، [:20]، [20]، [20.] و غیره به عنوان بیست ثانیه تفسیر می‌شوند، [10:] به عنوان ده دقیقه، و [.30] به عنوان سی سکتور خواهد بود (۷۵ سکتور در هر ثانیه).

هنگامی که تنها یک آفست داده شود، به عنوان آفست شروع تفسیر شده و استخراج تا انتهای ترک ادامه می‌یابد. اگر قبل یا بعد از یک آفست خط پیوند (hyphen) قرار گیرد، آفست نامشخص به ترتیب به عنوان ابتدا یا انتهای دیسک در نظر گرفته می‌شود. بنابراین:

1:[20.35]
استخراج از ترک ۱، ثانیه ۲۰، سکتور ۳۵ تا انتهای ترک ۱ را مشخص می‌کند.
1:[20.35]-
استخراج از 1[20.35] تا انتهای دیسک را مشخص می‌کند.
-2
استخراج از ابتدای دیسک تا ترک ۲ (شامل خود آن) را مشخص می‌کند.
-2:[30.35]
استخراج از ابتدای دیسک تا 2:[30.35] را مشخص می‌کند.
2-4
استخراج از ابتدای ترک ۲ تا انتهای ترک ۴ را مشخص می‌کند.

مجدداً، فراموش نکنید که براکت‌ها و خط‌های پیوند ابتدایی را از تفسیر توسط پوسته محافظت کنید.

چند مثال با محافظت در برابر پوسته:

تنها پرس‌وجو با جستجوی جامع برای یافتن درایو و گزارش کامل تشخیص خودکار:


cd-paranoia -vsQ

استخراج یک دیسک کامل، و قرار دادن هر ترک در یک فایل مجزا:


cd-paranoia -B

استخراج از ترک ۱، زمان 0:30.12 تا 1:10.00:


cd-paranoia "1[:30.12]-1[1:10]"

استخراج از ابتدای دیسک تا ترک ۳:


cd-paranoia -- "-3"

عبارت «--» در بالا برای تمایز «-3» از یک پرچم گزینه است.

آرگومان فایل خروجی اختیاری است؛ در صورت عدم تعیین آن، cd-paranoia نمونه‌ها را بسته به اینکه کدام‌یک از گزینه‌های -w، -a، -r یا -R استفاده شده باشد (گزینه -w پیش‌فرض ضمنی است)، در یکی از فایل‌های cdda.wav، cdda.aifc، یا cdda.raw خروجی می‌دهد. آرگومان فایل خروجی با مقدار - خروجی استاندارد را مشخص می‌کند؛ تمام قالب‌های داده را می‌توان از طریق لوله‌کشی (pipe) منتقل کرد.

برنامه cd-paranoia بر پایه بسته cdda2wav اثر Heiko Eissfeldt (heiko@colossus.escape.de) شکل گرفته و در ابتدا بسیار از رابط آن الهام گرفته است. cd-paranoia بدون آن پدید نمی‌آمد.

همچنین Joerg Schilling از طریق کتابخانه انتقال عمومی SCSI خود دانش تخصصی SCSI را به این پروژه اهدا کرده است.

Monty <monty@xiph.org>

صفحه خانگی cdparanoia در نشانی زیر در دسترس است: https://www.xiph.org/paranoia

بازبینی‌شده برای استفاده با libcdio توسط Rocky <rocky@gnu.org>

صفحه خانگی libcdio در نشانی زیر در دسترس است: https://www.gnu.org/software/libcdio

version III release alpha 9.8 libcdio