HDR ভিডিও প্লেব্যাক

হাই ডাইনামিক রেঞ্জ (HDR) ভিডিও হলো উচ্চ-মানের ভিডিও ডিকোডিংয়ের পরবর্তী ধাপ, যা অতুলনীয় দৃশ্য পুনরুৎপাদনের গুণাবলী নিয়ে আসে। এটি লুমিন্যান্স উপাদানের ডাইনামিক রেঞ্জ উল্লেখযোগ্যভাবে বৃদ্ধি করে (বর্তমান 100 cd/ থেকে 1000-এরও বেশি cd/ পর্যন্ত) এবং আরও বিস্তৃত কালার স্পেস (BT 2020) ব্যবহার করে এই কাজটি করে থাকে। এটি এখন টিভি জগতে 4K UHD বিবর্তনের একটি কেন্দ্রীয় উপাদান।

অ্যান্ড্রয়েড ১০ নিম্নলিখিত HDR ভিডিওগুলো সমর্থন করে।

  • HDR10
  • ভিপি৯
  • HDR10+

অ্যান্ড্রয়েড ৯ এবং তার পরবর্তী সংস্করণ থেকে, মিডিয়াকোডেক টানেলড মোড নির্বিশেষে HDR মেটাডেটা রিপোর্ট করে। আপনি নন-টানেলড মোডে স্ট্যাটিক/ডাইনামিক মেটাডেটার সাথে ডিকোড করা ডেটা পেতে পারেন। HDR10 এবং VP9Profile2, যা স্ট্যাটিক মেটাডেটা ব্যবহার করে, সেগুলোর ক্ষেত্রে আউটপুট ফরম্যাটে KEY_HDR_STATIC_INFO কী-এর মাধ্যমে মেটাডেটা রিপোর্ট করা হয়। HDR10+, যা ডাইনামিক মেটাডেটা ব্যবহার করে, সেটির ক্ষেত্রে আউটপুট ফরম্যাটে KEY_HDR10_PLUS_INFO কী-এর মাধ্যমে মেটাডেটা রিপোর্ট করা হয় এবং এটি প্রতিটি আউটপুট ফ্রেমের জন্য পরিবর্তিত হতে পারে। আরও তথ্যের জন্য মাল্টিমিডিয়া টানেলিং দেখুন।

অ্যান্ড্রয়েড ৭.০ থেকে, প্রাথমিক HDR সাপোর্টের মধ্যে HDR ভিডিও পাইপলাইন শনাক্তকরণ এবং সেটআপের জন্য যথাযথ কনস্ট্যান্ট তৈরি করার বিষয়টি অন্তর্ভুক্ত রয়েছে। এর অর্থ হলো, কোডেক টাইপ ও ডিসপ্লে মোড নির্ধারণ করা এবং HDR ডেটা কীভাবে MediaCodec-এ পাঠাতে হবে ও HDR ডিকোডারগুলোতে সরবরাহ করতে হবে, তা নির্দিষ্ট করে দেওয়া।

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

সমর্থিত HDR প্রযুক্তি

অ্যান্ড্রয়েড ৭.০ এবং এর পরবর্তী সংস্করণ থেকে নিম্নলিখিত HDR প্রযুক্তিগুলো সমর্থিত।

প্রযুক্তি ডলবি-ভিশন HDR10 ভিপি৯-এইচএলজি ভিপি৯-পিকিউ
কোডেক AVC/HEVC HEVC ভিপি৯ ভিপি৯
স্থানান্তর ফাংশন এসটি-২০৮৪ এসটি-২০৮৪ এইচএলজি এসটি-২০৮৪
এইচডিআর মেটাডেটা টাইপ গতিশীল স্থির কোনোটিই না স্থির

অ্যান্ড্রয়েড ৭.০-তে শুধুমাত্র টানেলড মোডের মাধ্যমে HDR প্লেব্যাক সংজ্ঞায়িত করা হয়েছে , কিন্তু ডিভাইসগুলো অপেক ভিডিও বাফার ব্যবহার করে সারফেসভিউ-তে HDR প্লেব্যাকের জন্য সমর্থন যোগ করতে পারে। অন্য কথায়:

  • নন-টানেলড ডিকোডার ব্যবহার করে HDR প্লেব্যাক সমর্থিত কিনা, তা যাচাই করার জন্য কোনো স্ট্যান্ডার্ড অ্যান্ড্রয়েড এপিআই নেই।
  • যেসব টানেলড ভিডিও ডিকোডার HDR প্লেব্যাক ক্ষমতার বিজ্ঞাপন দেয়, HDR-সক্ষম ডিসপ্লের সাথে সংযুক্ত হলে সেগুলোকে অবশ্যই HDR প্লেব্যাক সমর্থন করতে হবে।
  • AOSP অ্যান্ড্রয়েড ৭.০ সংস্করণে HDR কন্টেন্টের GL কম্পোজিশন সমর্থিত নয়।

আবিষ্কার

HDR প্লেব্যাকের জন্য একটি HDR-সক্ষম ডিকোডার এবং একটি HDR-সক্ষম ডিসপ্লের সাথে সংযোগ প্রয়োজন। ঐচ্ছিকভাবে, কিছু প্রযুক্তির জন্য একটি নির্দিষ্ট এক্সট্র্যাক্টরের প্রয়োজন হয়।

