সমবর্তী ক্যাপচার

অ্যান্ড্রয়েড ১০ সেইসব ক্ষেত্রে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে, যেখানে একই সাথে একাধিক সক্রিয় অডিও ক্যাপচার চালানোর প্রয়োজন হয়; উদাহরণস্বরূপ, যদি ব্যবহারকারী কোনো অ্যাক্সেসিবিলিটি পরিষেবা দ্বারা প্রদত্ত ভয়েস কমান্ডের মাধ্যমে একটি ভিওআইপি (VoIP) কল বা ভিডিও রেকর্ডার নিয়ন্ত্রণ করতে চান।

অডিও ফ্রেমওয়ার্কটি এমন একটি নীতি প্রয়োগ করে যা শুধুমাত্র নির্দিষ্ট বিশেষাধিকারপ্রাপ্ত অ্যাপগুলোকে সাধারণ অ্যাপগুলোর সাথে একই সময়ে ডেটা ক্যাপচার করার অনুমতি দেয়।

কোনো অ্যাপ্লিকেশনকে ক্যাপচার শুরু করতে বাধা দেওয়ার পরিবর্তে, এর দ্বারা ধারণ করা অডিও নীরব করে দিয়ে কনকারেন্সি পলিসি প্রয়োগ করা হয়। এর ফলে ফ্রেমওয়ার্কটি সক্রিয় ক্যাপচার ব্যবহারের ক্ষেত্রগুলোর সংখ্যা ও ধরনের পরিবর্তনকে গতিশীলভাবে মোকাবেলা করতে পারে, এবং একই সাথে এমন ক্ষেত্রেও কোনো অ্যাপকে ক্যাপচার শুরু করতে বাধা দেয় না যেখানে অন্য কোনো অ্যাপ ক্যাপচার শেষ করার পর সেটি মাইক্রোফোনের সম্পূর্ণ অ্যাক্সেস পুনরুদ্ধার করতে পারে।

এর ফলস্বরূপ অডিও HAL এবং অডিও সাবসিস্টেমকে একই সাথে একাধিক সক্রিয় ইনপুট স্ট্রিম সমর্থন করতে হয়, যদিও কিছু ক্ষেত্রে কেবল একটি স্ট্রিমই কোনো সক্রিয় ক্লায়েন্টকে সচল অডিও সরবরাহ করে।

সিডিডি প্রয়োজনীয়তা

যুগপৎ ক্যাপচার সমর্থনের জন্য প্রয়োজনীয়তা জানতে সিডিডি (CDD) দেখুন।

অডিও HAL থেকে পরিস্থিতি ধারণ করুন

একই সাথে একাধিক ক্যাপচার করার ক্ষেত্রে সক্রিয় ইনপুট স্ট্রিমের সংখ্যা, ইনপুট ডিভাইস নির্বাচন বা প্রিপ্রসেসিং কনফিগারেশনের দিক থেকে বিভিন্ন পরিস্থিতি তৈরি হতে পারে।

নিম্নলিখিতগুলির মধ্যে যুগপৎ ঘটনা ঘটতে পারে:

  • অ্যাপ্লিকেশন প্রসেসর (AP) থেকে একাধিক ইনপুট স্ট্রিম
  • ইনপুট স্ট্রিম এবং একটি ভয়েস কল
  • ইনপুট স্ট্রিম এবং একটি অডিও ডিএসপি যা স্বল্প-শক্তিতে হটওয়ার্ড সনাক্তকরণ বাস্তবায়ন করে।

AP ইনপুট স্ট্রিমগুলির যুগপৎ কার্যকলাপ

একই সাথে কতগুলো ইনপুট স্ট্রিম খোলা এবং সক্রিয় থাকতে পারবে, তা নির্ধারণ করার জন্য অডিও ফ্রেমওয়ার্ক audio_policy_configuration.xml নামক অডিও পলিসি কনফিগারেশন ফাইলটি ব্যবহার করে।

ন্যূনতমপক্ষে, অডিও HAL-কে অবশ্যই খোলা এবং সক্রিয় কনফিগারেশন ফাইলে তালিকাভুক্ত প্রতিটি ইনপুট প্রোফাইলের (রোল sink -এর mixPort ) অন্তত একটি ইনস্ট্যান্স সমর্থন করতে হবে।

ডিভাইস নির্বাচন

যখন একাধিক সক্রিয় ক্লায়েন্ট একই HAL ইনপুট স্ট্রিমে সংযুক্ত থাকে, তখন ফ্রেমওয়ার্কটি ব্যবহারের ক্ষেত্রের অগ্রাধিকারের উপর ভিত্তি করে এই ইনপুট স্ট্রিমের জন্য উপযুক্ত ডিভাইসটি নির্বাচন করে।

