از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
Android 14 API های توسعه دهنده ای را ارائه می دهد که برنامه ها می توانند از آنها برای جستجو و پیکربندی ویژگی های میکسر ترجیحی برای پخش صدای USB استفاده کنند. این ویژگیهای ترجیحی میکسر با اجازه دادن به برنامهها برای تنظیم قالب صدا، ماسک کانال، نرخ نمونه و رفتار میکسر، تجربه پخش صدای USB را بهبود میبخشد. با استفاده از Mixer API های ترجیحی در دستگاه های USB پشتیبانی شده، کاربران می توانند پخش صوتی با تأخیر کمتر و محتوای صوتی با وضوح بالاتر را دریافت کنند.
این ویژگی همچنین از رفتار میکسر پخش بیت کامل اختیاری برای دستگاه های USB پشتیبانی می کند. حالت بیت کامل پخش را برای فرمتهای تأیید شده با کیفیت اصلی (MQA) و جریان مستقیم دیجیتال (DSD) در مبدلهای دیجیتال به آنالوگ (DAC) سازگار میسازد.
رابط
Audio Policy Manager ویژگی های میکسر را در چارچوب کنترل می کند. کلاس AudioMixerAttributes نشان دهنده ویژگی های میکسر است. کلاس AudioMixerAttributes شامل یک شی AudioFormat است که فرمت داده های صوتی، ماسک کانال و نرخ نمونه را برای میکسر توصیف می کند. بهطور پیشفرض، چارچوب رفتار میکسر را تعیین میکند که تمام منابع صوتی را ترکیب میکند و کنترل صدا و افکتها را اعمال میکند.
اگر رفتار میکسر از حالت BIT_PERFECT استفاده کند، سیستم محتوای صوتی را بدون تغییر از طریق چارچوب صوتی، HAL و پردازشگر سیگنال دیجیتال (DSP) از API به پایین به دستگاه USB ارسال میکند. حالت BIT_PERFECT از فرمتهای رمزگذاریشده مانند MQA یا DSD پشتیبانی میکند، که در آن هر تغییر حجم یا ترکیب میتواند معنای دادهها را از بین ببرد.
وقتی برنامهها ویژگیهای میکسر را پیکربندی میکنند، چارچوب جریان خروجی را با ویژگیهای جدید، در صورت نیاز، دوباره باز میکند. شکل زیر رابط بین برنامه، فریمورک و HAL را در هنگام تنظیم ویژگی های میکسر نشان می دهد:
شکل 1. رابط بین برنامه، چارچوب و HAL.
پیاده سازی
اجرای ویژگی های میکسر ترجیحی، به غیر از ویژگی BIT_PERFECT ، برای صدای USB برای اندروید 14 اجباری است.
ویژگی های میکسر ترجیحی
برای پشتیبانی از ویژگی های میکسر ترجیحی، فروشندگان باید از مسیریابی دستگاه های USB به پورت مخلوط پویا به شرح زیر پشتیبانی کنند:
ویژگی پخش بیت کامل اختیاری است و فقط در اجرای AIDL Audio HAL پشتیبانی می شود. برای پشتیبانی از پخش بیت کامل، فروشندگان باید پرچم خروجی بیت کامل AUDIO_OUTPUT_FLAG_BIT_PERFECT به پورت ترکیب پویا که میتواند به دستگاه USB هدایت شود اضافه کنند.
نمونه کد زیر استفاده از پرچم AUDIO_OUTPUT_FLAG_BIT_PERFECT را در usb_audio_policy_configuration.xml نشان می دهد:
اگر ویژگی پخش بیت کامل مشخص شده باشد، HAL باید اطمینان حاصل کند که جریان صوتی بدون هیچ گونه تغییری به دستگاه USB ارسال می شود، یعنی جریان صدا نباید هیچ گونه مقیاس بندی حجم، تبدیل نرخ نمونه یا اثرات پردازش صدا داشته باشد و نباید در DSP مخلوط شود. در این مورد، سختافزار صدا را کنترل میکند، زیرا فریم ورک هیچ نرمافزاری کنترل حجم صدا را ارائه نمیدهد.
برای تأیید اجرای ویژگی BIT_PERFECT ، از USB DAC استفاده کنید که از فرمتهای صوتی مدولاسیون کد پالس (PCM) از MQA و DSD پشتیبانی میکند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Preferred mixer attributes on USB devices\n\nAndroid 14 provides [developer APIs](https://developer.android.com/reference/android/media/AudioMixerAttributes)\nthat apps can use to query and configure preferred mixer attributes for USB\naudio playback. These [preferred mixer attributes](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/media/java/android/media/AudioMixerAttributes.java)\nimprove the USB audio playback experience by letting apps set the audio format,\nchannel mask, sample rate, and mixer behavior. With the use of the preferred\nmixer APIs on supported USB devices, users can get lower-latency audio playback\nand higher-resolution audio content.\n\nThis feature also provides support for the optional bit-perfect playback mixer\nbehavior for USB devices. The bit-perfect mode enables playback for master\nquality authenticated (MQA) and direct stream digital (DSD) formats on\ncompatible digital to analog converters (DACs).\n\nInterface\n---------\n\nThe Audio Policy Manager handles the mixer attributes in the framework. The\n[`AudioMixerAttributes`](https://developer.android.com/reference/android/media/AudioMixerAttributes)\nclass represents the mixer's attributes. The `AudioMixerAttributes` class includes an\n[`AudioFormat`](https://developer.android.com/reference/android/media/AudioFormat)\nobject that describes the audio data format, channel mask, and sample rate for\nthe mixer. By default, the framework determines the mixer behavior, which mixes\nall audio sources and applies volume control and effects.\n\nIf the mixer behavior uses `BIT_PERFECT` mode, the system sends the audio\ncontent without modification through the audio framework, HAL and optionally\ndigital signal processor (DSP), from the API down to the USB device. The\n`BIT_PERFECT` mode supports encoded formats, such as MQA or DSD, on which any\nvolume scaling or mixing can destroy the meaning of the data.\n\nWhen apps configure mixer attributes, the framework reopens the output stream\nwith new attributes, if needed. The following figure shows the interface between\nthe app, framework, and the HAL when mixer attributes are set:\n\n**Figure 1.** Interface between the app, framework, and HAL.\n\nImplementation\n--------------\n\nImplementation of preferred mixer attributes, other than the `BIT_PERFECT`\nattribute, for USB audio is mandatory for Android 14.\n\n### Preferred mixer attributes\n\nTo support preferred mixer attributes, vendors must support routing USB devices\nto the dynamic mix port, as follows:\n\n1. Define the dynamic mix port in [`usb_audio_policy_configuration.xml`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml).\n\n2. Declare the ability to route USB devices to dynamic mix ports either in\n [audio policy configuration](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml)\n or in the [`getAudioPorts`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/interfaces/audio/aidl/android/hardware/audio/core/IModule.aidl;drc=0abca2170b9e49c23f511ff1a6a99e5db8ab4104;l=267) and [`getAudioRoutes`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/interfaces/audio/aidl/android/hardware/audio/core/IModule.aidl;drc=0abca2170b9e49c23f511ff1a6a99e5db8ab4104;l=279) AIDL methods.\n\n| **Note:** If the USB audio functionality is migrated to the primary HAL, define the dynamic mix port and USB audio routing in the [audio policy configuration](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml) file for your primary HAL.\n\nSee the reference implementation for the USB audio HAL under [`hardware/libhardware/modules/usbaudio`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/libhardware/modules/usbaudio/).\nSee an example of a dynamic mix port in [`frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml).\n| **Note:** Only USB devices are allowed to set preferred mixer attributes.\n\n### Bit-perfect playback attribute\n\nThe bit-perfect playback attribute is optional and is supported only in the AIDL\nimplementation of the Audio HAL. To support bit-perfect playback, vendors must\nadd the bit-perfect output flag `AUDIO_OUTPUT_FLAG_BIT_PERFECT` to the dynamic\nmix port that can be routed to the USB device.\n\nThe following code sample shows the use of the `AUDIO_OUTPUT_FLAG_BIT_PERFECT`\nflag in `usb_audio_policy_configuration.xml`: \n\n \u003cmodule name=\"usb\" halVersion=\"2.0\"\u003e\n \u003cmixPorts\u003e\n \u003cmixPort name=\"hifi_output\"\n role=\"source\" flags=\"AUDIO_OUTPUT_FLAG_BIT_PERFECT\"\u003e\n \u003c/mixPort\u003e\n \u003c/mixPorts\u003e\n \u003cdevicePorts\u003e\n \u003cdevicePort tagName=\"USB Device Out\"\n type=\"AUDIO_DEVICE_OUT_USB_DEVICE\" role=\"sink\"\u003e\n \u003c/devicePort\u003e\n \u003c/devicePorts\u003e\n \u003croutes\u003e\n \u003croute type=\"mix\" sink=\"USB Device Out\"\n sources=\"hifi_output\"/\u003e\n \u003c/routes\u003e\n \u003c/module\u003e\n\nIf the bit-perfect playback attribute is specified, the HAL must ensure that the\naudio stream is sent to the USB device without any modification, that is, the\naudio stream must not have any volume scaling, sample rate conversion, or audio\nprocessing effects and must not be mixed in the DSP.\nIn this case, the hardware controls the volume as the framework doesn't provide\nany software volume control.\n| **Note:** Without the bit-perfect playback attribute, apps can't stream high-resolution content, such as DSD and MQA, through the audio framework.\n\nValidation\n----------\n\nRun the CTS tests in\n[`PreferredMixerAttributesTestActivity.java`](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/apps/CtsVerifier/src/com/android/cts/verifier/audio/PreferredMixerAttributesTestActivity.java)\nto validate support for preferred mixer attributes for USB devices.\n\nTo validate the implementation of the `BIT_PERFECT` attribute, use USB DACs that\nsupport MQA and DSD over pulse-code modulation (PCM) audio formats."]]