প্রদর্শন

অ্যাপ্লিকেশনগুলিকে নির্দিষ্ট ডিসপ্লে দ্বারা সমর্থিত HDR প্রযুক্তিগুলি সম্পর্কে জানতে নতুন Display.getHdrCapabilities API ব্যবহার করতে হবে। এটি মূলত CTA-861.3-এ সংজ্ঞায়িত EDID স্ট্যাটিক মেটাডেটা ডেটা ব্লকের তথ্য:

  • public Display.HdrCapabilities getHdrCapabilities()
    ডিসপ্লেটির HDR সক্ষমতা ফেরত দেয়।
  • Display.HdrCapabilities
    একটি নির্দিষ্ট ডিসপ্লের HDR সক্ষমতাগুলো এতে সংক্ষেপে তুলে ধরা হয়। যেমন, এটি কোন ধরনের HDR সমর্থন করে এবং এর কাঙ্ক্ষিত উজ্জ্বলতার ডেটা সম্পর্কে বিস্তারিত তথ্য।

ধ্রুবক:

  • int HDR_TYPE_DOLBY_VISION
    ডলবি ভিশন সমর্থন।
  • int HDR_TYPE_HDR10
    HDR10 / PQ সমর্থন।
  • int HDR_TYPE_HDR10_PLUS
    HDR10+ সমর্থন।
  • int HDR_TYPE_HLG
    হাইব্রিড লগ-গামা সমর্থন।
  • float INVALID_LUMINANCE
    অবৈধ উজ্জ্বলতার মান।

জনসাধারণের পদ্ধতি:

  • float getDesiredMaxAverageLuminance()
    এই ডিসপ্লেটির জন্য কাঙ্ক্ষিত কন্টেন্টের সর্বোচ্চ ফ্রেম-গড় উজ্জ্বলতার ডেটা cd/cd/m² এককে ফেরত দেয়।
  • float getDesiredMaxLuminance()
    এই ডিসপ্লেটির জন্য কাঙ্ক্ষিত কন্টেন্টের সর্বোচ্চ উজ্জ্বলতার ডেটা cd/cd/m² এককে ফেরত দেয়।
  • float getDesiredMinLuminance()
    এই ডিসপ্লেটির জন্য কাঙ্ক্ষিত কন্টেন্টের সর্বনিম্ন উজ্জ্বলতার ডেটা cd/cd/m² এককে ফেরত দেয়।
  • int[] getSupportedHdrTypes()
    এই ডিসপ্লেটির সমর্থিত HDR প্রকারগুলি দেখায় (ধ্রুবকগুলি দেখুন)। ডিসপ্লেটি HDR সমর্থন না করলে একটি খালি অ্যারে ফেরত দেয়।

ডিকোডার

নতুন HDR সক্ষম প্রোফাইলগুলির জন্য সমর্থন যাচাই করতে অ্যাপ্লিকেশনগুলিকে বিদ্যমান CodecCapabilities.profileLevels API ব্যবহার করতে হবে:

ডলবি-ভিশন

MediaFormat মাইম ধ্রুবক:

String MIMETYPE_VIDEO_DOLBY_VISION

MediaCodecInfo.CodecProfileLevel প্রোফাইল ধ্রুবকসমূহ:

int DolbyVisionProfileDvavPen
int DolbyVisionProfileDvavPer
int DolbyVisionProfileDvheDen
int DolbyVisionProfileDvheDer
int DolbyVisionProfileDvheDtb
int DolbyVisionProfileDvheDth
int DolbyVisionProfileDvheDtr
int DolbyVisionProfileDvheStn

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

HEVC HDR 10

MediaCodecInfo.CodecProfileLevel প্রোফাইল ধ্রুবকসমূহ:

int HEVCProfileMain10HDR10
int HEVCProfileMain10HDR10Plus

ভিপি৯ এইচএলজি এবং পিকিউ

MediaCodecInfo.CodecProfileLevel প্রোফাইল ধ্রুবকসমূহ:

int VP9Profile2HDR
int VP9Profile2HDR10Plus
int VP9Profile3HDR
int VP9Profile3HDR10Plus

যদি কোনো প্ল্যাটফর্ম HDR-সক্ষম ডিকোডার সমর্থন করে, তবে এটি একটি HDR-সক্ষম এক্সট্র্যাক্টরও সমর্থন করবে।

শুধুমাত্র টানেলড ডিকোডারই HDR কন্টেন্ট প্লেব্যাক করার নিশ্চয়তা দেয়। নন-টানেলড ডিকোডার দিয়ে প্লেব্যাক করলে HDR তথ্য হারিয়ে যেতে পারে এবং কন্টেন্টটি একটি SDR কালার ভলিউমে পরিণত হয়ে যেতে পারে।

নিষ্কাশনকারী

অ্যান্ড্রয়েড ৭.০-তে বিভিন্ন HDR প্রযুক্তির জন্য নিম্নলিখিত কন্টেইনারগুলো সমর্থিত:

প্রযুক্তি ডলবি-ভিশন HDR10 ভিপি৯-এইচএলজি ভিপি৯-পিকিউ
কন্টেইনার এমপি৪ এমপি৪ ওয়েবএম ওয়েবএম