যখন একাধিক ইনপুট স্ট্রিম সক্রিয় থাকে, তখন প্রতিটি স্ট্রিমের জন্য আলাদা ডিভাইস নির্বাচন করা যেতে পারে।

প্রযুক্তিটি সামঞ্জস্যপূর্ণ হলে, অডিও HAL এবং সাবসিস্টেমকে ব্লুটুথ হেডসেট ও বিল্ট-ইন মাইকের মতো বিভিন্ন ডিভাইস থেকে আলাদা আলাদা স্ট্রিম ক্যাপচার করার অনুমতি দেওয়ার পরামর্শ দেওয়া হয়।

যদি কোনো অসামঞ্জস্য থাকে (উদাহরণস্বরূপ, দুটি ডিভাইস একই ডিজিটাল অডিও ইন্টারফেস বা ব্যাক এন্ড ব্যবহার করে), তাহলে কোন স্ট্রিমটি ডিভাইস নির্বাচন নিয়ন্ত্রণ করবে তা অডিও HAL-কেই বেছে নিতে হবে।

এক্ষেত্রে:

  • ফলাফলস্বরূপ অবস্থাটি অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে এবং একই পরিস্থিতির পুনরাবৃত্তি ঘটলে একই ডিভাইস নির্বাচনের সুযোগ দিতে হবে।
  • যখন কনকারেন্সি স্টেট শেষ হয়, তখন অবশিষ্ট সক্রিয় স্ট্রিমটিকে অবশ্যই এই স্ট্রিমে প্রাথমিকভাবে অনুরোধ করা ডিভাইসে রাউট করতে হবে।

যদি অডিও HAL দ্বারা সক্রিয় ব্যবহারের ক্ষেত্রগুলির মধ্যে একটি অগ্রাধিকার ক্রম সংজ্ঞায়িত করা হয়, frameworks/av/services/audiopolicy/common/include/policy.h এর source_priority() ফাংশনে উল্লিখিত ক্রমটিই অনুসরণ করুন।

প্রাক-প্রক্রিয়া নির্বাচন

অডিও ফ্রেমওয়ার্কটি addEffect() বা removeEffect() HAL মেথড ব্যবহার করে একটি ইনপুট স্ট্রিমে প্রিপ্রসেসিংয়ের জন্য অনুরোধ করতে পারে।

একটি প্রদত্ত ইনপুট স্ট্রিমে প্রিপ্রসেসিং করার জন্য, অডিও ফ্রেমওয়ার্কটি শুধুমাত্র সেই কনফিগারেশনটিই সক্রিয় করে যা ইনপুট স্ট্রিমে থাকা সর্বোচ্চ-অগ্রাধিকারপ্রাপ্ত সক্রিয় ইউজ কেসটির সাথে সঙ্গতিপূর্ণ। তবে, ইউজ কেস সক্রিয়করণ এবং নিষ্ক্রিয়করণের সময় কিছু ওভারল্যাপ হতে পারে, যার ফলে একই ইনপুট স্ট্রিমে দুটি যুগপৎ সক্রিয় প্রসেস (উদাহরণস্বরূপ, ইকো ক্যানসেলারের দুটি ইনস্ট্যান্স) চলতে পারে। এই ক্ষেত্রে, HAL ইমপ্লিমেন্টেশনটি বেছে নেয় কোন অনুরোধটি গৃহীত হবে; এটি সক্রিয় অনুরোধগুলোর হিসাব রাখে এবং যখন কোনো একটি প্রসেস নিষ্ক্রিয় করা হয় তখন সঠিক অবস্থা পুনরুদ্ধার করে।

যখন একাধিক ক্যাপচার স্ট্রিম একই সাথে সক্রিয় থাকে, তখন বিভিন্ন স্ট্রিমে ভিন্ন ভিন্ন প্রিপ্রসেসিং অনুরোধ চালানো হতে পারে।

HAL এবং অডিও সাবসিস্টেমের বাস্তবায়নে এমন ব্যবস্থা থাকা উচিত, যাতে একই ইনপুট ডিভাইস ব্যবহার করলেও বিভিন্ন স্ট্রিমে ভিন্ন ভিন্ন প্রি-প্রসেসিং প্রয়োগ করা যায়। অর্থাৎ, প্রাথমিক ক্যাপচার উৎস থেকে স্ট্রিমগুলোকে ডিমাক্স করার পরেই প্রি-প্রসেসিং প্রয়োগ করা উচিত।

