ফ্রেমওয়ার্ক ধারণা, ফ্রেমওয়ার্ক ধারণা

MediaPipe ফ্রেমওয়ার্ক ব্যবহার করার আগে, নিম্নলিখিত ধারণাগুলির সাথে নিজেকে পরিচিত করুন।

অধিকার

প্যাকেট

মৌলিক তথ্য প্রবাহ ইউনিট। একটি প্যাকেটে একটি সংখ্যাসূচক টাইমস্ট্যাম্প এবং একটি অপরিবর্তনীয় পেলোডের জন্য একটি ভাগ করা পয়েন্টার থাকে। পেলোড যেকোন C++ প্রকারের হতে পারে এবং পেলোডের ধরনকে প্যাকেটের ধরনও বলা হয়। প্যাকেট মূল্য শ্রেণী এবং সস্তায় অনুলিপি করা যেতে পারে. প্রতিটি অনুলিপি রেফারেন্স-গণনা শব্দার্থবিদ্যা সহ পেলোডের মালিকানা ভাগ করে। প্রতিটি কপির নিজস্ব টাইমস্ট্যাম্প আছে। এছাড়াও প্যাকেট দেখুন।

চিত্রলেখ

মিডিয়াপাইপ প্রক্রিয়াকরণ একটি গ্রাফের ভিতরে সঞ্চালিত হয়, যা নোডগুলির মধ্যে প্যাকেট প্রবাহের পথগুলিকে সংজ্ঞায়িত করে। একটি গ্রাফে যেকোনো সংখ্যক ইনপুট এবং আউটপুট থাকতে পারে এবং ডেটা প্রবাহ শাখা এবং একত্রিত হতে পারে। সাধারণত ডেটা সামনের দিকে প্রবাহিত হয়, তবে পিছনের লুপগুলি সম্ভব। বিস্তারিত জানার জন্য গ্রাফ দেখুন।

নোড

নোডগুলি প্যাকেট তৈরি করে এবং/অথবা গ্রাস করে এবং সেগুলিই যেখানে গ্রাফের বেশিরভাগ কাজ হয়। ঐতিহাসিক কারণে তারা "ক্যালকুলেটর" নামেও পরিচিত। প্রতিটি নোডের ইন্টারফেস অনেকগুলি ইনপুট এবং আউটপুট পোর্টকে সংজ্ঞায়িত করে, একটি ট্যাগ এবং/অথবা একটি সূচক দ্বারা চিহ্নিত করা হয়। বিস্তারিত জানার জন্য ক্যালকুলেটর দেখুন।

প্রবাহ

একটি স্ট্রিম হল দুটি নোডের মধ্যে একটি সংযোগ যা প্যাকেটের একটি ক্রম বহন করে, যার টাইমস্ট্যাম্পগুলি একঘেয়েভাবে বৃদ্ধি করা আবশ্যক।

পাশের প্যাকেট

নোডগুলির মধ্যে একটি সাইড প্যাকেট সংযোগ একটি একক প্যাকেট বহন করে (অনির্দিষ্ট টাইমস্ট্যাম্প সহ)। এটি কিছু ডেটা সরবরাহ করতে ব্যবহার করা যেতে পারে যা স্থির থাকবে, যেখানে একটি স্ট্রিম ডেটার একটি প্রবাহ উপস্থাপন করে যা সময়ের সাথে সাথে পরিবর্তিত হয়।

প্যাকেট পোর্ট

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

একটি পোর্টের প্রয়োজন হতে পারে, যার অর্থ গ্রাফটি বৈধ হওয়ার জন্য একটি সংযোগ তৈরি করতে হবে, বা ঐচ্ছিক, যার অর্থ এটি সংযোগহীন থাকতে পারে।

ইনপুট এবং আউটপুট

তথ্য প্রবাহ উৎস নোড থেকে উদ্ভূত হতে পারে, যার কোনো ইনপুট স্ট্রিম নেই এবং প্যাকেটগুলি স্বতঃস্ফূর্তভাবে তৈরি করে (যেমন একটি ফাইল থেকে পড়ার মাধ্যমে); অথবা গ্রাফ ইনপুট স্ট্রীম থেকে, যা একটি অ্যাপ্লিকেশন ফিড প্যাকেটগুলিকে একটি গ্রাফে তৈরি করতে দেয়।

