audio_stream_out স্ট্রাকট রেফারেন্স

audio_stream_out স্ট্রাকট রেফারেন্স

#include < audio.h >

ডেটা ক্ষেত্র

struct audio_stream সাধারণ
uint32_t(* get_latency )(const struct audio_stream_out *stream)
int(* সেট_ভলিউম )(স্ট্রাকট অডিও_স্ট্রিম_আউট *স্ট্রিম, বামে ভাসুন, ডানদিকে ভাসুন)
size_t(* লেখা _
int(* get_render_position )(const struct audio_stream_out *stream, uint32_t *dsp_frames)
int(* get_next_write_timestamp )(const struct audio_stream_out *stream, int64_t *টাইমস্ট্যাম্প)
int(* সেট_কলব্যাক )(স্ট্রাকট অডিও_স্ট্রিম_আউট *স্ট্রিম, স্ট্রিম_কলব্যাক_টি কলব্যাক, অকার্যকর *কুকি)
int(* বিরতি )(স্ট্রাকট অডিও_স্ট্রিম_আউট *স্ট্রিম)
int(* পুনরায় শুরু করুন )(struct audio_stream_out *স্ট্রিম)
int(* ড্রেন )(স্ট্রাকট audio_stream_out *স্ট্রিম, audio_drain_type_t টাইপ)
int(* ফ্লাশ )(স্ট্রাকট অডিও_স্ট্রিম_আউট *স্ট্রিম)
int(* get_presentation_position )(const struct audio_stream_out *stream, uint64_t *ফ্রেম, struct timespec *টাইমস্ট্যাম্প)

বিস্তারিত বিবরণ

audio_stream_out হল অডিও আউটপুট হার্ডওয়্যারের বিমূর্ততা ইন্টারফেস।

এটি অডিও আউটপুট হার্ডওয়্যার ড্রাইভারের বিভিন্ন বৈশিষ্ট্য সম্পর্কে তথ্য প্রদান করে।

ফাইল audio.h এর 276 লাইনে সংজ্ঞা।

ফিল্ড ডকুমেন্টেশন

struct audio_stream সাধারণ

অডিও স্ট্রিম আউট সাধারণ পদ্ধতি. এটি অডিও_স্ট্রিম_আউটের প্রথম সদস্য হতে হবে কারণ এই কাঠামোর ব্যবহারকারীরা অডিও_স্ট্রিম_আউট পয়েন্টারে একটি অডিও_স্ট্রিম কাস্ট করবে যেখানে এটি অডিও_স্ট্রিম একটি audio_stream_out উল্লেখ করে।

ফাইল audio.h এর 282 লাইনে সংজ্ঞা।

int(* ড্রেন)(struct audio_stream_out *স্ট্রিম, audio_drain_type_t টাইপ)

ড্রাইভার/হার্ডওয়্যার দ্বারা বাফার করা ডেটা প্লে হয়ে গেলে বিজ্ঞপ্তির অনুরোধ করে। নন-ব্লকিং মোড সক্ষম করার জন্য সেট_কলব্যাক() কে আগে কল করা হলে, ড্রেন() ব্লক করা উচিত নয়, পরিবর্তে এটি দ্রুত ফিরে আসা উচিত এবং কলব্যাকের মাধ্যমে ড্রেন সম্পূর্ণ হওয়ার কথা জানানো হবে। যদি set_callback() কল করা না হয়, তাহলে ড্রেন() সম্পূর্ণ না হওয়া পর্যন্ত ব্লক করতে হবে। যদি টাইপ==AUDIO_DRAIN_ALL, পূর্বে লিখিত সমস্ত ডেটা প্লে হয়ে গেলে ড্রেন সম্পূর্ণ হয়। যদি টাইপ==AUDIO_DRAIN_EARLY_NOTIFY হয়, ফ্রেমওয়ার্ককে ফাঁকবিহীন ট্র্যাক সুইচ করার জন্য সময় দেওয়ার জন্য বর্তমান ট্র্যাকের সমস্ত ডেটা প্লে হওয়ার কিছুক্ষণ আগে ড্রেন সম্পূর্ণ হয়।

ড্রেন অবশ্যই স্টপ() এবং ফ্লাশ() কলে অবিলম্বে ফিরে আসবে

অফলোড করা প্লেব্যাকের জন্য এই ফাংশনটির বাস্তবায়ন বাধ্যতামূলক।

ফাইল audio.h এর 372 লাইনে সংজ্ঞা।

int(* ফ্লাশ)(struct audio_stream_out *stream)

সারিবদ্ধ ডেটা ফ্লাশ করতে অডিও ড্রাইভারকে অবহিত করে। ফ্লাশ() কল করার আগে স্ট্রীম ইতিমধ্যেই বিরাম দিতে হবে।

অফলোড করা প্লেব্যাকের জন্য এই ফাংশনটির বাস্তবায়ন বাধ্যতামূলক।

ফাইল audio.h এর 380 লাইনে সংজ্ঞা।

uint32_t(* get_latency)(const struct audio_stream_out *stream)

মিলিসেকেন্ডে অডিও হার্ডওয়্যার ড্রাইভারের আনুমানিক লেটেন্সি ফেরত দিন।

ফাইল audio.h এর 287 লাইনে সংজ্ঞা।

int(* get_next_write_timestamp)(const struct audio_stream_out *stream, int64_t *টাইমস্ট্যাম্প)

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

ফাইল audio.h এর 324 লাইনে সংজ্ঞা।

int(* get_presentation_position)(const struct audio_stream_out *stream, uint64_t *ফ্রেম, struct timespec *টাইমস্ট্যাম্প)

একটি বহিরাগত পর্যবেক্ষকের কাছে উপস্থাপিত অডিও ফ্রেমের সংখ্যার একটি সাম্প্রতিক গণনা ফেরত দিন। এটি এমন ফ্রেমগুলিকে বাদ দেয় যা লেখা হয়েছে কিন্তু এখনও পাইপলাইনে রয়েছে৷ আউটপুট স্ট্যান্ডবাই এ প্রবেশ করলে গণনা শূন্যে রিসেট করা হয় না। এছাড়াও এই উপস্থাপনা গণনা অনুযায়ী CLOCK_MONOTONIC-এর মান প্রদান করে। প্রত্যাবর্তিত গণনাটি 'সাম্প্রতিক' বলে প্রত্যাশিত, তবে সবচেয়ে সাম্প্রতিক সম্ভাব্য মান হওয়ার প্রয়োজন নেই৷ যাইহোক, সংশ্লিষ্ট সময় যে গণনা ফেরত দেওয়া হয় তার সাথে সঙ্গতিপূর্ণ হওয়া উচিত। উদাহরণ: অনুমান করুন যে N+M ফ্রেমগুলি উপস্থাপন করা হয়েছে, যেখানে M একটি 'ছোট' সংখ্যা। তারপর N+M-এর পরিবর্তে N ফেরত দেওয়া অনুমোদিত, এবং টাইমস্ট্যাম্প N+M-এর পরিবর্তে N-এর সাথে মিলিত হওয়া উচিত। 'সাম্প্রতিক' এবং 'ছোট' শব্দটি সংজ্ঞায়িত করা হয়নি। তারা বাস্তবায়নের গুণমান প্রতিফলিত করে।

শুধুমাত্র 3.0 এবং উচ্চতর।

ফাইল audio.h এর 398 লাইনে সংজ্ঞা।

int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames)