যদি কোনো নির্দিষ্ট অডিও সাবসিস্টেমে প্রযুক্তিগত কারণে তা সম্ভব না হয়, তাহলে অডিও HAL-কে ডিভাইস সিলেকশন -এ তালিকাভুক্ত অগ্রাধিকার নিয়মগুলোর অনুরূপ নিয়ম প্রয়োগ করতে হবে।

একই সাথে ভয়েস কল এবং এপি থেকে ক্যাপচার

ভয়েস কল চালু থাকা অবস্থাতেও AP থেকে ক্যাপচার হতে পারে। এই পরিস্থিতিটি অ্যান্ড্রয়েড ১০-এ নতুন নয় এবং এটি কনকারেন্ট ক্যাপচার ফিচারের সাথে সরাসরি সম্পর্কিত নয়, তবে এই পরিস্থিতির জন্য নির্দেশিকাগুলো উল্লেখ করা দরকারি।

একটি কল চলাকালীন AP থেকে দুই ধরনের ডেটা ক্যাপচারের প্রয়োজন হয়।

কল RX এবং TX ক্যাপচার করুন

AudioSource.VOICE_UPLINK বা AudioSource.VOICE_DOWNLINK অডিও সোর্স এবং/অথবা AudioDevice.IN_TELEPHONY_RX ডিভাইস ব্যবহারের মাধ্যমে কল RX এবং TX ক্যাপচার করা শুরু হয়।

অডিও HAL-গুলিকে অবশ্যই ইনপুট প্রোফাইলে (রোল sink -এর mixPort ) ডিভাইস AudioDevice.IN_TELEPHONY_RX থেকে একটি উপলব্ধ রুটের মাধ্যমে উন্মুক্ত করতে হবে।

যখন একটি কল সংযুক্ত হয় (অডিও মোড AudioMode.IN_CALL ), তখন AudioDevice.IN_TELEPHONY_RX ডিভাইস থেকে অন্তত একটি সক্রিয় ক্যাপচার স্ট্রিম থাকা সম্ভব হওয়া উচিত।

কল সক্রিয় থাকাকালীন ইনপুট ডিভাইস থেকে তথ্য সংগ্রহ করুন।

যখন একটি কল সক্রিয় থাকে (অডিও মোড AudioMode.IN_CALL ), তখন ‘AP ইনপুট স্ট্রিমগুলির যুগপৎ কার্যকলাপ’ বিভাগে উল্লেখিত পদ্ধতি অনুযায়ী AP থেকে ইনপুট স্ট্রিমগুলি খোলা এবং সক্রিয় করা সম্ভব হওয়া উচিত।

তবে, AP ইনপুট স্ট্রিম থেকে আসা অনুরোধের সাথে কোনো বিরোধ দেখা দিলে, ডিভাইস নির্বাচন এবং প্রি-প্রসেসিংয়ের অগ্রাধিকার সর্বদা ভয়েস কলের ভিত্তিতে হওয়া উচিত।

ডিএসপি এবং এপি থেকে একযোগে ক্যাপচার

যখন অডিও সাবসিস্টেমে এমন একটি ডিএসপি থাকে যা লো-পাওয়ার অডিও কনটেক্সট বা হটওয়ার্ড ডিটেকশন ফাংশন সমর্থন করে, তখন ইমপ্লিমেন্টেশনটিতে এপি এবং অডিও ডিএসপি উভয় থেকেই যুগপৎ ক্যাপচার সমর্থন করা উচিত। এর মধ্যে অন্তর্ভুক্ত রয়েছে প্রাথমিক ডিটেকশন পর্যায়ে ডিএসপি দ্বারা ক্যাপচার এবং ডিএসপি দ্বারা ডিটেকশন ট্রিগার হওয়ার পরে AudioSource.HOTWORD ব্যবহার করে এপি দ্বারা ক্যাপচার।

এটি সাউন্ড ট্রিগার HAL দ্বারা ইমপ্লিমেন্টেশন ডেসক্রিপ্টরের মাধ্যমে রিপোর্ট করা কনকারেন্ট ক্যাপচার ফ্ল্যাগে প্রতিফলিত হওয়া উচিত: ISoundTriggerHw.Properties.concurrentCapture = true

