-
QUERVERWEIS ZU VERWANDTEN ANMELDUNGEN
-
Ein Anspruch nach
35 U.S.C. § 119(a) auf die
koreanische Patentanmeldung Nr. 10-2015-0028566 wird erhoben, die am 27. Februar 2015 eingereicht wurde, deren Inhalt hiermit durch Bezug hierin aufgenommen wird.
-
STAND DER TECHNIK
-
Beispielhafte Ausführungsformen der erfinderischen Konzepte betreffen einen Multimedia-Codec, und insbesondere einen Multimedia-Codec zum effizienten Kodieren eines Standbildes, einen Anwendungsprozessor, der die diesen umfasst, und ein Verfahren zum Betreiben des Anwendungsprozessors.
-
Internationale Standardisierung von Videocodierung wurde von der Moving-Picture-Experts-Group (MPEG) unter der International-Organization-for-Standardization/International-Electrotechnical-Commission (ISO/IEC) und der Video-Coding-Experts-Group (VCEG) in dem International-Telecommunications-Union-Telecommunication-Standardization-Sector (ITU-T) geführt. MPEG und VCEG organisierten ein Joint-Video-Team (JVT) und absolvierten den internationalen Videocodierungsstandard, d. h. H.264/Advanced-Video-Coding (AVC). Im Gegensatz zu bestehenden Video-Codecs, wie beispielsweise MPEG-2, MPEG-4, H.261 und H.263; hat H.264/ACV variable Blockgrößen-Bewegungsabschätzung, 1/4-Pixel-Bewegungsvektor-Auflösung, mehrere Referenzbild-Bewegungsabschätzung, und so weiter eingeführt, wodurch eine ausgezeichnete Kompressionsfähigkeit im Vergleich zu existierenden Codecs bereitgestellt wird.
-
Viele neu entwickelte Smartphones haben eine Serienbildfunktion und zeigen kontinuierliche Bildaufnahmen in gewünschten (und/oder alternativ vorbestimmten) Intervallen für einen Benutzer an, wenn der Benutzer Serienaufnahme wählt. Die Standbilder müssen zwischengespeichert werden, bis der Benutzer eines der Standbilder wählt, die angezeigt wurden. Wenn die Standbilder zwischengespeichert werden, kann ein Smartphone ein JPEG-Bildkompressionsverfahren mit nur Intraframe-Kompression verwenden. Jedoch ist die Größe eines Bildes, das durch das JPEG-Bildkompressionsverfahren komprimiert wurde groß, was dadurch die Speicherkosten erhöht
-
Um dieses Problem zu überwinden, kann Intraframe-Kompression für ein erstes Standbild und Inter-Frame-Kompression für die nachfolgenden Standbilder verwendet werden. Ein solches Bildkompressionsverfahren erhöht die Kompressionsrate im Vergleich zu der JPEG-Bildkompressionsverfahren, aber macht es schwierig, einen wahlfreien Zugriff mit Bezug auf einen bestimmten Frame unter den Standbildern durchzuführen.
-
ZUSAMMENFASSUNG
-
In einer beispielhaften Ausführungsform umfasst ein Multimedia-Codec einen Leser, der konfiguriert ist zum Lesen eines ersten Frames in einer Bild-Gruppe gemäß einem Feld-Modus, der durch ein Modus-Auswahlsignal angezeigt wird, und zum Erzeugen eines oberen Feldes und eines unteren Feldes für den ersten Frame. Der Multimedia-Codec umfasst des Weiteren eine Codierungs-Komponente, die konfiguriert ist zum Codieren des oberen Feldes in einem Intra-Modus und zum Codieren des unteren Feldes in einem Inter-Modus.
-
In einer weiteren beispielhaften Ausführungsform umfasst der Multimedia-Codec des Weiteren eine Decodierungs-Komponente die konfiguriert ist zum Decodieren des ersten Frames durch Decodierung des oberen Feldes in dem Intra-Modus, und durch Decodierung des unteren Feldes in dem Inter-Modus.
-
In noch einer weiteren beispielhaften Ausführungsform ist die Codierungs-Komponente konfiguriert zum Codieren einer Vielzahl von Frames der Bild-Gruppe, wobei die Vielzahl von Frames den ersten Frame umfassen, und die Decodierungs-Komponente konfiguriert ist zum Decodieren eines der Vielzahl von codierten Frames, wobei der eine der Vielzahl von codierten Frames einem Frame der Bild-Gruppe entspricht, die zur Anzeige ausgewählt wird.
-
In einer weiteren beispielhaften Ausführungsform ist die Codierungs-Komponente ein H.264-Codierer und die Decodierungs-Komponente ein H.264-Decodierer.
-
In noch einer weiteren beispielhaften Ausführungsform ist das obere Feld eine Gruppe von Pixeln in ungeradzahligen Zeilen in einem Frame und das untere Feld ist eine Gruppe von Pixeln in geradzahligen Zeilen in dem Frame.
-
In noch einer weiteren beispielhaften Ausführungsform wird die Bild-Gruppe, die wenigstens zwei kontinuierliche Frames umfasst, in einem Burst-Aufnahmemodus erzeugt.
-
in noch einer weiteren beispielhaften Ausführungsform operiert ein Codierer, der den Leser und die Codierungs-Komponente umfasst in einem des Feld-Modus und einem Frame-Modus, gemäß dem Modus-Auswahlsignal.
-
In einer beispielhaften Ausführungsform umfasst ein Anwendungsprozessor einen Speicher, der konfiguriert ist zum Speichern einer Bild-Gruppe, die wenigstens zwei Frames umfasst, eine zentrale Verarbeitungseinheit (CPU), die konfiguriert ist zum Erzeugen eines Modus-Auswahlsignals zum Bestimmen eines Codierungs-Modus, in dem die Bild-Gruppe codiert werden soll, und einen Multimedia-Codec, der konfiguriert ist zum Codieren der Bild-Gruppe gemäß einem Feld-Modus, der durch das erzeugte Modus-Auswahlsignal angezeigt wird. Der Multimedia-Codec umfasst einen Leser, der konfiguriert ist zum Lesen von jedem der wenigstens zwei Frames, gemäß dem Feld-Modus, um ein oberes Feld und ein unteres Feld zu erzeugen, und eine Codierungs-Komponente, die konfiguriert ist zum Codieren des oberen Feldes in einem Intra-Modus und zum Codieren des unteren Feldes in einem Inter-Modus
-
In noch einer weiteren beispielhaften Ausführungsform umfasst der Multimedia-Codec eine Decodierungs-Komponente, die konfiguriert ist zum Decodieren eines Frames, der durch einen Benutzer aus den wenigstens zwei Frames ausgewählt wird.
-
In noch einer weiteren beispielhaften Ausführungsform ist die Decodierungs-Komponente konfiguriert ist zum Decodieren des ausgewählten Frames durch Decodieren des oberen Feldes des ausgewählten Frames gemäß dem Intra-Modus und des unteren Feldes des ausgewählten Frames gemäß dem Inter-Modus.
-
In noch einer weiteren beispielhaften Ausführungsform ist ein Encoder, der den Leser und die Codierungs-Komponente umfasst, ein H.264-Codierer, und der Decoder ein H.264-Decodierer.
-
In noch einer weiteren beispielhaften Ausführungsform ist das obere Feld eine Gruppe von Pixeln in ungeradzahligen Zeilen in jedem der wenigstens zwei Frames und des untere Feld ist eine Gruppe von Pixeln in geradzahligen Zeilen in jedem der wenigstens zwei Frames.
-
In noch einer weiteren beispielhaften Ausführungsform sind die wenigstens zwei Frames der Bild-Gruppe kontinuierliche Frames, die in einem Burst-Aufnahmemodus erzeugt wurden.
-
In noch einer weiteren beispielhaften Ausführungsform umfasst der Codierungs-Modus den Feld-Modus und einen Frame-Modus.
-
In einer beispielhaften Ausführungsform umfasst das Verfahren zum Betreiben eines Anwendungsprozessors Speichern einer Bild-Gruppe, die wenigstens zwei Frames umfasst, in einem Speicher und Lesen von jedem der wenigstens zwei Frames gemäß einem Feld-Modus, der durch ein Modus-Auswahlsignal angezeigt wird. Das Verfahren umfasst des Weiteren Erzeugen eines oberen Feldes und eines unteren Feldes für jeden der wenigstens zwei Frames, und Codieren des oberen Feldes in einem Intra-Modus und des unteren Feldes in einem Inter-Modus.
-
In noch einer weiteren beispielhaften Ausführungsform umfasst das Verfahren des Weiteren Decodieren eines Frames, der durch einen Benutzer aus den wenigstens zwei Frames ausgewählt wird.
-
In noch einer weiteren beispielhaften Ausführungsform decotiert die Decodierung den ausgewählten Frame durch Decodieren des oberen Feldes des ausgewählten Frames gemäß dem Intra-Modus und des unteren Feldes des ausgewählten Frames gemäß dem Inter-Modus.
-
In noch einer weiteren beispielhaften Ausführungsform werden die Codierung und die Decodierung jeweils über einen H.264-Codierer und einen H.264-Decodierer ausgeführt.
-
In noch einer weiteren beispielhaften Ausführungsform ist das obere Feld eine Gruppe von Pixeln in ungeradzahligen Zeilen in jedem der wenigstens zwei Frames und das untere Feld ist eine Gruppe von Pixeln in geradzahligen Zeilen in jedem der wenigstens zwei Frames.
-
In noch einer weiteren beispielhaften Ausführungsform sind die wenigstens zwei Frames der Bild-Gruppe kontinuierliche Frames, die in einem Burst-Aufnahmemodus erzeugt wurden.
-
In noch einer weiteren beispielhaften Ausführungsform wird die Codierung in einem des Feld-Modus und einem Frame-Modus ausgeführt, gemäß dem Modus-Auswahlsignal.
-
In einer beispielhaften Ausführungsform umfasst eine Vorrichtung einen Speicher mit computerlesbaren Anweisungen, die darin gespeichert sind, und einen Prozessor. Der Prozessor ist konfiguriert zum Ausführen der computerlesbaren Anweisungen zum Partitionieren von wenigstens einem ausgewählten Bild-Frame, der aus einer Vielzahl von Bild-Frames in eine erste Gruppe und eine zweite Gruppe ausgewählt wird, nachdem ein Modus-Auswahlsignal empfangen wird, Codieren der ersten Gruppe gemäß einem Intra-Modus der Codierung, und Codieren der zweiten Gruppe gemäß einem Inter-Modus der Codierung.
-
In noch einer weiteren beispielhaften Ausführungsform ist das Modus-Auswahlsignal ein Feld-Modus-Auswahlsignal und der Prozessor ist konfiguriert zum Ausführen der computerlesbaren Anweisungen zum Lesen des ausgewählten Bild-Frames gemäß dem Feld-Modus-Auswahlsignal, um den ausgewählten Bild-Frame in der ersten Gruppe und der zweiten Gruppe zu unterteilen.
-
In noch einer weiteren beispielhaften Ausführungsform ist die erste Gruppe ein oberes Feld einschließlich Pixeln, die ungeradzahligen Zeilen des ausgewählten Bild-Frames entsprechen, und die zweite Gruppe ein unteres Feld einschließlich Pixeln, die geradzahligen Zeilen des ausgewählten Bild-Frames entsprechen.
-
In noch einer weiteren beispielhaften Ausführungsform ist der Prozessor weiter konfiguriert zum Ausführen der computerlesbaren Anweisungen zum Auswählen aus einer Vielzahl von Intra-Codierungs-Schemata des Intra-Modus der Codierung.
-
In noch einer weiteren beispielhaften Ausführungsform ist der Prozessor des Weiteren konfiguriert zum Ausführen der computerlesbaren Anweisungen zum Bestimmen einer Aufwands-Funktion, die mit jeder der Vielzahl von Intra-Codierungs-Schemata verknüpft ist, und zum Auswählen als den Intra-Modus der Codierung einer der Vielzahl von Intra-Codierurgs-Schemata mit einer niedrigsten Aufwands-Funktion unter den bestimmten Aufwands-Funktionen.
-
In noch einer weiteren beispielhaften Ausführungsform ist der Prozessor weiter konfiguriert zum Ausführen der computerlesbaren Anweisungen zum Auswählen aus einer Vielzahl von Intra-Codierungs-Schemata des Inter-Modus der Codierung.
-
In noch einer weiteren beispielhaften Ausführungsform ist der Prozessor des Weiteren konfiguriert zum Ausführen der computerlesbaren Anweisungen zum Bestimmen einer Aufwands-Funktion, die mit jeder der Vielzahl von Intra-Codierungs-Schemata verknüpft ist, und zum Auswählen als den Inter-Modus der Codierung einer der Vielzahl von Intra-Codierungs-Schemata mit einer niedrigsten Aufwands-Funktion unter den bestimmten Aufwands-Funktionen.
-
In noch einer anderen beispielhaften Ausführungsform ist der Prozessor des Weiteren konfiguriert zum Ausführen der computerlesbaren Anweisungen zum Empfangen einer Anfrage zum Anzeigen einer der Vielzahl von Bild-Frames und zum Decodieren des angefragten einen der Vielzahl von Bild-Frames durch Decodieren der codierten ersten Gruppe des angefragten einen aus der Vielzahl von Bild-Frames gemäß einem Intra-Modus der Decodierung, wobei der Intra-Modus der Decodierung des Intra-Modus der Codierung entspricht, und durch Decodieren der codierten zweiten Gruppe des angefragten einen aus der Vielzahl von Bild-Frames gemäß einem Inter-Modus der Decodierung, wobei der Inter-Modus der Decodierung des Intra-Modus der Codierung entspricht.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die obigen und andere Merkmale und Vorteile der erfinderischen Ideen werden klarer durch die ausführliche Beschreibung von beispielhaften Ausführungsformen davon, mit Bezug auf die angehängten Zeichnungen, in denen folgendes gilt:
-
1 ist ein Blockdiagramm eines Datenverarbeitungssystems, gemäß einer beispielhaften Ausführungsform;
-
2 ist ein Blockdiagramm eines Codierers des Codecs aus 1, entsprechend einer beispielhaften Ausführungsform;
-
3 ist ein detailliertes Blockdiagramm eines Codierungsmoduls aus 2, gemäß einer beispielhaften Ausführungsform;
-
4 ist ein Diagramm zum Erklären einer Prozedur, in der eine Standbild-Gruppe gelesen und durch einen Codierer codiert wird, der in 2 veranschaulicht ist, gemäß einer beispielhaften Ausführungsform;
-
5 ist ein Diagramm zum Erläutern der Decodierung, die durch einen Dekodierer aus 1 ausgeführt wird, gemäß einer beispielhaften Ausführungsform;
-
6 ist ein Blockdiagramm eines Codierers aus 1, entsprechend einer beispielhaften Ausführungsform;
-
7 ist ein Blockdiagramm eines Decodierers aus 1, entsprechend einer beispielhaften Ausführungsform;
-
8 ist ein Flussdiagramm eines Verfahrens zum Betreiben eines Anwendungsprozessors aus 1 gemäß einer beispielhaften Ausführungsform;
-
9 ist ein Blockdiagramm eines Datenverarbeitungssystems, gemäß einer beispielhaften Ausführungsform;
-
10 ist ein Flussdiagramm eines Datenverarbeitungsverfahrens, gemäß einer beispielhaften Ausführungsform;
-
11 ist ein Flussdiagramm eines Datendecodierungsverfahrens, gemäß einer beispielhaften Ausführungsform; und
-
12 ist ein Blockdiagramm eines Datenverarbeitungssystems, gemäß einer beispielhaften Ausführungsform.
-
AUSFÜHRLICHE BESCHREIBUNG DER BEISPIELHAFTEN AUSFÜHRUNGSFORMEN
-
Die erfinderischen Ideen werden nun ausführlicher mit Bezug auf die begleitenden Zeichnungen erklärt, in denen Ausführungsformen der erfinderischen Ideen gezeigt werden. Diese Erfindung kann jedoch durch vielerlei verschiedene Formen verkörpert werden und sollte nicht als beschränkend, auf die beispielhaften Ausführungsformen, die im Folgenden kommen, ausgelegt werden. Vielmehr werden diese beispielhaften Ausführungsformen geliefert, so dass diese Offenbarung sorgfältig und vollständig sein wird, und dass Konzept der beispielhaften Ausführungsformen vollständig an den Fachmann vermittelt wird IIn den Zeichnungen sind die Größe und die relativen Größen der Schichten und Bereiche zur Klarheit übertrieben dargestellt. Gleiche Bezugszeichen beziehen sich durchgehend auf gleiche Elemente.
-
Es versteht sich, dass wenn ein Element als ”verbunden mit”, oder ”befestigt mit” einem anderen Element bezeichnet wird, so kann es direkt verbunden oder befestigt mit dem anderen Element, oder es können dazwischenliegende Elemente vorhanden sein. Wenn im Gegensatz dazu ein Element als ”direkt verbunden mit” oder ”direkt befestigt mit” einem anderen Element bezeichnet wird, so sind keine dazwischenliegenden Elemente vorhanden. Der hierin benutzte Begriff ”und/oder” beinhaltet jede Kombination von einem oder mehreren der dazugehörigen, aufgelisteten Gegenstände und kann durch ”/” verkürzt werden.
-
Es versteht sich, dass auch wenn die Begriffe erste(r), zweite(r), usw. hierin benutzt werden können, um verschiedene Elemente zu beschreiben, diese Elemente nicht auf diese Begriffe eingeschränkt werden. Diese Begriffe werden benutzt um ein Element von einem anderen zu unterscheiden. Zum Beispiel könnte ein erstes Signal als ein zweites Signal bezeichnet werden, und, in ähnlicher Weise könnte ein zweites Signal als ein erstes Signal bezeichnet werden, ohne von dem Umfang der beispielhaften Ausführungsformen abzuweichen.
-
Das hierin benutzte Fachvokabular hat nur den Zweck bestimmte Ausführungsformen zu beschreiben und es nicht dazu gedacht, die beispielhaften Ideen einzuschränken. Die hierin benutzten Singularformen ”ein(e)” und ”der/die/das”, sind so gemeint, dass sie ebenso die Pluralformen beinhalten, es sei denn, der Kontext deutet dies eindeutig nicht an. Es versteht sich weiterhin, dass die Begriffe „umfasst”, „umfassend”, „beinhaltet” und/oder „beinhaltend”, wenn sie in dieser Beschreibung benutzt werden, die Anwesenheit von genannten Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, und/oder Komponenten angeben, jedoch nicht die Anwesenheit oder Ergänzung von weiteren, einem oder mehreren anderen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten, und/oder daraus bestehenden Gruppen ausschließt.
-
Wenn nicht anders festgelegt, so haben alle hierin benutzten Begriffe (einschließlich technische und wissenschaftliche Begriffe) die selbe Bedeutung, wie sie von einem Fachmann auf dem Gebiet der Technik, zu welchem die beispielhaften Ausführungsformen gehören, verstanden werden. Es versteht sich weiterhin, dass Begriffe, wie zum Beispiel solche, die in allgemein benutzten Wörterbüchern festgelegt werden, so verstanden werden, dass sie eine Bedeutung haben, welche konsistent ist mit ihrer Bedeutung im Zusammenhang der relevanten Technik und/oder der zu Grunde liegenden Beschreibung, und sollte nicht in einer idealisierten oder übermäßig formalen Art interpretiert werden, es sei denn, dies ist hierin ausdrücklich so festgelegt.
-
In den beispielhaften Ausführungsformen, die im Folgenden beschrieben werden beziehen sich Begriffe wie ”Codec”, ”Codierer”, ”Decoder”, ”Codierungseinheit”, ”Decodierungseinheit”, ”Codierungs-Komponente”, ”Decodierungs-Komponente” usw. auf physikalische/Hardware-Strukturen und/oder Spezialprozessoren beziehen, die konfiguriert sind zum Durchführen jeweiliger Funktionalitäten, indem eine Reihe von computerlesbaren Anweisungen ausgeführt werden.
-
1 ist ein Blockdiagramm eines Datenverarbeitungssystems gemäß einer beispielhaften Ausführungsform. Das Datenverarbeitungssystem 10 kann als ein mobiles Endgerät, wie ein Smartphone, ein Tablet-Personal-Computer (PC), ein persönlicher digitaler Assistent (PDA), ein Unternehmens-Digitaler-Assistant (EDA), ein mobiles Internet-Gerät (MID), ein Video-Camcorder, oder ein E-Book implementiert sein. Das Datenverarbeitungssystem 20 kann einen Anwendungsprozessor 100, eine Kamera 155, eine Anzeigevorrichtung 165 und einen Speicher 175 umfassen.
-
Der Anwendungsprozessor 100 kann eine zentrale Verarbeitungseinheit (CPU) 110 umfassen, einen Nur-Lesespeicher (ROM) 120 umfassen, einen Direktzugriffsspeicher (RAM) 130 umfassen, einem Bildprozessor 135 umfassen, einen Codec 440 umfassen, eine Kamera-Schnittstelle 150 umfassen, eine Anzeigeschnittstelle 160 und eine Speicherschnittstelle 170 umfassen. Der Anwendungsprozessor 100 kann als ein System-on-Chip (SoC) implementiert sein. Die Elemente 110, 120, 130, 135, 140, 150, 160 und 170 des Anwendungsprozessors 100 können Daten untereinander über einen Bus 105 kommunizieren.
-
Die CPU 110 kann den gesamten Betrieb des Anwendungsprozessors 100 steuern. Zum Beispiel kann die CPU 110 kann Computerprogramme (oder computerlesbare Befehle) ausführen, die im ROM 120 und/oder dem RAM 130 gespeichert sind. Die Ausführung der Computerprogramme durch die CPU 110 wandelt die CPU 110 in einem Spezialprozessor zum Durchführen der unten beschriebenen Funktionalitäten um.
-
Die CPU 110 kann eine einzelne Rechenkomponente, d. h. ein Multi-Kern-Prozessor mit zwei oder mehr unabhängigen tatsächlichen Prozessoren (oder Kernen) sein.
-
Der ROM 120 kann permanent Programme und/oder Daten speichern. Der ROM 120 kann als löschbarer programmierbarer ROM (EPROM) oder elektrisch löschbarer programmierbarer ROM (EEPROM) implementiert werden.
-
Der RAM 130 kann die Programme, Daten und/oder Anweisungen temporär speichern. Der RAM 130 kann als dynamischer RAM (DRAM) oder statischer RAM (SRAM) implementiert sein. Der RAM 130 kann Daten temporär speichern, die durch die Schnittstellen 150, 160 und 170 durch den Codec 140 oder die CPU 210 eingeben/ausgegeben werden.
-
Der Bildprozessor 135 kann Bildverarbeitung auf den Daten ausführunen, die empfangen werden von dem RAM 130, der Kameraschnittstelle 150, der Speicherschnittstelle 170, und kann die verarbeiteten Daten an den RAM 130, die Anzeigeschnittstelle 160, oder die Speicherschnittstelle 170 ausgeben.
-
Der Codec (oder Multimedia-Codec) 140 Daten codieren und/oder decodieren, die in dem Speicher 120 oder 130 gespeichert sind, Daten, die von der Kamera 155 empfangen werden, oder die Daten, die ausgegeben werden an die Anzeigevorrichtung 165. Der Codec 140 kann einen Codierer 200 und einen Decodierer 400 enthalten. Der Codierer 200 und der Decodierer 400 können ein H.264-Codierer und einen H.264-Decodierer sein, die den H.264-Standard erfüllen.
-
Obwohl der Codec 140 ist außerhalb der CPU 110, der Kameraschnittstelle 150 und/oder der Anzeigeschnittstelle 160 in den Ausführungsformen aus 1 gebildet ist, kann der Codec 140 in der CPU 110, der Kameraschnittstelle 150 und/oder der Anzeigeschnittstelle 160 enthalten sein. Es wird nicht so verstanden, dass der Schutzumfang der erfinderischen Konzepte durch die Anordnung des Codecs 140 begrenzt wird. Der Codec 140 kann eine Reihe von computerlesbaren Anweisungen sein, die von der CPU 110 ausgeführt werden, um die Codierung und/oder Decodierung durchzuführen, wie unten beschrieben. Weiterhin kann der Codec 140 in Hardware ausgebildet werden, oder einer Kombination aus Hardware und Software.
-
Die Kameraschnittstelle 150 kann an Daten (beispielsweise Bilddaten) ankoppeln, die von der Kamera 155 in der Außenseite des Anwendungsprozessors 100 eingegeben werden. Die Kamera 155 kann Daten entsprechend eines Bildes erzeugen, das mit einer Vielzahl von lichtempfindlichen Elementen aufgenommen wird.
-
Die Anzeigeschnittstelle 160 kann an Daten (beispielsweise Bilddaten) ankoppeln, die an die Anzeigevorrichtung 165 in der Außenseite des Anwendungsprozessors 100 ausgegeben wird. Die Anzeigevorrichtung 165 kann Bild- oder Videodaten unter Verwendung einer Flüssigkristallanzeige (LCD) oder einer aktiven Matrix mit organischen Leuchtdioden (AMOLED) ausgeben.
-
Die Speicherschnittstelle 170 kann Daten koppeln, die von dem Speicher 175 in der Außenseite des Anwendungsprozessors 100 eingegeben werden, oder Daten, die zu dem Speicher 175 ausgegeben wird. Der Speicher 175 kann als nicht-flüchtiger Speicher gebildet werden, wie etwa Flash-Speicher oder Widerstandsspeicher.
-
2 ist ein Blockdiagramm eines Codierers des Codecs aus 1, entsprechend einer beispielhaften Ausführungsform. In Bezug auf 1 und 2 kann eine beispielhafte Ausführungsform des Codierers 200 aus 1, der als Codierer 200a in 2 gezeigt ist, eine Quellen-Leseeinheit 250, einen Bildtyp-Bestimmungsblock 270 und ein Codierungsmodul 300 umfassen. Während beispielhafte Ausführungsformen nachfolgend als von einzelnen Komponenten des Codierers 200a durchgeführt gezeigt werden, kann in einer beispielhaften Ausführungsform die CPU 110 computerlesbare Anweisungen ausführen, um die Funktionalitäten der einzelnen Komponenten des Codierers 200a auszuführen.
-
Die Quellen-Leseeinheit 250 kann Bilddaten ID aus dem RAM 130 entsprechend der Steuerung der CPU 110 auslesen. Mit anderen Worten kann die CPU 110 die Quellen-Leseeinheit 250 steuern, um Daten, die in dem RAM 130 zwischengespeichert sind zu lesen, so dass die Daten codiert werden. Die Quellen-Leseeinheit 250 kann die Bilddaten ID gemäß einem Codierungs-Modus lesen, der durch ein Modus-Auswahlsignal MS bestimmt wird, das von der CPU 110 erzeugt wird.
-
Die Codierungs-Modus kann einen Frame-Modus und ein Feld-Modus umfassen. Der Frame-Modus ist ein Modus, in dem Daten, die in dem RAM 130 gespeichert sind, Frame nach Frame gelesen und codiert werden. Der Feld-Modus ist ein Modus, in dem Daten, die in dem RAM 130 gespeichert sind, Feld nach Feld gelesen und codiert werden. Hier umfasst ein Feld ein oberes und ein unteres Feld. Das obere Feld ist eine Gruppe von Pixeln in ungeradzahligen Zeilen in einem Frame und das untere Feld ist eine Gruppe von Pixeln in geradzahligen Zeilen in dem Frame.
-
In einer beispielhaften Ausführungsform, wenn angenommen wird, dass der RAM 130 erste bis n-ten Rahmen (wobei ”n” eine ganze Zahl von mindestens 2 ist) zwischenspeichert, die von der Kamera 155 erzeugt werden, liest die Quellen-Leseeinheit 250 sequentiell den ersten bis n-ten Frame in dem Frame-Modus. In dem Feld-Modus liest die Quellen-Leseeinheit 250 sequentiell den ersten bis n-ten Frame Feld für Feld. Zum Beispiel liest die Quellen-Leseeinheit 250 das obere Feld des ersten Frames, und liest dann das untere Feld des ersten Frames. Danach liest die Quellen-Leseeinheit 250 das obere Feld des zweiten Frames, und liest dann das untere Feld des zweiten Frames. Das gleiche kann für die verbleibende Anzahl von Frames wiederholt werden.
-
Einem Benutzer kann erlaubt werden, verschiedene Aufnahmemodi zu verwenden, die durch eine Kamera-Anwendung zur Verfügung gestellt wird, die von der CPU 110 ausgeführt wird. Die Aufnahmemodi können weitgehend in einem Foto-Aufnahmemodus und einen Video-Aufnahmemodus unterteilt werden. Der Foto-Aufnahmemodus umfasst einen normalen Modus, in welchem ??ein einzelner Frame jedes Mal aufgenommen wird, wenn ein Benutzer eine Auslöse-Taste drückt und umfasst einen Burst-Aufnahmemodus, in dem eine gewünschte (und/oder alternativ eine vorbestimmte) Anzahl von Frames kontinuierlich aufgenommen werden, sobald der Benutzer die Auslöse-Taste drückt.
-
Wenn der Benutzer den Foto-Aufnahmemodus mit Hilfe der Kamera-Anwendung wählt und die Auslöse-Taste drückt, wird mindestens ein Standbild von der Kamera 155 aufgenommen. Das aufgenommene Standbild wird in dem RAM 130 zwischengespeichert und dann an den Codec 140 übertragen, gemäß der Steuerung der CPU 110, um codiert zu werden. Wenn wenigstens ein Standbild in dem Foto-Aufnahmemodus aufgenommen wird, kann die CPU 110 das Modus-Auswahlsignal MS, welches anzeigt, dass der Codierungs-Modus der Feld-Modus ist, an die Quellen-Leseeinheit 250 übertragen.
-
Im Folgenden wird der Einfachheit halber in der Beschreibung angenommen, dass eine Standbild-Gruppe von kontinuierlichen Frames (d. h. der erste bis n-te Frame), die erzeugt werden, wenn ein Benutzer ein Bild in dem Burst-Aufnahmemodus aufnimmt, in dem RAM 130 in den beispielhaften Ausführungsformen der erfinderischen Konzepte zwischengespeichert wird.
-
Die Quellen-Leseeinheit 250 kann das obere Feld und das untere Feld von jedem des ersten bis n-ten Frames in Reaktion auf das Modus-Auswahlsignal MS auslesen, das den Feld-Modus anzeigt. Obere Felder und untere Felder, die in den Bilddaten enthalten sind, können jeweils als Feldbild bezeichnet werden. Die Quellen-Leseeinheit 250 kann, als Codierungsdaten ED die Felder des ersten bis n-ten Frames in der Reihenfolge ausgeben, in der die Felder gelesen wurden.
-
Der Bildtyp-Bestimmungsblock 270 kann die Bilddaten ID empfangen und kann ein Bildtyp jedes Feldbildes in den Bilddaten ID bestimmen. Der Bildtyp ist eine Art von Bild gemäß dem jeder Frame in einer anderen Weise von dem Codierungsmodul 300 codiert wird. Der Bildtyp kann in ein Intra-(I-)Bild, ein Predict-(P-)Bild oder ein Bidirektional-(B-)Bild unterteilt werden.
-
Das I-Bild ist ein Typ, der sich auf die Tatsache bezieht, dass Codierung nur mittels Intraprädiktion innerhalb eines aktuellen Bildes durchgeführt wird, ohne andere Bilder beteiligt sind. Das P-Bild ist ein Typ, der sich auf die Tatsache bezieht, dass Codierung mittels sowohl Interprädiktion in Bezug auf ein vorausgehendes Bild und Intraprädiktion durchgeführt wird. Das B-Bild ist ein Typ, der sich auf die Tatsache bezieht, dass Codierung mittels Interprädiktion in Bezug auf ein vorausgehendes Bild und ein nachfolgendes Bild und Intraprädiktion durchgeführt wird.
-
Der Bildtyp-Bestimmungsblock 270 ordnet die Bilddaten ID einer bestimmten Bild-Gruppe zu, um den Bildtyp von jedem Feldbild zu bestimmen. Die Größe der Bild-Gruppe wird durch die Zuordnung eines I-Bildes bestimmt und die Struktur der Bild-Gruppe wird durch die Anordnung von einem P-Bild und/oder einem B-Bild bestimmt. Mit anderen Worten kann die Anzahl der Bits in codierten Daten durch die Anordnung von einem P-Bild und einem B-Bild reduziert werden und die Größe der Bild-Gruppe wird durch intermittierendes Zuordnen eines I-Bildes beschränkt, so dass die Fehlerausbreitung verhindert wird.
-
In den beispielhaften Ausführungsformen der erfinderischen Konzepte, die nachfolgend beschrieben werden, wird angenommen, dass, wenn die Bilddaten ID Feld nach Feld im Feld-Modus eingegeben werden, der Bildtyp-Bestimmungsblock 270 die Bilddaten ID einer Bild-Gruppe mit einer Struktur eines IP-Verfahrens zuordnet. Das IP-Verfahren bestimmt kontinuierliche Feldbilder der Bilddaten ID als I-Bilder und P-Bilder. Jedoch sind die erfinderischen Konzepte nicht auf die aktuellen beispielhaften Ausführungsformen beschränkt und ein IPPP-Verfahren oder ein IBBBP-Verfahren können in anderen Ausführungsformen verwendet werden.
-
Der Bildtyp-Bestimmungsblock 270 kann ein Bildtyp-Zuweisungssignal PTA erzeugen, das einen Bildtyp eines Feldbildes in dem Codierungs-Bild ED angebt, welches in das Codierungsmodul 300 eingegeben wird und kann das Bildtyp-Zuweisungssignal PTA an das Codierungsmodul 300 übertragen. Der Bildtyp-Bestimmungsblock 270 kann das obere Feld von jedem des ersten bis n-ten Frames einem I-Bild zuordnen und das untere Feld davon einem P-Bild zuordnen.
-
Das Codierungsmodul 300 kann Intraprädiktion und/oder Interprädiktion basierend auf dem Bildtyp-Zuweisungssignal PTA entsprechend dem Bildtyp der Codierungsdaten ED durchführen, um einen codierten Bitstrom BS zu erzeugen. Die Struktur und die Operationen des Codierungsmoduls 300 wird im Detail unter Bezugnahme auf 3 beschrieben.
-
3 ist ein detailliertes Blockdiagramm eines Codierungsmoduls aus 2, gemäß einer beispielhaften Ausführungsform. In Bezug auf 1 bis 3, empfängt in einer beispielhaften Ausführungsform das Codierungsmodul 300 die Codierungsdaten ED in Einheiten von Makroblöcken in jedem Feldbild. Das Codierungsmodul 300 führt Intraprädiktion und Interprädiktion aus, entscheidet einen Codierungs-Modus für jeden Makroblock der Codierungsdaten ED, und codiert den Makroblock entsprechend dem Codierungs-Modus. Das Codierungsmodul 300 kann einen Prädiktions-Block 310, einen Modusentscheidungs-(MD)Block 320, einen Subtrahierer 330, einen Transformationsblock T oder 331, einen Quantisierungsblock Q bzw. 332, einen Entropiecodierer (EC) 333, einen codierten Bildpuffer (EPB) 334, einen inversen Quantisierungsblock Q-1 oder 335, einen inversen Transformationsblock T-1 oder 336, einen Addierer 340, einen Deblocking-Filter (DF) 350 und einen Referenzbildspeicher MEM oder 360 enthalten. Während beispielhafte Ausführungsformen nachfolgend als von einzelnen Komponenten des Codierungsmoduls 300 durchgeführt gezeigt werden, kann in einer beispielhaften Ausführungsform die CPU 110 computerlesbare Anweisungen ausführen, um die Funktionalitäten der einzelnen Komponenten des Codierungsmoduls 300 auszuführen.
-
In einer beispielhaften Ausführungsform umfasst der Prädiktions-Block 310 eine Interprädiktions-Einheit IEPU 312, die Interprädiktion auf den Codierungsdaten ED ausführt, die in Einheiten von Makroblöcken empfangen werden, und eine Intraprädiktions-Einheit IAPU 314, die Intraprädiktion auf den Codierungsdaten ED ausführt. Die Prädiktions-Block 310 führt Intraprädiktion und/oder Interprädiktion gemäß einem Bildtyp aus, wie beispielsweise ein I-Bild oder ein P-Bild, das durch das Bildtyp-Zuweisungssignal PTA bestimmt wird.
-
In einer beispielhaften Ausführungsform, wenn das Bildtyp-Zuweisungssignal PTA anzeigt, dass das Feldbild ein I-Bild ist, empfängt die Interprädiktions-Einheit 312 empfängt alle Makroblöcke des I-Bildes und führt eine Intraprädiktion auf Basis des I-Bildes aus. Wenn das Bildtyp-Zuweisungssignal PTA anzeigt, dass das Feldbild ein P-Bild ist, führt die Interprädiktions-Einheit 312 Interprädiktion unter Verwendung von einem Referenzbild aus, d. h. einem vorhergehenden Bild, das kurz vor einem aktuellen Bild (d. h. einem I-Bild oder einem P-Bild, das zu der Bild-Gruppe gehört) codiert und decodiert wurde, und die Intraprädiktions-Einheit führt Intraprädiktion basierend auf dem I-Bild aus. Wenn das Bildtyp-Zuweisungssignal PTA anzeigt, dass das Feldbild ein B-Bild ist, führt die Interprädiktions-Einheit 312 Interprädiktion unter Verwendung von einem Referenz-Frame aus, d. h. einem vorhergehenden Bild, das codiert und decodiert wurde (d. h. ein I-Bild und ein P-Bild, die zu einer Bild-Gruppe gehören), und die Intraprädiktions-Einheit 314 führt Intraprädiktion basierend auf dem I-Bild aus.
-
Nach dem H.264 Standard sind verfügbare Codierungsmodi für einen Makroblock ein Inter-Modus und ein Intra-Modus. Der Inter-Modus umfasst fünf Bewegungskompensation-Modi, d. h. Skip-Modus, 16×16-Modus, 8×16 Modus, 16×8-Modus und 8×8-Modus. Der 8×8 Bewegungskompensations-Modus umfasst drei Unter-Modi, d. h. 8×4-Modus, 4×8-Modus und 4×4-Modus für einen 8×8-Unterblock. Die Intra-Modus umfasst vier 16×16 Intraprädiktions-Modi und neun 4×4 Intraprädiktions-Modi.
-
Um einen Makroblock in einem der verfügbaren Codierungsmodi zu codieren, kann der Prädiktions-Block 310 Raten-Distortions-Optimierung durchführen, was nachfolgend beschrieben wird.
-
In einer beispielhaften Ausführungsform erhält die Intraprädiktions-Einheit 314 unter den oben beschriebenen Intra-Modi einen Intra-Modus, der einen minimalen Intra-Raten-Distortions-Aufwand Jmd ausgibt, wie in Gleichung 1 definiert: Jmd = DISTmd + Kmd × Rmd, (1) wobei Kmd ein Lagrange-Koeffizienten für die Modusentscheidung ist, Rmd die Anzahl an Bits ist, die zum Ausführen einer Codierung in einem Kandidaten-Intra-Modus erforderlich sind, und DISTmd eine Distortion der Differenz zwischen einem Pixel in einem rekonstruierten Makroblock aus dem Referenzbildspeicher 360 und einem Pixel in einem eingegebenen Makroblock des Feldbildes ist. Eine Summe von absoluten Differenzen (SAD), eine Summe von absoluten umgewandelten Differenzen (SATD), oder eine Summe von quadratischen Differenzen (SSD) kann als eine Distortions-Funktion verwendet werden. In einer beispielhaften Ausführungsform, wie oben beschrieben, bestimmt (z. B. berechnet) die Intraprädiktions-Einheit 314 Intra-Raten-Distortions-Aufwände Jmd in entsprechenden Intra-Modi und bestimmt als einen minimalen Intra-Raten-Distortions-Aufwand MCST2, Informationen über einen Intra-Raten-Distortions-Aufwand Jmd, was unter dem Intra-Raten-Distortions-Aufwänden Jmd ein Minimum ist, und über einen Makroblock entsprechend dem Intra-Raten-Distortions-Aufwand Jmd, der minimal ist.
-
Die Interprädiktions-Einheit erhält einen optimalen Bewegungsvektor für jeden Intermodus, außer für den Skip-Modus. Der optimale Bewegungsvektor ist ein Bewegungsvektor unter Kandidaten-Bewegungsvektoren, der einen Inter-Raten-Distortions-Aufwand Jmt, wie in Gleichung 2 definiert, minimal werden lässt; Jmt = DISTmt + Kmt × Rmt, (2) wobei Kmt ein Lagrange-Koeffizient für die Bewegungsabschätzung ist; Rmt die Anzahl von erforderlichen Bits zum Codieren von Daten unter Verwendung von einem Kandidaten-Modus, einen Kandidaten-Referenzbild, und eine Kandidaten-Bewegungsvektor ist; und DISTmt die Distortion der Differenz zwischen einem Pixel in einem bewegungskompensierten Makroblock unter Verwendung des Kandidaten-Bewegungsvektors und einem Pixel in einem eingegebenen Makroblock ist. Das SAD, SATD oder SSD können als eine Distortions-Funktion verwendet werden.
-
In einer beispielhaften Ausführungsform wird ein Typ eines Kandidaten-Bewegungsvektors abhängig von der Größe eines Suchfensters bestimmt. Wenn das Codierungsmodul 300 eine Vielzahl von Referenzbildern verwendet, wird die Operation zur optimalen Bewegungsabschätzung in Bezug auf jedes der Referenzbilder wiederholt. Wie oben beschrieben, bestimmt (z. B. berechnet) die Interprädiktions-Einheit Inter-Raten-Distortions-Aufwände Jmt in Bezug auf jeweilige Referenzbilder, jeweilige Kandidaten-Bewegungsvektoren, und jeweilige Inter-Modi; und bestimmt, als einen minimalen Inter-Raten-Distortions-Aufwand MCST1, Informationen über einen Inter-Raten-Distortions-Aufwand Jmt, der das Minimum unter den Inter-Raten-Distortions-Aufwänden Jmt ist und über einen Makroblock entsprechend dem Inter-Raten-Distortions-Aufwand Jmt, der minimal ist.
-
In einer beispielhaften Ausführungsform und in dem Skip-Modus, erhält die Interprädiktions-Einheit 312 keinen optimalen Bewegungsvektor, sondern bestimmt als minimalen Inter-Raten-Distortions-Aufwand MCST1 Informationen über einen Inter-Raten-Distortions-Aufwand Jmt eines Makroblocks an der gleichen Position wie der eingegebene Makroblock in einem Referenzbild und über den Makroblock in dem Referenzbild.
-
In einer beispielhaften Ausführungsform vergleicht der Modusentscheidungs-Block 320 den minimalen Intra-Raten-Distortions-Aufwand MCST2 mit dem minimalen Enter-Raten-Distortions-Aufwand MCST1 und bestimmt einen Codierungs-Modus entsprechend dem kleineren der Aufwände MCST2 und MCST1. Der Modusentscheidungs-Block 320 kann Informationen an den Subtrahierer 330 und den Addierer 340 zur Verfügung stellen, wie beispielsweise ein Referenzblock und einen Bewegungsvektor, der einem Codierungs-Modus entspricht. Der Referenzblock bezieht sich auf Informationen über einen Makroblock entsprechend dem kleineren der Aufwände MCST2 und MCST1.
-
In einer beispielhaften Ausführungsform subtrahiert der Subtrahierer 330 den Referenzblock, der von dem Modusentscheidungs-Block 320 empfangen wird, von dem eingegebenen Makroblock, wodurch ein Restblock erzeugt wird. Der Transformationsblock 331 führt auf dem Restblock, der durch den Subtrahierer 330 erzeugt wird, eine räumliche Transformation aus. Die räumliche Transformation kann eine diskrete Cosinus Transformation (DCT) oder Wavelet-Transformation sein. Ein Transformationskoeffizient wird als ein Ergebnis der räumlichen Transformation erhalten. Wenn DCT als die räumliche Transformation verwendet wird, wird ist ein DCT-Koeffizient erhalten. Wenn Wavelet-Transformation als die räumliche Transformation verwendet wird, wird ein Wavelet-Koeffizient erhalten.
-
In einer beispielhaften Ausführungsform quantisiert der Quantisierungsblock 332 den Transformationskoeffizient der von dem Transformationsblock 331 erhalten wird. Quantisierung ist eine Operation zum Klassifizieren des Transformationskoeffizients, der als Zufallswert in einem bestimmten Bereich ausgedrückt wird und zum Ausdrücken des Transformationskoeffizienten als einen diskreten Wert. Quantisierung kann skalare Quantisierung und Vektorquantisierung umfassen. Einfache skalare Quantisierung ist der Prozess des Teilens des Transformationskoeffizients durch einen entsprechenden Wert aus einer Quantisierungs-Tabelle und des Rundens des Teilungsergebnisses auf den nächsten ganzzahligen Wert.
-
In einer beispielhaften Ausführungsform führt der Entropiecodierer 333 verlustfreie Codierung auf den quantisierten Daten, die von dem Quantisierungsblock 332 ausgegeben werden und auf Informationen aus, wie Intraprädiktions-Modus, Referenz-Frame-Nummer und Bewegungsvektor, um dadurch den Bitstrom BS zu erzeugen. Die verlustfreie Codierung kann arithmetische Codierung sein, wie Context-Adaptive-Binary-Arithmetic-Coding (CABAC) oder Codierung mit variabler Länge, wie Context-Adaptive-Variable-Length-Coding (CAVLC). Der Bitstrom BS kann durch den EPB 334 gepuffert und dann ausgegeben werden. Der Bitstrom ES kann in einem Speicher (z. B. dem RAM 130 oder dem Speicher 175) außerhalb des Codierers 200a gespeichert werden.
-
In einer beispielhaften Ausführungsform decodieren der inverse Quantisierungsblock 335, der inverse Transformationsblock 336, und der Addierer 340 die verlustfrei kodierten Daten in umgekehrter Weise, und das Decodierergebnis wird verwendet, um ein rekonstruiertes Bild zu erzeugen. Die inverse Quantisierungsblock 335 invers-quantisiert die quantisierten Daten, die von dem Quantisierungsblock 332 empfangen werden. Die inverse Quantisierung ist eine Prozedur, die umgekehrt zur Quantisierung ist. Der inverse Transformationsblock 336 führt eine inverse räumliche Transformation auf dem inversen Quantisierungsergebnis aus und sendet das Ergebnis der inversen räumlichen Transformation an den Addierer 340.
-
In einer bevorzugten Ausführungsform addiert der Addierer 340 ein Signal von dem inversen Transformationsblock 336 und dem Referenzblock von dem Modusentscheidungs-Block 320 um den eingegeben Makroblock wiederherzustellen. Der Makroblock, der durch den Addierer 340 wiederhergestellt wird, wird für den DF 350 zur Verfügung gestellt und ein Bild eines benachbarten Blocks in dem rekonstruierten Bild wird für die Intraprädiktions-Einheit 314 zur Verfügung gestellt. Der DF 350 führt Deblocking-Filterung in Bezug auf einen Rand eines jeden Makroblocks aus. Die deblocking-gefilterten Daten werden in dem Referenzbildspeicher 360 gespeichert und als ein Referenzbild verwendet.
-
Daher kodiert das Codierungsmodul 300 ein oberes Feld, das einem I-Bild zugeordnet ist und in jedem des ersten bis n-ten Frames enthalten ist, in dem Intra-Modus und kodiert ein unteres Feld, das einem P-Bild zugewiesen ist und in jedem des ersten bis n-ten Frames enthalten ist, in sowohl dem inter-Modus als auch dem Intra-Modus.
-
4 ist ein Diagramm zum Erklären einer Prozedur, in der eine Standbild-Gruppe gelesen und durch einen Codierer codiert wird, der in 2 veranschaulicht ist, gemäß einer beispielhaften Ausführungsform. In Bezug auf 1 bis 4, wird die Standbild-Gruppe, welche den ersten bis n-ten Frame F1 bis Fn umfassen, in dem Burst-Aufnahmemodus erzeugt. Die Standbild-Gruppe wird in dem RAM 130 zwischengespeichert und dann an den Codec 140 übertragen, gemäß der Steuerung der CPU 110.
-
Die Quellen-Leseeinheit 250 kann die Bilddaten ID in dem Feld-Modus lesen, der durch das Modus-Auswahlsignal MS bestimmt wird. Jeder des ersten bis n-ten Frames F1 bis Fn kann eine Vielzahl von Pixeln umfassen, die in einer Matrixform mit A Zeilen und B Spalten angeordnet sind, wobei A und B eine ganze Zahl von mindestens 1 sind.
-
Die Quellen-Leseeinheit 250 liest ein erstes oberes Feld TF1 entsprechend ungeradzahligen Zeilen in dem ersten Frame F1, und liest dann ein erstes unteres Feld BF1 entsprechenden geradzahligen Zeilen in den ersten Frame F1. In gleicher Weise liest die Quellen-Leseeinheit 250 zuerst ein oberes Feld TF2 und liest dann ein unteres Feld BF2 in Bezug auf den zweiten Frame F2 und liest ein oberes Feld TFn zuerst und liest dann ein unteres Feld BFn in Bezug auf den n-ten Frame Fn.
-
Der Bildtyp-Bestimmungsblock 270 ordnet nacheinander die Felder TF1 bis TFn und BF1 bis BFn der Bilddaten ID jeweils ersten bis n-ten Bildgruppen IG1 bis IGn zu. Mit anderen Worten werden die oberen Felder TF1 bis TFn in den jeweiligen ersten bis n-ten Bildgruppen IG1 bis IGn einem I-Bild entsprechend einem Intra-Slice zugewiesen und die unteren Felder BF1 bis BFn in den jeweiligen ersten bis n-ten Bildgruppen IG1 bis IGn werden einem P-Bild entsprechend einem Inter-Slice zugeordnet.
-
Das Codierungsmodul 300 kann die oberen Felder TF1 bis TFN in den jeweiligen ersten bis n-ten Bildgruppen IG1 bis IGn als ein I-Bild codieren und dann die unteren Felder BF1 bis BFn der jeweiligen ersten bis n-ten Bildgruppen IG1 bis IGn als P-Bild codieren, basierend auf den oberen Feldern TF1 bis TFn, die als I-Bild codiert worden sind. Zum Beispiel kann das Codierungsmodul 300 das obere Feld TF1 in der ersten Bildgruppe IG1 als ein I-Bild codieren und dann das untere Feld BF1 in der ersten Bildgruppe 1G1 als ein P-Bild codieren, basierend auf dem oberen Feld TF1, das codiert wurde. Danach kann das Codierungsmodul 300 das obere Feld TF2 in der zweiten Bildgruppe IG2 als ein I-Bild codieren und dann das untere Feld BF2 in der zweiten Bildgruppe IG2 als ein P-Bild codieren, basierend auf dem oberen Feld TF2, das codiert wurde. Auf diese Weise kann das Codierungsmodul 300 Codierung bis für die n-te Bildgruppe IGn sequentiell durchführen.
-
Da der erste bis n-te Frame F1 bis Fn jeweils zu der ersten bis n-ten Bildgruppe IG1 bis IGn entspricht und jede der Bildgruppen IG1 bis IGn unterteilt ist in obere und untere Felder und codiert ist unter Verwendung von dem IP-Verfahren, erhöht sich eine Kompressionsrate im Vergleich dazu, wenn die ersten bis n-ten Frames F1 bis Fn in dem Intra-Modus kodiert werden. Außerdem, wenn ein Benutzer ein bestimmtes Bild anzeigen möchte, kann die CPU 110 nur eine Bildgruppe entsprechend dem bestimmten Frame unter der ersten bis n-ten Bild-Gruppe IG1 bis IGn an den Decodierer 400 übertragen, die in dem RAM 130 gespeichert sind. Der Decodierer 400 kann die bestimmten Frames basierend auf nur einer Bild-Gruppe decodieren. Mit anderen Worten, wenn ein Frame auf Anfrage des Benutzers decodiert wird, kann der Frame ohne andere Frames decodiert werden, auf die Bezug genommen wird, da eine Bild-Gruppe entsprechend jedem Rahmen unabhängig codiert wird und in dem RAM 130 unter Verwendung des IP-Verfahrens gespeichert wird. Folglich ist zufälliger Zugriff möglich, wenn codierte Frames dekodiert werden.
-
5 ist ein Diagramm zum Erläutern der Decodierung, die durch einen Decodierer aus 1 ausgeführt wird, gemäß einer beispielhaften Ausführungsform. Genauer gesagt ist 5 ist ein Diagramm, das ein Verfahren zum Auswählen und Decodieren der zweiten Bildgruppe IG2 unter den ersten bis n-ten Bildgruppen IG1 bis IGn erklärt, die in der Codierungs-Prozedur aus 4 codiert wurden.
-
In Bezug auf 1 bis 5, wenn ein bestimmter Frame (z. B. der zweite Frame F2) bei einer Anfrage des Benutzers anzuzeigen ist, könnte die CPU 110 nur die zweite Bildgruppe IG2 entsprechend dem zweiten Frame F2 aus dem RAM 130 lesen und an den Decoder 400 übertragen. Der Decoder 400 kann das obere Feld TF2 in der zweiten Bildgruppe IG2 in dem Intra-Modus codieren und das untere Feld BF2 in der zweiten Bildgruppe IG2 in dem Inter-Modus gemäß dem Feld-Modus decodieren. Darüber hinaus kann der Decoder 400 den zweiten Frame F2 durch Neuanordnung der decodierten Daten wiederherstellen. Im Einzelnen kann der Decoder 400 abwechselnd die Zeilen des oberen Feldes TF2 und die Zeilen des unteren Feldes BF2 lesen, so dass die Reihen des oberen Feldes TF2 ungeradzahlige Zeilen in dem zweiten Frame F2 werden und die Zeilen des unteren Feldes BF2 werden geradzahlige Zeilen in dem zweiten Frame F2, wodurch der zweite Frame F2 wiederhergestellt wird.
-
6 ist ein Blockdiagramm eines Codierers aus 1, entsprechend einer beispielhaften Ausführungsform. Die Struktur und die Operationen eines Codierers 200b sind ähnlich zu denjenigen des Codierers 200a in 2. Somit wird die Beschreibung auf die Unterschiede zwischen den Encoders 200b und 200a gerichtet, um Wiederholungen zu vermeiden.
-
In Bezug auf 1, 2 und 6 kann der Codierer 200b die Quellen-Leseeinheit 250, den Bildtyp-Bestimmungsblock 270 und ein H.264-Codierungsmodul 300a umfassen. Des H.264-Codierungsmodul 300a ist ein Codierungsmodul, das dem H.264-Standard entspricht. Die Struktur und Operationen des H.264-Codierungsmodul 300a können dieselben sein, wie die des Codiermoduls 300 aus 3. Während beispielhafte Ausführungsformen nachfolgend als von einzelnen Komponenten des Codierungsmoduls 300a durchgeführt gezeigt werden, kann in einer beispielhaften Ausführungsform die CPU 110 computerlesbare Anweisungen ausführen, um die Funktionalitäten der einzelnen Komponenten des Codierungsmoduls 300a auszuführen.
-
7 ist ein Blockdiagramm eines Decodierers aus 1, entsprechend einer beispielhaften Ausführungsform. Ein Decodierer 400 kann ein H.264-Decodierungsmodul 410 und ein Umordner 420 umfassen. Während beispielhafte Ausführungsformen nachfolgend als von einzelnen Komponenten des Decodierers 400 durchgeführt gezeigt werden, kann in einer beispielhaften Ausführungsform die CPU 110 computerlesbare Anweisungen ausführen, um die Funktionalitäten der einzelnen Komponenten des Decodierers 400 auszuführen.
-
Das H.264-Decodierungsmodul 410 kann den Bitstrom BS zum Ausgeben der Codierungsdaten ED empfangen und decodieren. Der Bitstrom BS kann von dem H.264-Codierungsmodul 300a ausgegeben worden sein und in einem Speicher gespeichert worden sein und dann in das H.264-Decodierungsmodul 410 eingegeben worden sein. Das H.264-Decodierungsmodul 410 kann eine inverse Operation der von dem Codierungsmodul 300 aus 3 durchgeführten Operation ausführen, um die Codierungsdaten ED von dem Bitstrom BS wiederherzustellen. Die Umordner 420 kann die Codierungsdaten ED umordnen, um die Bilddaten ID wiederherzustellen.
-
Der Umordner 420 kann durch abwechselndes Lesen der Zeilen von jedem oberen Feld und der Zeilen von jedem unterem Feld die Zeilen von jedem der oberen Felder TF1 bis TFn und der Zeilen vpn jedem der unteren Felder BF1 bis BFn umordnen, so dass die Zeilen von jedem der oberen Felder TF1 bis TFn ungeradzahlige Zeilen in einem entsprechenden des ersten bis n-ten Frames F1 bis Fn werden und die Zeilen von jedem der unteren Felder BF1 bis BFn werden geradzahlige Zeilen in dem entsprechenden Frame, wodurch jeder der ersten bis n-ten Frames F1 bis Fn in den Bilddaten ID widerhergestellt wird.
-
8 ist ein Flussdiagramm eines Verfahrens zum Betreiben eines Anwendungsprozessors aus 1 gemäß einer beispielhaften Ausführungsform. Während jeder Schritt des Verfahrens in 8 als von einzelnen Komponenten des Anwendungsprozessors 100 durchgeführt gezeigt werden, kann in einer beispielhaften Ausführungsform die CPU 110 computerlesbare Anweisungen ausführen, um die Funktionalitäten der einzelnen Komponenten des Anwendungsprozessors 100 auszuführen.
-
In Bezug auf 1 bis 8, speichert der RAM 130 die Standbild-Gruppe (d. h. die ersten bis n-ten Frames F1 bis Fn), die in dem Burst-Aufnahmemodus aufgenommen wird, der durch einen Benutzer in Operation S10 ausgewählt wird. Die Quellen-Leseeinheit 250 kann die ersten bis n-ten Frames F1 bis Fn in dem Feld-Modus lesen, die durch das Modus-Auswahlsignal MS so ausgewählt werden, dass der erste bis n-te Frame F1 bis Fn in die oberen Felder TF1 bis TFn und die unteren Felder BF1 bis BFn in Operation S20 geteilt werden.
-
Wenn das Feldbild der Codierungsdaten ED den oberen Feldern TF1 bis TFn (im Fall von JA) entsprechen in Operation S30, codiert das Codierungsmodul 300 die oberen Felder TF1 bis TFn mit dem Intra-Modus in Operation S40. Wenn das Feldbild der Codierungsdaten ED den unteren Feldern BF1 bis BFn (im Falle von NEIN) entspricht in Operation S30, codiert das Codierungsmodul 300 die unteren Felder BF1 bis BFn mit dem Inter-Modus in Operation S50.
-
Die Feldbilder eines jeden des ersten bis n-ten Frames F1 bis Fn, die codiert wurden, können in dem RAM 130 gemäß der Steuerung der CPU 110 gespeichert werden. Wenn ein bestimmter Frame zu der Anzeigevorrichtung 165 in Reaktion der auf die Benutzerwahl ausgegeben werden soll, könnte die CPU 110 nur eine Gruppe entsprechend des bestimmten Frames unter den ersten bis n-ten Bildgruppen IG1 bis IGN aus dem RAM 130 an den Decoder 400 übertragen. Der Decodierer 400 kann den bestimmten Frame basierend auf nur einer Gruppe entsprechend dem bestimmten Frame decodieren in Operation S60.
-
Der Codec 140 kann den decodierten Frame in ein bestimmtes Format (z. B, ein JPEG-Format) umwandeln, das durch die Anzeigevorrichtung 165 erforderlich ist in Operation S70.
-
Entsprechend einem oder mehreren beispielhaften Ausführungsformen der erfinderischen Konzepte, erzeugt der Anwendungsprozessor 100 Daten, die eine hohe Kompressionsrate haben und erlaubt wahlfreien Zugriff auf jeden Frame, wenn eine Standbild-Gruppe codiert wird. Zusätzlich, wenn der Anwendungsprozessor 100 verwendet wird, wird die Leistung einer Verarbeitung einer Standbild-Gruppe verbessert, selbst wenn ein Codierer und ein Decodierer verwendet werden, die den bestehenden H.264-Standard unterstützen.
-
9 ist ein Blockdiagramm eines Datenverarbeitungssystems, gemäß einer beispielhaften Ausführungsform. Unter Bezugnahme auf 9 umfasst das Datenverarbeitungssystem eine Video-Hosting-Dienst-Vorrichtung 20, eine erste Vorrichtung 41 und eine zweite Vorrichtung 43.
-
Die erste Vorrichtung 41 kann als PC und die zweite Vorrichtung 43 kann als eine tragbare elektronische Vorrichtung implementiert werden. Die Vorrichtungen 20, 41 und 43 können miteinander über ein Netzwerk 30 kommunizieren. Die Architektur des Netzwerkes 30 kann auf verschiedene Weise modifiziert werden. Das Netzwerk 30 kann als ein drahtgebundenes Internet, ein drahtloses Internet oder ein Mobilfunknetz realisiert werden.
-
Die Video-Hosting-Dienst-Vorrichtung 20 umfasst eine Videoquelle 21 und den Codierer 200. Der Codierer 200 empfängt Quell-Bilddaten von der Videoquelle 21. Der Codierer 200 codiert die Quell-Bilddaten, um einen codierten Bitstrom zu erzeugen. Der Codierer 200 kann der Codierer 200, 200a oder 200b aus 1, 2, oder 6 sein. Der codierte Bitstrom kann an die erste Vorrichtung 41 und die zweite Vorrichtung 43 über das Netzwerk 30 übertragen werden.
-
Der codierte Bitstrom, der an das Netzwerk 30 übertragen wird, kann an die erste Vorrichtung 41 und/oder die zweite Vorrichtung 43 übertragen werden. Jede der Vorrichtungen 41 und 43 kann ein PC, ein Mobiltelefon, ein Smartphone, ein Tablet-PC, ein Laptop-Computer, ein PDA, ein EDA, ein tragbarer Multimedia-Player (PMP), ein persönliches Navigationsgerät oder ein tragbares Navigationsgerät (PND), eine Handheld-Spiele-Konsole, ein MID, oder ein E-book sein.
-
Die erste Vorrichtung 41 umfasst den Decodierer 400 und eine Anzeige 51 und die zweite Vorrichtung 43 umfasst den Decodierer 400 und eine Anzeige 53. Der Decodierer 400 kann der Decodierer 400 aus 1 oder 7 sein. Jeder Decodierer 400 kann den codierten Bitstrom dekodieren, der durch das Netzwerk 300 empfangen wird und kann die decodierten Daten an die entsprechende Anzeige 51 oder 53 ausgeben.
-
10 ist ein Flussdiagramm eines Datenverarbeitungsverfahrens, gemäß einer beispielhaften Ausführungsform. Das Datenverarbeitungsverfahrens aus 10 kann durch den Codierer 200, 200a oder 200b aus 1, 2, 6, oder 9 durchgeführt werden (alternativ durch die CPU 110, die Funktionalitäten der Codierer haben von den Codierern aus den 1, 2, 6, oder 9, indem ein Satz von computerlesbaren Anweisungen ausgeführt wird, wie oben beschrieben).
-
Unter Bezugnahme auf 10, liest der Codierer 200, 200a oder 200b einen Quellen-Frame in Operation S110, der in dem Codierer 200, 200a, oder 200b empfangen wird. Der Quellen-Frame besteht aus Bilddaten entsprechend eines einzelnen Frames. Der Quellen-Frame kann ein Frame in einer Standbild-Gruppe sein (einschließlich des ersten bis n-ten Frames F1 bis Fn), die von einem Benutzer ausgewähltem Burst-Aufnahmemodus erzeugt wird, oder ein Frame in Quell-Bilddaten sein, die von der Videoquelle 21 ausgegeben werden.
-
Der Codierer 200, 200a oder 200b liest den Quellen-Frame in dem Feld-Modu, um erste Felddaten und zweite Felddaten in Operation S120 zu erzeugen. Die ersten Felddaten können jedem der oberen Felder TF1 bis TFn entsprechen und die zweiten Felddaten können jedem der unteren Felder BF1 bis BFn entsprechen.
-
Der Codierer 200, 200a oder 200b codiert die ersten Felddaten in dem Intra-Modus in Operation S130 und codiert die zweiten Felddaten in dem Inter-Modus in Operation S140. Der Encoder 200, 200a oder 200b kann die codierten Daten speichern, das heißt, den codierten Bitstrom BS in einem Speicher oder ihn an eine andere Vorrichtung in Operation S150 übertragen.
-
11 ist ein Flussdiagramm eines Datendecodierungsverfahrens, gemäß einer beispielhaften Ausführungsform. Das Datenverarbeitungsverfahrens aus 11 kann durch den Codierer 400 aus 1, 7, oder 9 durchgeführt werden (alternativ durch die CPU 110, die Funktionalitäten der Codierer haben von den Codierern aus den 1, 7, oder 9, indem ein Satz von computerlesbaren Anweisungen ausgeführt wird, wie oben beschrieben).
-
Unter Bezugnahme auf 11, kann der Encoder 400 codierten Daten lesen, das heißt, den codierten Bitstrom BS aus einem Speicher oder ihn aus einer anderen Vorrichtung in Operation S210 empfangen. Der Decodierer 400 kann erste Felddaten und zweite Felddaten durch Dekodieren der codierten Daten in dem Feldmodus in Operation S220 wiederherstellen. Zum Beispiel kann der Decodierer 400 die codierten Daten in dem Intra-Modus decodieren, um die ersten Felddaten wiederherzustellen, und kann die codierten Daten in dem Inter-Modus decodieren, um die zweiten Felddaten wiederherzustellen.
-
Der Decodierer 400 stellt einen Quellen-Frame wieder her, durch Umordnen der ersten Felddaten der zweiten Felddaten in Operation S230. Zum Beispiel kann der Decoder 400 die ersten Felddaten und die zweiten Felddaten umordnen, indem er abwechselnd die Zeilen in den ersten Felddaten und die Zeilen in den zweiten Felddaten so liest, dass die Zeilen in den ersten Felddaten ungeradzahlige Zeilen in dem Quellen-Frame werden und die Zeilen in den zweiten Felddaten geradzahlige Zeilen in dem Quellen-Frame werden, wodurch der Quellen-Frame wiederhergestellt wird.
-
12 ist ein Blockdiagramm eines Datenverarbeitungssystems, gemäß einer beispielhaften Ausführungsform. Unter Bezugnahme auf 12 umfasst ein Datenverarbeitungssystem 500 einen Transmitter 510 und einen Empfänger 530. Der Transmitter 510 und der Empfänger 530 können jeweils ein Mobiltelefon, ein Smartphone oder ein Tablet-PC sein.
-
Der Transmitter 510 umfasst einen Anwendungsprozessor (AP) 512, eine Anzeige 520, ein Kameramodul 518, einen externen Speicher 516 und einen Funk-Sendeempfänger 514. Die Operationen und Funktionen des AP 512, der Anzeige 520, des Kamera-Moduls 518 und des externen Speichers 516 sind ähnlich zu denen des AP 100, der Anzeige 165, der Kamera 155 und des Speichers 175 aus 1, und daher wird deren detaillierte Beschreibung weggelassen.
-
Der AP 512 umfasst den Codierer 200. Der Funk-Sendeempfänger 514 kann einen codierten Bitstrom an den Empfänger 530 über eine Antenne ANT1 übertragen. Der Transmitter 510 kann auch als Empfänger arbeiten.
-
Der Empfänger 530 umfasst einen AP 532, eine Anzeige 540, ein Kameramodul 538, einen externen Speicher 536, und einen Funk-Sendeempfänger 534. Die Operationen und Funktionen des AP 532, der Anzeige 540, des Kamera-Moduls 538 und des externen Speichers 536 sind ähnlich zu denen des AP 100, der Anzeige 165, der Kamera 155 und des Speichers 175 aus 1, und daher wird deren detaillierte Beschreibung weggelassen.
-
Der AP 532 umfasst den Decoder 400. Der Funk-Sendeempfänger 534 kann den codierten Bitstrom von dem Transmitter 510 über eine Antenne ANT2 empfangen. Der Empfänger 530 kann auch als Sender betrieben werden.
-
Der Decodierer 400 kann den codierten Bitstrom decodieren und kann decodierte Bilddaten an die Anzeige 540 ausgeben, so dass die Bilddaten auf der Anzeige 540 angezeigt werden.
-
Wie oben geschrieben, entsprechend einer oder mehreren beispielhaften Ausführungsformen der erfinderischen Konzepte, erzeugt ein Anwendungsprozessor Daten, die eine hohe Kompressionsrate haben und erlaubt wahlfreien Zugriff auf jeden Frame, wenn eine Standbild-Gruppe codiert wird.
-
Während die erfinderischen Ideen gezeigt und geschrieben wurden, mit Bezug auf beispielhafte Ausführungsformen davon, versteht der Fachmann, dass vielerlei Veränderungen in der Form und den Details gemacht werden können, ohne von dem Geiste und dem Umfang der vorliegenden Erfindung abzuweichen, wie sie in den anhängigen Ansprüchen festgelegt ist.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- KR 10-2015-0028566 [0001]
-
Zitierte Nicht-Patentliteratur
-
- 35 U.S.C. § 119(a) [0001]
- H.264-Standard [0061]
- H.264 Standard [0083]
- H.264-Standard [0105]
- H.264-Standard [0114]