آمار رمزگذاری ویدیو را صادر کنید

با شروع اندروید ۱۳، کلاینت‌های برنامه می‌توانند از رمزگذار ویدیو درخواست کنند تا آمار رمزگذاری را برای هر فریم ویدیوی رمزگذاری شده صادر کند. با آمار به دست آمده از رمزگذار ویدیو، برنامه‌ها می‌توانند وظایف رمزگذاری ویدیوی خود مانند رمزگذاری چند پاسی و پیش‌پردازش فریم را قبل از رمزگذاری بهینه کنند.

برای استخراج آمار کدگذاری ویدئو، فروشندگان SoC باید درایور کدگذاری ویدئو را همانطور که در «به‌روزرسانی‌های درایور کدگذاری ویدئو» توضیح داده شده است، تغییر دهند.

داده‌های آماری کدگذاری ویدیو

در اندروید ۱۳، رمزگذار ویدیو، داده‌های آماری را مطابق جدول زیر صادر می‌کند.

نام آماره‌های رمزگذار توضیحات
میانگین QP بلوک در هر فریم میانگین تمام QP های بلوکی در فریم ویدئو که در جریان بیتی کدگذاری شده‌اند
نوع تصویر نوع اول یا P یا B

توسعه‌دهندگان می‌توانند با استفاده از کلاس توسعه‌دهنده MediaFormat اطلاعات آماری هر فریم را بازیابی کنند.

به‌روزرسانی‌های درایور رمزگذار ویدیو

برای پشتیبانی از خروجی گرفتن از آمار کدگذاری ویدیو، فروشندگان SoC باید درایور کدگذاری ویدیو را تغییر دهند. کلیدهای زیر در پایه Codec 2.0 در اندروید ۱۳ اضافه شده‌اند:

  • KEY_VIDEO_QP_AVERAGE میانگین بلوک QP به ازای هر فریم را توصیف می‌کند.

    قوانین زیر برای پیاده‌سازی کلید KEY_VIDEO_QP_AVERAGE اعمال می‌شود:

    • رمزگذار SoC باید قبل از ارسال به Codec 2.0، میانگین QP های بلوک را به نزدیکترین عدد صحیح گرد کند.

    • مقدار میانگین فقط از یک صفحه لوما محاسبه می‌شود.

    • اگر تمام بلوک‌های موجود در فریم فعلی در حالت رد شده باشند، رمزگذار SoC باید INT_MAX برگرداند. این شرایط زمانی اتفاق می‌افتد که هیچ ضریبی رمزگذاری نشده باشد و هیچ اطلاعات QP قابل توجهی در فریم رمزگذاری نشده باشد.

  • KEY_PICTURE_TYPE نوع تصویر فریم کدگذاری شده را به صورت PICTURE_TYPE_I ، PICTURE_TYPE_P ، PICTURE_TYPE_B یا PICTURE_TYPE_UNKNOWN توصیف می‌کند.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL سطح اطلاعات آماری کدگذاری منتشر شده از کدگذار ویدئو را به شرح زیر توصیف می‌کند:

    • وقتی رمزگذار هیچ اطلاعاتی در مورد آمار رمزگذاری تولید نمی‌کند، این کلید روی VIDEO_ENCODING_STATISTICS_LEVEL_NONE تنظیم می‌شود.

    • وقتی رمزگذار برای هر فریم KEY_VIDEO_QP_AVERAGE و KEY_PICTURE_TYPE تولید می‌کند، این کلید روی VIDEO_ENCODING_STATISTICS_LEVEL_1 تنظیم می‌شود.

برای یک پیاده‌سازی مرجع، به VideoEncodingStatisticsTest مراجعه کنید.

اعتبارسنجی

برای تأیید صحت عملکرد بخش میانگین QP از آمار کدگذاری ویدئو، آزمون VideoEncodingStatisticsTest CTS را اجرا کنید: CTS دو کدگذاری از یک ویدئوی ورودی یکسان را اجرا می‌کند، یکی با بیت‌ریت بالاتر و دیگری با بیت‌ریت پایین‌تر. سپس CTS دو مقدار میانگین QP خروجی از دو کدگذاری را مقایسه می‌کند. اگر میانگین QP از کدگذاری با بیت‌ریت پایین‌تر، بالاتر از میانگین QP از کدگذاری با بیت‌ریت بالاتر باشد، CTS قبول می‌شود.

برای تأیید غیرفعال کردن ویژگی آمار رمزگذاری ویدیوی خروجی هنگام فعال بودن، از کلید VIDEO_ENCODING_STATISTICS_LEVEL_NONE به شرح زیر استفاده کنید:

format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);