WebP কন্টেইনার API ডকুমেন্টেশন

WebP ছবির জন্য RIFF কন্টেইনার ম্যানিপুলেশন।

Mux API

রঙ প্রোফাইল, মেটাডেটা, অ্যানিমেশন এবং খণ্ডিত ছবিগুলির মতো বৈশিষ্ট্যগুলি ধারণকারী WebP কন্টেইনার চিত্রগুলিকে ম্যানিপুলেশন করার অনুমতি দেয়৷

কোড উদাহরণ

ইমেজ ডেটা, কালার প্রোফাইল এবং XMP মেটাডেটা দিয়ে একটি MUX তৈরি করুন

int copy_data = 0;
WebPMux* mux = WebPMuxNew();
// ... (Prepare image data).
WebPMuxSetImage(mux, &image, copy_data);
// ... (Prepare ICCP color profile data).
WebPMuxSetChunk(mux, "ICCP", &icc_profile, copy_data);
// ... (Prepare XMP metadata).
WebPMuxSetChunk(mux, "XMP ", &xmp, copy_data);
// Get data from mux in WebP RIFF format.
WebPMuxAssemble(mux, &output_data);
WebPMuxDelete(mux);
// ... (Consume output_data; e.g. write output_data.bytes to file).
WebPDataClear(&output_data);

একটি WebP ফাইল থেকে ছবি এবং রঙ প্রোফাইল ডেটা পান

int copy_data = 0;
// ... (Read data from file).
WebPMux* mux = WebPMuxCreate(&data, copy_data);
WebPMuxGetFrame(mux, 1, &image);
// ... (Consume image; e.g. call WebPDecode() to decode the data).
WebPMuxGetChunk(mux, "ICCP", &icc_profile);
// ... (Consume icc_data).
WebPMuxDelete(mux);
free(data);

একটি Mux বস্তুর জীবন

এনামস

// Error codes
typedef enum WebPMuxError {
  WEBP_MUX_OK                 =  1,
  WEBP_MUX_NOT_FOUND          =  0,
  WEBP_MUX_INVALID_ARGUMENT   = -1,
  WEBP_MUX_BAD_DATA           = -2,
  WEBP_MUX_MEMORY_ERROR       = -3,
  WEBP_MUX_NOT_ENOUGH_DATA    = -4
} WebPMuxError;

// IDs for different types of chunks.
typedef enum WebPChunkId {
  WEBP_CHUNK_VP8X,     // VP8X
  WEBP_CHUNK_ICCP,     // ICCP
  WEBP_CHUNK_ANIM,     // ANIM
  WEBP_CHUNK_ANMF,     // ANMF
  WEBP_CHUNK_ALPHA,    // ALPH
  WEBP_CHUNK_IMAGE,    // VP8/VP8L
  WEBP_CHUNK_EXIF,     // EXIF
  WEBP_CHUNK_XMP,      // XMP
  WEBP_CHUNK_UNKNOWN,  // Other chunks.
  WEBP_CHUNK_NIL
} WebPChunkId;

WebPGetMuxVersion()

মেজর/মাইন/রিভিশনের প্রতিটির জন্য 8 বিট ব্যবহার করে হেক্সাডেসিমেলে প্যাক করা mux লাইব্রেরির সংস্করণ নম্বর প্রদান করে। যেমন, v2.5.7 হল 0x020507

int WebPGetMuxVersion(void);

WebPMuxNew()

একটি খালি mux বস্তু তৈরি করে।

WebPMux* WebPMuxNew(void);
রিটার্নস
নতুন তৈরি খালি mux বস্তুর একটি পয়েন্টার.

WebPMuxDelete()

mux বস্তু মুছে দেয়।

void WebPMuxDelete(WebPMux* mux);
পরামিতি
mux -- (ইন/আউট) অবজেক্ট মুছে ফেলা হবে

Mux সৃষ্টি

WebPMuxCreate()

WebP RIFF ফর্ম্যাটে দেওয়া কাঁচা ডেটা থেকে একটি mux বস্তু তৈরি করে।

WebPMux* WebPMuxCreate(const WebPData* bitstream, int copy_data);
পরামিতি

bitstream -- (in) WebP RIFF ফরম্যাটে বিটস্ট্রিম ডেটা

copy_data -- (in) মান 1 নির্দেশ করে প্রদত্ত ডেটা mux-এ কপি করা হবে এবং মান 0 নির্দেশ করে যে ডেটা mux অবজেক্টে কপি করা হবে না।

রিটার্নস

প্রদত্ত ডেটা থেকে তৈরি mux বস্তুর একটি পয়েন্টার - সাফল্যের উপর।

NULL -- অবৈধ তথ্য বা মেমরি ত্রুটির ক্ষেত্রে।

অ-ইমেজ খণ্ড

WebPMuxSetChunk()

mux অবজেক্টে id fourcc এবং ডেটা chunk_data সহ একটি খণ্ড যোগ করে। একই আইডি সহ বিদ্যমান যেকোনো খণ্ড(গুলি) মুছে ফেলা হবে।

WebPMuxError WebPMuxSetChunk(WebPMux* mux,
                             const char fourcc[4],
                             const WebPData* chunk_data,
                             int copy_data);

দ্রষ্টব্য: শুধুমাত্র নন-ইমেজ সম্পর্কিত অংশগুলি খণ্ড API-এর মাধ্যমে পরিচালনা করা উচিত। (ছবির সম্পর্কিত অংশগুলি হল: "ANMF", "FRGM", "VP8", "VP8L" এবং "ALPH")। ছবি যোগ করতে, পেতে এবং মুছতে, WebPMuxSetImage() , WebPMuxPushFrame() , WebPMuxGetFrame() এবং WebPMuxDeleteFrame() ব্যবহার করুন।

পরামিতি

mux -- (ইন/আউট) অবজেক্ট যেখানে খণ্ডটি যোগ করতে হবে

fourcc -- (in) একটি অক্ষর বিন্যাস যেখানে প্রদত্ত খণ্ডের চারcc রয়েছে; যেমন, "ICCP", "XMP", "EXIF" ইত্যাদি।

chunk_data -- (in) খণ্ড ডেটা যোগ করতে হবে

