Android 14 দিয়ে শুরু করে, অংশীদার এবং SoC বিক্রেতাদের বর্তমান HIDL HAL বাস্তবায়নকে AIDL HAL বাস্তবায়নের সাথে প্রতিস্থাপন করতে উৎসাহিত করা হচ্ছে।
এইচআইডিএল অডিও এইচএএল থেকে একটি এআইডিএল অডিও এইচএএল-এ একটি মসৃণ রূপান্তর সহজতর করার জন্য, কিছু মূল পার্থক্য এই পৃষ্ঠায় হাইলাইট করা হয়েছে। এই পৃষ্ঠাটি অডিও HAL-এর জন্য AIDL এবং HIDL ইন্টারফেসের মধ্যে ম্যাপিংও দেখায়।
AIDL এবং HIDL অডিও HAL বাস্তবায়নের মধ্যে পার্থক্য
এইচআইডিএল কাঠামো এবং এআইডিএল কাঠামোর মধ্যে প্রধান পার্থক্যগুলি নিম্নরূপ:
AIDL অডিও কোর HAL- এ,
IConfigইন্টারফেস HIDL HAL-এ XML ফাইলগুলিতে সিস্টেম-ওয়াইড প্যারামিটারের প্রতিস্থাপন হিসাবে চালু করা হয়েছে। ফ্রেমওয়ার্ক বিক্রেতা কনফিগারেশন ফাইলের পরিবর্তে কোর HAL থেকে এই পরামিতিগুলি পড়ে। উদাহরণ হিসাবে, ব্যবহারকারী নিয়ন্ত্রণের জন্য আশেপাশের বিন্যাসের তালিকাটি কোর HAL-এIConfig.getSurroundSoundConfigপদ্ধতি দ্বারা সরবরাহ করা হয়েছে।AIDL অডিও ইফেক্টস HAL- এ, HIDL Effects HAL-এ XML ফাইলে সংজ্ঞায়িত
effectProxyলজিক অডিও ফ্রেমওয়ার্কে সরানো হয়েছে। অডিও ফ্রেমওয়ার্কIFactory.queryEffectsব্যবহার করে সিস্টেমের সমস্ত প্রভাবের দৃষ্টান্ত এবংIFactory.queryProcessingব্যবহার করে সমস্ত প্রভাব প্রসেসিং জিজ্ঞাসা করে।অডিও ডিভাইসের প্রকারের জন্য ডিভাইস শব্দটি ব্যবহারে বিভ্রান্তি এড়াতে, HIDL অডিও HAL-এ
IDeviceনাম পরিবর্তন করে AIDL অডিও HAL-এIModuleহয়েছে।AIDL অডিও HAL
IPrimaryDeviceপ্রতিস্থাপন করে। ফ্রেমওয়ার্ক বর্তমান অডিও মোড এবং প্রতিটিIModuleউদাহরণে স্ক্রিন ঘূর্ণন সম্পর্কে আপডেট পাঠায়। একটি ডেডিকেটেডIBluetoothইন্টারফেস ব্লুটুথ সিঙ্ক্রোনাস কানেকশন ওরিয়েন্টেড (BT SCO) এবং হ্যান্ডস-ফ্রি প্রোফাইল (HFP) সম্পর্কিত প্যারামিটারগুলি পরিচালনা করে। একটি ডেডিকেটেডITelephonyইন্টারফেস টেলিফোনি-নির্দিষ্ট নিয়ন্ত্রণ প্রদান করে। আপনিIModuleইন্টারফেসের প্রাথমিক উদাহরণ থেকে এই উভয় ইন্টারফেসের উদাহরণ পুনরুদ্ধার করতে পারেন। আরও তথ্যের জন্য কোর HAL এবং বৈশিষ্ট্য-সম্পর্কিত কার্যকারিতার তুলনা সারণি দেখুন।অপ্রয়োজনীয়তা এড়াতে এআইডিএল অডিও এইচএএল-এ
IDevicesFactoryসরানো হয়েছে। HAL মডিউল (অর্থাৎ,IModuleইন্টারফেস ইনস্ট্যান্স) এখন মডিউল ইনস্ট্যান্সের নাম ব্যবহার করে সরাসরি সার্ভিস ম্যানেজারের সাথে নিবন্ধিত হয়, যেমনbluetoothবাr_submix। একমাত্র ব্যতিক্রম হলprimaryমডিউল যা ইনস্ট্যান্স নামেরdefaultঅধীনে নিবন্ধিত হয়।
AIDL এবং HIDL অডিও HAL ম্যাপিং
নিম্নলিখিত বিভাগগুলির টেবিলগুলি HIDL এবং AIDL অডিও HAL ইন্টারফেসের মধ্যে ম্যাপিং দেখায়৷ ডিরেক্টরি গঠন সম্পর্কে আরও তথ্যের জন্য অডিও HAL দেখুন।
কোর HAL
সমস্ত HIDL ইন্টারফেস android.hardware.audio@NM প্যাকেজের মধ্যে রয়েছে, যেখানে NM Major.Minor সংস্করণকে বোঝায়। সমস্ত AIDL ইন্টারফেস android.hardware.audio.core প্যাকেজের মধ্যে রয়েছে।
| HIDL API ইন্টারফেস এবং কনফিগারেশন ফাইল | AIDL API ইন্টারফেস |
|---|---|
IDevicesFactory | ServiceManager সাথে IModule এর নিবন্ধন। |
IDevice | IModule |
IPrimaryDevice | ITelephonyIBluetooth |
IStreamIStreamInIStreamOut | StreamDescriptorIStreamInIStreamCommonIStreamOut |
audio_policy_configuration.xmlaudio_policy_engine_configuration.xml | IConfigIModule |
| কনফিগারযোগ্য অডিও নীতি ফাইল | Android 14 এর জন্য HIDL বাস্তবায়ন ব্যবহার করুন। |
অডিও পোর্ট, ডাইনামিক প্রোফাইল, রুট এবং প্যাচ
এই টেবিলে, XML ফাইলের উপাদানগুলি কোণ বন্ধনী ব্যবহার করে মনোনীত করা হয়েছে।
| HIDL API ইন্টারফেস পদ্ধতি এবং কনফিগারেশন ফাইল উপাদান | AIDL API ইন্টারফেস পদ্ধতি |
|---|---|
<attachedDevices><defaultOutputDevice><mixPorts><devicePorts> | IModule.getAudioPorts |
IDevice.getAudioPortIDevice.setConnectedState | IModule.connectExternalDeviceIModule.disconnectExternalDevice |
IStream.getSupportedProfiles | IModule.connectExternalDevice |
< routes > | IModule.getAudioRoutes |
IDevice.createAudioPatchIDevice.updateAudioPatchIDevice.releaseAudioPatchIStream.getDevicesIStream.setDevicesIDevice.openInputStream এ ডিভাইসের স্পেসিফিকেশনIDevice.openOutputStream | IModule.setAudioPatchIModule.setAudioPortConfigIModule.resetAudioPatch |
অডিও পোর্ট কনফিগারেশন এবং স্ট্রীম
| HIDL API ইন্টারফেস পদ্ধতি | AIDL API ইন্টারফেস পদ্ধতি |
|---|---|
IStream.getAudioPropertiesIStream.setAudioPropertiesIStreamIn.getAudioSource | IModule.getAudioPortConfigsIModule.setAudioPortConfig |
IDevice.openInputStreamIDevice.openOutputStreamIStreamIn.prepareForReadingIStreamOut.prepareForWritingIStream.createMmapBuffer | IModule.openInputStreamIModule.openOutputStream |
IStream.close | IStreamCommon.close |
IStreamIn.updateSinkMetadataIStreamOut.updateSourceMetadata | IStreamIn.updateMetadataIStreamOut.updateMetadata |
IStream.standby | StreamDescriptor.Command.standby |
IStream.pauseIStream.resume | StreamDescriptor.Command.pause.start |
IStream.startIStream.stop(MMAP স্ট্রীম) | StreamDescriptor.Command.start বা .burst.pause (ইনপুট) এবং/অথবা .flush (আউটপুট) |
IStreamOut.drainIStreamOut.flush | StreamDescriptor.Command.drain.flush |
IStreamOut.setCallbackIStreamOut.clearCallback | IModule.openOutputStreamIStreamCommon.close |
IStreamOut.getPresentationPosition এবং IStreamIn.getCapturePositionIStreamOut.getLatencyIStream.getMmapPositionIStreamIn.getInputFramesLost | StreamDescriptor.Reply.observableStreamDescriptor.Reply.latencyMsStreamDescriptor.Reply.hardwareStreamDescriptor.Reply.xrunFrames |
IDevice.getInputBufferSizeIStreamOut.getLatencyIStream.getBufferSizeIStream.getFrameSizeIStream.getFrameCount | IModule.setAudioPatch , নামমাত্র লেটেন্সি, এবং ন্যূনতম বাফার আকার হল AudioPatch কাঠামোর অংশ যা HAL দ্বারা ফেরত দেওয়া হয়েছে৷ ফ্রেমের প্রকৃত বাফার আকার StreamDescriptor কাঠামোর অংশ, বাইটে ফ্রেমের আকার সহ। বাইটে বাফারের আকার এই দুটি সংখ্যাকে গুণ করে গণনা করা যেতে পারে। |
অডিও প্রভাব সংযোগ
| HIDL API ইন্টারফেস পদ্ধতি | AIDL API ইন্টারফেস পদ্ধতি |
|---|---|
IDevice.addDeviceEffectIDevice.removeDeviceEffect | IModule.addDeviceEffectIModule.removeDeviceEffect |
IStream.addEffectIStream.removeEffect | IStreamCommon.addEffectIStreamCommon.removeEffect |
সিস্টেম-ওয়াইড কনফিগারেশন
সিস্টেম-ওয়াইড কনফিগারেশন যা পূর্বে অডিও নীতিতে সংজ্ঞায়িত করা হয়েছিল XML কনফিগারেশন ফাইল (যেমন, audio_policy_configuration.xml এবং audio_policy_engine_configuration.xml ) অবশ্যই IConfig এর মাধ্যমে প্রদান করতে হবে। যাইহোক, AIDL-এ স্থানান্তর সহজ করার জন্য, বিক্রেতাদের কাছে এখনও একই XML ফাইলগুলি ব্যবহার করার বিকল্প রয়েছে যা তারা পূর্বে সিস্টেম-ব্যাপী কনফিগারেশন সেট করতে ব্যবহার করেছিল। IConfig জন্য রেফারেন্স বাস্তবায়নে AIDL ডাটা টাইপ ব্যবহার করে XML ফাইল থেকে তথ্য উপস্থাপনের জন্য প্রয়োজনীয় কোড রয়েছে, যা XML থেকে AIDL-এ রূপান্তরকে সহজতর করে।
| HIDL কনফিগারেশন ফাইল উপাদান | AIDL API ইন্টারফেস পদ্ধতি |
|---|---|
<globalConfiguration><speaker_drc_enabled><call_screen_mode_supported><engine_library> | দুটি ভিন্ন পদ্ধতিতে বিভক্ত:ITelephony.getSupportedAudioModesIConfig.getEngineConfig |
<volumes> , বা<volumeGroups> , <ProductStrategies> | IConfig.getEngineConfig |
<surroundSound> | IConfig.getSurroundSoundConfig |
speaker_drc_enabledকনফিগারেশন ফাইল থেকে সরানো হয়েছে কারণ এই কনফিগারেশন আইটেমটি সিস্টেমের মধ্যে ব্যবহার করা হয় না। সমস্ত ডিভাইসে DRC সক্রিয় থাকতে হবে।
বৈশিষ্ট্য-সম্পর্কিত কার্যকারিতা
| HIDL API ইন্টারফেস পদ্ধতি | AIDL API ইন্টারফেস |
|---|---|
IDevice.setMasterVolumeIDevice.getMasterVolumeIDevice.setMicMuteIDevice.getMicMuteIDevice.setMasterMuteIDevice.getMasterMute | IModule.\* |
IPrimaryDevice.getTtyModeIPrimaryDevice.setTtyModeIPrimaryDevice.getHacEnabledIPrimaryDevice.setHacEnabledIPrimaryDevice.setVoiceVolume | ITelephony.TelecomConfig.\* |
IPrimaryDevice.setBtScoHeadsetDebugNameIPrimaryDevice.getBtScoNrecEnabledIPrimaryDevice.setBtScoNrecEnabledIPrimaryDevice.getBtScoWidebandEnabledIPrimaryDevice.setBtScoWidebandEnabled,IPrimaryDevice.getBtHfpEnabledIPrimaryDevice.setBtHfpEnabledIPrimaryDevice.setBtHfpSampleRateIPrimaryDevice.setBtHfpVolume | IBluetooth.ScoConfig.\*IBluetooth.HfpConfig.\* |
IPrimaryDevice.setModeIPrimaryDevice.updateRotation | ITelephony.switchAudioModeIModule.updateAudioModeIModule.updateScreenRotation |
IDevice.setScreenStateIDevice.getMicrophones | IModule.updateScreenStateIModule.getMicrophones |
IDevice.getHwAvSyncIStream.setHwAvSync | IModule.generateHwAvSyncIdIStreamCommon.updateHwAvSyncId |
IStreamIn.setGainIStreamIn.setMicrophoneDirectionIStreamIn.setMicrophoneFieldDimension | IStreamIn.setHwGainIStreamIn.setMicrophoneDirectionIStreamIn.setMicrophoneFieldDimension |
IStreamOut.getDualMonoModeIStreamOut.setDualMonoModeIStreamOut.getPlaybackRateParametersIStreamOut.setPlaybackRateParametersIStreamOut.selectPresentationIStreamOut.getAudioDescriptionMixLevelIStreamOut.setAudioDescriptionMixLevelIStreamOut.setLatencyModeIStreamOut.getRecommendedLatencyModes | IStreamOut.\* |
IStreamOut.setEventCallbackIStreamOut.setLatencyModeCallback | IModule.openOutputStream (কলব্যাকগুলি IStreamOutEventCallback এ একত্রিত হয়) |
IDevice.get/setParametersIStream.get/setParameters | IModule.get/setVendorParametersIStreamCommon.get/setVendorParameters |
অপ্রচলিত পদ্ধতি
| HIDL API ইন্টারফেস পদ্ধতি | মন্তব্য |
|---|---|
IDevice.initCheckIDevice.close | HAL মডিউলটি শুধুমাত্র সফল সূচনা হলেই ServiceManager সাথে প্রকাশ করে। সেই সময়ে, এটি স্থায়ী বলে বিবেচিত হয় এবং বন্ধ করা যাবে না। |
IDevice.supportsAudioPatchesIStreamOut.supportsPauseAndResumeIStreamOut.supportsDrain | প্যাচ, বিরতি, সারসংকলন এবং নিষ্কাশনের জন্য সমর্থন বাধ্যতামূলক। |
IStreamOut.getRenderPositionIStreamOut.getNextWriteTimestamp | অপ্রচলিত। |
বিক্রেতা এক্সটেনশন
HIDL API-এ, IDevice এবং IStream ইন্টারফেস থেকে getParameters বা setParameters পদ্ধতি ব্যবহার করে ভেন্ডর এক্সটেনশন প্রয়োগ করা হয়। এই পদ্ধতিগুলি নির্বিচারে স্ট্রিং গ্রহণ করে। এআইডিএল এপিআই-তে, সংশ্লিষ্ট পদ্ধতি রয়েছে, যেমন getVendorParameters বা setVendorParameters , যা ParcelableHolders মধ্যে encapsulation ব্যবহার করে নির্বিচারে Parcelable উদাহরণ গ্রহণ করে।
অন্যান্য পরিবর্তন
অন্যান্য সাধারণ পরিবর্তনগুলি নিম্নরূপ:
HAL API-এর পরীক্ষাযোগ্যতা উন্নত করার জন্য, AIDL সংস্করণে, আমরা ডিবাগিং বিকল্পগুলি প্রবর্তন করি যা VTS পরীক্ষা দ্বারা ব্যবহৃত হয় এবং
ModuleDebugparcelable এর মাধ্যমে উপলব্ধ। এই বিকল্পগুলি HAL-কে নির্দিষ্ট কার্যকারিতা অনুকরণ করার নির্দেশ দেয় (উদাহরণস্বরূপ, বাহ্যিক ডিভাইসের সংযোগ), যা অন্যথায় বাহ্যিক পরীক্ষার সরঞ্জামগুলির ম্যানুয়াল হস্তক্ষেপ এবং ব্যবহারের প্রয়োজন হয়।যখন ফ্রেমওয়ার্ক বা VTS পরীক্ষা
sys.audio.restart.halসিস্টেম বৈশিষ্ট্য1এ সেট করে, তখন HAL পরিষেবাগুলি পুনরায় চালু করতে হবে।audioserver.rcফাইল রিস্টার্ট পরিচালনা করে। HAL বাস্তবায়ন করার সময়,audioserver.rcফাইলে তালিকাভুক্ত উপযুক্ত HAL পরিষেবার নাম ব্যবহার করুন। অ্যান্ড্রয়েড 14-এ, HAL-এর AIDL সংস্করণের জন্যvendor.audio-hal-aidlনামটি বিশেষভাবে যোগ করা হয়েছে।
প্রভাব HAL
সমস্ত HIDL ইন্টারফেস android.hardware.audio.effect@NM* প্যাকেজের মধ্যে রয়েছে, যেখানে NM হল Major.Minor সংস্করণ। সমস্ত AIDL ইন্টারফেস android.hardware.audio.effect প্যাকেজের মধ্যে রয়েছে।
| HIDL API ইন্টারফেস এবং কনফিগারেশন ফাইল | AIDL API ইন্টারফেস |
|---|---|
IEffectsFactory | IFactory |
IEffect | IEffect |
audio_effects.xml | IEffect |
ইফেক্ট ফ্যাক্টরি
| HIDL API ইন্টারফেস (android.hardware.audio.effect@XX) | AIDL API ইন্টারফেস (android.hardware.audio.effect) |
|---|---|
IEffectsFactory.getAllDescriptors | IFactory.queryEffects নাল UUID প্যারামিটার সহ |
IEffectsFactory.getDescriptor | UUID প্যারামিটার সহ IFactory.queryEffects |
IEffectsFactory.createEffect | IFactory.createEffect |
audio_effects.xml | IFactory.queryProcessingIFactory.queryEffects |
প্রভাব ইন্টারফেস
| HIDL API ইন্টারফেস (android.hardware.audio.effect@XX) | AIDL API ইন্টারফেস (android.hardware.audio.effect) |
|---|---|
IEffect.init | IEffect.open |
IEffect.setConfig | IEffect.setParameter |
IEffect.enable | IEffect.command(CommandId::START) |
IEffect.disable | IEffect.command(CommandId::STOP) |
IEffect.reset | IEffect.command(CommandId::RESET) |
IEffect.getDescriptor | IEffect.getDescriptor |
IEffect.command | IEffect.command এ মানচিত্র,IEffect.setParameter , বালিগ্যাসি HIDL কমান্ডের প্রকারের উপর ভিত্তি করে IEffect.getParameter |
| N/A | IEffect.getState |
IEffect.setParameter | IEffect.setParameter |
IEffect.getParameter | IEffect.getParameter |
প্রভাব কমান্ড
| HIDL API ইন্টারফেস (android.hardware.audio.effect@XX) | AIDL API ইন্টারফেস (android.hardware.audio.effect) |
|---|---|
EFFECT_CMD_INIT | IEffect.open |
EFFECT_CMD_RESET | CommandId.RESET |
EFFECT_CMD_ENABLE | IEffect.command(CommandId::START) |
EFFECT_CMD_DISABLE | IEffect.command(CommandId::STOP) |
EFFECT_CMD_SET_PARAM_DEFERRED | AIDL HAL-এর প্রভাবে অবচয় |
EFFECT_CMD_SET_PARAM_COMMIT | AIDL HAL-এর প্রভাবে অবচয় |
EFFECT_CMD_SET_CONFIGEFFECT_CMD_SET_PARAMEFFECT_CMD_SET_DEVICEEFFECT_CMD_SET_VOLUMEEFFECT_CMD_SET_AUDIO_MODEEFFECT_CMD_SET_CONFIG_REVERSEEFFECT_CMD_SET_INPUT_DEVICEEFFECT_CMD_SET_FEATURE_CONFIGEFFECT_CMD_SET_AUDIO_SOURCE | IEffect.setParameter |
EFFECT_CMD_GET_PARAMEFFECT_CMD_GET_CONFIGEFFECT_CMD_GET_CONFIG_REVERSEEFFECT_CMD_GET_FEATURE_SUPPORTED_CONFIGSEFFECT_CMD_GET_FEATURE_CONFIGVISUALIZER_CMD_MEASUREEFFECT_CMD_FIRST_PROPRIETARY( VISUALIZER_CMD_CAPTURE এর মতো) | IEffect.getParameter |
EFFECT_CMD_OFFLOAD | অবচয়। AIDL-এ, অফলোড এবং নন-অফলোড মোড সুইচগুলি কাঠামোর মধ্যে পরিচালনা করা হয়। |
EFFECT_CMD_DUMP | বিল্ট-ইন বাইন্ডার লেনদেন AIBinder_dump দ্বারা পরিচালিত। |
সাধারণ প্রভাব পরামিতি সংজ্ঞা
| HIDL সংজ্ঞা (android.hardware.audio.effect@XX) | এআইডিএল সংজ্ঞা |
|---|---|
Types.hal | Flags.aidlParameter.aidl |
নির্দিষ্ট প্রভাব সংজ্ঞা
| HIDL API ইন্টারফেস (android.hardware.audio.effect@XX) | AIDL API ইন্টারফেস (android.hardware.audio.effect) |
|---|---|
I $EffectType$ .hal | $EffectType$ .aidl |