কোনো ফাইলের একটি ট্র্যাকের জন্য HDR সাপোর্টের প্রয়োজন আছে কিনা, তা প্ল্যাটফর্মটি সমর্থন করে না। কোনো ট্র্যাকের জন্য একটি নির্দিষ্ট HDR প্রোফাইলের প্রয়োজন আছে কিনা, তা নির্ধারণ করতে অ্যাপ্লিকেশনগুলো কোডেক-নির্দিষ্ট ডেটা পার্স করতে পারে।

সারসংক্ষেপ

প্রতিটি HDR প্রযুক্তির জন্য প্রয়োজনীয় উপাদানগুলো নিম্নলিখিত সারণিতে দেখানো হলো:

প্রযুক্তি ডলবি-ভিশন HDR10 ভিপি৯-এইচএলজি ভিপি৯-পিকিউ
সমর্থিত HDR ধরণ (ডিসপ্লে) HDR_TYPE_DOLBY_VISION HDR_TYPE_HDR10 HDR_TYPE_HLG HDR_TYPE_HDR10
কন্টেইনার (এক্সট্র্যাক্টর) এমপি৪ এমপি৪ ওয়েবএম ওয়েবএম
ডিকোডার MIMETYPE_VIDEO_DOLBY_VISION MIMETYPE_VIDEO_HEVC MIMETYPE_VIDEO_VP9 MIMETYPE_VIDEO_VP9
প্রোফাইল (ডিকোডার) ডলবি প্রোফাইলগুলির মধ্যে একটি HEVCProfileMain10HDR10 VP9Profile2HDR অথবা VP9Profile3HDR VP9Profile2HDR অথবা VP9Profile3HDR

নোট:

  • ডলবি-ভিশন বিটস্ট্রিমগুলো ডলবি দ্বারা সংজ্ঞায়িত পদ্ধতিতে একটি MP4 কন্টেইনারে প্যাকেজ করা হয়। অ্যাপ্লিকেশনগুলো তাদের নিজস্ব ডলবি-সক্ষম এক্সট্র্যাক্টর প্রয়োগ করতে পারে, তবে শর্ত থাকে যে তারা ডলবি দ্বারা সংজ্ঞায়িত নিয়ম অনুযায়ী ডিকোডারের জন্য সংশ্লিষ্ট লেয়ারগুলোর অ্যাক্সেস ইউনিটগুলোকে একটি একক অ্যাক্সেস ইউনিটে প্যাকেজ করবে।
  • একটি প্ল্যাটফর্ম হয়তো HDR-সক্ষম এক্সট্র্যাক্টর সমর্থন করে, কিন্তু এর অনুরূপ কোনো HDR-সক্ষম ডিকোডার নাও থাকতে পারে।

প্লেব্যাক

কোনো অ্যাপ্লিকেশন HDR প্লেব্যাকের জন্য সমর্থন যাচাই করার পর, এটি নিম্নলিখিত বিষয়গুলো মাথায় রেখে, প্রায় নন-HDR কন্টেন্টের মতোই HDR কন্টেন্ট প্লেব্যাক করতে পারে:

  • ডলবি-ভিশনের ক্ষেত্রে, কোনো নির্দিষ্ট মিডিয়া ফাইল/ট্র্যাকের জন্য HDR সক্ষম ডিকোডার প্রয়োজন হবে কি না, সেই তথ্য তাৎক্ষণিকভাবে পাওয়া যায় না। অ্যাপ্লিকেশনটির কাছে এই তথ্য আগে থেকেই থাকতে হবে অথবা MediaFormat-এর কোডেক-নির্দিষ্ট ডেটা সেকশন পার্স করে এই তথ্য সংগ্রহ করতে সক্ষম হতে হবে।
  • এই ধরনের প্রোফাইল সমর্থন করার জন্য টানেলড ডিকোডার বৈশিষ্ট্যটির প্রয়োজন আছে কিনা, CodecCapabilities.isFormatSupported বিবেচনা করে না।

HDR প্ল্যাটফর্ম সমর্থন সক্রিয় করুন

একটি ডিভাইসে HDR প্ল্যাটফর্ম সমর্থন সক্ষম করার জন্য SoC বিক্রেতা এবং OEM-দের অতিরিক্ত কাজ করতে হবে।

অ্যান্ড্রয়েড ৭.০-তে HDR-এর জন্য প্ল্যাটফর্ম পরিবর্তন

প্ল্যাটফর্মে (অ্যাপ/নেটিভ লেয়ার) কিছু গুরুত্বপূর্ণ পরিবর্তন নিচে দেওয়া হলো, যেগুলো সম্পর্কে OEM এবং SOC-দের অবগত থাকা প্রয়োজন।

প্রদর্শন

হার্ডওয়্যার গঠন

