হাই ডাইনামিক রেঞ্জ (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 স্ট্যাটিক মেটাডেটা প্রচার করুন
হাই ডাইনামিক রেঞ্জ (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 তথ্য ডিকোডার আউটপুট বিন্যাসে বান্ডিল করা হয়, যা পরে পৃষ্ঠে প্রচারিত হয়।
বিক্রেতা কর্ম
- বিজ্ঞাপন এইচডিআর ডিকোডার প্রোফাইল এবং স্তর ওএমএক্স প্রকার সমর্থন করে। উদাহরণ:
OMX_VIDEO_HEVCProfileMain10HDR10
(এবংMain10
) - সূচকের জন্য সমর্থন
OMX.google.android.index.describeHDRColorInfo
করুন: - সূচকের জন্য সমর্থন
OMX.google.android.index.describeColorAspects
করুন: - মাস্টারিং মেটাডেটা এসইআই পার্সিংয়ের জন্য সমর্থন প্রয়োগ করুন।
ডলবি ভিশন ডিকোডার পাইপলাইন
চিত্র 2। ডলবি ভিশন পাইপলাইন
ডলবি-বিটস্ট্রিমগুলি ডলবি দ্বারা সংজ্ঞায়িত হিসাবে এমপি 4 পাত্রে প্যাকেজ করা হয়। অ্যাপ্লিকেশনগুলি, তাত্ত্বিকভাবে, বেস স্তর, বর্ধন স্তর এবং মেটাডেটা স্তরটি স্বাধীনভাবে নিষ্কাশন করতে একটি নিয়মিত এমপি 4 এক্সট্র্যাক্টর ব্যবহার করতে পারে; তবে এটি বর্তমান অ্যান্ড্রয়েড মিডিয়া এক্সট্র্যাক্টর/মিডিয়াকোডেক মডেলের সাথে খাপ খায় না।
- ডলবি এক্সট্র্যাক্টর:
- ডলবি-বিটস্ট্রিমগুলি একটি ডলবি এক্সট্র্যাক্টর দ্বারা স্বীকৃত, যা প্রতিটি ডলবি ভিডিও ট্র্যাক (গ্রুপ) এর জন্য বিভিন্ন স্তরগুলি 1 থেকে 2 ট্র্যাক হিসাবে প্রকাশ করে:
- সম্মিলিত 2/3-স্তরীয় ডলবি স্ট্রিমের জন্য "ভিডিও/ডলবি-ভিশন" প্রকারের সাথে একটি এইচডিআর ট্র্যাক। এইচডিআর ট্র্যাকের অ্যাক্সেস-ইউনিট ফর্ম্যাটটি, যা বেস/বর্ধন/মেটাডেটা স্তরগুলি থেকে অ্যাক্সেস ইউনিটগুলি কীভাবে একটি একক বাফারে একটি একক এইচডিআর ফ্রেমে ডিকোড করার জন্য প্যাকেজ করতে পারে তা নির্ধারণ করে, ডলবি দ্বারা সংজ্ঞায়িত করা হয়।
- (Al চ্ছিক, কেবলমাত্র যদি বিএল পিছনে সামঞ্জস্যপূর্ণ হয়) একটি বিএল ট্র্যাকটিতে কেবল বেস স্তর থাকে, যা নিয়মিত মিডিয়াকোডেক ডিকোডার দ্বারা ডিকোডেবল হতে হবে, উদাহরণস্বরূপ, এভিসি/এইচইভিসি ডিকোডার। এক্সট্রাক্টরটির এই ট্র্যাকের জন্য নিয়মিত এভিসি/এইচভিসি অ্যাক্সেস ইউনিট সরবরাহ করা উচিত। এই বিএল ট্র্যাকটিতে অবশ্যই ডলবি ট্র্যাকের মতো একই ট্র্যাক-ইউনিক-আইডি ("ট্র্যাক-আইডি") থাকতে হবে যাতে অ্যাপ্লিকেশনটি বুঝতে পারে যে এগুলি একই ভিডিওর দুটি এনকোডিং।
- প্ল্যাটফর্মের সামর্থ্যের ভিত্তিতে কোন ট্র্যাকটি বেছে নেবেন তা অ্যাপ্লিকেশনটি সিদ্ধান্ত নিতে পারে।
- যেহেতু একটি এইচডিআর ট্র্যাকের একটি নির্দিষ্ট এইচডিআর টাইপ রয়েছে, ফ্রেমওয়ার্কটি সেই ট্র্যাকটি ডিকোড করার জন্য একটি ডলবি ভিডিও ডিকোডারকে বেছে নেবে। বিএল ট্র্যাকটি নিয়মিত এভিসি/এইচইভিসি ভিডিও ডিকোডার দ্বারা ডিকোড করা হবে।
- ডলবি-বিটস্ট্রিমগুলি একটি ডলবি এক্সট্র্যাক্টর দ্বারা স্বীকৃত, যা প্রতিটি ডলবি ভিডিও ট্র্যাক (গ্রুপ) এর জন্য বিভিন্ন স্তরগুলি 1 থেকে 2 ট্র্যাক হিসাবে প্রকাশ করে:
- ডলবিডিকোডার:
- ডলবিডিকোডার অ্যাক্সেস ইউনিটগুলি গ্রহণ করে যা সমস্ত স্তরগুলির জন্য প্রয়োজনীয় অ্যাক্সেস ইউনিট ধারণ করে (এল+বিএল+এমডি বা বিএল+এমডি)
- সিএসডি (কোডেক নির্দিষ্ট ডেটা, যেমন এসপিএস+পিপিএস+ভিপিএস) পৃথক স্তরগুলির জন্য তথ্য ডলবি দ্বারা সংজ্ঞায়িত করতে 1 সিএসডি ফ্রেমে প্যাকেজ করা যেতে পারে। একটি একক সিএসডি ফ্রেম থাকা প্রয়োজন।
ডলবি ক্রিয়া
- বিমূর্ত ডলবি ডিকোডার (যেমন এইচডিআর ডিকোডার দ্বারা প্রত্যাশিত বাফার ফর্ম্যাট) এর জন্য বিভিন্ন ডলবি কনটেইনার স্কিমগুলির জন্য অ্যাক্সেস ইউনিটগুলির প্যাকেজিং (যেমন বিএল+এল+এমডি) সংজ্ঞায়িত করুন।
- বিমূর্ত ডলবি ডিকোডারের জন্য সিএসডি এর প্যাকেজিং সংজ্ঞায়িত করুন।
বিক্রেতা কর্ম
- ডলবি এক্সট্র্যাক্টর প্রয়োগ করুন। এটি ডলবি দ্বারাও করা যেতে পারে।
- ফ্রেমওয়ার্কে ডলবি এক্সট্র্যাক্টরকে সংহত করুন। এন্ট্রি পয়েন্টটি
frameworks/av/media/libstagefright/MediaExtractor.cpp
। - এইচডিআর ডিকোডার প্রোফাইল এবং স্তর ওএমএক্স প্রকারের ঘোষণা করুন। উদাহরণ:
OMX_VIDEO_DOLBYPROFILETYPE
এবংOMX_VIDEO_DOLBYLEVELTYP
। - সূচকের জন্য সমর্থন প্রয়োগ করুন
'OMX.google.android.index.describeColorAspects
- প্রতিটি ফ্রেমের অ্যাপ্লিকেশন এবং পৃষ্ঠে গতিশীল এইচডিআর মেটাডেটা প্রচার করুন। সাধারণত এই তথ্যটি ডলবি দ্বারা সংজ্ঞায়িত হিসাবে ডিকোডযুক্ত ফ্রেমে প্যাকেজ করা উচিত, কারণ এইচডিএমআই স্ট্যান্ডার্ডটি প্রদর্শনটিতে এটি পাস করার কোনও উপায় সরবরাহ করে না।
ভিপি 9 ডিকোডার পাইপলাইন
চিত্র 3। ভিপি 9-পিকিউ পাইপলাইন
ভিপি 9 বিটস্ট্রিমগুলি ওয়েবএম দল দ্বারা সংজ্ঞায়িতভাবে ওয়েবএম পাত্রে প্যাকেজ করা হয়। ডিকোডারে ফ্রেম প্রেরণের আগে বিটস্ট্রিম থেকে এইচডিআর মেটাডেটা বের করতে অ্যাপ্লিকেশনগুলিকে একটি ওয়েবএম এক্সট্র্যাক্টর ব্যবহার করতে হবে।
- ওয়েবএম এক্সট্র্যাক্টর:
- ভিপি 9 ডিকোডার:
- ডিকোডার প্রোফাইল 2 বিটস্ট্রিমগুলি গ্রহণ করে এবং এগুলি সাধারণ ভিপি 9 স্ট্রিম হিসাবে ডিকোড করে।
- ডিকোডার কাঠামো থেকে কোনও এইচডিআর স্ট্যাটিক মেটাডেটা গ্রহণ করে।
- ডিকোডার ভিপি 9 পিকিউ স্ট্রিমগুলির জন্য বিটস্ট্রিম অ্যাক্সেস ইউনিটগুলির মাধ্যমে স্ট্যাটিক মেটাডেটা গ্রহণ করে।
- ভিপি 9 ডিকোডারকে অবশ্যই এইচডিআর স্ট্যাটিক/গতিশীল মেটাডেটা ডিসপ্লেতে প্রচার করতে সক্ষম হতে হবে।
বিক্রেতা কর্ম
- সূচকের জন্য সমর্থন প্রয়োগ করুন:
OMX.google.android.index.describeHDRColorInfo
- সূচকের জন্য সমর্থন প্রয়োগ করুন:
OMX.google.android.index.describeColorAspects
- এইচডিআর স্ট্যাটিক মেটাডেটা প্রচার করুন
হাই ডায়নামিক রেঞ্জ (এইচডিআর) ভিডিওটি উচ্চমানের ভিডিও ডিকোডিংয়ের পরবর্তী সীমান্ত, তুলনামূলক দৃশ্যের প্রজনন গুণাবলী নিয়ে আসে। এটি লুমিন্যান্স উপাদানটির গতিশীল পরিসীমা উল্লেখযোগ্যভাবে বাড়িয়ে (বর্তমান 100 সিডি/এম 2 থেকে সিডি/এম 2 এর 1000s) এবং আরও বিস্তৃত রঙের স্থান (বিটি 2020) ব্যবহার করে এটি করে। এটি এখন টিভি স্পেসে 4 কে ইউএইচডি বিবর্তনের একটি কেন্দ্রীয় উপাদান।
অ্যান্ড্রয়েড 10 নিম্নলিখিত এইচডিআর ভিডিওগুলিকে সমর্থন করে।
- HDR10
- VP9
- HDR10+
অ্যান্ড্রয়েড 9 এবং উচ্চতর শুরু করে মিডিয়াকোডেক টানেলযুক্ত মোড নির্বিশেষে এইচডিআর মেটাডেটা রিপোর্ট করে। আপনি নন-টানেল মোডে স্ট্যাটিক/গতিশীল মেটাডেটার সাথে ডিকোডড ডেটা একসাথে পেতে পারেন। এইচডিআর 10 এবং ভিপি 9 প্রোফাইল 2 এর জন্য যা স্ট্যাটিক মেটাডেটা ব্যবহার করে, এগুলি KEY_HDR_STATIC_INFO
সহ আউটপুট ফর্ম্যাটে রিপোর্ট করা হয়েছে। এইচডিআর 10+ এর জন্য যা গতিশীল মেটাডেটা ব্যবহার করে, এটি আউটপুট ফর্ম্যাটে কী_এইচডিআর KEY_HDR10_PLUS_INFO
সহ রিপোর্ট করা হয়েছে এবং প্রতিটি আউটপুট ফ্রেমের জন্য পরিবর্তন হতে পারে। আরও তথ্যের জন্য মাল্টিমিডিয়া টানেলিং দেখুন।
অ্যান্ড্রয়েড .0.০ থেকে, প্রাথমিক এইচডিআর সমর্থন এইচডিআর ভিডিও পাইপলাইনগুলির আবিষ্কার এবং সেটআপের জন্য যথাযথ ধ্রুবক তৈরি করা অন্তর্ভুক্ত। এর অর্থ কোডেক প্রকারগুলি এবং ডিসপ্লে মোডগুলি সংজ্ঞায়িত করা এবং এইচডিআর ডেটা কীভাবে মিডিয়াকোডেকে পাস করতে হবে এবং এইচডিআর ডিকোডারগুলিতে সরবরাহ করা উচিত তা নির্দিষ্ট করে।
এই দস্তাবেজের উদ্দেশ্য হ'ল অ্যাপ্লিকেশন বিকাশকারীদের এইচডিআর স্ট্রিম প্লেব্যাককে সমর্থন করা এবং ওএমএস এবং এসওসিএসকে এইচডিআর বৈশিষ্ট্যগুলি সক্ষম করতে সহায়তা করা।
সমর্থিত এইচডিআর প্রযুক্তি
অ্যান্ড্রয়েড 7.0 এবং উচ্চতর হিসাবে, নিম্নলিখিত এইচডিআর প্রযুক্তিগুলি সমর্থিত।
প্রযুক্তি | ডলবি-ভিশন | HDR10 | ভিপি 9-এইচএলজি | ভিপি 9-পিকিউ |
---|---|---|---|---|
কোডেক | এভিসি/এইচইভিসি | HEVC | VP9 | VP9 |
স্থানান্তর ফাংশন | এসটি -2084 | এসটি -2084 | এইচএলজি | এসটি -2084 |
এইচডিআর মেটাডেটা টাইপ | গতিশীল | স্থির | কোনোটিই নয় | স্থির |
অ্যান্ড্রয়েড .0.০ -এ, কেবল টানেলযুক্ত মোডের মাধ্যমে এইচডিআর প্লেব্যাকটি সংজ্ঞায়িত করা হয়েছে , তবে ডিভাইসগুলি অস্বচ্ছ ভিডিও বাফারগুলি ব্যবহার করে সারফেসভিউগুলিতে এইচডিআরের প্লেব্যাকের জন্য সমর্থন যুক্ত করতে পারে। অন্য কথায়:
- এইচডিআর প্লেব্যাক নন-টানেলযুক্ত ডিকোডার ব্যবহার করে সমর্থিত কিনা তা যাচাই করার জন্য কোনও স্ট্যান্ডার্ড অ্যান্ড্রয়েড এপিআই নেই।
- এইচডিআর প্লেব্যাক সামর্থ্যের বিজ্ঞাপন দেয় এমন টানেল ভিডিও ডিকোডারগুলি এইচডিআর-সক্ষম প্রদর্শনগুলির সাথে সংযুক্ত থাকাকালীন এইচডিআর প্লেব্যাককে সমর্থন করতে হবে।
- এইচডিআর সামগ্রীর জিএল রচনাটি এওএসপি অ্যান্ড্রয়েড 7.0 রিলিজ দ্বারা সমর্থিত নয়।
আবিষ্কার
এইচডিআর প্লেব্যাকের জন্য একটি এইচডিআর-সক্ষম ডিকোডার এবং এইচডিআর-সক্ষম প্রদর্শনের সাথে সংযোগ প্রয়োজন। Ally চ্ছিকভাবে, কিছু প্রযুক্তির জন্য একটি নির্দিষ্ট এক্সট্র্যাক্টর প্রয়োজন।
প্রদর্শন
অ্যাপ্লিকেশনগুলি নির্দিষ্ট ডিসপ্লে দ্বারা সমর্থিত এইচডিআর প্রযুক্তিগুলি জিজ্ঞাসা করতে নতুন Display.getHdrCapabilities
এপিআই ব্যবহার করবে। এটি মূলত ইডিআইডি স্ট্যাটিক মেটাডেটা ডেটা ব্লকের তথ্য যা সিটিএ -861.3 এ সংজ্ঞায়িত হয়েছে:
-
public Display.HdrCapabilities getHdrCapabilities()
ডিসপ্লেটির এইচডিআর ক্ষমতা প্রদান করে। -
Display.HdrCapabilities
প্রদত্ত প্রদর্শনের এইচডিআর ক্ষমতাগুলি এনক্যাপসুলেট করে। উদাহরণস্বরূপ, এইচডিআর প্রকারগুলি এটি সমর্থন করে এবং কাঙ্ক্ষিত লুমিন্যান্স ডেটা সম্পর্কে বিশদ।
ধ্রুবক:
-
int HDR_TYPE_DOLBY_VISION
ডলবি ভিশন সমর্থন। -
int HDR_TYPE_HDR10
এইচডিআর 10 / পিকিউ সমর্থন। -
int HDR_TYPE_HDR10_PLUS
এইচডিআর 10+ সমর্থন। -
int HDR_TYPE_HLG
হাইব্রিড লগ-গামা সমর্থন। -
float INVALID_LUMINANCE
অবৈধ আলোকসজ্জা মান।
পাবলিক পদ্ধতি:
-
float getDesiredMaxAverageLuminance()
এই প্রদর্শনের জন্য সিডি/সিডি/এম 2 এ কাঙ্ক্ষিত সামগ্রী সর্বাধিক ফ্রেম-গড় লুমিন্যান্স ডেটা প্রদান করে। -
float getDesiredMaxLuminance()
এই প্রদর্শনের জন্য সিডি/সিডি/এম 2 এ কাঙ্ক্ষিত সামগ্রী সর্বাধিক লুমিন্যান্স ডেটা প্রদান করে। -
float getDesiredMinLuminance()
এই প্রদর্শনের জন্য সিডি/সিডি/এম 2 এ কাঙ্ক্ষিত সামগ্রী মিন লুমিন্যান্স ডেটা প্রদান করে। -
int[] getSupportedHdrTypes()
এই প্রদর্শনের সমর্থিত এইচডিআর প্রকারগুলি পান (ধ্রুবকগুলি দেখুন)। এইচডিআর প্রদর্শন দ্বারা সমর্থিত না হলে খালি অ্যারে ফেরত দেয়।
ডিকোডার
অ্যাপ্লিকেশনগুলি নতুন এইচডিআর সক্ষম প্রোফাইলগুলির জন্য সমর্থন যাচাই করতে বিদ্যমান CodecCapabilities.profileLevels
এপিআই ব্যবহার করবে:
ডলবি-ভিশন
MediaFormat
মাইম ধ্রুবক:
String MIMETYPE_VIDEO_DOLBY_VISION
MediaCodecInfo.CodecProfileLevel
প্রোফাইলের ধ্রুবক:
int DolbyVisionProfileDvavPen int DolbyVisionProfileDvavPer int DolbyVisionProfileDvheDen int DolbyVisionProfileDvheDer int DolbyVisionProfileDvheDtb int DolbyVisionProfileDvheDth int DolbyVisionProfileDvheDtr int DolbyVisionProfileDvheStn
ডলবি ভিশন ভিডিও স্তর এবং মেটাডেটা অবশ্যই ভিডিও অ্যাপ্লিকেশনগুলির মাধ্যমে ফ্রেম প্রতি একক বাফারে সংযুক্ত করা উচিত। এটি ডলবি-ভিশন সক্ষম মিডিয়া এক্সট্র্যাক্টর দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হয়।
এইচইভিসি এইচডিআর 10
MediaCodecInfo.CodecProfileLevel
প্রোফাইলের ধ্রুবক:
int HEVCProfileMain10HDR10 int HEVCProfileMain10HDR10Plus
ভিপি 9 এইচএলজি এবং পিকিউ
MediaCodecInfo.CodecProfileLevel
প্রোফাইলের ধ্রুবক:
int VP9Profile2HDR int VP9Profile2HDR10Plus int VP9Profile3HDR int VP9Profile3HDR10Plus
যদি কোনও প্ল্যাটফর্ম কোনও এইচডিআর-সক্ষম ডিকোডারকে সমর্থন করে তবে এটি এইচডিআর-সক্ষম এক্সট্র্যাক্টরকে সমর্থন করবে।
কেবলমাত্র টানেলযুক্ত ডিকোডারদের এইচডিআর সামগ্রী পিছনে খেলার গ্যারান্টিযুক্ত। নন-টানেলযুক্ত ডিকোডারদের প্লেব্যাকের ফলে এইচডিআর তথ্য হারিয়ে যেতে পারে এবং সামগ্রীটি এসডিআর রঙের ভলিউমে সমতল করা হতে পারে।
এক্সট্র্যাক্টর
অ্যান্ড্রয়েড 7.0 এ বিভিন্ন এইচডিআর প্রযুক্তির জন্য নিম্নলিখিত পাত্রে সমর্থিত:
প্রযুক্তি | ডলবি-ভিশন | HDR10 | ভিপি 9-এইচএলজি | ভিপি 9-পিকিউ |
---|---|---|---|---|
ধারক | MP4 | MP4 | ওয়েবএম | ওয়েবএম |
কোনও ট্র্যাক (ফাইলের) প্রয়োজন কিনা তা আবিষ্কার করে এইচডিআর সমর্থন প্ল্যাটফর্ম দ্বারা সমর্থিত নয়। কোনও ট্র্যাকের জন্য কোনও নির্দিষ্ট এইচডিআর প্রোফাইলের প্রয়োজন কিনা তা নির্ধারণ করতে অ্যাপ্লিকেশনগুলি কোডেক-নির্দিষ্ট ডেটা পার্স করতে পারে।
সারাংশ
প্রতিটি এইচডিআর প্রযুক্তির উপাদানগুলির প্রয়োজনীয়তাগুলি নিম্নলিখিত সারণীতে দেখানো হয়েছে:
প্রযুক্তি | ডলবি-ভিশন | HDR10 | ভিপি 9-এইচএলজি | ভিপি 9-পিকিউ |
---|---|---|---|---|
সমর্থিত এইচডিআর টাইপ (প্রদর্শন) | Hdr_type_dolby_vision | Hdr_type_hdr10 | Hdr_type_hlg | Hdr_type_hdr10 |
ধারক (এক্সট্র্যাক্টর) | MP4 | MP4 | ওয়েবএম | ওয়েবএম |
ডিকোডার | Mimepe_video_dolby_vision | Mimepe_video_hevc | Mimepe_video_vp9 | Mimepe_video_vp9 |
প্রোফাইল (ডিকোডার) | একটি ডলবি প্রোফাইল | HEVCPROFILEMAIN10HDR10 | ভিপি 9 প্রোফাইল 2 এইচডিআর বা ভিপি 9 প্রোফাইল 3 এইচডিআর | ভিপি 9 প্রোফাইল 2 এইচডিআর বা ভিপি 9 প্রোফাইল 3 এইচডিআর |
নোট:
- ডলবি-ভিশন বিটস্ট্রিমগুলি ডলবি দ্বারা সংজ্ঞায়িতভাবে একটি এমপি 4 ধারকটিতে প্যাকেজ করা হয়। অ্যাপ্লিকেশনগুলি তাদের নিজস্ব ডলবি-সক্ষম এক্সট্র্যাক্টরগুলি প্রয়োগ করতে পারে যতক্ষণ না তারা ডলবি দ্বারা সংজ্ঞায়িত হিসাবে ডিকোডারের জন্য সংশ্লিষ্ট স্তরগুলি থেকে অ্যাক্সেস ইউনিটগুলি একক অ্যাক্সেস ইউনিটে প্যাকেজ করে।
- একটি প্ল্যাটফর্ম একটি এইচডিআর-সক্ষম এক্সট্র্যাক্টরকে সমর্থন করতে পারে তবে কোনও এইচডিআর-সক্ষম ডিকোডার কোনও সম্পর্কিত নয়।
প্লেব্যাক
কোনও অ্যাপ্লিকেশন এইচডিআর প্লেব্যাকের জন্য সমর্থন যাচাই করার পরে, এটি এইচডিআর সামগ্রীগুলি প্রায় একইভাবে খেলতে পারে যেমন এটি নন-এইচডিআর সামগ্রীগুলি পিছনে খেলতে পারে, নিম্নলিখিত সতর্কতা সহ:
- ডলবি-ভিশনের জন্য, কোনও নির্দিষ্ট মিডিয়া ফাইল/ট্র্যাকের জন্য এইচডিআর সক্ষম ডিকোডার প্রয়োজন কিনা তা অবিলম্বে উপলব্ধ নয়। অ্যাপ্লিকেশনটিতে অবশ্যই এই তথ্যটি আগেই থাকতে হবে বা মিডিয়াফর্ম্যাটের কোডেক-নির্দিষ্ট ডেটা বিভাগটি পার্স করে এই তথ্যটি পেতে সক্ষম হতে হবে।
-
CodecCapabilities.isFormatSupported
এই জাতীয় প্রোফাইলকে সমর্থন করার জন্য টানেলযুক্ত ডিকোডার বৈশিষ্ট্যটি প্রয়োজনীয় কিনা তা বিবেচনা করে না।
এইচডিআর প্ল্যাটফর্ম সমর্থন সক্ষম করুন
কোনও ডিভাইসের জন্য এইচডিআর প্ল্যাটফর্ম সমর্থন সক্ষম করতে এসওসি বিক্রেতারা এবং ওএমএসকে অবশ্যই অতিরিক্ত কাজ করতে হবে।
এইচডিআরের জন্য অ্যান্ড্রয়েড 7.0 এ প্ল্যাটফর্ম পরিবর্তন
প্ল্যাটফর্মে (অ্যাপ্লিকেশন/নেটিভ স্তর) কিছু মূল পরিবর্তন এখানে রয়েছে যা ওএমএস এবং এসওসি সম্পর্কে সচেতন হওয়া দরকার।
প্রদর্শন
হার্ডওয়্যার রচনা
এইচডিআর-সক্ষম প্ল্যাটফর্মগুলিকে অবশ্যই এইচডিআর নন-এইচডিআর সামগ্রী সহ মিশ্রণ এইচডিআর সামগ্রী সমর্থন করতে হবে। সঠিক মিশ্রণের বৈশিষ্ট্য এবং অপারেশনগুলি রিলিজ 7.0 হিসাবে অ্যান্ড্রয়েড দ্বারা সংজ্ঞায়িত করা হয় না, তবে প্রক্রিয়াটি সাধারণত এই পদক্ষেপগুলি অনুসরণ করে:
- স্তরগুলির রঙ, মাস্টারিং এবং সম্ভাব্য গতিশীল মেটাডেটার উপর ভিত্তি করে একটি রৈখিক রঙের স্থান/ভলিউম নির্ধারণ করুন যাতে সংমিশ্রিত হওয়ার জন্য সমস্ত স্তর থাকে।
যদি সরাসরি কোনও ডিসপ্লেতে সংমিশ্রণ করা হয় তবে এটি লিনিয়ার স্পেস হতে পারে যা প্রদর্শনের রঙের ভলিউমের সাথে মেলে। - সমস্ত স্তরকে সাধারণ রঙের জায়গায় রূপান্তর করুন।
- মিশ্রণ সম্পাদন করুন।
- যদি এইচডিএমআই এর মাধ্যমে প্রদর্শিত হয়:
- মিশ্রিত দৃশ্যের জন্য রঙ, মাস্টারিং এবং সম্ভাব্য গতিশীল মেটাডেটা নির্ধারণ করুন।
- ফলস্বরূপ মিশ্রিত দৃশ্যটি উত্পন্ন রঙের স্থান/ভলিউমে রূপান্তর করুন।
- যদি ডিসপ্লেতে সরাসরি প্রদর্শিত হয় তবে সেই দৃশ্যটি উত্পাদন করতে ফলাফলযুক্ত মিশ্রিত দৃশ্যটিকে প্রয়োজনীয় প্রদর্শন সংকেতগুলিতে রূপান্তর করুন।
প্রদর্শন আবিষ্কার
এইচডিআর ডিসপ্লে আবিষ্কারটি কেবল এইচডাব্লুসি 2 এর মাধ্যমে সমর্থিত। ডিভাইস বাস্তবায়নকারীদের অবশ্যই এই বৈশিষ্ট্যটি কাজ করার জন্য অ্যান্ড্রয়েড 7.0 দিয়ে প্রকাশিত এইচডাব্লুসি 2 অ্যাডাপ্টারটি নির্বাচন করে সক্ষম করতে হবে। অতএব, প্ল্যাটফর্মগুলি অবশ্যই এইচডাব্লুসি 2 এর জন্য সমর্থন যুক্ত করতে হবে বা এই তথ্য সরবরাহের জন্য কোনও উপায়ের অনুমতি দেওয়ার জন্য এওএসপি কাঠামো প্রসারিত করতে হবে। এইচডাব্লুসি 2 ফ্রেমওয়ার্ক এবং অ্যাপ্লিকেশনটিতে এইচডিআর স্ট্যাটিক ডেটা প্রচার করতে একটি নতুন এপিআই প্রকাশ করে।
HDMI
- একটি সংযুক্ত এইচডিএমআই ডিসপ্লে সিটিএ -861.3 বিভাগ 4.2-এ সংজ্ঞায়িত হিসাবে এইচডিএমআই ইডিআইডি এর মাধ্যমে তার এইচডিআর সক্ষমতার বিজ্ঞাপন দেয়।
- নিম্নলিখিত ইওটিএফ ম্যাপিং ব্যবহার করা হবে:
- ET_0 ট্র্যাডিশনাল গামা - এসডিআর লুমিন্যান্স রেঞ্জ: কোনও এইচডিআর টাইপে ম্যাপ করা হয়নি
- ET_1 ট্র্যাডিশনাল গামা - এইচডিআর লুমিন্যান্স রেঞ্জ: কোনও এইচডিআর টাইপে ম্যাপ করা হয়নি
- ET_2 এসএমপিটি এসটি 2084 - এইচডিআর টাইপ এইচডিআর 10 এ ম্যাপ করা হয়েছে
- এইচডিএমআইয়ের উপর ডলবি ভিশন বা এইচএলজি সমর্থন সংকেতগুলি তাদের প্রাসঙ্গিক সংস্থাগুলি দ্বারা সংজ্ঞায়িত হিসাবে করা হয়।
- নোট করুন যে এইচডাব্লুসি 2 এপিআই ফ্লোট পছন্দসই লুমিন্যান্স মানগুলি ব্যবহার করে, সুতরাং 8-বিট ইডিআইডি মানগুলি অবশ্যই উপযুক্ত ফ্যাশনে অনুবাদ করতে হবে।
ডিকোডার
প্ল্যাটফর্মগুলি অবশ্যই এইচডিআর-সক্ষম টানেলযুক্ত ডিকোডার যুক্ত করতে হবে এবং তাদের এইচডিআর সমর্থনের বিজ্ঞাপন দিতে হবে। সাধারণত, এইচডিআর-সক্ষম ডিকোডারগুলি অবশ্যই:
- সমর্থন টানেলড ডিকোডিং (
FEATURE_TunneledPlayback
)। - এইচডিআর স্ট্যাটিক মেটাডেটা (
OMX.google.android.index.describeHDRColorInfo
) এবং প্রদর্শন/হার্ডওয়্যার রচনায় এর প্রচার সমর্থন করুন। এইচএলজির জন্য, উপযুক্ত মেটাডেটা অবশ্যই ডিসপ্লেতে জমা দিতে হবে। - রঙিন বিবরণ সমর্থন করুন (
OMX.google.android.index.describeColorAspects
) এবং প্রদর্শন/হার্ডওয়্যার রচনায় এর প্রচার। - প্রাসঙ্গিক মান দ্বারা সংজ্ঞায়িত হিসাবে এইচডিআর এম্বেডেড মেটাডেটা সমর্থন করুন।
ডলবি ভিশন ডিকোডার সমর্থন
ডলবি ভিশন সমর্থন করতে, প্ল্যাটফর্মগুলি অবশ্যই একটি ডলবি-ভিশন সক্ষম এইচডিআর ওএমএক্স ডিকোডার যুক্ত করতে হবে। ডলবি ভিশনের সুনির্দিষ্ট বিবরণ দেওয়া, এটি সাধারণত এক বা একাধিক এভিসি এবং/অথবা এইচইভিসি ডিকোডারদের পাশাপাশি একজন কম্পোজিটারের আশেপাশে একটি মোড়ক ডিকোডার। এই জাতীয় ডিকোডার অবশ্যই:
- মাইম টাইপ "ভিডিও/ডলবি-ভিশন" সমর্থন করুন।
- বিজ্ঞাপন ডলবি ভিশন প্রোফাইল/স্তর সমর্থন করে।
- ডলবি দ্বারা সংজ্ঞায়িত সমস্ত স্তরগুলির সাব-অ্যাক্সেস-ইউনিটগুলি ধারণ করে এমন অ্যাক্সেস ইউনিটগুলি গ্রহণ করুন।
- ডলবি দ্বারা সংজ্ঞায়িত কোডেক-নির্দিষ্ট ডেটা গ্রহণ করুন। উদাহরণস্বরূপ, ডলবি ভিশন প্রোফাইল/স্তর এবং সম্ভবত অভ্যন্তরীণ ডিকোডারগুলির জন্য কোডেক-নির্দিষ্ট ডেটাযুক্ত ডেটা।
- ডলবি ভিশন প্রোফাইল/স্তরের মধ্যে ডলবি দ্বারা প্রয়োজনীয় হিসাবে অভিযোজিত স্যুইচিং সমর্থন করুন।
ডিকোডারটি কনফিগার করার সময়, প্রকৃত ডলবি প্রোফাইলটি কোডেকের কাছে যোগাযোগ করা হয় না। ডিকোডার শুরু হওয়ার পরে এটি কেবল কোডেক-নির্দিষ্ট ডেটার মাধ্যমে করা হয়। একটি প্ল্যাটফর্ম একাধিক ডলবি ভিশন ডিকোডারকে সমর্থন করতে বেছে নিতে পারে: একটি এভিসি প্রোফাইলের জন্য, এবং অন্যটি এইচইভিসি প্রোফাইলগুলির জন্য কনফিগার সময়কালে অন্তর্নিহিত কোডেকগুলি শুরু করতে সক্ষম হতে পারে। যদি কোনও একক ডলবি ভিশন ডিকোডার উভয় প্রকারের প্রোফাইলকে সমর্থন করে তবে এটি অবশ্যই একটি অভিযোজিত ফ্যাশনে গতিশীলতার মধ্যে স্যুইচিংকে সমর্থন করতে হবে।
যদি কোনও প্ল্যাটফর্ম সাধারণ এইচডিআর ডিকোডার সমর্থন ছাড়াও ডলবি-ভিশন সক্ষম ডিকোডার সরবরাহ করে তবে এটি অবশ্যই:
- এইচডিআর প্লেব্যাক সমর্থন না করলেও একটি ডলবি-ভিশন সচেতন এক্সট্র্যাক্টর সরবরাহ করুন।
- এমন একটি ডিকোডার সরবরাহ করুন যা ডলবি দ্বারা সংজ্ঞায়িত ভিশন প্রোফাইলকে সমর্থন করে।
এইচডিআর 10 ডিকোডার সমর্থন
এইচডিআর 10 সমর্থন করতে, প্ল্যাটফর্মগুলি অবশ্যই একটি এইচডিআর 10-সক্ষম ওএমএক্স ডিকোডার যুক্ত করতে হবে। এটি সাধারণত একটি টানেলযুক্ত এইচইভিসি ডিকোডার যা এইচডিএমআই সম্পর্কিত মেটাডেটা পার্সিং এবং পরিচালনাও সমর্থন করে। এই জাতীয় ডিকোডার (সাধারণ এইচডিআর ডিকোডার সমর্থন ছাড়াও) অবশ্যই:
- মাইম টাইপ "ভিডিও/এইচইভিসি" সমর্থন করুন।
- বিজ্ঞাপন Hevcmain10hdr10 সমর্থিত। HEVCMAIN10HRD10 প্রোফাইল সাপোর্টের জন্য HEVCMAIN10 প্রোফাইলকে সমর্থন করাও প্রয়োজন, যার জন্য একই স্তরে হিভসিএমাইন প্রোফাইলকে সমর্থন করা প্রয়োজন।
- মাস্টারিং মেটাডেটা এসইআই ব্লকগুলি পাশাপাশি এসপিএসে থাকা অন্যান্য এইচডিআর সম্পর্কিত তথ্যকে পার্সিং সমর্থন করুন।
ভিপি 9 ডিকোডার সমর্থন
ভিপি 9 এইচডিআর সমর্থন করতে, প্ল্যাটফর্মগুলি অবশ্যই একটি ভিপি 9 প্রোফাইল 2-সক্ষম এইচডিআর ওএমএক্স ডিকোডার যুক্ত করতে হবে। এটি সাধারণত একটি টানেলযুক্ত ভিপি 9 ডিকোডার যা এইচডিএমআই সম্পর্কিত মেটাডেটা হ্যান্ডলিংকে সমর্থন করে। এই জাতীয় ডিকোডারগুলি (সাধারণ এইচডিআর ডিকোডার সমর্থন ছাড়াও) অবশ্যই:
- মাইম টাইপ "ভিডিও/x-vnd.on2.vp9 সমর্থন করুন।"
- বিজ্ঞাপন ভিপি 9 প্রোফাইল 2 এইচডিআর সমর্থন করে। ভিপি 9 প্রোফাইল 2 এইচডিআর প্রোফাইল সমর্থন একই স্তরে ভিপি 9 প্রোফাইল 2 প্রোফাইলকে সমর্থন করার জন্যও প্রয়োজন।
এক্সট্রাক্টর
ডলবি ভিশন এক্সট্র্যাক্টর সমর্থন
ডলবি ভিশন ডিকোডারদের সমর্থনকারী প্ল্যাটফর্মগুলি অবশ্যই ডলবি ভিডিও সামগ্রীর জন্য ডলবি এক্সট্র্যাক্টর (ডলবি এক্সট্র্যাক্টর নামে পরিচিত) সমর্থন যুক্ত করতে হবে।
- একটি নিয়মিত এমপি 4 এক্সট্র্যাক্টর কেবল কোনও ফাইল থেকে বেস স্তরটি বের করতে পারে তবে বর্ধন বা মেটাডেটা স্তরগুলি নয়। সুতরাং ফাইল থেকে ডেটা বের করার জন্য একটি বিশেষ ডলবি এক্সট্র্যাক্টর প্রয়োজন।
- ডলবি এক্সট্র্যাক্টরকে অবশ্যই প্রতিটি ডলবি ভিডিও ট্র্যাক (গ্রুপ) এর জন্য 1 থেকে 2 টি ট্র্যাক প্রকাশ করতে হবে:
- সম্মিলিত 2/3-স্তরীয় ডলবি স্ট্রিমের জন্য "ভিডিও/ডলবি-ভিশন" প্রকারের সাথে একটি ডলবি ভিশন এইচডিআর ট্র্যাক। এইচডিআর ট্র্যাকের অ্যাক্সেস-ইউনিট ফর্ম্যাটটি, যা বেস/বর্ধন/মেটাডেটা স্তরগুলি থেকে অ্যাক্সেস ইউনিটগুলি কীভাবে একটি একক বাফারে একটি একক এইচডিআর ফ্রেমে ডিকোড করার জন্য প্যাকেজ করতে পারে তা নির্ধারণ করে, ডলবি দ্বারা সংজ্ঞায়িত করা হয়।
- যদি কোনও ডলবি ভিশন ভিডিও ট্র্যাকটিতে একটি পৃথক (পশ্চাদপদ সামঞ্জস্যপূর্ণ) বেস-লেয়ার (বিএল) থাকে তবে এক্সট্র্যাক্টরটিকে অবশ্যই এটি একটি পৃথক "ভিডিও/এভিসি" বা "ভিডিও/এইচইভিসি" ট্র্যাক হিসাবে প্রকাশ করতে হবে। এক্সট্রাক্টরকে অবশ্যই এই ট্র্যাকের জন্য নিয়মিত এভিসি/এইচভিসি অ্যাক্সেস ইউনিট সরবরাহ করতে হবে।
- বিএল ট্র্যাকটিতে এইচডিআর ট্র্যাকের মতো একই ট্র্যাক-ইউনিক-আইডি ("ট্র্যাক-আইডি") থাকতে হবে যাতে অ্যাপ্লিকেশনটি বুঝতে পারে যে এগুলি একই ভিডিওর দুটি এনকোডিং।
- প্ল্যাটফর্মের সামর্থ্যের ভিত্তিতে কোন ট্র্যাকটি বেছে নেবেন তা অ্যাপ্লিকেশনটি সিদ্ধান্ত নিতে পারে।
- ডলবি ভিশন প্রোফাইল/স্তরটি অবশ্যই এইচডিআর ট্র্যাকের ট্র্যাক ফর্ম্যাটে প্রকাশ করতে হবে।
- যদি কোনও প্ল্যাটফর্ম একটি ডলবি-ভিশন সক্ষম ডিকোডার সরবরাহ করে তবে এটি এইচডিআর প্লেব্যাক সমর্থন না করলেও এটি অবশ্যই একটি ডলবি-ভিশন সচেতন এক্সট্র্যাক্টর সরবরাহ করতে হবে।
এইচডিআর 10 এবং ভিপি 9 এইচডিআর এক্সট্র্যাক্টর সমর্থন
এইচডিআর 10 বা ভিপি 9 এইচএলজি সমর্থন করার জন্য কোনও অতিরিক্ত এক্সট্র্যাক্টরের প্রয়োজনীয়তা নেই। প্ল্যাটফর্মগুলি এমপি 4 -তে ভিপি 9 পিকিউ সমর্থন করতে এমপি 4 এক্সট্র্যাক্টরকে প্রসারিত করতে হবে। এইচডিআর স্ট্যাটিক মেটাডেটা অবশ্যই ভিপি 9 পিকিউ বিটস্ট্রিমে প্রচার করতে হবে, যেমন এই মেটাডেটাটি ভিপি 9 পিকিউ ডিকোডারে এবং সাধারণ মিডিয়া এক্সট্র্যাক্টর => মিডিয়াকোডেক পাইপলাইনের মাধ্যমে ডিসপ্লেতে প্রেরণ করা হয়।
ডলবি ভিশন সাপোর্টের জন্য স্টেজফ্রাইট এক্সটেনশন
প্ল্যাটফর্মগুলি অবশ্যই স্টেজফ্রাইটে ডলবি ভিশন ফর্ম্যাট সমর্থন যুক্ত করতে হবে:
- সংকুচিত পোর্টের জন্য পোর্ট সংজ্ঞা ক্যোয়ারির জন্য সমর্থন।
- ডিভি ডিকোডারের জন্য প্রোফাইল/স্তরের গণনা সমর্থন করুন।
- ডিভি এইচডিআর ট্র্যাকগুলির জন্য ডিভি প্রোফাইল/স্তর প্রকাশের সমর্থন।
প্রযুক্তি-নির্দিষ্ট বাস্তবায়নের বিশদ
এইচডিআর 10 ডিকোডার পাইপলাইন
চিত্র 1। এইচডিআর 10 পাইপলাইন
এইচডিআর 10 বিটস্ট্রিমগুলি এমপি 4 পাত্রে প্যাকেজ করা হয়। অ্যাপ্লিকেশনগুলি ফ্রেমের ডেটা বের করতে এবং এটি ডিকোডারে প্রেরণ করতে একটি নিয়মিত এমপি 4 এক্সট্র্যাক্টর ব্যবহার করে।
- এমপিইজি 4 এক্সট্র্যাক্টর
এইচডিআর 10 বিটস্ট্রিমগুলি এমপিইজি 4 এক্সট্র্যাক্টর দ্বারা কেবল একটি সাধারণ এইচভিসি স্ট্রিম হিসাবে স্বীকৃত এবং "ভিডিও/এইচইভিসি" টাইপ সহ এইচডিআর ট্র্যাকটি বের করা হবে। ফ্রেমওয়ার্কটি একটি এইচইভিসি ভিডিও ডিকোডার বাছাই করে যা সেই ট্র্যাকটি ডিকোড করতে মূল 10 এইচডিআর 10 প্রোফাইলকে সমর্থন করে। - এইচইভিসি ডিকোডার
এইচডিআর তথ্য এসইআই বা এসপিএসে রয়েছে। এইচইভিসি ডিকোডার প্রথমে ফ্রেমগুলি গ্রহণ করে যা এইচডিআর তথ্য ধারণ করে। এরপরে ডিকোডার এইচডিআর তথ্য বের করে এবং অ্যাপ্লিকেশনটিকে অবহিত করে যে এটি এইচডিআর ভিডিওটি ডিকোড করছে। এইচডিআর তথ্য ডিকোডার আউটপুট ফর্ম্যাটে বান্ডিল করা হয়, যা পরে পৃষ্ঠে প্রচারিত হয়।
বিক্রেতা কর্ম
- বিজ্ঞাপন এইচডিআর ডিকোডার প্রোফাইল এবং স্তর ওএমএক্স প্রকার সমর্থন করে। উদাহরণ:
OMX_VIDEO_HEVCProfileMain10HDR10
(এবংMain10
) - সূচকের জন্য সমর্থন
OMX.google.android.index.describeHDRColorInfo
করুন: - সূচকের জন্য সমর্থন
OMX.google.android.index.describeColorAspects
করুন: - মাস্টারিং মেটাডেটা এসইআই পার্সিংয়ের জন্য সমর্থন প্রয়োগ করুন।
ডলবি ভিশন ডিকোডার পাইপলাইন
চিত্র 2। ডলবি ভিশন পাইপলাইন
ডলবি-বিটস্ট্রিমগুলি ডলবি দ্বারা সংজ্ঞায়িত হিসাবে এমপি 4 পাত্রে প্যাকেজ করা হয়। অ্যাপ্লিকেশনগুলি, তাত্ত্বিকভাবে, বেস স্তর, বর্ধন স্তর এবং মেটাডেটা স্তরটি স্বাধীনভাবে নিষ্কাশন করতে একটি নিয়মিত এমপি 4 এক্সট্র্যাক্টর ব্যবহার করতে পারে; তবে এটি বর্তমান অ্যান্ড্রয়েড মিডিয়া এক্সট্র্যাক্টর/মিডিয়াকোডেক মডেলের সাথে খাপ খায় না।
- ডলবি এক্সট্র্যাক্টর:
- ডলবি-বিটস্ট্রিমগুলি একটি ডলবি এক্সট্র্যাক্টর দ্বারা স্বীকৃত, যা প্রতিটি ডলবি ভিডিও ট্র্যাক (গ্রুপ) এর জন্য বিভিন্ন স্তরগুলি 1 থেকে 2 ট্র্যাক হিসাবে প্রকাশ করে:
- সম্মিলিত 2/3-স্তরীয় ডলবি স্ট্রিমের জন্য "ভিডিও/ডলবি-ভিশন" প্রকারের সাথে একটি এইচডিআর ট্র্যাক। এইচডিআর ট্র্যাকের অ্যাক্সেস-ইউনিট ফর্ম্যাটটি, যা বেস/বর্ধন/মেটাডেটা স্তরগুলি থেকে অ্যাক্সেস ইউনিটগুলি কীভাবে একটি একক বাফারে একটি একক এইচডিআর ফ্রেমে ডিকোড করার জন্য প্যাকেজ করতে পারে তা নির্ধারণ করে, ডলবি দ্বারা সংজ্ঞায়িত করা হয়।
- (Al চ্ছিক, কেবলমাত্র যদি বিএল পিছনে সামঞ্জস্যপূর্ণ হয়) একটি বিএল ট্র্যাকটিতে কেবল বেস স্তর থাকে, যা নিয়মিত মিডিয়াকোডেক ডিকোডার দ্বারা ডিকোডেবল হতে হবে, উদাহরণস্বরূপ, এভিসি/এইচইভিসি ডিকোডার। এক্সট্রাক্টরটির এই ট্র্যাকের জন্য নিয়মিত এভিসি/এইচভিসি অ্যাক্সেস ইউনিট সরবরাহ করা উচিত। এই বিএল ট্র্যাকটিতে অবশ্যই ডলবি ট্র্যাকের মতো একই ট্র্যাক-ইউনিক-আইডি ("ট্র্যাক-আইডি") থাকতে হবে যাতে অ্যাপ্লিকেশনটি বুঝতে পারে যে এগুলি একই ভিডিওর দুটি এনকোডিং।
- প্ল্যাটফর্মের সামর্থ্যের ভিত্তিতে কোন ট্র্যাকটি বেছে নেবেন তা অ্যাপ্লিকেশনটি সিদ্ধান্ত নিতে পারে।
- যেহেতু একটি এইচডিআর ট্র্যাকের একটি নির্দিষ্ট এইচডিআর টাইপ রয়েছে, ফ্রেমওয়ার্কটি সেই ট্র্যাকটি ডিকোড করার জন্য একটি ডলবি ভিডিও ডিকোডারকে বেছে নেবে। বিএল ট্র্যাকটি নিয়মিত এভিসি/এইচইভিসি ভিডিও ডিকোডার দ্বারা ডিকোড করা হবে।
- ডলবি-বিটস্ট্রিমগুলি একটি ডলবি এক্সট্র্যাক্টর দ্বারা স্বীকৃত, যা প্রতিটি ডলবি ভিডিও ট্র্যাক (গ্রুপ) এর জন্য বিভিন্ন স্তরগুলি 1 থেকে 2 ট্র্যাক হিসাবে প্রকাশ করে:
- ডলবিডিকোডার:
- ডলবিডিকোডার অ্যাক্সেস ইউনিটগুলি গ্রহণ করে যা সমস্ত স্তরগুলির জন্য প্রয়োজনীয় অ্যাক্সেস ইউনিট ধারণ করে (এল+বিএল+এমডি বা বিএল+এমডি)
- সিএসডি (কোডেক নির্দিষ্ট ডেটা, যেমন এসপিএস+পিপিএস+ভিপিএস) পৃথক স্তরগুলির জন্য তথ্য ডলবি দ্বারা সংজ্ঞায়িত করতে 1 সিএসডি ফ্রেমে প্যাকেজ করা যেতে পারে। একটি একক সিএসডি ফ্রেম থাকা প্রয়োজন।
ডলবি ক্রিয়া
- বিমূর্ত ডলবি ডিকোডার (যেমন এইচডিআর ডিকোডার দ্বারা প্রত্যাশিত বাফার ফর্ম্যাট) এর জন্য বিভিন্ন ডলবি কনটেইনার স্কিমগুলির জন্য অ্যাক্সেস ইউনিটগুলির প্যাকেজিং (যেমন বিএল+এল+এমডি) সংজ্ঞায়িত করুন।
- বিমূর্ত ডলবি ডিকোডারের জন্য সিএসডি এর প্যাকেজিং সংজ্ঞায়িত করুন।
বিক্রেতা কর্ম
- ডলবি এক্সট্র্যাক্টর প্রয়োগ করুন। এটি ডলবি দ্বারাও করা যেতে পারে।
- ফ্রেমওয়ার্কে ডলবি এক্সট্র্যাক্টরকে সংহত করুন। এন্ট্রি পয়েন্টটি
frameworks/av/media/libstagefright/MediaExtractor.cpp
। - এইচডিআর ডিকোডার প্রোফাইল এবং স্তর ওএমএক্স প্রকারের ঘোষণা করুন। উদাহরণ:
OMX_VIDEO_DOLBYPROFILETYPE
এবংOMX_VIDEO_DOLBYLEVELTYP
। - সূচকের জন্য সমর্থন প্রয়োগ করুন
'OMX.google.android.index.describeColorAspects
- প্রতিটি ফ্রেমের অ্যাপ্লিকেশন এবং পৃষ্ঠে গতিশীল এইচডিআর মেটাডেটা প্রচার করুন। সাধারণত এই তথ্যটি ডলবি দ্বারা সংজ্ঞায়িত হিসাবে ডিকোডযুক্ত ফ্রেমে প্যাকেজ করা উচিত, কারণ এইচডিএমআই স্ট্যান্ডার্ডটি প্রদর্শনটিতে এটি পাস করার কোনও উপায় সরবরাহ করে না।
ভিপি 9 ডিকোডার পাইপলাইন
চিত্র 3। ভিপি 9-পিকিউ পাইপলাইন
ভিপি 9 বিটস্ট্রিমগুলি ওয়েবএম দল দ্বারা সংজ্ঞায়িতভাবে ওয়েবএম পাত্রে প্যাকেজ করা হয়। ডিকোডারে ফ্রেম প্রেরণের আগে বিটস্ট্রিম থেকে এইচডিআর মেটাডেটা বের করতে অ্যাপ্লিকেশনগুলিকে একটি ওয়েবএম এক্সট্র্যাক্টর ব্যবহার করতে হবে।
- ওয়েবএম এক্সট্র্যাক্টর:
- ভিপি 9 ডিকোডার:
- ডিকোডার প্রোফাইল 2 বিটস্ট্রিমগুলি গ্রহণ করে এবং এগুলি সাধারণ ভিপি 9 স্ট্রিম হিসাবে ডিকোড করে।
- ডিকোডার কাঠামো থেকে কোনও এইচডিআর স্ট্যাটিক মেটাডেটা গ্রহণ করে।
- ডিকোডার ভিপি 9 পিকিউ স্ট্রিমগুলির জন্য বিটস্ট্রিম অ্যাক্সেস ইউনিটগুলির মাধ্যমে স্ট্যাটিক মেটাডেটা গ্রহণ করে।
- ভিপি 9 ডিকোডারকে অবশ্যই এইচডিআর স্ট্যাটিক/গতিশীল মেটাডেটা ডিসপ্লেতে প্রচার করতে সক্ষম হতে হবে।
বিক্রেতা কর্ম
- সূচকের জন্য সমর্থন প্রয়োগ করুন:
OMX.google.android.index.describeHDRColorInfo
- সূচকের জন্য সমর্থন প্রয়োগ করুন:
OMX.google.android.index.describeColorAspects
- এইচডিআর স্ট্যাটিক মেটাডেটা প্রচার করুন
হাই ডায়নামিক রেঞ্জ (এইচডিআর) ভিডিওটি উচ্চমানের ভিডিও ডিকোডিংয়ের পরবর্তী সীমান্ত, তুলনামূলক দৃশ্যের প্রজনন গুণাবলী নিয়ে আসে। এটি লুমিন্যান্স উপাদানটির গতিশীল পরিসীমা উল্লেখযোগ্যভাবে বাড়িয়ে (বর্তমান 100 সিডি/এম 2 থেকে সিডি/এম 2 এর 1000s) এবং আরও বিস্তৃত রঙের স্থান (বিটি 2020) ব্যবহার করে এটি করে। এটি এখন টিভি স্পেসে 4 কে ইউএইচডি বিবর্তনের একটি কেন্দ্রীয় উপাদান।
অ্যান্ড্রয়েড 10 নিম্নলিখিত এইচডিআর ভিডিওগুলিকে সমর্থন করে।
- HDR10
- VP9
- HDR10+
অ্যান্ড্রয়েড 9 এবং উচ্চতর শুরু করে মিডিয়াকোডেক টানেলযুক্ত মোড নির্বিশেষে এইচডিআর মেটাডেটা রিপোর্ট করে। আপনি নন-টানেল মোডে স্ট্যাটিক/গতিশীল মেটাডেটার সাথে ডিকোডড ডেটা একসাথে পেতে পারেন। এইচডিআর 10 এবং ভিপি 9 প্রোফাইল 2 এর জন্য যা স্ট্যাটিক মেটাডেটা ব্যবহার করে, এগুলি KEY_HDR_STATIC_INFO
সহ আউটপুট ফর্ম্যাটে রিপোর্ট করা হয়েছে। এইচডিআর 10+ এর জন্য যা গতিশীল মেটাডেটা ব্যবহার করে, এটি আউটপুট ফর্ম্যাটে কী_এইচডিআর KEY_HDR10_PLUS_INFO
সহ রিপোর্ট করা হয়েছে এবং প্রতিটি আউটপুট ফ্রেমের জন্য পরিবর্তন হতে পারে। আরও তথ্যের জন্য মাল্টিমিডিয়া টানেলিং দেখুন।
অ্যান্ড্রয়েড .0.০ থেকে, প্রাথমিক এইচডিআর সমর্থন এইচডিআর ভিডিও পাইপলাইনগুলির আবিষ্কার এবং সেটআপের জন্য যথাযথ ধ্রুবক তৈরি করা অন্তর্ভুক্ত। এর অর্থ কোডেক প্রকারগুলি এবং ডিসপ্লে মোডগুলি সংজ্ঞায়িত করা এবং এইচডিআর ডেটা কীভাবে মিডিয়াকোডেকে পাস করতে হবে এবং এইচডিআর ডিকোডারগুলিতে সরবরাহ করা উচিত তা নির্দিষ্ট করে।
এই দস্তাবেজের উদ্দেশ্য হ'ল অ্যাপ্লিকেশন বিকাশকারীদের এইচডিআর স্ট্রিম প্লেব্যাককে সমর্থন করা এবং ওএমএস এবং এসওসিএসকে এইচডিআর বৈশিষ্ট্যগুলি সক্ষম করতে সহায়তা করা।
সমর্থিত এইচডিআর প্রযুক্তি
অ্যান্ড্রয়েড 7.0 এবং উচ্চতর হিসাবে, নিম্নলিখিত এইচডিআর প্রযুক্তিগুলি সমর্থিত।
প্রযুক্তি | ডলবি-ভিশন | HDR10 | ভিপি 9-এইচএলজি | ভিপি 9-পিকিউ |
---|---|---|---|---|
কোডেক | এভিসি/এইচইভিসি | HEVC | VP9 | VP9 |
স্থানান্তর ফাংশন | এসটি -2084 | এসটি -2084 | এইচএলজি | এসটি -2084 |
এইচডিআর মেটাডেটা টাইপ | গতিশীল | স্থির | কোনোটিই নয় | স্থির |
অ্যান্ড্রয়েড .0.০ -এ, কেবল টানেলযুক্ত মোডের মাধ্যমে এইচডিআর প্লেব্যাকটি সংজ্ঞায়িত করা হয়েছে , তবে ডিভাইসগুলি অস্বচ্ছ ভিডিও বাফারগুলি ব্যবহার করে সারফেসভিউগুলিতে এইচডিআরের প্লেব্যাকের জন্য সমর্থন যুক্ত করতে পারে। অন্য কথায়:
- এইচডিআর প্লেব্যাক নন-টানেলযুক্ত ডিকোডার ব্যবহার করে সমর্থিত কিনা তা যাচাই করার জন্য কোনও স্ট্যান্ডার্ড অ্যান্ড্রয়েড এপিআই নেই।
- এইচডিআর প্লেব্যাক সামর্থ্যের বিজ্ঞাপন দেয় এমন টানেল ভিডিও ডিকোডারগুলি এইচডিআর-সক্ষম প্রদর্শনগুলির সাথে সংযুক্ত থাকাকালীন এইচডিআর প্লেব্যাককে সমর্থন করতে হবে।
- এইচডিআর সামগ্রীর জিএল রচনাটি এওএসপি অ্যান্ড্রয়েড 7.0 রিলিজ দ্বারা সমর্থিত নয়।
আবিষ্কার
এইচডিআর প্লেব্যাকের জন্য একটি এইচডিআর-সক্ষম ডিকোডার এবং এইচডিআর-সক্ষম প্রদর্শনের সাথে সংযোগ প্রয়োজন। Ally চ্ছিকভাবে, কিছু প্রযুক্তির জন্য একটি নির্দিষ্ট এক্সট্র্যাক্টর প্রয়োজন।
প্রদর্শন
অ্যাপ্লিকেশনগুলি নির্দিষ্ট ডিসপ্লে দ্বারা সমর্থিত এইচডিআর প্রযুক্তিগুলি জিজ্ঞাসা করতে নতুন Display.getHdrCapabilities
এপিআই ব্যবহার করবে। এটি মূলত ইডিআইডি স্ট্যাটিক মেটাডেটা ডেটা ব্লকের তথ্য যা সিটিএ -861.3 এ সংজ্ঞায়িত হয়েছে:
-
public Display.HdrCapabilities getHdrCapabilities()
ডিসপ্লেটির এইচডিআর ক্ষমতা প্রদান করে। -
Display.HdrCapabilities
প্রদত্ত প্রদর্শনের এইচডিআর ক্ষমতাগুলি এনক্যাপসুলেট করে। উদাহরণস্বরূপ, এইচডিআর প্রকারগুলি এটি সমর্থন করে এবং কাঙ্ক্ষিত লুমিন্যান্স ডেটা সম্পর্কে বিশদ।
ধ্রুবক:
-
int HDR_TYPE_DOLBY_VISION
ডলবি ভিশন সমর্থন। -
int HDR_TYPE_HDR10
এইচডিআর 10 / পিকিউ সমর্থন। -
int HDR_TYPE_HDR10_PLUS
এইচডিআর 10+ সমর্থন। -
int HDR_TYPE_HLG
হাইব্রিড লগ-গামা সমর্থন। -
float INVALID_LUMINANCE
অবৈধ আলোকসজ্জা মান।
পাবলিক পদ্ধতি:
-
float getDesiredMaxAverageLuminance()
এই প্রদর্শনের জন্য সিডি/সিডি/এম 2 এ কাঙ্ক্ষিত সামগ্রী সর্বাধিক ফ্রেম-গড় লুমিন্যান্স ডেটা প্রদান করে। -
float getDesiredMaxLuminance()
এই প্রদর্শনের জন্য সিডি/সিডি/এম 2 এ কাঙ্ক্ষিত সামগ্রী সর্বাধিক লুমিন্যান্স ডেটা প্রদান করে। -
float getDesiredMinLuminance()
এই প্রদর্শনের জন্য সিডি/সিডি/এম 2 এ কাঙ্ক্ষিত সামগ্রী মিন লুমিন্যান্স ডেটা প্রদান করে। -
int[] getSupportedHdrTypes()
এই প্রদর্শনের সমর্থিত এইচডিআর প্রকারগুলি পান (ধ্রুবকগুলি দেখুন)। এইচডিআর প্রদর্শন দ্বারা সমর্থিত না হলে খালি অ্যারে ফেরত দেয়।
ডিকোডার
অ্যাপ্লিকেশনগুলি নতুন এইচডিআর সক্ষম প্রোফাইলগুলির জন্য সমর্থন যাচাই করতে বিদ্যমান CodecCapabilities.profileLevels
এপিআই ব্যবহার করবে:
ডলবি-ভিশন
MediaFormat
মাইম ধ্রুবক:
String MIMETYPE_VIDEO_DOLBY_VISION
MediaCodecInfo.CodecProfileLevel
প্রোফাইলের ধ্রুবক:
int DolbyVisionProfileDvavPen int DolbyVisionProfileDvavPer int DolbyVisionProfileDvheDen int DolbyVisionProfileDvheDer int DolbyVisionProfileDvheDtb int DolbyVisionProfileDvheDth int DolbyVisionProfileDvheDtr int DolbyVisionProfileDvheStn
ডলবি ভিশন ভিডিও স্তর এবং মেটাডেটা অবশ্যই ভিডিও অ্যাপ্লিকেশনগুলির মাধ্যমে ফ্রেম প্রতি একক বাফারে সংযুক্ত করা উচিত। এটি ডলবি-ভিশন সক্ষম মিডিয়া এক্সট্র্যাক্টর দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হয়।
এইচইভিসি এইচডিআর 10
MediaCodecInfo.CodecProfileLevel
প্রোফাইলের ধ্রুবক:
int HEVCProfileMain10HDR10 int HEVCProfileMain10HDR10Plus
ভিপি 9 এইচএলজি এবং পিকিউ
MediaCodecInfo.CodecProfileLevel
প্রোফাইলের ধ্রুবক:
int VP9Profile2HDR int VP9Profile2HDR10Plus int VP9Profile3HDR int VP9Profile3HDR10Plus
যদি কোনও প্ল্যাটফর্ম কোনও এইচডিআর-সক্ষম ডিকোডারকে সমর্থন করে তবে এটি এইচডিআর-সক্ষম এক্সট্র্যাক্টরকে সমর্থন করবে।
কেবলমাত্র টানেলযুক্ত ডিকোডারদের এইচডিআর সামগ্রী পিছনে খেলার গ্যারান্টিযুক্ত। নন-টানেলযুক্ত ডিকোডারদের প্লেব্যাকের ফলে এইচডিআর তথ্য হারিয়ে যেতে পারে এবং সামগ্রীটি এসডিআর রঙের ভলিউমে সমতল করা হতে পারে।
এক্সট্র্যাক্টর
অ্যান্ড্রয়েড 7.0 এ বিভিন্ন এইচডিআর প্রযুক্তির জন্য নিম্নলিখিত পাত্রে সমর্থিত:
প্রযুক্তি | ডলবি-ভিশন | HDR10 | ভিপি 9-এইচএলজি | ভিপি 9-পিকিউ |
---|---|---|---|---|
ধারক | MP4 | MP4 | ওয়েবএম | ওয়েবএম |
কোনও ট্র্যাক (ফাইলের) প্রয়োজন কিনা তা আবিষ্কার করে এইচডিআর সমর্থন প্ল্যাটফর্ম দ্বারা সমর্থিত নয়। কোনও ট্র্যাকের জন্য কোনও নির্দিষ্ট এইচডিআর প্রোফাইলের প্রয়োজন কিনা তা নির্ধারণ করতে অ্যাপ্লিকেশনগুলি কোডেক-নির্দিষ্ট ডেটা পার্স করতে পারে।
সারাংশ
প্রতিটি এইচডিআর প্রযুক্তির উপাদানগুলির প্রয়োজনীয়তাগুলি নিম্নলিখিত সারণীতে দেখানো হয়েছে:
প্রযুক্তি | ডলবি-ভিশন | HDR10 | ভিপি 9-এইচএলজি | ভিপি 9-পিকিউ |
---|---|---|---|---|
সমর্থিত এইচডিআর টাইপ (প্রদর্শন) | Hdr_type_dolby_vision | Hdr_type_hdr10 | Hdr_type_hlg | Hdr_type_hdr10 |
ধারক (এক্সট্র্যাক্টর) | MP4 | MP4 | ওয়েবএম | ওয়েবএম |
ডিকোডার | Mimepe_video_dolby_vision | Mimepe_video_hevc | Mimepe_video_vp9 | Mimepe_video_vp9 |
প্রোফাইল (ডিকোডার) | একটি ডলবি প্রোফাইল | HEVCPROFILEMAIN10HDR10 | ভিপি 9 প্রোফাইল 2 এইচডিআর বা ভিপি 9 প্রোফাইল 3 এইচডিআর | ভিপি 9 প্রোফাইল 2 এইচডিআর বা ভিপি 9 প্রোফাইল 3 এইচডিআর |
নোট:
- ডলবি-ভিশন বিটস্ট্রিমগুলি ডলবি দ্বারা সংজ্ঞায়িতভাবে একটি এমপি 4 ধারকটিতে প্যাকেজ করা হয়। অ্যাপ্লিকেশনগুলি তাদের নিজস্ব ডলবি-সক্ষম এক্সট্র্যাক্টরগুলি প্রয়োগ করতে পারে যতক্ষণ না তারা ডলবি দ্বারা সংজ্ঞায়িত হিসাবে ডিকোডারের জন্য সংশ্লিষ্ট স্তরগুলি থেকে অ্যাক্সেস ইউনিটগুলি একক অ্যাক্সেস ইউনিটে প্যাকেজ করে।
- একটি প্ল্যাটফর্ম একটি এইচডিআর-সক্ষম এক্সট্র্যাক্টরকে সমর্থন করতে পারে তবে কোনও এইচডিআর-সক্ষম ডিকোডার কোনও সম্পর্কিত নয়।
প্লেব্যাক
কোনও অ্যাপ্লিকেশন এইচডিআর প্লেব্যাকের জন্য সমর্থন যাচাই করার পরে, এটি এইচডিআর সামগ্রীগুলি প্রায় একইভাবে খেলতে পারে যেমন এটি নন-এইচডিআর সামগ্রীগুলি পিছনে খেলতে পারে, নিম্নলিখিত সতর্কতা সহ:
- ডলবি-ভিশনের জন্য, কোনও নির্দিষ্ট মিডিয়া ফাইল/ট্র্যাকের জন্য এইচডিআর সক্ষম ডিকোডার প্রয়োজন কিনা তা অবিলম্বে উপলব্ধ নয়। অ্যাপ্লিকেশনটিতে অবশ্যই এই তথ্যটি আগেই থাকতে হবে বা মিডিয়াফর্ম্যাটের কোডেক-নির্দিষ্ট ডেটা বিভাগটি পার্স করে এই তথ্যটি পেতে সক্ষম হতে হবে।
-
CodecCapabilities.isFormatSupported
এই জাতীয় প্রোফাইলকে সমর্থন করার জন্য টানেলযুক্ত ডিকোডার বৈশিষ্ট্যটি প্রয়োজনীয় কিনা তা বিবেচনা করে না।
এইচডিআর প্ল্যাটফর্ম সমর্থন সক্ষম করুন
কোনও ডিভাইসের জন্য এইচডিআর প্ল্যাটফর্ম সমর্থন সক্ষম করতে এসওসি বিক্রেতারা এবং ওএমএসকে অবশ্যই অতিরিক্ত কাজ করতে হবে।
এইচডিআরের জন্য অ্যান্ড্রয়েড 7.0 এ প্ল্যাটফর্ম পরিবর্তন
প্ল্যাটফর্মে (অ্যাপ্লিকেশন/নেটিভ স্তর) কিছু মূল পরিবর্তন এখানে রয়েছে যা ওএমএস এবং এসওসি সম্পর্কে সচেতন হওয়া দরকার।
প্রদর্শন
হার্ডওয়্যার রচনা
এইচডিআর-সক্ষম প্ল্যাটফর্মগুলিকে অবশ্যই এইচডিআর নন-এইচডিআর সামগ্রী সহ মিশ্রণ এইচডিআর সামগ্রী সমর্থন করতে হবে। সঠিক মিশ্রণের বৈশিষ্ট্য এবং অপারেশনগুলি রিলিজ 7.0 হিসাবে অ্যান্ড্রয়েড দ্বারা সংজ্ঞায়িত করা হয় না, তবে প্রক্রিয়াটি সাধারণত এই পদক্ষেপগুলি অনুসরণ করে:
- স্তরগুলির রঙ, মাস্টারিং এবং সম্ভাব্য গতিশীল মেটাডেটার উপর ভিত্তি করে একটি রৈখিক রঙের স্থান/ভলিউম নির্ধারণ করুন যাতে সংমিশ্রিত হওয়ার জন্য সমস্ত স্তর থাকে।
যদি সরাসরি কোনও ডিসপ্লেতে সংমিশ্রণ করা হয় তবে এটি লিনিয়ার স্পেস হতে পারে যা প্রদর্শনের রঙের ভলিউমের সাথে মেলে। - সমস্ত স্তরকে সাধারণ রঙের জায়গায় রূপান্তর করুন।
- মিশ্রণ সম্পাদন করুন।
- যদি এইচডিএমআই এর মাধ্যমে প্রদর্শিত হয়:
- মিশ্রিত দৃশ্যের জন্য রঙ, মাস্টারিং এবং সম্ভাব্য গতিশীল মেটাডেটা নির্ধারণ করুন।
- ফলস্বরূপ মিশ্রিত দৃশ্যটি উত্পন্ন রঙের স্থান/ভলিউমে রূপান্তর করুন।
- যদি ডিসপ্লেতে সরাসরি প্রদর্শিত হয় তবে সেই দৃশ্যটি উত্পাদন করতে ফলাফলযুক্ত মিশ্রিত দৃশ্যটিকে প্রয়োজনীয় প্রদর্শন সংকেতগুলিতে রূপান্তর করুন।
প্রদর্শন আবিষ্কার
এইচডিআর ডিসপ্লে আবিষ্কারটি কেবল এইচডাব্লুসি 2 এর মাধ্যমে সমর্থিত। ডিভাইস বাস্তবায়নকারীদের অবশ্যই এই বৈশিষ্ট্যটি কাজ করার জন্য অ্যান্ড্রয়েড 7.0 দিয়ে প্রকাশিত এইচডাব্লুসি 2 অ্যাডাপ্টারটি নির্বাচন করে সক্ষম করতে হবে। অতএব, প্ল্যাটফর্মগুলি অবশ্যই এইচডাব্লুসি 2 এর জন্য সমর্থন যুক্ত করতে হবে বা এই তথ্য সরবরাহের জন্য কোনও উপায়ের অনুমতি দেওয়ার জন্য এওএসপি কাঠামো প্রসারিত করতে হবে। এইচডাব্লুসি 2 ফ্রেমওয়ার্ক এবং অ্যাপ্লিকেশনটিতে এইচডিআর স্ট্যাটিক ডেটা প্রচার করতে একটি নতুন এপিআই প্রকাশ করে।
HDMI
- একটি সংযুক্ত এইচডিএমআই ডিসপ্লে সিটিএ -861.3 বিভাগ 4.2-এ সংজ্ঞায়িত হিসাবে এইচডিএমআই ইডিআইডি এর মাধ্যমে তার এইচডিআর সক্ষমতার বিজ্ঞাপন দেয়।
- নিম্নলিখিত ইওটিএফ ম্যাপিং ব্যবহার করা হবে:
- ET_0 ট্র্যাডিশনাল গামা - এসডিআর লুমিন্যান্স রেঞ্জ: কোনও এইচডিআর টাইপে ম্যাপ করা হয়নি
- ET_1 ট্র্যাডিশনাল গামা - এইচডিআর লুমিন্যান্স রেঞ্জ: কোনও এইচডিআর টাইপে ম্যাপ করা হয়নি
- ET_2 এসএমপিটি এসটি 2084 - এইচডিআর টাইপ এইচডিআর 10 এ ম্যাপ করা হয়েছে
- এইচডিএমআইয়ের উপর ডলবি ভিশন বা এইচএলজি সমর্থন সংকেতগুলি তাদের প্রাসঙ্গিক সংস্থাগুলি দ্বারা সংজ্ঞায়িত হিসাবে করা হয়।
- নোট করুন যে এইচডাব্লুসি 2 এপিআই ফ্লোট পছন্দসই লুমিন্যান্স মানগুলি ব্যবহার করে, সুতরাং 8-বিট ইডিআইডি মানগুলি অবশ্যই উপযুক্ত ফ্যাশনে অনুবাদ করতে হবে।
ডিকোডার
প্ল্যাটফর্মগুলি অবশ্যই এইচডিআর-সক্ষম টানেলযুক্ত ডিকোডার যুক্ত করতে হবে এবং তাদের এইচডিআর সমর্থনের বিজ্ঞাপন দিতে হবে। সাধারণত, এইচডিআর-সক্ষম ডিকোডারগুলি অবশ্যই:
- সমর্থন টানেলড ডিকোডিং (
FEATURE_TunneledPlayback
)। - এইচডিআর স্ট্যাটিক মেটাডেটা (
OMX.google.android.index.describeHDRColorInfo
) এবং প্রদর্শন/হার্ডওয়্যার রচনায় এর প্রচার সমর্থন করুন। এইচএলজির জন্য, উপযুক্ত মেটাডেটা অবশ্যই ডিসপ্লেতে জমা দিতে হবে। - রঙিন বিবরণ সমর্থন করুন (
OMX.google.android.index.describeColorAspects
) এবং প্রদর্শন/হার্ডওয়্যার রচনায় এর প্রচার। - প্রাসঙ্গিক মান দ্বারা সংজ্ঞায়িত হিসাবে এইচডিআর এম্বেডেড মেটাডেটা সমর্থন করুন।
ডলবি ভিশন ডিকোডার সমর্থন
ডলবি ভিশন সমর্থন করতে, প্ল্যাটফর্মগুলি অবশ্যই একটি ডলবি-ভিশন সক্ষম এইচডিআর ওএমএক্স ডিকোডার যুক্ত করতে হবে। ডলবি ভিশনের সুনির্দিষ্ট বিবরণ দেওয়া, এটি সাধারণত এক বা একাধিক এভিসি এবং/অথবা এইচইভিসি ডিকোডারদের পাশাপাশি একজন কম্পোজিটারের আশেপাশে একটি মোড়ক ডিকোডার। এই জাতীয় ডিকোডার অবশ্যই:
- মাইম টাইপ "ভিডিও/ডলবি-ভিশন" সমর্থন করুন।
- বিজ্ঞাপন ডলবি ভিশন প্রোফাইল/স্তর সমর্থন করে।
- ডলবি দ্বারা সংজ্ঞায়িত সমস্ত স্তরগুলির সাব-অ্যাক্সেস-ইউনিটগুলি ধারণ করে এমন অ্যাক্সেস ইউনিটগুলি গ্রহণ করুন।
- ডলবি দ্বারা সংজ্ঞায়িত কোডেক-নির্দিষ্ট ডেটা গ্রহণ করুন। উদাহরণস্বরূপ, ডলবি ভিশন প্রোফাইল/স্তর এবং সম্ভবত অভ্যন্তরীণ ডিকোডারগুলির জন্য কোডেক-নির্দিষ্ট ডেটাযুক্ত ডেটা।
- ডলবি ভিশন প্রোফাইল/স্তরের মধ্যে ডলবি দ্বারা প্রয়োজনীয় হিসাবে অভিযোজিত স্যুইচিং সমর্থন করুন।
ডিকোডারটি কনফিগার করার সময়, প্রকৃত ডলবি প্রোফাইলটি কোডেকের কাছে যোগাযোগ করা হয় না। ডিকোডার শুরু হওয়ার পরে এটি কেবল কোডেক-নির্দিষ্ট ডেটার মাধ্যমে করা হয়। একটি প্ল্যাটফর্ম একাধিক ডলবি ভিশন ডিকোডারকে সমর্থন করতে বেছে নিতে পারে: একটি এভিসি প্রোফাইলের জন্য, এবং অন্যটি এইচইভিসি প্রোফাইলগুলির জন্য কনফিগার সময়কালে অন্তর্নিহিত কোডেকগুলি শুরু করতে সক্ষম হতে পারে। যদি কোনও একক ডলবি ভিশন ডিকোডার উভয় প্রকারের প্রোফাইলকে সমর্থন করে তবে এটি অবশ্যই একটি অভিযোজিত ফ্যাশনে গতিশীলতার মধ্যে স্যুইচিংকে সমর্থন করতে হবে।
যদি কোনও প্ল্যাটফর্ম সাধারণ এইচডিআর ডিকোডার সমর্থন ছাড়াও ডলবি-ভিশন সক্ষম ডিকোডার সরবরাহ করে তবে এটি অবশ্যই:
- এইচডিআর প্লেব্যাক সমর্থন না করলেও একটি ডলবি-ভিশন সচেতন এক্সট্র্যাক্টর সরবরাহ করুন।
- এমন একটি ডিকোডার সরবরাহ করুন যা ডলবি দ্বারা সংজ্ঞায়িত ভিশন প্রোফাইলকে সমর্থন করে।
এইচডিআর 10 ডিকোডার সমর্থন
এইচডিআর 10 সমর্থন করতে, প্ল্যাটফর্মগুলি অবশ্যই একটি এইচডিআর 10-সক্ষম ওএমএক্স ডিকোডার যুক্ত করতে হবে। This is normally a tunneled HEVC decoder that also supports parsing and handling HDMI related metadata. Such a decoder (in addition to the general HDR decoder support) must:
- Support mime type "video/hevc."
- Advertise supported HEVCMain10HDR10. HEVCMain10HRD10 profile support also requires supporting the HEVCMain10 profile, which requires supporting the HEVCMain profile at the same levels.
- Support parsing the mastering metadata SEI blocks, as well as other HDR related info contained in SPS.
VP9 decoder support
To support VP9 HDR, platforms must add a VP9 Profile2-capable HDR OMX decoder. This is normally a tunneled VP9 decoder that also supports handling HDMI related metadata. Such decoders (in addition to the general HDR decoder support) must:
- Support mime type "video/x-vnd.on2.vp9."
- Advertise supported VP9Profile2HDR. VP9Profile2HDR profile support also requires supporting VP9Profile2 profile at the same level.
এক্সট্রাক্টর
Dolby Vision extractor support
Platforms that support Dolby Vision decoders must add Dolby extractor (called Dolby Extractor) support for Dolby Video content.
- A regular MP4 extractor can only extract the base layer from a file, but not the enhancement or metadata layers. So a special Dolby extractor is needed to extract the data from the file.
- The Dolby extractor must expose 1 to 2 tracks for each Dolby video track (group):
- A Dolby Vision HDR track with the type of "video/dolby-vision" for the combined 2/3-layers Dolby stream. The HDR track's access-unit format, which defines how to package the access units from the base/enhancement/metadata layers into a single buffer to be decoded into a single HDR frame, is to be defined by Dolby.
- If a Dolby Vision video track contains a separate (backward compatible) base-layer (BL), the extractor must also expose this as a separate "video/avc" or "video/hevc" track. The extractor must provide regular AVC/HEVC access units for this track.
- The BL track must have the same track-unique-ID ("track-ID") as the HDR track so the app understands that these are two encodings of the same video.
- The application can decide which track to choose based on the platform's capability.
- The Dolby Vision profile/level must be exposed in the track format of the HDR track.
- If a platform provides a Dolby-Vision capable decoder, it must also provide a Dolby-Vision aware extractor, even if it does not support HDR playback.
HDR10 and VP9 HDR extractor support
There are no additional extractor requirements to support HDR10 or VP9 HLG. Platforms must extend MP4 extractor to support VP9 PQ in MP4. HDR static metadata must be propagated in the VP9 PQ bitstream, such that this metadata is passed to the VP9 PQ decoder and to the display via the normal MediaExtractor => MediaCodec pipeline.
Stagefright extensions for Dolby Vision support
Platforms must add Dolby Vision format support to Stagefright:
- Support for port definition query for compressed port.
- Support profile/level enumeration for DV decoder.
- Support exposing DV profile/level for DV HDR tracks.
Technology-specific implementation details
HDR10 decoder pipeline
Figure 1. HDR10 pipeline
HDR10 bitstreams are packaged in MP4 containers. Applications use a regular MP4 extractor to extract the frame data and send it to the decoder.
- MPEG4 Extractor
HDR10 bitstreams are recognized as just a normal HEVC stream by a MPEG4Extractor and the HDR track with the type "video/HEVC" will be extracted. The framework picks an HEVC video decoder that supports the Main10HDR10 profile to decode that track. - HEVC Decoder
HDR information is in either SEI or SPS. The HEVC decoder first receives frames that contain the HDR information. The decoder then extracts the HDR information and notifies the application that it is decoding an HDR video. HDR information is bundled into decoder output format, which is propagated to the surface later.
বিক্রেতা কর্ম
- Advertise supported HDR decoder profile and level OMX type. উদাহরণ:
OMX_VIDEO_HEVCProfileMain10HDR10
(andMain10
) - Implement support for index: '
OMX.google.android.index.describeHDRColorInfo
' - Implement support for index: '
OMX.google.android.index.describeColorAspects
' - Implement support for SEI parsing of mastering metadata.
Dolby Vision decoder pipeline
Figure 2. Dolby Vision pipeline
Dolby-bitstreams are packaged in MP4 containers as defined by Dolby. Applications could, in theory, use a regular MP4 extractor to extract the base layer, enhancement layer, and metadata layer independently; however, this does not fit the current Android MediaExtractor/MediaCodec model.
- DolbyExtractor:
- Dolby-bitstreams are recognized by a DolbyExtractor, which exposes the various layers as 1 to 2 tracks for each dolby video track (group):
- An HDR track with the type of "video/dolby-vision" for the combined 2/3-layers dolby stream. The HDR track's access-unit format, which defines how to package the access units from the base/enhancement/metadata layers into a single buffer to be decoded into a single HDR frame, is to be defined by Dolby.
- (Optional, only if the BL is backward compatible) A BL track contains only the base layer, which must be decodable by regular MediaCodec decoder, for example, AVC/HEVC decoder. The extractor should provide regular AVC/HEVC access units for this track. This BL track must have the same track-unique-ID ("track-ID") as the Dolby track so the application understands that these are two encodings of the same video.
- The application can decide which track to choose based on the platform's capability.
- Because an HDR track has a specific HDR type, the framework will pick a Dolby video decoder to decode that track. The BL track will be decoded by a regular AVC/HEVC video decoder.
- Dolby-bitstreams are recognized by a DolbyExtractor, which exposes the various layers as 1 to 2 tracks for each dolby video track (group):
- DolbyDecoder:
- The DolbyDecoder receives access units that contain the required access units for all layers (EL+BL+MD or BL+MD)
- CSD (codec specific data, such as SPS+PPS+VPS) information for the individual layers can be packaged into 1 CSD frame to be defined by Dolby. Having a single CSD frame is required.
Dolby actions
- Define the packaging of access units for the various Dolby container schemes (eg BL+EL+MD) for the abstract Dolby decoder (ie the buffer format expected by the HDR decoder).
- Define the packaging of CSD for the abstract Dolby decoder.
বিক্রেতা কর্ম
- Implement Dolby extractor. This can also be done by Dolby.
- Integrate DolbyExtractor into the framework. The entry point is
frameworks/av/media/libstagefright/MediaExtractor.cpp
. - Declare HDR decoder profile and level OMX type. Example:
OMX_VIDEO_DOLBYPROFILETYPE
andOMX_VIDEO_DOLBYLEVELTYP
. - Implement support for index:
'OMX.google.android.index.describeColorAspects
' - Propagate the dynamic HDR metadata to the app and surface in each frame. Typically this information must be packaged into the decoded frame as defined by Dolby, because the HDMI standard does not provide a way to pass this to the display.
VP9 decoder pipeline
Figure 3. VP9-PQ pipeline
VP9 bitstreams are packaged in WebM containers in a way defined by WebM team. Applications need to use a WebM extractor to extract HDR metadata from the bitstream before sending frames to the decoder.
- WebM Extractor:
- VP9 Decoder:
- Decoder receives Profile2 bitstreams and decodes them as normal VP9 streams.
- Decoder receives any HDR static metadata from the framework.
- Decoder receives static metadata via the bitstream access units for VP9 PQ streams.
- VP9 decoder must be able to propagate the HDR static/dynamic metadata to the display.
বিক্রেতা কর্ম
- Implement support for index:
OMX.google.android.index.describeHDRColorInfo
- Implement support for index:
OMX.google.android.index.describeColorAspects
- Propagate HDR static metadata