হাই ডাইনামিক রেঞ্জ (HDR) ভিডিও হল উচ্চ মানের ভিডিও ডিকোডিং এর পরবর্তী সীমানা, যা অতুলনীয় দৃশ্য প্রজনন গুণাবলী নিয়ে আসে। এটি লুমিন্যান্স উপাদানের গতিশীল পরিসর উল্লেখযোগ্যভাবে বৃদ্ধি করে (বর্তমান 100 cd/m 2 থেকে cd/m 2 এর 1000s পর্যন্ত) এবং আরও বিস্তৃত রঙের স্থান (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 ডেটা মিডিয়াকোডেকে পাস করা উচিত এবং HDR ডিকোডারগুলিতে সরবরাহ করা উচিত তা উল্লেখ করা।
এই নথির উদ্দেশ্য হল অ্যাপ্লিকেশন ডেভেলপারদের HDR স্ট্রিম প্লেব্যাক সমর্থন করতে এবং OEM এবং SOC-কে HDR বৈশিষ্ট্যগুলি সক্ষম করতে সহায়তা করা৷
সমর্থিত HDR প্রযুক্তি
অ্যান্ড্রয়েড 7.0 এবং উচ্চতর হিসাবে, নিম্নলিখিত HDR প্রযুক্তিগুলি সমর্থিত।
প্রযুক্তি | ডলবি-ভিশন | HDR10 | VP9-HLG | VP9-PQ |
---|---|---|---|---|
কোডেক | AVC/HEVC | HEVC | VP9 | VP9 |
স্থানান্তর ফাংশন | ST-2084 | ST-2084 | এইচএলজি | ST-2084 |
HDR মেটাডেটা টাইপ | গতিশীল | স্থির | কোনোটিই নয় | স্থির |
Android 7.0-এ, শুধুমাত্র টানেল মোডের মাধ্যমে HDR প্লেব্যাক সংজ্ঞায়িত করা হয়েছে , তবে ডিভাইসগুলি অস্বচ্ছ ভিডিও বাফার ব্যবহার করে SurfaceViews-এ HDR-এর প্লেব্যাকের জন্য সমর্থন যোগ করতে পারে। অন্য কথায়:
- নন-টানেল ডিকোডার ব্যবহার করে HDR প্লেব্যাক সমর্থিত কিনা তা পরীক্ষা করার জন্য কোনও স্ট্যান্ডার্ড Android API নেই।
- টানেল করা ভিডিও ডিকোডার যা HDR প্লেব্যাক ক্ষমতার বিজ্ঞাপন দেয় HDR-সক্ষম ডিসপ্লেতে সংযুক্ত হলে HDR প্লেব্যাককে সমর্থন করতে হবে।
- HDR সামগ্রীর GL রচনা AOSP Android 7.0 রিলিজ দ্বারা সমর্থিত নয়৷
আবিষ্কার
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 2 -এ পছন্দসই কন্টেন্ট সর্বোচ্চ ফ্রেম-গড় লুমিন্যান্স ডেটা প্রদান করে। -
float getDesiredMaxLuminance()
এই ডিসপ্লের জন্য cd/cd/m 2 -এ কাঙ্খিত বিষয়বস্তুর সর্বোচ্চ লুমিনেন্স ডেটা ফেরত দেয়। -
float getDesiredMinLuminance()
এই ডিসপ্লের জন্য cd/cd/m 2 -এ কাঙ্ক্ষিত কন্টেন্ট মিন লুমিনেন্স ডেটা ফেরত দেয়। -
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
ডলবি ভিশন ভিডিও লেয়ার এবং মেটাডেটা অবশ্যই ভিডিও অ্যাপ্লিকেশন দ্বারা প্রতি ফ্রেমে একটি একক বাফারে সংযুক্ত করা উচিত। এটি Dolby-Vision সক্ষম MediaExtractor দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হয়।
HEVC HDR 10
MediaCodecInfo.CodecProfileLevel
প্রোফাইল ধ্রুবক:
int HEVCProfileMain10HDR10 int HEVCProfileMain10HDR10Plus
VP9 HLG এবং PQ
MediaCodecInfo.CodecProfileLevel
প্রোফাইল ধ্রুবক:
int VP9Profile2HDR int VP9Profile2HDR10Plus int VP9Profile3HDR int VP9Profile3HDR10Plus
যদি একটি প্ল্যাটফর্ম একটি HDR-সক্ষম ডিকোডার সমর্থন করে, তাহলে এটি একটি HDR-সক্ষম এক্সট্র্যাক্টরকেও সমর্থন করবে।
শুধুমাত্র টানেল ডিকোডার HDR কন্টেন্ট প্লে ব্যাক করার গ্যারান্টিযুক্ত। নন-টানেল ডিকোডার দ্বারা প্লেব্যাকের ফলে HDR তথ্য হারিয়ে যেতে পারে এবং বিষয়বস্তু একটি SDR রঙের ভলিউমে চ্যাপ্টা হয়ে যেতে পারে।
এক্সট্র্যাক্টর
নিম্নলিখিত ধারকগুলি Android 7.0-এ বিভিন্ন HDR প্রযুক্তির জন্য সমর্থিত:
প্রযুক্তি | ডলবি-ভিশন | HDR10 | VP9-HLG | VP9-PQ |
---|---|---|---|---|
ধারক | MP4 | MP4 | ওয়েবএম | ওয়েবএম |
একটি ট্র্যাকের (একটি ফাইলের) HDR সমর্থন প্রয়োজন কিনা তা আবিষ্কার করা প্ল্যাটফর্ম দ্বারা সমর্থিত নয়৷ একটি ট্র্যাকের জন্য একটি নির্দিষ্ট HDR প্রোফাইল প্রয়োজন কিনা তা নির্ধারণ করতে অ্যাপ্লিকেশনগুলি কোডেক-নির্দিষ্ট ডেটা পার্স করতে পারে।
সারাংশ
প্রতিটি HDR প্রযুক্তির জন্য উপাদান প্রয়োজনীয়তা নিম্নলিখিত টেবিলে দেখানো হয়েছে:
প্রযুক্তি | ডলবি-ভিশন | HDR10 | VP9-HLG | VP9-PQ |
---|---|---|---|---|
সমর্থিত HDR প্রকার (ডিসপ্লে) | HDR_TYPE_DOLBY_VISION | HDR_TYPE_HDR10 | HDR_TYPE_HLG | HDR_TYPE_HDR10 |
ধারক (এক্সট্র্যাক্টর) | MP4 | MP4 | ওয়েবএম | ওয়েবএম |
ডিকোডার | MIMETYPE_VIDEO_DOLBY_VISION | MIMETYPE_VIDEO_HEVC | MIMETYPE_VIDEO_VP9 | MIMETYPE_VIDEO_VP9 |
প্রোফাইল (ডিকোডার) | ডলবি প্রোফাইলগুলির মধ্যে একটি | HEVCprofileMain10HDR10 | VP9Profile2HDR বা VP9Profile3HDR | VP9Profile2HDR বা VP9Profile3HDR |
নোট:
- ডলবি-ভিশন বিটস্ট্রিমগুলি ডলবি দ্বারা সংজ্ঞায়িত উপায়ে একটি MP4 পাত্রে প্যাকেজ করা হয়। অ্যাপ্লিকেশনগুলি তাদের নিজস্ব ডলবি-সক্ষম এক্সট্র্যাক্টরগুলি প্রয়োগ করতে পারে যতক্ষণ না তারা ডলবি দ্বারা সংজ্ঞায়িত ডিকোডারের জন্য সংশ্লিষ্ট স্তরগুলি থেকে অ্যাক্সেস ইউনিটগুলিকে একটি একক অ্যাক্সেস ইউনিটে প্যাকেজ করে।
- একটি প্ল্যাটফর্ম একটি HDR-সক্ষম এক্সট্র্যাক্টরকে সমর্থন করতে পারে, কিন্তু কোন সংশ্লিষ্ট HDR-সক্ষম ডিকোডার নেই।
প্লেব্যাক
একটি অ্যাপ্লিকেশন এইচডিআর প্লেব্যাকের জন্য সমর্থন যাচাই করার পরে, এটি এইচডিআর বিষয়বস্তু প্রায় একইভাবে প্লেব্যাক করতে পারে যেভাবে এটি নন-এইচডিআর সামগ্রী প্লেব্যাক করে, নিম্নলিখিত সতর্কতা সহ:
- ডলবি-ভিশনের জন্য, একটি নির্দিষ্ট মিডিয়া ফাইল/ট্র্যাকের জন্য একটি HDR সক্ষম ডিকোডার প্রয়োজন কিনা তা অবিলম্বে উপলব্ধ নয়। অ্যাপ্লিকেশনটিতে অবশ্যই এই তথ্যটি আগে থেকেই থাকতে হবে বা মিডিয়াফরম্যাটের কোডেক-নির্দিষ্ট ডেটা বিভাগটি পার্স করে এই তথ্যটি পেতে সক্ষম হবে।
-
CodecCapabilities.isFormatSupported
এই ধরনের প্রোফাইল সমর্থন করার জন্য টানেল ডিকোডার বৈশিষ্ট্য প্রয়োজন কিনা তা বিবেচনা করে না।
HDR প্ল্যাটফর্ম সমর্থন সক্ষম করুন
একটি ডিভাইসের জন্য HDR প্ল্যাটফর্ম সমর্থন সক্ষম করতে SoC বিক্রেতা এবং OEMকে অতিরিক্ত কাজ করতে হবে।
HDR-এর জন্য Android 7.0-এ প্ল্যাটফর্ম পরিবর্তন
এখানে প্ল্যাটফর্মে (অ্যাপ/নেটিভ লেয়ার) কিছু মূল পরিবর্তন রয়েছে যা OEM এবং SOC-দের সচেতন হওয়া দরকার।
প্রদর্শন
হার্ডওয়্যার রচনা
এইচডিআর-সক্ষম প্ল্যাটফর্মগুলিকে অবশ্যই নন-এইচডিআর সামগ্রীর সাথে এইচডিআর সামগ্রীর মিশ্রণ সমর্থন করতে হবে। রিলিজ 7.0 হিসাবে সঠিক মিশ্রণের বৈশিষ্ট্য এবং ক্রিয়াকলাপগুলি অ্যান্ড্রয়েড দ্বারা সংজ্ঞায়িত করা হয়নি, তবে প্রক্রিয়াটি সাধারণত এই পদক্ষেপগুলি অনুসরণ করে:
- একটি রৈখিক রঙের স্থান/ভলিউম নির্ধারণ করুন যাতে স্তরগুলির রঙ, মাস্টারিং এবং সম্ভাব্য গতিশীল মেটাডেটার উপর ভিত্তি করে সংমিশ্রিত করা সমস্ত স্তর রয়েছে৷
যদি সরাসরি একটি ডিসপ্লেতে কম্পোজিটিং করা হয়, তাহলে এটি রৈখিক স্থান হতে পারে যা ডিসপ্লের রঙের ভলিউমের সাথে মেলে। - সমস্ত স্তরকে সাধারণ রঙের জায়গায় রূপান্তর করুন।
- মিশ্রণ সঞ্চালন.
- HDMI এর মাধ্যমে প্রদর্শিত হলে:
- মিশ্রিত দৃশ্যের জন্য রঙ, মাস্টারিং এবং সম্ভাব্য গতিশীল মেটাডেটা নির্ধারণ করুন।
- ফলস্বরূপ মিশ্রিত দৃশ্যটিকে প্রাপ্ত রঙের স্থান/ভলিউমে রূপান্তর করুন।
- যদি সরাসরি ডিসপ্লেতে প্রদর্শন করা হয়, সেই দৃশ্যটি তৈরি করতে ফলাফল মিশ্রিত দৃশ্যটিকে প্রয়োজনীয় ডিসপ্লে সিগন্যালে রূপান্তর করুন।
ডিসপ্লে আবিষ্কার
HDR ডিসপ্লে আবিষ্কার শুধুমাত্র HWC2 এর মাধ্যমে সমর্থিত। এই বৈশিষ্ট্যটি কাজ করার জন্য ডিভাইস বাস্তবায়নকারীদের অবশ্যই বেছে বেছে HWC2 অ্যাডাপ্টার সক্ষম করতে হবে যা Android 7.0 এর সাথে প্রকাশিত হয়। অতএব, প্ল্যাটফর্মগুলিকে অবশ্যই HWC2 এর জন্য সমর্থন যোগ করতে হবে বা এই তথ্য প্রদানের একটি উপায়ের জন্য AOSP ফ্রেমওয়ার্ক প্রসারিত করতে হবে। HWC2 ফ্রেমওয়ার্ক এবং অ্যাপ্লিকেশনে HDR স্ট্যাটিক ডেটা প্রচার করার জন্য একটি নতুন API প্রকাশ করে।
HDMI
- একটি সংযুক্ত HDMI ডিসপ্লে CTA-861.3 বিভাগ 4.2-এ সংজ্ঞায়িত HDMI EDID-এর মাধ্যমে তার HDR ক্ষমতার বিজ্ঞাপন দেয়।
- নিম্নলিখিত EOTF ম্যাপিং ব্যবহার করা হবে:
- ET_0 ঐতিহ্যবাহী গামা - SDR লুমিন্যান্স রেঞ্জ: কোনো HDR প্রকারে ম্যাপ করা হয়নি
- ET_1 ঐতিহ্যবাহী গামা - HDR লুমিন্যান্স রেঞ্জ: কোনো HDR প্রকারে ম্যাপ করা হয়নি
- ET_2 SMPTE ST 2084 - HDR প্রকার HDR10-এ ম্যাপ করা হয়েছে
- HDMI এর উপর ডলবি ভিশন বা HLG সমর্থনের সংকেত তাদের প্রাসঙ্গিক সংস্থা দ্বারা সংজ্ঞায়িত করা হয়।
- মনে রাখবেন যে HWC2 API ফ্লোট পছন্দসই লুমিন্যান্স মান ব্যবহার করে, তাই 8-বিট EDID মানগুলি অবশ্যই উপযুক্ত ফ্যাশনে অনুবাদ করা উচিত।
ডিকোডার
প্ল্যাটফর্মগুলিকে অবশ্যই HDR-সক্ষম টানেল ডিকোডার যুক্ত করতে হবে এবং তাদের HDR সমর্থনের বিজ্ঞাপন দিতে হবে৷ সাধারণত, HDR-সক্ষম ডিকোডার অবশ্যই:
- টানেল ডিকোডিং (
FEATURE_TunneledPlayback
) সমর্থন করে। - HDR স্ট্যাটিক মেটাডেটা (
OMX.google.android.index.describeHDRColorInfo
) এবং ডিসপ্লে/হার্ডওয়্যার কম্পোজিশনে এর প্রচার সমর্থন করে। HLG-এর জন্য, উপযুক্ত মেটাডেটা অবশ্যই প্রদর্শনে জমা দিতে হবে। - সমর্থন রঙের বিবরণ (
OMX.google.android.index.describeColorAspects
) এবং প্রদর্শন/হার্ডওয়্যার রচনায় এর প্রচার। - প্রাসঙ্গিক মান দ্বারা সংজ্ঞায়িত HDR এমবেডেড মেটাডেটা সমর্থন করুন।
ডলবি ভিশন ডিকোডার সমর্থন
ডলবি ভিশন সমর্থন করতে, প্ল্যাটফর্মগুলিকে অবশ্যই একটি ডলবি-ভিশন সক্ষম HDR OMX ডিকোডার যুক্ত করতে হবে৷ ডলবি ভিশনের সুনির্দিষ্ট বৈশিষ্ট্যের ভিত্তিতে, এটি সাধারণত এক বা একাধিক AVC এবং/অথবা HEVC ডিকোডারের পাশাপাশি একটি কম্পোজিটরের চারপাশে একটি মোড়ক ডিকোডার। এই ধরনের ডিকোডার অবশ্যই:
- সমর্থন মাইম টাইপ "ভিডিও/ডলবি-ভিশন।"
- সমর্থিত ডলবি ভিশন প্রোফাইল/লেভেলের বিজ্ঞাপন দিন।
- ডলবি দ্বারা সংজ্ঞায়িত সমস্ত স্তরের সাব-অ্যাক্সেস-ইউনিট রয়েছে এমন অ্যাক্সেস ইউনিটগুলি গ্রহণ করুন৷
- ডলবি দ্বারা সংজ্ঞায়িত কোডেক-নির্দিষ্ট ডেটা গ্রহণ করুন। উদাহরণস্বরূপ, ডলবি ভিশন প্রোফাইল/লেভেল এবং অভ্যন্তরীণ ডিকোডারগুলির জন্য সম্ভবত কোডেক-নির্দিষ্ট ডেটা ধারণকারী ডেটা।
- ডলবি দ্বারা প্রয়োজনীয় ডলবি ভিশন প্রোফাইল/স্তরের মধ্যে অভিযোজিত স্যুইচিং সমর্থন করুন।
ডিকোডার কনফিগার করার সময়, প্রকৃত ডলবি প্রোফাইল কোডেকের সাথে যোগাযোগ করা হয় না। ডিকোডার শুরু হওয়ার পরে এটি শুধুমাত্র কোডেক-নির্দিষ্ট ডেটার মাধ্যমে করা হয়। একটি প্ল্যাটফর্ম একাধিক ডলবি ভিশন ডিকোডারকে সমর্থন করতে বেছে নিতে পারে: একটি AVC প্রোফাইলের জন্য, এবং অন্যটি HEVC প্রোফাইলগুলির জন্য কনফিগার করার সময় অন্তর্নিহিত কোডেকগুলি শুরু করতে সক্ষম হতে পারে৷ যদি একটি একক ডলবি ভিশন ডিকোডার উভয় ধরণের প্রোফাইল সমর্থন করে, তবে এটি অবশ্যই একটি অভিযোজিত ফ্যাশনে গতিশীলভাবে তাদের মধ্যে স্যুইচিং সমর্থন করবে।
যদি একটি প্ল্যাটফর্ম সাধারণ HDR ডিকোডার সমর্থন ছাড়াও একটি ডলবি-ভিশন সক্ষম ডিকোডার প্রদান করে, তাহলে এটি অবশ্যই:
- একটি ডলবি-ভিশন সচেতন এক্সট্র্যাক্টর প্রদান করুন, এমনকি এটি HDR প্লেব্যাক সমর্থন না করলেও।
- ডলবি দ্বারা সংজ্ঞায়িত ভিশন প্রোফাইল সমর্থন করে এমন একটি ডিকোডার প্রদান করুন৷
HDR10 ডিকোডার সমর্থন
HDR10 সমর্থন করতে, প্ল্যাটফর্মগুলিকে অবশ্যই একটি HDR10-সক্ষম OMX ডিকোডার যোগ করতে হবে। এটি সাধারণত একটি টানেলযুক্ত HEVC ডিকোডার যা HDMI সম্পর্কিত মেটাডেটা পার্সিং এবং পরিচালনা করতেও সমর্থন করে। এই ধরনের একটি ডিকোডার (সাধারণ HDR ডিকোডার সমর্থন ছাড়াও) অবশ্যই:
- সমর্থন মাইম টাইপ "ভিডিও/হেভিসি।"
- সমর্থিত HEVCMain10HDR10 বিজ্ঞাপন দিন। HEVCMain10HRD10 প্রোফাইল সমর্থনের জন্য HEVCMain10 প্রোফাইল সমর্থন করা প্রয়োজন, যার জন্য একই স্তরে HEVCMain প্রোফাইল সমর্থন করা প্রয়োজন।
- মাস্টারিং মেটাডেটা SEI ব্লক পার্সিং সমর্থন করে, সেইসাথে SPS-এ থাকা অন্যান্য HDR সম্পর্কিত তথ্য।
VP9 ডিকোডার সমর্থন
VP9 HDR সমর্থন করতে, প্ল্যাটফর্মগুলিকে অবশ্যই একটি VP9 প্রোফাইল2-সক্ষম HDR OMX ডিকোডার যোগ করতে হবে। এটি সাধারণত একটি টানেল করা VP9 ডিকোডার যা HDMI সম্পর্কিত মেটাডেটা পরিচালনা করতেও সমর্থন করে। এই ধরনের ডিকোডারগুলি (সাধারণ HDR ডিকোডার সমর্থন ছাড়াও) অবশ্যই:
- সমর্থন মাইম টাইপ "video/x-vnd.on2.vp9।"
- সমর্থিত VP9Profile2HDR বিজ্ঞাপন দিন। VP9Profile2HDR প্রোফাইল সমর্থনের জন্য একই স্তরে VP9Profile2 প্রোফাইল সমর্থন করা প্রয়োজন।
এক্সট্রাক্টর
ডলবি ভিশন এক্সট্র্যাক্টর সমর্থন
ডলবি ভিশন ডিকোডারগুলিকে সমর্থন করে এমন প্ল্যাটফর্মগুলিকে অবশ্যই ডলবি ভিডিও সামগ্রীর জন্য ডলবি এক্সট্র্যাক্টর (যাকে ডলবি এক্সট্র্যাক্টর বলা হয়) সমর্থন যোগ করতে হবে৷
- একটি নিয়মিত MP4 এক্সট্র্যাক্টর শুধুমাত্র একটি ফাইল থেকে বেস লেয়ার বের করতে পারে, কিন্তু বর্ধিতকরণ বা মেটাডেটা স্তর নয়। তাই ফাইল থেকে ডেটা বের করার জন্য একটি বিশেষ ডলবি এক্সট্র্যাক্টর প্রয়োজন।
- ডলবি এক্সট্রাক্টরকে অবশ্যই প্রতিটি ডলবি ভিডিও ট্র্যাকের (গ্রুপ) জন্য 1 থেকে 2টি ট্র্যাক প্রকাশ করতে হবে:
- সম্মিলিত 2/3-স্তর ডলবি স্ট্রিমের জন্য "ভিডিও/ডলবি-ভিশন" এর ধরন সহ একটি ডলবি ভিশন HDR ট্র্যাক৷ HDR ট্র্যাকের অ্যাক্সেস-ইউনিট ফরম্যাট, যা সংজ্ঞায়িত করে যে কীভাবে বেস/বর্ধিতকরণ/মেটাডেটা স্তরগুলি থেকে অ্যাক্সেস ইউনিটগুলিকে একটি একক HDR ফ্রেমে ডিকোড করার জন্য একক বাফারে প্যাকেজ করা যায়, তা ডলবি দ্বারা সংজ্ঞায়িত করা হয়।
- যদি একটি ডলবি ভিশন ভিডিও ট্র্যাকে একটি পৃথক (ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ) বেস-লেয়ার (বিএল) থাকে, তাহলে এক্সট্র্যাক্টরকে অবশ্যই এটি একটি পৃথক "ভিডিও/এভিসি" বা "ভিডিও/হেভিসি" ট্র্যাক হিসাবে প্রকাশ করতে হবে। এক্সট্র্যাক্টরকে অবশ্যই এই ট্র্যাকের জন্য নিয়মিত AVC/HEVC অ্যাক্সেস ইউনিট সরবরাহ করতে হবে।
- BL ট্র্যাকের HDR ট্র্যাকের মতো একই ট্র্যাক-ইউনিক-আইডি ("ট্র্যাক-আইডি") থাকতে হবে যাতে অ্যাপটি বুঝতে পারে যে এটি একই ভিডিওর দুটি এনকোডিং।
- অ্যাপ্লিকেশনটি প্ল্যাটফর্মের ক্ষমতার উপর ভিত্তি করে কোন ট্র্যাকটি বেছে নেবে তা নির্ধারণ করতে পারে।
- ডলবি ভিশন প্রোফাইল/লেভেল অবশ্যই HDR ট্র্যাকের ট্র্যাক বিন্যাসে প্রকাশ করা উচিত।
- যদি একটি প্ল্যাটফর্ম একটি ডলবি-ভিশন সক্ষম ডিকোডার প্রদান করে, তবে এটি অবশ্যই একটি ডলবি-ভিশন সচেতন এক্সট্র্যাক্টর প্রদান করবে, এমনকি এটি HDR প্লেব্যাক সমর্থন না করলেও।
HDR10 এবং VP9 HDR এক্সট্র্যাক্টর সমর্থন
HDR10 বা VP9 HLG সমর্থন করার জন্য কোনও অতিরিক্ত এক্সট্র্যাক্টর প্রয়োজনীয়তা নেই। MP4-এ VP9 PQ সমর্থন করার জন্য প্ল্যাটফর্মগুলিকে অবশ্যই MP4 এক্সট্র্যাক্টর প্রসারিত করতে হবে। HDR স্ট্যাটিক মেটাডেটা অবশ্যই VP9 PQ বিটস্ট্রীমে প্রচারিত হতে হবে, যাতে এই মেটাডেটা VP9 PQ ডিকোডারে এবং সাধারণ MediaExtractor => MediaCodec পাইপলাইনের মাধ্যমে ডিসপ্লেতে পাঠানো হয়।
ডলবি ভিশন সমর্থনের জন্য স্টেজফ্রাইট এক্সটেনশন
প্ল্যাটফর্মগুলিকে অবশ্যই স্টেজফ্রাইটে ডলবি ভিশন ফর্ম্যাট সমর্থন যোগ করতে হবে:
- সংকুচিত পোর্টের জন্য পোর্ট সংজ্ঞা প্রশ্নের জন্য সমর্থন।
- DV ডিকোডারের জন্য সমর্থন প্রোফাইল/স্তরের গণনা।
- ডিভি এইচডিআর ট্র্যাকের জন্য ডিভি প্রোফাইল/লেভেল প্রকাশ করা সমর্থন করে।
প্রযুক্তি-নির্দিষ্ট বাস্তবায়নের বিবরণ
HDR10 ডিকোডার পাইপলাইন
চিত্র 1. HDR10 পাইপলাইন
HDR10 বিটস্ট্রিমগুলি MP4 পাত্রে প্যাকেজ করা হয়। অ্যাপ্লিকেশনগুলি ফ্রেম ডেটা বের করতে এবং ডিকোডারে পাঠাতে একটি নিয়মিত MP4 এক্সট্র্যাক্টর ব্যবহার করে।
- MPEG4 এক্সট্র্যাক্টর
HDR10 বিটস্ট্রিম একটি MPEG4Extractor দ্বারা শুধুমাত্র একটি সাধারণ HEVC স্ট্রীম হিসাবে স্বীকৃত এবং "ভিডিও/HEVC" টাইপ সহ HDR ট্র্যাক বের করা হবে। ফ্রেমওয়ার্কটি একটি HEVC ভিডিও ডিকোডার বাছাই করে যা সেই ট্র্যাকটি ডিকোড করতে Main10HDR10 প্রোফাইলকে সমর্থন করে। - HEVC ডিকোডার
HDR তথ্য SEI বা SPS-এ থাকে। HEVC ডিকোডার প্রথমে এমন ফ্রেম গ্রহণ করে যাতে HDR তথ্য থাকে। ডিকোডার তারপর HDR তথ্য বের করে এবং অ্যাপ্লিকেশনটিকে জানায় যে এটি একটি HDR ভিডিও ডিকোড করছে। HDR তথ্য ডিকোডার আউটপুট বিন্যাসে বান্ডিল করা হয়, যা পরে পৃষ্ঠে প্রচারিত হয়।
বিক্রেতা কর্ম
- সমর্থিত HDR ডিকোডার প্রোফাইল এবং স্তর OMX প্রকারের বিজ্ঞাপন দিন। উদাহরণ:
OMX_VIDEO_HEVCProfileMain10HDR10
(এবংMain10
) - সূচকের জন্য সমর্থন প্রয়োগ করুন: '
OMX.google.android.index.describeHDRColorInfo
' - সূচকের জন্য সমর্থন প্রয়োগ করুন: '
OMX.google.android.index.describeColorAspects
' - মাস্টারিং মেটাডেটা SEI পার্সিংয়ের জন্য সমর্থন বাস্তবায়ন করুন।
ডলবি ভিশন ডিকোডার পাইপলাইন
চিত্র 2. ডলবি ভিশন পাইপলাইন
ডলবি-বিটস্ট্রিমগুলি ডলবি দ্বারা সংজ্ঞায়িত MP4 পাত্রে প্যাকেজ করা হয়। অ্যাপ্লিকেশানগুলি, তাত্ত্বিকভাবে, বেস লেয়ার, এনহান্সমেন্ট লেয়ার এবং মেটাডেটা লেয়ার স্বাধীনভাবে বের করতে একটি নিয়মিত MP4 এক্সট্র্যাক্টর ব্যবহার করতে পারে; যাইহোক, এটি বর্তমান Android MediaExtractor/MediaCodec মডেলের সাথে খাপ খায় না।
- ডলবি এক্সট্র্যাক্টর:
- Dolby-bitstreams একটি DolbyExtractor দ্বারা স্বীকৃত হয়, যা প্রতিটি ডলবি ভিডিও ট্র্যাকের (গ্রুপ) জন্য 1 থেকে 2 ট্র্যাক হিসাবে বিভিন্ন স্তরকে প্রকাশ করে:
- সম্মিলিত 2/3-স্তর ডলবি স্ট্রিমের জন্য "ভিডিও/ডলবি-ভিশন" এর ধরন সহ একটি HDR ট্র্যাক৷ HDR ট্র্যাকের অ্যাক্সেস-ইউনিট ফরম্যাট, যা সংজ্ঞায়িত করে যে কীভাবে বেস/বর্ধিতকরণ/মেটাডেটা স্তরগুলি থেকে অ্যাক্সেস ইউনিটগুলিকে একটি একক HDR ফ্রেমে ডিকোড করার জন্য একক বাফারে প্যাকেজ করা যায়, তা ডলবি দ্বারা সংজ্ঞায়িত করা হয়।
- (ঐচ্ছিক, শুধুমাত্র যদি BL ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ হয়) একটি BL ট্র্যাকে শুধুমাত্র বেস লেয়ার থাকে, যা অবশ্যই নিয়মিত MediaCodec ডিকোডার দ্বারা ডিকোডযোগ্য হতে হবে, উদাহরণস্বরূপ, AVC/HEVC ডিকোডার৷ এক্সট্র্যাক্টরকে এই ট্র্যাকের জন্য নিয়মিত AVC/HEVC অ্যাক্সেস ইউনিট সরবরাহ করতে হবে। এই BL ট্র্যাকটিতে অবশ্যই ডলবি ট্র্যাকের মতো একই ট্র্যাক-ইউনিক-আইডি ("ট্র্যাক-আইডি") থাকতে হবে যাতে অ্যাপ্লিকেশনটি বুঝতে পারে যে এটি একই ভিডিওর দুটি এনকোডিং।
- অ্যাপ্লিকেশনটি প্ল্যাটফর্মের ক্ষমতার উপর ভিত্তি করে কোন ট্র্যাকটি বেছে নেবে তা নির্ধারণ করতে পারে।
- যেহেতু একটি HDR ট্র্যাকের একটি নির্দিষ্ট HDR প্রকার রয়েছে, ফ্রেমওয়ার্ক সেই ট্র্যাকটিকে ডিকোড করতে একটি ডলবি ভিডিও ডিকোডার বেছে নেবে৷ BL ট্র্যাক একটি নিয়মিত AVC/HEVC ভিডিও ডিকোডার দ্বারা ডিকোড করা হবে৷
- Dolby-bitstreams একটি DolbyExtractor দ্বারা স্বীকৃত হয়, যা প্রতিটি ডলবি ভিডিও ট্র্যাকের (গ্রুপ) জন্য 1 থেকে 2 ট্র্যাক হিসাবে বিভিন্ন স্তরকে প্রকাশ করে:
- ডলবিডিকোডার:
- ডলবিডিকোডার অ্যাক্সেস ইউনিটগুলি গ্রহণ করে যাতে সমস্ত স্তরের জন্য প্রয়োজনীয় অ্যাক্সেস ইউনিট থাকে (EL+BL+MD বা BL+MD)
- সিএসডি (কোডেক নির্দিষ্ট ডেটা, যেমন এসপিএস+পিপিএস+ভিপিএস) পৃথক স্তরের তথ্য ডলবি দ্বারা সংজ্ঞায়িত করার জন্য 1 সিএসডি ফ্রেমে প্যাকেজ করা যেতে পারে। একটি একক CSD ফ্রেম থাকা প্রয়োজন।
ডলবি অ্যাকশন
- বিমূর্ত ডলবি ডিকোডার (যেমন HDR ডিকোডার দ্বারা প্রত্যাশিত বাফার বিন্যাস) জন্য বিভিন্ন ডলবি কন্টেইনার স্কিমগুলির (যেমন BL+EL+MD) অ্যাক্সেস ইউনিটগুলির প্যাকেজিং সংজ্ঞায়িত করুন।
- বিমূর্ত ডলবি ডিকোডারের জন্য CSD-এর প্যাকেজিং সংজ্ঞায়িত করুন।
বিক্রেতা কর্ম
- ডলবি এক্সট্র্যাক্টর প্রয়োগ করুন। এটি ডলবি দ্বারাও করা যেতে পারে।
- ফ্রেমওয়ার্কের মধ্যে DolbyExtractor একত্রিত করুন। এন্ট্রি পয়েন্ট হল
frameworks/av/media/libstagefright/MediaExtractor.cpp
। - HDR ডিকোডার প্রোফাইল এবং স্তর OMX প্রকার ঘোষণা করুন। উদাহরণ:
OMX_VIDEO_DOLBYPROFILETYPE
এবংOMX_VIDEO_DOLBYLEVELTYP
। - সূচকের জন্য সমর্থন প্রয়োগ করুন:
'OMX.google.android.index.describeColorAspects
' - প্রতিটি ফ্রেমে অ্যাপ এবং পৃষ্ঠে গতিশীল HDR মেটাডেটা প্রচার করুন। সাধারণত এই তথ্যটি অবশ্যই ডলবি দ্বারা সংজ্ঞায়িত ডিকোডেড ফ্রেমে প্যাকেজ করা উচিত, কারণ HDMI স্ট্যান্ডার্ড এটিকে ডিসপ্লেতে প্রেরণ করার উপায় প্রদান করে না।
VP9 ডিকোডার পাইপলাইন
চিত্র 3. VP9-PQ পাইপলাইন
VP9 বিটস্ট্রিমগুলি WebM টিম দ্বারা সংজ্ঞায়িত উপায়ে WebM পাত্রে প্যাকেজ করা হয়৷ ডিকোডারে ফ্রেম পাঠানোর আগে বিটস্ট্রিম থেকে HDR মেটাডেটা বের করতে অ্যাপ্লিকেশনগুলির একটি WebM এক্সট্র্যাক্টর ব্যবহার করতে হবে।
- WebM এক্সট্র্যাক্টর:
- VP9 ডিকোডার:
- ডিকোডার Profile2 বিটস্ট্রিমগুলি গ্রহণ করে এবং সেগুলিকে সাধারণ VP9 স্ট্রীম হিসাবে ডিকোড করে।
- ডিকোডার ফ্রেমওয়ার্ক থেকে যেকোনো HDR স্ট্যাটিক মেটাডেটা পায়।
- ডিকোডার VP9 PQ স্ট্রীমের জন্য বিটস্ট্রিম অ্যাক্সেস ইউনিটের মাধ্যমে স্ট্যাটিক মেটাডেটা গ্রহণ করে।
- VP9 ডিকোডার অবশ্যই HDR স্ট্যাটিক/ডাইনামিক মেটাডেটা ডিসপ্লেতে প্রচার করতে সক্ষম হবে।
বিক্রেতা কর্ম
- সূচকের জন্য সমর্থন প্রয়োগ করুন:
OMX.google.android.index.describeHDRColorInfo
- সূচকের জন্য সমর্থন প্রয়োগ করুন:
OMX.google.android.index.describeColorAspects
- HDR স্ট্যাটিক মেটাডেটা প্রচার করুন