ফাইল audio.h এর 317 লাইনে সংজ্ঞা।

int(* পজ)(struct audio_stream_out *stream)

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

অফলোড করা প্লেব্যাকের জন্য এই ফাংশনটির বাস্তবায়ন বাধ্যতামূলক।

ফাইল audio.h এর 345 লাইনে সংজ্ঞা।

int(* resume)(struct audio_stream_out *stream)

একটি বিরতির পরে প্লেব্যাক পুনরায় শুরু করার জন্য অডিও ড্রাইভারকে অবহিত করে৷ মিলিত বিরতি ছাড়া কল করা হলে ত্রুটি প্রদান করে।

অফলোড করা প্লেব্যাকের জন্য এই ফাংশনটির বাস্তবায়ন বাধ্যতামূলক।

ফাইল audio.h এর 353 লাইনে সংজ্ঞা।

int(* set_callback)(struct audio_stream_out *stream, stream_callback_t কলব্যাক, void *কুকি)

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

ফাইল audio.h এর 333 লাইনে সংজ্ঞা।

int(* set_volume)(struct audio_stream_out *stream, float left, float right)

হার্ডওয়্যারে অডিও মিক্সিং করা হয় এমন পরিস্থিতিতে এই পদ্ধতিটি ব্যবহার করুন। এই পদ্ধতিটি হার্ডওয়্যারের সাথে সরাসরি ইন্টারফেস হিসাবে কাজ করে, যা আপনাকে ফ্রেমওয়ার্কের মাধ্যমে সরাসরি ভলিউম সেট করতে দেয়। এই পদ্ধতিটি একাধিক PCM আউটপুট বা হার্ডওয়্যার এক্সিলারেটেড কোডেক তৈরি করতে পারে, যেমন MP3 বা AAC।

ফাইল audio.h এর 296 লাইনে সংজ্ঞা।

ssize_t(* লিখুন)(struct audio_stream_out *stream, const void *বাফার, size_t বাইট)

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

নন-ব্লকিং মোড সক্ষম করার জন্য সেট_কলব্যাক() কে আগে কল করা হলে write() ব্লক করার অনুমতি নেই। এটি শুধুমাত্র ড্রাইভার/হার্ডওয়্যার বাফারে ফিট করা বাইটের সংখ্যা লিখতে হবে এবং তারপরে এই বাইট গণনাটি ফেরত দিতে হবে। যদি এটি অনুরোধকৃত লেখার আকারের চেয়ে কম হয় তবে ড্রাইভার/হার্ডওয়্যার বাফারে বেশি স্থান পাওয়া গেলে কলব্যাক ফাংশনটি কল করা আবশ্যক।

ফাইল audio.h এর 311 লাইনে সংজ্ঞা।


এই কাঠামোর জন্য ডকুমেন্টেশন নিম্নলিখিত ফাইল থেকে তৈরি করা হয়েছিল:
  • hardware/libhardware/include/hardware/ audio.h