تنسيق ملف تبادل الموارد
تنسيق تبادل الملفات للموارد ( RIFF ) هو تنسيق عام لحاوية الملفات لتخزين البيانات في أجزاء مُوسومة . [ 2 ] يُستخدم بشكل أساسي للصوت والفيديو، على الرغم من إمكانية استخدامه لأنواع البيانات المختلفة. [ 3 ]
يُعرف تطبيق مايكروسوفت في الغالب من خلال تنسيقات الحاويات AVI و ANI و WAV ، والتي تستخدم RIFF كأساس لها. [ 4 ]
تاريخ
طُرح تنسيق RIFF عام 1991 من قِبل مايكروسوفت وآي بي إم، واستُخدم كتنسيق افتراضي لملفات الوسائط المتعددة في نظام ويندوز 3.1 . وهو مُشتق من تنسيق تبادل الملفات ( IFF) الذي طرحته شركة إلكترونيك آرتس عام 1985 على جهاز أميغا . يستخدم IFF نظام الترتيب الكبير (Big-Endian) الخاص بمعالج موتورولا 68000 في جهاز أميغا ، بينما في RIFF تُخزَّن الأعداد الصحيحة متعددة البايتات بنظام الترتيب الصغير (Little-Endian) الخاص بمعالجات x86 المستخدمة في أجهزة الكمبيوتر الشخصية المتوافقة مع آي بي إم . كما طُرح تنسيق RIFX، وهو نظام الترتيب الكبير (Big-Endian).
في عام 2010، قدمت جوجل تنسيق الصور WebP ، الذي يستخدم RIFF كحاوية. [ 5 ]
توضيح
تتكون ملفات RIFF بالكامل من " أجزاء ". ويكون التنسيق العام مطابقًا لتنسيق IFF ، باستثناء ترتيب البايتات كما ذكرنا سابقًا، والمعنى المختلف لأسماء الأجزاء.
جميع الأجزاء لها التنسيق التالي:
- 4 بايت: معرف ASCII لهذه الكتلة (الأمثلة هي "fmt " و "data"؛ لاحظ المسافة في "fmt ").
- 4 بايت: عدد صحيح غير موقع، صغير النهاية، 32 بت بطول هذه القطعة (باستثناء هذا الحقل نفسه ومعرف القطعة).
- حقل ذو حجم متغير: بيانات الجزء نفسها، بالحجم المحدد في الحقل السابق.
- بايت حشو، إذا لم يكن طول الجزء زوجيًا.
يُعرّف مُعرّفان للأجزاء، هما "RIFF" و"LIST"، جزءًا يمكن أن يحتوي على أجزاء فرعية. بيانات أجزاء RIFF وLIST (التي تظهر بعد المُعرّف والطول) لها التنسيق التالي:
- 4 بايتات: معرف ASCII لهذا الجزء المحدد من RIFF أو LIST (بالنسبة لـ RIFF في الحالة النموذجية، تصف هذه البايتات الأربعة محتوى الملف بأكمله، مثل "AVI" أو "WAVE").
- باقي البيانات: أجزاء فرعية.
يتكون الملف نفسه من جزء RIFF واحد، والذي يمكن أن يحتوي بعد ذلك على أجزاء فرعية أخرى: وبالتالي، فإن البايتات الأربعة الأولى من ملف RIFF المنسق بشكل صحيح ستشكل كلمة "RIFF".
يمكن العثور على مزيد من المعلومات حول تنسيق RIFF في مقالة تنسيق ملف التبادل .
RF64 هو تنسيق ملفات متعدد القنوات يعتمد على مواصفات RIFF، وقد طوّره اتحاد البث الأوروبي . وهو متوافق مع BWF ويسمح بأحجام ملفات تتجاوز 4 جيجابايت . ويتحقق ذلك من خلال توفير جزء "ds64" بحجم 64 بت (8 بايت).
استخدام جزء المعلومات
تتيح وحدة INFO الاختيارية إضافة معلومات إلى ملفات RIFF، مصنفة ضمن فئات محددة مسبقًا، مثل حقوق النشر ("ICOP")، والتعليقات ("ICMT")، والفنان ("IART")، وذلك بطريقة موحدة. ويمكن قراءة هذه التفاصيل من ملف RIFF حتى لو لم يتم التعرف على باقي تنسيق الملف. كما يسمح المعيار باستخدام حقول مُعرَّفة من قِبل المستخدم. وينبغي على المبرمجين الذين يعتزمون استخدام حقول غير قياسية أن يضعوا في اعتبارهم أن نفس مُعرِّف الوحدة الفرعية غير القياسي قد يُستخدم من قِبل تطبيقات مختلفة بطرق مختلفة (وربما غير متوافقة).
مشاكل التوافق
صعوبات أولية مع ملفات MIDI
تماشيًا مع سياستها المتمثلة في استخدام صيغة RIFF لجميع ملفات الوسائط المتعددة في نظام التشغيل Windows 3.1، قدمت مايكروسوفت صيغة جديدة لملف MIDI المستخدم لتخزين معلومات الأغاني التي تُشغل على الآلات الموسيقية الإلكترونية. تتكون صيغة MIDI الخاصة بمايكروسوفت من ملف MIDI قياسي مُغلف بملف RIFF، ويحمل امتداد RMI . ولأن صيغة MIDI الحالية تدعم بالفعل معلومات "الوسم" المضمنة، فقد تسبب ذلك في مشكلة التعامل مع صيغتين مختلفتين لنفس نوع المعلومات.
وقد تبنت رابطة مصنعي MIDI منذ ذلك الحين تنسيق ملف MIDI القائم على RIFF، واستخدمته كأساس لـ "ملف MIDI موسع" يتضمن أيضًا بيانات الآلة بتنسيق " DLS "، مضمنة داخل ملف .RMI نفسه.
مشاكل في وضع أجزاء المعلومات
لأغراض الفهرسة، يُعدّ الموضع الأمثل لجزء المعلومات (INFO) هو قرب بداية الملف. مع ذلك، ولأنّ جزء المعلومات اختياري، فإنه غالبًا ما يُحذف من المواصفات التفصيلية لتنسيقات الملفات الفردية، مما يُؤدي إلى بعض الالتباس حول الموضع الصحيح لهذا الجزء داخل الملف.
عند التعامل مع ملفات الوسائط الكبيرة، قد يؤدي توسيع أو تقليص جزء INFO أثناء تعديل البيانات الوصفية إلى قراءة قسم "البيانات" التالي من الملف وإعادة كتابته على القرص لاستيعاب حجم رأس الملف الجديد. ونظرًا لأن حجم ملفات الوسائط قد يصل إلى عدة غيغابايت، فإن هذه العملية قد تستهلك مساحة كبيرة من القرص. يتمثل أحد الحلول في إضافة بيانات وهمية (باستخدام "جزء وهمي" أو "جزء إضافي") إلى جزء INFO الرئيسي عند إنشاء الملف. يمكن بعد ذلك توسيع أو تقليص حقل "البيانات الوهمية" لاحقًا للحفاظ على الحجم الإجمالي لرأس الملف ثابتًا: يمكن لبرنامج مصمم بذكاء استبدال رأس الملف فقط عند تغيير بيانات الوسوم، دون تعديل أو نقل محتوى الملف الرئيسي.
حاولت بعض البرامج معالجة المشكلة بوضع جزء INFO في نهاية ملف الوسائط، بعد متن الملف الرئيسي. وقد نتج عن ذلك اصطلاحان مختلفان لوضع أجزاء INFO، مع ما يترتب على ذلك من خطر تجاهل بعض البرامج لبيانات INFO أو استبدالها نهائيًا أثناء التحرير. أما البرامج الأكثر تطورًا، فتأخذ في الحسبان احتمالية وضع أجزاء INFO "غير المتوقع" في الملفات وتستجيب وفقًا لذلك. على سبيل المثال، عندما يصادف برنامج تحرير الصوت Audacity ملف WAV يحتوي على بيانات INFO في نهايته، فإنه سيتعرف على البيانات ويقرأها بشكل صحيح، ولكن عند الحفظ، سيعيد وضع جزء INFO إلى رأس الملف.
على الرغم من أن برنامج CorelDRAW 10 يستخدم ظاهريًا بنية ملفات RIFF، إلا أن الإصدار الأولي للبرنامج وضع جزء INFO في النهاية، مما أدى إلى عدم عرض أي صورة نقطية مضمنة في معاينة الملفات ضمن مدير ملفات ويندوز افتراضيًا. وتعمل أداة "التصحيح" المرفقة بالبرنامج على إصلاح هذه المشكلة.
علامات معلومات RIFF
توجد علامات معلومات RIFF في ملفات الصوت WAV وملفات الفيديو AVI.
| معرف العلامة | اسم العلامة | قابلة للكتابة | القيم / ملاحظات |
|---|---|---|---|
| DTIM | التاريخ والوقت الأصلي | شمال | قيم تنسيق ملف تعريف ICC "dtim". |
| شريط | اسم الشريط | شمال |
تحويل وقت DTIM إلى الوقت العادي
يتكون الحقل من قيمتين (v[0] و v[1]) مفصولتين بمسافة (0x20). مثال على الكود:
// الوقت بالثواني - "دمج" عناصر التاريخ والوقت باستخدام فاصلة عشرية TimeInSeconds = ( v [ 0 ] * ( 2 ^ 32 ) + v [ 1 ]) * 10 ^ ( -7 );// تحويل أساس التوقيت من 1 يناير 1601 إلى 1 يناير 1970 في حقبة يونكس (369 سنة وأيام كبيسة) UnixTimeStamp = TimeInSeconds - 134774 * 24 * 3600 ;بعض أنواع ملفات RIFF الشائعة
- WAV (صوت ويندوز)
- AVI (Windows audiovisual)
- RMI (Windows "RIFF MIDIfile")
- ملف CDR (ملف رسومات متجهية من برنامج CorelDRAW)
- مؤشرات ويندوز المتحركة ( ANI )
- بال (لوحة الألوان)
- DLS (أصوات قابلة للتنزيل)
- WebP (تنسيق صور طورته جوجل)
- XMA (تنسيق صوتي لجهاز مايكروسوفت إكس بوكس 360 يعتمد على WMA Pro )
- SF(1/2/3) (إصدارات SoundFont 1 و 2 و 3 المصممة لتخزين عينات الآلات الموسيقية)
انظر أيضاً
- IFF ( تنسيق big-endian الذي اشتُق منه RIFF)
- الاتحاد الهندي لكرة القدم
- تنسيق موجة البث BWF
- TLV (التنسيق العام الذي يعد RIFF مثالاً عليه)
- FourCC (أسلوب تحديد الأجزاء المستخدم في العديد من تنسيقات TLV، بما في ذلك IFF، كرقم سحري مطول )
مراجع
- ↑ RIFF (تنسيق ملف تبادل الموارد) (مسودة كاملة). استدامة التنسيقات الرقمية. واشنطن العاصمة: مكتبة الكونغرس. 16 سبتمبر 2004. تم الاطلاع عليه بتاريخ 13 ديسمبر 2021 .
- ↑ مواصفات واجهة برمجة الوسائط المتعددة والبيانات 1.0 (ملف PDF) . آي بي إم / مايكروسوفت. أغسطس 1991. الصفحات 10-11 . تاريخ الاسترجاع: 7 يوليو 2017 .
- ↑ "RIFF (تنسيق ملف تبادل الموارد)" . الحفظ الرقمي . مكتبة الكونغرس . 2014-01-08 . تم الاسترجاع في 2014-03-11 .
- ↑ جيمس د. موراي؛ ويليام فان رايبر (1996). موسوعة تنسيقات ملفات الرسومات، الطبعة الثانية . أورايلي . مايكروسوفت ريف. رقم ISBN 1-56592-161-5أُرشف من الأصل في 28 نوفمبر 2005. تم الاطلاع عليه في 7 أبريل 2016 .
- ↑ "حاوية RIFF" . كود جوجل . تم الاسترجاع في 1 أكتوبر 2010 .
روابط خارجية
- تنسيقات ملفات الحاسوب
- مقدمات متعلقة بالحاسوب في عام 1991