copy_data -- (in) মান 1 নির্দেশ করে প্রদত্ত ডেটা mux-এ কপি করা হবে এবং মান 0 নির্দেশ করে যে ডেটা mux অবজেক্টে কপি করা হবে না।

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux, fourcc বা chunk_data NULL হয় অথবা যদি fourcc একটি চিত্র খণ্ডের সাথে মিলে যায়।

WEBP_MUX_MEMORY_ERROR -- মেমরি বরাদ্দকরণ ত্রুটিতে।

WEBP_MUX_OK -- সাফল্যের উপর।

WebPMuxGetChunk()

mux অবজেক্টে id fourcc সহ খণ্ডের ডেটার একটি রেফারেন্স পায়। কলারের ফেরত ডেটা মুক্ত করা উচিত নয়।

WebPMuxError WebPMuxGetChunk(const WebPMux* mux,
                             const char fourcc[4],
                             WebPData* chunk_data);
পরামিতি

mux -- (in) অবজেক্ট যেখান থেকে খণ্ড ডেটা আনা হবে

fourcc -- (in) একটি অক্ষর বিন্যাস যেখানে খণ্ডের চার cc রয়েছে; যেমন, "ICCP", "XMP", "EXIF" ইত্যাদি।

chunk_data -- (আউট) খণ্ড ডেটা ফেরত দিয়েছে

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux, fourcc বা chunk_data NULL হয় অথবা যদি fourcc একটি চিত্র খণ্ডের সাথে মিলে যায়।

WEBP_MUX_NOT_FOUND -- যদি mux-এ প্রদত্ত আইডি সহ একটি খণ্ড না থাকে।

WEBP_MUX_OK -- সাফল্যের উপর।

WebPMuxDeleteChunk()

mux অবজেক্ট থেকে প্রদত্ত ফোরসিসি দিয়ে খণ্ডটি মুছে দেয়।

WebPMuxError WebPMuxDeleteChunk(WebPMux* mux, const char fourcc[4]);
পরামিতি

mux - (ইন/আউট) অবজেক্ট যেখান থেকে খণ্ডটি মুছে ফেলা হবে

fourcc -- (in) একটি অক্ষর বিন্যাস যেখানে খণ্ডের চার cc রয়েছে; যেমন, "ICCP", "XMP", "EXIF" ইত্যাদি।

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux বা ফোরcc NULL হয় অথবা যদি ফোরcc কোনো ছবির অংশের সাথে মিলে যায়।

WEBP_MUX_NOT_FOUND -- যদি mux-এ প্রদত্ত চার সিসি সহ একটি খণ্ড না থাকে।

WEBP_MUX_OK -- সাফল্যের উপর।

ছবি

একটি একক ফ্রেম/খণ্ড সম্পর্কে ডেটা এনক্যাপসুলেট করে।

struct WebPMuxFrameInfo {
  WebPData    bitstream;  // image data: can be a raw VP8/VP8L bitstream
                          // or a single-image WebP file.
  int         x_offset;   // x-offset of the frame.
  int         y_offset;   // y-offset of the frame.
  int         duration;   // duration of the frame (in milliseconds).

  WebPChunkId id;         // frame type: should be one of WEBP_CHUNK_ANMF,
                          // WEBP_CHUNK_FRGM or WEBP_CHUNK_IMAGE
  WebPMuxAnimDispose dispose_method;  // Disposal method for the frame.
  WebPMuxAnimBlend   blend_method;    // Blend operation for the frame.
};

WebPMuxSetImage()

mux অবজেক্টে (অ-অ্যানিমেটেড এবং অ-খণ্ডিত) চিত্র সেট করে। দ্রষ্টব্য: যেকোন বিদ্যমান ছবি (ফ্রেম/টুকরা সহ) সরানো হবে।

WebPMuxError WebPMuxSetImage(WebPMux* mux,
                             const WebPData* bitstream,
                             int copy_data);
পরামিতি

mux -- (ইন/আউট) অবজেক্ট যেখানে ইমেজ সেট করতে হবে

বিটস্ট্রিম -- (ইন) একটি কাঁচা VP8/VP8L বিটস্ট্রিম বা একটি একক-ইমেজ ওয়েবপি ফাইল হতে পারে (অ-অ্যানিমেটেড এবং নন-ফ্র্যাগমেন্টেড)

copy_data -- (in) মান 1 নির্দেশ করে প্রদত্ত ডেটা mux-এ কপি করা হবে এবং মান 0 নির্দেশ করে যে ডেটা mux অবজেক্টে কপি করা হবে না।

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux NULL হয় বা বিটস্ট্রিম NULL হয়।

WEBP_MUX_MEMORY_ERROR -- মেমরি বরাদ্দকরণ ত্রুটিতে।

WEBP_MUX_OK -- সাফল্যের উপর।

WebPMuxPushFrame()

mux অবজেক্টের শেষে একটি ফ্রেম যোগ করে।

WebPMuxError WebPMuxPushFrame(WebPMux* mux,
                              const WebPMuxFrameInfo* frame,
                              int copy_data);

মন্তব্য:

  1. frame.id WEBP_CHUNK_ANMF বা WEBP_CHUNK_FRGM এর একটি হওয়া উচিত
  2. একটি নন-অ্যানিমেটেড নন-ফ্র্যাগমেন্টেড ইমেজ সেট করার জন্য, পরিবর্তে WebPMuxSetImage() ব্যবহার করুন।
  3. ধাক্কা দেওয়া ফ্রেমের ধরন অবশ্যই mux এর ফ্রেমের মতই হতে হবে।
  4. যেহেতু WebP শুধুমাত্র জোড় অফসেটগুলিকে সমর্থন করে, তাই যেকোনো বিজোড় অফসেট ব্যবহার করে একটি জোড় অবস্থানে স্ন্যাপ করা হবে: অফসেট &= ~1
পরামিতি

mux -- (ইন/আউট) অবজেক্ট যার সাথে ফ্রেম যোগ করতে হবে

ফ্রেম -- (ইন) ফ্রেম ডেটা।

copy_data -- (in) মান 1 নির্দেশ করে প্রদত্ত ডেটা mux-এ কপি করা হবে এবং মান 0 নির্দেশ করে যে ডেটা mux অবজেক্টে কপি করা হবে না।

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux বা ফ্রেম NULL হয় বা যদি ফ্রেমের বিষয়বস্তু অবৈধ হয়।

WEBP_MUX_MEMORY_ERROR -- মেমরি বরাদ্দকরণ ত্রুটিতে।