HDR-সক্ষম প্ল্যাটফর্মগুলোকে অবশ্যই HDR কন্টেন্টের সাথে নন-HDR কন্টেন্ট ব্লেন্ড করা সমর্থন করতে হবে। অ্যান্ড্রয়েডের ৭.০ সংস্করণ পর্যন্ত ব্লেন্ডিংয়ের সুনির্দিষ্ট বৈশিষ্ট্য এবং কার্যপ্রণালী সংজ্ঞায়িত করা হয়নি, তবে প্রক্রিয়াটি সাধারণত এই ধাপগুলো অনুসরণ করে:

  1. লেয়ারগুলোর রঙ, মাস্টারিং এবং সম্ভাব্য ডাইনামিক মেটাডেটার উপর ভিত্তি করে, কম্পোজিট করার জন্য সমস্ত লেয়ার ধারণকারী একটি লিনিয়ার কালার স্পেস/ভলিউম নির্ধারণ করুন।
    সরাসরি কোনো ডিসপ্লেতে কম্পোজিট করার ক্ষেত্রে, এটি সেই লিনিয়ার স্পেস হতে পারে যা ডিসপ্লেটির কালার ভলিউমের সাথে মেলে।
  2. সমস্ত লেয়ারকে একই কালার স্পেসে রূপান্তর করুন।
  3. মিশ্রণটি সম্পন্ন করুন।
  4. HDMI-এর মাধ্যমে প্রদর্শন করলে:
    1. মিশ্রিত দৃশ্যের জন্য রঙ, মাস্টারিং এবং সম্ভাব্য ডায়নামিক মেটাডেটা নির্ধারণ করুন।
    2. প্রাপ্ত মিশ্রিত দৃশ্যটিকে উদ্ভূত কালার স্পেস/ভলিউমে রূপান্তর করুন।
  5. যদি সরাসরি ডিসপ্লেতে প্রদর্শন করা হয়, তাহলে সেই দৃশ্যটি তৈরি করার জন্য প্রাপ্ত মিশ্রিত দৃশ্যটিকে প্রয়োজনীয় ডিসপ্লে সিগন্যালে রূপান্তর করুন।

ডিসপ্লে আবিষ্কার

HDR ডিসপ্লে ডিসকভারি শুধুমাত্র HWC2-এর মাধ্যমেই সমর্থিত। এই ফিচারটি কাজ করার জন্য ডিভাইস ইমপ্লিমেন্টারদের অবশ্যই অ্যান্ড্রয়েড ৭.০-এর সাথে প্রকাশিত HWC2 অ্যাডাপ্টারটি বেছে বেছে সক্রিয় করতে হবে। অতএব, প্ল্যাটফর্মগুলোকে অবশ্যই HWC2-এর জন্য সাপোর্ট যোগ করতে হবে অথবা এই তথ্য সরবরাহ করার একটি উপায় তৈরি করতে AOSP ফ্রেমওয়ার্ককে প্রসারিত করতে হবে। HWC2 ফ্রেমওয়ার্ক এবং অ্যাপ্লিকেশনে HDR স্ট্যাটিক ডেটা প্রচার করার জন্য একটি নতুন API উন্মুক্ত করে।

এইচডিএমআই

  • একটি সংযুক্ত HDMI ডিসপ্লে, CTA-861.3- এর ৪.২ ধারায় সংজ্ঞায়িত HDMI EDID-এর মাধ্যমে তার HDR সক্ষমতার প্রচার করে।
  • নিম্নলিখিত EOTF ম্যাপিং ব্যবহার করা হবে:
    • ET_0 প্রথাগত গামা - SDR উজ্জ্বলতার পরিসর: কোনো HDR ধরনের সাথে সংযুক্ত নয়
    • ET_1 প্রথাগত গামা - HDR উজ্জ্বলতার পরিসর: কোনো HDR ধরনের সাথে সংযুক্ত নয়
    • ET_2 SMPTE ST 2084 - HDR10 টাইপে ম্যাপ করা হয়েছে
  • এইচডিএমআই-এর মাধ্যমে ডলবি ভিশন বা এইচএলজি সমর্থনের সংকেত প্রদান তাদের সংশ্লিষ্ট সংস্থাগুলোর সংজ্ঞানুযায়ী করা হয়।
  • উল্লেখ্য যে, HWC2 API ফ্লোট কাঙ্ক্ষিত উজ্জ্বলতার মান ব্যবহার করে, তাই ৮-বিট EDID মানগুলোকে উপযুক্ত পদ্ধতিতে অনুবাদ করতে হবে।

ডিকোডার

প্ল্যাটফর্মগুলোকে অবশ্যই HDR-সক্ষম টানেলড ডিকোডার যুক্ত করতে হবে এবং তাদের HDR সমর্থনের বিজ্ঞাপন দিতে হবে। সাধারণত, HDR-সক্ষম ডিকোডারগুলোর নিম্নলিখিত বৈশিষ্ট্য থাকতে হবে:

  • টানেলড ডিকোডিং সমর্থন করে ( FEATURE_TunneledPlayback )।
  • HDR স্ট্যাটিক মেটাডেটা ( OMX.google.android.index.describeHDRColorInfo ) এবং ডিসপ্লে/হার্ডওয়্যার কম্পোজিশনে এর প্রচার সমর্থন করে। HLG-এর জন্য, উপযুক্ত মেটাডেটা ডিসপ্লেতে জমা দিতে হবে।
  • রঙের বিবরণ ( OMX.google.android.index.describeColorAspects ) এবং ডিসপ্লে/হার্ডওয়্যার গঠনে এর প্রয়োগ সমর্থন করে।
  • প্রাসঙ্গিক মান অনুযায়ী HDR এমবেডেড মেটাডেটা সমর্থন করে।

