অডিও

Android Audio HAL আইকন

Android-এর অডিও হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) android.media-তে উচ্চ-লেভেল, অডিও-নির্দিষ্ট ফ্রেমওয়ার্ক API-কে অন্তর্নিহিত অডিও ড্রাইভার ও হার্ডওয়্যারের সাথে কানেক্ট করে। এই বিভাগে পারফর্ম্যান্স উন্নত করার জন্য প্রয়োগ সংক্রান্ত নির্দেশাবলী ও পরামর্শ অন্তর্ভুক্ত আছে।

Android অডিও আর্কিটেকচার অডিও কার্যকারিতা কীভাবে প্রয়োগ করা হয় তা নির্ধারণ করে এবং বাস্তবায়নের সাথে জড়িত প্রাসঙ্গিক সোর্স কোড নির্দেশ করে।

অডিও আর্কিটেকচার

ছবি ১. Android অডিও আর্কিটেকচার

অ্যাপ্লিকেশন ফ্রেমওয়ার্ক
অ্যাপ্লিকেশন ফ্রেমওয়ার্কে অ্যাপ কোড থাকে, যা অডিও হার্ডওয়্যারের সাথে ইন্টার‍্যাক্ট করতে android.media API ব্যবহার করে। অভ্যন্তরীণভাবে, এই কোডটি অডিও হার্ডওয়্যারের সাথে ইন্টার‍্যাক্ট করে এমন নেটিভ কোড অ্যাক্সেস করতে সংশ্লিষ্ট JNI গ্লু ক্লাসকে কল করে।
JNI
android.media-এর সাথে যুক্ত JNI কোড, অডিও হার্ডওয়্যার অ্যাক্সেস করতে লোয়ার লেভেল নেটিভ কোড কল করে। JNI frameworks/base/core/jni/ এবং frameworks/base/media/jni-এ অবস্থিত।
নেটিভ ফ্রেমওয়ার্ক
নেটিভ ফ্রেমওয়ার্ক android.media প্যাকেজের সমতুল্য নেটিভ প্রদান করে, মিডিয়া সার্ভারের অডিও-নির্দিষ্ট পরিষেবা অ্যাক্সেস করতে Binder IPC প্রক্সি কল করে। নেটিভ ফ্রেমওয়ার্ক কোড frameworks/av/media/libmedia-এ থাকে।
Binder IPC
Binder IPC প্রক্সি প্রসেস সীমার মধ্যে যোগাযোগ সহজ করে। প্রক্সি frameworks/av/media/libmedia-এ অবস্থিত এবং "I" অক্ষর দিয়ে শুরু হয়।
মিডিয়া সার্ভার
মিডিয়া সার্ভারে অডিও পরিষেবা থাকে, যা হল আসল কোড যা আপনার HAL ইমপ্লিমেন্টেশনের সাথে ইন্টার‍্যাক্ট করে। মিডিয়া সার্ভারটি frameworks/av/services/audioflinger-এ অবস্থিত।
HAL
HAL হল একটি স্ট্যান্ডার্ড ইন্টারফেস যা অডিও পরিষেবা কল করে এবং আপনার অডিও হার্ডওয়্যার সঠিকভাবে কাজ করার জন্য আপনাকে এটি প্রয়োগ করতে হবে। আরও বিবরণের জন্য, অডিও HAL ইন্টারফেস এবং সংশ্লিষ্ট HAL ভার্সন ডিরেক্টরির *.hal ফাইলে কমেন্ট দেখুন।
কার্নেল ড্রাইভার
অডিও ড্রাইভার আপনার হার্ডওয়্যার ও HAL ইমপ্লিমেন্টেশনের সাথে ইন্টার‍্যাক্ট করে। আপনি উন্নত Linux সাউন্ড আর্কিটেকচার (ALSA), ওপেন সাউন্ড সিস্টেম (OSS) বা কাস্টম ড্রাইভার (HAL হল ড্রাইভার-অ্যাগনস্টিক) ব্যবহার করতে পারবেন।

মনে রাখবেন: আপনি ALSA ব্যবহার করলে, আমরা ড্রাইভারের ব্যবহারকারী অংশের জন্য external/tinyalsa সাজেস্ট করি, কারণ এটি মানানসই লাইসেন্স (সাধারণ ব্যবহারকারী-মোড লাইব্রেরি GPL-লাইসেন্সযুক্ত) মেনে চলে।

Open SL ES-এর উপর ভিত্তি করে Android নেটিভ অডিও (দেখানো হয়নি)
এই API Android NDK-এর অংশ হিসেবে এক্সপোজ করা হয় এবং এটি android.media-এর মতো একই আর্কিটেকচার লেভেলে থাকে।