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

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

Android 10-এ নিম্নলিখিত HDR ভিডিও কাজ করে।

  • HDR10
  • VP9
  • HDR10+

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

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

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

কাজ করে এমন HDR প্রযুক্তি

Android 7.0 এবং তার পরবর্তী ভার্সনে নিম্নলিখিত HDR প্রযুক্তি কাজ করে।

প্রযুক্তি Dolby-Vision HDR10 VP9-HLG VP9-PQ
কোডেক AVC/HEVC HEVC VP9 VP9
ট্রান্সফার ফাংশন ST-2084 ST-2084 HLG ST-2084
HDR মেটাডেটার ধরন ডায়নামিক স্থির কোনওটিই নয় স্থির

Android 7.0-এ, শুধুমাত্র টানেল মোডের মাধ্যমে HDR প্লেব্যাককে ডিফাইন করা হয়, কিন্তু ডিভাইসগুলি অপেক ভিডিও বাফার ব্যবহার করে SurfaceViews-এ HDR প্লেব্যাকের জন্য সহায়তা যোগ করতে পারে। অন্যভাবে বলতে গেলে:

  • নন-টানেলড ডিকোডার ব্যবহার করে HDR প্লেব্যাক কাজ করে কিনা তা চেক করার জন্য কোনও স্ট্যান্ডার্ড Android API নেই।
  • টানেল করা ভিডিও ডিকোডার যা HDR প্লেব্যাক ক্ষমতা বিজ্ঞাপন করে, সেটি HDR-সক্ষম ডিসপ্লের সাথে কানেক্ট করা থাকলে অবশ্যই HDR প্লেব্যাক সমর্থন করতে হবে।
  • AOSP Android 7.0 রিলিজ HDR কন্টেন্টের GL কম্পোজিশন সাপোর্ট করে না।

Discovery

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
    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/m2-এ কাঙ্ক্ষিত কন্টেন্টের সর্বাধিক ফ্রেম-গড় লুমিন্যান্স ডেটা ফেরত দেয়।
  • float getDesiredMaxLuminance()
    এই ডিসপ্লের জন্য cd/cd/m2-এ কাঙ্ক্ষিত কন্টেন্টের সর্বাধিক লুমিন্যান্স ডেটা রিটার্ন করে।
  • float getDesiredMinLuminance()
    এই ডিসপ্লের জন্য cd/cd/m2-এ কাঙ্ক্ষিত কন্টেন্টের ন্যূনতম লুমিন্যান্স ডেটা রিটার্ন করে।
  • int[] getSupportedHdrTypes()
    এই ডিসপ্লের জন্য কাজ করে এমন HDR-এর ধরন দেখায় (ধ্রুবক দেখুন)। ডিসপ্লেতে HDR কাজ না করলে খালি অ্যারে রিটার্ন করে।

ডিকোডার

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

Dolby-Vision

MediaFormat মিম কনস্ট্যান্ট:

String MIMETYPE_VIDEO_DOLBY_VISION

MediaCodecInfo.CodecProfileLevel প্রোফাইল কনস্ট্যান্ট:

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

Dolby Vision ভিডিও লেয়ার ও মেটাডেটা ভিডিও অ্যাপ্লিকেশনের মাধ্যমে ফ্রেম প্রতি একটি বাফারে কনক্যাটিনেট করতে হবে। Dolby-Vision-এর উপযুক্ত MediaExtractor এটি অটোমেটিক করে।

HEVC HDR 10

MediaCodecInfo.CodecProfileLevel প্রোফাইল কনস্ট্যান্ট:

int HEVCProfileMain10HDR10
int HEVCProfileMain10HDR10Plus

VP9 HLG ও PQ

MediaCodecInfo.CodecProfileLevelটি প্রোফাইল constants:

int VP9Profile2HDR
int VP9Profile2HDR10Plus
int VP9Profile3HDR
int VP9Profile3HDR10Plus

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

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

এক্সট্র্যাক্টর

Android 7.0-এ বিভিন্ন HDR টেকনোলজির জন্য নিম্নলিখিত কন্টেনার কাজ করে:

প্রযুক্তি Dolby-Vision HDR10 VP9-HLG VP9-PQ
কন্টেনার MP4 MP4 WebM WebM

কোনও ট্র্যাকের (ফাইলের) জন্য HDR সাপোর্ট প্রয়োজন কিনা তা ডিসকভার করার সুবিধা প্ল্যাটফর্মে উপলভ্য নেই। কোনও ট্র্যাকের জন্য নির্দিষ্ট HDR প্রোফাইল প্রয়োজন কিনা তা নির্ধারণ করতে অ্যাপ্লিকেশন কোডেক-নির্দিষ্ট ডেটা পার্স করতে পারে।

সারাংশ

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

প্রযুক্তি Dolby-Vision HDR10 VP9-HLG VP9-PQ
HDR-এর যে ধরন কাজ করে (ডিসপ্লে) HDR_TYPE_DOLBY_VISION HDR_TYPE_HDR10 HDR_TYPE_HLG HDR_TYPE_HDR10
কন্টেনার (এক্সট্র্যাক্টর) MP4 MP4 WebM WebM
ডিকোডার MIMETYPE_VIDEO_DOLBY_VISION MIMETYPE_VIDEO_HEVC MIMETYPE_VIDEO_VP9 MIMETYPE_VIDEO_VP9
প্রোফাইল (ডিকোডার) Dolby প্রোফাইলের মধ্যে একটি HEVCProfileMain10HDR10 VP9Profile2HDR বা VP9Profile3HDR VP9Profile2HDR অথবা VP9Profile3HDR

