Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π“Ρ€Π°Ρ„ΠΈΠΊΠ° для Windows срСдствами DirectDrawΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 50

Автор Бтэн Π’Ρ€ΡƒΡ…ΠΈΠ»ΡŒΠΎ

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ свСдСния

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ тСхничСским подробностям, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассмотрим ваТнСйшиС понятия ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠ°ΠΌΠΈ. Если Π²Π°ΠΌ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ воспроизвСдСниСм Π²ΠΈΠ΄Π΅ΠΎ, этот Ρ€Π°Π·Π΄Π΅Π» ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ основныС полоТСния.

Π‘ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ» прСдставляСт собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΊΠ°Π΄Ρ€. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ всС растры ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ для Π²Ρ‹Π²ΠΎΠ΄Π° с постоянной ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ. НСрСдко растры ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ β€” авторским повСствованиСм, Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠΌ ΠΈΠ»ΠΈ ΠΌΡƒΠ·Ρ‹ΠΊΠΎΠΉ.

ГрафичСская ΠΈ звуковая (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ) Ρ‡Π°ΡΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠ° часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ (streams). Π­Ρ‚ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€ΠΎΠ»ΠΈΠΊΠ° (Π² случаС Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½Ρ‹Ρ… β€” растры) связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ порядкС. Π’Π΅Ρ€ΠΌΠΈΠ½ Β«ΠΏΠΎΡ‚ΠΎΠΊΒ» часто встрСчаСтся Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΡΡΠ½Π΅Π½ΠΈΡΡ….


AVI-Ρ„Π°ΠΉΠ»Ρ‹

Π€ΠΎΡ€ΠΌΠ°Ρ‚ AVI (Audio Video Interleave) Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Microsoft для хранСния ΠΈ воспроизвСдСния Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠΎΠ². AVI-Ρ„Π°ΠΉΠ» ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ растров содСрТит ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… Π΄ΠΎΡ€ΠΎΠΆΠ΅ΠΊ, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊ. Π’ этой Π³Π»Π°Π²Π΅ Π½Π°ΠΌ придСтся часто ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ AVI-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ для хранСния Π²ΠΈΠ΄Π΅ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½ΡƒΠΆΠ΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚? ΠŸΠΎΡ‡Π΅ΠΌΡƒ нСльзя ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ растров ΠΈ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°? БущСствуСт нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½, Π½ΠΎ, Π²ΠΈΠ΄ΠΈΠΌΠΎ, самая ваТная ΠΈΠ· Π½ΠΈΡ… β€” сТатиС. Если ΠΊΠ°Π΄Ρ€Ρ‹ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠ° Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π±Π΅Π· сТатия (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² BMP-Ρ„Π°ΠΉΠ»Π°Ρ…), Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Ρ€ΠΎΠ»ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ слишком ΠΌΠ½ΠΎΠ³ΠΎ мСста. НапримСр, 1-ΠΌΠΈΠ½ΡƒΡ‚Π½Ρ‹ΠΉ Ρ€ΠΎΠ»ΠΈΠΊ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ 320Γ—200 ΠΈ частотС Π²Ρ‹Π²ΠΎΠ΄Π° 30 ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² сСкунду Π·Π°ΠΉΠΌΠ΅Ρ‚ Π½Π° дискС ΡΠ²Ρ‹ΡˆΠ΅ 100 ΠœΠ±Π°ΠΉΡ‚.