ডলবি ভিশন ডিকোডার সমর্থন

ডলবি ভিশন সমর্থন করার জন্য, প্ল্যাটফর্মগুলোকে অবশ্যই একটি ডলবি-ভিশন সক্ষম HDR OMX ডিকোডার যুক্ত করতে হবে। ডলবি ভিশনের বিশেষত্বের কারণে, এটি সাধারণত এক বা একাধিক AVC এবং/অথবা HEVC ডিকোডারের পাশাপাশি একটি কম্পোজিটরের চারপাশে থাকা একটি র‍্যাপার ডিকোডার হয়ে থাকে। এই ধরনের ডিকোডারগুলোতে অবশ্যই নিম্নলিখিত বৈশিষ্ট্যগুলো থাকতে হবে:

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

ডিকোডার কনফিগার করার সময়, প্রকৃত ডলবি প্রোফাইলটি কোডেককে জানানো হয় না। ডিকোডার চালু হওয়ার পর শুধুমাত্র কোডেক-নির্দিষ্ট ডেটার মাধ্যমে এটি করা হয়। একটি প্ল্যাটফর্ম একাধিক ডলবি ভিশন ডিকোডার সমর্থন করতে পারে: একটি AVC প্রোফাইলের জন্য এবং অন্যটি HEVC প্রোফাইলের জন্য, যাতে কনফিগার করার সময় অন্তর্নিহিত কোডেকগুলো ইনিশিয়ালাইজ করা যায়। যদি একটিমাত্র ডলবি ভিশন ডিকোডার উভয় ধরনের প্রোফাইল সমর্থন করে, তবে এটিকে অবশ্যই অভিযোজিত পদ্ধতিতে গতিশীলভাবে সেগুলোর মধ্যে স্যুইচ করার সুবিধাও থাকতে হবে।

যদি কোনো প্ল্যাটফর্ম সাধারণ HDR ডিকোডার সমর্থনের পাশাপাশি ডলবি-ভিশন সক্ষম ডিকোডারও প্রদান করে, তবে এটিকে অবশ্যই:

  • একটি ডলবি-ভিশন-সচেতন এক্সট্র্যাক্টর প্রদান করুন, এমনকি যদি এটি HDR প্লেব্যাক সমর্থন না করে।
  • এমন একটি ডিকোডার সরবরাহ করুন যা ডলবি দ্বারা সংজ্ঞায়িত ভিশন প্রোফাইল সমর্থন করে।

HDR10 ডিকোডার সমর্থন

HDR10 সমর্থন করার জন্য, প্ল্যাটফর্মগুলোকে অবশ্যই একটি HDR10-সক্ষম OMX ডিকোডার যোগ করতে হবে। এটি সাধারণত একটি টানেলড HEVC ডিকোডার যা HDMI সম্পর্কিত মেটাডেটা পার্সিং এবং হ্যান্ডলিংও সমর্থন করে। এই ধরনের একটি ডিকোডারকে (সাধারণ HDR ডিকোডার সমর্থনের পাশাপাশি) অবশ্যই:

  • 'video/hevc' মাইম টাইপ সমর্থন করে।
  • HEVCMain10HDR10 সমর্থিত প্রোফাইলের বিজ্ঞাপন দিন। HEVCMain10HRD10 প্রোফাইল সমর্থনের জন্য HEVCMain10 প্রোফাইলকেও সমর্থন করতে হবে, যার জন্য একই স্তরে HEVCMain প্রোফাইলকে সমর্থন করা প্রয়োজন।
  • মাস্টারিং মেটাডেটা SEI ব্লক, সেইসাথে SPS-এ থাকা অন্যান্য HDR সম্পর্কিত তথ্য পার্স করা সমর্থন করে।

ভিপি৯ ডিকোডার সমর্থন

VP9 HDR সমর্থন করার জন্য, প্ল্যাটফর্মগুলোকে অবশ্যই একটি VP9 Profile2-সক্ষম HDR OMX ডিকোডার যোগ করতে হবে। এটি সাধারণত একটি টানেলড VP9 ডিকোডার যা HDMI সম্পর্কিত মেটাডেটা পরিচালনাও সমর্থন করে। এই ধরনের ডিকোডারগুলোকে (সাধারণ HDR ডিকোডার সমর্থনের পাশাপাশি) অবশ্যই নিম্নলিখিত বৈশিষ্ট্যগুলো ধারণ করতে হবে:

  • 'video/x-vnd.on2.vp9' মাইম টাইপ সমর্থন করে।
  • সমর্থিত VP9Profile2HDR-এর বিজ্ঞাপন দিন। VP9Profile2HDR প্রোফাইল সমর্থনের জন্য একই স্তরে VP9Profile2 প্রোফাইলকেও সমর্থন করতে হবে।

নিষ্কাশনকারী

ডলবি ভিশন এক্সট্র্যাক্টর সমর্থন

