NO337350B1 - Forenkling av vekselvirkning mellom videorendrere og grafikkanordningsdrivere - Google Patents

Forenkling av vekselvirkning mellom videorendrere og grafikkanordningsdrivere Download PDF

Info

Publication number
NO337350B1
NO337350B1 NO20031728A NO20031728A NO337350B1 NO 337350 B1 NO337350 B1 NO 337350B1 NO 20031728 A NO20031728 A NO 20031728A NO 20031728 A NO20031728 A NO 20031728A NO 337350 B1 NO337350 B1 NO 337350B1
Authority
NO
Norway
Prior art keywords
video
procamp
device driver
graphics device
accessible media
Prior art date
Application number
NO20031728A
Other languages
English (en)
Other versions
NO20031728D0 (no
NO20031728L (no
Inventor
Stephen J Estrop
Original Assignee
Microsoft Technology Licensing Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing Llc filed Critical Microsoft Technology Licensing Llc
Publication of NO20031728D0 publication Critical patent/NO20031728D0/no
Publication of NO20031728L publication Critical patent/NO20031728L/no
Publication of NO337350B1 publication Critical patent/NO337350B1/no

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • H04N9/641Multi-purpose receivers, e.g. for auxiliary information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/005Adapting incoming signals to the display format of the display terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0117Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving conversion of the spatial resolution of the incoming video signal
    • H04N7/012Conversion between an interlaced and a progressive signal
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/02Addressing, scanning or driving the display screen or processing steps related thereto
    • G09G2310/0229De-interlacing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/04Exchange of auxiliary data, i.e. other than image data, between monitor and graphics controller
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0117Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving conversion of the spatial resolution of the incoming video signal
    • H04N7/0122Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving conversion of the spatial resolution of the incoming video signal the input and the output signals having different aspect ratios
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0127Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level by changing the field or frame frequency of the incoming video signal, e.g. frame rate converter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • H04N9/643Hue control means, e.g. flesh tone control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Image Generation (AREA)

Description

Denne ikke-provisoriske US-patentsøknad tar prioritet fra, og inntar med dette ved referanse hele beskrivelsen i, den samtidig verserende provisoriske US-patentsøknad 60/413,060 som ble innlevert 24. september 2002 med tittelen "Methods for Hardware Accelerating the 'ProcAmp' Adjustments of Video Images on a Computer Display".
Denne ikke-provisoriske US-patentsøknad tar også prioritet fra, og inntar med dette som referanse hele beskrivelsen fra, den samtidig verserende provisoriske US-patentsøknad 60/376,880 som ble innlevert 15. april 2002 med tittelen "Methods and Apparatuses for Facilitating De-lnterlacing of Video Images".
Denne ikke-provisoriske US-patentsøknad er beslektet med temaet for ikke-provisorisk US-patentsøknad 10/273,505 som ble innlevert 18. oktober 2002 med tittelen "Methods and Apparatuses For Facilitating Processing Of Interlaced Video Images For Progressive Video Displays". Denne ikke-provisoriske US-patent-søknad 10/273,505 inntas med dette også som referanse her i sin helhet.
Denne beskrivelsen vedrører generelt prosessering av bilde/grafikkdata for fremvisning og spesielt, som et eksempel, men uten begrensning, for å forenkle vekselvirkning mellom videorendrere og grafikkanordning-drivere under anvendelse av en protokoll for å kommunisere informasjon mellom slike, så vel som derav følgende funksjonalitet. Slik informasjon kan omfatte forespørseler, responser, instruksjoner, etc. vedrørende, for eksempel, ProcAmp-innstillingsoperasjoner.
I et typisk datamiljø er et skjermkort eller liknende ansvarlig for å overføre bilder til en skjermanordning og for å håndtere i hvert fall deler av prosesseringen av bilder. For videobilder anvendes ofte en grafikkoverlagringsanordning og -teknikk av skjermkortet og datamaskinanordningen som sådan. For eksempel, for å vise frem videobilder fra en DVD eller Internett streaming-kilde, blir det initiert en grafikkoverlagringsprosedyre for å plassere og opprettholde videobildene.
En grafikkoverlagringsprosedyre velger et rektangel og en nøkkelfarge for å beregne det stedet på skjermen hvor videobildet skal vises. Rektangelet kan være definert av en startkoordinat for et hjørne av rektangelet sammen med den ønskede høyden og bredden. Nøkkelfargen er vanligvis en sjelden sett farge så som lys rosa, og anvendes for å sikre at videobildet blir lagt over det definerte rektangelet bare dersom videobildet er logisk posisjonert ved et øverste lag av et skjermskrivebord som vises i skjermbildet.
I operasjon, mens skjermkortet sender pikselfargetoner til en skjermanordning, sjekker den for å bestemme om en gitt pikselposisjon er innenfor det valgte grafikkoverlagringsrektangelet. Hvis ikke sendes standard-bildedataene til skjermanordningen. Dersom på den annen side den gitte pikselposisjonen ligger innenfor det valgte grafikkoverlagringsrektangelet, sjekker skjermkortet for å bestemme hvorvidt standard-bildedataene i den pikselen er lik den valgte nøkkel-fargen. Hvis ikke sendes standard-bildedataene til skjermanordningen for den gitte pikselen. Dersom på den annen side fargen til den gitte pikselen er den valgte nøkkelfargen, sender skjermkortet videobildedataene til skjermanordningen for den gitte pikselen.
Det er, uheldigvis, flere ulemper ved denne grafikkoverlagringsteknikken. For det første er det vanligvis bare tilstrekkelig maskinressurser til at én grafikkoverlagringsprosedyre kan kjøre om gangen. Uansett resulterer alltid avhengighet av grafikkoverlagringsteknikken i begrensninger på antallet mulige samtidige videofremvisninger som begrenset av maskinvaren. For det andre blir den rosa eller en annen nøkkelfarge av og til synlig (dvs. vist på en assosiert skjermanordning) når vinduet som inneholder det viste videobildet blir beveget hurtig rundt på skjermskrivebordet.
For det tredje fungerer ikke en "print screen"-kommando effektivt ettersom videobildet som vises på skjermanordningen ikke fanges opp av "print screen"-kommandoen. Istedet fanges nøkkelfargen opp av "print screen"-kommandoen, slik at det utskrevne (eller kopierte og innlimte) bildet omfatter et ensfarget rektangel av nøkkelfargen der videobildet vises på skjermanordningen.
En annen teknikk for å vise videobilder omfatter det å anvende verts-mikroprosessoren for å utføre bildejusteringer før videobildet overføres til grafikkpro-sessoren for videresending til skjermanordningen. Det er også flere ulemper ved denne vertsprosessor-teknikken. For det første er ikke verts-mikroprosessoren og det assosierte minnesystemet i et typisk datamiljø optimalisert for prosessering av store videobilder. Følgelig er størrelsen til og antallet av videobilder som kan vises betydelig begrenset. For det andre, for at verts-mikroprosessoren skal arbeide effektivt, må videobildet ligge i minne som kan adresseres direkte av verts-mikro prosessoren. Som følge av dette kan ikke andre typer maskinvare-akselerasjon, så som dekomprimering og/eller de-interlacing utføres på videobildet.
US 5,715,459 omhandler en avansert grafikkdriver-arkitektur som forenkler bruk av display-anordning-drivere som inneholder et minimum av maskinvare-spesifikk programvarekode.
Kort sammenfattet resulterer tidligere teknikker så som grafikkoverlagrings-prosedyren og bruk av verts-prosessoren i visuelle artifakter, de er for langsomme og/eller anvender minneressursene ineffektivt, de begrenses av maskinvaren, de begrenser fleksibiliteten for videofremvisningen og/eller muliggjør ikke en fullstendig funksjonell "print screen"-kommando. Følgelig er det et behov for skjemaer og/eller fremgangsmåter for å rette på disse og andre mangler ved, bl. a., forenkle vekselvirkningen mellom videorendrere og grafikkanordning-drivere.
Hovedtrekkene ved oppfinnelsen fremgår av de selvstendige patentkrav. Ytterligere trekk ved oppfinnelsen er angitt i de uselvstendige krav.
Forenkling av vekselvirkning mellom videorendrere og grafikkanordning-drivere kan oppnås via kommunikasjonsprotokoller og/eller API-funksjoner som muliggjør utveksling av informasjon vedrørende bildeprosesseringsmulighetene hos assosiert grafikk-maskinvare mellom en grafikkanordning-driver og en videorendrer. Bildeprosesseringsmulighet omfatter videoprosesseringsmulighet; videoprosesseringsmulighet omfatter for eksempel, men uten begrensning, prosessamplifikator (ProcAmp)-kontrollinnstillinger, de-interlacing, korreksjon av høyde/bredde-forhold, konvertering avfargerommet, konvertering av bildefrekvensen, vertikal eller horisontal speiling og alfablending.
I et eksempel på en fremgangsmåteimplementasjon forenkler en fremgangsmåte vekselvirkning mellom én eller flere videorendrere og minst én grafikkanordning-driver, idet fremgangsmåten omfatter de trinn å: forespørre, fra én videorendrer av den ene eller de flere videorendrerne, den minst ene grafikkanordning-driveren vedrørende videoprosesseringsmulighetene; og informere, fra den minst ene grafikkanordning-driveren, videorendreren om i hvert fall deler av de videoprosesseringsmulighetene som den minst ene grafikkanordning-driveren kan tilby videorendreren.
I et første eksempel på mediaimplementasjon utfører elektronisk eksekverbare instruksjoner i dette for en videorendrer handlinger omfattende det å: sende ut en forespørsel fra en videorendrer til en grafikkanordning-driver, der fore-spørselen etterspør informasjon vedrørende ProcAmp-mulighetene; og motta en respons hos videorendreren fra grafikkanordning-driveren, der responsen omfatter den etterspurte informasjonen vedrørende ProcAmp-mulighetene.
I et andre eksempel på mediaimplementasjon utfører elektronisk-eksekverbare instruksjoner i dette for en grafikkanordning-driver handlinger omfattende det å: motta en forespørsel hos en grafikkanordning-driver fra en videorendrer, der fo respørselen etterspør informasjon vedrørende ProcAmp-mulighetene; og sende en respons til videorendreren fra grafikkanordning-driveren, der responsen omfatter den etterspurte informasjonen vedrørende ProcAmp-mulighetene.
I et eksempel på en systemimplementasjon forenkler et system vekselvirkning mellom en videorendrer og en grafikkanordning-driver, idet systemet omfatter: videogjengivelseslogikk som er innrettet for å utarbeide forespørseler som etterspør informasjon vedrørende ProcAmp-muligheter som kan benyttes for video som skal vises; og grafikkanordning-driverlogikk som er konstrert for å utarbeide responser som angir hva slags ProcAmp-muligheter som kan benyttes for video som skal vises.
Andre implementeringer av fremgangsmåter, systemer, apparater, protokoller, medier, arrangementer, etc. er beskrevet her.
Samme referansenummer anvendes i alle figurene for å henvise til like og/eller tilsvarende aspekter, særtrekk, mekanismer og komponenter. Figur 1 viser en første videoprosesserings-pipeline som omfatter en ProcAmp-innstillingsoperasjon. Figur 2 viser en andre videoprosesserings-pipeline som omfatter to videoprosesseringsoperasjoner for å oppnå et RGB-rendret mål. Figur 3 viser en tredje videoprosesserings-pipeline som omfatter én video prosesseringsoperasjon for å oppnå et RGB-rendret mål. Figur 4 er et blokkdiagram som illustrerer visse funksjonelle elementer av en datamaskin eller en annen elektronisk anordning som er innrettet for å lette vekselvirkning mellom videorendrere og grafikkanordning-drivere. Figur 5 er et kommunikasjons/signaleringsdiagram som illustrerer et eksempel på protokoll mellom en videorendrer og en grafikkanordning-driver. Figur 6 er et flytdiagram som illustrerer et eksempel på fremgangsmåte for
å forenkle vekselvirkning mellom en videorendrer og en grafikkanordning-driver.
Figur 7 illustrerer et eksempel på et datamaskin (eller en generell elektronisk anordning)-driftsmiljø som kan (helt eller delvis) implementere i hvert fall ett aspekt ved det å forenkle vekselvirkning mellom videorendrere og grafikkanordning-drivere som beskrevet her
Eksempler på videoprosessering- pipeliner og ProcAmp- innstillinger Eksempel på videoprosesserings- pipeline med en ProcAmp- innstilling
Figur 1 viser en første videoprosesserings-pipeline 100 som omfatter en ProcAmp-innstillingsoperasjon 104. Først kan videoprosesserings-pipelinen 100 implementeres ved anvendelse av grafikk-maskinvare så som et skjermkort. Den omfatter (i) tre bildeminneblokker 102, 106 og 108 og (ii) minst én bildeprosesseringsoperasjon 104. Bildeminneblokken 102 inneholderen YUVvideobilde offscreen plan overflate. Bildeprosesseringsoperasjonen 104, som omfatteren ProcAmp-innstillingsoperasjon 104 som illustrert, anvendes på bildeminneblokken 102 for å produsere bildeminneblokken 106. Bildeminneblokken 106 inneholderen YUV offscreen plan overflate eller en YUV tekstur, avhengig av parametrene og mulighetene til grafikk-maskinvaren som utfører bildeinnstillingsoperasjonene.
Etter én eller flere ytterligere bildeprosesseringsoperasjoner (ikke eksplisitt vist i figur 1), produserer grafikk-maskinvaren bildeminneblokken 108, som omfatter et RGB-rendret mål. Det RGB-rendrede målet i bildeminneblokken 108 kan vises på en skjermanordning av grafikk-maskinvaren uten ytterligere bildeprosesseringsoperasjoner. Videre inneholder bildeminneblokken 108 bildedatafor hver piksel i en bildeflate for en skjermanordning, slik at ingen bildedata må hentes fra annet minne under overføringen av bildedataene fra bildeminneblokken 108 til skjermanordningen.
ProcAmp-innstillingsoperasjonen 104 refererer til én eller flere prosessamplifikator (ProcAmp)-innstillinger. Konseptet med ProcAmp-innstillinger oppstod den gang video ble lagret, manipulert og vist ved anvendelse av analoge teknikker. ProcAmp-innstillingsoperasjoner 104 kan imidlertid nå utføres ved anvendelse av digitale teknikker. Slike ProcAmp-innstillingsoperasjoner 104 kan omfatte én eller flere operasjoner som er rettet mot én eller flere av i hvert fall de følgende bildeegenskaper: lysstyrke, kontrast, fargemetning og fargetone.
Eksempler på ProcAmp- relaterte bildeegenskaper
De følgende beskrivelsene av lysstyrke, kontrast, fargemetning og fargetone, sammen med mulige og/eller foreslåtte settinger for å manipulere deres verdier, er for et beskrevet implementasjonseksempel. Andre retningslinjer for ProcAmp-innstilling kan alternativt anvendes.
Lysstyrke: Lysstyrke er alternativt kjent som "Black Set"; lysstyrke må ikke forveksles med økning (kontrast). Den anvendes for å sette "viewing black" nivået i hvert konkrete fremvisningstilfelle. Funksjonelt sett adderer eller subtraherer den samme antall kvantiseringssteg (bit) i alle luminansordene i et bilde. Den kan, og vil i alminnelighet, skape klippingssituasjoner dersom offset pluss et luminansord er mindre enn 0 eller større enn hele området. Den er vanligvis interaktiv med kontraststyringen.
Kontrast: Kontrast er "økningen" av bildeluminansen. Den anvendes for å endre de relative lys-til-mørk verdiene i et bilde. Funksjonelt sett er den en lineær positiv eller negativ økning som avbilder det innkommende området av verdier til et mindre eller et større område. Referansepunktet (f.eks. ingen forandring når økningen endres) er normalt lik en kode 0, men det er mer korrekt det kodeordet som er assosiert med et nominelt referansepunkt for sort. Kontrastøknings-strukturen er vanligvis en lineær overgang som passerer gjenom dette referansepunktet. Kontrastfunksjoner involverer vanligvis avrunding av de beregnede verdiene dersom økningen er satt til noe annet enn 1 —til—1, og denne avrundingen omfatter vanligvis programmatisk formattilpasning for å unngå at det dannes synlige artifakter, "konturdannelse".
Fargemetning: Fargemetning er den logiske ekvivalenten til kontrast. Den er en forsterkningsfunksjon, med et referansepunkt rundt "null fargetone" (f.eks. kode 128 i YUV eller kode 0 i RGB i en beskrevet implementasjon).
Fargetone: fargetone er en faserelasjon mellom krominans-komponentene. Fargetone blir typisk spesifisert i grader, med et gyldig område fra -180 til +180 og en standardverdi på 0 grader. Fargetone i komponentsystemer (f.eks. YUV eller RGB) er en tredelt variabel der de tre komponentene endres sammen for å opprettholde gyldige krominans/luminans-relasjoner.
Eksempel på ProcAmp- relatert innstilling i YUV- fargerommet
De følgende beskrivelsene av det å prosessere lysstyrke, kontrast, fargemetning og fargetone i YUV-fargerommet, sammen med mulige og/eller foreslåtte settinger for å manipulere deres verdier, er for et beskrevet implementasjonseksempel. Andre justerings-retningslinjer kan alternativt anvendes. I alminnelighet forenkler det å jobbe i YUV-fargerommet de beregningene som er involvert for ProcAmp-innstillingskontroll av en videostrøm.
Y-prosessering: Seksten (16) blir subtrahert fra Y-verdiene for å posisjonere det sorte nivået ved null. Dette fjerner DC-forskyvningen slik at det å justere kontrasten ikke varierer nivået av sort. Ettersom Y-verdien kan være mindre enn 16, må negative Y-verdier være støttet i denne delen av prosesseringen. Kontrasten reguleres ved å multiplisere YUV-pikselverdiene med en konstant.
(Dersom U og V reguleres, vil et fargetoneskift være resultatet når kontrasten endres). Lysstyrke-egenskapens verdi blir addert til (eller subtrahert fra) de kontrast-regulerte Y-verdiene; dette hindrer at det introduseres en DC-offset som følge av kontrastinnstillingen. Til slutt blir verdien 16 lagt tilbake for å tilbakebringe nivået av sort ved 16. En eksempelvis likning for prosesseringen av Y-verdiene er således:
der C er kontrastverdien og B er lysstyrkeverdien.
UV Prosessering: ett hundrede og tjueåtte (128) blir først subtrahert fra både U- og V-verdiene for å posisjonere intervallet omkring null. Fargetone-egenskapen alene realiseres ved å blande U- og V-verdiene som følger:
der H representerer den ønskede fargetone-vinkelen.
Fargemetningen justeres ved å multiplisere både U og V med en konstant sammen med fargemetningsverdien. Til slutt adderes verdien 128 tilbake til både U og V. Den kombinerte prosesseringen av fargetone og fargemetning for UV-dataene er således:
Der C er kontrastverdien som i Y'-likningen ovenfor, H er fargetone-
vinkelen og S er fargemetningen.
Eksempler på videoprosesserings- pipeline med to prosesseringsoperasjoner
Figur 2 viser en andre videoprosesserings-pipeline 200 som omfatter to videoprosesseringsoperasjoner 202 og 206 for å oppnå RGB-rendringsmålet 108. Den andre videoprosesserings-pipelinen 200 omfatter (i) tre bildeminneblokker 102, 204 og 108 og (ii) to bildeprosesseringsoperasjoner 202 og 206.
For den andre videoprosesserings-pipelinen 200 generelt, omfatter bildeminneblokken 204 en RGB-tekstur. Bildeminneblokken 204 er resultatet av bildeminneblokken 102 etter anvendelse av bildeprosesseringsoperasjonen 202. Bildeminneblokken 108 blir produsert fra bildeminneblokken 204 etter bildeprosesseringsoperasjonen 206.
Andre bildeprosesseringsoperasjoner, i tillegg til en ProcAmp-kontroll-innstilling, kan utføres. For eksempel kan én eller flere av de følgende eksempler på videoprosesseringsoperasjoner anvendes på videobildedata før de vises på en billedflate i en skjermanordning: 1. ProcAmp-kontrollinnstillinger; 2. De-interlacing; 3. korreksjon av høyde/bredde-forholdet;
4. konvertering av fargerommet; og
5. vertikal eller horisontal speiling og alfablending.
Når det er mulig, kombineres de ønskede video (og/eller andre bilde)-prosesseringoperasjonene til så få operasjoner som mulig for å redusere den totale minnekapasiteten som opptas under prosessering av videobildene. I hvilken grad prosesseringsoperasjonene kan kombineres bestemmes generelt av grafikk-maskinvarens muligheter. Prosessering for konvertering av fargerommet og prosessering for å korrigere høyde/breddeforholdet anvendes typisk på mange av, om ikke de fleste, videostrømmer. Vertikal/horisontal speiling og alfablending anvendes imidlertid mindre hyppig.
I den andre videoprosesserings-pipelinen 200 kombineres ProcAmp-innstillingsprosessering og prosessering i forbindelse med konvertering av fargerommet i bildeprosesseringsoperasjonen 202. Prosessering for å korrigere høyde/bredde-forholdet blir utført i bildeprosesseringsoperasjonen 206. Eventuelt kan vertikal/horisontal speiling og/eller alfablending kombineres inn i bildeprosesseringsoperasjonen 206. Som illustrert, anvender grafikk-maskinvaren som implementerer den andre videoprosesserings-pipelinen 200 to bildeprosesseringsoperasjoner og tre bildeminneblokker for å produsere bildeminneblokken 108 som RGB-rendringsmålet. Visse andre typer grafikk-maskinvare kan imidlertid være mer effektive.
Eksempler på videoprosesserings- pipeline med én prosesseringsoperasjon
Figur 3 er en tredje videoprosesserings-pipeline 300 som omfatter én videoprosesseringsoperasjon 302 for å oppnå et RGB-rendret mål 108. Generelt er den tredje videoprosesserings-pipelinen 300 implementert med grafikk-maskinvare ved anvendelse av én bildeprosesseringsoperasjon 302 og to bildeminneblokker 102 og 108. Spesifikt blir bildeminneblokken 108 produsert fra bildeminneblokken 102 via bildeprosesseringsoperasjonen 302. Bildeprosesseringsoperasjonen 302, som illustrert, omfatter flere videoprosesseringsoperasjoner som beskrevet nedenfor.
Den tredje videoprosesserings-pipelinen 300 er kortere enn den andre videoprosesserings-pipelinen 200 (fig. 2) fordi bildeprosesseringsoperasjonen 302 kombinerer ProcAmp-innstillingsprosessering, prosessering for konvertering av fargerommet og prosessering for å korrigere høyde/bredde-forholdet. Antallet trinn i en gitt videoprosesserings-pipeline er derfor avhengig av antallet av og typen bildeprosesseringsoperasjoner som blir etterspurt av programvare (f.eks. en applikasjon, en operativsystem-komponent, osv.) som viser videobildet så vel som kapabiliteten til den assosierte grafikk-maskinvaren. Eksempler på programvare, grafikk-maskinvare osv. er beskrevet ytterligere nedenfor med henvisning til fig. 4.
Eksempler på video- relatert programvare og grafikk- maskinvare
Figur 4 er et blokkdiagram 400 som illustrerer visse funksjonelle elementer av en datamaskin eller en annen elektronisk anordning som er konstruert for å lette vekselvirkning mellom en videorendrer 410 og en grafikkanordning-driver 422. Disse forskjellige eksemplene på elementer og/eller funksjoner kan implementeres i maskinvare, programvare, fastvare, en kombinasjon av disse, etc. Slik maskinvare, programvare, fastvare, kombinasjon av disse, osv. betegnes her
samlet eller separat generisk som logikk.
Konstruksjonen i blokkdiagrammet 400 er bare et eksempel på et prosesseringsapparat eller -system for videodata. Det skal forstås at én eller flere av de illustrerte og beskrevne elementer og/eller funksjoner kan kombineres, rearrangeres, utvides, utelates, etc. uten å forringe evnen til å lette vekselvirkning mellom videorendrere og grafikkanordning-drivere.
Apparatet eller systemet 400 omfatter transformasjonslogikk 408, som for eksempel kan omfatte instruksjoner som utføres av en sentralprosesseringsenhet (CPU), en grafikkprosesseringsenhet og/eller en kombinasjon av slike. Transformasjonslogikken 408 er konstruert for å motta kodede videodata fra minst én kilde 406. De kodede videodataene fra en kilde 406 er kodet i ett eller annen format (f.eks. MPEG-2, etc), og transformasjonslogikken 408 er konstruert for å dekode de kodede videodataene.
Som et eksempel kan kilden 406 omfatte en magnetdisk med tilhørende diskstasjon, en optisk disk med tilhørende diskstasjon, et magnetbånd med til-hørende stasjon, solid-state minne, et overført signal, et overføringsmedium eller en annen tilsvarende kilde som er innrettet for å levere eller på annen måte tilveiebringe de kodede videodataene til transformasjonslogikken 408. Ytterligere eksempler på kilde 406 er beskrevet nedenfor med henvisning til figur 7. I visse implementasjoner kan kilden 406 omfatte flere kildekomponenter så som en nettverkskilde og en fjernlokalisert kilde. Som illustrert omfatter kilden 406 Internett 404 og en fjernlokalisert disk-basert lagringsenhet 402.
De dekodede videodataene som mates ut av transformasjonslogikken 408 blir sendt til minst én videorendrer 410. Som et eksempel, men uten begrensning, kan videorendreren 410 realiseres ved anvendelse av Video Mixer and Renderer (VMR) i et Microsoft® Windows® operativsystem (OS). I en beskrevet implementasjon er videorendreren 410 innrettet for å hjelpe transformasjonslogikken 408 med å dekode bildestrømmen, å forårsake at det utføres videoprosesseringsoperasjoner, å kombinere eventuelle andre hjelpe- bildedata, så som lukkede bildetekster (CC, closed-caption) eller DVD-delbilder, med videobildet osv. Videre, på et passende tidspunkt, sender videorendreren 410 inn eller forårsaker innsending av videobildedataene til grafikk-grensesnittslogikken 412 for endelig fremvisning på en skjermanordning 436.
De resulterende rendrede videodataene blir således sendt til grafikk-grensesnittslogikken 412. Som et eksempel, men uten begrensning, kan den grafikk-grensesnittslogikken 412 for eksempel omfatte DirectDraw®, Direct3D® og/eller annen tilsvarende logikk. Grafikk-grensesnittslogikken 412 er konstruert for å tilveiebringe et grensesnitt mellom videorendreren 410 og en grafikkanordning
424. Som illustrert omfatter grafikkanordningen 424 en grafikkprosesseringsenhet (GPU) 426, et bildeminne 432 og en digital-til-analog konverter (DAC) 434. Som et eksempel, men uten begrensning, kan grafikkanordningen 424 realiseres i form av et videoskjerm kort som er tilveiebragt i en datamaskin eller en annen elektronisk anordning.
Bildedataene som mates ut av grafikk-grensesnittslogikken 412 sendes til en grafikkanordning-driver 422 under anvendelse av et anordningdriver-grensesnitt (DDI) 414. I figur 4 er anordningdriver-grensesnittet 414 vist å ha minst én API-funksjon 416 assosiert med seg. Anordningdriver-grensesnittet 414 er konstruert for å støtte og/eller etablere grensesnittet mellom videorendrer 410 og grafikkanordning-driver 422.
Som illustrert ved apparatet/systemet 400, og for en beskrevet implementasjon, kan anordningdriver-grensesnittet 414 og grafikkanordning-driveren 422 videre være inkludert som en del av enten brukemodus 418 eller kjernemodus 420 i det assosierte operativsystem-miljøet og grafikkanordningen 424. Videorendrer 410 og anordningdriver-grensesnittet 414 er således del av brukermodus 418 og grafikkanordning-driveren 422 er del av kjernen 420. Den kommunikasjonen som forekommer, i hvert fall mellom anordningdriver-grensesnittet 414 og grafikkanordning-driveren 422, krysser mellom brukermodus 418 og kjernemodus 420.
I denne beskrevne implementasjonen blir således videobildedataene som mates ut av videorendreren 410 sendt til grafikkprosessorenheten 426. Grafikkprosessorenheten 426 kan konfigureres til å utføre én eller flere bildeprosesseringsoperasjoner. Disse bildeprosesseringsoperasjonene omfatter ProcAmp-innstillinger og/eller andre videoprosesseringoperasjoner som angitt henholdsvis av ProcAmp-innstillingslogikken 428 og/eller annen videoprosessering-operasjonslogikk 430. ProcAmp-innstillingsoperasjoner og andre eksempelvise videoprosesseringsoperasjoner, så som de-interlacing og konvertering av bildefrekvensen, er beskrevet ytterligere nedenfor så vel som ovenfor.
Utdataene fra grafikkprosessorenheten 426 blir sendt til bildeminnet 432. Når bildeminnet 432 blir lest fra, kan de resulterende bildedataene sendes til en digital-til-analog omformer 434, som mater ut et motsvarende analogt bildesignal som er egnet for fremvisning på og av skjermanordningen 436. I andre konstruksjoner kan skjermanordningen 436 ha kapabilitet til å vise de digitale bildedataene fra bildeminnet 432 uten å analogisere dem i en digital-til-analog omformer 434.
Eksempel på protokoll mellom en videorendrer og en grafikkanordning-driver
Figur 5 er et kommunikasjons/signaleringsdiagram 500 som illustrerer en eksempelvis protokoll mellom en videorendrer 410 og en grafikkanordning-driver 422. Protokoll-eksempelet forenkler det å utføre video (eller andre bilde)-prosesseringsoperasjoner så som en ProcAmp-innstilling. Slike videoprosesseringsoperasjoner kan omfatte de som etterspørres/spesifiseres av en brukerbetjent og - styrt videofremvisningsapplikasjon (f.eks. en bildefremvisende applikasjon).
Kommunikasjons/signaleringsdiagrammet 500 omfatter flere kommunika-sjonsutvekslinger og kommunikasjonsoverføringer mellom videorendrer 410 og grafikkanordning-driver 422. Eventuelt kan kommunikasjonene muliggjøres og/eller hjelpes av grafikk-grensesnittet 412 (i figur 4) og/eller anordningdriver-grensesnittet 414, sammen med eventuelle anvendbare API-funksjoner 416 i dette.
En kommunikasjonsutveksling 502 er rettet mot det å bestemme videoprosesserings (VP)-muligheter. Spesifikt forespør videorendreren 410 i overføringen 502A grafikkanordning-driveren 422 vedrørende videoprosesseringsmulighetene som innehas og som tilbys av grafikkanordning-driveren 422. I responsen 502B informerer grafikkanordning-driveren 422 videorendreren 410 om videoprosesseringsmulighetene som tilbys.
De tilbudte videoprosesseringmulighetene omfatter de videoprosesseringsoperasjoner som grafikkanordning-driveren 422 kan utføre. Disse kan omfatte én eller flere ProcAmp-kontrollinnstillingsoperasjoner, de-interlacing operasjoner, operasjoner for å korrigere høyde/bredde-forholdet, operasjoner for å konvertere fargerommet, vertikal/horisontal speiling og alfablending, operasjoner for å omgjøre bildefrekvensen og så videre. Grafikkanordning-driveren 422 kan velge å tilveiebringe all eller en del av den gjenværende videoprosesseringskapasiteten. Ved å tilby mindre enn hele den gjenværende videoprosesseringskapasiteten kan grafikkanordning-driveren 422 reservere ytterligere videoprosesseringkapasitet for påfølgende forespørseler.
En kommunikasjonsutveksling 504 er rettet mot det å bestemme egenskap-styringsmuligheter for en spesifisert videoprosesseringsoperasjon. I en forespørsel 504A som sendes fra videorendrer 410 til grafikkanordning-driver 422, spesifiserer videorendrer 410 en spesifikk videoprosesseringsoperasjon som tilveiebringes i responsen 502B. Forespørselen 504A kan også omfatte en forespørsel om hva slags eller hvilke egenskapmuligheter grafikkanordning-driveren 422 kan utføre med hensyn til den spesifikke videoprosesseringsoperasjonen. I en respons 504B informerer grafikkanordning-driveren 422 videorendreren 410 om de egenskapmulighetene som er tilgjengelig for den spesifiserte, spesifikke videoprosesseringsoperasjonen. Kommunikasjonsutvekslingen 504 kan utelates dersom, for eksempel, det ikke tilveiebringes flere egenskap-styringsmuligheter for den spesifikke videoprosesseringsoperasjonen.
En kommunikasjonsutveksling 506 er rettet mot det å bestemme hvilke av de andre tilveiebragte videoprosesseringsoperasjonene som kan utføres samtidig med den spesifikt spesifiserte videoprosesseringsoperasjonen. I en forespørsel 506A sender videorendrer 410 en forespørsel til grafikkanordning-driveren 422 for å bestemme hvilke videoprosesseringsoperasjoner, hvis noen, som kan utføres samtidig med den spesifikke videoprosesseringoperasjonen. Grafikkanordning-driver 422 informerer videorendrer 410 i responsen 506B om de videoprosesseringsoperasjonene som er mulig for grafikkanordning-driveren 422 å utføre samtidig med den spesifikke videoprosesseringsoperasjonen. Som et eksempel skal det bemerkes at (i) overføringene 504A og 506A og/eller (ii) overføringene 504B og 506B henholdsvis kan kombineres til én enkelt forespørsels- og respons-overføring.
En kommunikasjonsutveksling 508 er rettet mot det å etablere verdier for en spesifisert kontrollegenskap for den spesifikke videoprosesseringsoperasjonen. I en forespørsel 508A spesifiserer videorendrer 410 i en forespørsel en kontrollegenskap for den konkrete videoprosesseringsoperasjonen. Den spesifiserte kontrollegenskapen kan være valgt blant de tilgjengelige kontrollegenskapene som ble spesifisert i responsen 504B. Grafikkanordning-driveren 422 tilveiebringer verdier som er relatert til den spesifiserte kontrollegenskapen for den aktuelle videoprosesseringsoperasjonen til videorendrer 410. Disse verdiene kan være numeriske referanseverdier, områder, etc. som videorendreren 410 kan anvende som en referanseramme når den instruerer grafikkanordning-driver 422 om å utføre den aktuelle videoprosesseringsoperasjonen. Kommunikasjonsutvekslingen 508 kan gjentas for hver tilgjengelige kontrollegenskap som er angitt i responsen 504B. Alternativt kan én slik kommunikasjonsutveksling 508 være rettet mot flere (omfattende alle) kontrollegenskaper blant de tilgjengelige kontrollegenskapene.
En kommunikasjonsutveksling 510 er rettet mot det å initiere et videoprosessering-streamobjekt. I en instruksjon 51 OA sender videorendreren 410 en kommando til grafikkanordning-driveren 422 om å åpne et videoprosessering-streamobjekt. Denne kommandoen kan være sendt på vegne av en applikasjon eller en annen programvarekomponent som ønsker å vise videobilder på skjermanordningen 436. I en respons 51 OB returnerer grafikkanordning-driveren 422 en peker til videoprosessering-streamobjektet til den aktuelle videorendreren 410.
I en overføring 512A instruerer videorendreren 410 grafikkanordning-driveren 422 om å utføre den aktuelle eller en annen tilgjengelig videoprosesseringsoperasjon. Kommandoen om å utføre videoprosesseringsoperasjonen kan omfatte valgte talltegn for å sette og/eller endre verdiene til én eller flere kontrollegenskaper for den aktuelle videoprosesseringsoperasjonen. I respons utfører grafikkanordning-driveren 422 en videoprosesseringsoperasjon 512B som fore-spurt i overføringen 512A. Typisk tilordnes minst én videorendrer 410 til hver applikasjon som skal vise video. Når en slik bildevisende applikasjon ber om en videoprosesseringsoperasjon, for eksempel, sender videorendreren 410 denne forespørselen i form av en videoprosesserings-instruksjon, eventuelt etter omformattering, konvertering etc, til grafikkanordning-driveren 422.
Kommandoene 512A om å utføre en videoprosesseringsoperasjon og de resulterende videoprosesseringsoperasjoner 512B kan gjentas som ønsket så lenge videoprosessering-streamobjektet eksisterer. Når videoen er fullført eller den relevante programvaren har terminert, sendes en instruksjon 514 om å lukke videoprosessering-streamobjektet fra videorendreren 410 til grafikkanordning-
driveren 422.
Fremgangsmåtene i figurene 4, 5 og 6, for eksempel, er illustrert i diagrammer som er delt inn i flere blokker og/eller flere overføringer. Den rekke-følgen og/eller layouten med hvilken fremgangsmåtene er beskrevet og/eller vist er imidlertid ikke ment å oppfattes som en begrensning, og et hvilket som helst antall av blokkene/overføringene kan kombineres og/eller rearrangeres i en hvilken som helst rekkefølge for å implementere én eller flere av systemer, fremgangsmåter, medier, protokoller, arrangementer, etc. for å forenkle vekselvirkning mellom videorendrere og grafikkanordning-drivere. Videre, selv om beskrivelsen her omfatter henvisninger til spesifikke implementasjoner, så som den i figur 4 (så vel som det eksempelvise systemmiljøet i figur 7), og til eksempelvise API-funksjoner, kan fremgangsmåtene implementeres i enhver egnet maskinvare, programvare, fastvare eller kombinasjon derav, og ved anvendelse av hvilket eller hvilke som helst egnede programmeringsspråk, kodingsmekanisme(r), protokoll-paradigme(r), grafikkoppsett osv.
Eksempel på generelt API
Figur 6 er et flytdiagram 600 som illustrerer et eksempel på fremgangsmåte for å forenkle vekselvirkning mellom en videorendrer 410 og en grafikkanordning-driver 422. Selv om en beskrevet implementasjon som illustrert i figur 6 er rettet mot en ProcAmp-innstillingsoperasjon, er den ikke begrenset til en slik. Tvert om kan i hvert fall visse aspekter ved dette eksempelet på generelt API anvendes med én eller flere andre video (eller generelle bilde)-prosesseringsoperasjoner.
I flytdiagram met 600 er videorendreren 410 assosiert med ni (9) blokker 602-618, og grafikkanordning-driveren 422 er assosiert med seks (6) blokker 620-630. Hver av blokkene 602-618 og 620-630 svarer til minst én handling som henholdsvis blir utført av eller på vegne av videorendreren 410 og grafikkanordning-driveren 422.
Flytdiagrammet 600 er beskrevet nedenfor i forbindelse med eksempler på generelle API-funksjoner. Disse generelle API-funksjonene som er beskrevet her kan deles inn i to funksjonelle grupper av metoder, apparatlogikk, etc. Den første gruppen kan anvendes for å bestemme videoprosesseringsmulighetene for en grafikkanordning. Den andre gruppen kan anvendes for å opprette og anvende
stream-objekter for videoprosesseringsoperasjoner.
Disse eksemplene på generelle API-funksjoner kan svare til API-funksjonene 416 (i figur 4) som er illustrert som en del av anordningdriver-grensesnittet 414, som støtter det grafiske grensesnittet 412 og som har et grensesnitt mot grafikkanordning-driver 422. API-funksjonene 416 er således illustrert som en del av anordningdriver-grensesnittet 414 som befinner seg i brukermodus-delen 418. Slike API-funksjoner 416 kan imidlertid alternativt være lokalisert ved og/eller fungere med annen logikk i tillegg til anordningdriver-grensesnittet 414. Slik annen logikk omfatter, kun som eksempler, videorendrer 410, grafikk-grensesnitt 412, en eller annen del av kjernemodus 420, osv.
De generelle API-funksjonene som er beskrevet nedenfor i denne seksjonen kan anvendes for å utvide/forbedre/etc. Microsoft® DirectX® Video Acceleration (VA), for eksempel, for å støtte hvilke som helst blant flere mulige videoprosesseringsoperasjoner (f.eks. ProcAmp-innstillinger, konvertering av bildefrekvensen, etc.) på videoinnhold som vises i forbindelse med en grafikkanordning-driver. Ytterligere relatert informasjon kan finnes i en Microsoft® Windows® Platform Design Note med tittelen "DirectX® VA: Video Acceleration API/DDI", datert 23. Januar 2001. "DirectX® VA: Video Acceleration API/DDI" inntas herved som referanse i sin helhet her.
Selv om handlingene i flytdiagram met 600 er beskrevet i form av API-funksjoner som spesielt er anvendbare for den nåværende utviklingen av Microsoft® Wndows® operativsystemer for personlige datamaskiner, er det underforstått at blokkene i dette, så vel som de andre implementasjonene som er beskrevet her, også kan anvendes med andre operativsystemer og/eller andre elektroniske anordninger.
I de følgende eksemplene er utdataene fra videoprosesseringsoperasjonen^) tilveiebragt på et RGB-rendret målformat så som en destinert DirectDraw® overflate. Det å gjøre dette omgår behovet for konvensjonelle maskin-vareimplementerte overlagringsteknikker. I tillegg eksisterer et helt skjermbilde som kan sees på en skjermanordning, omfattende eventuelle videobilder, og, videre, som er lagret i et minnesegment slik at det kan anvendes av en "print screen"-kommando. Dette lagrede skjermbildet kan deretter limes inn i et dokument, sendes til en fil, skrives ut direkte osv.
I flytdiagram met 600 kan videorendreren 410 allerede ha blitt informert av grafikkanordning-driver 422 om at den assosierte grafikk-maskinvaren kan utføre ProcAmp-innstilling videoprosesseringsoperasjoner, eller videorendreren 410 kan fastslå mulighetene for ProcAmp-innstillinger eller mangelen på slike som følger. Ved blokk 602 tilveiebringer videorendrer 410 en beskrivelse av videoen som skal vises og etterspør grafikkprosesseringsmulighetene med hensyn til ProcAmp-kontrollegenskaper.
Videorendrer 410 sender videobeskrivelsesen og/eller kontrollenegenskap-forespørselen til grafikkanordning-driveren 422 via én eller flere overføringer som angitt av pilen mellom blokk 602 og blokk 620. Beskrivelsen av videoen gjør det mulig for grafikkanordning-driveren 422 å skreddersy tilgjengelige/mulige/etc. videoprosesseringsmuligheter basert på typen video. For eksempel kan det være satt opp et forbestemt sett av muligheter for hver av flere forskjellige typer video.
Ved blokk 620 tilveiebringer grafikkanordning-driveren 422 videorendreren 410 med en liste over de tilgjengelige ProcAmp-kontrollegenskapene. Denne listen kan omfatte ingen eller én eller flere av lysstyrke, kontrast, fargetone og fargemetning. Ved blokk 604 mottar videorendreren 410 de tilgjengelige ProcAmp-kontrollegenskaper fra grafikkanordning-driveren 422. Handlingene i blokkene 620 og 622 kan utføres i respons til kommunikasjonen(e) i blokk 602. Alternativt kan videorendreren 410 foreta en separat forespørsel for å frembringe handlingene i blokk 622.
Ved blokk 622 angir grafikkanordning-driveren 422 for videorendreren 410 de videoprosesseringsoperasjoner som det er mulig å utføre samtidig/parallelt med ProcAmp-innstillingsoperasjoner. Slike videoprosesseringsoperasjoner kan omfatte ingen eller én eller flere av YUV2RGB, StretchX, StretchY, SubRects og AlphaBlend. Andre slike videoprosesseringsoperasjoner kan omfatte de-interlacing, konvertering av bildefrekvensen osv. Ved blokk 606 mottar videorendrer 410 de mulige parallelle videoprosesseringsoperasjonene fra grafikkanordning-driveren 422.
Et eksempel på en generell API-funksjon for å implementere i hvert fall deler av handlingene i blokkene 602, 604, 606, 620 og 622 er som følger:
ProcAmpControlQueryCaps
Denne API-funksjonen gjør det mulig for videorendreren 410 å spørre grafikkanordning-driveren 422 for å bestemme informasjonen vedrørende inndatakravene for en ProcAmp-kontrollanordning og eventuelle ytterligere videoprosesseringsoperasjoner som vil kunne være støttet for utføring parallelt med ProcAmp-innstillingsoperasjoner.
Grafikkanordning-driveren 422 rapporterer sine kapabiliteter for den modusen i en utparameter DXVA_ProcAmpControlCaps-datastruktur fra IpProcAmpCaps.
Size-feltet angir datastrukturens størrelse og kan anvendes, bl. a., som en versjonsindikator dersom forskjellige versjoner har forskjellig datastruktur-størrelse.
Feltet InputPool angir et tilgjengelig minnesegment fra hvilket videokilde-overflatene skal allokeres. For eksempel kan minnesegmentet være lokalisert i lokalt bildeminne på skjermkortet, i et spesielt tilordnet systemminne (f.eks. akselerert grafikkport (AGP)-minne), generelt systemminne, osv. D3D-og DirectDraw-dokumentasjonen tilveiebringer også en beskrivelse av mulige minnesegment-lokasjoner.
Feltet OutputFrameFormat angir et Direct3D overflateformat for de utmatede rammene. ProcAmp-anordningen kan mate ut rammer i et overflateformat som overensstemmer med formatet til den innmatede overflaten. Dette feltet sikrer at videorendreren 410 vil være i stand til å tilveiebringe det korrekte formatet for de utmatede rammeoverflåtene til ProcAmp-kontroll maskinvaren. Merk at dersom flagget DXVA_VideoProcess_YUV2RGB (se nedenfor) er returnert i feltet VideoProcessingCaps, så kan videorendreren 410 anta at dette feltet spesifiserer gyldige utdata-formater så vel som et RGB format, så som RGB32. RGB32 er et RGB format med 8 bits presisjon for hver av de røde, grønne og blå kanalene og 8 ubrukte bit.
Feltet ProcAmpControlProp identifiserer de ProcAmp-operasjonene som maskinvaren kan utføre. Grafikkanordning-driveren 422 returnerer den logiske OR-kombinasjonen av de ProcAmp-operasjonene den støtter: DXVA_ProcAmp_None. Maskinvaren støtter ingen ProcAmp-kontroll-operasjoner.
DXVA_ProcAmp_Brightness. ProcAmp-kontroll maskinvaren kan utføre lysstyrkejusteringer på videobildet.
DXVA_ProcAmp_Contrast. ProcAmp-kontroll maskinvaren kan utføre kontrastjusteringer på videobildet.
DXVA_ProcAmp_Hue. ProcAmp-kontroll maskinvaren kan utføre fargetone-justeringer på videobildet.
DXVA_ProcAmp_Saturation. ProcAmp-kontroll maskinvaren kan utføre fargemetningsjusteringer på videobildet.
Feltet VideoProcessingCaps identifiserer andre operasjoner som kan utføres samtidig med en ProcAmp-innstilling. De følgende flagg identifiserer de mulige operasjonene: DXVA_VideoProcess_YUV2RGB. ProcAmp-kontroll maskinvaren kan konvertere videobildet fra YUV-fargerommet til RGB fargerommet. Det RGB formatet som anvendes kan ha 8 bit eller høyere presisjon for hver fargekomponent. Dersom dette er mulig, kan en unngå å måtte ha en bufret kopi i videorendreren 410. Merk at det ikke er noe krav vedrørende dette flagget for å konvertere fra RGB-fargerommet til YUV-fargerommet. DXVA_VideoProcess_StretchX. Dersom ProcAmp-kontroll maskinvaren kan ekspandere eller krympe horisontalt, kan korreksjon av høyde/bredde- forholdet utføres samtidig som videobildet blir ProcAmp-justert. DXVA_VideoProcess_StretchY. Noen ganger kombineres justering av høyde/bredde-forholdet med en generell bilderedimensjoneringsoperasjon for å skalere videobildet i et applikasjonsdefinert sammensettingsrom. Dette er en noe sjelden egenskap. Det å skalere for å redimensjonere videobildet slik at det passer i applikasjonens vindu kan utføres samtidig som skaleringen for ProcAmp-innstillingen. Ved å utføre disse skaleringene samtidig unngår en kumulative artifakter.
DXVA_VideoProcess_SubRects. Dette flagget angir at maskinvaren kan operere på et rektangulært (under-) område i bildet så vel som hele bildet. Det rektangulære området kan identifiseres av et kilderektangel i en DXVA_ProcAmpControlBlt-datastruktur.
DXVA_VideoProcess_AlphaBlend. Alfablending kan styre hvordan annen grafikkinformasjon vises, så som ved å sette nivåer av gjennomsiktighet og/eller opasitet. En alfaverdi kan således angi gjennomsiktighet for en farge - eller i hvilken utstrekning fargen vil bli blandet med en eventuell bakgrunnsfarge. Slike alfaverdier kan være i området fra en fullstendig gjennomsiktig farge til en fullstendig dekkende farge.
I operasjon kan alfablending oppnås ved anvendelse av en piksel-for-piksel blanding av kilde- og bakgrunn-fargedata. Hver av de tre fargekomponentene (rød, grønn og blå) i en gitt kildefarge kan blandes med den motsvarende komponenten i bakgrunnsfargen for å effektuere en alfablendingsoperasjon. I en eksempelvis implementasjon kan fargen være representert generelt av en 32-bits verdi med 8 bit hver for alfa, rød, grønn og blå.
Igjen, ved anvendelse av denne mekanismen kan en unngå å måtte ha en bufret kopi i videorendreren 410. Dette er imidlertid også en sjeldent anvendt mekanisme fordi applikasjoner sjelden endrer den konstante alfaverdien som er assosisert med deres videostrøm.
Ved blokk 608 i flytdiagrammet 600 velger videorendreren 410 en ProcAmp-kontrollegenskap blant de som ble mottatt ved blokk 604. Ved blokk 610 ber videorendreren 410 om én eller flere verdier for den valgte ProcAmp-kontrollegenskapen fra grafikkanordning-driver 422. Ved blokk 624 sender grafikkanordning-driveren 422 til videorendreren 410 verdier forden etterspurte ProcAmp- kontrollegenskapen. Disse verdiene kan vedrøre én eller flere blant en standardverdi, en inkrementverdi, en minimumsverdi, en maksimumsverdi osv.
Ved blokk 612 mottar videorendreren 410 fra grafikkanordning-driveren 422, og blir således informert om, én eller flere verdier for den valgte ProcAmp-kontrollegenskapen. Som angitt av pilen fra blokk 612 til blokk 608, kan handlingene i blokkene 608, 610, 612 og 624 gjentas mer for enn én, omfattende alle de tilgjengelige ProcAmp-kontrollegenskapene. Alternativt kan videorendreren 410 be grafikkanordning-driveren 422 om mer enn én, omfattende alle de tilgjengelige ProcAmp-kontrollegenskapene i én enkelt kommunikasjonsutveksling som omfatter to eller flere overføringer.
Et eksempel på en generell API-funksjon for å implementere i hvert fall deler av handlingene i blokkene 608, 610, 612 og 624 er gitt som følger:
ProcAmpControlQueryRange
For hver ProcAmp-egenskap (lysstyrke, kontrast, fargemetning, fargetone, etc), forespør videorendreren 410 grafikkanordning-driveren 422 for å fastslå minimumsverdien, maksimumsverdien, trinnstørrelsen (inkrement), standardverdien, osv. Dersom maskinvaren ikke støtter en gitt ProcAmp-kontrollegenskap, kan grafikkanordning-driveren 422 returnere "E_NOTIMPL" i respons til ProcAmpControlQueryRange-funksjonen.
Selv om grafikkanordning-driveren 422 kan returnere hvilke som helst verdier den ønsker for de forskjellige ProcAmp-kontrollegenskapene, er de følgende innstillingsverdier gitt som et eksempel (alle listede verdier er flyttall):
Dersom standardverdiene resulterer i en null-transformasjon av videostreamen, kan videorendreren 410 hoppe over ProcAmp-innstillingstrinnet i dens video-pipeline dersom den bildevisende applikasjonen ikke endrer noen av ProcAmp-kontrollegenskapene.
VideoProperty identifiserer ProcAmp-kontrollegenskapen(e) som grafikkanordning-driver 422 har blitt bedt om å returnere informasjon for. I en beskrevet implementasjon er mulige parameterverdier for dette feltet: DXVA_ProcAmp_Brightness;
DXVA_ProcAmp_Contrast;
DXVA_ProcAmp_Hue; og
DXVA_ProcAmp_Saturation.
IpVideoDescription tilveiebringer grafikkanordning-driveren 422 med en beskrivelse av den videoen som ProcAmp-innstillingen skal anvendes på. Grafikkanordning-driveren 422 kan anpasse sin støtte for ProcAmp-mekanismer for konkrete typer videostrømbeskrivelser.
IpPropRange identifiserer området (min. og maks.), trinnstørrelsen og standardverdien for den ProcAmp-kontrollegenskapen som er spesifisert av VideoProperty-parameteren/feltet.
Ved blokk 614 i flytdiagrammet 600 sender videorendreren 410 en åpne ProcAmp-streamobjekt kommando til grafikkanordning-driveren 422. I respons åpner grafikkanordning-driveren 422 et ProcAmp-streamobjekt ved blokk 626. Ved blokk 616 instruerer videorendreren 410 grafikkanordning-driveren 422 om å ut-føre en ProcAmp-innstillingsoperasjon. I respons utfører grafikkanordning-driveren 422 den etterspurte ProcAmp-innstillingsoperasjonen ved blokk 628.
Som angitt av den halvsirkulære pilen ved blokk 616 kan videorendreren 410 fortsette å sende instruksjoner om å utføre ProcAmp-innstillingsoperasjoner til grafikkanordning-driveren 422 så lenge det er ønsket (f.eks. så lenge det er nød-vendig for en applikasjon som viser videostreamen). Ved blokk 618 instruerer videorendreren 410 grafikkanordning-driveren 422 om å lukke ProcAmp-streamobjektet. Grafikkanordning-driveren 422 lukker da ProcAmp-streamobjektet ved blokk 630.
Et eksempel på en generell API-funksjon for å implementere i hvert fall deler av handlingene i blokkene 614, 616, 618, 626, 628 og 630 er gitt som følger:
ProcAmpStream-objektet
Etter at videorendreren 410 har bestemt kapabilitetene til ProcAmp-styringsmaskinvaren kan det opprettes et ProcAmpStream-objekt. Opprettelsen av et ProcAmpStream-objekt gjør det mulig for grafikkanordning-driveren 422 å reservere de maskinvareressurser som er nødvendig å utføre en eller flere etterspurte ProcAmp-innstillingoperasjoner.
ProcAmpOpenStream
Metoden ProcAmpOpenStream oppretter et objekt av klassen ProcAmpStream.
Utparameteren HDXVA_ProcAmpStream er en peker til ProcAmpStream-objektet, og anvendes for å identifisere denne streamen i fremtidige kall som er rettet til denne.
ProcAmpBIt
Metoden ProcAmpBIt utfører ProcAmp-innstillingsoperasjonen ved å skrive utdataene til destinasjonsoverflaten under en bit-blokk overføringsoperasjon.
Kilde- og destinasjonsrektanglene anvendes for enten ProcAmp-innstilling eller utvidelse av et delrektangel. Støtten for utvidelse er valgfri (og angis av Caps-flagget). Likeledes er ikke støtte for delrektangler obligatorisk.
Destinasjonsoverflaten kan være en offscreen flate, et D3D rendringsmål, en D3D-tekstur, en D3D-tekstur som også er et rendringsmål, osv. Destinasjonsoverflaten kan være allokert i lokalt bildeminne, for eksempel.
Pikselformatet for destinasjonsoverflaten er det som er angitt i DXVA_ProcAmpCaps-datastrukturen dersom det ikke utføres en YUV-til-RGB fargeromkonvertering sammen med ProcAmp-innstillingsoperasjonen. I disse tilfellene er destinasjonsoverflatens format et RGB format med 8 bits eller høyere presisjon for hver fargekomponent.
ProcAm pC loseStream
Metoden ProcAmpCloseStream lukker ProcAmpStream-objektet og instruerer grafikkanordning-driveren 422 om å frigjøre eventuelle maskinvareressurser som er assosiert med den identifiserte streamen.
Eksempel på spesifikk API- implementasion
Den spesifikke situasjonen og eksemplene på API-funksjoner som er beskrevet nedenfor i denne seksjonen er spesifikt anvendbar for en delmengde av eksisterende Microsoft® Windows® operativsystemer for personlige datamaskiner. Det skal imidlertid allikevel forstås at prinsippene, så vel som visse aspekter ved pseudo-programkoden, som presenteres nedenfor kan anvendes (som den er eller med rutinemessige modifikasjoner) i forbindelse med andre operativsystemer og/eller andre miljøer.
DDI- avbildning for et ProcAmp grensesnitt
For kompatibilitet med DDI-infrastrukturen for en delmengde av eksisterende Microsoft® Wndows® operativsystemer, kan API-funksjonene som er beskrevet ovenfor i den forrige seksjonen "avbildes" til det eksisterende DDI-grensesnittet for DirectDraw og DirectX VA. Denne seksjonen beskriver en avbildning av ProcAmp-grensesnittet til de eksisterende DirectDraw og DX-VA DDI-grensesnitt.
DX-VA DDI-grensesnittet er selv delt inn i to funksjonelle grupper: "DX-VA containeren" og "DX-VA anordningen". Formålet med DX-VA container DDI-gruppen er å bestemme antallet av og kapabiliteten til de forskjellige DX-VA anordningene som er inneholdt i display-maskinvaren. Derfor kan en DX-VA driver bare ha én enkelt container, men den kan støtte flere DX-VA anordninger.
Det er ikke mulig å avbilde ProcAmpQueryCaps-kallet til noen av DDI-inngangspunktene i DX-VA container-gruppen, fordi, i motsetning til resten av DX-VA, containerens metoder anvender typede parametere. DX-VA anordning DDI-gruppen anvender imidlertid ikke typede parametere, slik at det er mulig å avbilde ProcAmp-kontrollgrensesnittet til metodene i anordning-gruppen. Denne seksjonen beskriver et spesifikt eksempel på hvordan ProcAmp-grensesnittet kan avbildes til DX-VA anordning DDI-grensesnittet.
De-interlace container-anordning
DX-VA anordning-metodene anvender ikke typede parametere, slik at disse metodene kan gjenbrukes for mange forskjellige formål. DX-VA anordning-metodene kan imidlertid bare anvendes i forbindelse med en DX-VA anordning, slik at en første oppgave er å definere og opprette en spesifikk "container-anordning".
Den ikke-provisjonal / ikke-provisoriske US-patentsøknad 10/273,505, som har tittelen "Method And Apparatuses For Facilitating Processing Of Interlaced Video Images For Progressive Video Displays" og som er inntatt som referanse ovenfor, omfatter en beskrivelse av en de-interlace container-anordning. Den applikasjonens beskrevne de-interlace container-anordning gjenbrukes her for ProcAmpQueryCaps-funksjonen.
DX-VA de-interlace container-anordningen er kun en programvare-konstruksjon, slik at den representerer ikke en funksjonell maskinvare som er inneholdt i en fysisk anordning. Den eksempelvise ProcAmp-kontroll(anordning)driver pseudo-koden som er presentert nedenfor angir hvordan container-anordningen kan implementeres av en driver.
Kalle DDI-grensesnittet fra en komponent i brukemodus
En eksempelvis sekvens av åtte (8) oppgaver for å anvende DDI-grensesnittet fra en brukermodus-komponent, så som en (video)rendrer er som følger: 1. Kall GetMoCompGuids for å oppnå listen av DX-VA anordninger som støttes av driveren. 2. Dersom "de-interlace container-anordningen" sin GUID finnes, kall CreateMoComp for å opprette en instans av denne DX-VA anordningen. Container-anordningens GUID blir definert som følger: DEFINE_GUID(DXVA_DeinterlaceContainerDevice, 0x0e85cb93,0x3046,0x4ff0,Oxae,Oxcc,0xd5,0x8c,0xb5,OxfO, 0x35,0xfc); 3. Kall RenderMocomp med en dwFunction-parameter som identifiserer en ProcAmpControlQueryModeCaps-operasjon. Igjen anvendes IplnputData-parameteren for å sende innparametrene til driveren, som returnerer sine utdata via IpOutputData-parameteren. 4. For hver ProcAmp-innstillingsegenskap som støttes av maskinvaren, kaller rendreren RenderMocomp med en dwFunction-parameter som identifiserer en ProcAmpControlQueryRange-operasjon. Parameteren IplnputData anvendes for å sende innparametrene til driveren, som returnerer sine utdata via IpOutputData-parameteren. 5. Etter at rendreren har funnet ut av ProcAmp-innstillingsmulighetene for maskinvaren, kaller den CreateMocomp for å opprette en instans av ProcAmp-kontrollanordningen. ProcAmp-kontrollanordningens GUID blir definert som følger: DEFINE_GUID(DXVA_ProcAmpControlDevice, 0x9f200913,0x2ffd,0x4056,0x9f,0x1 e,0xe1,0xb5,0x08,0xf2,0x2d,0xcf); 6. Rendreren kaller deretter ProcAmp-kontrollanordningens RenderMocomp med en funksjonsparameter DXVA_ProcAmpControlBltFnCode for hver ProcAmp-innstillingsoperasjon. 7. Når rendreren ikke lenger har behov for å utføre flere ProcAmp-operasjoner, kaller den DestroyMocomp. 8. Driveren frigjør eventuelle ressurser som anvendes av ProcAmp-kontroll-anordningen.
ProcAmpControlQueryCaps
Denne metoden avbilder direkte til et kall til metoden RenderMoComp i de-interlace container-anordningen. DD_RENDERMOCOMPDATA-strukturen blir komplettert som følger:
dwNumBuffers er null.
IpBufferlnfo er NULL.
dwFunction er definert som
DXVA_ProcAmpControlQueryCapsFnCode.
IplnputData peker til en DXVA_VideoDesc-struktur.
IpOutputData peker til en DXVA_ProcAmpCaps-struktur.
Merk at DX-VA container-anordningens metode RenderMoComp kan kalles uten at BeginMoCompFrame eller EndMoCompFrame er kalt først.
ProcAmpControlQueryRange
Denne metoden avbilder direkte til et kall på metoden RenderMoComp i de-interlace container-anordningen. DD_RENDERMOCOMPDATA-strukturen blir komplettert som følger:
dwNumBuffers er null.
IpBufferlnfo er NULL.
dwFunction er definert som
DXVA_ProcAmpControlQueryRangeFnCode.
IplnputData peker til en
DXVA_ProcAmpControlQueryRange-struktur.
typedef struct _DXVA_ProcAmpQueryRange {
DWORD Size;
DWORD VideoProperty;
DXVA_VideoDesc VideoDesc;
} DXVA_ProcAmpControlQueryRange,<*>LPDXVA_ProcAmpControlQueryRange;
IpOutputData vil peke til en DXVA_VideoPropertyRange-struktur.
Merk at DX-VA container-anordningens RenderMoComp metode kan kalles uten at BeginMoCompFrame eller EndMoCompFrame er kalt først.
ProcAmpControlOpenStream
Denne metoden avbilder direkte til en metode CreateMoComp i DD_MOTIONCOMPCALLBACKS-strukturen, der GUID-koden er ProcAmp-anordning GUID-koden, pUncompData peker til en struktur som ikke inneholder data (alle er null) og pData peker til en DXVA_VideoDesc-struktur.
Dersom en driver støtter akselerert dekoding av komprimert video, kan rendreren kalle driveren for å opprette to DX-VA anordninger - én for å utføre den faktiske video-dekodingsjobben som definert av DirectX VA Video Decoding spesifikasjonen og en annen som kun skal anvendes for ProcAmp-innstillinger.
<**>Eksempel: Avbildning av CreateMoComp til ProcAmpControlOpenStream<**>Den nedenfor gitte, eksempelvise pseudo-koden viser hvordan en driver kan avbilde CreateMoComp DDI-kallet til kall på ProcAmpControlOpenStream. Pseudo-koden viser hvordan CreateMocComp-funksjonen anvendes for ProcAmp. Dersom en driver støtter andre DX-VA funksjoner, så som dekoding av MPEG-2
videostrømmer, kan kodeeksempelet nedenfor utvides til å omfatte prosessering av ytterligere DX-VA GUID-koder.
<**>Eksempel: Implementasjon av GetMoCompGuids<**>
I tillegg til CreateMoComp DDI-funksjonen, vil en driver også kunne implementere GetMoCompGuids-metoden i DD_MOTIONCOMPCALLBACKS-strukturen. Den følgende eksempelvise pseudo-koden viser én måte å implementere denne funksjonen i en driver.
DWORD APIENTRY
ProcAmpControlBIt
Denne metoden avbilder direkte til en metode RenderMoComp i DD_MOTIONCOMPCALLBACKS-strukturen, der:
dwNum Buffers er to.
IpBufferlnfo peker til en array av to overflater. Det første elementet i arrayet er destinasjonsoverflaten; det andre elementet i arrayet er kildeoverflaten.
dwFunction er definert som
DXVA_ProcAmpControlBltFnCode.
IplnputData peker til følgende struktur:
typedef struct _DXVA_ProcAmpControlBlt {
DWORD Size;
RECT DstRect;
RECT SrcRect;
FLOAT Alpha;
FLOAT Brightness;
FLOAT Contrast;
FLOAT Hue;
FLOAT Saturation;
} DXVA_ProcAmpControlBlt;
IpOutputData er NULL.
Merk at for DX-VA anordningen som anvendes for ProcAmp, RenderMoComp kan kalles uten at en kaller BeginMoCompFrame eller EndMoCompFrame.
<**>Eksempel: Avbildning av RenderMoComp til ProcAmpControlBIt<**>
Den eksempelvise pseudo-koden nedenfor viser hvordan en driver kan avbilde RenderMoComp DDI-kallet til kall til ProcAmpBIt. Kodeeksempelet viser hvordan RenderMoComp-funksjonen anvendes for ProcAmp-innstilling. Dersom driveren støtter andre DX-VA funksjoner, så som dekoding av MPEG-2 video-strømmer, kan kodeeksempelet nedenfor utvides til å omfatte prosessering av ytterligere DX-VA GUID-koder.
DWORD APIENTRY
ProcAmpControlCloseStream
Denne metoden avbilder direkte til en metode DestroyMoComp i DD_MOTIONCOMPCALLBACKS-strukturen.
<**>Eksempel: Avbildning av DestroyMoComp til ProcAmpControlCloseStream<**>
Den følgende eksempelvise pseudo-koden viser hvordan en driver kan avbilde DestroyMoComp DDI-kallet til kall til ProcAmpControlCloseStream. Kodeeksempelet viser hvordan DestroyMoComp-funksjonen anvendes for ProcAmp-innstilling. Dersom driveren støtter andre DX-VA funksjoner, så som dekoding av MPEG-2 videostrømmer, kan kodeeksempelet nedenfor utvides til å omfatte prosessering av ytterligere DX-VA GUID-koder.
DWORD APIENTRY
Eksempel på operasjonsmiljø for datamaskin eller en annen elektronisk anordning
Figur 7 illustrerer et eksempel på et datamaskin (eller generell elektronisk anordning)-operasjonsmiljø 700 som kan (helt eller delvis) implementere minst én blant et system, en anordning, en komponent, et arrangement, en protokoll, en fremgangsmåte, en metode, en prosess, en kombinasjon av disse, etc. for å forenkle vekselvirkning mellom videorendrere og grafikkanordning-drivere som beskrevet her. Datamiljøet 700 kan anvendes i datamaskin- og nettverks-arkitekturene som er beskrevet nedenfor eller alene som et enkeltstående system.
Det eksempelvise elektronisk anordning-operasjonsmiljøet 700 er bare ett eksempel på et miljø, og er ikke ment for antyde noen begrensning vedrørende bruksområdet eller funksjonaliteten til de anvendte elektroniske (omfattende datamaskin, spillkonsoll, fjernsyn, etc.) arkitekturene. Heller ikke skal elektronisk anordning-miljøet 700 tolkes å ha noen avhengighet eller krav vedrørende noen
komponent eller kombinasjon av komponenter som er illustrert i figur 7.
I tillegg kan forenkling av vekselvirkning mellom videorendrere og grafikkanordning-drivere implementeres med en rekke andre generelle eller spesialiserte elektroniske anordninger (omfattende datasystem)-miljøer eller -konstruksjoner. Eksempler på velkjente elektroniske (anordning) systemer, miljøer og/eller konstruksjoner som kan være egnet for anvendelse omfatter, men er ikke begrenset til, personlige datamaskiner, tjenermaskiner, tynne klienter, tykke klienter, personlige digitale assistenter (PDA) eller mobiltelefoner, håndholdte eller laptop anordninger, flerprosessorsystemer, mikroprosessor-baserte systemer, set top bokser, programmerbar forbrukerelektronikk, videospill-maskiner, spill-konsoller, bærbare eller håndholdte spillenheter, personlige datamaskiner i nettverk, minidatamaskiner, stormaskiner, distribuerte datamiljøer som omfatter hvilke som helst av de ovenfor nevnte systemer eller anordninger, en kombinasjon av slike, osv.
Implementasjoner for å forenkle vekselvirkning mellom videorendrere og grafikkanordning-drivere kan beskrives i den generelle konteksten elektronisk-eksekverbare instruksjoner. Generelt omfatter elektronisk eksekverbare instruksjoner rutiner, programmer, objekter, komponenter, datastrukturer, etc. som utfører spesifikke oppgaver eller implementerer spesifikke abstrakte datatyper. Forenkling av vekselvirkning mellom videorendrere og grafikkanordning-drivere, som beskrevet i visse implementasjoner her, kan også realiseres i distribuerte datamiljøer der oppgaver utføres av fjern-forbundne prosesseringsanordninger som er forbundet via en kommunikasjonslink og/eller et nettverk. Spesielt i et distribuert beregningsmiljø kan elektronisk eksekverbare instruksjoner være lokalisert i separate lagringsmedier, eksekveres av forskjellige prosessorer og/eller sendes over overføringsmedier.
Elektronisk anordning-miljøet 700 omfatter en generell beregnings-anordning i form av en datamaskin 702, som kan omfatte en hvilken som helst elektronisk anordning med beregnings- og/eller prosesseringsevne. Komponentene av datamaskinen 702 kan omfatte, men er ikke begrenset til, én eller flere prosessorer eller prosesseringsenheter 704, et systemminne 706 og en system-buss 708 som forbinder forskjellige system komponenter omfattende prosessoren 704 med systemminnet 706.
Systembussen 708 representerer én eller flere blant de mange typer av ledningsbaserte eller trådløse buss-strukturer, omfattende en minnebuss eller minnekontrolller, en periferienhet-buss, en akselerert grafikkport og en prosessor-ener lokal buss som anvender en hvilken som helst blant en rekke tilgjengelige bussarkitekturer. Som eksempler kan slike bussarkitekturer omfatte en ISA (Industry-Standard-Architecture)-buss, en MCA (Micro-Channel-Architecture)-buss, en EISA (Enhanced ISA)-buss, en lokal VESA (Video-Electronics-Standards-Associate)-buss, en PCI (Peripheral-Component-lnterconnect)-buss, også kjent som en Mezzanine-buss, en kombinasjon av disse, osv.
Datamaskinen 702 omfatter typisk en rekke elektronisk aksesserbare medier. Slike medier kan være et hvilket som helst tilgjengelig media som kan aksesseres av datamaskinen 702 eller en annen elektronisk anordning, og de omfatter både volatile og ikke-volatile medier, flyttbare og ikke-flyttbare medier og lagrings- og overføringsmedier.
Systemminnet 706 omfatter elektronisk aksesserbare lagringsmedier i form av volatilt minne, så som direkteaksessminne (RAM) 710 og/eller ikke-volatilt minne, så som leseminne (ROM) 712. Et BIOS (basic input/output system) 714, som inneholder de grunnleggende rutinene som overfører informasjon mellom elementer i datamaskinen 710, for eksempel under oppstart, er typisk lagret i ROM 712. RAM 710 inneholder typisk data og/eller program moduler/instruksjoner som er umiddelbart tilgjengelige for og/eller som opereres på av prosesseringsenheten 704.
Datamaskinen 702 kan også omfatte andre flyttbare/ikke-flyttbare og/eller volatile/ikke-volatile lagringsmedier. Som et eksempel illustrerer figur 7 en harddiskstasjon eller oppstilling av diskstasjoner 716 for å lese fra og skrive til et (typisk) ikke-flyttbart, ikke-volatilt magnetisk medium (ikke vist separat); en magnet-diskstasjon 718 for å lese fra og skrive til en (typisk) flyttbar, ikke-volatil magnetdisk 720 (f.eks. en "diskett"); og en optisk disk-stasjon 722 for å lese fra og/eller skrive til en (typisk) flyttbar, ikke-volatil optisk disk 724 så som CD-ROM, DVD eller et annet optisk medium. Harddiskstasjonen 716, magnetdiskstasjonen 718 og optisk disk-stasjonen 722 er hver forbundet med systembussen 708 via ett eller flere lagringsmedium-grensesnitt 726. Alternativt kan harddiskstasjonen 716, magnetdiskstasjonen 718 og optisk disk-stasjonen 722 være forbundet med systembussen 708 via ett eller flere andre separate eller kombinerte grensesnitt (ikke vist).
Diskstasjonene og deres assosierte elektronisk aksesserbare medier tilveiebringer ikke-volatil lagring av elektronisk eksekverbare instruksjoner, så som datastrukturer, programmoduler og andre data for datamaskinen 702. Selv om den eksempelvise datamaskinen 702 illustrerer en harddisk 716, en flyttbar magnetdisk 720 og en flyttbar optisk disk 724, må det forstås at andre typer elektronisk aksesserbare medier kan lagre instruksjoner som kan aksesseres av en elektronisk anordning, så som magnetkasetter eller andre magnet-lagrings-anordninger, flash-minne, CD-ROM, DVD (digital-versatile-disk) eller andre optiske lagringsenheter, RAM, ROM, EEPROM (elektrically-erasable-programmable-read-only memory), osv. Slike medier kan også omfatte såkalte spesialtilkonstruerte eller fastkodede integrerte kretsbrikker. Med andre ord kan et hvilket som helst elektronisk aksesserbart medium anvendes for å realisere lagringsmediet i det eksempelvise elektroniske systemet og miljøet 700.
Et hvilket som helst antall programmoduler (eller andre enheter eller sett av instruksjoner) kan være lagret i harddisk 716, magnetdisk 720, optisk disk 724, ROM 712 og/eller RAM 710, omfattende, som et generelt eksempel, et operativsystem 728, ett eller flere applikasjonsprogrammer 730, andre programmoduler 732 og programdata 734. Som et spesifikt eksempel, men uten begrensning, kan videorendreren 410, grafikk-grensesnittet 412 og anordningdriver-grensesnittet 414 (alle figur 4) være en del av operativsystemet 728. Grafikkanordning-driveren 422 kan være del av programmodulene 732, eventuelt med en tett tilknytning til og/eller integrert relasjon med operativsystemet 728. Et bildevisende program, så som Windows® Media® 9, er et eksempel på et applikasjonsprogram 730. Bilde-kontroll- og/eller grafikkdata som på et gitt tidspunkt befinner seg i systemminnet kan være del av programdataene 734.
En bruker som endrer ProcAmp- eller andre videoinnstillinger, for eksempel, kan sende inn kommandoer og/eller informasjon til datamaskinen 702 via innmatingsanordninger så som et tastatur 736 og en pekeranordning 738 (f.eks. en "mus"). Andre innmatingsanordninger 740 (ikke vist spesifikt) kan omfatte en mikrofon, en styrespak, en spillkontroll, en parabolantenne, en serieport, en skanner og/eller liknende. Disse og andre innmatingsanordninger er forbundet med prosesseringsenheten 704 via inndata/utdata-grensesnitt 742 som er koplet til systembussen 708. Disse, og/eller utmatingsanordninger kan imidlertid istedet være tilkoplet via andre grensesnitt og busstrukturer, så som en parallelport, en spillutgang, en USB(universal serial bus)-port, et IEEE 1394 ("Firewire") grensesnitt, et IEEE 802.11 trådløst grensesnitt, et Bluetooth® trådløst grensesnitt, osv.
En monitor/fremviserskjerm 744 (som er et eksempel på skjermanordningen 436 i figur 4) eller en annen type skjermanordning kan også være forbundet med systembussen 708 via et grensesnitt, så som en videoadapter 746. Video-adapteret 746 (eller en annen komponent) kan være eller kan omfatte et skjermkort (som er et eksempel på grafikkanordning 424) for å prosessere grafikktunge beregninger og for å håndtere krevende fremvisningskrav. Et skjermkort omfatter typisk en GPU (så som GPU 426), bilde-RAM (VRAM) (som er et eksempel på bildeminne 432), etc. for å øke ytelsen for grafikkoperasjoner. I tillegg til monitor 744 kan andre periferi-utmatingsanordninger omfatte komponenter så som høyttalere (ikke vist) og en skriver 748, som kan være forbundet med datamaskinen 702 via inndata/utdata-grensesnitt 742.
Datamaskinen 702 kan operere i et nettverksmiljø under anvendelse av logiske forbindelser til én eller flere fjern-datamaskiner, så som en fjern-beregningsanordning 750. Som et eksempel kan fjern-beregningsanordningen 750 være en personlig datamaskin, en bærbar datamaskin (f.eks. laptop-datamaskin, en bordmaskin, en PDA, en mobil stasjon, etc), en palm eller lommeformat-datamaskin, en spillanordning, en tjener, en ruter, en nettverks-datamaskin, en peer-anordning, en annen vanlig nettverksnode eller en annen type datamaskin som nevnt ovenfor, osv. Fjern-beregningsanordningen 750 er imidlertid illustrert som en bærbar datamaskin som kan omfatte mange av eller alle de elementene og mekanismene som er beskrevet her med hensyn til datamaskinen 702.
Logiske forbindelser mellom datamaskinen 702 og fjern-datamaskinen 750 er vist som et lokalt nettverk (LAN) 752 og et generelt fjernaksessnett (WAN) 754. Slike nettverksmiljøer er vanlige i kontorer, bedriftsomspennende datanettverk, intranett, Internett, faste og mobile telefonnett, andre trådløse nettverk, spill-nettverk, en kombinasjon av slike, osv.
Når den er implementert i et LAN-nettverksmiljø, er datamaskinen 702 vanligvis forbundet med LAN 752 via et nettverks-grensesnitt eller et nettverkskort 756. Når den er implementert i et WAN-nettverksmiljø omfatter datamaskinen 702 typisk et modem 758 eller andre mekanismer for å etablere kommunikasjon over WAN 754. Modemet 758, som kan være internt eller eksternt med hensyn til datamaskinen 702, kan være forbundet med systembussen 708 via inndata/utdata-grensesnittet 742 eller hvilke som helst andre egnede mekanismer. Det er underforstått at de illustrerte nettverksforbindelsene kun er eksempler, og at det kan anvendes andre mekanismer for å etablere én eller flere kommunikasjons-linker mellom datamaskinene 702 og 750.
I et nettverksmiljø, så som det som er illustrert med elektronisk anordning-miljøet 700, kan programmoduler eller andre instruksjoner som er vist i forbindelse med datamaskinen 702, eller deler av disse, være helt eller delvis lagret i en fjernlokalisert minnelagringsanordning. Som et eksempel befinner fjern-applikasjonsprogrammene 760 seg i en minnekomponent i fjern-datamaskinen 750, men vil kunne anvendes eller på annen måte aksesseres av datamaskinen 702. Videre, for illustrasjonsformål, er applikasjonsprogrammene 730 og andre elektronisk eksekverbare instruksjoner, så som operativsystemet 728, illustrert her som separate blokker, men det innsees at slike programmer, komponenter og andre instruksjoner til forskjellige tider befinner seg i forskjellige lagringskomponenter i datamaskinen 702 (og/eller fjern-datamaskinen 750) og eksekveres av data-prosessoren(e) 704 i datamaskinen 702 (og/eller de i fjern-datamaskinen 750).
Selv om systemer, medier, fremgangsmåter, protokoller, tilnærminger,
prosesser, arrangementer og andre implementeringer har blitt beskrevet i et språk som er spesifikt for strukturelle, logiske, algorithmiske og funksjonelle mekanismer og/eller diagrammer, er det underforstått at oppfinnelsen som defineres i de etter-følgende patentkravene ikke nødvendigvis er begrenset til de spesifikke mekanismer eller diagrammer som er beskrevet. Snarere er de spesifikke mekanismene og diagrammene beskrevet som eksempler på mulige fremgangsmåter for å realisere oppfinnelsen.

Claims (76)

1. Ett eller flere elektronisk aksesserbare medier som omfatter elektronisk eksekverbare instruksjoner for en videorendrer (410) som, når de eksekveres, utfører handlinger omfattende trinn med å: etterspørre informasjon vedrørende videoprosesseringsmuligheter fra en grafikkanordning-driver (422), hvor informasjonen vedrørende videoprosesseringsmulighetene omfatter prosessamplifikator (ProcAmp)-muligheter; og motta informasjonen vedrørende videoprosesseringsmuligheter fra grafikkanordning-driveren (422).
2. Ett eller flere elektronisk aksesserbare medier som inneholder elektronisk eksekverbare instruksjoner for en grafikkanordning-driver (422) som, når de eksekveres, utfører handlinger omfattende trinn med å: motta en forespørsel om informasjon vedrørende videoprosesseringsmuligheter fra en videorendrer (410), hvor informasjonen vedrørende videoprosesseringsmulighetene omfatter prosessamplifikator (ProcAmp)-muligheter; og tilveiebringe videorendreren (410) med informasjonen vedrørende videoprosesseringsmuligheter.
3. Ett eller flere elektronisk aksesserbare medier ifølge krav 1 eller 2, der informasjonen vedrørende videoprosesseringsmuligheter omfatter én eller flere blant prosessamplifikator (ProcAmp)-kontrollinnstillinger, de-interlacing operasjoner, korreksjon av høyde/bredde-forhold, konvertering avfargerom, konvertering av bildefrekvens, vertikale eller horisontale speilingsoperasjoner og alfablendingsoperasjoner.
4. Ett eller flere elektronisk aksesserbare medier ifølge krav 2, der de elektronisk eksekverbare instruksjonene for grafikkanordning-driveren (422) er assosiert med i hvert fall en del av en grafikk-maskinvareanordning.
5. Ett eller flere elektronisk aksesserbare medier ifølge krav 3, der grafikk-maskinvareanordningen kan tilveiebringe flere videoprosesseringsmuligheter gjennom grafikkanordning-driveren (422); og der informasjonen vedrørende videoprosesseringsmuligheter omfatter i hvert fall en del av de flere videoprosesseringsmulighetene som grafikk-maskinvareanordningen kan tilveiebringe gjennom grafikkanordning-driveren (422).
6. Ett eller flere elektronisk aksesserbare medier ifølge krav 1, hvor trinnet med å etterspørre informasjonen utføres ved å: sende en forespørsel fra videorendreren (410) til en grafikkanordning-driver (422), idet forespørselen vedrører bildeprosesseringsoperasjoner som grafikkanordning-driveren har mulighet til å utføre for videorendreren (410); og hvor trinnet med å motta informasjonen utføres ved å: motta en respons hos videorendreren (410) fra grafikkanordning-driveren (422), idet responsen angir minst én bildeprosesseringsoperasjon som grafikkanordning-driveren har mulighet til å utføre for videorendreren (410).
7. Ett eller flere elektronisk aksesserbare medier ifølge krav 6, der grafikkanordning-driveren (422) kan tilveiebringe den minst ene bildeprosesseringsoperasjonen for videorendreren (410) via assosiert grafikk-maskinvare.
8. Ett eller flere elektronisk aksesserbare medier ifølge krav 7, der den assosierte grafikk-maskinvaren omfatter et skjermkort.
9. Ett eller flere elektronisk aksesserbare medier ifølge krav 7, der den assosierte grafikk-maskinvaren omfatter en grafikkprosesseringsenhet (426).
10. Ett eller flere elektronisk aksesserbare medier ifølge krav 6, der bildeprosesseringsoperasjonene omfatte videoprosesseringsoperasjoner; og der forespørselen vedrører videoprosesseringsoperasjoner som grafikkanordning-driveren (422) har mulighet til å utføre for videorendreren (410).
11. Ett eller flere elektronisk aksesserbare medier ifølge krav 10, der videoprosesseringsoperasjonene omfatter én eller flere av prosessamplifikator (ProcAmp)-kontrollinnstillinger, de-interlacing, korreksjon av høyde/bredde-forholdet, konvertering av fargerommet, konvertering av bildefrekvensen, vertikal eller horisontal speiling og alfablending.
12. Ett eller flere elektronisk aksesserbare medier ifølge krav 6, omfattende elektronisk eksekverbare instruksjoner for en videorendrer (410) som, når de eksekveres, utfører ytterligere handlinger omfattende trinn med å: sende en annen forespørsel fra videorendreren til grafikkanordning-driveren (422), idet den andre forespørselen vedrører egenskapmuligheter for den minst ene bildeprosesseringsoperasjonen som grafikkanordning-driveren kan tilveiebringe til videorendreren (410); og motta en annen respons hos videorendreren (410) fra grafikkanordning-driveren (422), idet den andre responsen angir minst én egenskapmulighet for den minst ene bildeprosesseringsoperasjonen som grafikkanordning-driveren (422) kan tilveiebringe til videorendreren (410).
13. Ett eller flere elektronisk aksesserbare medier ifølge krav 6, omfattende elektronisk eksekverbare instruksjoner for en videorendrer (410) som, når de eksekveres, utfører ytterligere handlinger omfattende trinn med å: sende en annen forespørsel fra videorendreren (410) til grafikkanordning-driveren (422), idet den andre forespørselen vedrører samtidige bildeprosessering-operasjonsmuligheter samtidig med hensyn til den minst ene bildeprosesseringsoperasjonen som grafikkanordning-driveren (422) har mulighet til å utføre for videorendreren (410); og motta en annen respons hos videorendreren (410) fra grafikkanordning-driveren (422), idet den andre responsen angir minst én samtidig bildeprosessering-operasjonsmulighet med hensyn til den minst ene bildeprosesseringsoperasjonen som grafikkanordning-driveren (422) har mulighet til å utføre for videorendreren (410).
14. Ett eller flere elektronisk aksesserbare medier ifølge krav 6, omfattende elektronisk eksekverbare instruksjoner for en videorendrer (410) som, når de eksekveres, utfører ytterligere handlinger omfattende trinn med å: sende en annen forespørsel fra videorendreren (410) til grafikkanordning-driveren (422), idet den andre forespørselen vedrører egenskap-verdier for den minst ene bildeprosesseringsoperasjonen som grafikkanordning-driveren (422) kan tilveiebringe til videorendreren (410); og motta en annen respons hos videorendreren (410) fra grafikkanordning-driveren (422), idet den andre responsen angir minst én egenskap-verdi for den minst ene bildeprosesseringsoperasjonen som grafikkanordning-driveren (422) kan tilveiebringe til videorendreren (410).
15 Ett eller flere elektronisk aksesserbare medier ifølge krav 6, der i hvert fall en andel av de elektronisk eksekverbare instruksjonene for en videorendrer (410) omfatter i hvert fall deler av et operativsystem.
16. Ett eller flere elektronisk aksesserbare medier ifølge krav 2, hvor trinnet med å motta forespørselen utføres ved å: motta en forespørsel hos grafikkanordning-driveren (422) fra en videorendrer (410), idet forespørselen vedrører én eller flere muligheter grafikkanordning-driveren (422) har for å få utført bildeprosesseringsoperasjoner; og hvor trinnet med å tilveiebringe videorendreren med informasjonen utføres ved å: sende en respons til forespørselen til videorendreren (410) fra grafikkanordning-driveren (422), idet responsen tilveiebringer informasjon vedrørende den ene eller de flere mulighetene grafikkanordning-driveren (422) har for å få utført bildeprosesseringsoperasjoner.
17. Ett eller flere elektronisk aksesserbare medier ifølge krav 16, der informasjonen vedrører bildeprosesseringsmulighetene hos grafikk-maskinvare med hvilken grafikkanordning-driveren (422) er assosiert.
18. Ett eller flere elektronisk aksesserbare medier ifølge krav 16, der det ene eller de flere elektronisk aksesserbare mediene omfatter minst én blant lagrings medier og overføringsmedier.
19. Ett eller flere elektronisk aksesserbare medier ifølge krav 16, der informasjon vedrørende den ene eller de flere mulighetene omfatter informasjon ved-rørende én eller flere bildeprosesseringsmuligheter som tilveiebringes for videorendreren (410).
20. Ett eller flere elektronisk aksesserbare medier ifølge krav 16, der informasjonen vedrørende den ene eller de flere mulighetene omfatter informasjon ved-rørende én eller flere bildeprosessering-egenskapmuligheter som er tilgjengelig for videorendreren (410) for en spesifikk bildeprosesseringsoperasjon.
21. Ett eller flere elektronisk aksesserbare medier ifølge krav 20, der fore-spørselen som mottas i den handling å motta forespørselen spesifiserer den spesifikke bildeprosesseringsoperasjonen.
22. Ett eller flere elektronisk aksesserbare medier ifølge krav 16, der informasjonen vedrørende den ene eller de flere mulighetene omfatter informasjon ved-rørende én eller flere bildeprosesseringsoperasjoner som det er mulig for grafikkanordning-driveren (422) å få utført samtidig med en spesifikk bildeprosesseringsoperasjon.
23. Ett eller flere elektronisk aksesserbare medier ifølge krav 16, der informasjonen vedrørende den ene eller de flere mulighetene omfatter informasjon ved-rørende én eller flere bildeprosessering-egenskapverdier for en tilgjengelig bildeprosessering-egenskapmulighet for en spesifikk bildeprosesseringsoperasjon.
24. Fremgangsmåte for å forenkle vekselvirkning mellom én eller flere videorendrere (410) og minst én grafikkanordning-driver (422), der fremgangsmåten omfatter trinn med å: forespørre informasjon vedrørende videoprosesseringsmuligheter fra minst én grafikkanordning-driver, hvor informasjonen vedrørende videoprosesseringsmulighetene omfatter prosessamplifikator (ProcAmp)-muligheter; og informere, fra den minst ene grafikkanordning-driveren (422), videorendreren (410) om i hvert fall en delmengde av de videoprosesseringsmulighetene som den minst ene grafikkanordning-driveren (422) kan tilby videorendreren (410).
25. Fremgangsmåte ifølge krav 24, der i hvert fall en delmengde av videoprosesseringsmulighetene som den minst ene grafikkanordning-driveren (422) kan tilby videorendreren (410) omfatter videoprosesseringsmulighetene som tilveiebringes til videorendreren (410) av den minst ene grafikkanordning-driver (422).
26. Ett eller flere elektronisk aksesserbare medier som inneholder elektronisk eksekverbare instruksjoner som, når de eksekveres, instruerer en elektronisk anordning om å utføre fremgangsmåten ifølge krav 24.
27. Fremgangsmåte ifølge krav 24, der fremgangsmåten videre omfatter trinn med å: sende en forespørsel vedrørende bildeprosesseringsmuligeheter til grafikkanordning-driveren (422) fra videorendreren (410); motta forespørselen fra videorendreren (410) hos grafikkanordning-driveren (422); sende en respons med en angivelse av de bildeprosesseringsmulighetene som tilveiebringes for videorendreren (410) fra grafikkanordning-driveren (422); og ta imot responsen fra grafikkanordning-driveren (422) hos videorendreren (410).
28. Fremgangsmåte ifølge krav 27, der den handling å sende en forespørsel omfatter trinn med å: sende en beskrivelse av video som skal vises; og der fremgangsmåten videre omfatter trinn med å spesialanpasse, ved grafikkanordning-driveren (422), de bildeprosesseringsmuligheter som tilveiebringes basert på beskrivelsen av den videoen som skal vises.
29. Fremgangsmåte ifølge krav 27, der bildeprosesseringsmulighetene omfatter videoprosesseringsmuligheter; og der fremgangsmåten videre omfatter trinn med å: sende en kommando om å åpne et videoprosessering-streamobjekt til grafikkanordning-driveren (422) fra videorendreren (410); motta kommandoen fra videorendreren (410) hos grafikkanordning-driveren (422); sende en respons med en peker til et åpnet videoprosessering-streamobjekt til videorendreren (410) fra grafikkanordning-driveren (422); og ta imot responsen med pekeren fra grafikkanordning-driveren (422) hos videorendreren (410).
30. Fremgangsmåte ifølge krav 27, der bildeprosesseringsmulighetene omfatter videoprosesseringsmuligheter; og der fremgangsmåten videre omfatter trinn med å: sende en kommando om å utføre en videoprosesseringsoperasjon til grafikkanordning-driveren (422) fra videorendreren (410); motta kommandoen fra videorendreren (410) hos grafikkanordning-driveren (422); og forårsake, ved grafikkanordning-driveren (422), at videoprosesseringsoperasjonen utføres.
31. Fremgangsmåte ifølge krav 27, der bildeprosesseringsmulighetene omfatter videoprosesseringsmuligheter; og der fremgangsmåten videre omfatter trinn med å: sende en kommando om å lukke et videoprosessering-streamobjekt til grafikkanordning-driveren (422) fra videorendreren (410); motta kommandoen fra videorendreren (410) hos grafikkanordning-driveren (422); og lukke, ved grafikkanordning-driveren (422), videoprosessering-streamobjektet.
32. Ett eller flere elektronisk aksesserbare medier som inneholder elektronisk eksekverbare instruksjoner som, når de eksekveres, instruerer en elektronisk anordning om å utføre fremgangsmåten ifølge krav 27.
33. Én eller flere elektronisk aksesserbare medier ifølge krav 1, hvor trinnet med å etterspørre informasjonen utføres ved å: effektuere en forespørsel fra en videorendrer (410) til en grafikkanordning-driver (422), idet forespørselen forespør informasjon vedrørende prosessamplifikator (ProcAmp)-muligheter; og hvor trinnet med å motta informasjonen utføres ved å: motta en respons ved videorendreren (410) fra grafikkanordning-driveren (422), idet responsen omfatter den etterspurte informasjonen vedrørende ProcAmp-muligheter.
34. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, der i hvert fall en del av de elektronisk eksekverbare instruksjonene omfatter i hvert fall deler av et operativsystem.
35. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, der i hvert fall en del av de elektronisk eksekverbare instruksjonene omfatter i hvert fall deler av en videorendrer (410).
36. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, der fore-spørselen videre etterspør informasjon vedrørende generelle ProcAmp-muligheter; og der den etterspurte informasjonen i responsen angir én eller flere ProcAmp-muligheter som er tildelt videorendreren (410).
37. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, der fore-spørselen omfatter en beskrivelse av video som skal vises; og der den etterspurte informasjonen i responsen angir én eller flere ProcAmp-muligheter som har blitt tildelt videorendreren (410) basert på beskrivelsen av videoen som skal vises.
38. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, der fore-spørselen videre etterspør informasjon vedrørende ProcAmp-egenskapmuligheter; og der den etterspurte informasjon i responsen angir én eller flere ProcAmp-egenskapmuligheter som er tilgjengelig for videorendreren (410).
39. Ett eller flere elektronisk aksesserbare medier ifølge krav 38, der den ene eller de flere ProcAmp-egenskapmulighetene som er tilgjengelige for videorendreren (410) omfatter minst én ProcAmp-egenskapmulighet valgt fra gruppen omfattende: lysstyrke, kontrast, fargetone, fargemetning og ingen.
40. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, der fore-spørselen videre etterspør informasjon vedrørende muligheter for parallelle videoprosesseringsoperasjoner; og der den etterspurte informasjonen i responsen angir én eller flere videoprosesseringsoperasjoner som kan utføres samtidig med ProcAmp-innstillinger (428).
41. Ett eller flere elektronisk aksesserbare medier ifølge krav 40, der den ene eller de flere videoprosesseringsoperasjonene som kan utføres samtidig med ProcAmp-innstillinger (428) omfatter minst én videoprosesseringsoperasjon valgt fra gruppen omfattende: en YUV-til-RGB konverteringsoperasjon, en X-utvidelsesoperasjon, en Y-utvidelsesoperasjon, en operasjon på et delrektangel, en alfablendingsoperasjon og ingen operasjoner.
42. Ett eller flere elektronisk aksesserbare medier ifølge krav 40, der den ene eller de flere videoprosesseringsoperasjonene som kan utføres samtidig med ProcAmp-innstillinger (428) omfatter minst én videoprosesseringsoperasjon valgt fra gruppen omfattende: de-interlacing operasjoner, korreksjoner av høyde/bredde-forholdet, konverteringer av fargerom, konverteringer av bildefrekvens, vertikale eller horisontale speilingsoperasjoner, alfablendingsoperasjoner og ingen operasjoner.
43. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, der fore-spørselen videre etterspør informasjon vedrørende ProcAmp-egenskapmuligheter og muligheter for parallelle videoprosesseringsoperasjoner; og der den etterspurte informasjonen i responsen angir én eller flere ProcAmp-egenskapmuligheter som er tilgjengelige for videorendreren (410) og én eller flere videoprosesseringsoperasjoner som kan utføres samtidig med ProcAmp-innstillinger (428).
44. Ett eller flere elektronisk aksesserbare medier ifølge krav 43, der den ene eller de flere ProcAmp-egenskapmulighetene som er tilgjengelig for videorendreren (410) omfatter minst én ProcAmp-egenskapmulighet valgt fra gruppen omfattende: lysstyrke, kontrast, fargetone og fargemetning; og der den ene eller de flere videoprosesseringsoperasjonene som kan utføres samtidig med ProcAmp-innstillinger (428) omfatter minst én videoprosesseringsoperasjon valgt fra gruppen omfattende: en YUV-til-RGB konverteringsoperasjon, en X-utvidelsesoperasjon, en Y-utvidelsesoperasjon, en operasjon på et delområde i et rektangel, en alfablendingsoperasjon og ingen operasjon.
45. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, der fore-spørselen videre etterspør informasjon vedrørende verdier for minst én valgt ProcAmp-egenskapmulighet; og der den etterspurte informasjonen i responsen angir én eller flere verdier for den minst ene valgte ProcAmp-egenskapmuligheten.
46. Ett eller flere elektronisk aksesserbare medier ifølge krav 45, der den ene eller de flere verdiene for den minst ene valgte ProcAmp-egenskapmuligheten omfatter minst én ProcAmp-kontrollegenskapverdi valgt fra gruppen omfattende: minimumsverdi, inkrement, maksimumsverdi og standardverdi.
47. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, omfattende elektronisk eksekverbare instruksjoner som, når de eksekveres, utfører en ytterligere handling omfattende trinn med å: effektuere en kommando fra videorendreren (410) til grafikkanordning-driveren (422) om å åpne et ProcAmp-streamobjekt.
48. Ett eller flere elektronisk aksesserbare medier ifølge krav 47, omfattende elektronisk eksekverbare instruksjoner som, når de eksekveres, utfører en ytter ligere handling omfattende trinn med å: motta en peker ved videorendreren (410) fra grafikkanordning-driveren (422) som identifiserer et åpnet ProcAmp-streamobjekt.
49. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, omfattende elektronisk eksekverbare instruksjoner som, når de utføres, utfører en ytterligere handling omfattende trinn med å: effektuere en kommando fra videorendreren (410) til grafikkanordning-driveren (422) om å utføre en ProcAmp-innstilling (428) på video.
50. Ett eller flere elektronisk aksesserbare medier ifølge krav 49, der kommandoen omfatter en peker til et åpnet ProcAmp-streamobjekt for videoen.
51. Ett eller flere elektronisk aksesserbare medier ifølge krav 49, der kommandoen vedrører en bit-blokk overføring.
52. Ett eller flere elektronisk aksesserbare medier ifølge krav 51, der kommandoen instruerer grafikkanordning-driveren (422) til å forårsake en bit-blokk overføring sammen med utførelsen av ProcAmp-innstillingen (428) av videobildet.
53. Ett eller flere elektronisk aksesserbare medier ifølge krav 51, der kommandoen instruerer grafikkanordning-driveren (422) til å forårsake en bit-blokk overføring sammen med utførelsen av ProcAmp-innstillingen (428) for å skape ett bilde for et helt skjermbilde i en skjermanordning (436), idet det ene bildet er lagret i minnet som én enkelt blokk og omfatter en ramme av videoen etter ProcAmp-innstillingen.
54. Ett eller flere elektronisk aksesserbare medier ifølge krav 49, der kommandoen avtaler minst én videoprosesseringsoperasjon for utførelse samtidig med ProcAmp-innstillingen (428) av videobildet.
55. Ett eller flere elektronisk aksesserbare medier ifølge krav 49, der kommandoen fastsetter minst én kontrollegenskap-verdi eller endring av en kontrollegenskap-verdi for ProcAmp-innstillingen (428) av videobildet.
56. Ett eller flere elektronisk aksesserbare medier ifølge krav 49, omfattende elektronisk eksekverbare instruksjoner som, når de eksekveres, utfører en ytterligere handling omfattende trinn med å: motta, hos videorendreren (410), før den handling å sende, en operasjons-forespørsel fra en bildevisende applikasjon, idet operasjonsforespørselen omfatter en anmodning om å utføre en ProcAmp-innstilling (428) av videobildet.
57. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, omfattende elektronisk eksekverbare instruksjoner som, når de eksekveres, utfører en ytterligere handling omfattende trinn med å: sende en kommando fra videorendreren (410) til grafikkanordning-driveren (422) om å lukke et ProcAmp-streamobjekt.
58. Ett eller flere elektronisk aksesserbare medier ifølge krav 33, der de handlingene å sende en forespørsel og motta en respons effektueres, i hvert fall delvis, ved å sende forespørselen og responsen mellom videorendreren (410) og grafikkanordning-driveren (422) under anvendelse av i hvert fall én blant et grafikk-grensesnitt (412) og et anordningdriver-grensesnitt (414).
59. Ett eller flere elektronisk aksesserbare medier ifølge krav 2, hvor trinnet med å motta forespørselen utføres ved å: motta en forespørsel hos en grafikkanordning-driver (422) fra en videorendrer (410), der forespørselen etterspør informasjon vedrørende prosessamplifikator (ProcAmp)-muligheter; og sende en respons til videorendreren (410) fra grafikkanordning-driveren (422), der responsen omfatter den etterspurte informasjon vedrørende ProcAmp-muligheter.
60. Ett eller flere elektronisk aksesserbare medier ifølge krav 59, der i hvert fall en del av de elektronisk eksekverbare instruksjonene omfatter i hvert fall deler av et operativsystem.
61. Ett eller flere elektronisk aksesserbare medier ifølge krav 59, der i hvert fall en del av de elektronisk eksekverbare instruksjonene omfatter i hvert fall deler av en grafikkanordning-driver (422).
62. Ett eller flere elektronisk aksesserbare medier ifølge krav 59, der fore-spørselen omfatter en beskrivelse av video som skal vises; og der de elektronisk eksekverbare instruksjonene, når de eksekveres, utfører en ytterligere handling omfattende trinn med å: bestemme den etterspurte informasjonen vedrørende ProcAmp-muligheter for responsen basert på beskrivelsen av videoen som skal vises.
63. Ett eller flere elektronisk aksesserbare medier ifølge krav 59, der informasjonen vedrørende ProcAmp-muligheter er rettet mot ProcAmp-kontrollegenskap-muligheter; og der den etterspurte informasjonen vedrørende ProcAmp-muligheter omfatter én eller flere tilgjengelige ProcAmp-kontrollegenskaper valgt fra gruppen omfattende: ingen, lysstyrke, kontrast, fargetone og fargemetning.
64. Ett eller flere elektronisk aksesserbare medier ifølge krav 59, der informasjonen vedrørende ProcAmp-mulighet er rettet mot videoprosesseringsoperasjoner som kan utføres samtidig med ProcAmp-innstillinger (428); og der den etterspurte informasjonen vedrørende ProcAmp-muligheter omfatter én eller flere videoprosesseringsoperasjoner som det er mulig å utføre samtidig med ProcAmp-innstillinger og som er valgt fra gruppen omfattende: ingen, YUV-til-RGB konvertering, horisontal utvidelse, vertikal utvidelse, rektangulær bildeinndeling og alfablending.
65. Ett eller flere elektronisk aksesserbare medier ifølge krav 59, der fore-spørselen omfatter en valgt ProcAmp-kontrollegenskap og informasjonen ved-rørende ProcAmp-muligheter er rettet mot verdier for den valgte ProcAmp-kontrollegenskapen; og der den etterspurte informasjonen vedrørende ProcAmp-muligheter omfatter én eller flere verdier for den valgte ProcAmp-kontrollegenskapen som er valgt fra gruppen omfattende: intervall, maksimumsverdi, minimumsverdi, trinnstørrelse/inkrement og standardverdi.
66. Ett eller flere elektronisk aksesserbare medier ifølge krav 59, omfattende elektronisk eksekverbare instruksjoner som, når de eksekveres, utfører ytterligere handlinger omfattende trinn med å: motta en kommando hos grafikkanordning-driveren (422) fra videorendreren (410) om å åpne et ProcAmp-streamobjekt; åpne ProcAmp-streamobjektet; og sende en annen respons til videorendreren (410) fra grafikkanordning-driveren (422), idet den andre responsen omfatter en peker som peker til det åpnede ProcAmp-streamobjektet.
67. Ett eller flere elektronisk aksesserbare medier ifølge krav 59, omfattende elektronisk eksekverbare instruksjoner som, når de eksekveres, utfører ytterligere handlinger omfattende trinn med å: motta en kommando hos grafikkanordning-driveren (422) fra videorendreren (410) om å utføre en ProcAmp-innstilling (428); og forårsake at ProcAmp-innstillingen (428) utføres.
68. Ett eller flere elektronisk aksesserbare medier ifølge krav 67, der kommandoen omfatter en instruksjon om å utføre en videoprosesseringsoperasjon parallelt med ProcAmp-innstillingen (428); og der den handling å forårsake at ProcAmp-innstillingen (428) utføres omfatter trinn med å forårsake samtidig utførelse av ProcAmp-innstillingen (428) og videoprosesseringsoperasjonen.
69. Anordning for å forenkle vekselvirkning mellom videorendrere (410) og grafikkanordning-drivere (422), der anordningen omfatter: overføringsmekanismer for å sende en forespørsel til en grafikkanordning-driver (422), der forespørselen etterspør informasjon fra grafikkanordning-driveren (422) vedrørende prosessamplifikator (ProcAmp)-muligheter som grafikkanordning-driveren (422) kan tilveiebringe; og mottakermekanismer for å motta en respons fra grafikkanordning-driveren (422), der responsen omfatter ProcAmp-muligheter som grafikkanordning-driveren (422) kan tilveiebringe.
70. Anordning ifølge krav 69, der anordningen omfatter ett eller flere elektronisk aksesserbare medier som inneholder elektronisk eksekverbare instruksjoner.
71. Anordning ifølge krav 70, der de elektronisk eksekverbare instruksjonene omfatter i hvert fall deler av en videorendrer (410).
72. Anordning ifølge krav 69, der anordningen omfatter minst én elektronisk anordning.
73. Anordning for å forenkle vekselvirkning mellom videorendrere (410) og grafikkanordning-drivere (422), der anordningen omfatter: mottakermekanismer for å motta en forespørsel fra en videorendrer (410, der forespørselen etterspør informasjon vedrørende prosessamplifikator (ProcAmp)-muligheter som kan tilveiebringes for en video som skal vises; og overføringsmekanismer for å sende en respons til videorendreren (410), der responsen omfatter den etterspurte informasjonen vedrørende ProcAmp-muligheter som kan tilveiebringes for videoen som skal vises.
74. Anordning ifølge krav 73, der anordningen omfatter én eller flere elektronisk aksesserbare medier som inneholder elektronisk eksekverbare instruksjoner.
75. Anordning ifølge krav 74, der de elektronisk eksekverbare instruksjonene omfatter i hvert fall deler av en grafikkanordning-driver (422); og der ProcAmp-mulighetene kan være tilveiebragt for videoen indirekte av grafikkanordning-driveren (422).
76. Anordning ifølge krav 73, der anordningen omfatter minst én elektronisk anordning.
NO20031728A 2002-04-15 2003-04-14 Forenkling av vekselvirkning mellom videorendrere og grafikkanordningsdrivere NO337350B1 (no)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US37288002P 2002-04-15 2002-04-15
US41306002P 2002-09-24 2002-09-24

Publications (3)

Publication Number Publication Date
NO20031728D0 NO20031728D0 (no) 2003-04-14
NO20031728L NO20031728L (no) 2003-10-16
NO337350B1 true NO337350B1 (no) 2016-03-21

Family

ID=28045726

Family Applications (1)

Application Number Title Priority Date Filing Date
NO20031728A NO337350B1 (no) 2002-04-15 2003-04-14 Forenkling av vekselvirkning mellom videorendrere og grafikkanordningsdrivere

Country Status (11)

Country Link
US (1) US7451457B2 (no)
CN (1) CN100504760C (no)
AU (1) AU2003203711B2 (no)
BR (1) BRPI0305439B1 (no)
CA (1) CA2425360C (no)
MX (1) MXPA03003319A (no)
MY (1) MY141685A (no)
NO (1) NO337350B1 (no)
PL (1) PL359695A1 (no)
RU (1) RU2308082C2 (no)
TW (2) TWI362616B (no)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100914120B1 (ko) * 2002-04-15 2009-08-27 마이크로소프트 코포레이션 비디오 렌더러와 그래픽 디바이스 드라이버, 및 이들간의 상호 작용을 용이하게 하기 위한 장치, 시스템, 방법 및 전자적으로 액세스 가능한 매체
US7219352B2 (en) * 2002-04-15 2007-05-15 Microsoft Corporation Methods and apparatuses for facilitating processing of interlaced video images for progressive video displays
KR100524066B1 (ko) * 2003-02-08 2005-10-26 삼성전자주식회사 디바이스 대화창 표시방법 및 장치
US7508448B1 (en) * 2003-05-29 2009-03-24 Nvidia Corporation Method and apparatus for filtering video data using a programmable graphics processor
JP4161814B2 (ja) * 2003-06-16 2008-10-08 ソニー株式会社 入力方法および入力装置
US7643675B2 (en) 2003-08-01 2010-01-05 Microsoft Corporation Strategies for processing image information using a color information data structure
JP2006042267A (ja) * 2004-07-30 2006-02-09 Canon Inc 画像処理方法、画像処理装置、およびプログラム
US7487516B1 (en) * 2005-05-24 2009-02-03 Nvidia Corporation Desktop composition for incompatible graphics applications
US7477264B2 (en) * 2005-08-12 2009-01-13 Microsoft Corporation Compositing external images into a multimedia rendering pipeline
US8031197B1 (en) * 2006-02-03 2011-10-04 Nvidia Corporation Preprocessor for formatting video into graphics processing unit (“GPU”)-formatted data for transit directly to a graphics memory
US7929599B2 (en) * 2006-02-24 2011-04-19 Microsoft Corporation Accelerated video encoding
US7950022B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Techniques for use with device drivers in a common software environment
US7950025B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Common software environment
US9152139B2 (en) * 2009-06-16 2015-10-06 Control4 Corporation Automation Control of Electronic Devices
US8624907B2 (en) * 2009-06-26 2014-01-07 Intel Corporation Graphics analysis techniques
US8581916B2 (en) * 2009-06-26 2013-11-12 Intel Corporation Graphics analysis techniques
US20110060812A1 (en) * 2009-09-10 2011-03-10 Level 3 Communications, Llc Cache server with extensible programming framework
CN102053871B (zh) * 2009-10-28 2013-03-13 中国移动通信集团公司 一种应用程序图像的显示方法和装置
US20120096209A1 (en) * 2010-10-15 2012-04-19 Yu Shin Wang Multi peripheral accelerating apparatus
KR102160123B1 (ko) 2012-08-02 2020-09-25 삼성전자주식회사 컨텐츠에 대한 영상 후처리를 위한 디스플레이 장치, 영상 후처리 장치 및 방법
WO2014021566A1 (en) * 2012-08-02 2014-02-06 Samsung Electronics Co., Ltd. Display apparatus, image post-processing apparatus and method for image post-processing of contents
US9733715B2 (en) 2013-03-15 2017-08-15 Leap Motion, Inc. Resource-responsive motion capture
JP6315895B2 (ja) 2013-05-31 2018-04-25 キヤノン株式会社 撮像装置、画像処理装置、撮像装置の制御方法、画像処理装置の制御方法、プログラム
US9232177B2 (en) * 2013-07-12 2016-01-05 Intel Corporation Video chat data processing
CN106034241B (zh) * 2015-03-19 2019-04-26 华为技术有限公司 一种多媒体重定向的方法、客户端、服务器和系统
CN107071514B (zh) * 2017-04-08 2018-11-06 腾讯科技(深圳)有限公司 一种图片文件处理方法及智能终端

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715459A (en) * 1994-12-15 1998-02-03 International Business Machines Corporation Advanced graphics driver architecture

Family Cites Families (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US486637A (en) * 1892-11-22 Seeding-machine
US463763A (en) * 1891-11-24 Ferdinand voigt
US4463372A (en) 1982-03-24 1984-07-31 Ampex Corporation Spatial transformation system including key signal generator
US6496183B1 (en) * 1998-06-30 2002-12-17 Koninklijke Philips Electronics N.V. Filter for transforming 3D data in a hardware accelerated rendering architecture
US4601055A (en) 1984-04-10 1986-07-15 The United States Of America As Represented By The Secretary Of Commerce Image processor
US4639763A (en) 1985-04-30 1987-01-27 Rca Corporation Interlace to non-interlace scan converter for RGB format video input signals
US5014327A (en) 1987-06-15 1991-05-07 Digital Equipment Corporation Parallel associative memory having improved selection and decision mechanisms for recognizing and sorting relevant patterns
US4866637A (en) 1987-10-30 1989-09-12 International Business Machines Corporation Pipelined lighting model processing system for a graphics workstation's shading function
DE3838730C2 (de) 1987-11-16 1994-07-28 Canon Kk Verfahren und Vorrichtung zur Bildverarbeitung
US5179641A (en) 1989-06-23 1993-01-12 Digital Equipment Corporation Rendering shaded areas with boundary-localized pseudo-random noise
US5218674A (en) * 1990-09-14 1993-06-08 Hughes Aircraft Company Hardware bit block transfer operator in a graphics rendering processor
US5235432A (en) 1991-11-22 1993-08-10 Creedon Brendan G Video-to-facsimile signal converter
US5602943A (en) 1992-04-28 1997-02-11 Velho; Luiz C. Digital halftoning space filling curves
EP0600204A3 (en) 1992-11-30 1994-07-27 Ibm Method and apparatus for rendering primitives with multiple processors.
US5577125A (en) 1993-06-14 1996-11-19 International Business Machines Corporation Graphical manipulation of encryption
US5508812A (en) 1993-09-01 1996-04-16 Apple Computer, Inc. System for processing and recording digital color television signal onto analog video tape
US5526051A (en) 1993-10-27 1996-06-11 Texas Instruments Incorporated Digital television system
DE69523593T2 (de) * 1994-06-17 2002-09-26 Intel Corp Vorrichtung und verfahren zur aufteilung der anwendung in einer graphischen benutzerschnittstelle
MX9700385A (es) 1994-07-14 1998-05-31 Johnson Grace Company Metodo y aparato para comprimir imagenes.
US5870503A (en) 1994-10-20 1999-02-09 Minolta Co., Ltd. Image processing apparatus using error diffusion technique
US5565994A (en) 1994-12-06 1996-10-15 Xerox Corporation Multiple separation error diffusion, with cross separation correlation control for color images
US6307559B1 (en) 1995-07-13 2001-10-23 International Business Machines Corporation Method and apparatus for color space conversion, clipping, and scaling of an image during blitting
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US5757386A (en) 1995-08-11 1998-05-26 International Business Machines Corporation Method and apparatus for virtualizing off-screen memory of a graphics engine
US5742797A (en) 1995-08-11 1998-04-21 International Business Machines Corporation Dynamic off-screen display memory manager
WO1997013376A1 (en) 1995-10-05 1997-04-10 Faroudja Y C Method and apparatus for procucing from a standard-bandwidth color television signal a color video signal with extended vertical definition
US5936632A (en) 1996-07-26 1999-08-10 Hewlett-Packard Co. Method for fast downloading of textures to accelerated graphics hardware and the elimination of extra software copies of texels
US6195098B1 (en) * 1996-08-02 2001-02-27 Autodesk, Inc. System and method for interactive rendering of three dimensional objects
US5982453A (en) 1996-09-25 1999-11-09 Thomson Consumer Electronics, Inc. Reduction of visibility of spurious signals in video
US5825879A (en) 1996-09-30 1998-10-20 Intel Corporation System and method for copy-protecting distributed video content
US6369855B1 (en) 1996-11-01 2002-04-09 Texas Instruments Incorporated Audio and video decoder circuit and system
EP0859326A3 (en) 1997-02-14 1999-05-12 Canon Kabushiki Kaisha Data transmission apparatus, system and method, and image processing apparatus
GB9704638D0 (en) 1997-03-06 1997-04-23 Lsi Logic Corp Digital video broadcasting
US6212574B1 (en) 1997-04-04 2001-04-03 Microsoft Corporation User mode proxy of kernel mode operations in a computer operating system
US6205492B1 (en) * 1997-04-04 2001-03-20 Microsoft Corporation Method and computer program product for interconnecting software drivers in kernel mode
US6370198B1 (en) 1997-04-07 2002-04-09 Kinya Washino Wide-band multi-format audio/video production system with frame-rate conversion
US5898779A (en) 1997-04-14 1999-04-27 Eastman Kodak Company Photograhic system with selected area image authentication
US5872956A (en) 1997-04-24 1999-02-16 International Business Machines Corporation Design methodology for device drivers supporting various operating systems network protocols and adapter hardware
US6269484B1 (en) 1997-06-24 2001-07-31 Ati Technologies Method and apparatus for de-interlacing interlaced content using motion vectors in compressed video streams
US6144390A (en) 1997-08-04 2000-11-07 Lucent Technologies Inc. Display composition technique
US6262773B1 (en) 1997-09-15 2001-07-17 Sharp Laboratories Of America, Inc. System for conversion of interlaced video to progressive video using edge correlation
US7039876B2 (en) 1997-10-06 2006-05-02 Canon Kabushiki Kaisha User interface for image acquisition devices
US6208350B1 (en) 1997-11-04 2001-03-27 Philips Electronics North America Corporation Methods and apparatus for processing DVD video
JP3700357B2 (ja) 1997-11-25 2005-09-28 コニカミノルタビジネステクノロジーズ株式会社 画像処理装置
US6047295A (en) 1998-05-05 2000-04-04 International Business Machines Corporation Computer system, program product and method of managing weak references with a concurrent mark sweep collector
KR100296958B1 (ko) 1998-05-06 2001-09-22 이석우 블록 데이터 암호화 장치
EP1006721A4 (en) 1998-06-11 2007-08-08 Matsushita Electric Ind Co Ltd VIDEO DISPLAY AND PROGRAMMED MEDIUM
US6034733A (en) 1998-07-29 2000-03-07 S3 Incorporated Timing and control for deinterlacing and enhancement of non-deterministically arriving interlaced video data
US6573905B1 (en) 1999-11-09 2003-06-03 Broadcom Corporation Video and graphics system with parallel processing of graphics windows
US6353438B1 (en) * 1999-02-03 2002-03-05 Artx Cache organization—direct mapped cache
US6359631B2 (en) * 1999-02-16 2002-03-19 Intel Corporation Method of enabling display transparency for application programs without native transparency support
US6753878B1 (en) 1999-03-08 2004-06-22 Hewlett-Packard Development Company, L.P. Parallel pipelined merge engines
US6952215B1 (en) 1999-03-31 2005-10-04 International Business Machines Corporation Method and system for graphics rendering using captured graphics hardware instructions
US6295068B1 (en) 1999-04-06 2001-09-25 Neomagic Corp. Advanced graphics port (AGP) display driver with restricted execute mode for transparently transferring textures to a local texture cache
US6323875B1 (en) 1999-04-28 2001-11-27 International Business Machines Corporation Method for rendering display blocks on display device
US6331874B1 (en) 1999-06-29 2001-12-18 Lsi Logic Corporation Motion compensated de-interlacing
US20020145610A1 (en) 1999-07-16 2002-10-10 Steve Barilovits Video processing engine overlay filter scaler
US6437788B1 (en) 1999-07-16 2002-08-20 International Business Machines Corporation Synchronizing graphics texture management in a computer system using threads
JP2001054075A (ja) 1999-08-06 2001-02-23 Hitachi Ltd 画像信号の動き補償走査変換回路
US6654022B1 (en) * 1999-09-30 2003-11-25 International Business Machines Corporation Method and apparatus for lookahead generation in cached computer graphics system
AUPQ377899A0 (en) 1999-10-29 1999-11-25 Canon Kabushiki Kaisha Phase three kernel selection
AUPQ377599A0 (en) 1999-10-29 1999-11-25 Canon Kabushiki Kaisha Colour clamping
US6466226B1 (en) 2000-01-10 2002-10-15 Intel Corporation Method and apparatus for pixel filtering using shared filter resource between overlay and texture mapping engines
US6823525B1 (en) 2000-01-21 2004-11-23 Ati Technologies Inc. Method for displaying single monitor applications on multiple monitors driven by a personal computer
US6567091B2 (en) 2000-02-01 2003-05-20 Interactive Silicon, Inc. Video controller system with object display lists
US6901453B1 (en) 2000-02-16 2005-05-31 Microsoft Corporation Modularization of broadcast receiver driver components
US6567098B1 (en) * 2000-06-22 2003-05-20 International Business Machines Corporation Method and apparatus in a data processing system for full scene anti-aliasing
US6828981B2 (en) 2000-11-29 2004-12-07 Videotek, Inc. Method and apparatus for polar display of composite and RGB color gamut violation
US6690427B2 (en) 2001-01-29 2004-02-10 Ati International Srl Method and system for de-interlacing/re-interlacing video on a display device on a computer system during operation thereof
US6940557B2 (en) 2001-02-08 2005-09-06 Micronas Semiconductors, Inc. Adaptive interlace-to-progressive scan conversion algorithm
US6831999B2 (en) 2001-02-08 2004-12-14 Canon Kabushiki Kaisha Color management architecture using phantom profiles to transfer data between transformation modules
US7236204B2 (en) 2001-02-20 2007-06-26 Digeo, Inc. System and method for rendering graphics and video on a display
US7148975B2 (en) 2001-04-23 2006-12-12 Hewlett-Packard Development Company, L.P. Method and apparatus for improving data conversion efficiency
US6859235B2 (en) 2001-05-14 2005-02-22 Webtv Networks Inc. Adaptively deinterlacing video on a per pixel basis
KR20030023711A (ko) 2001-05-23 2003-03-19 코닌클리케 필립스 일렉트로닉스 엔.브이. 디더링 방법 및 장치
US6885374B2 (en) 2001-06-29 2005-04-26 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a time allocator
US6788312B1 (en) 2001-08-06 2004-09-07 Nvidia Corporation Method for improving quality in graphics pipelines through a frame's top and bottom field processing with conditional thresholding and weighting techniques
US6952216B2 (en) * 2001-09-18 2005-10-04 Seiko Epson Corporation High performance graphics controller
US6806982B2 (en) * 2001-11-30 2004-10-19 Zebra Imaging, Inc. Pulsed-laser systems and methods for producing holographic stereograms
US6943905B2 (en) 2001-12-20 2005-09-13 Sharp Laboratories Of America, Inc. Virtual print driver system and method
US20040024580A1 (en) 2002-02-25 2004-02-05 Oak Technology, Inc. Server in a media system
US7219352B2 (en) 2002-04-15 2007-05-15 Microsoft Corporation Methods and apparatuses for facilitating processing of interlaced video images for progressive video displays
US7158668B2 (en) 2003-08-01 2007-01-02 Microsoft Corporation Image processing using linear light values and other image processing improvements
US7180525B1 (en) 2003-11-25 2007-02-20 Sun Microsystems, Inc. Spatial dithering to overcome limitations in RGB color precision of data interfaces when using OEM graphics cards to do high-quality antialiasing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715459A (en) * 1994-12-15 1998-02-03 International Business Machines Corporation Advanced graphics driver architecture

Also Published As

Publication number Publication date
TW200405211A (en) 2004-04-01
BRPI0305439B1 (pt) 2016-05-31
NO20031728D0 (no) 2003-04-14
CN1503122A (zh) 2004-06-09
CA2425360A1 (en) 2003-10-15
MXPA03003319A (es) 2004-10-29
AU2003203711A1 (en) 2003-11-06
TWI362615B (en) 2012-04-21
MY141685A (en) 2010-06-15
US7451457B2 (en) 2008-11-11
RU2308082C2 (ru) 2007-10-10
US20030195998A1 (en) 2003-10-16
CA2425360C (en) 2016-11-08
CN100504760C (zh) 2009-06-24
PL359695A1 (en) 2003-10-20
TWI362616B (en) 2012-04-21
TW201137754A (en) 2011-11-01
NO20031728L (no) 2003-10-16
AU2003203711B2 (en) 2009-11-19
BR0305439A (pt) 2004-05-25

Similar Documents

Publication Publication Date Title
NO337350B1 (no) Forenkling av vekselvirkning mellom videorendrere og grafikkanordningsdrivere
JP4309270B2 (ja) グラフィックデータ及びデジタルドキュメント処理の視覚的表現を生成するシステム及び方法
US6067098A (en) Video/graphics controller which performs pointer-based display list video refresh operation
US8570441B2 (en) One pass video processing and composition for high-definition video
US20170302899A1 (en) Facilitating interaction between video renderers and graphics device drivers
JPH02301822A (ja) ウィンドウ表示装置
AU2524700A (en) Method and apparatus for antialiased imaging of graphical objects
US5748866A (en) Virtual display adapters using a digital signal processing to reformat different virtual displays into a common format and display
US20080297532A1 (en) Rotation and scaling optimization for mobile devices
US7050065B1 (en) Minimalist color space converters for optimizing image processing operations
CN115934383A (zh) Wayland合成器下多显卡渲染方法
US20050046635A1 (en) Apparatus and method for processing images and drawing sprites in priority order by alfa blending on display screen
US9747658B2 (en) Arbitration method for multi-request display pipeline
KR100528993B1 (ko) 디지털 멀티시스템 및 그 제어방법
JPS59189487A (ja) 図面入力装置
JP2008052398A (ja) 画像合成装置、プログラム、記録媒体

Legal Events

Date Code Title Description
CHAD Change of the owner's name or address (par. 44 patent law, par. patentforskriften)

Owner name: MICROSOFT TECHNOLOGY LICENSING, US

MM1K Lapsed by not paying the annual fees