একইভাবে, সিঙ্ক নোড রয়েছে যা ডেটা গ্রহণ করে এবং বিভিন্ন গন্তব্যে (যেমন একটি ফাইল, একটি মেমরি বাফার, ইত্যাদি) লিখতে পারে এবং একটি অ্যাপ্লিকেশন কলব্যাক ব্যবহার করে গ্রাফ থেকে আউটপুটও গ্রহণ করতে পারে।

রানটাইম আচরণ

গ্রাফ জীবনকাল

একবার একটি গ্রাফ শুরু হয়ে গেলে, এটি ডেটা প্রক্রিয়াকরণ শুরু করতে শুরু করা যেতে পারে, এবং প্রতিটি স্ট্রীম বন্ধ না হওয়া পর্যন্ত বা গ্রাফ বাতিল না হওয়া পর্যন্ত প্যাকেটের একটি স্ট্রীম প্রক্রিয়া করতে পারে। তারপর গ্রাফটি ধ্বংস বা আবার শুরু করা যেতে পারে।

নোড জীবনকাল

ফ্রেমওয়ার্ক একটি নোডে কল করবে তিনটি প্রধান আজীবন পদ্ধতি রয়েছে:

  • খুলুন: অন্য পদ্ধতির আগে একবার বলা হয়। এটি কল করা হলে, নোডের জন্য প্রয়োজনীয় সমস্ত ইনপুট সাইড প্যাকেট উপলব্ধ হবে।
  • প্রক্রিয়া: একাধিকবার বলা হয়, যখন নোডের ইনপুট নীতি অনুসারে একটি নতুন সেট ইনপুট পাওয়া যায়।
  • বন্ধ: একবার ডাকা, শেষে।

উপরন্তু, প্রতিটি ক্যালকুলেটর কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরকে সংজ্ঞায়িত করতে পারে, যা প্রক্রিয়াকৃত ডেটা থেকে স্বাধীন সম্পদ তৈরি এবং ডিলকেটিং করার জন্য দরকারী।

ইনপুট নীতি

ডিফল্ট ইনপুট নীতি হল টাইমস্ট্যাম্প দ্বারা প্যাকেটের নির্ধারক সমষ্টি। একটি নোড তার প্রক্রিয়া পদ্ধতির আহ্বানে একই সময়ে একই টাইমস্ট্যাম্পের জন্য সমস্ত ইনপুট গ্রহণ করে; এবং ক্রমাগত ইনপুট সেটগুলি তাদের টাইমস্ট্যাম্প ক্রমে প্রাপ্ত হয়। সমস্ত ইনপুট স্ট্রীমে একই টাইমস্ট্যাম্প সহ একটি প্যাকেট প্রাপ্ত না হওয়া পর্যন্ত কিছু প্যাকেটের প্রক্রিয়াকরণে বিলম্ব করতে হতে পারে, বা যতক্ষণ না এটি নিশ্চিত করা যায় যে সেই টাইমস্ট্যাম্প সহ একটি প্যাকেট সেই স্ট্রিমগুলিতে পৌঁছাবে না যা এটি পায়নি৷

অন্যান্য নীতিগুলিও উপলব্ধ, ইনপুটস্ট্রিমহ্যান্ডলার নামে পরিচিত একটি পৃথক ধরণের উপাদান ব্যবহার করে প্রয়োগ করা হয়।

আরো বিস্তারিত জানার জন্য সিঙ্ক্রোনাইজেশন দেখুন।

রিয়েল-টাইম স্ট্রীম

মিডিয়াপাইপ ক্যালকুলেটর গ্রাফগুলি প্রায়ই ইন্টারেক্টিভ অ্যাপ্লিকেশনগুলির জন্য ভিডিও বা অডিও ফ্রেমের স্ট্রিমগুলি প্রক্রিয়া করতে ব্যবহৃত হয়। সাধারণত, প্রদত্ত টাইমস্ট্যাম্পের জন্য তার সমস্ত ইনপুট প্যাকেট উপলব্ধ হওয়ার সাথে সাথে প্রতিটি ক্যালকুলেটর চলে। রিয়েল-টাইম গ্রাফগুলিতে ব্যবহৃত ক্যালকুলেটরগুলিকে ইনপুট টাইমস্ট্যাম্প সীমার উপর ভিত্তি করে আউটপুট টাইমস্ট্যাম্প সীমা নির্ধারণ করতে হবে যাতে ডাউনস্ট্রিম ক্যালকুলেটরগুলিকে অবিলম্বে নির্ধারিত করা যায়। বিস্তারিত জানার জন্য রিয়েল-টাইম স্ট্রীম দেখুন।