যে প্ল্যাটফর্মগুলো ডলবি ভিশন ডিকোডার সমর্থন করে, সেগুলোকে ডলবি ভিডিও কন্টেন্টের জন্য ডলবি এক্সট্র্যাক্টর (যার নাম ডলবি এক্সট্র্যাক্টর) সমর্থন যোগ করতে হবে।

  • একটি সাধারণ MP4 এক্সট্র্যাক্টর কোনো ফাইল থেকে শুধু বেস লেয়ারটিই এক্সট্র্যাক্ট করতে পারে, কিন্তু এনহ্যান্সমেন্ট বা মেটাডেটা লেয়ারগুলো পারে না। তাই ফাইল থেকে ডেটা এক্সট্র্যাক্ট করার জন্য একটি বিশেষ ডলবি এক্সট্র্যাক্টরের প্রয়োজন হয়।
  • ডলবি এক্সট্র্যাক্টরকে প্রতিটি ডলবি ভিডিও ট্র্যাকের (গ্রুপের) জন্য ১ থেকে ২ টি ট্র্যাক এক্সপোজ করতে হবে:
    • সম্মিলিত ২/৩-স্তর বিশিষ্ট ডলবি স্ট্রিমের জন্য 'video/dolby-vision' টাইপের একটি ডলবি ভিশন HDR ট্র্যাক। HDR ট্র্যাকটির অ্যাক্সেস-ইউনিট ফরম্যাট, যা বেস/এনহ্যান্সমেন্ট/মেটাডেটা স্তরগুলো থেকে অ্যাক্সেস ইউনিটগুলোকে একটি একক বাফারে প্যাকেজ করে একটি একক HDR ফ্রেমে ডিকোড করার পদ্ধতি নির্ধারণ করে, তা ডলবি দ্বারা সংজ্ঞায়িত করা হবে।
    • যদি কোনো ডলবি ভিশন ভিডিও ট্র্যাকে একটি পৃথক (ব্যাকওয়ার্ড কম্প্যাটিবল) বেস-লেয়ার (BL) থাকে, তবে এক্সট্র্যাক্টরকে অবশ্যই এটিকে একটি পৃথক "video/avc" বা "video/hevc" ট্র্যাক হিসাবেও প্রকাশ করতে হবে। এক্সট্র্যাক্টরকে অবশ্যই এই ট্র্যাকের জন্য নিয়মিত AVC/HEVC অ্যাক্সেস ইউনিট সরবরাহ করতে হবে।
    • বিএল ট্র্যাকটির ট্র্যাক-ইউনিক-আইডি ("ট্র্যাক-আইডি") অবশ্যই এইচডিআর ট্র্যাকের ট্র্যাক-ইউনিক-আইডির মতোই হতে হবে, যাতে অ্যাপটি বুঝতে পারে যে এগুলো একই ভিডিওর দুটি এনকোডিং।
    • অ্যাপ্লিকেশনটি প্ল্যাটফর্মের সক্ষমতার ওপর ভিত্তি করে কোন ট্র্যাকটি বেছে নেবে তা নির্ধারণ করতে পারে।
  • ডলবি ভিশন প্রোফাইল/লেভেলটি অবশ্যই HDR ট্র্যাকের ট্র্যাক ফরম্যাটে এক্সপোজ করতে হবে।
  • যদি কোনো প্ল্যাটফর্ম ডলবি-ভিশন সক্ষম ডিকোডার প্রদান করে, তবে তাকে অবশ্যই একটি ডলবি-ভিশন সচেতন এক্সট্র্যাক্টরও প্রদান করতে হবে, এমনকি যদি সেটি HDR প্লেব্যাক সমর্থন না-ও করে।

HDR10 এবং VP9 HDR এক্সট্র্যাক্টর সাপোর্ট

HDR10 বা VP9 HLG সমর্থন করার জন্য কোনো অতিরিক্ত এক্সট্র্যাক্টরের প্রয়োজন নেই। প্ল্যাটফর্মগুলোকে অবশ্যই MP4-এ VP9 PQ সমর্থন করার জন্য MP4 এক্সট্র্যাক্টরকে প্রসারিত করতে হবে। HDR স্ট্যাটিক মেটাডেটা অবশ্যই VP9 PQ বিটস্ট্রিমে প্রচার করতে হবে, যাতে এই মেটাডেটা সাধারণ MediaExtractor => MediaCodec পাইপলাইনের মাধ্যমে VP9 PQ ডিকোডার এবং ডিসপ্লেতে পাঠানো হয়।

ডলবি ভিশন সমর্থনের জন্য স্টেজফ্রাইট এক্সটেনশন

প্ল্যাটফর্মগুলোকে অবশ্যই স্টেজফ্রাইটে ডলবি ভিশন ফরম্যাট সাপোর্ট যোগ করতে হবে:

  • কম্প্রেসড পোর্টের জন্য পোর্ট ডেফিনিশন কোয়েরির সুবিধা।
  • ডিভি ডিকোডারের জন্য প্রোফাইল/লেভেল গণনার সমর্থন।
  • ডিভি এইচডিআর ট্র্যাকগুলির জন্য ডিভি প্রোফাইল/লেভেল প্রকাশ করার সুবিধা রয়েছে।

প্রযুক্তি-নির্দিষ্ট বাস্তবায়নের বিবরণ

HDR10 ডিকোডার পাইপলাইন

চিত্র ১. HDR10 পাইপলাইন