РазумССтся, для практичСского примСнСния Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сТатиС. Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ? БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сТатия, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ своими достоинствами ΠΈ нСдостатками. ΠœΠ°Π»ΠΎΠ²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ подошСл сразу ΠΏΠΎ всСм критСриям.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² AVI-Ρ„Π°ΠΉΠ»Π°Ρ… Π±Ρ‹Π»Π° прСдусмотрСна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сТатия. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π±Π΅Π· Ρ€Π°Π·Π²ΠΈΡ‚ΠΎΠ³ΠΎ API Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ AVI-Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π² Windows сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ API Video For Windows, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ вскорС рассмотрим.


ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ»Π°Ρ…

Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ»ΠΎΠ² (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ AVI) фактичСски ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π΄Π²Π° уровня сТатия. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ сТатиС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ²; ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ°Π΄Ρ€Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π° Π² Π²ΠΈΠ΄Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсСнных Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠ°Π΄Ρ€Ρ‹.

Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊ состоит ΠΈΠ· ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. НапримСр, Ссли Π² Π½Π΅ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅, Ρ‚ΠΎ Ρ„ΠΈΠ³ΡƒΡ€Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠ°Π΄Ρ€Π° ΠΊ ΠΊΠ°Π΄Ρ€Ρƒ, Π½ΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ (ΠΊΠΎΠΌΠ½Π°Ρ‚Π°), скорСС всСго, останСтся практичСски Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠ°Π΄Ρ€Π° ΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠšΠ°Π΄Ρ€Ρ‹ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠ° с ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ ΠΊΠ°Π΄Ρ€Π°ΠΌΠΈ (key frames). Π’ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ любоС количСство ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ², Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько часто ΠΈ сильно мСняСтся ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠ°Π΄Ρ€Ρ‹ особСнно часто ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ сцСнами, эффСктах «растворСния» ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΡΡŠΠ΅ΠΌΠΎΡ‡Π½ΠΎΠΉ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠ°Π΄Ρ€Ρ‹ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Π²Π°ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠ°; Π±Π΅Π· Π½ΠΈΡ… ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π΄Ρ€Ρ‹ Ρ‚Π΅Ρ€ΡΡŽΡ‚ смысл. ΠΠ΅ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΊΠ°Π΄Ρ€ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ вывСсти, Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°Π΄Ρ€ прСдставляСт собой лишь ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ изобраТСния, Π° Π½Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ называСтся ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ. Как ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, посвящСнном Video For Windows API, концСпция ΠΏΠΎΡ‚ΠΎΠΊΠ° тСсно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° с Video For Windows.


Video For Windows

Для создания ΠΈ чтСния AVI-Ρ„Π°ΠΉΠ»ΠΎΠ² Windows прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Video For Windows (VFW) API. Π­Ρ‚ΠΎΡ‚ API Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ воспроизвСдСния Π²ΠΈΠ΄Π΅ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½Π΅ΠΌ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ срСдства для поиска ΠΈ извлСчСния ΠΊΠ°Π΄Ρ€ΠΎΠ² ΠΈΠ· Ρ€ΠΎΠ»ΠΈΠΊΠ°.

VFW Π½Π΅ пытаСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сТатия, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для хранСния AVI-Π΄Π°Π½Π½Ρ‹Ρ…. ВмСсто этого VFW допускаСт установку ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ компрСссоров ΠΈ дСкомпрСссоров, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сТатия. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, VFW позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ компрСссор ΠΈ дСкомпрСссор Π² зависимости ΠΎΡ‚ потрСбностСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ΠšΡ€ΠΎΠΌΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сТатия ΠΈ распаковки VFW API прСдоставляСт срСдства для поиска ΠΈ извлСчСния ΠΊΠ°Π΄Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡, связанных с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ.

VFW API

ИмСна ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ VFW API Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Π±ΡƒΠΊΠ² AVI. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, относящиСся ΠΊ ΡΠΆΠ°Ρ‚ΠΈΡŽ) Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с IC. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ VFW снабТаСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· этих прСфиксов. Алфавитный список всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ VFW ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² Ρ‚Π°Π±Π». 8.1.


Π’Π°Π±Π»ΠΈΡ†Π° 8.1. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ VFW

AVIBuildFilter()

AVICLearClipboard()

AVIFileAddRef()

AVIFileCreateStream()

AVIFileEndRecord()

AVIFileExit()

AVIFileGetStream()

AVIFileInfo()

AVIFileInit()

AVIFileOpen()

AVIFileReadData()

AVIFileRelease()

AVIFileWriteData()

AVIGetFromClipboard()

AVIMakeCompressedStream()

AVIMakeFileFromStream()

AVIMakeStreamFromClipboard()