WEBP_MUX_OK -- সাফল্যের উপর।

WEBP_MUX_MEMORY_ERROR -- মেমরি বরাদ্দকরণ ত্রুটিতে।

WebPMuxGetFrame()

mux বস্তু থেকে nম ফ্রেম পায়। ফ্রেম->বিটস্ট্রিমের বিষয়বস্তু malloc() ব্যবহার করে বরাদ্দ করা হয়, এবং mux অবজেক্টের মালিকানাধীন নয়। এটি অবশ্যই WebPDataClear() কল করে কলার দ্বারা ডিললোকেট করা উচিত। nth=0 এর একটি বিশেষ অর্থ আছে - শেষ অবস্থান।

WebPMuxError WebPMuxGetFrame(const WebPMux* mux,
                             uint32_t nth,
                             WebPMuxFrameInfo* frame);
পরামিতি

mux -- (in) বস্তু যেখান থেকে তথ্য আনা হবে

nth -- (in) mux অবজেক্টে ফ্রেমের সূচক

ফ্রেম -- (আউট) প্রত্যাবর্তিত ফ্রেমের ডেটা

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux বা ফ্রেম NULL হয়।

WEBP_MUX_NOT_FOUND -- যদি mux অবজেক্টে nম ফ্রেম থেকে কম থাকে।

WEBP_MUX_BAD_DATA -- যদি mux-এ nম ফ্রেম খণ্ডটি অবৈধ হয়।

WEBP_MUX_OK -- সাফল্যের উপর।

WebPMuxDeleteFrame()

mux অবজেক্ট থেকে একটি ফ্রেম মুছে দেয়। nth=0 এর একটি বিশেষ অর্থ আছে - শেষ অবস্থান।

WebPMuxError WebPMuxDeleteFrame(WebPMux* mux, uint32_t nth);
পরামিতি

mux - (ইন/আউট) অবজেক্ট যেখান থেকে একটি ফ্রেম মুছে ফেলা হবে

nth -- (in) যে অবস্থান থেকে ফ্রেমটি মুছে ফেলা হবে

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux NULL হয়।

WEBP_MUX_NOT_FOUND -- মুছে ফেলার আগে mux অবজেক্টে nম ফ্রেম থেকে কম থাকলে।

WEBP_MUX_OK -- সাফল্যের উপর।

অ্যানিমেশন

অ্যানিমেশন পরামিতি

struct WebPMuxAnimParams {
  uint32_t bgcolor;  // Background color of the canvas stored (in MSB order) as:
                     // Bits 00 to 07: Alpha.
                     // Bits 08 to 15: Red.
                     // Bits 16 to 23: Green.
                     // Bits 24 to 31: Blue.
  int loop_count;    // Number of times to repeat the animation [0 = infinite].
};

WebPMuxSetAnimationParams()

mux অবজেক্টে অ্যানিমেশন প্যারামিটার সেট করে। যেকোন বিদ্যমান ANIM খণ্ডগুলি সরানো হবে৷

WebPMuxError WebPMuxSetAnimationParams(WebPMux* mux,
                                       const WebPMuxAnimParams* params);
পরামিতি

mux -- (ইন/আউট) অবজেক্ট যাতে ANIM খণ্ড সেট/যোগ করা হয়

প্যারামস -- (ইন) অ্যানিমেশন প্যারামিটার।

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux বা params NULL হয়।

WEBP_MUX_MEMORY_ERROR -- মেমরি বরাদ্দকরণ ত্রুটিতে।

WEBP_MUX_OK -- সাফল্যের উপর।

WebPMuxGetAnimationParams()

mux অবজেক্ট থেকে অ্যানিমেশন পরামিতি পায়।

WebPMuxError WebPMuxGetAnimationParams(const WebPMux* mux,
                                       WebPMuxAnimParams* params);
পরামিতি

mux -- (in) অবজেক্ট যেখান থেকে অ্যানিমেশন প্যারামিটার আনা হবে

params -- (আউট) অ্যানিমেশন প্যারামিটার ANIM খণ্ড থেকে বের করা হয়েছে

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux বা params NULL হয়।

WEBP_MUX_NOT_FOUND -- যদি ANIM খণ্ড mux বস্তুতে উপস্থিত না থাকে।

WEBP_MUX_OK -- সাফল্যের উপর।

বিবিধ ইউটিলিটিস

WebPMuxGetCanvasSize()

Mux বস্তু থেকে ক্যানভাসের আকার পায়।

WebPMuxError WebPMuxGetCanvasSize(const WebPMux* mux,
                                  int* width,
                                  int* height);

দ্রষ্টব্য: এই পদ্ধতিটি অনুমান করে যে VP8X খণ্ড, যদি উপস্থিত থাকে, তা আপ-টু-ডেট। অর্থাৎ, WebPMuxAssemble() বা WebPMuxCreate() কে শেষ কল করার পর থেকে mux অবজেক্টটি পরিবর্তন করা হয়নি।

পরামিতি

mux -- (in) অবজেক্ট যেখান থেকে ক্যানভাসের সাইজ আনতে হবে

প্রস্থ - (বাইরে) ক্যানভাসের প্রস্থ

উচ্চতা -- (আউট) ক্যানভাসের উচ্চতা

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux, প্রস্থ বা উচ্চতা NULL হয়।

WEBP_MUX_BAD_DATA -- যদি VP8X/VP8/VP8L খণ্ড বা ক্যানভাসের আকার অবৈধ হয়।

WEBP_MUX_OK -- সাফল্যের উপর।

WebPMuxGetFeatures()

mux অবজেক্ট থেকে বৈশিষ্ট্য পতাকা পায়।

WebPMuxError WebPMuxGetFeatures(const WebPMux* mux, uint32_t* flags);

দ্রষ্টব্য: এই পদ্ধতিটি অনুমান করে যে VP8X খণ্ড, যদি উপস্থিত থাকে, তা আপ-টু-ডেট। অর্থাৎ, WebPMuxAssemble() বা WebPMuxCreate() কে শেষ কল করার পর থেকে mux অবজেক্টটি পরিবর্তন করা হয়নি।

পরামিতি

mux -- (in) অবজেক্ট যেখান থেকে বৈশিষ্ট্যগুলি আনা হবে

