.TH "V4L2-COMPLIANCE" "1" "March 2015" "v4l-utils 1.32.0" "دستورهای کاربری" .SH "نام (NAME)" v4l2-compliance \- برنامه‌ای برای سنجش و آزمایش راه‌اندازهای video4linux .SH "خلاصه دستور (SYNOPSIS)" .B v4l2-compliance [\fI-h\fR] [\fI-d \fR] [بسیاری گزینه‌های دیگر] .SH "توضیحات (DESCRIPTION)" ابزار v4l2-compliance برای آزمایش دستگاه‌های video4linux از جمله ویدیو، vbi، رادیو یا swradio، چه در بخش ورودی و چه خروجی به کار می‌رود. این ابزار تلاش می‌کند تقریباً تمام جنبه‌های یک دستگاه V4L2 را بیازماید و تقریباً تمام ioctlهای V4L2 را پوشش می‌دهد. این برنامه پشتیبانی بسیار خوبی برای دریافت و خروجی ویدیو، دریافت و خروجی VBI و تنظیم فرکانس و ارسال رادیویی (نرم‌افزاری) دارد. پشتیبانی از دستگاه‌های حافظه-به-حافظه (memory-to-memory) در حال حاضر محدود است. اگر پرسشی دربارهٔ v4l2-compliance دارید، آن را به فهرست پستی linux-media@vger.kernel.org ارسال کنید. هنگام آزمایش یک راه‌انداز، همواره این ابزار را از تازه‌ترین کد مبدأ در مخزن git کامپایل کنید (http://git.linuxtv.org/cgit.cgi/v4l-utils.git). نسخه‌ای که توسط توزیع‌های لینوکس ارائه می‌شود تقریباً به‌طور قطع بسیار قدیمی است. علاوه بر این، اگر آزمایشی با شکست مواجه شود، فایل مبدأ و شمارهٔ خطی که شکست در آن رخ داده نمایش داده خواهد شد، بنابراین معمولاً برای درک سازوکار آن آزمایش به کد مبدأ نیاز خواهید داشت. توجه داشته باشید که v4l2-compliance نه‌تنها سازگاری با V4L2 API را می‌سنجد، بلکه بررسی می‌کند که آیا راه‌انداز از تمام چارچوب‌های صحیح استفاده می‌کند یا خیر. این چارچوب‌ها معمولاً به‌طور خودکار ioctlهایی را فراهم می‌کنند که از نظر فنی اختیاری هستند، اما در صورت استفاده از آن چارچوب‌ها به‌طور رایگان در دسترس قرار می‌گیرند. ابزار v4l2-compliance با الزام حضور آن‌ها، استفاده از این چارچوب‌ها را اجباری می‌کند. اگر قصد دارید یک راه‌انداز جدید V4L2 ارسال کنید، آن راه‌انداز باید آزمون‌های v4l2-compliance را بدون هیچ خطایی پشت سر بگذارد. بهترین شیوهٔ استفاده از این ابزار برای آزمایش راه‌انداز خود این است که ابتدا بدون هیچ گزینهٔ جریان‌سازی (streaming) آن را بیازمایید و هرگونه شکست را از اولین مورد گزارش‌شده تا آخرین مورد برطرف کنید. گاهی اوقات شکست‌های اولیه می‌توانند باعث ایجاد شکست‌های بعدی شوند، بنابراین کافی است رفع اشکال را به ترتیب شروع کنید و پس از هر اصلاح دوباره آزمایش کنید. سپس راه‌انداز خود را با گزینهٔ \fB\-s\fR بیازمایید تا آزمایش‌های پایهٔ جریان‌سازی انجام شوند. این کار نیازمند وجود یک ورودی یا خروجی معتبر است. هر زمان که v4l2-compliance را اجرا می‌کنید، وضعیت کنونی راه‌انداز ذخیره شده و پس از پایان تمام آزمایش‌ها (از جمله هنگام فشردن Ctrl-C) بازیابی می‌شود. تمام آزمایش‌های جریان‌سازی با استفاده از پیکربندی ذخیره‌شده انجام می‌شوند. این ویژگی امکان آماده‌سازی برای آزمایش‌های جریان‌سازی را با پیکربندی دستگاه پیش از فراخوانی v4l2-compliance فراهم می‌کند. در نهایت باید راه‌انداز خود را با استفاده از گزینه‌های \fB\-f\fR و \fB\-c\fR بیازمایید تا مطمئن شوید تمام قالب‌های پیکسلی ویدیو به‌درستی پشتیبانی می‌شوند. باید هر سه آزمایش جریان‌سازی را برای تمام ورودی‌ها و خروجی‌ها انجام دهید. اگر سخت‌افزار شما امکان‌پذیر می‌سازد، می‌توانید از گزینهٔ \fB\-a\fR برای خودکارسازی آن استفاده کنید. اگر راه‌انداز شما تمام آزمایش‌ها را با موفقیت پشت سر بگذارد، می‌توانید مطمئن باشید که راه‌اندازتان در وضعیت بسیار خوبی قرار دارد! .SH "گزینه‌ها (OPTIONS)" .TP \fB\-d\fR, \fB\-\-device\fR \fI\fR استفاده از دستگاه \fI\fR به عنوان دستگاه ویدیو. اگر \fI\fR یک عدد باشد، از /dev/video\fI\fR استفاده می‌شود. در غیر این صورت، چنانچه \fB-z\fR پیش‌تر مشخص شده باشد، \fI\fR نام موجودیت (entity) یا شناسهٔ رابط (در صورت داشتن پیشوند 0x) خواهد بود، همان‌طور که در مکان‌نگاری (توپولوژی) دستگاه چندرسانه‌ای با رشته اطلاعات گذرگاه مشخص‌شده توسط گزینهٔ \fB-z\fR یافت می‌شود. .TP \fB\-V\fR, \fB\-\-vbi\-device\fR \fI\fR استفاده از دستگاه \fI\fR به عنوان دستگاه vbi. اگر \fI\fR یک عدد باشد، از /dev/vbi\fI\fR استفاده می‌شود. در غیر این صورت، چنانچه \fB-z\fR پیش‌تر مشخص شده باشد، \fI\fR نام موجودیت یا شناسهٔ رابط (در صورت داشتن پیشوند 0x) خواهد بود، همان‌طور که در مکان‌نگاری دستگاه چندرسانه‌ای با رشته اطلاعات گذرگاه مشخص‌شده توسط گزینهٔ \fB-z\fR یافت می‌شود. .TP \fB\-r\fR, \fB\-\-radio\-device\fR \fI\fR استفاده از دستگاه \fI\fR به عنوان دستگاه رادیو. اگر \fI\fR یک عدد باشد، از /dev/radio\fI\fR استفاده می‌شود. در غیر این صورت، چنانچه \fB-z\fR پیش‌تر مشخص شده باشد، \fI\fR نام موجودیت یا شناسهٔ رابط (در صورت داشتن پیشوند 0x) خواهد بود، همان‌طور که در مکان‌نگاری دستگاه چندرسانه‌ای با رشته اطلاعات گذرگاه مشخص‌شده توسط گزینهٔ \fB-z\fR یافت می‌شود. .TP \fB\-S\fR, \fB\-\-sdr\-device\fR \fI\fR استفاده از دستگاه \fI\fR به عنوان دستگاه SDR. اگر \fI\fR یک عدد باشد، از /dev/swradio\fI\fR استفاده می‌شود. در غیر این صورت، چنانچه \fB-z\fR پیش‌تر مشخص شده باشد، \fI\fR نام موجودیت یا شناسهٔ رابط (در صورت داشتن پیشوند 0x) خواهد بود، همان‌طور که در مکان‌نگاری دستگاه چندرسانه‌ای با رشته اطلاعات گذرگاه مشخص‌شده توسط گزینهٔ \fB-z\fR یافت می‌شود. .TP \fB\-t\fR, \fB\-\-touch\-device\fR \fI\fR استفاده از دستگاه \fI\fR به عنوان دستگاه لمسی (touch). اگر \fI\fR یک عدد باشد، از /dev/v4l-touch\fI\fR استفاده می‌شود. در غیر این صورت، چنانچه \fB-z\fR پیش‌تر مشخص شده باشد، \fI\fR نام موجودیت یا شناسهٔ رابط (در صورت داشتن پیشوند 0x) خواهد بود، همان‌طور که در مکان‌نگاری دستگاه چندرسانه‌ای با رشته اطلاعات گذرگاه مشخص‌شده توسط گزینهٔ \fB-z\fR یافت می‌شود. .TP \fB\-u\fR, \fB\-\-subdev\-device\fR \fI\fR استفاده از دستگاه \fI\fR به عنوان دستگاه v4l-subdevX. اگر \fI\fR یک عدد باشد، از /dev/v4l-subdev\fI\fR استفاده می‌شود. در غیر این صورت، چنانچه \fB-z\fR پیش‌تر مشخص شده باشد، \fI\fR نام موجودیت خواهد بود \fB\-e\fR, \fB\-\-exp\-buf\-device\fR \fI\fR استفاده از دستگاه \fI\fR به عنوان دستگاه ویدیو که برای برون‌ریزی DMABUFferها جهت انجام آزمایش‌های جریان‌سازی DMABUF به کار می‌رود. اگر \fI\fR یک عدد باشد، از /dev/video\fI\fR استفاده می‌شود. در غیر این صورت، چنانچه \fB-z\fR پیش‌تر مشخص شده باشد، \fI\fR نام موجودیت یا شناسهٔ رابط (در صورت داشتن پیشوند 0x) خواهد بود، همان‌طور که در مکان‌نگاری دستگاه چندرسانه‌ای با رشته اطلاعات گذرگاه مشخص‌شده توسط گزینهٔ \fB-z\fR یافت می‌شود. اگر این گزینه مشخص نشود، آزمایش‌های جریان‌سازی DMABUF نادیده گرفته خواهند شد. .TP \fB-z\fR, \fB--media-bus-info\fR \fI\fR یافتن دستگاه چندرسانه‌ای با رشته اطلاعات گذرگاه داده‌شده. در صورت تنظیم، گزینه‌های بالا می‌توانند از نام موجودیت یا شناسهٔ رابط برای ارجاع به گره‌های دستگاه استفاده کنند. مثال: v4l2-compliance -z platform:vivid-000 -d vivid-000-vid-cap .TP \fB\-m\fR, \fB\-\-media\-device\fR \fI\fR استفاده از دستگاه \fI\fR به عنوان دستگاه کنترل‌کنندهٔ چندرسانه‌ای (media controller). علاوه بر این دستگاه، تمام رابط‌هایی را که پیدا کند نیز آزمایش می‌کند. اگر \fI\fR با یک رقم شروع شود، از /dev/media\fI\fR استفاده می‌شود. اگر \fI\fR وجود نداشته باشد، تلاش می‌کند دستگاه چندرسانه‌ای با رشته اطلاعات گذرگاه برابر با \fI\fR را پیدا کند. مثال: v4l2-compliance -m platform:vivid-000 .TP \fB\-M\fR, \fB\-\-media\-device\-only\fR \fI\fR استفاده از دستگاه \fI\fR به عنوان دستگاه کنترل‌کنندهٔ چندرسانه‌ای. فقط این دستگاه را آزمایش می‌کند و تمام رابط‌ها را بررسی نمی‌کند. اگر \fI\fR با یک رقم شروع شود، از /dev/media\fI\fR استفاده می‌شود. اگر \fI\fR وجود نداشته باشد، تلاش می‌کند دستگاه چندرسانه‌ای با رشته اطلاعات گذرگاه برابر با \fI\fR را پیدا کند. مثال: v4l2-compliance -M platform:vivid-000 .TP .TP \fB\-\-stream\-from\fR \fI[=]\fR, \fB\-\-stream\-from\-hdr\fR \fI[=]\fR استفاده از محتویات فایل برای پر کردن بافرهای خروجی. اگر fourcc مربوط به pixelformat داده شده باشد، از فایل تنها برای بافرهای خروجی با همان pixelformat استفاده می‌شود. گونهٔ --stream-from-hdr از قالبی استفاده می‌کند که توسط v4l2-ctl --stream-to-hdr نوشته شده است؛ جایی که اندازه‌های بار مفید (payload) برای هر بافر در یک سرآیند ذخیره می‌شوند. برای قالب‌های فشرده‌سازی‌شده سودمند است. .TP \fB\-s\fR, \fB\-\-streaming\fR \fI\fR فعال‌سازی آزمایش‌های جریان‌سازی (streaming). مقدار را برابر با تعداد فریم‌ها برای جریان‌سازی قرار می‌دهد (پیش‌فرض 60). این کار نیازمند این است که پیش از فراخوانی v4l2-compliance، دستگاه با یک ورودی (یا خروجی) معتبر و فرکانس معتبر (در صورت داشتن تیونر در دستگاه) پیکربندی شده باشد. برای آزمایش DMABUF باید --expbuf-device نیز تنظیم شده باشد. پیکربندی راه‌انداز در زمان فراخوانی v4l2-compliance برای آزمایش‌های جریان‌سازی استفاده خواهد شد. .TP \fB\-f\fR, \fB\-\-stream\-all\-formats\fR \fI[]\fR آزمایش این که آیا تمام قالب‌های موجود می‌توانند جریان‌سازی شوند یا خیر. این گزینه تلاش می‌کند با استفاده از حالت MMAP یا read/write (در صورتی که V4L2_MEMORY_MMAP موجود نباشد) به مدت یک ثانیه برای تمام قالب‌ها، در همهٔ اندازه‌ها، در تمام فاصله‌ها و با تمام مقادیر فیلد جریان‌سازی کند. علاوه بر این، اگر راه‌انداز از مقیاس‌بندی (scaling)، برش (cropping) یا ترکیب (composing) پشتیبانی کند، آن را نیز در ترکیب‌های مختلف خواهد آزمود. اگر راه‌انداز از ترکیب‌های زیادی پشتیبانی کند، این آزمایش ممکن است زمان زیادی ببرد. اگر \fI\fR داده شود، به‌جای یک ثانیه، جریان‌سازی به تعداد همان فریم‌ها انجام خواهد شد. پیکربندی راه‌انداز در زمان فراخوانی v4l2-compliance برای آزمایش‌های جریان‌سازی استفاده خواهد شد. .TP \fB\-c\fR, \fB\-\-stream\-all\-color\fR \fBcolor\fR=\fIred|green|blue\fR,\fBskip\fR=\fI\fR,\fBperc\fR=\fI\fR برای تمام قالب‌های پشتیبانی‌شده و غیرفشرده، به تعداد فریم جریان‌سازی می‌کند. برای آخرین فریم، تمام پیکسل‌ها را بررسی کرده و محاسبه می‌کند که کدام‌یک از مؤلفه‌های رنگی R، G و B یک پیکسل بالاترین مقدار را دارد و آن را به عنوان یک پیکسل قرمز، سبز یا آبی به شمار می‌آورد. این آزمایش در صورتی موفق می‌شود که دست‌کم \fIperc\fR درصد از فریم دارای رنگ \fIcolor\fR داده‌شده باشد. این کار نیازمند آن است که یک سیگنال ویدیویی معتبر و عمدتاً قرمز، سبز یا آبی روی ورودی(ها) موجود باشد. اگر \fIskip\fR مشخص نشده باشد، فقط فریم اول ضبط می‌شود. یک مقدار غیرصفر برای \fIskip\fR زمانی سودمند است که کالیبره شدن دستگاه چند فریم زمان ببرد. اگر \fIperc\fR مشخص نشده باشد، مقدار پیش‌فرض آن 90% خواهد بود. بیشتر مولدهای سیگنال قادر به تولید ویدیوی خالص قرمز، آبی یا سبز هستند. برای دوربین‌ها می‌توانید تصویری کاملاً قرمز، سبز یا آبی چاپ کرده و آن را جلوی دوربین بگیرید. هدف این آزمایش تعیین این است که آیا همهٔ قالب‌های پیکسلی رنگ‌های قرمز، سبز و آبی را به‌درستی تفسیر می‌کنند و مؤلفه‌های رنگی جابه‌جا نشده‌اند یا خیر. پیکربندی راه‌انداز در زمان فراخوانی v4l2-compliance برای آزمایش‌های جریان‌سازی استفاده خواهد شد. .TP \fB\-a\fR, \fB\-\-stream\-all\-io\fR انجام آزمایش‌های جریان‌سازی \fB\-s\fR، \fB\-c\fR و \fB\-f\fR برای تمام ورودی‌ها یا خروجی‌ها به‌جای ورودی یا خروجی فعلی. این کار نیازمند این است که سیگنال ویدیویی معتبری روی تمام ورودی‌ها موجود باشد یا تمام خروجی‌ها متصل باشند. .TP \fB\-E\fR, \fB\-\-exit\-on\-fail\fR خروج از این برنامه به محض رخ دادن نخستین شکست، به‌جای ادامه دادن با وضعیتی که ممکن است ناپایدار باشد. .TP \fB\-C\fR, \fB\-\-color\fR \fI\fR برجسته‌سازی رشته‌های OK/warn/fail/FAIL با رنگ‌ها. در صورت فعال بودن، عبارت OK به رنگ سبز، warn به رنگ برجسته (bold)، و fail/FAIL به رنگ قرمز روشن نشانه‌گذاری می‌شوند. مقدار \fI\fR می‌تواند \fIalways\fR، \fInever\fR، یا \fIauto\fR (پیش‌فرض) باشد. .TP \fB\-n\fR, \fB\-\-no\-warnings\fR غیرفعال کردن پیام‌های هشدار. آن‌ها همچنان در خلاصه‌وضعیت شمرده می‌شوند، اما آن‌ها را نخواهید دید. .TP \fB\-P\fR, \fB\-\-no\-progress\fR غیرفعال کردن پیام‌های پیشرفت کار. به هنگام هدایت خروجی به یک فایل سودمند است. .TP \fB\-T\fR, \fB\-\-trace\fR ردیابی تمام ioctlهای فراخوانی‌شده. .TP \fB\-v\fR, \fB\-\-verbose\fR فعال‌سازی گزارش‌دهی مفصل (پُرگو). .TP \fB\-\-version\fR نمایش اطلاعات نسخه. .TP \fB\-w\fR, \fB\-\-wrapper\fR استفاده از کتابخانهٔ پوششی libv4l2 برای تمام دسترسی‌ها به دستگاه V4L2. توجه داشته باشید که انجام این کار موجب شکست برخی آزمایش‌ها خواهد شد، زیرا کتابخانهٔ libv4l2 کاملاً با V4L2 سازگار نیست. به‌طور پیش‌فرض، v4l2-compliance کتابخانهٔ libv4l2 را دور می‌زند و مستقیماً به دستگاه‌های V4L2 دسترسی پیدا می‌کند. .TP \fB\-W\fR, \fB\-\-exit\-on\-warn\fR خروج از این برنامه به هنگام رخ دادن نخستین هشدار به‌جای ادامه دادن کار. .TP \fB\-h\fR, \fB\-\-help\fR چاپ پیام راهنما. .SH "وضعیت خروج (EXIT STATUS)" در صورت موفقیت 0 را برمی‌گرداند. در غیر این صورت، کد خطا را بازمی‌گرداند. .SH "گزارش باگ‌ها (BUGS)" این ابزار در حال توسعه است و گهگاه معلوم می‌شود که برخی آزمایش‌های انجام‌شده توسط v4l2-compliance بیش از حد سخت‌گیرانه یا کاملاً نادرست هستند. اگر گمان می‌کنید چنین موردی پیش آمده، این‌گونه باگ‌ها را به فهرست پستی linux-media@vger.kernel.org گزارش دهید.