অডিও HAL-কে অবশ্যই AudioInputFlag.HW_HOTWORD ফ্ল্যাগ দ্বারা চিহ্নিত হটওয়ার্ড ক্যাপচারের জন্য একটি নির্দিষ্ট ইনপুট প্রোফাইলও প্রকাশ করতে হবে। এই ইমপ্লিমেন্টেশনটিতে সাউন্ড ট্রিগার HAL দ্বারা একযোগে লোড করা যায় এমন সাউন্ড মডেলের সংখ্যার অন্তত সমান সংখ্যক স্ট্রিম এই প্রোফাইলে খোলা এবং সক্রিয় করার সুবিধা থাকতে হবে।

অন্যান্য ইনপুট প্রোফাইলগুলো সক্রিয় থাকা অবস্থাতেও এই ইনপুট প্রোফাইল থেকে ডেটা ক্যাপচার করা সম্ভব হওয়া উচিত।

সহকারী বাস্তবায়নের জন্য প্রভাব

ডেটা ব্যবহার এবং ব্যবহারকারী বিজ্ঞপ্তি সংক্রান্ত প্রয়োজনীয়তা

যেহেতু একই সাথে একাধিক মাইকের ব্যবহার, অপব্যবহারের ফলে, ব্যবহারকারীর ব্যক্তিগত তথ্য ফাঁস হতে পারে, তাই অ্যাসিস্ট্যান্টের ভূমিকা নিতে ইচ্ছুক বিশেষাধিকারপ্রাপ্ত প্রি-লোডেড অ্যাপগুলোর ক্ষেত্রে নিম্নলিখিত শর্তাবলী ও নিশ্চয়তাগুলো প্রয়োগ করা প্রয়োজন।

  • ব্যবহারকারী অ্যাসিস্ট্যান্টের সাথে ইন্টারঅ্যাক্ট না করা পর্যন্ত মাইক্রোফোনের মাধ্যমে সংগৃহীত ডেটা ডিভাইস থেকে বাইরে যাওয়া উচিত নয়। উদাহরণস্বরূপ, হটওয়ার্ডটি ট্রিগার হওয়ার পর।
  • একই সাথে চালু থাকা অ্যাপ্লিকেশনগুলো হটওয়ার্ড শনাক্ত হওয়ার পর ব্যবহারকারীকে দৃশ্যমান সংকেত দেবে। এর ফলে ব্যবহারকারীরা বুঝতে পারেন যে পরবর্তী কথোপকথন অ্যাসিস্ট্যান্টের মতো অন্য কোনো অ্যাপের মাধ্যমে হবে।
  • ব্যবহারকারীদের মাইক্রোফোন অথবা অ্যাসিস্ট্যান্ট ট্রিগারগুলো বন্ধ করার ক্ষমতা থাকা উচিত।
  • অডিও রেকর্ডিং সংরক্ষণ করার সময়, ব্যবহারকারীদের যেকোনো সময়ে সেগুলো দেখার, পর্যালোচনা করার এবং মুছে ফেলার সুবিধা থাকা উচিত।

অ্যান্ড্রয়েড ১০ এর জন্য কার্যকরী উন্নতি

সহকারীরা একে অপরকে বাধা দিচ্ছে না

অ্যান্ড্রয়েড ৯ বা তার নিচের সংস্করণগুলোতে, ডিভাইসে দুটি অলওয়েজ-অন অ্যাসিস্ট্যান্ট থাকলে, তাদের মধ্যে কেবল একটিই তার হটওয়ার্ডের জন্য শুনতে পারত। ফলে, দুটি অ্যাসিস্ট্যান্টের মধ্যে সুইচ করার প্রয়োজন হতো। অ্যান্ড্রয়েড ১০-এ, ডিফল্ট অ্যাসিস্ট্যান্টটি অন্য অ্যাসিস্ট্যান্টের সাথে একই সময়ে শুনতে পারে। এর ফলে, দুটি অ্যাসিস্ট্যান্ট ব্যবহারকারীগণ অনেক বেশি সাবলীল অভিজ্ঞতা লাভ করেন।

অ্যাপগুলি মাইক খোলা রাখছে

Shazam বা Waze-এর মতো অ্যাপগুলো যখন মাইক্রোফোন চালু রাখে, তখনও ডিফল্ট অ্যাসিস্ট্যান্ট হটওয়ার্ডটির জন্য শুনতে পারে।

নন-ডিফল্ট অ্যাসিস্ট্যান্ট অ্যাপগুলোর ক্ষেত্রে অ্যান্ড্রয়েড ১০-এ আচরণে কোনো পরিবর্তন আসেনি।

নমুনা অডিও HAL বাস্তবায়ন

এই নথিতে প্রদত্ত নির্দেশিকা মেনে চলা একটি অডিও HAL বাস্তবায়নের উদাহরণ AOSP- তে পাওয়া যাবে।