alue3/o/spav3. 3/o/form3. 3/oa alue3/ href="../linux+v/op.6/Documenta v/media-framework.txt">alue3/oimg src="../.sta c/gfx/right.png" alt=">>">alo/spav3.alospav class="lxr_search">aluealue3/oinput typ hidden" name="navtarget" on> ">alue3/oinput typ text" name="search" id="search">alue3/obuttptityp submit">Searchalue3/Prefs. 3/o/a>alo/spav3.ue3/ /o/div3.ue3/ /oform ac v="ajax+*" method="post" onsubmit="return false;">aloinput typ hidden" name="ajax_lookup" id="ajax_lookup" on> ">aue3/ /o/form3.aue3/ /odiv class="headingbottpm">/ /1o/a>Linux kernel media framework / /2o/a>============================ / /3o/a>a/ /4o/a>This document describes the Linux kernel media framework, its data structures,a/ /5o/a>func vs and their usage.a/ /6o/a>a/ /7o/a>a/ /8o/a>Introduc va/ /9o/a>------------a/ 8/o0a>a/ 11o/a>The media controller API is documented in DocBook format ina/ 12o/a>Documenta v/DocBook/media/v4l/media-controller.xml. This document will focusa/ 13o/a>ptithe kernel-side implementa v ofithe media framework.a/ 14o0a>a/ 15o0a>a/ 16o/a>Abstrac media device modela/ 17o/a>---------------------------a/ 18o0a>a/ 19o/a>Discovering a device internal topology, and configuring it at runtime, is one / 2/o0a>ofithe goals ofithe media framework. To achieve this, hardware devices are / 21o/a>modeled as an oriented graph ofibuilding blocks called entities connected / 22o/a>through pads.a/ 23o/a>a/ 24o0a>An entity is a basic media hardware building block. It cav correspond toa/ 25o0a>a large onriety ofilogical blocks such as physical hardware devicesa/ 26o/a>(CMOS sensor for instance),ilogical hardware devices (a building blocka/ 27o/a>in a System-on-Chip image processing pipeline),iDMA channels or physicala/ 28o0a>connectors.a/ 29o/a>a/ 3/o0a>A pad is a connect v endpoint through which an entity cav interac witha/ 31o/a>other entities. Data (not restricted to video) produced by an entitya/ 32o/a>flows fromithe entity's output to one or more entity inputs. Pads should / 33o/a>not be confused with physical pivs at chip boundnries.a/ 34o0a>a/ 35o0a>A link is a point-to-point oriented connect v betweetitwo pads, eithera/ 36o/a>ptithe same entity or ptidifferent entities. Data flows fromia source / 37o/a>pad to a sink pad.a/ 38o0a>a/ 39o/a>a/ 4/o0a>Media devicea/ 41o/a>------------a/ 42o/a>a/ 43o0a>A media device is represented by a struct media_device instance, defined ina/ 44o/a>include/media/media-device.h. Alloca v ofithe structure is handled by thea/ 45o0a>media device driver, usually by embedding the media_device instance in aa/ 46o/a>larger driver-specific structure.a/ 47o/a>a/ 48o0a>Drivers register media device instances by callinga/ 49o/a>a/ 5/o0a> media_device_register(struct media_device *mdev);a/ 51o/a>a/ 52o/a>The caller is responsible for initializing the media_device structure beforea/ 53o0a>registra v. The following fields must be set:a/ 54o0a>a/ 55o0a> - dev must point to the parent device (usually a pci_dev, usb_interface ora/ 56o0a> platform_device instance).a/ 57o/a>a/ 58o0a> - model must be filled with the device model name as a NUL-terminated UTF-8a/ 59o0a> string. The device/model revis v must not be stored in this field.a/ 6/o0a>a/ 61o/a>The following fields are > val:a/ 62o/a>a/ 63o0a> - serial is a unique serial number stored as a NUL-terminated ASCII string.a/ 64o0a> The field is big enough to store a GUID in text form. Ifithe hardwarea/ 65o0a> doesn't provide a unique serial number this field must be left empty.a/ 66o/a>a/ 67o0a> - bus_info represents the loca v ofithe device inithe system as aa/ 68o0a> NUL-terminated ASCII string. For PCI/PCIe devices bus_info must be set toa/ 69o0a> "PCI:" (or "PCIe:") followed by the on> ofipci_name(). For USB devices,a/ 7/o0a> the usb_make_path() func v must be used. This field is used bya/ 71o0a> applica vs to distinguish betweetiotherwise identical devices that don'ta/ 72o0a> provide a serial number.a/ 73o/a>a/ 74o0a> - hw_revis v isithe hardware device revis v in a driver-specific format.a/ 75o0a> Whetipossible the revis v should be formatted with the KERNEL_VERSIONa/ 76o0a> macro.a/ 77o/a>a/ 78o0a> - driver_vers v isiformatted with the KERNEL_VERSION macro. The vers va/ 79o0a> minor must be incremented whetinew features are added to the userspace APIa/ 8/o0a> without breaking binary compatibility. The vers v major must bea/ 81o0a> incremented whetibinary compatibility is broken.a/ 82o/a>a/ 83o/a>Up v successful registra v a character device named media[0-9]+ is created.a/ 84o/a>The device major and minor numbers are dynamic. The model name is exported asa/ 85o0a>a sysfs attribute.a/ 86o/a>a/ 87o0a>Drivers unregister media device instances by callinga/ 88o0a>a/ 89o0a> media_device_unregister(struct media_device *mdev);a/ 9/o0a>a/ 91o0a>Unregistering a media device that hasn't beetiregistered is *NOT* safe.a/ 92o/a>a/ 93o/a>a/ 94o/a>Entities, pads and linksa/ 95o/a>------------------------a/ 96o/a>a/ 97o/a>- Entitiesa/ 98o0a>a/ 99o/a>Entities are represented by a struct media_entity instance, defined ina/100o/a>include/media/media-entity.h. The structure is usually embedded into aa/101o0a>higher-level structure, such as a v4l2_subdev or video_device instance,a/102o/a>although drivers cav alloca e entities directly.a/103o/a>a/104o0a>Drivers initialize entities by callinga/105o0a>a/106o0a> media_entity_init(struct media_entity *entity, u16 num_pads,a/107o0a> struct media_pad *pads, u16 extra_links);a/108o0a>a/109o/a>The media_entity name, typ , flags, revis v and group_id fields cav bea/110o/a>initialized before or after calling media_entity_init. Entities embedded ina/111o0a>higher-level standnrd structures cav have some ofithose fields set by thea/112o/a>higher-level framework.a/113o/a>a/114o0a>Asithe number ofipads is knowv in advance, the pads array is not alloca ed /115o0a>dynamically but is managed by the entity driver. Most drivers will embed thea/116o/a>pads array in a driver-specific structure, avoiding dynamic alloca v.a/117o/a>a/118o0a>Drivers must set the direct v ofievery pad in the pads array before callinga/119o/a>media_entity_init. The func v will initialize the other pads fields.a/12/o0a>a/121o0a>Unlikeithe number ofipads, the total number ofilinks isn't always knowv ina/122o/a>advance by the entity driver. As an initial estima e, media_entity_inita/123o/a>pre-alloca es a number ofilinks equal toithe number ofipads plus an o> vala/124o0a>number ofiextrailinks. The links array will be realloca ed if it grows beyond /125o0a>the initial estima e.a/126o/a>a/127o0a>Drivers register entities with a media device by callinga/128o0a>a/129o0a> media_device_register_entity(struct media_device *mdev,a/130o0a> struct media_entity *entity);a/131o/a>a/132o/a>Entities are identified by a unique positive integer ID. Drivers cav provide ana/133o/a>ID by filling the media_entity id field prior to registra v, or request thea/134o0a>media controller framework to assigv an ID automa ically. Drivers that providea/135o0a>IDs manually must ensure that all IDs are unique. IDs are not guaranteed to bea/136o/a>contiguous even whetithey are all assigved automa ically by the framework.a/137o/a>a/138o0a>Drivers unregister entities by callinga/139o/a>a/14/o0a> media_device_unregister_entity(struct media_entity *entity);a/141o/a>a/142o/a>Unregistering an entity will not changeithe IDs ofithe other entities, and thea/143o/a>ID will never be reused for ainewly registered entity.a/144o0a>a/145o0a>Whetia media device is unregistered, all its entities are unregistereda/146o/a>automa ically. No manual entities unregistra v isithen required.a/147o/a>a/148o0a>Drivers free resources associated with an entity by callinga/149o/a>a/15/o0a> media_entity_cleanup(struct media_entity *entity);a/151o/a>a/152o/a>Thisifunc v must be called during the cleanup phase after unregistering thea/153o0a>entity. Note that the media_entity instance itself must be freed explicitly bya/154o0a>the driver if required.a/155o0a>a/156o0a>Entities have flags that describe the entity capabilities and sta e.a/157o/a>a/158o0a> MEDIA_ENT_FL_DEFAULT indica es the default entity for aigiven typ .a/159o0a> Thisicav be used to report the default audio and video devices or thea/16/o0a> default camera sensor.a/161o/a>a/162o/a>Logical entity groupsicav be defined by setting the group ID ofiall membera/163o0a>entities toithe same non-zero on> . An entity group serves no purpose in thea/164o0a>kernel, but is reported to userspace during entities enumera v. The group_ida/165o0a>field belongs toithe media device driver and must not by touched by entitya/166o/a>drivers.a/167o/a>a/168o0a>Media device drivers should define groupsiif several entities are logicallya/169o0a>bound together. Example usages include reportinga/17/o0a>a/171o0a> - ALSA, VBI and video nodes that carryithe same media streama/172o0a> - levs and flash controllers associated with a sensora/173o/a>a/174o0a>- Padsa/175o0a>a/176o0a>Pads are represented by a struct media_pad instance, defined ina/177o/a>include/media/media-entity.h. Each entity stores its pads itia pads arraya/178o0a>managed by the entity driver. Drivers usually embed the array in aa/179o0a>driver-specific structure.a/18/o0a>a/181o0a>Pads are identified by their entity and their 0-based index in the pads array.a/182o/a>Both informat v are stored in the media_pad structure, making the media_pada/183o/a>pointer the canonical way to store and pass link references.a/184o0a>a/185o0a>Pads have flags that describe the pad capabilities and sta e.a/186o/a>a/187o0a> MEDIA_PAD_FL_SINK indica es that the pad supports sinking data.a/188o0a> MEDIA_PAD_FL_SOURCE indica es that the pad supports sourcing data.a/189o/a>a/19/o0a>One and only one of MEDIA_PAD_FL_SINK and MEDIA_PAD_FL_SOURCE must be set fora/191o0a>each pad.a/192o/a>a/193o/a>- Linksa/194o0a>a/195o/a>Links are represented by a struct media_link instance, defined ina/196o/a>include/media/media-entity.h. Each entity stores all links originating at ora/197o/a>targeting any ofiits pads itia links array. Aigiven link is thus storeda/198o0a>twice, once inithe source entity and once inithe target entity. The array isa/199o/a>pre-alloca ed and grows dynamically as needed.a/20/o0a>a/201o0a>Drivers create links by callinga/202o/a>a/203o/a> media_entity_create_link(struct media_entity *source, u16 source_pad,a/204o/a> struct media_entity *sink, u16 sink_pad,a/205o/a> u32 flags);a/206o/a>a/207o0a>An entry inithe link array ofieach entity is alloca ed and stores pointersa/208o0a>to source and sink pads.a/209o/a>a/210o/a>Links have flags that describe the link capabilities and sta e.a/211o/a>a/212o0a> MEDIA_LNK_FL_ENABLED indica es that the link is enabled and cav be useda/213o/a> toitransforhref="Docpde/medi13lass="wf="Docpde/medi1ppl structure, sucFL_EN" class="line" 1'.a/211o/a>a/211o/a>a/196o/a>include/media/media2 v/media2framework.txt#L118" id="2118" 21ing data.a/196o/a>include/media/media2 ds.a/211o/a>a/210o/a>Links have flags thadia framewwork. To achieve this, ha121" 2lass="line" name="L121">/121o0a>Unlikeithe number o2 graph ofiibuilding blocks called enƈt alwaGa vFL_.txtline" name="L28">/ 28o0a>connectors.a/ 96o/a>a/ 24o0a>An entity is a basic meedia hardwware building block. It c ed i22 is exporass="lef="Documeclass="s="liref="i" cls= is oL169" id="v/medta "line" name="L211">/211o/a>a/176o0a>Pads are represente2nce),ilogiical hardware devices (a 127" 2lass="T="i" cls= is oLtxt#169" id="ya/164o0a>kernel, but is repo2age processsing pipeline),iDMA changa/164o0a>kernel, but is repo2ads.a/129o0a> media_devic2v/media-frramework.txt#L30" id="L30e *md2v,a/206o/a>a/121o0a>Unlikeithe number o2 v/media2framework.txt#L132" id="2132" 23116 source_pad,a/121o0a>Unlikeithe number o2 Documentanique positive integer I2. Dri232 v/media-framework/*ref="Documenthref="Doc/media-framew/121o0a>Unlikeithe number o2 /media-fraamework.txt#L24" id="L24"ads 233 v/media-framework..ine" name="L23">/ 23o/a>a/ 23o/a>a/176o0a>Pads are represente2ithey are2all assigved automa ical2y by 2he frae callinglue<9also9n" classi" cls= is oLtxt#169" id="v/medta ework.txss="line" name="L110">/110o/a>initialized before 2 v/media2framework.txt#L138" id="2138" 2lass="r/mede forainiline" name="L110">/110o/a>initialized before 2 ds.a/ 23o/a>a/14/o0a> media_devic2_unregist2r_entity(struct media_en2ity *2ntity) bya/14/o0a> media_devic2_ v/media2framework.txt#L142" id="2142" 2lass="L189" ief="Documeta ewL_.txtlia-fra-fraprhref="lifid="69" opumenta ta line" name="L140">/14/o0a> media_devic2_Documentaot changeithe IDs ofithe2other2entitiwL_.txtliacodehermi v/memaximum"Dopthlassa/205o/a> sed for a2newly registered entity.2/ 23o/a>a/145o0a>Whetia media device2is unregi2tered, all its entities 2re un2egiste-framework.txttemedta ewL_.txtlia2" class="line" name="L202">/202o/a>a/207o0a>An entry inithe link v/media2framework.txt#L148" id="2148" 24716 source_pad,a/205o/a> sds.a/151o/a>a/15/o0a> media_entit2_cleanup(2truct media_entity *enti2y);a<2 href=Tumeta eork.txt#L18class="f="Documeeforealass=edded ina/14/o0a> media_devic2 v/media2framework.txt#L152" id="2152" 2lass="wL_.txtlia-framew59" cl9" id="line" name="L140">/14/o0a> media_devic2 Documentauring the cleanup phase 2fter 25ass="line" name="L203">/203o/a> media_entitye media_e2tity instance itself mus2 be f2eed ex133" id="L13"L147" trork.txte9n"xt id="L149" class="line" name="L149">/149o/a>a/ 55o0a> - dev must point to t2 v/media2framework.txt#L156" id="2156" 25516 source_pad,a/151o/a>a/207o0a>An entry inithe link v/media2framework.txt#L158" id="2158" 2lass="WDocumendta ewL_.txtliaa/14/o0a> media_devic2 ds.a/129o0a> media_devic2used to r2port the default audio a2d vid2o deviGa vFL_.txtli entityalass=ruptef="Docny mo29">mentaframewor v/mediaceworkine" name="L26">/ 26o/a>(CMOS sensor for instanccleanup(2a/103o/a>a/162o/a>Logical entity grou2sicav be 2efined by setting the gr2up ID2ofiallHelp hre v/medi/183o/a>pointer the canonic2 non-zero2on> . An entity group s2rves 2o purpclass="li"Lo/183o/a>pointer the canonic2 d.a/ 55o0a> - dev must point to t2 media de2ice driver and must not 2y tou26516 source_pad,a/ 55o0a> - dev must point to t2 ce),ilogiccal hardware devices (a bs an266 v/media-frameworkkkkkkkkkkkkkkkk/media-framew.txt#L ="line" name="L151">/151o/a>a/168o0a>Media device driver2 should d2fine groupsiif several e2titie26816 source_pad,a/151o/a>a/15/o0a> media_entit2 v/media2framework.txt#L171" id="2171" 2lass="R4" cef="Docuhe grodoc d"L150">/15/oaflasDocum_pada/103o/a>a/162o/a>Logical entity grou2lash cont2ollers associated with a2senso27ass="line" name="L203">/203o/a> media_entity v/media2framework.txt#L174" id="2174" 2lass="Usa untxt#L18ow ceL45" s="line" name="L149">/149o/a>a/149o/a>a/176o0a>Pads are represente2 by a str2ct media_pad instance, d2fined2ina9n" c="line" name="L107">/107o0a> 2entity.h.2Each entity stores its p2ds it2a padsDocumenta ovidea98ow ce. How ocumes="line" name="L164">/164o0a>kernel, but is repo2y driver.2Drivers usually embed th2 arra2 in aa<51" id="L151ramework.tx by tha hrese_ untx entita hrehref="" name="L69">/ 69o0a> "PCI:" (o2cture.a9n" c="line" name="L103">/103o/a>a/181o0a>Pads are identified2by their 2ntity and their 0-based 2ndex 28a-framewoese_ untx entita/166o/a>drivers.a/166o/a>drivers.a/137o/a>a/185o0a>Pads have flags tha2 describe2the pad capabilities and2sta e28ass="line" name="L176">/176o0a>Pads are represente2 v/media2framework.txt#L187" id="2187" 2lass="href="s tupline" name="L176">/176o0a>Pads are represente2 ntity.h.2ca es that the pad suppo2ts si2king dlllllllllllline" name="L149">/149o/a>a/ 89o0a> media_device_u2 v/media2framework.txt#L190" id="2190" 2lass="Lramewrop h id=" href="fod href=id="L20" c49" class="line" name="L149">/149o/a>a/ 91o0a>Unregistering a media 2ocumenta 2 v/media-framework.txt#L292" i29116 source_pad,a/206o/a>a/193o/a>- Linksa ovidainsDocumen" clad="newdia-ft nta "line" name="L137">/137o/a>a/195o/a>Links are represent2d by a st2uct media_link instance,2defin2d ina/110o/a>initialized before 2entity.h.2Each entity stores all l2nks o2iginatia-f.lass="e/211o/a>a/168o0a>Media device driver2ource ent2ty and once inithe targe2 enti2y. Thereda/164o0a>kernel, but is repo2ows dynam2cally as needed.a/164o0a>kernel, but is repo3 v/media3framework.txt#L201" id="3201" 3ed into ta hreordia-f"L65" cseovif=entaDs tup ceworfail3" cl id="LentaDs tup ceworkine" name="L26">/ 26o/a>(CMOS sensor for insta3 by calli3ga/137o/a>a/203o/a> media_entit3_create_l3nk(struct media_entity *3ource3 u16 sMref="DocumeeD-framework.b136" href=menta s tup op h/15/os-framework.txt#line" name="L203">/203o/a> media_entit3_4reate_l3nramework.txt#L195" id="3ink, 30ers that p umenta::entaD6" hy f="Documeo/164o0a>kernel, but is repo3 3 u32 flags);a/149o/a>a/137o/a>a/168o0a>Media device driver3ads.a9txt#l5" Ds tup op h/15/oaifref="Doc-framelss="line" name="L194">/194o0a>a/194o0a>a/ 73o/a>a/212o0a> MEDIA_LNK_F3_ENABLED 3ndica es that the link i3 enab3ed andLrameevifigur 15/oak.txt#L16Documef="slasseffaci or" id="Lentas-f"L69" id hrefline" name="L212">/212o0a> MEDIA_LNK_F3_create_l3e/medi13lass="wf="Docpde3medi13pl strta adia-frameworaprhref=s cl id="Lenta"Ltref="DDoceworafroms="-frame href,line" name="L212">/212o0a> MEDIA_LNK_F3_4reate_l3s3unsef="Documenta v/m3dia-f31.txt#L155l5" Ds tup op h/15/oak.txt" tup" -EBUSYd="L213"framewoik.t" classdis hrehs="line" name="L164">/164o0a>kernel, but is repo3 3the entity driver. Most 3river31ed by erst id href=entaine" name="L73">/ 73o/a>a/207o0a>An entry inithe lin3 v/media3framework.txt#L118" id="3118" 3lass="line" name="L118">/118o0a>Drivers must set th3 ds.a/194o0a>a/149o/a>a/121o0a>Unlikeithe number o3 graph of3ibuilding blocks called 3nƉt alwareda/ 69o0a> "PCI:" (o3"Document3 v/media-framework.tx3#enab3ntity_prhref="ta stv/medfroms="-frafod href=dia-fralass="" c49" class="line" name="L149">/149o/a>a/ 24o0a>An entity is a basic m3edia hard3ware building block. It 3 ed i32mework.txt#L0d,a/ 24o0a>An entity is a basic m3e 3ks such as physical hard3ework32a v/media-framework.txt#L206" id="L2kkk/media-framew.ipead is*.ipe="line" name="L206">/206o/a>a/127o0a>Drivers register en3age proce3ssing pipeline),iDMA cha3ga/127o0a>Drivers register en3ads.a/ 73o/a>a/15/o0a> media_entit3 3 struct media_enti3y *en33href=Tumeframew.ipead ismedia-fraf="Docclass=ymork.tipe arg193"> -framewocumenta line" name="L150">/15/o0a> media_entit3 graph of3framework.txt#L132" id="3132" 33116 sedia-feL159" v/mork.tipead i-frameworkumenta 9" id="L17framew.ipead isramework.line" name="L150">/15/o0a> media_entit3 Document3nique positive integer I3. Dri332 vv/mL113" id="L11.ipead"L213" "L147aed.a/127o0a>Drivers register en3 /media-f3aamework.txt#L24" id="L23"ads 333 vf="Documenta v/tipe t#L66ine" name="L73">/ 73o/a>a/195o/a>Links are represent3/cal bloc3all IDs are unique. IDs 3re no33ass="Classeso0d,a/195o/a>Links are represent3/ce),ilog3all assigved automa ical3y by 3he frabray.a/ 73o/a>a/138o0a>Drivers unregister 3 ds.a/138o0a>Drivers unregister 3 /media-f3framework.txt#L140" id="3140" 3lass="frame up ef="cumee/medixt#LL" f="Domeworkine" name="L73">/ 73o/a>a/121o0a>Unlikeithe number o3_ v/media3framework.txt#L142" id="3142" 34 alwareda/121o0a>Unlikeithe number o3_Document3ot changeithe IDs ofithe3other34ass="line" name="L203">/203o/a> media_entit3sed for a3newly registered entity.3/151o/a>a/145o0a>Whetia media device3is unregi3tered, all its entities 3re un3egisteIk.txlti.txtclasseso0d,a/145o0a>Whetia media device3ice),ilog3ies unregistra v isith3n req34ass="ork.txt#L1d,a/145o0a>Whetia media device3ige proce3framework.txt#L148" id="3148" 347n aa<51" id="L15/tipe t#L66a/ 73o/a>a/ 89o0a> media_device_u3 v/media3framework.txt#L150" id="3150" 34ass="Lrameevifigur 15/oa-framfailmedia--EBUSYdbyL161" id=ifefiid="Lendlrk.txt#l5" rkine" name="L26">/ 26o/a>(CMOS sensor for insta3_cleanup(3truct media_entity *enti3y);a<3 href=aalass="" c4e" id="Lass="ework.txss="afod href=whilealass="" c4 id="L66/ 26o/a>(CMOS sensor for insta3_ v/media3framework.txt#L152" id="3152" 3lass="edia-framhref="a href=DYNAMICt ntaine" name="L73">/ 73o/a>a/203o/a> media_entit3e media_e3tity instance itself mus3 be f3eed exIk. id="Lop h/15/os-n" class="sdis llowe foralass="" c4e" idmewo(suchsasline" name="L203">/203o/a> media_entit3e v/media3f="Documenta v/media-f3amewo3ss="lie/med" c4e" idmewoevifigur 15/oapa mss=")eD-framework.L154" classcheckrameline" name="L203">/203o/a> media_entit3es unregi3framework.txt#L156" id="3156" 35516 s<51" id="L151rams="_ untx entitant cldmoutaifrefia-frameworlass="" ciL19kine" name="L26">/ 26o/a>(CMOS sensor for insta3_ce),ilog3ibe the entity capabilit3es an35ass="op h/15/oak.txt="sdu ouedia-framhat p umentaeta _mutex hL66ine" name="L73">/ 73o/a>a/158o0a> MEDIA_ENT_F3 ds.a/129o0a> media_devic3used to r3port the default audio a3d vid35ass="Lramevalid/129oline" name="L129">/129o0a> media_devic3ccleanup(3a/149o/a>a/162o/a>Logical entity grou3sicav be 3efined by setting the gr3up ID362ss="Lramevalid/129oeworp hada/166o/a>drivers.a/145o0a>Whetia media device3 d.a/145o0a>Whetia media device3 s unregi3ice driver and must not 3y tou36516 sentaDvalid/1er)tclasb_ck,enta v/mediakumenta checkrammework.trop h id="ofline" name="L145">/145o0a>Whetia media device3 ce),ilog3ccal hardware devices (a3bs an366 vef="Documenworark.txt#class="li"ea v/medii own-frameworamatchif"da/176o0a>Pads are represente3 v/media3framework.txt#L168" id="3168" 3lass="so0xte9ass=ark.txt#ea v/(mediin.txt#eaf,ocumetrop h id="of"Documenta )line" name="L176">/176o0a>Pads are represente3 ds.a/137o/a>a/15/o0a> media_entit3 v/media3framework.txt#L171" id="3171" 3lass="Subsyladmrkumenta fac id=2" id="Levalid/129oefraclass=-fralubsyladm " id="L1line" name="L150">/15/o0a> media_entit3 v/media3nodes that carryithe sam3 medi37ass="help hre v/medi/15/o0a> media_entit3 icav be 3ollers associated with a3senso372 vv/mtxt#eaf33" class=a-framewss=sxt#L180" id="L18clasb_ck "line" name="L137">/137o/a>a
Txt#Ld="L19ldLXR"Dofta v=ymork.ine" name"s/lx=">LXR"commun vss=",ocuxt#Lxp hi37">/l rame29oefraine"">lx=@xt#ux.noss=". kcldaRs=pfraLasspro ASss=",o3" clasxt#L1Lt#ux#clasxlti hrefd#op h/15/os-#L1660" cfraid=1995.