পতাকা - (আউট) পতাকা যা উল্লেখ করে যে কোন বৈশিষ্ট্য mux বস্তুতে উপস্থিত রয়েছে। এটি বিভিন্ন পতাকা মানের একটি OR হবে। Enum WebPFeatureFlags পৃথক পতাকা মান পরীক্ষা করতে ব্যবহার করা যেতে পারে।

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux বা পতাকা NULL হয়।

WEBP_MUX_BAD_DATA -- যদি VP8X/VP8/VP8L খণ্ড বা ক্যানভাসের আকার অবৈধ হয়।

WEBP_MUX_OK -- সাফল্যের উপর।

WebPMuxNumChunks()

mux অবজেক্টে প্রদত্ত ট্যাগ মান থাকা খণ্ডের সংখ্যা পায়।

WebPMuxError WebPMuxNumChunks(const WebPMux* mux,
                              WebPChunkId id,
                              int* num_elements);
পরামিতি

mux -- (in) বস্তু যেখান থেকে তথ্য আনা হবে

id -- (in) খণ্ড আইডি খণ্ডের ধরন নির্দিষ্ট করে

num_elements -- প্রদত্ত খণ্ড আইডি সহ খণ্ডের সংখ্যা (আউট)

রিটার্নস

WEBP_MUX_INVALID_ARGUMENT -- যদি mux, বা num_elements NULL হয়।

WEBP_MUX_OK -- সাফল্যের উপর।

WebPMuxAssemble()

WebP RIFF ফর্ম্যাটে সমস্ত খণ্ড একত্রিত করে এবং assembled_data- এ ফেরত দেয়। এই ফাংশনটি mux অবজেক্টকেও বৈধ করে।

WebPMuxError WebPMuxAssemble(WebPMux* mux, WebPData* assembled_data);

দ্রষ্টব্য: assembled_data- এর বিষয়বস্তু উপেক্ষা করা হবে এবং ওভাররাইট করা হবে। এছাড়াও, assembled_data- এর বিষয়বস্তু malloc() ব্যবহার করে বরাদ্দ করা হয় এবং mux অবজেক্টের মালিকানাধীন নয়। এটি অবশ্যই WebPDataClear() কল করে কলার দ্বারা ডিললোকেট করা উচিত।

পরামিতি

mux - (ইন/আউট) বস্তু যার খণ্ডগুলি একত্রিত করা হয়

assembled_data -- (আউট) একত্রিত WebP ডেটা

রিটার্নস

WEBP_MUX_BAD_DATA -- যদি mux বস্তুটি অবৈধ হয়।

WEBP_MUX_INVALID_ARGUMENT -- যদি mux বা একত্রিত_ডেটা NULL হয়।

WEBP_MUX_MEMORY_ERROR -- মেমরি বরাদ্দকরণ ত্রুটিতে।

WEBP_MUX_OK -- সাফল্যের উপর।

WebPAnimEncoder API

এই API এনকোডিং (সম্ভবত) অ্যানিমেটেড WebP ছবিকে অনুমতি দেয়।

কোড উদাহরণ

WebPAnimEncoderOptions enc_options;
WebPAnimEncoderOptionsInit(&enc_options);
// Tune 'enc_options' as needed.
WebPAnimEncoder* enc = WebPAnimEncoderNew(width, height, &enc_options);
while(<there are more frames>) {
  WebPConfig config;
  WebPConfigInit(&config);
  // Tune 'config' as needed.
  WebPAnimEncoderAdd(enc, frame, timestamp_ms, &config);
}
WebPAnimEncoderAdd(enc, NULL, timestamp_ms, NULL);
WebPAnimEncoderAssemble(enc, webp_data);
WebPAnimEncoderDelete(enc);
// Write the 'webp_data' to a file, or re-mux it further.

typedef struct WebPAnimEncoder WebPAnimEncoder;  // Main opaque object.

গ্লোবাল অপশন

struct WebPAnimEncoderOptions {
  WebPMuxAnimParams anim_params;  // Animation parameters.
  int minimize_size;    // If true, minimize the output size (slow). Implicitly
                        // disables key-frame insertion.
  int kmin;
  int kmax;             // Minimum and maximum distance between consecutive key
                        // frames in the output. The library may insert some key
                        // frames as needed to satisfy this criteria.
                        // Note that these conditions should hold: kmax > kmin
                        // and kmin >= kmax / 2 + 1. Also, if kmax <= 0, then
                        // key-frame insertion is disabled; and if kmax == 1,
                        // then all frames will be key-frames (kmin value does
                        // not matter for these special cases).
  int allow_mixed;      // If true, use mixed compression mode; may choose
                        // either lossy and lossless for each frame.
  int verbose;          // If true, print info and warning messages to stderr.
};

WebPAnimEncoderOptionsInit()

পরিবর্তনের আগে একটি নতুন WebPAnimEncoderOptions কাঠামো শুরু করার জন্য সর্বদা কল করা উচিত। সংস্করণ অমিলের ক্ষেত্রে মিথ্যা প্রদান করে। WebPAnimEncoderOptionsInit() অবশ্যই enc_options অবজেক্ট ব্যবহার করার আগে সফল হয়েছে।

পরামিতি
enc_options -- (ইন/আউট) বিকল্পগুলি এনকোডিং অ্যানিমেশনের জন্য ব্যবহৃত হয়
রিটার্নস
সাফল্যের ক্ষেত্রে সত্য।
int WebPAnimEncoderOptionsInit(
    WebPAnimEncoderOptions* enc_options);

WebPAnimEncoderNew()

একটি WebPAnimEncoder অবজেক্ট তৈরি করে এবং আরম্ভ করে।

পরামিতি

প্রস্থ/উচ্চতা -- (ইন) ক্যানভাসের প্রস্থ এবং অ্যানিমেশনের উচ্চতা।

enc_options -- (in) এনকোডিং অপশন; যুক্তিসঙ্গত ডিফল্ট বাছাই করতে NULL পাস করা যেতে পারে।

রিটার্নস

নতুন তৈরি WebPAnimEncoder অবজেক্টের একটি পয়েন্টার, অথবা মেমরি ত্রুটির ক্ষেত্রে NULL।

WebPAnimEncoder* WebPAnimEncoderNew(
    int width, int height, const WebPAnimEncoderOptions* enc_options);

WebPAnimEncoderAdd()

WebP-এর জন্য প্রদত্ত ফ্রেমটি অপ্টিমাইজ করুন, এটি এনকোড করুন এবং WebPAnimEncoder অবজেক্টে যোগ করুন।