মনে রাখবেন:

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

প্লেব্যাক

কোনও অ্যাপ্লিকেশন HDR প্লেব্যাকের জন্য কাজ করে বলে যাচাই করা হয়ে গেলে, সেটি HDR কন্টেন্টকে প্রায় একই পদ্ধতিতে প্লেব্যাক করতে পারে, যেভাবে সেটি নন-HDR কন্টেন্টকে প্লেব্যাক করে, তবে নিম্নলিখিত শর্তাবলী প্রযোজ্য:

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

HDR প্ল্যাটফর্ম সহায়তা চালু করা

কোনও ডিভাইসে HDR প্ল্যাটফর্ম সাপোর্ট চালু করতে SoC ভেন্ডর ও OEM-কে অতিরিক্ত কাজ করতে হবে।

HDR-এর জন্য Android 7.0-তে প্ল্যাটফর্ম পরিবর্তন

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

ডিসপ্লে

হার্ডওয়্যার কম্পোজিশন

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

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

ডিসপ্লে ডিসকভারি

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

HDMI

  • কানেক্ট করা HDMI ডিসপ্লে HDMI EDID-এর মাধ্যমে এর HDR ক্ষমতা বিজ্ঞাপন দেয়, যা CTA-861.3 বিভাগের 4.2-এ সংজ্ঞায়িত করা হয়েছে।
  • নিম্নলিখিত EOTF ম্যাপিং ব্যবহার করতে হবে:
    • ET_0 Traditional gamma - SDR Luminance Range: not mapped to any HDR type
    • ET_1 প্রথাগত গামা - HDR লুমিন্যান্স রেঞ্জ: কোনও HDR টাইপের সাথে ম্যাপ করা নেই
    • ET_2 SMPTE ST 2084 - HDR10 ধরনের HDR-এর সাথে ম্যাপ করা
  • HDMI-এর মাধ্যমে Dolby Vision বা HLG-এর সিগন্যাল সংক্রান্ত সহায়তা, সংশ্লিষ্ট সংস্থার সংজ্ঞা অনুযায়ী করা হয়।
  • মনে রাখবেন যে HWC2 API ফ্লোট কাঙ্ক্ষিত লুমিন্যান্স ভ্যালু ব্যবহার করে, তাই ৮-বিট EDID ভ্যালু অবশ্যই উপযুক্ত পদ্ধতিতে অনুবাদ করতে হবে।

ডিকোডার

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

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

Dolby Vision ডিকোডার সাপোর্ট

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

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

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

কোনও প্ল্যাটফর্ম যদি সাধারণ HDR ডিকোডার সাপোর্ট ছাড়াও Dolby Vision-এর উপযুক্ত ডিকোডার প্রদান করে, তাহলে সেটিকে অবশ্যই:

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

HDR10 ডিকোডার সাপোর্ট

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

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

VP9 ডিকোডার সাপোর্ট

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

  • "video/x-vnd.on2.vp9" mime টাইপ কাজ করে।
  • Advertise supported VP9Profile2HDR. VP9Profile2HDR প্রোফাইল কাজ করার জন্য একই লেভেলে VP9Profile2 প্রোফাইলও কাজ করতে হবে।

এক্সট্র্যাক্টর

Dolby Vision এক্সট্র্যাক্টর সংক্রান্ত সহায়তা

Dolby Vision ডিকোডার কাজ করে এমন প্ল্যাটফর্মে Dolby ভিডিও কন্টেন্টের জন্য Dolby এক্সট্র্যাক্টর (Dolby Extractor নামে পরিচিত) যোগ করতে হবে।

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

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

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

Dolby Vision-এর জন্য Stagefright এক্সটেনশন

প্ল্যাটফর্মকে Stagefright-এ Dolby Vision ফর্ম্যাট সাপোর্ট যোগ করতে হবে:

  • কম্প্রেস করা পোর্টের জন্য পোর্ট সংজ্ঞা কোয়েরি কাজ করে।
  • DV ডিকোডারের জন্য প্রোফাইল/লেভেল এনুমেরেশন কাজ করে।
  • DV HDR ট্র্যাকের জন্য DV প্রোফাইল/লেভেল এক্সপোজ করার সুবিধা।

টেকনোলজি-নির্দিষ্ট প্রয়োগ সংক্রান্ত বিবরণ

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

ছবি ১. HDR10 পাইপলাইন

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

  • MPEG4 এক্সট্র্যাক্টর
    HDR10 বিটস্ট্রিমকে MPEG4Extractor শুধুমাত্র একটি সাধারণ 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 পার্সিংয়ের জন্য সহায়তা প্রয়োগ করুন।

Dolby Vision ডিকোডার পাইপলাইন

ছবি ২. Dolby Vision পাইপলাইন

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

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

Dolby অ্যাকশন

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

ভেন্ডর অ্যাকশন

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

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

ছবি ৩. VP9-PQ পাইপলাইন

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

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

ভেন্ডর অ্যাকশন

  1. ইনডেক্সের জন্য সহায়তা প্রয়োগ করুন: OMX.google.android.index.describeHDRColorInfo
  2. ইনডেক্সের জন্য সহায়তা প্রয়োগ করুন: OMX.google.android.index.describeColorAspects
  3. HDR স্ট্যাটিক মেটাডেটা প্রোপাগেট করুন