-
HINTERGRUND
-
Eine Videodatenverarbeitungseinheit kann in einem digitalen System wie beispielsweise einer Einheit mit eingeschränkten Ressourcen vorgesehen sein. In einem Ausführungsbeispiel kann das ressourceneingeschränkte Gerät sich auf einen Satz von Geräten beziehen, welche begrenzte Ressourcen wie beispielsweise Verarbeitungszyklen, Speicher und Bandbreite zum Datentransfer aufweisen. Die ressourceneingeschränkten Geräte können Mobiltelefone, digitale persönliche Assistenten (PDA), mobile Internetgeräte (MID), Kameras, Camcorders, DVD-Spieler (digital versatile disc player), CD-Spieler (compact disc players) und andere ähnliche Geräte umfassen.
-
Die ressourceneingeschränkten Geräte, welche Videodaten verarbeiten, können kleine Anzeigen umfassen, um die Videos darzustellen. Die kleine Größe der Anzeigen kann das Videobetrachtungserlebnis beim Nutzer von ressourceneingeschränkten Geräte begrenzen. Um solche Einschränkungen beim Betrachten von Videos zu vermeiden oder zu reduzieren, können die Videoverarbeitungsgeräte Videoverbesserungstechniken anwenden. Zusätzliche Ressourcen können verwendet werden, um die Verbesserungstechniken durchzuführen. Ein Abgleichen der Videoverarbeitungsleistung an die verfügbaren Ressourcen auf dem ressourceneingeschränkten Gerät kann genutzt werden, um gleichbleibende Servicequalitätswerte (QoS) aufrecht zu erhalten.
-
KURZBESCHREIBUNG DER FIGUREN
-
Die Erfindung, die hierin beschrieben wird, wird mit Hilfe von Beispielen illustriert und ist in keiner Weise durch die beigefügten Figuren eingeschränkt. Der Einfachheit halber und der Klarheit der Figuren wegen sind in den Figuren Elemente nicht notwendigerweise maßstabsgetreut dargestellt. Z. B. sind die Abmaße einiger Elemente relativ zu anderen Elementen der Klarheit wegen vergrößert. Sofern geeignet, werden außerdem Bezugszeichen wiederholt in den Figuren genutzt, um entsprechende oder analoge Elemente zu kennzeichnen.
-
1 zeigt eine Videoverarbeitungslogik 100 entsprechend einem Ausführungsbeispiel, die eine Verarbeitung von Videodaten auf ressourceneingeschränkten Geräten unterstützt.
-
2 zeigt eine Leistungsmanagementlogik 160 gemäß einem Ausführungsbeispiel, die eine Auswahl von Videoverbesserungstechniken unterstützt, um die verfügbaren Ressourcen auf dem ressourceneingeschränkte Gerät abzustimmen.
-
3 zeigt einen Flowchart gemäß einem Ausführungsbeispiel, der ein Auswahlverfahren für Videoverbesserungstechniken darstellt, um die verfügbaren Ressourcen auf dem ressourceneingeschränkten Gerät abzustimmen.
-
4 zeigt ein erstes ressourceneingeschränktes Gerät gemäß einem Ausführungsbeispiel, das eine Auswahl von Videoverbesserungstechniken unterstützt, um verfügbare Ressourcen auf dem ressourceneingeschränkten Gerät abzustimmen.
-
5 zeigt ein zweite ressourceneingeschränktes Gerät gemäß einem Ausführungsbeispiel, das eine Auswahl von Videoverbesserungstechniken unterstützt, um verfügbare Ressourcen auf dem ressourceneingeschränkten Gerät abzustimmen.
-
DETAILLIERTE BESCHREIBUNG
-
Die folgende Beschreibung beschreibt Techniken zum Verarbeiten von Videodaten in ressourceneingeschränkten Geräten. In der folgenden Beschreibung werden verschiedene spezifische Details wie beispielsweise logische Implementierungen, Ressourcen-Partitionierungen oder -Teilungen oder Vervielfachung von Implementierungen, Arten und Wechselbeziehungen von Systemkomponenten und logische Partitionierungen oder Integrationsmöglichkeiten dargelegt, um ein gründlicheres Verständnis der vorliegenden Erfindung zu erreichen. Der Fachmann wird jedoch erkennen, dass die Erfindung auch ohne solche spezifischen Details ausführbar ist. Bei anderen Beispielen sind Kontrollstrukturen, Tor-Niveau-Schaltungen (gate level circuits) und vollständige Softwareinstruktionssequenzen nicht im Detail gezeigt, um die Erfindung nicht zu verdecken. Der Fachmann wird in der Lage sein, zusammen mit der beiliegenden Beschreibung die adäquate Funktionalität ohne unnötiges Experimentieren zu implementieren.
-
Die Bezugnahme in der Beschreibung auf „ein Ausführungsbeispiel” oder „ein beispielhaftes Ausführungsbeispiel” weist darauf hin, dass das beschriebene Ausführungsbeispiel ein besonderes Merkmal, Struktur oder Charakteristik umfassen kann, aber nicht jedes Ausführungsbeispiel wird notwendigerweise das besondere Merkmal, Struktur oder Charakteristik umfassen. Außerdem beziehen sich derartige Formulierungen nicht notwendigerweise auf das gleiche Ausführungsbeispiel. Weiterhin wird darauf verwiesen, dass wenn ein bestimmtes Merkmal, Struktur oder Charakteristik in Kombination mit einem Ausführungsbeispiel beschrieben wird, dass es in dem Wissen des Fachmanns liegt, solch ein Merkmal, Struktur oder Charakteristik in Verbindung mit anderen Ausführungsbeispielen zu kombinieren, ob sie nun explizit beschrieben ist oder nicht.
-
Ausführungsbeispiele der vorliegenden Erfindung können in Hardware, Firmware, Software oder jede Kombination davon implementiert sein. Ausführungsbeispiele der Erfindung können ebenso als Instruktionen oder Befehle auf einem maschinenlesbaren Medium gespeichert sein, welche durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Medium oder Speichermedium kann jeden Mechanismus zum Speichern und Übertragen von Informationen in maschinenlesbarer Form (z. B. durch ein Computergerät) umfassen.
-
Ein maschinenlesbares Speichermedium kann beispielsweise einen Nur-Lese-Speicher (read only memory, ROM); einen Arbeitsspeicher (RAM); ein magnetisches(Disketten-)Speichermedium; ein optisches Speichermedium; einen Flashspeicher; elektrische, optische Formen von Signalen umfassen. Im weiteren können Firmware, Software, Routinen und Instruktionen hierin durch das Ausführen bestimmter Aktionen beschrieben werden. Es sollte jedoch beachtet werden, dass solche Beschreibungen nur der Einfachheit dienen und dass solche Aktionen tatsächlich Ergebnis sind von Computergeräten, Prozessoren, Controller und anderen Einheiten sind, die die Firmware, Software, Routinen und Instruktionen ausführen.
-
1 zeigt ein Ausführungsbeispiel für eine Videoverarbeitungslogik 100. Die Videoverarbeitungslogik VPL 100 kann beispielsweise eine Decoderlogik 120, eine Verbesserungslogik 140 (eine sogenannte Enhance-Logik) und eine Leistungsmanagementlogik 160 (sogenannte Performance-Management-Logik) umfassen. Bei einem Ausführungsbeispiel können die grafischen und/oder Videoprozesstechniken, die hierin in Bezug auf die VPL 100 beschrieben werden, in unterschiedlichen Hardwarearchitekturen implementiert sein. Beispielsweise können grafische und/oder Videofunktionalitäten in einem Chipsatz integriert sein. Alternativ kann ein eigenständiger Grafik- und/oder Videoprozessor genutzt werden. In einem weiteren Ausführungsbeispiel sind die Grafik- und/oder Videofunktionen durch oder in einem Standardprozessor implementiert, der beispielweise einen Multikernprozessor umfassen kann. In einem weiteren Ausführungsbeispiel können die Funktionen in einem Haushaltselektronikgerät, wie beispielsweise in einem mobilen Internetgerät, mobilem Telefon, Unterhaltungselektronikgerät und anderen derartigen Geräten implementiert sein.
-
Bei einem Ausführungsbeispiel kann die Decoderlogik 120 Composite-Videodaten wie beispielsweise sogenanntes Streaming-Video (einen Bilddatenstrom) nach dem Erhalten der Composite-Videodaten decodieren. In einem Ausführungsbeispiel können die decodierten Videodaten für die Verbesserungslogik 140 bereitgestellt werden. In einem weiteren Ausführungsbeispiel kann die Decoderlogik 120 die Helligkeits- und die Farbkomponenten von den erhaltenen Composite-Videodaten trennen. In einem weiteren Ausführungsbeispiel kann die Decoderlogik 120 die Videodaten basierend auf dem PAL (Phase-Alternating-Line) oder dem NTSC (National Television System Committee) oder dem SECAM (Sequential Colour with Memory) Standard oder andere solchen Standards verarbeiten.
-
Bei einem anderen Ausführungsbeispiel kann die Verbesserungslogik 140 die decodierten Daten empfangen und eine oder mehrere VideoBildverbesserungsoperationen ausführen, um die Qualität des Videos zu verbessern. Bei einem weiteren Ausführungsbeispiel können die VideoBildverbesserungsoperationen ein Skalieren, ein Rauschunterdrücken, eine automatische Farbverbesserung, eine Schärfenverbesserung, eine Verbesserung des Kontrastes, ein Feststellen einer Hautfarbtönung, eine Gesamtfarbkontrolle, eine Bildratenkonvertierung und andere Änderungen umfassen, um das Videobetrachtungserlebnis bei dem Nutzer zu verbessern. Bei einem weiteren Ausführungsbeispiel kann die Verbesserungslogik 140 die Video/Bildverbesserungen unter Nutzung von einem oder mehreren Verbesserungstechniken durchführen.
-
Bei einem weiteren Aufführungsbeispiel kann die Skalierungsoperation unter Nutzung einer beispielhaften bilinearen Interpolation, oder einer beispielhaften Poly-Phasenfiltertechnik ausgeführt werden. Bei einem weiteren Ausführungsbeispiel kann die Poly-Phasenfiltertechnik nur rechenintensiv ausgeführt werden, aber kann dann eine bessere Qualität des skalierten Videos liefern als beispielsweise die bilineare Interpolation. Bei einem weiteren Ausführungsbeispiel kann die Verbesserungslogik 140 alle, oder einige oder keine der Verbesserungsoperationen ausführen, und zwar basierend auf Kontrollsignalen, die von der Leistungsmanagementlogik 160 empfangen werden. Bei einem weiteren Ausführungsbeispiel kann die Verbesserungslogik 140 eine Technik von mehreren verfügbaren Techniken auswählen, um die Verbesserungsoperation basierend auf Auswahlparametern durchzuführen, die durch die Performancemanagementlogik 160 vorgegeben werden.
-
Bei einem Ausführungsbeispiel kann die Verbesserungslogik 140 ein Kontroll- oder Steuersignal empfangen, welches anzeigt, dass zwei Verbesserungsoperationen (z. B. Skalierungs- und Farbkorrekturen) durchzuführen sind. Ebenso kann das Kontrollsignal einen Auswahlwert umfassen, um anzuzeigen, dass eine bilineare Interpolation-Verbesserungstechnik bei dem Ausführen der Skalierungsoperation zu nutzen ist. Bei einem weiteren Ausführungsbeispiel kann die Verbesserungslogik 140 das Kontrollsignal empfangen und die Skalierungsoperation unter Nutzung der bilinearen Interpolationstechnik ausführen. Bei einem weiteren Ausführungsbeispiel kann die Verbesserungslogik 140 ebenfalls eine Farbkorrekturoperation in Antwort auf das Erhalten des Kontrollsignals ausführen. Die Verbesserungslogik 140 kann jedoch weitere Verbesserungsoperationen für das Videosignal überspringen.
-
Bei weiteren Ausführungsbeispielen kann die Leistungsmanagementlogik 160 den CPU-Auslastungszustand überwachen, wenn die Leistungsmanagementlogik 160 vermutet, dass ein CPU-Sättigungszustand vorliegt. Bei weiteren Ausführungsbeispielen kann die Leistungsmanagementlogik 160 periodisch die Ableitung des kurzzeitigen (oder kurzfristigen) Bildratendurchschnitts (y'[n]) bestimmen. Bei weiteren Ausführungsbeispielen kann die Leistungsmanagementlogik 160 eine Überwachung der CPU-Nutzung aktivieren, wenn (y'[n]) kleiner ist als ein erster Schwellenwert. Bei einem Ausführungsbeispiel kann die Leistungsüberwachungslogik 160 die Videoperformance (oder Bildleistung) reduzieren, wenn der Kurzzeitdurchschnitt der CPU-Nutzung (Durchschnittswert der Prozessornutzung) oberhalb eines zweiten Schwellenwerts liegt. Bei weiteren Ausführungsbeispielen kann die CPU-Nutzung (Prozessornutzung oder -auslastung) zum Ausführen anderer Applikationen wie beispielsweise einem automatischen Backup erhöht werden, so dass die verfügbaren CPU-Ressourcen zum Ausführen von Verbesserungsoperationen reduziert werden.
-
Bei weiteren Ausführungsbeispielen kann die Leistungsmanagementlogik 160 Kontrollsignale generieren, die der Verbesserungslogik 140 basierend auf dem Wert der Ableitung des kurzzeitigen Bildratendurchschnitt und des kurzzeitigen durchschnittlichen CPU-Nutzungswertes bereitgestellt werden. Bei weiteren Ausführungsbeispielen kann die Leistungsmanagementlogik 160 ein Kontrollsignal generieren, welches ein Selektions- oder Auswahlfeld umfasst. Bei weiteren Ausführungsbeispielen kann das Selektionsfeld (Feld für den Selektionswert) ein 6-Bit-Feld umfassen, in welchem die ersten vier Bits mit dem niedrigstwertigen Bit (LSB = least significant bit, am weitesten rechts stehendem Bit) einen Operationsidentifizierer darstellen (z. B. 0001 für Skalieren, 0010 für Rauschreduktion, 0011 für automatische Farbverbesserung, 0100 für Schärfenverbesserung, 0101 für Kontrastverbesserung, 0110 für Erfassung eines Hautfarbtons, 0111 für Gesamtfarbkontrolle, und 1000 für Bildratenkonvertierung). Bei einem weiteren Ausführungsbeispiel kann das fünfte und sechste Bit den Deaktivierungs-/Aktivierungszustand oder einen Auswahlwert für die Verbesserungstechnik, die während der Verbesserungsoperation angewandt werden soll, umfassen.
-
Bei weiteren Ausführungsbeispielen kann die Leistungsmanagementlogik 160 feststellen, dass basierend auf den zur Verfügung stehenden Ressourcen zwei Verbesserungsoperationen (z. B. Skalierungs- und Hauttonerfassungsoperation) ausgeführt werden. Bei weiteren Ausführungsbeispielen kann die Leistungsmanagementlogik 160 ein Kontrollsignal generieren, welches ein erstes Selektionsfeld mit einem Wert gleich 010001 und ein zweites Selektionsfeld mit einem Wert 010110 umfasst. Bei weiteren Ausführungsbeispielen können die vier Bits (0001) angefangen vom LSB des ersten Selektionsfeldes anzeigen, dass die Skalierungsoperation auszuführen ist und das fünfte und sechste Bit (= 01) anzeigen, dass eine bilineare Interpolationstechnik genutzt werden kann, um die Skalierungsoperation auszuführen. In ähnlicher Weise kann bei einem weiteren Ausführungsbeispiel die vier Bits (0110) angefangen mit dem LSB des zweiten Selektionsfeldes anzeigen, dass die Hautfarbtondetektion ausgeführt wird und das fünfte und sechste Bit (= 01) anzeigen, dass eine Wahrscheinlichkeitsverteilung der Farbraumtechnik genutzt wird, um die Hautfarbtonoperation auszuführen.
-
Bei einem Ausführungsbeispiel kann die Leistungsmanagementlogik 160 die verfügbaren Ressourcen überwachen und die Verbesserungsoperationen Stück für Stück basierend auf dem Umfang der zur Verfügung stehenden Ressourcen wiederherstellen (wieder aktivieren). Bei einem Ausführungsbeispiel kann die Leistungsmanagementlogik 160 die Verbesserungsoperationen zum Verbessern der Darstellung der Videodaten für den Nutzer wiederherstellen.
-
Ein Ausführungsbeispiel für die Leistungsmanagementlogik 160, die die Operation der Verbesserungslogik 140 kontrollieren/steuern kann, ist in der 2 gezeigt. In einem Ausführungsbeispiel kann die Leistungsmanagementlogik 160 eine Schnittstelle 210, einen Frameschätzer 230 (Framevorhersageeinheit), eine CPU-Überwachungslogik 250, eine Wiederherstellungslogik 260 und eine Kontrolllogik 290 umfassen. Bei einem Ausführungsbeispiel kann die Leistungsüberwachungslogik unter Nutzung eines Satzes von Softwareinstruktionen implementiert sein. Bei einem anderen Ausführungsbeispiel kann die Leistungslogik 160 unter Nutzung von Mikrokontrollern implementiert sein und in noch weiteren Ausführungsbeispielen kann die Leistungsmanagementlogik 160 unter Nutzung von frei programmierbaren Feldarrays (FPGA = field programmable gate arrays) oder als eine anwendungsspezifische integrierte Schaltung (ASIC = application specific integrated circuit) oder als eine Kombination davon oder ähnlichen Ansteuerungen implementiert sein.
-
Bei einem weiteren Ausführungsbeispiel kann die Schnittstelle 210 Videobilder von der Verbesserungslogik 140 empfangen und die Videobilder für den Frameschätzer 230 bereitstellen. Bei einem weiteren Ausführungsbeispiel kann die Schnittstelle 210 ein Signal an die Kontrolllogik 290 nach dem Empfang der Videobilder senden. Bei einem weiteren Ausführungsbeispiel kann die Schnittstelle 210 Kontrollsignale der Kontrolllogik 290 empfangen und Kontrollsignale an die Verbesserungslogik 140 und/oder an die Decoderlogik 120 weiterleiten. Bei weiteren Ausführungsbeispielen kann die Schnittstelle 210 Umwandlungen beim koppeln der Leistungsmanagementlogik 160 an die Decoderlogik 120 und an die Verbesserungslogik 140 ausführen.
-
Bei weiteren Ausführungsbeispielen kann der Frameschätzer 230 Videobilder empfangen und die gegenwärtige Bildrate (CFR), die Kurzzeitbildrate (y[n]) und eine Ableitung der Kurzzeitbildrate (y'[n]) bestimmen und die Werte für die Kontrolllogik 290 bereitstellen. Bei einem Ausführungsbeispiel kann der Frameschätzer 230 die gegenwärtige Bildrate (CFR) unter Nutzung der Gleichung (1) wie folgt bestimmen: CFR = (Bildnummer des gegenwärtigen Bildes – Bildnummer des Bilder, dass vor T Sekunden empfangen wurde)/T Gleichung (1) wobei '/' die Divisionsoperation und '–' die Subtraktionsoperation darstellt Bei weiteren Ausführungsbeispielen kann der Frameschätzer 230 den kurzzeitigen Bildratendurchschnitt (y[n]) unter Nutzung der geschätzten Bildrate (x[n]) zur Zeit 'n' bestimmen. Bei einem Ausführungsbeispiel kann der Frameschätzer 230 ein Filter mit unendlicher Impulsantwort (IIR = Infinite Impulse Response) umfassen, um (y[n]) zu bestimmen. Bei einem Ausführungsbeispiel kann der Frameschätzer 230 (y[n]) unter Nutzung der Gleichung (2) wie folgt bestimmen: y[n] = 0,4 * x[n] + 0,6 * y[n – 1] Gleichung (2) wobei '*' die Multiplikationsoperation und '+' den Additionsoperator darstellt.
-
Bei einem Ausführungsbeispiel kann der Frameschätzer 230 die Ableitung des kurzzeitigen Bildratendurchschnitts unter Nutzung des kurzzeitigen Bildratendurchschnitts (y[n]) bestimmen. Bei einem Ausführungsbeispiel kann der Frameschätzer 230 eine Mittelungslogik umfassen, welche (y'[n]) unter Nutzung der Gleichung (3) wie folgt bestimmt: y'[n] = (y[n] – y[n – 1])/T Gleichung (3) wobei '/' den Divisionsoperator und '–' den Subtraktionsoperation darstellen.
-
Bei einem Ausführungsbeispiel kann die CPU-Überwachungslogik 250 die CPU überwachen und bestimmen, dass die Konfiguration basierend auf ein ,Start-Überwachung'-Signal zu verringern ist, welches von der Kontrolllogik 290 empfangen wird. Bei einem Ausführungsbeispiel kann die CPU-Überwachungslogik 250 anfangen, periodisch die CPU-Nutzung zu überwachen. Bei einem Ausführungsbeispiel kann das 'Start-Überwachung'-Signal empfangen werden, wenn die Ableitung des kurzzeitigen Bildratendurchschnitts (y'[n]) einen negativen Wert erreicht. Bei einem Ausführungsbeispiel kann die CPU-Überwachungslogik 250 ein Signalsample (a[n]) über die CPU-Nutzung empfangen und den kurzzeitigen Bildratendurchschnitt der CPU-Nutzung (s[n]) unter Nutzung des IIR-Filters, wie in der Gleichung (4) gezeigt, bestimmen: s[n] = 0,5 * a[n] + 0,5 * s[n – 1] Gleichung (4)
-
Bei einem Ausführungsbeispiel kann die CPU-Überwachungslogik 250 den Kurzzeit-CPU-Nutzungsdurchschnittswert (s[n]) für die Kontrolllogik 290 bereitstellen.
-
Bei einem Ausführungsbeispiel kann die Wiederherstellungslogik 260 nach dem Erhalt des 'Aktiviere Wiederherstellung'-Signals von der Kontrolllogik 290 aktiviert werden. Bei einem Ausführungsbeispiel kann die Wiederherstellungslogik 260 den kurzzeitigen CPU-Nutzungsdurchschnitt (s[n]) von der CPU-Überwachungslogik 250 empfangen und die zur Verfügung stehenden Ressourcen bestimmen. Bei einem Ausführungsbeispiel kann die Wiederherstellungslogik 260 das 'Wiederherstellungs-EO'-Signal erzeugen und das Wiederherstellungs-EO-Signal an die Kontrolllogik 290 senden. Bei einem Ausführungsbeispiel kann die Wiederherstellungslogik 260 den Wert von s[n] mit dem zweiten Schwellenwert vergleichen und, wenn s[n] unterhalb eines Sicherheitsabstandes von einem Schwellenwert liegt, kann die Wiederherstellungslogik 260 die 'EO-Wiederherstellung' starten. Bei einem Ausführungsbeispiel kann der EO-Teil in dem Signal die wiederherzustellende Verbesserungsoperation (EO = enhancement Operation) anzeigen. Bei einem Ausführungsbeispiel kann die Wiederherstellungslogik 260 die Verbesserungsoperationen eine nach der anderen wiederherstellen, um die Möglichkeit zu vermeiden, dass die CPU in den Sättigungszustand zurückfällt in Folge eines plötzlichen Anstieges des Ressourceverbrauchs, wenn alle oder viele Verbesserungsoperationen zur gleichen Zeit wiederhergestellt werden.
-
Bei einem Ausführungsbeispiel kann die Kontrolllogik 290 die gegenwärtige Bildrate (CFR), die Kurzzeitbildrate (y[n]) und eine Ableitung der kurzzeitigen Bildrate (y'[n]) von dem Frameschätzer 230 erhalten. Bei einem Ausführungsbeispiel kann die Kontrolllogik 290 die Ableitung des kurzzeitigen Bildratendurchschnitt (y'[n]) mit dem ersten Schwellenwert vergleichen und das 'Start-Überwachung'-Signal erzeugen. Bei einem Ausführungsbeispiel kann die Kontrolllogik 290 (y'[n]) überprüfen und kann das Start-Überwachung-Signal erzeugen, wenn der Wert von (y'[n]) negativ ist.
-
Bei einem Ausführungsbeispiel kann die Kontrolllogik 290 den Kurzzeit-CPU-Auslastungsdurchschnitt (s[n]) empfangen und ein 'Performancereduktionssignal' erzeugen, wenn der Kurzzeit-CPU-Nutzungsdurchschnitt (s[n]) einen zweiten Schwellenwert überschreitet. Bei einem Ausführungsbeispiel kann die Kontrolllogik 290 Verbesserungsoperationen bestimmen, die übersprungen werden können, und ebenso die Verbesserungsoperationen bestimmen, die durchgeführt werden können. Bei einem Ausführungsbeispiel kann die Kontrolllogik 290 die Techniken bestimmen, die zum Ausführen der ausgewählten Verbesserungsoperationen verwendet werden.
-
Bei einem Ausführungsbeispiel kann die Kontrolllogik 290 Kontrollsignale erzeugen, die Auswahlwerte umfassen und die die Kontrollsignale an die Verbesserungslogik 140 senden. Bei einem Ausführungsbeispiel kann die Kontrolllogik 290 bestimmen, alle Verbesserungsoperationen zu überspringen. Bei einem Ausführungsbeispiel kann die Kontrolllogik 290 bestimmen, dass z. B. zwei Verbesserungsoperationen wie beispielsweise die Skalierungsoperationen und die Hautfarbtonfeststellungsoperation auszuführen sind. Bei einem weiteren Ausführungsbeispiel kann die Skalierungsoperation unter Nutzung einer bilinearen Interpolation und die Hautfarbtonfeststellung unter Nutzung einer Wahrscheinlichkeitsverteilung von Farbraumtechniken ausgeführt werden. Bei einem weiteren Ausführungsbeispiel kann die Kontrolllogik 290 Kontrollsignale mit Selektionswerten, die kodiert sind, um die selektierten Verbesserungsoptionen zu identifizieren, erzeugen. Bei einem weiteren Ausführungsbeispiel kann die Kontrolllogik 290 schnell die Leistung verringern, um die verfügbaren CPU-Ressourcen anzupassen.
-
Bei einem weiteren Ausführungsbeispiel kann die Kontrolllogik 290 die Wiederherstellungslogik 260 nach dem Senden des ,Start-Überwachung'-Signals an die CPU-Überwachungslogik 250 aktivieren. Bei einem weiteren Ausführungsbeispiel kann die Kontrolllogik 250 die Wiederherstellungslogik 260 durch Senden des ,Aktiviere-Wiederherstellung'-Signal aktivieren. Bei einem weiteren Ausführungsbeispiel kann die Kontrolllogik 290 das ,EO-Wiederherstellung'-Signal von der Wiederherstellungslogik 260 empfangen und die Verbesserungslogik 140 dazu veranlassen, die Verbesserungsoperation, die durch das ,EO-Wiederherstellung'-Signal angezeigt wird, auszuführen.
-
Ein Ausführungsbeispiel für die Performancemanagementlogik 160, die die Verarbeitung von Videodaten in ressourceneingeschränkten Einheiten oder Geräten steuert, ist in 3 gezeigt.
-
Block 310: die Performancemanagementlogik 160 kann die Bilder erhalten. Bei einem Ausführungsbeispiel kann die Schnittstelle 210 ein Signal an die Kontrolllogik 290 nachdem Erhalt der Bilder senden.
-
Block 315: die Kontrolllogik 290 kann bestimmen, ob eine periodische oder ausgewählte Bildratenabschätzung zu nutzen ist und die Steuerung wird an Block 230 weitergeleitet, wenn die Bildratenabschätzung ausgeführt wird, und ansonsten an dem Block 340 weitergeleitet.
-
Block 320: der Frameschätzer 230 kann die aktuelle Bildrate (CFR) abschätzen. In einem Ausführungsbeispiel kann der Frameschätzer 230 die aktuelle Bildrate unter Nutzung der Gleichung (1), wie oben beschrieben, bestimmen.
-
Block 325: der Frameschätzer 230 kann die kurzzeitigen Bildraten (y[n]) abschätzen. Bei einem weiteren Ausführungsbeispiel kann der Frameschätzer 230 (y[n]) unter Nutzung der Gleichung (2) wie oben beschrieben, bestimmen.
-
Block 330: der Frameschätzer 230 kann die Ableitung (y'[n]) der kurzzeitigen Bildrate (y[n]) abschätzen. Bei einem weiteren Ausführungsbeispiel kann der Frameschätzer 230 die Größe (y'[n]) unter Nutzung der Gleichung (3) wie oben beschrieben, bestimmen.
-
Block 335: die Kontrolllogik 290 kann bestimmen, ob die Größe (y'[n]) kleiner ist als ein erster Schwellenwert und die Steuerung an den Block 340 weitergeben, falls (y'[n]) nicht kleiner ist als der erste Schwellenwert, und an Block 370 weitergeben, falls die Größe (y'[n]) kleiner ist als der erste Schwellenwert.
-
Block 340: die Kontrolllogik 290 kann überprüfen, ob die CPU-Überwachung aktiviert ist, und die Kontrolle an den Block 375 weitergeben, falls die CPU-Überwachung aktiviert ist, und an den Block 345 weitergeben, falls die CPU-Überwachung nicht aktiviert ist.
-
Block 345: die Kontrolllogik 290 kann überprüfen, ob die Konfiguration sich geändert hat und die Steuerung an den Block 350 weiterleiten, falls die Konfiguration geändert wurde, und ansonsten wird die Kontrolle zurückgeben. Bei einem weiteren Ausführungsbeispiel kann die Kontrolllogik 290 das ,Aktiviere-Wiederherstellung'-Signal an die Wiederherstellungslogik 260 in Antwort auf die Feststellung senden, dass die Konfiguration sich änderte.
-
Block 350: die Wiederherstellungslogik 260 kann überprüfen, ob die Ressourcen zur Verfügung stehen, und zwar in Antwort auf das Erhalten des ,Aktiviere-Wiederherstellung'-Signal, und die Steuerung an den Block 355 weitergeben, wenn die Ressourcen verfügbar sind und die Steuerung zurückgeben in den anderen Fällen.
-
Block 355: die Wiederherstellungslogik 260 kann überprüfen, ob die Wiederherstellungswartezeit abgelaufen ist, und die Steuerung an den Block 360 weitergeben, wenn die Wiederherstellungszeit abgelaufen ist und ansonsten die Steuerung zurückgeben.
-
Block 360: die Kontrolllogik 260 kann eine erste Verbesserungsoperation wiederherstellen und einen Wartezeitgeber für eine zweite Verbesserungsoperation setzen. Bei einem weiteren Ausführungsbeispiel kann die Kontrolllogik 290 die Verbesserungsoperation eine nach der anderen in Antwort auf das Erhalten des ,EO-Wiederherstellung'-Signals von der Wiederherstellungslogik 260 wiederherstellen.
-
Block 370: die CPU-Überwachungslogik 250 kann beim Erhalten des ,Aktiviere-Wiederherstellung'-Signals von der Kontrolllogik 290 aktiviert werden.
-
Block 375: die CPU-Überwachungslogik 250 kann den kurzzeitigen Durchschnittswert der CPU-Nutzung (s[n]) unter Nutzung der Gleichung (4) bestimmen und kann den CPU-Nutzungsdurchschnittswert an die Kontrolllogik 290 senden.
-
Block 380: die Kontrolllogik 290 kann überprüfen, ob die Größe s[n] oberhalb des zweiten Schwellenwertes ist, und die Steuerung an den Block 385 weitergeben, wenn die Größe s[n] oberhalb des zweiten Schwellenwertes ist, und ansonsten an den Block 390 weitergegeben.
-
Block 385: die Kontrolllogik 290 kann bewirken, dass die Performance der Videoverarbeitung reduziert wird. Bei einem weiteren Ausführungsbeispiel kann die Kontrolllogik 290 bewirken, dass alle oder viele der Verbesserungsoperationen übersprungen werden, und kann ebenso bewirken, dass die Technik ausgewählt wird, die weniger Ressourcen verbraucht.
-
Block 390: die Kontrolllogik 290 kann bestimmen, ob die CPU-Überwachung fortgesetzt wird und ob die Steuerung an die CPU-Überwachung zurückgegeben wird, wenn die CPU-Überwachung fortzuführen ist, und ansonsten an den Block 395 weitergegeben wird.
-
Block 395: die Kontrolllogik 290 kann die CPU-Überwachung deaktivieren.
-
Wie in der 4 gezeigt, weist ein Computersystem 400 einen Standardprozessor 402 auf, der einen SIMD(single instruction multiple data)-Prozessor und eine grafische Verarbeitungseinheit (GPU) 405 umfasst. Der Prozessor 402 kann in einem Ausführungsbeispiel die Verbesserungsoperationen zusätzlich zu verschiedenen anderen Aufgaben ausführen oder eine Sequenz von Instruktionen speichern, um Verbesserungsoperationen in einem Maschinenlesbaren Speicher 425 bereitzustellen. Die Sequenz von Befehlen kann jedoch ebenfalls in dem Speicher 420 oder in jedem anderen geeigneten Speichermedium gespeichert werden.
-
Während in der 4 eine separate grafische Verarbeitungseinheit 405 gezeigt ist, kann in weiteren Ausführungsbeispielen eine grafische Verarbeitungseinheit 405 zum Ausführen der Verbesserungsoperation als ein weiteres Beispiel genutzt werden. Der Prozessor 402, der das Computersystem 400 betreibt, kann ein Einkern- oder Mehrkernprozessor sein, der an die Logik 430 koppelt. Die Logik 430 kann an eine oder mehrere I/O-Geräte 460 gekoppelt sein, die eine Schnittstelle zu dem Computersystem 400 bereitstellen. Die Logik 430 kann beispielsweise in einem Ausführungsbeispiel eine Chipsatz-Logik sein. Die Logik 430 koppelt an den Speicher 420, der jede Art von Speicher umfassen kann, einschließlich optischen, magnetischen oder einen Halbleiterspeicher. Die grafische Verarbeitungseinheit 405 ist über einen Bildpuffer an eine Anzeige/Display 440 gekoppelt.
-
In einem Ausführungsbeispiel kann die Videoverarbeitungslogik VPL 410 mit der Logik 430 ausgestattet sein. Bei einem weiteren Ausführungsbeispiel kann die VPL 410 den CPU-Nutzungszustand überwachen, wenn die VPL 410 einen CPU-Sättigungszustand vermutet. Bei einem weiteren Ausführungsbeispiel kann die VPL 410 periodisch die Ableitung des kurzzeitigen Bildratendurchschnittswertes (y'[n]) bestimmen. Bei einem weiteren Ausführungsbeispiel kann die VPL 410 die Überwachung der CPU-Nutzung aktivieren, wenn die Größe (y'[n]) geringer als ein erster Schwellenwert ist. Bei einem weiteren Ausführungsbeispiel kann die VPL 410 die Videoleistung verringern, wenn der Kurzzeit-Durchschnittswert der CPU-Nutzung s[n] oberhalb des zweiten Schwellenwertes liegt.
-
Bei einem weiteren Ausführungsbeispiel kann die VPL 410 die verfügbaren Ressourcen überwachen und kann die Verbesserungsoperationen Stück für Stück wiederherstellen, basierend auf dem Umfang der zur Verfügung stehenden Ressourcen. Bei einem weiteren Ausführungsbeispiel kann die VPL 410 die Verbesserungsoperationen wiederherstellen, um die Darstellung der Videodaten für einen Nutzer zu verbessern.
-
Die Video/Bildverarbeitungstechniken, die hierin beschrieben sind, können in unterschiedlichen Hardwarearchitekturen implementiert sein. Zum Beispiel können grafische Funktionalitäten innerhalb eines Chipsatzes integriert sein. Alternativ können ebenfalls diskrete grafische Prozessoren benutzt werden. Als ein weiteres Ausführungsbeispiel können die grafischen Funktionen durch einen Standardprozessor implementiert werden, einschließlich eines Multikernprozessors oder als ein Satz von Softwareinstruktionen, die auf einem maschinenlesbaren Medium gespeichert sind.