WebPAnimEncoderAdd- এ শেষ কল frame = NULL এর সাথে হওয়া উচিত, যা নির্দেশ করে যে আর কোনো ফ্রেম যোগ করা হবে না। এই কলটি শেষ ফ্রেমের সময়কাল নির্ধারণ করতেও ব্যবহৃত হয়।

পরামিতি

enc -- (ইন/আউট) অবজেক্ট যার সাথে ফ্রেম যোগ করতে হবে।

ফ্রেম -- (ইন/আউট) ফ্রেম ডেটা ARGB বা YUV(A) ফর্ম্যাটে। যদি এটি YUV(A) ফর্ম্যাটে হয়, তাহলে এটি ARGB-তে রূপান্তরিত হবে, যার ফলে একটি ছোট ক্ষতি হয়৷

timestamp_ms -- (in) এই ফ্রেমের টাইমস্ট্যাম্প মিলিসেকেন্ডে। একটি ফ্রেমের সময়কাল "পরবর্তী ফ্রেমের টাইমস্ট্যাম্প - এই ফ্রেমের টাইমস্ট্যাম্প" হিসাবে গণনা করা হবে। তাই, টাইমস্ট্যাম্প অ-হ্রাস ক্রমে হওয়া উচিত।

config -- (ইন) এনকোডিং অপশন; যুক্তিসঙ্গত ডিফল্ট বাছাই করতে NULL পাস করা যেতে পারে।

রিটার্নস

ত্রুটিতে, মিথ্যা ফেরত দেয় এবং frame->error_code যথাযথভাবে সেট করা হয়। অন্যথায়, সত্য ফিরে.

int WebPAnimEncoderAdd(
    WebPAnimEncoder* enc, struct WebPPicture* frame, int timestamp_ms,
    const struct WebPConfig* config);

WebPAnimEncoderAssemble()

একটি WebP বিটস্ট্রীমে এখন পর্যন্ত যোগ করা সমস্ত ফ্রেম একত্রিত করুন। এই কলের আগে WebPAnimEncoderAdd- এর সাথে frame = NULL ; যদি না হয়, শেষ ফ্রেমের সময়কাল অভ্যন্তরীণভাবে অনুমান করা হবে।

পরামিতি

enc -- (ইন/আউট) অবজেক্ট যেখান থেকে ফ্রেমগুলো একত্রিত করা হবে।

webp_data -- (আউট) জেনারেটেড WebP বিটস্ট্রিম।

রিটার্নস

সাফল্যের ক্ষেত্রে সত্য।

int WebPAnimEncoderAssemble(WebPAnimEncoder* enc, WebPData* webp_data);

WebPAnimEncoderGetError()

enc ব্যবহার করে সাম্প্রতিকতম কলের সাথে সম্পর্কিত ত্রুটি স্ট্রিং পান। ফেরত দেওয়া স্ট্রিংটি enc- এর মালিকানাধীন এবং শুধুমাত্র WebPAnimEncoderAdd() বা WebPAnimEncoderAssemble() বা WebPAnimEncoderDelete() এ পরবর্তী কল না হওয়া পর্যন্ত বৈধ।

পরামিতি
enc -- (ইন/আউট) অবজেক্ট যেখান থেকে এরর স্ট্রিং আনতে হবে।
রিটার্নস
NULL যদি enc NULL হয়। অন্যথায়, এনক করার শেষ কলটিতে ত্রুটি থাকলে ত্রুটির স্ট্রিং প্রদান করে, অথবা শেষ কলটি সফল হলে একটি খালি স্ট্রিং প্রদান করে।
const char* WebPAnimEncoderGetError(WebPAnimEncoder* enc);

WebPAnimEncoderDelete()

WebPAnimEncoder অবজেক্ট মুছে দেয়।

পরামিতি
enc -- (in/out) অবজেক্ট মুছে ফেলতে হবে
void WebPAnimEncoderDelete(WebPAnimEncoder* enc);

Demux API

WebP ফাইলগুলি থেকে চিত্র এবং বর্ধিত বিন্যাস ডেটা নিষ্কাশন সক্ষম করে৷

কোড উদাহরণ

সমস্ত ফ্রেম, ICC প্রোফাইল এবং EXIF/XMP মেটাডেটা এক্সট্র্যাক্ট করতে WebP ডেটা ডিমুক্সিং

WebPDemuxer* demux = WebPDemux(&webp_data);

uint32_t width = WebPDemuxGetI(demux, WEBP_FF_CANVAS_WIDTH);
uint32_t height = WebPDemuxGetI(demux, WEBP_FF_CANVAS_HEIGHT);
// ... (Get information about the features present in the WebP file).
uint32_t flags = WebPDemuxGetI(demux, WEBP_FF_FORMAT_FLAGS);

// ... (Iterate over all frames).
WebPIterator iter;
if (WebPDemuxGetFrame(demux, 1, &iter)) {
  do {
    // ... (Consume 'iter'; e.g. Decode 'iter.fragment' with WebPDecode(),
    // ... and get other frame properties like width, height, offsets etc.
    // ... see 'struct WebPIterator' below for more info).
  } while (WebPDemuxNextFrame(&iter));
  WebPDemuxReleaseIterator(&iter);
}

// ... (Extract metadata).
WebPChunkIterator chunk_iter;
if (flags & ICCP_FLAG) WebPDemuxGetChunk(demux, "ICCP", 1, &chunk_iter);
// ... (Consume the ICC profile in 'chunk_iter.chunk').
WebPDemuxReleaseChunkIterator(&chunk_iter);
if (flags & EXIF_FLAG) WebPDemuxGetChunk(demux, "EXIF", 1, &chunk_iter);
// ... (Consume the EXIF metadata in 'chunk_iter.chunk').
WebPDemuxReleaseChunkIterator(&chunk_iter);
if (flags & XMP_FLAG) WebPDemuxGetChunk(demux, "XMP ", 1, &chunk_iter);
// ... (Consume the XMP metadata in 'chunk_iter.chunk').
WebPDemuxReleaseChunkIterator(&chunk_iter);
WebPDemuxDelete(demux);

একটি ডেমুক্স অবজেক্টের জীবন

এনামস