,

MediaPipe ফ্রেমওয়ার্ক ব্যবহার করার আগে, নিম্নলিখিত ধারণাগুলির সাথে নিজেকে পরিচিত করুন।

অধিকার

প্যাকেট

মৌলিক তথ্য প্রবাহ ইউনিট। একটি প্যাকেটে একটি সংখ্যাসূচক টাইমস্ট্যাম্প এবং একটি অপরিবর্তনীয় পেলোডের জন্য একটি ভাগ করা পয়েন্টার থাকে। পেলোড যেকোন C++ প্রকারের হতে পারে এবং পেলোডের ধরনকে প্যাকেটের ধরনও বলা হয়। প্যাকেট মূল্য শ্রেণী এবং সস্তায় অনুলিপি করা যেতে পারে. প্রতিটি অনুলিপি রেফারেন্স-গণনা শব্দার্থবিদ্যা সহ পেলোডের মালিকানা ভাগ করে। প্রতিটি কপির নিজস্ব টাইমস্ট্যাম্প আছে। এছাড়াও প্যাকেট দেখুন।

চিত্রলেখ

মিডিয়াপাইপ প্রক্রিয়াকরণ একটি গ্রাফের ভিতরে সঞ্চালিত হয়, যা নোডগুলির মধ্যে প্যাকেট প্রবাহের পথগুলিকে সংজ্ঞায়িত করে। একটি গ্রাফে যেকোনো সংখ্যক ইনপুট এবং আউটপুট থাকতে পারে এবং ডেটা প্রবাহ শাখা এবং একত্রিত হতে পারে। সাধারণত ডেটা সামনের দিকে প্রবাহিত হয়, তবে পিছনের লুপগুলি সম্ভব। বিস্তারিত জানার জন্য গ্রাফ দেখুন।

নোড

নোডগুলি প্যাকেট তৈরি করে এবং/অথবা গ্রাস করে এবং সেগুলিই যেখানে গ্রাফের বেশিরভাগ কাজ হয়। ঐতিহাসিক কারণে তারা "ক্যালকুলেটর" নামেও পরিচিত। প্রতিটি নোডের ইন্টারফেস অনেকগুলি ইনপুট এবং আউটপুট পোর্টকে সংজ্ঞায়িত করে, একটি ট্যাগ এবং/অথবা একটি সূচক দ্বারা চিহ্নিত করা হয়। বিস্তারিত জানার জন্য ক্যালকুলেটর দেখুন।

প্রবাহ

একটি স্ট্রিম হল দুটি নোডের মধ্যে একটি সংযোগ যা প্যাকেটের একটি ক্রম বহন করে, যার টাইমস্ট্যাম্পগুলি একঘেয়েভাবে বৃদ্ধি করা আবশ্যক।

পাশের প্যাকেট

নোডগুলির মধ্যে একটি সাইড প্যাকেট সংযোগ একটি একক প্যাকেট বহন করে (অনির্দিষ্ট টাইমস্ট্যাম্প সহ)। এটি কিছু ডেটা সরবরাহ করতে ব্যবহার করা যেতে পারে যা স্থির থাকবে, যেখানে একটি স্ট্রিম ডেটার একটি প্রবাহ উপস্থাপন করে যা সময়ের সাথে সাথে পরিবর্তিত হয়।

প্যাকেট পোর্ট

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

একটি পোর্টের প্রয়োজন হতে পারে, যার অর্থ গ্রাফটি বৈধ হওয়ার জন্য একটি সংযোগ তৈরি করতে হবে, বা ঐচ্ছিক, যার অর্থ এটি সংযোগহীন থাকতে পারে।

ইনপুট এবং আউটপুট

তথ্য প্রবাহ উৎস নোড থেকে উদ্ভূত হতে পারে, যার কোনো ইনপুট স্ট্রিম নেই এবং প্যাকেটগুলি স্বতঃস্ফূর্তভাবে তৈরি করে (যেমন একটি ফাইল থেকে পড়ার মাধ্যমে); অথবা গ্রাফ ইনপুট স্ট্রীম থেকে, যা একটি অ্যাপ্লিকেশন ফিড প্যাকেটগুলিকে একটি গ্রাফে তৈরি করতে দেয়।