HDR10 বিটস্ট্রিমগুলো MP4 কন্টেইনারে প্যাকেজ করা থাকে। অ্যাপ্লিকেশনগুলো একটি সাধারণ MP4 এক্সট্র্যাক্টর ব্যবহার করে ফ্রেম ডেটা বের করে ডিকোডারে পাঠায়।

  • MPEG4 এক্সট্র্যাক্টর
    একটি MPEG4Extractor দ্বারা HDR10 বিটস্ট্রিমগুলোকে একটি সাধারণ HEVC স্ট্রিম হিসেবেই শনাক্ত করা হয় এবং "video/HEVC" টাইপের HDR ট্র্যাকটি এক্সট্র্যাক্ট করা হয়। ফ্রেমওয়ার্কটি সেই ট্র্যাকটি ডিকোড করার জন্য Main10HDR10 প্রোফাইল সমর্থন করে এমন একটি HEVC ভিডিও ডিকোডার বেছে নেয়।
  • HEVC ডিকোডার
    HDR তথ্য SEI অথবা SPS ফরম্যাটে থাকে। HEVC ডিকোডার প্রথমে HDR তথ্য ধারণকারী ফ্রেমগুলো গ্রহণ করে। এরপর ডিকোডারটি HDR তথ্য নিষ্কাশন করে এবং অ্যাপ্লিকেশনকে জানিয়ে দেয় যে এটি একটি HDR ভিডিও ডিকোড করছে। HDR তথ্য ডিকোডারের আউটপুট ফরম্যাটের সাথে একত্রিত করা হয়, যা পরবর্তীতে সারফেসে পাঠানো হয়।

বিক্রেতার কার্যকলাপ

  1. সমর্থিত HDR ডিকোডার প্রোফাইল এবং লেভেল OMX টাইপের বিজ্ঞাপন দিন। উদাহরণ:
    OMX_VIDEO_HEVCProfileMain10HDR10 (এবং Main10 )
  2. ' OMX.google.android.index.describeHDRColorInfo ' ইনডেক্সটির জন্য সমর্থন বাস্তবায়ন করুন।
  3. ' OMX.google.android.index.describeColorAspects ' ইনডেক্সের জন্য সমর্থন বাস্তবায়ন করুন।
  4. মাস্টারিং মেটাডেটার SEI পার্সিংয়ের জন্য সমর্থন বাস্তবায়ন করুন।

ডলবি ভিশন ডিকোডার পাইপলাইন

চিত্র ২. ডলবি ভিশন পাইপলাইন

ডলবি-বিটস্ট্রিমগুলো ডলবির সংজ্ঞা অনুযায়ী MP4 কন্টেইনারে প্যাকেজ করা হয়। অ্যাপ্লিকেশনগুলো তাত্ত্বিকভাবে একটি সাধারণ MP4 এক্সট্র্যাক্টর ব্যবহার করে বেস লেয়ার, এনহ্যান্সমেন্ট লেয়ার এবং মেটাডেটা লেয়ার আলাদাভাবে এক্সট্র্যাক্ট করতে পারে; তবে, এটি বর্তমান অ্যান্ড্রয়েড মিডিয়াএক্সট্র্যাক্টর/মিডিয়াকোডেক মডেলের সাথে খাপ খায় না।

  • ডলবি এক্সট্র্যাক্টর:
    • ডলবি-বিটস্ট্রিমগুলো একটি ডলবি এক্সট্র্যাক্টর দ্বারা শনাক্ত করা হয়, যা প্রতিটি ডলবি ভিডিও ট্র্যাকের (গ্রুপের) জন্য বিভিন্ন স্তরকে ১ থেকে ২ টি ট্র্যাক হিসাবে প্রকাশ করে:
      • সম্মিলিত ২/৩-স্তর বিশিষ্ট ডলবি স্ট্রিমের জন্য 'ভিডিও/ডলবি-ভিশন' ধরনের একটি HDR ট্র্যাক। HDR ট্র্যাকটির অ্যাক্সেস-ইউনিট ফরম্যাট, যা বেস/এনহ্যান্সমেন্ট/মেটাডেটা স্তরগুলো থেকে অ্যাক্সেস ইউনিটগুলোকে একটি একক বাফারে প্যাকেজ করে একটি একক HDR ফ্রেমে ডিকোড করার পদ্ধতি নির্ধারণ করে, তা ডলবি দ্বারা সংজ্ঞায়িত করা হবে।
      • (ঐচ্ছিক, শুধুমাত্র যদি বিএল ট্র্যাকটি ব্যাকওয়ার্ড কম্প্যাটিবল হয়) একটি বিএল ট্র্যাকে কেবল বেস লেয়ার থাকে, যা অবশ্যই একটি সাধারণ মিডিয়াকোডেক ডিকোডার, যেমন AVC/HEVC ডিকোডার দ্বারা ডিকোডযোগ্য হতে হবে। এক্সট্র্যাক্টরকে এই ট্র্যাকের জন্য সাধারণ AVC/HEVC অ্যাক্সেস ইউনিট সরবরাহ করতে হবে। এই বিএল ট্র্যাকটির অবশ্যই ডলবি ট্র্যাকের মতো একই ট্র্যাক-ইউনিক-আইডি ("ট্র্যাক-আইডি") থাকতে হবে, যাতে অ্যাপ্লিকেশনটি বুঝতে পারে যে এগুলো একই ভিডিওর দুটি এনকোডিং।
    • অ্যাপ্লিকেশনটি প্ল্যাটফর্মের সক্ষমতার ওপর ভিত্তি করে কোন ট্র্যাকটি বেছে নেবে তা নির্ধারণ করতে পারে।
    • যেহেতু একটি HDR ট্র্যাকের একটি নির্দিষ্ট HDR টাইপ থাকে, তাই ফ্রেমওয়ার্কটি সেই ট্র্যাকটি ডিকোড করার জন্য একটি ডলবি ভিডিও ডিকোডার বেছে নেবে। BL ট্র্যাকটি একটি সাধারণ AVC/HEVC ভিডিও ডিকোডার দ্বারা ডিকোড করা হবে।
  • ডলবিডিকোডার:
    • ডলবি ডিকোডার এমন অ্যাক্সেস ইউনিট গ্রহণ করে, যেগুলোতে সমস্ত লেয়ারের জন্য প্রয়োজনীয় অ্যাক্সেস ইউনিট (EL+BL+MD অথবা BL+MD) থাকে।
    • প্রতিটি লেয়ারের জন্য CSD (কোডেক-নির্দিষ্ট ডেটা, যেমন SPS+PPS+VPS) তথ্য একটি CSD ফ্রেমে প্যাকেজ করা যেতে পারে, যা ডলবি দ্বারা সংজ্ঞায়িত হবে। একটিমাত্র CSD ফ্রেম থাকা আবশ্যক।