typedef enum WebPDemuxState {
  WEBP_DEMUX_PARSE_ERROR    = -1,  // An error occurred while parsing.
  WEBP_DEMUX_PARSING_HEADER =  0,  // Not enough data to parse full header.
  WEBP_DEMUX_PARSED_HEADER  =  1,  // Header parsing complete,
                                   // data may be available.
  WEBP_DEMUX_DONE           =  2   // Entire file has been parsed.
} WebPDemuxState;

WebPGetDemuxVersion()

প্রতিটি প্রধান/অপ্রধান/সংশোধনের জন্য 8 বিট ব্যবহার করে হেক্সাডেসিমেলে প্যাক করা ডেমুক্স লাইব্রেরির সংস্করণ নম্বর প্রদান করে। যেমন, v2.5.7 হল 0x020507

int WebPGetDemuxVersion(void);

WebPDemux()

ডেটা দ্বারা প্রদত্ত সম্পূর্ণ WebP ফাইল পার্স করে।

WebPDemuxer WebPDemux(const WebPData* data);

সফল পার্সে একটি WebPDemuxer অবজেক্ট ফেরত দেয়, অন্যথায় NULL।

WebPDemuxPartial()

ডেটা দ্বারা প্রদত্ত সম্ভাব্য অসম্পূর্ণ WebP ফাইল পার্স করে৷ যদি রাজ্যটি নন-নাল হয় তবে এটি ডেমুক্সারের স্থিতি নির্দেশ করতে সেট করা হবে।

WebPDemuxer WebPDemuxPartial(const WebPData* data, WebPDemuxState* state);

ত্রুটির ক্ষেত্রে বা পার্সিং শুরু করার জন্য পর্যাপ্ত ডেটা না থাকলে NULL ফেরত দেয়; এবং সফল পার্সে একটি WebPDemuxer অবজেক্ট।

মনে রাখবেন যে WebPDemuxer ডেটা মেমরি বিভাগে অভ্যন্তরীণ পয়েন্টার রাখে। যদি এই ডেটাটি উদ্বায়ী হয়, তাহলে demuxer অবজেক্টটি মুছে ফেলা উচিত ( WebPDemuxDelete() কল করে ) এবং WebPDemuxPartial() নতুন ডেটাতে আবার কল করে। এটি সাধারণত একটি সস্তা অপারেশন।

WebPDemuxDelete()

dmux এর সাথে যুক্ত মেমরি মুক্ত করে।

void WebPDemuxDelete(WebPDemuxer* dmux);

ডেটা/তথ্য নিষ্কাশন

typedef enum WebPFormatFeature {
  WEBP_FF_FORMAT_FLAGS,      // bit-wise combination of WebPFeatureFlags
                             // corresponding to the 'VP8X' chunk (if present).
  WEBP_FF_CANVAS_WIDTH,
  WEBP_FF_CANVAS_HEIGHT,
  WEBP_FF_LOOP_COUNT,        // only relevant for animated file
  WEBP_FF_BACKGROUND_COLOR,  // idem.
  WEBP_FF_FRAME_COUNT        // Number of frames present in the demux object.
                             // In case of a partial demux, this is the number
                             // of frames seen so far, with the last frame
                             // possibly being partial.
} WebPFormatFeature;

WebPDemuxGetI()

dmux থেকে বৈশিষ্ট্য মান পান।

uint32_t WebPDemuxGetI(const WebPDemuxer* dmux, WebPFormatFeature feature);

দ্রষ্টব্য: মানগুলি শুধুমাত্র তখনই বৈধ যদি WebPDemux() ব্যবহার করা হয় বা WebPDemuxPartial() একটি স্থিতি ফিরিয়ে দেয় > WEBP_DEMUX_PARSING_HEADER

ফ্রেম পুনরাবৃত্তি

struct WebPIterator {
  int frame_num;
  int num_frames;          // equivalent to WEBP_FF_FRAME_COUNT.
  int fragment_num;
  int num_fragments;
  int x_offset, y_offset;  // offset relative to the canvas.
  int width, height;       // dimensions of this frame or fragment.
  int duration;            // display duration in milliseconds.
  WebPMuxAnimDispose dispose_method;  // dispose method for the frame.
  int complete;   // true if 'fragment' contains a full frame. partial images
                  // may still be decoded with the WebP incremental decoder.
  WebPData fragment;  // The frame or fragment given by 'frame_num' and
                      // 'fragment_num'.
  int has_alpha;      // True if the frame or fragment contains transparency.
  WebPMuxAnimBlend blend_method;  // Blend operation for the frame.
};

WebPDemuxGetFrame()

dmux থেকে ফ্রেম frame_number পুনরুদ্ধার করে।

int WebPDemuxGetFrame(const WebPDemuxer* dmux,
                      int frame_number,
                      WebPIterator* iter);

iter->ফাংশন এই ফাংশন থেকে ফিরে প্রথম খণ্ডের দিকে নির্দেশ করে। WebPDemuxSelectFragment() ব্যবহার করে পৃথক টুকরা বের করা যেতে পারে। ফ্রেম_সংখ্যা 0 এর সমান সেট করলে ছবির শেষ ফ্রেমটি ফিরে আসবে।

dmux NULL হলে বা ফ্রেম ফ্রেম_সংখ্যা উপস্থিত না থাকলে মিথ্যা প্রদান করে। ইটারেটরের ব্যবহার সম্পূর্ণ হলে WebPDemuxReleaseIterator() কে কল করুন।

দ্রষ্টব্য: dmux অবশ্যই iter এর জীবনকাল ধরে থাকবে।

WebPDemuxNextFrame() , WebPDemuxPrevFrame()

পরবর্তী ( iter->frame_num + 1) বা পূর্ববর্তী ( iter->frame_num - 1) ফ্রেমে নির্দেশ করতে iter->fragment সেট করে। এই ফাংশন লুপ না.

int WebPDemuxNextFrame(WebPIterator* iter);
int WebPDemuxPrevFrame(WebPIterator* iter);

সাফল্যের উপর সত্য ফিরে আসে, অন্যথায় মিথ্যা।

WebPDemuxSelectFragment()

খণ্ড সংখ্যা প্রতিফলিত করতে iter->fragment সেট করে fragment_num .

int WebPDemuxSelectFragment(WebPIterator* iter, int fragment_num);

ফ্র্যাগমেন্ট fragment_num উপস্থিত থাকলে সত্য দেখায়, অন্যথায় মিথ্যা।

WebPDemuxReleaseIterator()

