HDMI-CEC নিয়ন্ত্রণ পরিষেবা

হাই-ডেফিনিশন মাল্টিমিডিয়া ইন্টারফেস কনজিউমার ইলেকট্রনিক্স কন্ট্রোল (HDMI-CEC) স্ট্যান্ডার্ড মাল্টিমিডিয়া কনজিউমার পণ্যগুলোকে একে অপরের সাথে যোগাযোগ এবং তথ্য আদান-প্রদান করতে সক্ষম করে। HDMI-CEC রিমোট কন্ট্রোল পাসথ্রু এবং সিস্টেম অডিও কন্ট্রোলের মতো অনেক ফিচার সমর্থন করে, তবে এর মধ্যে সবচেয়ে জনপ্রিয় একটি হলো ওয়ান টাচ প্লে। ওয়ান টাচ প্লে একটি মিডিয়া সোর্স ডিভাইসকে স্বয়ংক্রিয়ভাবে টিভি চালু করতে এবং এর ইনপুট পোর্ট পরিবর্তন করতে দেয়, ফলে আপনার ক্রোমকাস্ট থেকে ব্লু-রে প্লেয়ারে পরিবর্তন করার জন্য টিভির রিমোট খুঁজতে হয় না।

অ্যান্ড্রয়েড ১২-এর সাথে, HDMI-সংযুক্ত ডিসপ্লের পাওয়ার কন্ট্রোল অভ্যন্তরীণ ডিসপ্লের পাওয়ার কন্ট্রোলের সাথে সামঞ্জস্যপূর্ণ হয়। যখন একটি HDMI প্লেব্যাক ডিভাইস চালু হয়, তখন এটি HDMI CEC One Touch Play-এর মাধ্যমে সংযুক্ত টিভিটিকে জাগিয়ে তোলার এবং বর্তমান সক্রিয় উৎস হওয়ার চেষ্টা করে। যদি ডিভাইসটি বর্তমান সক্রিয় উৎস থাকা অবস্থায় স্লিপ মোডে চলে যায়, তবে এটি সংযুক্ত টিভিটিকে বন্ধ করার চেষ্টা করে।

HDMI-CEC সমর্থন করা সাধারণত ঐচ্ছিক। তবে, বেশিরভাগ নির্মাতাই HDMI-CEC গ্রহণ করেছে, যাতে তাদের ডিভাইসগুলো অন্য কোম্পানির ডিভাইসের সাথে কাজ করে। প্রতিটি নির্মাতা HDMI-CEC স্ট্যান্ডার্ডটি ভিন্ন ভিন্ন উপায়ে প্রয়োগ করে, ফলে ডিভাইসগুলো সবসময় একে অপরকে বুঝতে পারে না এবং ডিভাইসভেদে সমর্থিত ফিচারগুলোও ভিন্ন হয়। এই ভিন্নতার কারণে, গ্রাহকরা নিশ্চিন্তে ধরে নিতে পারেন না যে, CEC সমর্থনের দাবি করা দুটি পণ্য সম্পূর্ণরূপে সামঞ্জস্যপূর্ণ।

HDMI-CEC 2.0-এর সমর্থন HDMI ডিভাইসগুলোর মধ্যে সামঞ্জস্য উন্নত করতে সাহায্য করে, যদি প্রেরক এবং প্রাপক উভয় ডিভাইসই স্ট্যান্ডার্ডটির এই সংস্করণটি সমর্থন করে।

সমাধান

অ্যান্ড্রয়েড টিভি ইনপুট ফ্রেমওয়ার্ক (TIF) চালু হওয়ার ফলে, HDMI-CEC সমস্ত সংযুক্ত ডিভাইসকে একত্রিত করে এবং সামঞ্জস্যজনিত সমস্যা কমিয়ে আনে। এই অসুবিধাগুলো দূর করার জন্য অ্যান্ড্রয়েড HdmiControlService নামে একটি সিস্টেম সার্ভিস তৈরি করেছে।

