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
হয়েছে।IPrimaryDevice
এআইডিএল অডিও এইচএএল-এ প্রতিস্থাপিত হয়েছে। বর্তমান অডিও মোড এবং স্ক্রিন ঘূর্ণন সম্পর্কে আপডেট প্রতিটিIModule
উদাহরণে পাঠানো হয়। ব্লুটুথ সিঙ্ক্রোনাস কানেকশন ওরিয়েন্টেড (BT SCO) এবং হ্যান্ডস-ফ্রি প্রোফাইল (HFP) সম্পর্কিত প্যারামিটারগুলি একটি ডেডিকেটেডIBluetooth
ইন্টারফেস দ্বারা পরিচালিত হয়। একটি ডেডিকেটেডITelephony
ইন্টারফেস টেলিফোনি-নির্দিষ্ট নিয়ন্ত্রণ প্রদান করে। এই উভয় ইন্টারফেসের উদাহরণIModule
ইন্টারফেসের প্রাথমিক উদাহরণ থেকে পুনরুদ্ধার করা যেতে পারে। আরও তথ্যের জন্য কোর HAL এবং বৈশিষ্ট্য-সম্পর্কিত কার্যকারিতার তুলনা সারণি দেখুন।অপ্রয়োজনীয়তা এড়াতে এআইডিএল অডিও এইচএএল-এ
IDevicesFactory
সরানো হয়েছে। HAL মডিউলগুলি (অর্থাৎ,IModule
ইন্টারফেস ইনস্ট্যান্সগুলি) এখন সরাসরি পরিষেবা ম্যানেজারের সাথে তাদের নাম ব্যবহার করে নথিভুক্ত করা হয়েছে, যেমন,bluetooth
বাr_submix
। একমাত্র ব্যতিক্রম হলprimary
মডিউল যা ইনস্ট্যান্স নামেরdefault
অধীনে নিবন্ধিত হয়।
AIDL এবং HIDL অডিও HAL ম্যাপিং
নিম্নলিখিত বিভাগগুলির টেবিলগুলি HIDL এবং AIDL অডিও HAL ইন্টারফেসের মধ্যে ম্যাপিং দেখায়৷ ডিরেক্টরি গঠন সম্পর্কে আরও তথ্যের জন্য অডিও HAL README ফাইলটি দেখুন।
কোর HAL
সমস্ত HIDL ইন্টারফেস android.hardware.audio@NM
প্যাকেজের মধ্যে রয়েছে, যেখানে NM
Major.Minor সংস্করণকে বোঝায়। সমস্ত AIDL ইন্টারফেস android.hardware.audio.core
প্যাকেজের মধ্যে রয়েছে।
HIDL API ইন্টারফেস এবং কনফিগারেশন ফাইল | AIDL API ইন্টারফেস |
---|---|
IDevicesFactory | ServiceManager এর সাথে IModule এর নিবন্ধন। |
IDevice | IModule |
IPrimaryDevice | ITelephony IBluetooth |
IStream IStreamIn IStreamOut | StreamDescriptor IStreamIn IStreamCommon IStreamOut |
audio_policy_configuration.xml audio_policy_engine_configuration.xml | IConfig IModule |
কনফিগারযোগ্য অডিও নীতি ফাইল | Android 14 এর জন্য HIDL বাস্তবায়ন ব্যবহার করুন। |
অডিও পোর্ট, ডাইনামিক প্রোফাইল, রুট এবং প্যাচ
এই টেবিলে, XML ফাইলের উপাদানগুলি কোণ বন্ধনী ব্যবহার করে মনোনীত করা হয়েছে।
HIDL API ইন্টারফেস পদ্ধতি এবং কনফিগারেশন ফাইল উপাদান | AIDL API ইন্টারফেস পদ্ধতি |
---|---|
<attachedDevices> <defaultOutputDevice> <mixPorts> <devicePorts> | IModule.getAudioPorts |
IDevice.getAudioPort IDevice.setConnectedState |
IModule.connectExternalDevice IModule.disconnectExternalDevice |
IStream.getSupportedProfiles | IModule.connectExternalDevice |
< routes > | IModule.getAudioRoutes |
IDevice.createAudioPatch IDevice.updateAudioPatch IDevice.releaseAudioPatch IStream.getDevices IStream.setDevices IDevice.openInputStream এ ডিভাইসের স্পেসিফিকেশনIDevice.openOutputStream | IModule.setAudioPatch IModule.setAudioPortConfig IModule.resetAudioPatch |
অডিও পোর্ট কনফিগারেশন এবং স্ট্রীম
HIDL API ইন্টারফেস পদ্ধতি | AIDL API ইন্টারফেস পদ্ধতি |
---|---|
IStream.getAudioProperties IStream.setAudioProperties IStreamIn.getAudioSource | IModule.getAudioPortConfigs IModule.setAudioPortConfig |
IDevice.openInputStream IDevice.openOutputStream IStreamIn.prepareForReading IStreamOut.prepareForWriting IStream.createMmapBuffer | IModule.openInputStream IModule.openOutputStream |
IStream.close | IStreamCommon.close |
IStreamIn.updateSinkMetadata IStreamOut.updateSourceMetadata | IStreamIn.updateMetadata IStreamOut.updateMetadata |
IStream.standby | StreamDescriptor.Command.standby |
IStream.pause IStream.resume IStream.start IStream.stop | StreamDescriptor.Command.pause .start .start .drain |
IStreamOut.drain IStreamOut.flush | StreamDescriptor.Command.drain .flush |
IStreamOut.setCallback IStreamOut.clearCallback | IModule.openOutputStream IStreamCommon.close |
IStreamOut.getPresentationPosition এবং IStreamIn.getCapturePosition IStreamOut.getLatency IStream.getMmapPosition IStreamIn.getInputFramesLost | StreamDescriptor.Reply.observable StreamDescriptor.Reply.latencyMs StreamDescriptor.Reply.hardware StreamDescriptor.Reply.xrunFrames |
IDevice.getInputBufferSize IStreamOut.getLatency IStream.getBufferSize IStream.getFrameSize IStream.getFrameCount | IModule.setAudioPatch , নামমাত্র লেটেন্সি, এবং ন্যূনতম বাফার আকার হল AudioPatch কাঠামোর অংশ যা HAL দ্বারা ফেরত দেওয়া হয়েছে৷ ফ্রেমের প্রকৃত বাফার আকার StreamDescriptor কাঠামোর অংশ, বাইটে ফ্রেমের আকার সহ। বাইটে বাফারের আকার এই দুটি সংখ্যাকে গুণ করে গণনা করা যেতে পারে। |
অডিও প্রভাব সংযোগ
HIDL API ইন্টারফেস পদ্ধতি | AIDL API ইন্টারফেস পদ্ধতি |
---|---|
IDevice.addDeviceEffect IDevice.removeDeviceEffect | IModule.addDeviceEffect IModule.removeDeviceEffect |
IStream.addEffect IStream.removeEffect | IStreamCommon.addEffect IStreamCommon.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.getSupportedAudioModes IConfig.getEngineConfig |
<volumes> , বা<volumeGroups> , <ProductStrategies> | IConfig.getEngineConfig |
<surroundSound> | IConfig.getSurroundSoundConfig |
speaker_drc_enabled
কনফিগারেশন ফাইল থেকে সরানো হয়েছে কারণ এই কনফিগারেশন আইটেমটি সিস্টেমের মধ্যে ব্যবহার করা হয় না। সমস্ত ডিভাইসে DRC সক্রিয় থাকতে হবে।
বৈশিষ্ট্য-সম্পর্কিত কার্যকারিতা
HIDL API ইন্টারফেস পদ্ধতি | AIDL API ইন্টারফেস |
---|---|
IDevice.setMasterVolume IDevice.getMasterVolume IDevice.setMicMute IDevice.getMicMute IDevice.setMasterMute IDevice.getMasterMute | IModule.\* |
IPrimaryDevice.getTtyMode IPrimaryDevice.setTtyMode IPrimaryDevice.getHacEnabled IPrimaryDevice.setHacEnabled IPrimaryDevice.setVoiceVolume | ITelephony.TelecomConfig.\* |
IPrimaryDevice.setBtScoHeadsetDebugName IPrimaryDevice.getBtScoNrecEnabled IPrimaryDevice.setBtScoNrecEnabled IPrimaryDevice.getBtScoWidebandEnabled IPrimaryDevice.setBtScoWidebandEnabled, IPrimaryDevice.getBtHfpEnabled IPrimaryDevice.setBtHfpEnabled IPrimaryDevice.setBtHfpSampleRate IPrimaryDevice.setBtHfpVolume | IBluetooth.ScoConfig.\* IBluetooth.HfpConfig.\* |
IPrimaryDevice.setMode IPrimaryDevice.updateRotation | ITelephony.switchAudioMode IModule.updateAudioMode IModule.updateScreenRotation |
IDevice.setScreenState IDevice.getMicrophones | IModule.updateScreenState IModule.getMicrophones |
IDevice.getHwAvSync IStream.setHwAvSync | IModule.generateHwAvSyncId IStreamCommon.updateHwAvSyncId |
IStreamIn.setGain IStreamIn.setMicrophoneDirection IStreamIn.setMicrophoneFieldDimension | IStreamIn.setHwGain IStreamIn.setMicrophoneDirection IStreamIn.setMicrophoneFieldDimension |
IStreamOut.getDualMonoMode IStreamOut.setDualMonoMode IStreamOut.getPlaybackRateParameters IStreamOut.setPlaybackRateParameters IStreamOut.selectPresentation IStreamOut.getAudioDescriptionMixLevel IStreamOut.setAudioDescriptionMixLevel IStreamOut.setLatencyMode IStreamOut.getRecommendedLatencyModes | IStreamOut.\* |
IStreamOut.setEventCallback IStreamOut.setLatencyModeCallback | IModule.openOutputStream (কলব্যাকগুলি IStreamOutEventCallback এ একত্রিত হয়) |
IDevice.get/setParameters IStream.get/setParameters | IModule.get/setVendorParameters IStreamCommon.get/setVendorParameters |
অপ্রচলিত পদ্ধতি
HIDL API ইন্টারফেস পদ্ধতি | মন্তব্য |
---|---|
IDevice.initCheck IDevice.close | HAL মডিউলটি শুধুমাত্র সফল সূচনা হলেই ServiceManager সাথে প্রকাশ করে। সেই সময়ে, এটি স্থায়ী বলে বিবেচিত হয় এবং বন্ধ করা যাবে না। |
IDevice.supportsAudioPatches IStreamOut.supportsPauseAndResume IStreamOut.supportsDrain | প্যাচ, বিরতি, সারসংকলন এবং নিষ্কাশনের জন্য সমর্থন বাধ্যতামূলক। |
IStreamOut.getRenderPosition IStreamOut.getNextWriteTimestamp | অপ্রচলিত। |
বিক্রেতা এক্সটেনশন
HIDL API-এ, IDevice
এবং IStream
ইন্টারফেস থেকে getParameters
বা setParameters
পদ্ধতি ব্যবহার করে ভেন্ডর এক্সটেনশন প্রয়োগ করা হয়। এই পদ্ধতিগুলি নির্বিচারে স্ট্রিং গ্রহণ করে। এআইডিএল এপিআই-তে, সংশ্লিষ্ট পদ্ধতি রয়েছে, যেমন getVendorParameters
বা setVendorParameters
, যা ParcelableHolders
মধ্যে encapsulation ব্যবহার করে নির্বিচারে Parcelable
উদাহরণ গ্রহণ করে।
অন্যান্য পরিবর্তন
অন্যান্য সাধারণ পরিবর্তনগুলি নিম্নরূপ:
HAL API-এর পরীক্ষাযোগ্যতা উন্নত করার জন্য, AIDL সংস্করণে, আমরা ডিবাগিং বিকল্পগুলি প্রবর্তন করি যা VTS পরীক্ষা দ্বারা ব্যবহৃত হয় এবং
ModuleDebug
parcelable এর মাধ্যমে উপলব্ধ। এই বিকল্পগুলি HAL-কে নির্দিষ্ট কার্যকারিতা অনুকরণ করার নির্দেশ দেয় (উদাহরণস্বরূপ, বাহ্যিক ডিভাইসের সংযোগ), যা অন্যথায় বাহ্যিক পরীক্ষার সরঞ্জামগুলির ম্যানুয়াল হস্তক্ষেপ এবং ব্যবহারের প্রয়োজন হয়।সিস্টেম প্রপার্টি
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.queryProcessing IFactory.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_CONFIG EFFECT_CMD_SET_PARAM EFFECT_CMD_SET_DEVICE EFFECT_CMD_SET_VOLUME EFFECT_CMD_SET_AUDIO_MODE EFFECT_CMD_SET_CONFIG_REVERSE EFFECT_CMD_SET_INPUT_DEVICE EFFECT_CMD_SET_FEATURE_CONFIG EFFECT_CMD_SET_AUDIO_SOURCE | IEffect.setParameter |
EFFECT_CMD_GET_PARAM EFFECT_CMD_GET_CONFIG EFFECT_CMD_GET_CONFIG_REVERSE EFFECT_CMD_GET_FEATURE_SUPPORTED_CONFIGS EFFECT_CMD_GET_FEATURE_CONFIG VISUALIZER_CMD_MEASURE EFFECT_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.aidl Parameter.aidl |
নির্দিষ্ট প্রভাব সংজ্ঞা
HIDL API ইন্টারফেস (android.hardware.audio.effect@XX) | AIDL API ইন্টারফেস (android.hardware.audio.effect) |
---|---|
I $EffectType$ .hal | $EffectType$ .aidl |