iter এর সাথে যুক্ত যেকোন মেমরি রিলিজ করে।

void WebPDemuxReleaseIterator(WebPIterator* iter);

একই iter-এ WebPDemuxGetChunk() এ পরবর্তী যেকোনো কল করার আগে অবশ্যই কল করতে হবে। এছাড়াও, WebPDemuxDelete() এর সাথে সম্পর্কিত WebPDemuxer ধ্বংস করার আগে অবশ্যই কল করতে হবে।

খণ্ড পুনরাবৃত্তি

struct WebPChunkIterator {
  // The current and total number of chunks with the fourcc given to
  // WebPDemuxGetChunk().
  int chunk_num;
  int num_chunks;
  WebPData chunk;    // The payload of the chunk.
};

WebPDemuxGetChunk()

dmux থেকে id fourcc সহ খণ্ডের chunk_number ইন্সট্যান্স উদ্ধার করে।

int WebPDemuxGetChunk(const WebPDemuxer* dmux,
                      const char fourcc[4], int chunk_number,
                      WebPChunkIterator* iter);

fourcc হল একটি ক্যারেক্টার অ্যারে যাতে ফেরার জন্য খণ্ডের চারcc থাকে, যেমন, "ICCP", "XMP", "EXIF" ইত্যাদি।

0 এর সমান খণ্ড_সংখ্যা সেট করা একটি সেটের শেষ খণ্ডটি ফিরিয়ে দেবে।

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

দ্রষ্টব্য: dmux অবশ্যই পুনরাবৃত্তিকারীর জীবনকাল ধরে থাকবে।

WebPDemuxNextChunk() , WebPDemuxPrevChunk()

পরবর্তী ( iter->chunk_num + 1) বা পূর্ববর্তী ( iter->chunk_num - 1) খণ্ডে নির্দেশ করতে iter->খণ্ড সেট করে। এই ফাংশন লুপ না.

int WebPDemuxNextChunk(WebPChunkIterator* iter);
int WebPDemuxPrevChunk(WebPChunkIterator* iter);

সাফল্যের উপর সত্য ফিরে আসে, অন্যথায় মিথ্যা।

WebPDemuxReleaseChunkIterator()

iter এর সাথে যুক্ত যেকোন মেমরি রিলিজ করে।

void WebPDemuxReleaseChunkIterator(WebPChunkIterator* iter);

WebPDemuxDelete() এর সাথে সম্পর্কিত WebPDemuxer ধ্বংস করার আগে অবশ্যই কল করতে হবে।

WebPAnimDecoder API

এই API ডিকোডিং (সম্ভবত) অ্যানিমেটেড WebP ছবি অনুমতি দেয়।

কোড উদাহরণ

WebPAnimDecoderOptions dec_options;
WebPAnimDecoderOptionsInit(&dec_options);
// Tune 'dec_options' as needed.
WebPAnimDecoder* dec = WebPAnimDecoderNew(webp_data, &dec_options);
WebPAnimInfo anim_info;
WebPAnimDecoderGetInfo(dec, &anim_info);
for (uint32_t i = 0; i < anim_info.loop_count; ++i) {
  while (WebPAnimDecoderHasMoreFrames(dec)) {
    uint8_t* buf;
    int timestamp;
    WebPAnimDecoderGetNext(dec, &buf, &timestamp);
    // ... (Render 'buf' based on 'timestamp').
    // ... (Do NOT free 'buf', as it is owned by 'dec').
  }
  WebPAnimDecoderReset(dec);
}
const WebPDemuxer* demuxer = WebPAnimDecoderGetDemuxer(dec);
// ... (Do something using 'demuxer'; e.g. get EXIF/XMP/ICC data).
WebPAnimDecoderDelete(dec);

typedef struct WebPAnimDecoder WebPAnimDecoder;  // Main opaque object.

গ্লোবাল অপশন

struct WebPAnimDecoderOptions {
  // Output colorspace. Only the following modes are supported:
  // MODE_RGBA, MODE_BGRA, MODE_rgbA and MODE_bgrA.
  WEBP_CSP_MODE color_mode;
  int use_threads;           // If true, use multi-threaded decoding.
};

WebPAnimDecoderOptionsInit()

পরিবর্তনের আগে একটি নতুন WebPAnimDecoderOptions কাঠামো শুরু করার জন্য সর্বদা কল করা উচিত। সংস্করণ অমিলের ক্ষেত্রে মিথ্যা প্রদান করে। WebPAnimDecoderOptionsInit() dec_options অবজেক্ট ব্যবহার করার আগে অবশ্যই সফল হয়েছে।

পরামিতি

dec_options -- (ইন/আউট) বিকল্পগুলি ডিকোডিং অ্যানিমেশনের জন্য ব্যবহৃত হয়

রিটার্নস
সাফল্যের ক্ষেত্রে সত্য
int WebPAnimDecoderOptionsInit(
    WebPAnimDecoderOptions* dec_options);

WebPAnimDecoderNew()

একটি WebPAnimDecoder অবজেক্ট তৈরি করে এবং আরম্ভ করে।

পরামিতি

webp_data -- (in) WebP bitstream. আউটপুট WebPAnimDecoder অবজেক্টের জীবদ্দশায় এটি অপরিবর্তিত থাকা উচিত।

dec_options -- (ইন) ডিকোডিং অপশন। যুক্তিসঙ্গত ডিফল্ট নির্বাচন করতে NULL পাস করা যেতে পারে (বিশেষত, রঙ মোড MODE_RGBA বাছাই করা হবে)।

রিটার্নস

পার্সিং ত্রুটি, অবৈধ বিকল্প বা মেমরি ত্রুটির ক্ষেত্রে সদ্য নির্মিত WebPAnimDecoder অবজেক্টের একটি পয়েন্টার বা NULL।

WebPAnimDecoder* WebPAnimDecoderNew(
    const WebPData* webp_data, const WebPAnimDecoderOptions* dec_options);

অ্যানিমেশন সম্পর্কে বিশ্বব্যাপী তথ্য।

struct WebPAnimInfo {
  uint32_t canvas_width;
  uint32_t canvas_height;
  uint32_t loop_count;
  uint32_t bgcolor;
  uint32_t frame_count;
};

WebPAnimDecoderGetInfo()

অ্যানিমেশন সম্পর্কে বিশ্বব্যাপী তথ্য পান।