অ্যান্ড্রয়েড ইকোসিস্টেমের অংশ হিসেবে HdmiControlService প্রদান করার মাধ্যমে অ্যান্ড্রয়েড নিম্নলিখিত সুবিধাগুলো দিতে চায়:

  • সকল নির্মাতার জন্য HDMI-CEC-এর একটি আদর্শ বাস্তবায়ন, যা ডিভাইসের অসামঞ্জস্যতা হ্রাস করবে। পূর্বে, নির্মাতাদের HDMI-CEC-এর নিজস্ব বাস্তবায়ন তৈরি করতে হতো অথবা তৃতীয় পক্ষের সমাধান ব্যবহার করতে হতো।
  • এটি এমন একটি পরিষেবা যা বাজারে থাকা অসংখ্য HDMI-CEC ডিভাইসের সাথে ভালোভাবে পরীক্ষিত। অ্যান্ড্রয়েড এই পণ্যগুলোর মধ্যে পাওয়া সামঞ্জস্যতার সমস্যাগুলো নিয়ে কঠোর গবেষণা চালিয়েছে এবং এই প্রযুক্তিতে অভিজ্ঞ ডিভাইস বাস্তবায়নকারীদের কাছ থেকে দরকারি পরামর্শ সংগ্রহ করেছে। এই CEC পরিষেবাটি স্ট্যান্ডার্ড এবং তার পরিবর্তনগুলোর মধ্যে একটি সুষ্ঠু ভারসাম্য বজায় রাখার জন্য ডিজাইন করা হয়েছে, যাতে এটি মানুষের ব্যবহৃত পণ্যগুলোর সাথে কাজ করে।

সামগ্রিক নকশা

স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট বিভিন্ন বৈশিষ্ট্য বাস্তবায়নের জন্য HdmiControlService সিস্টেমের বাকি অংশ যেমন টিভি ইনপুট ফ্রেমওয়ার্ক (TIF), অডিও সার্ভিস এবং পাওয়ার সার্ভিসের সাথে সংযুক্ত থাকে।

কাস্টম সিইসি কন্ট্রোলার থেকে সরলতর এইচডিএমআই-সিইসি হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (এইচএএল)-এর বাস্তবায়নে পরিবর্তনের চিত্রায়নের জন্য নিম্নলিখিত ডায়াগ্রামটি দেখুন।

ডায়াগ্রাম যা দেখায় অ্যান্ড্রয়েড ৫.০-এর আগে ও পরে HDMI-CEC কীভাবে বাস্তবায়িত হয়েছিল।

চিত্র ১. এইচডিএমআই কন্ট্রোল সার্ভিস প্রতিস্থাপন

বাস্তবায়ন

HDMI নিয়ন্ত্রণ পরিষেবা সম্পর্কে বিস্তারিত জানতে নিম্নলিখিত ডায়াগ্রামটি দেখুন।

ছবিতে দেখানো হয়েছে HDMI কন্ট্রোল পরিষেবার বিবরণ

চিত্র ২. এইচডিএমআই নিয়ন্ত্রণ পরিষেবার বিবরণ

একটি সঠিক অ্যান্ড্রয়েড HDMI-CEC বাস্তবায়নের মূল উপাদানগুলো হলো:

  • HdmiControlManager নামক একটি ম্যানেজার ক্লাস বিশেষাধিকারপ্রাপ্ত অ্যাপগুলোকে এপিআই (API) প্রদান করে। টিভি ইনপুট ম্যানেজার সার্ভিস এবং অডিও সার্ভিসের মতো সিস্টেম সার্ভিসগুলো সরাসরি এই সার্ভিসটি ব্যবহার করতে পারে।
  • এই পরিষেবাটি একাধিক ধরনের লজিক্যাল ডিভাইস হোস্ট করার সুযোগ দেওয়ার জন্য ডিজাইন করা হয়েছে।
  • ডিভাইসগুলোর মধ্যে প্রোটোকল এবং সিগন্যালিং পদ্ধতির পার্থক্যগুলো পরিচালনা সহজ করার জন্য, HDMI-CEC একটি হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL)-এর মাধ্যমে হার্ডওয়্যারের সাথে সংযুক্ত থাকে। ডিভাইস নির্মাতাদের HAL লেয়ারটি বাস্তবায়নের জন্য এর সংজ্ঞাটি উপলব্ধ রয়েছে।

