libcamera-ի առաջին թողարկումը, Linux-ում տեսախցիկի աջակցության փաթեթ

Չորս տարվա մշակումից հետո ձևավորվեց libcamera նախագծի (0.0.1) առաջին թողարկումը, որն առաջարկում էր ծրագրային փաթեթ՝ Linux-ի, Android-ի և ChromeOS-ի տեսախցիկների, տեսախցիկների և հեռուստատեսային թյուներների հետ աշխատելու համար, որը շարունակում է V4L2 API-ի զարգացումը: և ի վերջո կփոխարինի դրան: Քանի որ գրադարանի API-ն դեռ փոխվում է և դեռ լիովին կայունացված չէ, նախագիծը մինչ այժմ զարգացել է առանց առանձին թողարկումների ճյուղավորման՝ օգտագործելով շարունակական զարգացման մոդելը: Ի պատասխան բաշխումների՝ հետևելու API-ի փոփոխություններին, որոնք ազդում են համատեղելիության վրա, և պարզեցնելու գրադարանների առաքումը փաթեթներով, այժմ որոշում է կայացվել պարբերաբար արտադրել թողարկումներ, որոնք արտացոլում են ABI-ի և API-ի փոփոխությունների չափը: Ծրագրի կոդը գրված է C++-ով և տարածվում է LGPLv2.1 լիցենզիայի ներքո:

Նախագիծը մշակում են Linux միջուկի մուլտիմեդիա ենթահամակարգերի մշակողները՝ տեսախցիկների որոշ արտադրողների հետ միասին, որպեսզի կարգավորեն իրավիճակը սմարթֆոնների և ներկառուցված սարքերի տեսախցիկների Linux-ի աջակցությամբ, որոնք կապված են սեփական վարորդների հետ: API V4L2-ը, որն արդեն հասանելի է Linux միջուկում, ժամանակին ստեղծվել է ավանդական առանձին վեբ տեսախցիկների հետ աշխատելու համար և վատ է հարմարեցված MCU ֆունկցիոնալությունը պրոցեսորի ուսերին տեղափոխելու վերջին միտումին:

Ի տարբերություն ավանդական տեսախցիկների, որոնցում պատկերի մշակման առաջնային գործողությունները կատարվում են տեսախցիկի մեջ ներկառուցված մասնագիտացված պրոցեսորի վրա (MCU), ներկառուցված սարքերում, ծախսերը նվազեցնելու համար, այս գործառույթներն իրականացվում են հիմնական պրոցեսորի ուսերին և պահանջում են բարդ դրայվեր, որը ներառում է ոչ բաց կոդով լիցենզավորված բաղադրիչներ: Որպես libcamera նախագծի մի մաս, բաց կոդով ծրագրային ապահովման կողմնակիցները և ապարատային արտադրողները փորձել են ստեղծել փոխզիջումային լուծում, որը մի կողմից բավարարում է բաց կոդով ծրագրակազմ մշակողների կարիքները, իսկ մյուս կողմից՝ թույլ է տալիս պաշտպանել տեսախցիկների արտադրողների մտավոր սեփականությունը:

libcamera գրադարանի կողմից առաջարկվող փաթեթն ամբողջությամբ ներդրված է օգտագործողի տարածքում: Գոյություն ունեցող ծրագրային միջավայրերի և հավելվածների հետ համատեղելիություն ապահովելու համար V4L API-ի, Gstreamer-ի և Android Camera HAL-ի համար նախատեսված են համատեղելիության շերտեր: Սարքավորումների հետ փոխազդեցության համար նախատեսված յուրաքանչյուր տեսախցիկի համար հատուկ բաղադրիչները նախագծված են որպես մոդուլներ, որոնք աշխատում են առանձին գործընթացներով և համագործակցում են գրադարանի հետ IPC-ի միջոցով: Մոդուլները սարքին ուղղակի մուտք չունեն և սարքավորում են մուտք գործում միջանկյալ API-ի միջոցով, որոնց միջոցով հարցումները ստուգվում են, զտվում և սահմանափակվում են միայն տեսախցիկը կառավարելու համար անհրաժեշտ գործառույթների հասանելիությամբ:

Գրադարանը նաև ապահովում է պատկերների և տեսանյութերի մշակման և որակի բարելավման ալգորիթմներ (սպիտակ հավասարակշռության կարգավորում, աղմուկի նվազեցում, տեսանյութի կայունացում, ավտոմատ ֆոկուս, լուսարձակման ընտրություն և այլն), որոնք կարող են միացված լինել բաց արտաքին գրադարանների կամ սեփականության տեսքով։ մեկուսացված մոդուլներ. API-ն ապահովում է այնպիսի գործառույթների հասանելիություն, ինչպիսիք են առկա արտաքին և ներկառուցված տեսախցիկների ֆունկցիոնալությունը որոշելը, սարքի պրոֆիլների օգտագործումը, տեսախցիկի միացման և անջատման իրադարձությունների կառավարումը, տեսախցիկի տվյալների նկարահանումը առանձին կադրի մակարդակով և պատկերների համաժամացումը ֆլեշի հետ: Համակարգում հնարավոր է առանձին աշխատել մի քանի տեսախցիկների հետ և կազմակերպել մի քանի տեսախցիկի միաժամանակյա նկարահանում մեկ տեսախցիկից (օրինակ՝ ցածր լուծաչափով մեկը՝ վիդեոկոնֆերանսի համար, իսկ մյուսը՝ բարձր լուծաչափով՝ արխիվային ձայնագրման սկավառակի վրա):

Source: opennet.ru

Добавить комментарий