ডলবি অ্যাকশন

  1. অ্যাবস্ট্রাক্ট ডলবি ডিকোডারের (অর্থাৎ, HDR ডিকোডার দ্বারা প্রত্যাশিত বাফার ফরম্যাট) জন্য বিভিন্ন ডলবি কন্টেইনার স্কিমের (যেমন BL+EL+MD) অ্যাক্সেস ইউনিটের প্যাকেজিং সংজ্ঞায়িত করুন।
  2. অ্যাবস্ট্রাক্ট ডলবি ডিকোডারের জন্য CSD-এর প্যাকেজিং সংজ্ঞায়িত করুন।

বিক্রেতার কার্যকলাপ

  1. ডলবি এক্সট্র্যাক্টর প্রয়োগ করুন। এটি ডলবি দ্বারাও করা যেতে পারে।
  2. ফ্রেমওয়ার্কের সাথে DolbyExtractor একীভূত করুন। এর এন্ট্রি পয়েন্ট হলো frameworks/av/media/libstagefright/MediaExtractor.cpp
  3. HDR ডিকোডার প্রোফাইল এবং লেভেল OMX টাইপ ঘোষণা করুন। উদাহরণ: OMX_VIDEO_DOLBYPROFILETYPE এবং OMX_VIDEO_DOLBYLEVELTYP
  4. 'OMX.google.android.index.describeColorAspects ' ইনডেক্সের জন্য সমর্থন বাস্তবায়ন করুন।
  5. ডাইনামিক HDR মেটাডেটা অ্যাপে প্রেরণ করুন এবং প্রতিটি ফ্রেমে প্রদর্শন করুন। সাধারণত, ডলবির সংজ্ঞা অনুযায়ী এই তথ্যটি ডিকোড করা ফ্রেমের মধ্যে অন্তর্ভুক্ত করতে হয়, কারণ HDMI স্ট্যান্ডার্ড এটি ডিসপ্লেতে পাঠানোর কোনো উপায় দেয় না।

ভিপি৯ ডিকোডার পাইপলাইন

চিত্র ৩. ভিপি৯-পিকিউ পাইপলাইন

VP9 বিটস্ট্রিমগুলো WebM টিমের নির্ধারিত পদ্ধতিতে WebM কন্টেইনারে প্যাকেজ করা হয়। ডিকোডারে ফ্রেম পাঠানোর আগে, অ্যাপ্লিকেশনগুলোকে বিটস্ট্রিম থেকে HDR মেটাডেটা বের করার জন্য একটি WebM এক্সট্র্যাক্টর ব্যবহার করতে হয়।

  • WebM এক্সট্র্যাক্টর:
  • ভিপি৯ ডিকোডার:
    • ডিকোডার প্রোফাইল২ বিটস্ট্রিমগুলো গ্রহণ করে এবং সেগুলোকে সাধারণ ভিপি৯ স্ট্রিম হিসেবে ডিকোড করে।
    • ডিকোডার ফ্রেমওয়ার্ক থেকে যেকোনো HDR স্ট্যাটিক মেটাডেটা গ্রহণ করে।
    • ডিকোডার VP9 PQ স্ট্রিমগুলির জন্য বিটস্ট্রিম অ্যাক্সেস ইউনিটের মাধ্যমে স্ট্যাটিক মেটাডেটা গ্রহণ করে।
    • VP9 ডিকোডারকে অবশ্যই HDR স্ট্যাটিক/ডাইনামিক মেটাডেটা ডিসপ্লেতে প্রেরণ করতে সক্ষম হতে হবে।

বিক্রেতার কার্যকলাপ

  1. ইনডেক্স: OMX.google.android.index.describeHDRColorInfo এর জন্য সমর্থন বাস্তবায়ন করুন।
  2. index: OMX.google.android.index.describeColorAspects এর জন্য সমর্থন বাস্তবায়ন করুন।
  3. HDR স্ট্যাটিক মেটাডেটা প্রচার করুন