দ্রষ্টব্য : ডিভাইস প্রস্তুতকারকদের device.mk PRODUCT_COPY_FILES অংশে নিম্নলিখিত লাইনটি যোগ করতে হবে।

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml

আপনার ডিভাইসটি HDMI সিঙ্ক ডিভাইস নাকি HDMI সোর্স ডিভাইস, তার উপর নির্ভর করে HdmiControlService সঠিকভাবে কাজ করানোর জন্য ডিভাইস প্রস্তুতকারকদের device.mk ফাইলে ro.hdmi.device_type সেট করতে হবে।

HDMI উৎস ডিভাইস, যেমন ওভার দ্য টপ (OTT) বা সেট-টপ বক্স (STB) ডিভাইসের জন্য, সেট করুন:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

প্যানেল টিভির মতো HDMI সিঙ্ক ডিভাইসগুলির জন্য, সেট করুন:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • ডিভাইস প্রস্তুতকারকের সরবরাহ করা একটি মালিকানাধীন CEC কন্ট্রোলার HdmiControlService সাথে একসাথে থাকতে পারে না। এটিকে অবশ্যই নিষ্ক্রিয় বা অপসারণ করতে হবে। এর সাধারণ প্রয়োজনীয়তাগুলো প্রস্তুতকারক-নির্দিষ্ট কমান্ডগুলো পরিচালনা করার চাহিদা থেকে উদ্ভূত হয়। প্রস্তুতকারক-নির্দিষ্ট কমান্ড হ্যান্ডলারটিকে সার্ভিসটি এক্সটেন্ড বা পরিবর্তন করার মাধ্যমে এর মধ্যে অন্তর্ভুক্ত করা উচিত। এই কাজটি ডিভাইস প্রস্তুতকারকের উপর ছেড়ে দেওয়া হয় এবং অ্যান্ড্রয়েড এটি নির্দিষ্ট করে দেয় না। মনে রাখবেন যে, প্রস্তুতকারক-নির্দিষ্ট কমান্ডের জন্য সার্ভিসে করা কোনো পরিবর্তন যেন স্ট্যান্ডার্ড কমান্ডগুলো যেভাবে পরিচালনা করা হয় তাতে হস্তক্ষেপ না করে, অন্যথায় ডিভাইসটি অ্যান্ড্রয়েডের সাথে সামঞ্জস্যপূর্ণ থাকবে না।
  • HDMI-CEC পরিষেবাতে প্রবেশাধিকার SignatureOrSystem সুরক্ষা স্তর দ্বারা সুরক্ষিত। শুধুমাত্র সিস্টেম কম্পোনেন্ট অথবা /system/priv-app এ রাখা অ্যাপগুলোই এই পরিষেবাটি অ্যাক্সেস করতে পারে। ক্ষতিকর উদ্দেশ্যপ্রণোদিত অ্যাপের অপব্যবহার থেকে পরিষেবাটিকে রক্ষা করার জন্যই এটি করা হয়।

অ্যান্ড্রয়েড TV/Display(0) টাইপ, Playback device(4) যা ওয়ান টাচ প্লে কমান্ড জারি করে সক্রিয় উৎস হতে পারে এবং Audio System (5) যা সিস্টেম অডিও মোড এবং ARC পরিচালনা করে, সমর্থন করে। অন্যান্য ডিভাইসের ধরণ (টিউনার এবং রেকর্ডার) বর্তমানে সমর্থিত নয়।

এইচডিএমআই-সিইসি এইচএএল