AVIPutFileOnClipboard()

AVISave()

AVISaveOptions()

AVISaveOptionsFree()

AVISaveV()

AVIStreamAddRef()

AVIStreamBeginStreaming()

AVIStreamCreate()

AVIStreamEndStreaming()

AVIStreamCreate()

AVIStreamEndStreaming()

AVIStreamFindSample()

AVIStreamGetFrame()

AVIStreamGetFrameClose()

AVIStreamGetFrameOpen()

AVIStreamInfo()

AVIStreamLength()

AVIStreamOpenFromFile()

AVIStreamRead()

AVIStreamReadData()

AVIStreamReadFormat()

AVIStreamRelease()

AVIStreamSampleToTime()

AVIStreamSetFormat()

AVIStreamStart()

AVIStreamTimeToSample()

AVIStreamWrite()

AVIStreamWriteData()

CreateEditableStream()

EditStreamClone()

EditStreamCopy()

EditStreamCut()

EditStreamPaste()

EditStreamSetInfo()

EditStreamSetName()

ICClose()

ICCompress()

ICCompressorChoose()

ICCompressorFree()

ICDecompress()

ICDecompressEx()

ICDecompressExBegin()

ICDecompressExQuery()

ICDraw()

ICDrawBegin()

ICDrawSuggestFormat()

ICGetInfo()

ICGetDisplayFormat()

ICImageCompress()

ICImageDecompress()

ICInfo()

ICInstall()

ICLocate()

ICOpen()

ICOpenFunction()

ICRemove()

ICSendMessage()

ICSeqCompressFrame()

ICCompressFrameEnd()

ICCompressFrameStart()

ICGetStatusProc()

MyStatusProc()


ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, для воспроизвСдСния Ρ€ΠΎΠ»ΠΈΠΊΠΎΠ² Π½ΡƒΠΆΠ½Π° лишь нСбольшая Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ VFW, Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· этой Π³Π»Π°Π²Ρ‹, Π²Π°ΠΌ, скорСС всСго, понадобятся ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½Π°ΠΌ придСтся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π‘ΠžΠ’Π•Π’

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ VFW Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ функциями Video For Windows, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» vfw.h ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ vfw32.lib Π² список Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°.

Для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Ρ‚Π°Π±Π». 8.1 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ VFW Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ AVIFileInit(). Π­Ρ‚Π° функция Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния, поэтому Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½Π΅ΠΉ ΠΏΡ€ΠΎΡ‰Π΅ простого.

ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ VFW ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ AVIStreamOpenFromFile(). Π­Ρ‚Π° функция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² имя AVI-Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎ Π½Π΅ΠΌΡƒ логичСский Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ логичСский Π½ΠΎΠΌΠ΅Ρ€ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ VFW ΠΈ опрСдСляСт ΠΏΠΎΡ‚ΠΎΠΊ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ выполняСтся опСрация.

Π’ частности, ΠΏΠΎ логичСскому Π½ΠΎΠΌΠ΅Ρ€Ρƒ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌΡƒ AVIStreamOpenFromFile(), ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ свСдСния ΠΎ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠ΅. Ѐункция AVIStreamReadFormat() сообщаСт Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ количСство ΠΊΠ°Π΄Ρ€ΠΎΠ², Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния ΠΈ Π³Π»ΡƒΠ±ΠΈΠ½Π° пиксСлСй; для этого ΠΎΠ½Π° заполняСт структуру BITMAPINFOHEADER (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, структура BITMAPINFOHEADER покаТСтся Π²Π°ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΉ β€” ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ с Π½Π΅ΠΉ ΠΏΡ€ΠΈ описании BMP-Ρ„Π°ΠΉΠ»ΠΎΠ²). Π― снова ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этой структуры, взятоС ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Windows wingdi.h:

typedef struct tagBITMAPINFOHEADER {

 DWORD biSize;

 LONG  biWidth;

 LONG  biHeight;

 WORD  biPlanes;

 WORD  biBitCount;

 DWORD biCompression;