পরামিতি

dec -- (in) ডিকোডার ইনস্ট্যান্স থেকে তথ্য পেতে।

তথ্য -- (আউট) অ্যানিমেশন থেকে আনা বিশ্বব্যাপী তথ্য।

রিটার্নস

সাফল্যের ক্ষেত্রে সত্য।

int WebPAnimDecoderGetInfo(const WebPAnimDecoder* dec,
                           WebPAnimInfo* info);

WebPAnimDecoderGetNext()

WebPAnimDecoderNew() এ সরবরাহ করা বিকল্পগুলির উপর ভিত্তি করে ডিসেম্বর থেকে পরবর্তী ফ্রেমটি আনুন। এটি একটি সম্পূর্ণ পুনর্গঠিত ক্যানভাস হবে canvas_width * 4 * canvas_height , এবং শুধুমাত্র ফ্রেমের উপ-আয়তক্ষেত্র নয়। রিটার্ন করা বাফার buf শুধুমাত্র WebPAnimDecoderGetNext() , WebPAnimDecoderReset() বা WebPAnimDecoderDelete() এ পরবর্তী কল না হওয়া পর্যন্ত বৈধ।

পরামিতি

dec -- (ইন/আউট) ডিকোডার উদাহরণ যেখান থেকে পরবর্তী ফ্রেমটি আনতে হবে।

buf - (আউট) ডিকোডেড ফ্রেম।

টাইমস্ট্যাম্প - মিলিসেকেন্ডে ফ্রেমের টাইমস্ট্যাম্প।

রিটার্নস

যদি কোনো আর্গুমেন্ট NULL হয়, অথবা যদি পার্সিং বা ডিকোডিং ত্রুটি থাকে, অথবা যদি আর কোনো ফ্রেম না থাকে তাহলে মিথ্যা। অন্যথায়, সত্য ফিরে.

int WebPAnimDecoderGetNext(WebPAnimDecoder* dec,
                           uint8_t** buf, int* timestamp);

WebPAnimDecoderHasMoreFrames()

ডিকোড করার জন্য আরও ফ্রেম বাকি আছে কিনা তা পরীক্ষা করুন।

পরামিতি
dec -- (in) ডিকোডার উদাহরণ চেক করতে হবে।
রিটার্নস
সত্য যদি dec NULL না হয় এবং কিছু ফ্রেম এখনও ডিকোড করা বাকি থাকে। অন্যথায়, মিথ্যা ফেরত দেয়।
int WebPAnimDecoderHasMoreFrames(const WebPAnimDecoder* dec);

WebPAnimDecoderReset()

WebPAnimDecoder অবজেক্ট রিসেট করে, যাতে WebPAnimDecoderGetNext() পরবর্তী কল 1ম ফ্রেম থেকে ডিকোডিং পুনরায় শুরু হবে। এটি সহায়ক হবে যখন সমস্ত ফ্রেমকে একাধিকবার ডিকোড করতে হবে (যেমন info.loop_count বার) dec অবজেক্টকে ধ্বংস এবং পুনরায় তৈরি না করে।

পরামিতি
dec -- (ইন/আউট) ডিকোডার ইনস্ট্যান্স রিসেট করতে হবে
void WebPAnimDecoderReset(WebPAnimDecoder* dec);

WebPAnimDecoderGetDemuxer()

অভ্যন্তরীণ ডিমুক্সার অবজেক্টটি ধরুন।

Demuxer অবজেক্ট পাওয়া উপযোগী হতে পারে যদি কেউ শুধুমাত্র demuxer এর মাধ্যমে উপলব্ধ অপারেশন ব্যবহার করতে চায়; যেমন XMP/EXIF/ICC মেটাডেটা পেতে। প্রত্যাবর্তিত demuxer অবজেক্টটি dec- এর মালিকানাধীন এবং শুধুমাত্র WebPAnimDecoderDelete() এ পরবর্তী কল না হওয়া পর্যন্ত বৈধ।

পরামিতি
dec -- (in) ডিকোডার উদাহরণ যেখান থেকে demuxer অবজেক্ট আনা হবে।
const WebPDemuxer* WebPAnimDecoderGetDemuxer(const WebPAnimDecoder* dec);

WebPAnimDecoderDelete()

WebPAnimDecoder অবজেক্ট মুছে দেয়।

পরামিতি
dec -- (ইন/আউট) ডিকোডার উদাহরণ মুছে ফেলা হবে।
রিটার্নস
সাফল্যের ক্ষেত্রে সত্য।
void WebPAnimDecoderDelete(WebPAnimDecoder* dec);

সাধারণ ডেটা প্রকার

এনামস

typedef enum WebPFeatureFlags {
  FRAGMENTS_FLAG  = 0x00000001,
  ANIMATION_FLAG  = 0x00000002,
  XMP_FLAG        = 0x00000004,
  EXIF_FLAG       = 0x00000008,
  ALPHA_FLAG      = 0x00000010,
  ICCP_FLAG       = 0x00000020
} WebPFeatureFlags;

// Dispose method (animation only). Indicates how the area used by the current
// frame is to be treated before rendering the next frame on the canvas.
typedef enum WebPMuxAnimDispose {
  WEBP_MUX_DISPOSE_NONE,       // Do not dispose.
  WEBP_MUX_DISPOSE_BACKGROUND  // Dispose to background color.
} WebPMuxAnimDispose;

// Blend operation (animation only). Indicates how transparent pixels of the
// current frame are blended with those of the previous canvas.
typedef enum WebPMuxAnimBlend {
  WEBP_MUX_BLEND,              // Blend.
  WEBP_MUX_NO_BLEND            // Do not blend.
} WebPMuxAnimBlend;

WebPDataInit()

webp_data অবজেক্টের বিষয়বস্তু ডিফল্ট মান সহ শুরু করে।

void WebPDataInit(WebPData* webp_data);

WebPDataClear()

free() কল করে webp_data অবজেক্টের বিষয়বস্তু সাফ করে। বস্তু নিজেই ডিলোকেট না.

void WebPDataClear(WebPData* webp_data);

WebPDataCopy()

dst- এর জন্য প্রয়োজনীয় স্টোরেজ বরাদ্দ করে এবং src- এর বিষয়বস্তু কপি করে। সফলতার উপর সত্য ফিরে আসে।

int WebPDataCopy(const WebPData* src, WebPData* dst);