একইভাবে, সিঙ্ক নোড রয়েছে যা ডেটা গ্রহণ করে এবং বিভিন্ন গন্তব্যে (যেমন একটি ফাইল, একটি মেমরি বাফার, ইত্যাদি) লিখতে পারে এবং একটি অ্যাপ্লিকেশন কলব্যাক ব্যবহার করে গ্রাফ থেকে আউটপুটও গ্রহণ করতে পারে।

রানটাইম আচরণ

গ্রাফ জীবনকাল

একবার একটি গ্রাফ শুরু হয়ে গেলে, এটি ডেটা প্রক্রিয়াকরণ শুরু করতে শুরু করা যেতে পারে, এবং প্রতিটি স্ট্রীম বন্ধ না হওয়া পর্যন্ত বা গ্রাফ বাতিল না হওয়া পর্যন্ত প্যাকেটের একটি স্ট্রীম প্রক্রিয়া করতে পারে। তারপর গ্রাফটি ধ্বংস বা আবার শুরু করা যেতে পারে।

নোড জীবনকাল

ফ্রেমওয়ার্ক একটি নোডে কল করবে তিনটি প্রধান আজীবন পদ্ধতি রয়েছে:

  • খুলুন: অন্য পদ্ধতির আগে একবার বলা হয়। এটি কল করা হলে, নোডের জন্য প্রয়োজনীয় সমস্ত ইনপুট সাইড প্যাকেট উপলব্ধ হবে।
  • প্রক্রিয়া: একাধিকবার বলা হয়, যখন নোডের ইনপুট নীতি অনুসারে একটি নতুন সেট ইনপুট পাওয়া যায়।
  • বন্ধ: একবার ডাকা, শেষে।

উপরন্তু, প্রতিটি ক্যালকুলেটর কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরকে সংজ্ঞায়িত করতে পারে, যা প্রক্রিয়াকৃত ডেটা থেকে স্বাধীন সম্পদ তৈরি এবং ডিলকেটিং করার জন্য দরকারী।

ইনপুট নীতি

ডিফল্ট ইনপুট নীতি হল টাইমস্ট্যাম্প দ্বারা প্যাকেটের নির্ধারক সমষ্টি। একটি নোড তার প্রক্রিয়া পদ্ধতির আহ্বানে একই সময়ে একই টাইমস্ট্যাম্পের জন্য সমস্ত ইনপুট গ্রহণ করে; এবং ক্রমাগত ইনপুট সেটগুলি তাদের টাইমস্ট্যাম্প ক্রমে প্রাপ্ত হয়। সমস্ত ইনপুট স্ট্রীমে একই টাইমস্ট্যাম্প সহ একটি প্যাকেট প্রাপ্ত না হওয়া পর্যন্ত কিছু প্যাকেটের প্রক্রিয়াকরণে বিলম্ব করতে হতে পারে, বা যতক্ষণ না এটি নিশ্চিত করা যায় যে সেই টাইমস্ট্যাম্প সহ একটি প্যাকেট সেই স্ট্রিমগুলিতে পৌঁছাবে না যা এটি পায়নি৷

অন্যান্য নীতিগুলিও উপলব্ধ, ইনপুটস্ট্রিমহ্যান্ডলার নামে পরিচিত একটি পৃথক ধরণের উপাদান ব্যবহার করে প্রয়োগ করা হয়।

আরো বিস্তারিত জানার জন্য সিঙ্ক্রোনাইজেশন দেখুন।

রিয়েল-টাইম স্ট্রীম

মিডিয়াপাইপ ক্যালকুলেটর গ্রাফগুলি প্রায়ই ইন্টারেক্টিভ অ্যাপ্লিকেশনগুলির জন্য ভিডিও বা অডিও ফ্রেমের স্ট্রিমগুলি প্রক্রিয়া করতে ব্যবহৃত হয়। সাধারণত, প্রদত্ত টাইমস্ট্যাম্পের জন্য তার সমস্ত ইনপুট প্যাকেট উপলব্ধ হওয়ার সাথে সাথে প্রতিটি ক্যালকুলেটর চলে। রিয়েল-টাইম গ্রাফগুলিতে ব্যবহৃত ক্যালকুলেটরগুলিকে ইনপুট টাইমস্ট্যাম্প সীমার উপর ভিত্তি করে আউটপুট টাইমস্ট্যাম্প সীমা নির্ধারণ করতে হবে যাতে ডাউনস্ট্রিম ক্যালকুলেটরগুলিকে অবিলম্বে নির্ধারিত করা যায়। বিস্তারিত জানার জন্য রিয়েল-টাইম স্ট্রীম দেখুন।