Кіріспе
Microsoft API
DirectShow (кейде DS немесе DShow деп қысқартылады), Quartz кодолық атымен белгілі, Microsoft компаниясы бағдарламалық жасақтаманы әзірлейтін мамандар үшін медиа файлдармен немесе ағындарымен әртүрлі амалдар орындауға арналған мультимедиалық фреймворк және API болып табылады. Бұл Microsoft-тың бұрынғы Video for Windows технологиясының орнын басады. Microsoft Windows Component Object Model (COM) фреймворкіне негізделген DirectShow, түрлі бағдарламалау тілдерінде медиа үшін ортақ интерфейс ұсынады және ол кеңейтілмелі, сүзгілерге негізделген фреймворк болып табылады, ол пайдаланушының немесе әзірлеушінің сұрауы бойынша медиа файлдарын қажет болғанда көрсетуге немесе жазуға мүмкіндік береді. DirectShow әзірлеу құралдары мен құжаттамасы бастапқыда DirectX SDK құрамына енген. Қазіргі уақытта олар Windows SDK (бұрынғы Platform SDK) құрамына кіреді. Microsoft болашақ Windows нұсқаларында DirectShow-ды Media Foundation-мен толықтай алмастыруды жоспарлап отыр. Microsoft бұл шешімді «мазмұнды қорғау жүйелеріне айтарлықтай күшті қолдау көрсету» қажеттігімен түсіндіреді (цифрлік құқықтарды басқару туралы көріңіз). Microsoft компаниясының Беки Вайс 2006 жылы «Media Foundation-мен жұмыс істеу, DirectShow-мен жұмыс істеуге қарағанда сәл төменгі деңгейде жұмыс істеуді талап ететінін байқайсыз. Сондай-ақ, әлі Media Foundation-да жоқ DirectShow мүмкіндіктері бар» деп мәлімдеді. Media Foundation мақаласында сипатталғандай, Windows Vista және Windows 7 қолданбалары медиамен байланысты бірнеше тапсырмалар үшін DirectShow орнына Media Foundation-ды пайдаланады.
Тарих
DirectShow-ның тікелей алдыңғысы, ActiveMovie (кодтық атауы Quartz) Windows үшін MPEG 1 қолдауын қамтамасыз ету мақсатымен жасалды. Сондай-ақ, ол 32-биттік ортаға толық көшірілмеген және COM технологиясын қолданбаған Video for Windows және Media Control Interface сияқты мультимедиалық өңдеу жүйелерінің орнын алмастыруға арналған болатын. Жоба бастапқыда "ActiveMovie" деп аталды және 1996 жылдың мамыр айында Internet Explorer 3.0 бета нұсқасымен бірге жарияланды. 1997 жылдың наурызында Microsoft ActiveMovie-нің DirectX 5 технологиялар жиынтығының бір бөлігі болатынын хабарлады, ал шілде айынан бастап оны DirectShow деп атауға көшті, бұл Microsoft-тың сол кезде аппараттық құралдармен тікелей жұмыс істейтін технологияларды бірыңғай атау жүйесінде біріктіруге жасаған тытыр жоспарының нәтижесі болды. DirectShow Windows 98-ден бастап барлық Windows операциялық жүйелерінің стандартты құрауыш бөлігіне айналды; бірақ ол Windows 95-те соңғы DirectX қайта таратылатын нұсқасын орнату арқылы қолжетімді болды. DirectX 8.0 нұсқасында DirectShow басқа DirectX API-лерімен бірге негізгі DirectX SDK құрамына енді. 2004 жылдың қазан айында DirectShow негізгі DirectX дистрибуциясынан алынып, DirectX Extras жүктемесіне көшірілді. 2005 жылдың сәуірінде DirectShow DirectX-тен толығымен алынып тасталды және Windows Server 2003 SP1 нұсқасынан бастап Windows SDK-ға көшірілді. 2007 жылдың қарашасынан бері DirectShow API-лері Windows SDK құрамына кіреді. Ол бірнеше жаңа жетілдірулерді, кодектерді және сүзгілерді жаңартуды, мысалы, Enhanced Video Renderer (EVR) және DXVA 2.0 (DirectX Video Acceleration) қамтиды.
Ерекшеліктері
Әдетте DirectShow құрамында MPEG 1, MP3, Windows Media Audio, Windows Media Video, MIDI сияқты кейбір таралған медиа файл форматтарын декодтау үшін бірнеше сүзгілер бар, сондай-ақ AVI, ASF, WAV сияқты медиа контейнерлер, кейбір бөлгіштер/демультиплексерлер, мультиплексерлер, бастапқы және түсіру сүзгілері, кейбір статикалық кескін сүзгілері, бейне үдеткіштері және минималды цифрлық құқықтарды басқару (DRM) қолдауы бар. DirectShow-тың стандартты форматтар жиынтығын әртүрлі сүзгілер арқылы оңай кеңейтуге болады, бұл DirectShow-қа кез келген контейнер форматты және кез келген аудио немесе бейне кодегін қолдауға мүмкіндік береді. Мысалы, Ogg Vorbis, Musepack және AC3 үшін сүзгілер әзірленген, ал MPEG 4 Advanced Simple Profile, AAC, H.264, Vorbis және MOV, MP4 сияқты кейбір кодектер ffdshow, K Lite және CCCP сияқты үшінші тараптардан қолжетімді. Қосымша кодектерді қолдауды енгізу үшін, тиісті кодек технологиясын әзірлеушіге немесе патент иесіне лицензиялық төлемдерді қажет етуі мүмкін. Соңында, VLC сияқты төменгі деңгейдегі мультимедиялық API-лердің мүмкіндіктерін аша отырып, бірнеше форматтарды және ағынды мультиплекстеу сияқты функцияларды бірден қолдайтын «көпір» сүзгілері де бар. Сүзгі графигін іске асыруға қажетті жұмыс көлемі бірнеше факторға байланысты. Ең қарапайым жағдайда DirectShow файл немесе URL сияқты бастапқы деректерден сүзгі графигін автоматты түрде құра алады. Егер бұл мүмкін болмаса, әзірлеуші бастапқы файлдан сүзгі графигін қолмен құра алады, мүмкін, арнайы сүзгіні қосып, содан кейін DirectShow сүзгілерді байланыстыру арқылы сүзгі графигін аяқтайды. Келесі деңгейде әзірлеуші қажетті әрбір сүзгіні қолмен қосып, байланыстыру арқылы сүзгі графигін бастапқыдан құруы керек. Соңында, егер маңызды сүзгі қолжетімді болмаса, әзірлеуші сүзгі графигін құрудан бұрын арнайы сүзгі жасауы керек. QuickTime-ның негізгі C API-сінен айырмашылығы, онда мультимедиа файлын жүктеу үшін MoviesTask-ты циклде шақыру қажет, DirectShow мұның бәрін түсінікті түрде өңдейді. Ол сұралған файлды немесе URL-ді бағдарламашыдан көп еңбек талап етпей, тегіс ойнату үшін бірнеше фонолық жіптерді жасайды. QuickTime-нан айырмашылығы, DirectShow сүзгі графигі осы мәліметтерді бағдарламашыдан жасырады, бірақ QuickTime-ның соңғы жетістіктері (ActiveX басқаруын қоса алғанда) бұл айырмашылықты азайтты.
DirectShow өңдеу қызметі
DirectShow Editing Services (DES) – DirectX 8.0/Windows XP нұсқасында енгізілген, бейне өңдеу міндеттеріне бағытталған және негізгі DirectShow архитектурасының үстінде құрылған API. DirectShow Editing Services Microsoft компаниясының Windows Movie Maker бағдарламасы үшін әзірленді. Балама ретінде, толық DirectShow API, соның ішінде DirectShow Editing Services, Borland Delphi 5, 6 және 7, C++ Builder 6, сондай-ақ кейінгі нұсқаларында, шағын өзгерістермен үшінші тараптың бағдарламалық кітапханасы "DSPack" арқылы қолжетімді. 2012 жылдың наурызынан бастап (және, көрінетіндей, 2009 жылдан бастап) Microsoft компаниясы DirectShow Editing Services "API қолдау көрсетілмейтінін және болашақта өзгертілуі немесе қолжетімсіз болуы мүмкін" деп мәлімдеді.
Видео түсіру сүзгілері
Бастапқыда Windows 9x жүйесінде DirectShow Video Renderer сүзгісі қолданылды. Ол суреттерді DirectDraw 3 көмегімен көрсетті, бірақ кейбір жағдайларда (видео терезесінің көрінуіне және бейне картасының мүмкіндіктеріне байланысты) GDI немесе қабаттастыру режиміне де көшуі мүмкін еді. Видео терезеге кіру мүмкіндігі шектеулі болды. Windows үшін бейне бағдарламалары видео терезелерін дұрыс басқара алмағандықтан, тұйықтар туындады, сондықтан DirectShow-тың алғашқы нұсқаларында ойнату терезесінің тұтқасы бағдарламалардан жасырылды. Видеоның үстіне тақырып немесе графикалық элементтерді сенімді түрде салудың да жолы болмады. DirectShow 6.0, DirectX Media құрамында шығарылған, DVD ойнату және субтитрлермен жабық тақырыптары бар бейне ағындарын көрсетуге арналған Overlay Mixer рендерерін енгізді. Overlay Mixer рендеринг үшін DirectDraw 5 қолданады. Сондай-ақ, ол "терезесіз режимді" (рендерингке дейін біріктірілген суретке қол жеткізу) ұсынды, бұл терезе тұтқасына қол жеткізу мәселелерін шешті. DirectX 9 Windows XP SP2 және одан кейінгі нұсқаларында VMR 9 енгізді. Бұл нұсқа DirectDraw орнына Direct3D 9 қолданады, бұл әзірлеушілерге Direct3D пиксельдік шейдерлерін пайдаланып бейне суреттерін өзгертуге мүмкіндік береді. Ол DirectX 9 қайта таратылатын бөлігі ретінде барлық Windows платформалары үшін қол жетімді. VMR 7 сияқты, ол да терезесіз режимді ұсынады. Алайда, Overlay Mixer немесе VMR 7-ден айырмашылығы, ол бейне порттарын қолдамайды. /3GB жүктеу опциясын пайдалану VMR 9 жұмысын тоқтатуы мүмкін. Windows Vista және Windows 7 жаңа рендерермен бірге келеді, ол Media Foundation компоненті ретінде де, DirectShow сүзгісі ретінде де қол жетімді және Enhanced Video Renderer (EVR) деп аталады. EVR Desktop Window Manager-мен жұмыс істеуге арналған және Windows Vista және Windows 7-де қол жетімді DXVA 2.0-ны қолдайды. Microsoft мәлімдегендей, ол жақсырақ өнімділік пен сапаны ұсынады.
Марапаттар
2007 жылдың 8 қаңтарында Microsoft компаниясы 58-ші жылдық технология және инженериялық Emmy марапаттарында «Ағын медиа архитектуралары және компоненттері» үшін Эмми сыйлығын алды.
Қарапайымдылық
DirectShow-ға файл ойнатуды тапсыру салыстырмалы түрде оңай міндет. Дегенмен, DirectShow командасын видео терезесінен белгілі бір терезе хабарламаларын көрсету немесе арнайы сүзгілерді жасау сияқты күрделірек бейімдеулерді бағдарламалау кезінде көптеген әзірлеушілер қиындықтарға тап болады. Ол Microsoft-тың ең күрделі әзірлеу кітапханалары/API-лерінің бірі саналады. Әзірлеушілер DirectShow сүзгілерін бастапқы кодтан жасамайды. Керісінше, олар DirectShow базалық сыныптарын пайдаланады. Базалық сыныптар көбінесе әзірлеуді жеңілдетеді, бағдарламашыға кейбір міндеттерді орындаудан бас тартуға мүмкіндік береді. Алайда, процесс салыстырмалы түрде күрделі болуы мүмкін; базалық сыныптардағы кодтың көлемі бүкіл MFC кітапханасының шамамен жартысын құрайды. Нәтижесінде, тіпті базалық сыныптарды қолданғанның өзінде DirectShow-тағы COM объектілерінің саны әзірлеушілерді әлсіретеді. Кейбір жағдайларда DirectShow API дәстүрлі COM ережелерінен, әсіресе әдістерде қолданылатын параметрлерге қатысты, ауытқиды. DirectShow-тың ерекше COM ережелерімен күресу үшін әзірлеушілер көбінесе DirectShow-ты пайдаланатын жоғары деңгейдегі API-ға, атап айтқанда Windows Media Player SDK-ге жүгінеді, бұл API әзірлеушіге басқаруға аз COM интерфейстері бар ActiveX Control-ді ұсынады. DirectShow белгілі бір медиа түрін көрсету үшін динамикалық түрде график құра алатын болса да, кейбір жағдайларда әзірлеушілерге бұл мүмкіндікке сену қиын, және нәтижедегі сүзгі графигі өзгермелі болса, олар сүзгі графиктерін қолмен құрастыруға мәжбүр болады. Компьютерге жаңа сүзгілер орнатылғанда сүзгі графиктері уақыт өте келе өзгеруі мүмкін.
Кодекс тозақ
Кодек тозағы (DLL тозағынан алынған термин) – бір тапсырманы орындау үшін бірнеше DirectShow сүзгілерінің қақтығысуы. Көптеген компаниялар қазір кодтектерді DirectShow сүзгілері түрінде жасап шығарады, нәтижесінде бір медиа түрін декодтай алатын бірнеше сүзгі пайда болады. Бұл мәселе DirectShow-ның басымдық жүйесімен одан әрі ушықтырылады, онда сүзгілердің іске асырылуы бір-бірімен бәсекелесіп, өзін жоғары басымдықпен тіркеуге тырысады. GraphEdit медиа файлын көрсету үшін DirectShow қолданатын сүзгілер тізбегін түсінуге де көмектеседі. Кодек тозағын қолмен сүзгі графиктерін құру арқылы, сүзгі басымдықтарын назардан тыс қалдыруға немесе өзгертуге мүмкіндік беретін медиа плеерді пайдалану арқылы, немесе Windows тіркелімінде сүзгі басымдықтарын өзгертетін сүзгі менеджерін пайдалану арқылы шешуге болады.
Соңғы пайдаланушы құралдары
DirectShow, әзірлеушілерге бағытталған фреймворк және API болғандықтан, мазмұнды кодтауды тікелей пайдаланушыға басқару мүмкіндігін бермейді, сонымен қатар орнатылған кодектерді қолданып немесе әртүрлі форматтарға кодтау үшін пайдаланушы интерфейсі де ұсынбайды; керісінше, ол API-ді пайдаланып бағдарламалық құралдарды жасауды әзірлеушілерге тапсырады. Ал QuickTime немесе Windows үшін Video сияқты басқа мультимедиалық фреймворктер соңғы пайдаланушыларға әртүрлі кодектерді қолдану, файлдар мен ағындарды өңдеу сияқты қарапайым бейнемен жұмыс істеу мүмкіндігін береді. Мысалы, VirtualDub сияқты, Windows үшін Video қолданған AVI форматы мен кодектердің әлі де қолданыста болуы, соңғы пайдаланушыға арналған графикалық интерфейстің тиімділігін көрсетеді.