HDMI-CEC HAL API, HdmiControlService হার্ডওয়্যার রিসোর্সটি ব্যবহার করে HDMI-CEC কমান্ড প্রেরণ/গ্রহণ করতে, প্রয়োজনীয় সেটিংস কনফিগার করতে এবং (ঐচ্ছিকভাবে) অন্তর্নিহিত প্ল্যাটফর্মের মাইক্রোপ্রসেসরের সাথে যোগাযোগ করতে দেয়, যা অ্যান্ড্রয়েড সিস্টেম স্ট্যান্ডবাই মোডে থাকাকালীন CEC নিয়ন্ত্রণ গ্রহণ করবে।

সংস্করণ বৈশিষ্ট্য এইচএএল ফাইল
১.০ HAL ডেটা (অ্যাড্রেস, ফিচার) কনফিগার করুন। HDMI-CEC কমান্ড পাঠান। HDMI-CEC কমান্ড এবং হটপ্লাগ ইভেন্ট গ্রহণ করার জন্য কলব্যাক রেজিস্টার করুন। IHdmiCec.hal
IHdmiCecCallback.hal
১.১ HDMI-CEC 2.0 প্রকারগুলি চালু করুন @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

পরীক্ষা

HDMI-CEC CTS ডকুমেন্টেশন অনুযায়ী CTS টেস্টের মাধ্যমে ডিভাইসগুলির HDMI-CEC ইমপ্লিমেন্টেশন পরীক্ষা ও যাচাই করা হয়।

এইচডিএমআই-সিইসি ২.০

অ্যান্ড্রয়েড সোর্স (প্লেব্যাক) এবং সিঙ্ক (টিভি প্যানেল) ডিভাইসগুলো HDMI-CEC 2.0 সমর্থন করে। HDMI-CEC 2.0, HDMI ডিভাইসগুলোর মধ্যে উন্নততর আন্তঃকার্যক্ষমতা, রিমোট কন্ট্রোল পাসথ্রু-এর উন্নতি এবং আরও ব্যাপক সার্টিফিকেশন পরীক্ষার সুবিধা প্রদান করে। সাধারণত, অন্যান্য ডিভাইসের সাথে HDMI-CEC 2.0-এর মিথস্ক্রিয়া আরও বেশি কার্যকর, যার ফলে HDMI-CEC ট্র্যাফিক কম হয় এবং মিথস্ক্রিয়াও দ্রুততর হয়।

কোনো ডিভাইসকে HDMI-CEC 2.0 সমর্থন করতে হলে, ডিভাইস এবং ব্যবহারকারীর কনফিগারেশন অবশ্যই HDMI-CEC 2.0 ব্যবহারের জন্য সেট করা থাকতে হবে। এছাড়াও, HAL ইমপ্লিমেন্টেশনকে অবশ্যই IHdmiCec#getCecVersion কলে HDMI-CEC 2.0-এর জন্য সমর্থনের কথা জানাতে হবে।

সিইসি কনফিগারেশন

HDMI-CEC-এর আচরণ বিল্ড টাইমে (OEM-দের দ্বারা RRO ব্যবহার করে) এবং রানটাইমে ( HdmiControlManager @SystemApi দ্বারা) উভয় পর্যায়েই কনফিগার করা যায়।

HDMI-CEC সেটিংসের উদাহরণ:

সেটিং বিকল্প
HDMI-CEC সক্রিয় আছে কি নেই। সক্ষম করা হয়েছে
প্রতিবন্ধী
একটি প্লেব্যাক ডিভাইস দ্বারা প্রেরিত HDMI-CEC পাওয়ার কন্ট্রোল মেসেজের পরিধি। শুধুমাত্র টিভির জন্য
টিভি এবং অডিও সিস্টেমে
সম্প্রচার
কোনোটিই না

প্রতিটি সেটিংয়ের জন্য বর্তমানে উপলব্ধ এবং অনুমোদিত বিকল্পগুলো অ্যাপগুলো রান টাইমে জিজ্ঞাসা করতে পারে।